IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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

目录

版本

下载安装包

1.Go to:CUDA10.2

2.Go to:CUDNN

3.Go to:opencv340

4.Go to:pytorch官网

5.Go to:yolov5

6.Go?to:tensorRT官网

7.安装pycuda

8.测试TensorRT实例?

1).配置VS2019

2).下载pgm文件

?9.yoloV5的TensorRT加速

1)克隆tensorrtx-5.0

2)下载文件dirent.h

3)生成yoloV5s.wts权重文件?

4)修改CMakeList.txt

5)编译tensorrtx下的yolov5

6)VS2019编译YOLOv5

10.执行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

pip install 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文件就说明下载好了。即执行:

python E:\TensorRT-7.0.0.11\data\mnist\download_pgms.py

注意:有的时候会显示为远程主机强迫关闭,这时候吧代码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

cmake_minimum_required(VERSION 3.1.0)
 
project(yolov5)  
set(OpenCV_DIR "F:\\opencv340\\build")  #1
set(OpenCV_INCLUDE_DIRS "F:\\opencv340\\build\\include")  #2
set(OpenCV_LIBS "F:\\opencv340\\build\\x64\\vc15\\lib\\opencv_world340.lib") #3
set(TRT_DIR "F:\\TensorRT-7.0.0.11")  #4
 
add_definitions(-DAPI_EXPORTS) 
add_definitions(-std=c++11)
option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)
 
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads)


# setup CUDA
find_package(CUDA REQUIRED)
message(STATUS "    libraries: ${CUDA_LIBRARIES}")
message(STATUS "    include path: ${CUDA_INCLUDE_DIRS}")
 
include_directories(${CUDA_INCLUDE_DIRS})
 
####
enable_language(CUDA)  # add this line, then no need to setup cuda path in vs
####
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${TRT_DIR}\\include)
include_directories(C:\\Users\\Lenovo\\Desktop\\yolov5-5.0\\yolov5-5.0\\tensorrtx-yolov5-v5.0\\tensorrtx-yolov5-v5.0\\include) #5
 
 
#find_package(OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(${OpenCV_INCLUDE_DIRS}\\opencv2) #6
 
 
# -D_MWAITXINTRIN_H_INCLUDED for solving error: identifier "__builtin_ia32_mwaitx" is undefined
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Ofast -D_MWAITXINTRIN_H_INCLUDED")
 
# setup opencv
find_package(OpenCV QUIET
    NO_MODULE
    NO_DEFAULT_PATH
    NO_CMAKE_PATH
    NO_CMAKE_ENVIRONMENT_PATH
    NO_SYSTEM_ENVIRONMENT_PATH
    NO_CMAKE_PACKAGE_REGISTRY
    NO_CMAKE_BUILDS_PATH
    NO_CMAKE_SYSTEM_PATH
    NO_CMAKE_SYSTEM_PACKAGE_REGISTRY
)
 
message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
 
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${TRT_DIR}\\lib) #7
link_directories(${OpenCV_DIR}\\x64\\vc15\\lib) #8
 
add_executable(yolov5 ${PROJECT_SOURCE_DIR}/calibrator.cpp yolov5 ${PROJECT_SOURCE_DIR}/yolov5.cpp ${PROJECT_SOURCE_DIR}/yololayer.cu ${PROJECT_SOURCE_DIR}/yololayer.h)   #4
 
#add_executable(yolov5 ${PROJECT_SOURCE_DIR}/yolov5.cpp ${PROJECT_SOURCE_DIR}/yololayer.cu ${PROJECT_SOURCE_DIR}/yololayer.h ${PROJECT_SOURCE_DIR}/preprocess.cu ${PROJECT_SOURCE_DIR}/preprocess.h) #4

target_link_libraries(yolov5 "nvinfer" "nvinfer_plugin")   #9
target_link_libraries(yolov5 ${OpenCV_LIBS})          #10
target_link_libraries(yolov5 ${CUDA_LIBRARIES})   #11
target_link_libraries(yolov5 Threads::Threads)       #12

5)编译tensorrtx下的yolov5

1.打开cmake设置好路径,与opencv的编译一样

2.更改配置,在vs2019下的x64系统进行

然后编译

以下是我编译遇到的问题以及解决方法:

问题1:

CMAKE_CUDA_ARCHITECTURES must bi valid if set

或者类似cuda框架找不到

这里建议把VS删干净重新装一边,不要头铁一直去解决,我已经帮你们试过了,头铁解决一个星期没解决,重新安装20分钟轻松搞定,原因就是系统不知道什么值一直默认它自己指定的,而不是你自己设定的值

问题2:

出现No CUDA toolset found.参考这位博主,不过这个路径得自己找

YYDS

总结(其实问题一二的问题是一样的,都是默认的这4个写错了,但是问题一不知道在哪里修改,问题二是直接没有了这四个文件,如果有大神还有更的解好决办法,希望评论区见)

随后点击Generate进行检测,随后open Project。

6)VS2019编译YOLOv5

Release模式下生成解决方案

选中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。

点赞 关注 收藏 不白嫖

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-06-14 22:35:35  更:2022-06-14 22:38:25 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码