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

2020 年 1 月 21 日 极市平台

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~


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


本文转自群友装的博客,作者对新出的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版本,按照默认地址安装就好,安装完之后看是否有环境变量。 没有的话自己加上。

以及,

4. cuDNN


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

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

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

5. CMake


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



OpenCV DNN with CUDA


打开CMake,选择源码路径,以及生成路径,选择对应VS版本。 开始第一次Configue。
其中会下载一些第三方文件,可以自行下载,否则速度较慢。 第一次configure完成之后,勾选BUILD_opencv_world.
以及,勾选OPENCV_DNN_CUDA,选择解压好的opencv_contrib中modules路径添加进来。

勾选WITH_CUDA。

进行第二次Configure,Configure完成之后可能会报错,此时不管他,根据GPU算力表选择合适的CUDA_ARCH_BIN值,如我的是RTX2080Ti,则将CUDA_ARCH_BIN其余值删除,只留下7.5。 然后勾选CUDA_FAST_MATH,点击Configure。


等待Configure完成之后,查看是否检测到了CUDA和cuDNN,都出现YES之后,说明没有问题。 这边是一个坑,需要注意,如果没有检测到的话,需要确认是否CUDA和cuDNN版本正确,否则后面的编译将不会编译CUDA模块,白白浪费时间。 确认之后,点击Generate。
点击Open Project打开工程,在Release模式下右键点击ALL_BUILD,生成,时间较长。

生成之后,右击INSTALL->仅用于项目->仅生成INSTALL。

到这边就编译好了,Debug版本同理。

添加环境变量。

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



测试结果


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

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

图片大小 416x416 ,在我自己的项目上运行,首先是 CPU版本(I9-9900K) ,推理时间在 22.45ms

CUDA版本(RTX 2080Ti) ,推理时间是 2.16ms 。提升了10倍左右。

顺便贴一个 OpenVINO推理引擎 的运行效率,大概是 8.17ms 左右
注意事项:

  • OpenCV和OpenCV_contrib版本要对应

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

  • 勾选WITH_CUDA 、OPENCV_DNN_CUDA。

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

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




-End-



*延伸阅读






鼠年上极市,打卡领红包!
新参与进来的朋友快快点击
鼠年福利 | 不用集五福也能领的千元红包~ 
查看活动详情~





红包口令【5】



PS:新年假期,极市将为大家分享计算机视觉顶会 ICCV 2019 大会现场报告系列视频,欢迎前往B站【极市平台】观看,春节也学习,极市不断更,快来打卡点赞吧~

https://www.bilibili.com/video/av83390901



CV细分方向交流群


添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割等极市技术交流群(已经添加小助手的好友直接私信),更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流一起来让思想之光照的更远吧~



△长按添加极市小助手


△长按关注极市平台


觉得有用麻烦给个在看啦~  


登录查看更多
8

相关内容

一个跨平台的计算机视觉处理库,全称是Open Source Computer Vision。
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
Python地理数据处理,362页pdf,Geoprocessing with Python
专知会员服务
110+阅读 · 2020年5月24日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
105+阅读 · 2020年5月3日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
223+阅读 · 2020年3月22日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
144+阅读 · 2019年10月12日
Opencv+TF-Slim实现图像分类及深度特征提取
极市平台
16+阅读 · 2019年8月19日
目标检测之非极大值抑制(NMS)各种变体
极市平台
3+阅读 · 2019年5月2日
React Native 分包哪家强?看这文就够了!
程序人生
12+阅读 · 2019年1月16日
Python3.8新特性概览
Python程序员
4+阅读 · 2018年12月8日
Github 项目推荐 | 用 PyTorch 0.4 实现的 YoloV3
AI研习社
9+阅读 · 2018年8月11日
教你快速使用OpenCV/Python/dlib进行眨眼检测识别!
全球人工智能
3+阅读 · 2018年1月8日
【强烈推荐】浅谈将Pytorch模型从CPU转换成GPU
机器学习研究会
7+阅读 · 2017年12月24日
6个实验教你用Torch玩转深度学习
七月在线实验室
6+阅读 · 2017年11月21日
Arxiv
91+阅读 · 2020年2月28日
Arxiv
34+阅读 · 2019年11月7日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Arxiv
8+阅读 · 2018年4月8日
Arxiv
3+阅读 · 2018年3月13日
Arxiv
4+阅读 · 2018年1月19日
VIP会员
相关资讯
Opencv+TF-Slim实现图像分类及深度特征提取
极市平台
16+阅读 · 2019年8月19日
目标检测之非极大值抑制(NMS)各种变体
极市平台
3+阅读 · 2019年5月2日
React Native 分包哪家强?看这文就够了!
程序人生
12+阅读 · 2019年1月16日
Python3.8新特性概览
Python程序员
4+阅读 · 2018年12月8日
Github 项目推荐 | 用 PyTorch 0.4 实现的 YoloV3
AI研习社
9+阅读 · 2018年8月11日
教你快速使用OpenCV/Python/dlib进行眨眼检测识别!
全球人工智能
3+阅读 · 2018年1月8日
【强烈推荐】浅谈将Pytorch模型从CPU转换成GPU
机器学习研究会
7+阅读 · 2017年12月24日
6个实验教你用Torch玩转深度学习
七月在线实验室
6+阅读 · 2017年11月21日
相关论文
Arxiv
91+阅读 · 2020年2月28日
Arxiv
34+阅读 · 2019年11月7日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Arxiv
8+阅读 · 2018年4月8日
Arxiv
3+阅读 · 2018年3月13日
Arxiv
4+阅读 · 2018年1月19日
Top
微信扫码咨询专知VIP会员