上一篇博文介绍了win10 tensorrtx lenet使用方法,这里介绍Windows10下yolov5的TensorRT使用方法,官方的CmakeList默认是在linux环境下使用,我参考官方说明,修改了CmakeList,使其可以在windows10下快速构建TensorRT的MSVC工程,用于pytorch版yolov5的pt模型测试。

1 环境

硬件:
CPU:Intel®Core™i5-10400F CPU @2.90GHz 2.90GHz
GPU: NVIDIA GeForce GTX 1660 Ti (6G显存)
内存:16.0GB(15.9GB可用)

软件:
Visual Studio 2019
Cmake
CUDA10.0/10.1,cudnn
Anaconda python3.8.3
torch 1.6.0+cu101,torchvision 0.7.0+cu101
TensorRT-7.0.0.11.Windows10.x86_64.cuda-10.0.cudnn7.6
OpenCV 3.4.0

2 准备工作

Cmake,CUDA,cudnn,Anaconda,OpenCV等常规软件安装参照网上教程安装即可,不再赘述。
2.1 tensorRT安装与测试
参考我的另一篇博客:win10 TensorRT 安装与测试
2.2 tensorRT工具库tensorrtx
tensorrtx是GitHub上star最多的tensorrt资料仓库,这个库就尝试使用TensorRT的各种API直接进行网络的构建,简单粗暴,还很有效。避免模型转onnx时出现的一些网络层不支持问题和不友好的报错提示问题。

tensorrtx下载链接:
https://github.com/wang-xinyu/tensorrtx
与tensorrtx相关的仓库pytorchx:
https://github.com/wang-xinyu/pytorchx
yolov5官方代码链接:
https://github.com/ultralytics/yolov5

2.3 第三方依赖库
1)OpenCV
在网上下载一个版本即可,我用的是3.4.0版本
2)Dirent
Dirent是一个C/ c++编程接口,允许程序员检索有关Linux/UNIX下的文件和目录的信息。这个项目为Microsoft Windows提供了Linux兼容的不同接口。
下载链接:https://github.com/tronkko/dirent

2.4 yolov5官方测试pt模型
yolov5官方测试pt模型在网络不好时,下载较慢,这里有我下载好的模型可以直接使用,点击下载。

3 测试

3.1 .pt模型转.wts
1)将下载的yolov5的pt模型放到ultralytics/yolov5/weights目录下
2)将tensorrtx/yolov5/gen_wts.py 复制到 ultralytics/yolov5目录下
3)运行 python gen_wts.py,得到yolov5s.py
linux版教程

3.2 修改CmakeList
敲黑板,重点来了!!!官方给的CMakeList是linux版本的,想在Windows下构建工程需要修改CMakeList。这里官方给出的参考windows下MSVC构建方法,写了一个yolov5的TensorRT工程构建CMakeList,具体内容如下:
1)设置工程名:#1
2)设置OpenCV路径:#2—#6
3)设置TensorRT库路径:#7—#9
4)设置Dirent路径:#10
5)配置工程包含目录:#11
6)配置TensorRT包含目录和库目录:#12,#13
7)配置OpenCV包含目录和库目录:#14,#15
8)配置Dirent包含目录:#16
9)添加工程文件:#17
10)配置TensorRT附加依赖项:#18
11)配置OpenCV的debug版附加依赖项:#19
12)配置OpenCV的release版附加依赖项:#20
13)配置CUDA的附加依赖项:#21

cmake_minimum_required(VERSION 2.6)project(yolov5) #1
set(OpenCV_DIR "D:\\soft\\Opencv\\opencv\\build")  #2
set(OpenCV_INCLUDE_DIRS ${OpenCV_DIR}\\include) #3
set(OpenCV_LIB_DIRS ${OpenCV_DIR}\\x64\\vc15\\lib) #4
set(OpenCV_Debug_LIBS "opencv_world340d.lib") #5
set(OpenCV_Release_LIBS "opencv_world340.lib") #6
set(TRT_DIR "D:\\soft\\TensorRT-7.0.0.11")  #7
set(TRT_INCLUDE_DIRS ${TRT_DIR}\\include) #8
set(TRT_LIB_DIRS ${TRT_DIR}\\lib) #9
set(Dirent_INCLUDE_DIRS "D:\\PyTorch\\TensorRT\\dirent\\source\\include") #10add_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) #11
include_directories(${TRT_INCLUDE_DIRS}) #12
link_directories(${TRT_LIB_DIRS}) #13
include_directories(${OpenCV_INCLUDE_DIRS}) #14
link_directories(${OpenCV_LIB_DIRS}) #15
include_directories(${Dirent_INCLUDE_DIRS}) #16# -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 QUIETNO_MODULENO_DEFAULT_PATHNO_CMAKE_PATHNO_CMAKE_ENVIRONMENT_PATHNO_SYSTEM_ENVIRONMENT_PATHNO_CMAKE_PACKAGE_REGISTRYNO_CMAKE_BUILDS_PATHNO_CMAKE_SYSTEM_PATHNO_CMAKE_SYSTEM_PACKAGE_REGISTRY
)message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    lib path: ${OpenCV_LIB_DIRS}")
message(STATUS "    Debug libraries: ${OpenCV_Debug_LIBS}")
message(STATUS "    Release libraries: ${OpenCV_Release_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")add_executable(yolov5 ${PROJECT_SOURCE_DIR}/yolov5.cpp ${PROJECT_SOURCE_DIR}/common.hpp ${PROJECT_SOURCE_DIR}/yololayer.cu ${PROJECT_SOURCE_DIR}/yololayer.h)   #17target_link_libraries(yolov5 "nvinfer" "nvinfer_plugin") #18
target_link_libraries(yolov5 debug ${OpenCV_Debug_LIBS}) #19
target_link_libraries(yolov5 optimized ${OpenCV_Release_LIBS}) #20
target_link_libraries(yolov5 ${CUDA_LIBRARIES}) #21
target_link_libraries(yolov5 Threads::Threads)  

主要是自动配置了OpenCV、Dirent和CUDA,其中OpenCV自动配置了debug版和release版附加依赖项,这个命令很方便,值得学习一下。

target_link_libraries(yolov5 debug ${OpenCV_Debug_LIBS}) #19
target_link_libraries(yolov5 optimized ${OpenCV_Release_LIBS}) #20

CMake构建工程,不多说,直接上图,没有erro和warming就可以了

linux版教程

3.3 编译工程
release和debug版都一次编译通过,再也不用担心环境没配好导致编译失败了。

3.4 运行
1)将生成好的yolov5s.wts复制到tensorrtx/yolov5目录下,将测试图像文件夹/samples放到tensorrtx/yolov5目录下
2)在yolov5的配置属性—>调试—>命令参数,设置命令行参数
-s yolov5s.wts yolov5s.engine s

运行结束后在工程目录下得到yolov5s.engine文件

3)在yolov5的配置属性—>调试—>命令参数,设置命令行参数
-d yolov5s.engine …/samples

运行结束后得到测试输出结果


linux版教程

测试圆满结束。

说明

1)用自己的数据集训练的模型(yolov5和yolov3),网络结构与tensorrtx源码不一致,生成engine文件时报错,暂未找到原因,官方的pt模型网络结构和tensorrtx源码一致(待解决)。

2)暂时只测了yolov5s的官方pt模型,跑通所有流程,yolov5系列其他模型未做测试(待测试)。

3)pytorch代码在Windows上运行常见错误:Initializing libiomp5md.dll, but found libiomp5md.dll already initialized,解决办法:
把这句话放到程序最开始的位置(注意使用因为引号)。
import os
os.environ[‘KMP_DUPLICATE_LIB_OK’]=‘True’

win10 tensorrtx yolov5使用方法相关推荐

  1. win10 mysql 5.7.21_MySql 5.7.21免安装版本win10下的配置方法

    1.解压到想要安装的位置,创建my.ini文件 my.ini的内容如下 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设 ...

  2. 华硕笔记本自带win10改win7的方法

    华硕笔记本自带win10改win7的方法 1. 工具/原料 华硕vm510笔记本一台 8G左右U盘,制作U盘PE启动盘 u深度ufi版启动u盘安装程序 win7      64位旗舰版,ghost版本 ...

  3. 联想按f2进不了bios设置_华硕笔记本win10装win7bios设置方法分享

    很多朋友在重装系统的时候都在问win10装win7bios设置方法是什么,因为我们重装系统肯定是需要进入BIOS设置里面的.可是我们不知道win10装win7bios设置方法的话,有没有一篇教程能够帮 ...

  4. win10虚拟机dhcp服务器设置,win10 dhcp服务器设置方法

    win10 dhcp服务器设置方法 内容精选 换一换 登录Windows操作系统的弹性云服务器时,需使用密码方式登录.因此,用户需先根据创建弹性云服务器时使用的密钥文件,获取该弹性云服务器初始安装时系 ...

  5. win10必须禁用的服务_【亲测】Win10系统如何彻底禁止自动更新 亲测有效的Win10关闭自动更新方法...

    昨天有人称Win10系统更新依然无法彻底关闭,今天再来补充一下,肯定可以! 不少用户反映自己的Win10系统更新无法彻底关闭,网上提供的关闭Win10更新的教程,关闭之后还是会自动更新Win10系统, ...

  6. 【转】五大方法,彻底永久关闭win10自动更新的方法【已验证有效】

    自从微软大面积使用某员工后,思路越来越奇葩了,前天工作没做完,放在那里,第二天毫无羞耻的就给你重启了,那一瞬间,真想拿dollar到对面slay.于是就有下文,大部分内容是从网上摘录.归纳起来的.版权 ...

  7. windows 禁用ipv6服务_Win10如何关闭IPV6?Win10禁用IPv6的方法

    在Win10系统中默认开启IPV6,不过这个协议暂时我们还用不到.而且开启该协议有时对系统运行有一定的影响,一些网卡还会因为IPv6出现系统未响应,假死等情况,那么Win10系统怎么关闭IPV6?下面 ...

  8. Win10怎么改网络服务器账号,win10系统设置网络的方法图解步骤

    Win10系统怎么新建网络?最新版Win10连接的方法要比以前简单快速一点,只需要打开连接界面,再输入服务器地址,再输入用户名和账号就可以完成连接,具体怎么设置网络下面小编来告诉你吧. win10系统 ...

  9. Win10桌面的图标都不见了怎么办 Win10电脑桌面图标找回方法

    在使用电脑的过程中,有时会出现桌面上的图标都不见了的情况,这时应该怎么办呢?一般这种情况我们需要分为两种来考虑,下面小编就带着大家一起看看怎么解决吧! 方法一: 1.首先看下你的桌面是否还有任务栏,如 ...

最新文章

  1. RDKit | 小分子构象的生成和比对
  2. C#中调用C++ 动态链接库 dll 的方法
  3. python汽车票票系统_长途客运售票系统
  4. Android Studio(IDEA)太占系统盘?帮你移动下
  5. activity得到service的数据的方法
  6. 【Spring注解系列04】@Condition条件注解
  7. ITK:将静态密集2D级别集可视化为高程图
  8. 从数据角度看,每家公司只有2种角色:看看你更适合哪一种?
  9. java新人面试经历_分享近两周以来的真实面试经历
  10. JavaScript-面试 表单验证
  11. windows IDA 调试SO
  12. 三星s20计算机怎么添加到桌面,三星s20+怎么分屏?三星s20系列多窗口分屏设置操作步骤...
  13. 基于 Java 机器学习自学笔记 (第60天:过去十日的总结)
  14. 【ffplay】视频的宽高比详解 -PAR、DAR 和 SAR
  15. golang模拟新浪微博登录
  16. ORCAL计算司龄是否满一年
  17. 警惕,老外也诈骗!!
  18. 刷脸支付凭什么这么火 ? 开启你的智慧生活 !
  19. [OPNET]学习总结——卫星轨道导入与管道文件设置及用dijikstra路由的思路
  20. 修改 java 版本

热门文章

  1. 信息驾驶舱(管理驾驶舱)
  2. 用meta name=renderer content=webkit|ie-comp|ie-stand来切换360双核安全浏览器的极速模式和兼容模式
  3. [*CTF2022]web题目复现及wp
  4. 纪念碑谷背后的故事:不差钱!8人团队研发十月
  5. 华为服务器恢复远程连接的出厂用户名和密码
  6. Vmware虚拟机如何与主机共享文件夹
  7. xcpc网络赛个人总结(文笔不好,纯纯记录)
  8. Workbench导入xls文件
  9. python 中文转带音调的拼音
  10. Excel 2010 VBA 入门 140 在功能区添加按钮并运行VBA程序