windows下 使用VS2019部署yolov5使用TensorRT加速模型推理

本项目改编自小鸭子只是总结了一下错误和本人遇到的一些不一样的报错。

简介:

yolov5s通过tensort,导出为dll文件,python、c++调用dll文件。

1.项目环境
软件安装,及其环境变量配置请参考上述人员的博客,必须基于yolov5(6.0版本),cuda和cudnn和TensorRT版本必须匹配,如有报错请考虑软件版本、环境变量是否匹配。
(1)Windows 11、NVIDIA GeForce GTX 3050 Ti
(2)Visual Studio 2019 Community 下载地址
(3)cuda_11.6.1_511.65_win11 下载地址
(4)cudnn-windows-x86_64-8.9.0.131_cuda11-archive下载地址
(4)TensorRT-8.5.3.1.Windows10.x86_64.cuda-11.8.cudnn8.6下载地址
(5)opencv4.6.0 下载地址
(6)tensorrtx-yolov5-v6.0 下载地址
(7)Yolov5(v6.0) 下载地址
(8)CMake3.26.3 下载地址

2.cuda,cudnn和TensorRT的关联环境变量需要一一配置,如果这些东西没有配置需要按照自己的版本去搜索博客一一配置,这里就不讲太多了。

2.TensorRT验证

1.在tensorrtx-yolov5-v6.0\yolov5目录下新建build目录

在这里插入图片描述

 2.编写CMake.txt,根据自己目录更改2(OpenCV_DIR)、3(TRT_DIR)、10(Dirent_INCLUDE_DIRS),此文件放在build文件里面。

cmake_minimum_required(VERSION 2.6)

project(yolov5) 

#change to your own path
##################################################
set(OpenCV_DIR "D:\\Tool\\opencv4.5.1\\opencv\\build") #2
set(TRT_DIR "D:\\AITool\\TensorRT\\TensorRT-8.4.1.5") #3
set(Dirent_INCLUDE_DIRS "D:\\AITool\\TensorRT\\TensorRT-8.4.1.5\\include") #10
##################################################

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})
include_directories(${Dirent_INCLUDE_DIRS}) 

#change to your GPU own compute_XX
###########################################################################################
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-std=c++11;-g;-G;-gencode;arch=compute_60;code=sm_60)
###########################################################################################

####
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)

# -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)

add_executable(yolov5 ${PROJECT_SOURCE_DIR}/yolov5.cpp ${PROJECT_SOURCE_DIR}/yololayer.cu ${PROJECT_SOURCE_DIR}/yololayer.h ${PROJECT_SOURCE_DIR}/preprocess.cu) 

target_link_libraries(yolov5 "nvinfer" "nvinfer_plugin")  
target_link_libraries(yolov5 ${OpenCV_LIBS})     
target_link_libraries(yolov5 ${CUDA_LIBRARIES})  
target_link_libraries(yolov5 Threads::Threads)     

3.打开Cmake工具,设置目录后,依次点击Configue、Generate、OpenProject

在这里插入图片描述

 红色Warning不影响,依次看到Configue done、Generate done即可
在这里插入图片描述

4.在build目录下查看生成的文件

在这里插入图片描述

 5.用Visual studio打开yolov5.sln文件,设置CUDA自定义文件

在这里插入图片描述

 如果你的Visual studio没有该选项,请点击查找现有的 再
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\visual_studio_integration\MSBuildExtensions 目录中添加即可
在这里插入图片描述

注:这个有个坑为自己的是有环境的但是不能用,如果不是跟图片一样需要按照查找现有去找到这个路径手动添加。

在这里插入图片描述

6.设置ALL_BUILD、yolov5、ZERO_CHECK

鼠标右键-》属性,设置Release、X64,不要设置Debug。

在这里插入图片描述

 7.设置preprocess.cu、yololayer.cu选择项类型为CUDA C/C++,这里我的没有yololayer.cu文件,可以右键Source Files点击添加现有项,找到yololayer.cu文件即可。

 在这里插入图片描述

 在这里插入图片描述

在这里插入图片描述

8.在yolov5项目鼠标右键-》分析和代码清理-》仅对yolov5运行代码分析。在这里插入图片描述 

在这里插入图片描述 如果显示这个那么就成功了,我的这里出现了一些报错,原因是没有头文件dirent.h,我去网上搜他们说windows下Vs不支持dirent.h文件,只有lunx才可以直接调用,这里也很简单,找到MSVC include  例如:C:\Program Files\Microsoft Visual Studio 9.0\VC\include 将这个头文件加入到里面就可以了。

9.在当前项目目录下查看build-》Release,生成yolov5.exe

在这里插入图片描述

10.将D:\Space\VisualStudioSpace\tensorrtx-yolov5-v6.0\yolov5\gen_wts.py放到yolov5-6.0目录下:在这里插入图片描述 

在这里插入图片描述

进入终端yolov5环境运行,生成yolov5s.wts,我的这个地方会显示没有一个zlibwapi.dll这个文件

我们找到虚拟环境里的这个文件放到当前目录下即可解决。

python gen_wts.py -w yolov5s.pt -o yolov5s.wts

 在这里插入图片描述

在这里插入图片描述

11.将生成的yolov5s.wts文件放入tensorrtx-yolov5-v6.0\yolov5\build\Release目录下:

运行命令,生成推理所需的yolov5s.engine文件

yolov5 -s yolov5s.wts yolov5s.engine s

12.创建images目录,用yolov5s.engine测试加速

在Release目录下创建images目录,放入yolov5-6.0的图片

在这里插入图片描述

yolov5 -d yolov5s.engine ./images

 效果图:

猜你喜欢

转载自blog.csdn.net/liyucong1/article/details/130412991