| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> win10+cuda10.0+opencv455+opencv_contrib455实现yolov5(6.06.1版本)的GPU加速 -> 正文阅读 |
|
[人工智能]win10+cuda10.0+opencv455+opencv_contrib455实现yolov5(6.06.1版本)的GPU加速 |
说明:本文主要实现在win10下,使用VS2015或VS2017或VS2019,使用C++控制台程序或MFC程序,结合opencv以及yolov5转化的onnx模型,实现图像的实时目标检测。记录总结一下环境部署的过程,以及部署环境过程中踩到的坑。 我的计算机配置:CPU:I5-7500,内存:8G,显卡:1050Ti(cuda10.0,cudnn7.6.5) 使用yolov5的C++代码:我在github上找到这个大佬的代码链接: 点击下面红色框的链接下载(yolov5-opencv-cpp-python) 或者查看这个大佬的链接,里面有C++源码: windows上yolov5 opencv dnn c++部署 cuda加速_野马AS的博客-CSDN博客 CPU版:直接使用opencv455就好了,使用VS2015或2017或2019配置好opencv环境(x64下),然后可以直接运行,release下我跑的官方yolov5s.onnx模型,大概2-3帧/s ?GPU版: 前期准备:下载好opencv455,opencv_contrib-4.5.5,CMake,cuda, cudnn,需要安装python3.7及以上版本(python在后面cmake结束后生成解决方案的时候会用到)。 参考链接:windows安装配置opencv opencv_contrib_野马AS的博客-CSDN博客_opencv_contrib 按照上面大佬的链接进行cmake就行,我第一次使用VS2019编译的(x64下),编译到最后提示我cuda10.0不适合VS2019,阿西吧。两种解决办法:1.换成cuda10.2及以上版本;2.使用VS2015或2017重新编译;注意:把先前编译失败的文件夹全部删掉,没有别的原因,主要是因为占C盘的空间太大。 在cmake,configure期间,提示我很多错误,根据上面大佬的链接在CMakeDownloadLog.txt中缺失的对应链接下载即可,大部分都需要翻墙下载,我是挨个翻墙下载的。全部都是.cache文件夹下的东西,路径为 ..../opencv455/sources/.cache。下面是我的路径截图: .cache文件我已经上传到网盘,需要的可以下载,不过也有可能对你不适用 - -!。 链接:https://pan.baidu.com/s/1LVW1eOaJZZ9K50Guk8AfDA? 对于一些.cmake或者.prototxt结尾的文件,需要网页保存,要不然还会出错,可参考: ??????cmake编译Opencv出现ffmpeg_cmake手动下载后也无法使用问题_小MarkK的博客-CSDN博客_ffmpeg_version.cmake 好了,按照上述步骤,cmake可以全部通过了。然后点击Generate完成后点击Open Project: 我第二次选择的是VS2015(x64),第一次编译报了两个错误:第一个是已超过内部ILK大小限制,链接使用/INCREMENTAL:NO;第二个是python报错,去修改python的一行代码,修改参考链接: opencv4.3.0 Cmake后debug模式生成不了opencv_world430d.lib_航天城拖地的的博客-CSDN博客_opencv world生成失败?python报错在OpenCV.sln解决方案下找到bindings/外部依赖项/pyconfig.h,修改第274行代码,修改后结果为:(这也可能是我个人的情况) 至此,我编译全部通过了,然后新建控制台程序,配置新编译好的opencv455(其实与正常配置opencv455方式一样,只不过我们现在用的是编译出来的 opencv_world455.lib或者opencv_world455d.lib,具体可参考上面第二条链接也行的),然后跑C++代码,我一开始跑的时候,巨卡,比CPU版还卡,经过一翻摸索,发现是这个地方有问题,如图下方的红线部分,原代码是DNN_TARGET_CUDA_FP16,我估计1050TI用不了这个,所以换成了DNN_TARGET_CUDA,然后运行立刻就跑通了,大概14帧/s。 ?使用MFC开两个线程同时跑的如下图,开两个模型,显存大概占了500MB: ?ok,现在我需要跑我自己训练的模型进行检测,按照官方教程,把训练好的.pt转成.onnx。然后修改classes.txt中的类别,接着使用根据Netron,查看你自己的模型的输出:比如我自己训练的模型: ?点击output,右边最后一行会弹出数据:[1,6300,16],我训练的是11个类别,这个时候需要把C++代码中的一些参数修改掉,在detect()函数中: ?同时也要修改自己训练模型的分辨率,置信度修不修改看需要: 这样,就可以跑自己的模型了。我跑的分辨率320的?yolov5m的onnx模型,大概80MB,跑到34帧/s,我个人感觉还不错,说到底,我不太想裁剪yolov4的网络,哈哈。? 另外,经过上面的操作,我在我自己电脑上运行yolov5已经可行,我尝试换几台机器运行yolov5是否可行,答案是可行的,也无需在新的电脑重新cmake;前提是:那台电脑的显卡驱动版本号大于等于你cmake时使用的电脑(简单的方法就是用最新的驱动就好了),并且在新的电脑上你只能使用你cmake时的cuda版本对应的编译文件(比如我的版本是cuda10.0),如果想换成大于cuda10.0,需要重新安装,重新cmake才能使用。举个我尝试的例子,我现在需要在另外一台电脑使用yolov5,另外一台电脑的配置是CPU:i5-9400,内存16G,1050Ti显卡,cuda是11.0,cudnn是对应11.0的具体我没仔细查看(这些配置都是曾经几年前已经安装好的);我的做法是:把我在我自己电脑上已经cmake编译好的(我的是在bulid下)文件夹直接拷贝另一台电脑上去,如图: 我这次拷贝到了另外一台电脑的D盘,同样按照配置opencv的方法配置好VS2015的控制台或MFC程序。然后调试运行提示我少很多cuda10.0的东西,然后我就按照提示少的dll文件,从我的电脑上一个一个全部复制过去(其实主要就是缺少cuda10.0/bin/下的dll文件),直接复制到控制台或MFC程序下就行(比如我复制到了和.cpp文件放在一起,对于需要使用debug和release下.exe文件的,当然需要和.exe文件放在一起了),直到不再提示,然后运行程序,顺利跑通。 #### |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 7:44:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |