当前位置:网站首页>win10系统下yolov5-V6.1版本的tensorrt部署细节教程及bug修改
win10系统下yolov5-V6.1版本的tensorrt部署细节教程及bug修改
2022-08-03 22:11:00 【Just do it!ට⋆*】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
什么是tensorrt:
tensorrt是一个有助于在NVIDIA图形处理单元(GPU)上高性能推理c++库,对网络的推理过程进行了深度优化,可以实现非常高的推理速度,实乃不掉精度就能提速的上上策。
一、开始前,要准备点什么?
- cuda and cudnn:cuda and cudnn。本人使用的是cuda11.1和cudnn11.X
- opencv:opencv。版本不用太高,本人使用4.2
- pytorch:pytorch and torchvision
- pycharm and annaconda:下载
- tensorrtx部署代码,大佬开源:tensorrtx
- vs2019:vs2019
- Cmake3.19.4:cmake
二、安装
1.安装VS2019
下载安装包后,双击安装软件进行安装,勾选以下信息
安装的时候最好默认位置安装,
2.安装cuda11.1和cudnn11.X
1)安装cuda
提前下载鲁大师更新一下显卡驱动,然后下载cuda安装包和cudnn压缩文件。
之后一直默认下一步即可,最后完成安装。安装后检测环境配置
可能会出现安装失败bug
安装cuda的时候显示全部未安装或安装失败,则选择自定义安装,取消这两个选项即可
2)安装cudnn
将cudnn目录下的bin,include,lib中的文件分别复制粘贴到路径C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1文件夹下相对应的目录
3)安装测试
打开cmd运行:
nvcc -V
出现如下图所示cuda信息,配置成功
2.安装OpenCV
下载安装包安装,安装后添加环境变量,如下所示
3.安装anaconda和创建虚拟环境
官网下载安装包。
下载后点击进行安装,一直执行下一步,选择好软件的安装路径,本文安装路径默认c盘,隐藏文件夹programdata里,然后耐心等待,等到安装完成。
对于pytorch1.8.1,打开cmd创建虚拟环境,
conda create -n your_name python==3.7
activate your_name
pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
4.安装CMAKE
下载安装包
下载完成后,一直点击下一步执行即可,直到遇到以下情况
安装完成之后,重启电脑,然后打开Anaconda Prompt (Anaconda3),输入以下命令
cmake /V
三、YOLOv5代码下载及运行
1. YOLOv5代码下载:Github链接:yolov5
下载V6.0或最新版本都可以
2. 下载模型权重v5s.pt
3. 安装依赖包
激活刚才创建的环境,
d:
cd cd D:\YOLOv5_TensorRT\yolov5
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
4. 运行测试
python detect.py --source ./data/images/ --weights weights/yolov5s.pt
三、Tensorrt安装
1. 下载版本8.2.5.1
2. 环境配置
跟cudnn一样,将include下的文件复制到cuda的include文件内
lib下的dll文件复制到cuda 的bin文件夹内
lib下的lib文件复制到cuda 的lib/x64文件夹内
3. 测试运行
进入到TensorRT-8.2.5.1\samples\sampleMNIST文件夹内,vs2019打开
- 此处对sampleMNIST示例进行测试,vs2019打开sample_mnist.sln
- 然后依次点击 项目—>属性—>VC++目录
- 将路径D:\tensorrt_tar\TensorRT-7.0.0.11\lib分别加入可执行文件目录及库目录里
- 将D:\tensorrt_tar\TensorRT-7.0.0.11\include加入C/C++ —> 常规 —> 附加包含目录
- 将nvinfer.lib、nvinfer_plugin.lib、nvonnxparser.lib和nvparsers.lib加入链接器–>输入–>附加依赖项
- 将C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib加入链接器->常规->附加库目录
2. PGM文件
- 生成项目解决方案
- 开始执行
最后生成如下图结果所示,显示数字,则测试成功
Tensorrt的C++和python部署
1. tensorrtx下载(github)
选择最新版本即可,支持yolov5v6.0和v6.1
2. dirent.h下载
Dirent 是一个 C/C++ 编程接口,Github链接:https://github.com/tronkko/dirent
下载后复制里面dirent.h到tensorrtx的include文件中
3. yolov5s.wts生成
将tensorrtx的gen_wts.py文件复制到下载好的yolov5源码中,运行得到wts文件
4. CMakeList.txt修改
修改自定义的位置,还有cuda的版本
cmake_minimum_required(VERSION 3.2)
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
set(CMAKE_CUDA_ARCHITECTURES 50)###########
endif()
set(CudaToolkitDir "C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.1")###########
project(yolov5)
set(OpenCV_DIR "D:\\AppMy\\opencv\\opencv\\build") #1
set(TRT_DIR "D:\\Myproject\\TensorRT-8.2.5.1.Windows10.x86_64.cuda-11.4.cudnn8.2\\TensorRT-8.2.5.1") #2
set(OpenCV_INCLUDE_DIRS "D:\\AppMy\\opencv\\opencv\\build\\include") #3
set(OpenCV_LIBS "D:\\AppMy\\opencv\\opencv\\build\\x64\\vc15\\lib\\opencv_world340.lib") #4
add_definitions(-std=c++11)
add_definitions(-DAPI_EXPORTS)
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(D:\\yanyi\\project_process\\Completed_projects\\yolo-deploy\\tensorrtx-master\\yolov5) # 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 ${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)
add_executable(yolov5 ${
PROJECT_SOURCE_DIR}/yolov5.cpp ${
PROJECT_SOURCE_DIR}/common.hpp ${
PROJECT_SOURCE_DIR}/yololayer.cu ${
PROJECT_SOURCE_DIR}/yololayer.h ${
PROJECT_SOURCE_DIR}/preprocess.cu ${
PROJECT_SOURCE_DIR}/preprocess.h) #17
target_link_libraries(yolov5 "nvinfer" "nvinfer_plugin") #5
target_link_libraries(yolov5 ${
OpenCV_LIBS}) #6
target_link_libraries(yolov5 ${
CUDA_LIBRARIES}) #7
target_link_libraries(yolov5 Threads::Threads) #8
然后打开CMake软件,输入tensorrtx下的yolov5文件路径和build路径,会自动创建文件夹
选择vs2019和x64
之后点击Configure ->Generate->open project,打开VS
选择Realse和x64,点击生成解决方案
编译成功后会显示成功,只要没有失败即可,在yolov5-build-Realse文件中生成exe文件
5. tensorrtx加速命令运行
将第3步生成的wts文件复制到yolov5-Build-Release文件下,cmd执行:
yolov5.exe -s yolov5s.wts yolov5s.engine s
会在当前目录生成一个yolov5s.engine文件
然后运行推理命令:
yolov5.exe -d yolov5s.engine ../samples
加速后的检测结果
总结
bug:如果编译时出现20多个错误的情况,找不到各种函数的解决办法
点击项目-生成自定义选择cuda11.1
右键这三个文件的属性选择cuda即可
边栏推荐
猜你喜欢
CAS:122567-66-2_DSPE-Biotin_DSPE-Biotin
LabVIEW code generation error 61056
E-commerce data warehouse ODS layer-----log data loading
距LiveVideoStackCon 2022 上海站开幕还有2天!
现网设备兼容SRv6网络演进
授人以渔 - 如何自行查询任意 SAP UI5 控件属性的文档和技术实现细节试读版
Shell编程的条件语句
Cisco ike2 IPSec配置
Causes of Mysql Disk Holes and Several Ways to Rebuild Tables
DO280管理和监控OpenShift平台--资源限制
随机推荐
CAS:1620523-64-9_Azide-SS-biotin_biotin-disulfide-azide
Internet user account information management regulations come into effect today: must crack down on account trading and gray products
老板:公司系统太多,能不能实现账号互通?
嵌入式系统:概述
【day1】
互联网用户账号信息管理规定今起施行:必须严打账号买卖灰产
L2-041 插松枝
Data_web(八)mysql增量同步到mongodb
网络基础学习系列四(网络层,数据链路层和一些其他重要协议或技术)
斩获双奖|易知微荣获“2021中国数字孪生解决方案优秀供应商”“中国智能制造优秀推荐产品”双奖项!
图的基础概念
Cisco ike2 IPSec配置
Unification of east-west and north-south communications
2022-08-03 oracle执行慢SQL-Q17对比
UVa 1025 - A Spy in the Metro(白书)
[N1CTF 2018] eating_cms
如何基于WPF写一款数据库文档管理工具(二)
电商数仓ODS层-----日志数据装载
【进阶自动化测试】一文1000教你如何用Postman做接口自动化测试
CAS:1192802-98-4_UV 裂解的生物素-PEG2-叠氮