如何在Ubuntu 20.04上编译支持CUDA的OpenCV以实现YOLO GPU加速?

问题描述 投票:0回答:1

我对 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或者哪里可以找到详细的官方文档?

opencv cuda yolo ubuntu-20.04
1个回答
0
投票

您标记了“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 相关工具的作者。

© www.soinside.com 2019 - 2024. All rights reserved.