1.别使用DNN进行部署推理,使用ONNX Runtime 

DNN不支持yolo5之后的模型节点
需要自己编译支持cuda,编译起来各种问题

DNN推理效果不如ONNX Runtime 



需要 CUDA 加速(DNN、图像处理、深度学习)

【组合 A:OpenCV 4.5.5 + CUDA 11.1 ~ 11.6 + VS2019】(最稳定 CUDA 组合)

这是生产环境中使用最广的 CUDA 编译组合:

组件 推荐版本
OpenCV 4.5.5
CUDA 11.1 / 11.4 / 11.6
cuDNN 8.2 ~ 8.6
Visual Studio 2019(最推荐)
CMake ≥ 3.20

✔ 编译 CUDA 成功率很高
✔ dnn 模块支持良好
✔ 社区使用最多,教程数量最多

你的环境是:

  • CUDA 11.6

  • cuDNN 8.6
    完全匹配 OpenCV 4.5.5 CUDA 编译


【组合 B:OpenCV 4.8.0 + CUDA 11.8 + VS2022】(较新,但有兼容性风险)

适合追新,但:

  • 编译更慢

  • CUDA 与 VS2022 的兼容性比 VS2019 略差

除非需要特别新特性,一般不推荐。



安装cuda和cudnn
确定安装好并验证安装成功
通常步骤:

1.nvidia-smi查看显卡支持最高cuda版本
2.官网下载对应版本的cuda安装包
3.cudnn官网下载cudnn的库文件(需要注册)可能需要科学上网
3.默认路径安装cuda避免不必要的麻烦(如果不需要多cuda版本选精简安装即可)
4.拷贝cudnn文件到cuda目录(具体哪个目录搜一下)
5.命令提示符下:nvcc -V 即可显示当前环境下的cuda版本


下载源码

直接下载source压缩包或者GitHub clone
https://opencv.org/releases/
下载opencv_contrib

https://github.com/opencv/opencv_contrib/tags
下载cmake
https://cmake.org/download/
构建目录
例如:opencv_build/build
把两个opencv的压缩包放进opencv_build并解压
build用于放编译好的文件
编译
管理员模式打开cmake_GUI(在bin下)


1处填opencv源码目录
2处填编译文件生成目录
3填好后点击Configure,选择生成项目的IDE版本和cpu架构(我的是vs2017+x64),finlish等待,生成配置目录4处,即中间的列表
如何填编译选项
不同版本的opencv编译选项不同,甚至别的博主跟你下载同一个版本编译选项也不一样
如下有就选,没有就不用选了,有些选项需要勾选Advance才会显示。

  1. 搜索栏搜索cuda,勾选和cuda相关选项。其中,BUILD_CUDA_STUBS不用打钩。
  2. 勾选 BUILD_opencv_world 最终只生成一个动态链接库方便使用
  3. 搜索 OPENCV_EXTRA_MODULES_PATH ,填入 OpenCV_contrib 解压文件夹 modules 的路径
  4. 如果有CUDA_TOOLKIT_ROOT_DIR变量,填cuda目录。如果没有,Add entry新建变量填目录(我在填这个变量之前,搜索cuda没有这么多选项,填完这些选项就出来了)(注意新建时变量类型是FilePath还是path)
  5. CUDA_INCLUDE_DIR变量(没有新建)
  6. CUDA_NVCC_EXECUTABLE(有直接填,没有就新建)(路径例如为:C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.8/bin/nvcc.exe

选项 设置为
BUILD_TESTS OFF
BUILD_PERF_TESTS OFF
BUILD_EXAMPLES OFF
BUILD_opencv_world ON(建议开启)
BUILD_opencv_python OFF(如果你不需要 Python)
CMake 选项 必须设置
WITH_CUDA ON
CUDA_ARCH_PTX
CUDA_ARCH_BIN (必须与你显卡一致)例如 8.6(RTX30)或 8.9(RTX40)
OPENCV_DNN_CUDA ON
WITH_CUDNN OFF(你没安装 cuDNN 就不要开)
ENABLE_FAST_MATH ON
CUDA_FAST_MATH ON

点击Generate 等待生成源码,点击open project 打开项目

选择编译选项:

  • Release

  • x64

生成->ALL build (如果没有,调试->All build选项点开,确定,在看看生成里有没有)

等待编译

Logo

欢迎来到FlagOS开发社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐