YOLOv3Tiny 仅需 2.17ms,OpenCV 4.2 DNN with CUDA 示例

工具 Admin ⋅ 于 8个月前 ⋅ 1806 阅读

本文转自群友装的博客,作者对新出的OpenCV 4.2 中DNN模块新特性支持CUDA进行了测试,在2080Ti上,YOLOv3Tiny 跑一帧仅需2.17ms。

https://blog.csdn.net/weixin\_39928773/article/details/103709184

软件安装准备


1. OpenCV 4.2

https://github.com/opencv/opencv


2. OpenCV 4.2 contrib

https://github.com/opencv/opencv\_contrib


3. CUDA

https://developer.nvidia.com/cuda-toolkit-archive

根据自己的GPU 选择合适的版本,我的是RTX2080Ti,选择CUDA10.0版本,按照默认地址安装就好,安装完之后看是否有环境变量。没有的话自己加上。
file
以及,
file
file

4. cuDNN

cuDNN一定要7.5版本以上,否则CMake将无法识别出cuDNN路径。

打开下载好的cuDNN,如下图,
file

将cuDNN中bin、include、lib文件夹中的文件放入对应CUDA路径下的文件夹中,
file
5. CMake

CMake版本不宜太低,也不要过高,推荐3.14版本,亲测。

OpenCV DNN with CUDA

打开CMake,选择源码路径,以及生成路径,选择对应VS版本。开始第一次Configue。file
其中会下载一些第三方文件,可以自行下载,否则速度较慢。第一次configure完成之后,勾选BUILD_opencv_world.
file
以及,勾选OPENCV_DNN_CUDA,选择解压好的opencv_contrib中modules路径添加进来。
file
勾选WITH_CUDA。
file
进行第二次Configure,Configure完成之后可能会报错,此时不管他,根据GPU算力表选择合适的CUDA_ARCH_BIN值,如我的是RTX2080Ti,则将CUDA_ARCH_BIN其余值删除,只留下7.5。然后勾选CUDA_FAST_MATH,点击Configure。
file
file
等待Configure完成之后,查看是否检测到了CUDA和cuDNN,都出现YES之后,说明没有问题。这边是一个坑,需要注意,如果没有检测到的话,需要确认是否CUDA和cuDNN版本正确,否则后面的编译将不会编译CUDA模块,白白浪费时间。确认之后,点击Generate。file
点击Open Project打开工程,在Release模式下右键点击ALL_BUILD,生成,时间较长。
file
生成之后,右击INSTALL->仅用于项目->仅生成INSTALL。
file
到这边就编译好了,Debug版本同理。

添加环境变量。
file
在测试代码中配置包含目录和库目录,添加附加依赖项,opencv_world420.lib.。
file
file
file

测试结果

由于项目保密的关系,代码就不贴出来了,官方提供了一份代码示例:

https://gist.github.com/YashasSamaga/e2b19a6807a13046e399f4bc3cca3a49

图片大小 416x416 ,在我自己的项目上运行,首先是CPU版本(I9-9900K),推理时间在22.45ms。
file
CUDA版本(RTX 2080Ti),推理时间是2.16ms。提升了10倍左右。
file
顺便贴一个OpenVINO推理引擎的运行效率,大概是8.17ms左右
file

注意事项:

  • OpenCV和OpenCV_contrib版本要对应

  • 在下载部分第三方库时也要找好对应版本。

  • 勾选WITH_CUDA 、OPENCV_DNN_CUDA。

  • 一定要查看cuDNN版本是否正确,否则几个小时的编译将是浪费时间。

  • 最好使用VS2017版本,VS2015测试出现异常,编译失败。

-End-

来源:OpenCV中文网@微信公众号



相关文章:
多目标追踪器:用 OpenCV 实现多目标追踪(C++/Python)
从人脸检测到语义分割,OpenCV 预训练模型库
Opencv | 学计算机视觉不得不了解的 Mat 类

微信公众号: 极市平台(ID: extrememart )
每天推送最新CV干货

成为第一个点赞的人吧 :bowtie:
回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!