我对 OpenCV 比较陌生,我正在寻找一些有关如何在 Ubuntu 20.04 上编译具有 CUDA 支持的最新版本 OpenCV 的指南。我打算使用 GPU 而不是 CPU 在我的 PC 上运行 YOLO。
问题:经过大量研究,我无法找到在 Ubuntu 20.04 上使用 CUDA 编译 OpenCV 的清晰、直接的说明,然后配置我的环境以使用此版本的 OpenCV。
虽然我知道可以直接安装 Python 库,但不幸的是它不是用我需要的 CUDA 模块构建的。
我的环境:
操作系统:Ubuntu 20.04
nvcc --版本
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Mar_28_02:18:24_PDT_2024
Cuda compilation tools, release 12.4, V12.4.131
Build cuda_12.4.r12.4/compiler.34097967_0
**nvidia-smi**
Tue Apr 30 18:25:09 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15 Driver Version: 550.54.15 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3050 ... Off | 00000000:01:00.0 Off | N/A |
| N/A 43C P3 N/A / 35W | 12MiB / 4096MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 2118 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 3195 G /usr/lib/xorg/Xorg 4MiB |
+-----------------------------------------------------------------------------------------+
我在 OpenCV 官方文档“Linux 中的安装”中找到了在 Ubuntu 18.04 上的安装,但没有提及有关 CUDA 支持编译所需的标志或稍后如何使用编译版本的任何信息。
官方 repo 上的文档指向 openCV 官方文档。
我也找到了这个教程,但它已经有 4 年历史了,而且适用于 ubuntu 18.04
问题是如何在Ubuntu 20.04上用CUDA编译OpenCV或者哪里可以找到详细的官方文档?
您标记了“yolo”,但没有说明您正在使用哪个框架。我会给你一个关于Darknet/YOLO这个最初的“YOLO”框架的答案。
好消息是,您不需要构建支持 CUDA 的 OpenCV。 Darknet直接使用CUDA,而不是通过OpenCV。在 YOLO FAQ 中,看到这个问题:
https://www.ccoderun.ca/programming/yolo_faq/#opencv_and_cuda
你绝对不应该手工构建 OpenCV! [...] 请注意:Darknet 不使用 OpenCV 的 CUDA 部分!不要费心花几个小时(几天?)来尝试安装它,暗网不会使用它。完全没有!
Darknet 确实使用 CUDA 来训练和运行神经网络,但它是直接这样做的,而不是通过 OpenCV。 OpenCV 用于从磁盘加载图像、调整图像大小以及数据增强(例如“马赛克”图像),所有这些都是在没有 GPU 的情况下完成的。
您还提到了Python。好消息是 Darknet/YOLO 有 Python 绑定。因此,如果您遵循正常的 Linux 安装步骤(参见此处),那么您应该可以从 Python 应用程序中轻松访问 YOLO。
Darknet/YOLO 存储库 有一个“src-python”目录,其中包含一些示例代码。要开始使用,请参阅 example.py。
如果您正在寻找一些高级功能,您可能还需要查看DarkHelp,这是访问 Darknet/YOLO 的替代 CLI/库。它还具有一些(不是全部)高级功能的 Python 绑定。
如果你真的想重新构建 OpenCV,那么我强烈建议你停止尝试使用博客文章,而使用 vcpkg 工具。这将每次都正确地为您构建 OpenCV 库。你会运行类似vcpkg install opencv[cuda,python,contrib,core,dnn,ffmpeg,jpeg,png,quirc,tiff,webp]
的东西,显然会查找并包含你需要的模块。免责声明:我维护 Darknet/YOLO 代码库,并且是 DarkHelp、DarkMark 和许多其他 YOLO 相关工具的作者。