| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 踩坑到怀疑人生:win10下tensorRT加速YOLOV5 -> 正文阅读 |
|
[人工智能]踩坑到怀疑人生:win10下tensorRT加速YOLOV5 |
目录 引言:去改bug吧,去改不被定义的bug,在你茂密的头上留下一片激战bug后的痕迹 版本YOLOV5-5.0,tensorrtx-5.0,cuda-10.2,tensorrt-7.0.0.11,opencv 3.4.0,cudnn需对应cuda 下载安装包1.Go to:CUDA10.2后面还需要添加几个环境变量分别是sdk_path,sdk_lib,sdk_bin以及cuda_bin,cuda_lib CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2 CUDA_LIB_PATH = %CUDA_PATH%\lib\x64 CUDA_BIN_PATH = %CUDA_PATH%\bin CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64 CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64 在系统变量path的末尾添加 %CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH% 再添加5条默认的安装路径 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib\x64 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\CUPTI\lib64 C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2\bin\win64 C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2\common\lib\x64 2.Go to:CUDNN下载好的cudnn解压后,将cudnn中的bin,include,lib文件复制到cuda的文件夹下 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2 cmd测试是否安装成功 nvcc -V ?出现如下信息则为成功 3.Go to:opencv340?以上是opencv官网编译好的,如果想锻炼自己的编译水平可以看我的另一篇博客YOLOV5python训练到C++的dnn部署,这里不建议自己编译,懂得都懂。 下载后将解压后的文件路径添加到系统变量Path 4.Go to:pytorch官网安装版本需要对应cuda版本,这里小伙伴们自己找一下 5.Go to:yolov5这里直接指向的是5.0的版本 a.下载后配置好环境python>=3.7后pip install?requirements.txt? b.下载YOLOv5的权重,这里需要注意的是前面所说的需要与版本对应 标签 ·Ultralytics/yolov5 ·GitHub 一切就绪后测试一下 python detect.py --source 图片路径 --weights 下载权重路径 --conf 0.4 6.Go?to:tensorRT官网注:首先 nvcc --version查看cuda版本 我的是10.2,所以我对应下载tensorRT 7.0版本 1)解压得到的TensorRT-7.0.0.11的文件夹,将里面的lib文件添加绝对路径到换将变量中 ? 2)将tensorRT解压位置lib下的dll文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin 注:如果有多个cuda,比如本博主有10.0,11.2, 9.0等多个版本一定要对应当前使用的版本的bin目录下? ?7.安装pycuda如果要是用python接口的tensorRT,需要安装pycuda
8.测试TensorRT实例?1).配置VS2019用VS2019打开sampleMNIST示例(E:\TensorRT-7.0.0.11\samples\sampleMNIST) a. 将E:\TensorRT-7.0.0.11\lib加入 项目->属性->VC++目录–>可执行文件目录 b.将E:\TensorRT-7.0.0.11\lib加入 VC++目录–>库目录 c. 将E:\TensorRT-7.0.0.11\include加入C/C++ --> 常规 --> 附加包含目录 d.将nvinfer.lib、nvinfer_plugin.lib、nvonnxparser.lib和nvparsers.lib加入链接器–>输入–>附加 依赖项 E:\TensorRT-7.0.0.11\lib\*.lib 2).下载pgm文件到tensorrt目录下的data文件夹找到对应数据集的download_pgms.py,然后运行。运行的时候没输 出,等一会看到文件夹下有了x.pgm文件就说明下载好了。即执行:
注意:有的时候会显示为远程主机强迫关闭,这时候吧代码copy出来在pycharm中运行,一次不行多试几次, 直到目录中 把下载的x.pgm文件放置到E:\TensorRT-7.0.0.11\data\mnist 在samples下的sampleMNIST文件夹中点击sampleMNIST进行编译 ?编译成功 ?注意:有人可能会出现sdk错误,需要点击项目->重订目标解决方案,然后生成最新的sdk就OK了 随后点击调试->开始执行 ?黑窗口出现手写体数字识别,这里就已经可以用了 ?解释:5后面的******是识别出数字为5后对识别的结果进行的加密 ?9.yoloV5的TensorRT加速1)克隆tensorrtx-5.0有git的小伙伴可以通过 git clone https://github.com/wang-xinyu/tensorrtx.git下载 如果没有可以点击传送门下载 2)下载文件dirent.h点击传送门 放置到tensorrtx/include文件夹下 这里的include需要自己创建 3)生成yoloV5s.wts权重文件?将文件tensorrtx/yolov5/gen_wts.py 复制到 yolov5项目中 执行 python gen_wts.py生成wts权重文件 重点必须强调:yolov5s.pt权重版本需要与YOLOv5版本对应下载,也就是说也需要下载5.0的版本 生成的wts文件放到build下 4)修改CMakeList.txt在 E:\tensorrtx\yolov5下的CMakeList.txt中,需要修改#1#2#3#4#5
5)编译tensorrtx下的yolov51.打开cmake设置好路径,与opencv的编译一样 2.更改配置,在vs2019下的x64系统进行 然后编译 以下是我编译遇到的问题以及解决方法: 问题1: CMAKE_CUDA_ARCHITECTURES must bi valid if set 或者类似cuda框架找不到 这里建议把VS删干净重新装一边,不要头铁一直去解决,我已经帮你们试过了,头铁解决一个星期没解决,重新安装20分钟轻松搞定,原因就是系统不知道什么值一直默认它自己指定的,而不是你自己设定的值 问题2: 出现No CUDA toolset found.参考这位博主,不过这个路径得自己找 总结(其实问题一二的问题是一样的,都是默认的这4个写错了,但是问题一不知道在哪里修改,问题二是直接没有了这四个文件,如果有大神还有更的解好决办法,希望评论区见) 随后点击Generate进行检测,随后open Project。 6)VS2019编译YOLOv5Release模式下生成解决方案 选中yolov5右击选择重新生成,如果不出意外的话你会遇到这些意外:dll找不到,opencv依赖找不到或者MSB3721报错信息等,在tensorrtx->yolov5>build>yolov5.dir->release->yolov5.log中找到这些详细的编译报错信息。 10.执行TensorRT加速YOLOv5命令去yolov5/build/Release目录下CMD执行 yolov5.exe -s yolov5s.wts yolov5s.engine s? 出现 Build engine successfully时生成结束 ?随后你的文件夹中会出现yolov5s.engine的权重文件 如果出现以下报错信息:Network::addScale::434 解决方法: ????????1.我之前说的版本是否匹配 ? ? ? ? 2.可能是wts权重文件找不到,像我一样把权重文件放到yolov5.exe的同一级目录下 ? ? ? ? 3.你可能用了自己的权重文件需要在yolov5.cpp与yololayer.h中把相关的参数修改成自己的参数设定 最后生成内容 ?随后在yolov5.exe同一级目录中新建images文件夹,里面放入两张测试图片 cmd下运行 yolov5.exe -d yolov5s.engine images 可以看到我们的两张图片处理的时间被打印出来,总费时间7ms 而之前没有做加速时两张图片的处理时间为0.9s 也就是相当于900ms ?非常amazing啊,足足快了128倍还要多。接下来看一下生成效果 ? ?值得注意的是为什么这些anocher框上的标签是数字而不是英文字母呢,细心的朋友们会发现,这些数字刚好对应coco数据集中标签的位置 总结别人说一杯茶,一包烟,一个bug改一天,我一直以为是玩笑话,直到我开始编译tensorrt加速时yolo发现我这6处编译bug改了9天!!!每一个编译问题全网都找不出一个有效的解决方法!!!我看着桌上的头发以及编译好的代码,我不经意的感慨到:Linux系统真好。愿世上再无bug。 点赞 关注 收藏 不白嫖 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 2:30:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |