TensorRT部署-Windows环境配置
建议安装2019版本,不然容易和cmake版本不匹配。
下载链接:https://visualstudio.microsoft.com/zh-hans/downloads/
注意:安装时可勾选“Python开发”和“C++开发”
首先要在设备管理器中查看你的显卡型号。打开设备管理器,在显示适配器下查看,如下RTX3050。
NVIDIA 驱动下载:https://www.nvidia.cn/Download/index.aspx?lang=cn
下载安装完成之后在cmd中输入执行
nvidia-smi
如果出现以下显卡信息,说明安装成功。
注:图中的 CUDA Version是当前Driver版本能支持的最高的CUDA版本,不是已经安装的版本
cuda下载地址:https://developer.nvidia.com/cuda-downloads?target_os=Windows
旧版本的CUDA地址:https://developer.nvidia.com/cuda-toolkit-archive
我的版本是11.6
查看cuda版本命令
nvcc --version
将cuda运行安装,建议默认路径,安装完成后设置环境变量,系统变量里增加CUDA_PATH和CUDA_PATH_V11_8两个环境变量。
cudnn下载地址:https://developer.nvidia.com/cudnn(记得先登录nvidia账号)
我的cuDNN版本是cuDNN v8.9.6,查看cuDNN方法如下
先进入C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include,查找include下的
cudnn_version.h文件。
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 9
#define CUDNN_PATCHLEVEL 6
里面的这个就代表是8.9.6版本
就版本下载地址:https://developer.nvidia.com/rdp/cudnn-archive
选第一个zip的就行。
安装cuDNN
复制cudnn文件
对于cudnn直接将其解开压缩包,然后需要将bin,include,lib中的文件复制粘贴到cuda的文件夹下
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6。
注意:对整个文件夹bin,include,lib选中后进行复制粘贴
下载地址:https://www.anaconda.com/
直接安装即可
安装好之后打开Anaconda Prompt,创建虚拟环境。
conda create -n mypytorch python=3.9
安装完成后激活环境
conda activate mypytorch
在所创建的mypytorch环境下安装pytorch, 执行命令
conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia
官网教程:https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html
下载安装包:https://developer.nvidia.com/tensorrt
如果要使用python接口的tensorrt,则需要安装pycuda。
先进入刚刚创建的虚拟环境,在mypytorch虚拟环境下执行:
pip install pycuda
测试TensorRT示例代码
d.将nvinfer.lib、nvinfer_plugin.lib、nvonnxparser.lib和nvparsers.lib加入链接器–>输入–>附加依赖项,再添加这个D:\TensorRT-8.6.1.6\lib*.lib
配置完成后,点击上面的生成->生成解决方案进行编译
下载地址:https://opencv.org/releases/
我下的是4.7,安装后记得配置系统环境变量,D:\opencv\build\x64\vc16\bin
下载tensorrtx https://download.csdn.net/download/m0_70420861/88754757spm=1001.2014.3001.5503
修改CMakeLists.txt,根据自己电脑上的软件位置和GPU架构做相应的修改。如下,改了opencv和Tensorrt的地址还有这个set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-std=c++11;-g;-G;-gencode;arch=compute_86;code=sm_86)架构,查一下自己的是不是86
cmake_minimum_required(VERSION 3.10)
project(yolov8)
add_definitions(-std=c++11)
add_definitions(-DAPI_EXPORTS)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Release)
#change to your own path
##################################################
set(OpenCV_DIR "D:/opencv/opencv/build")
set(TRT_DIR "D:/TensorRT/TensorRT-8.6.1.6")
##################################################
# 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_86;code=sm_86)
###########################################################################################
####
enable_language(CUDA) # add this line, then no need to set up cuda path in vs
####
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${TRT_DIR}/include)
include_directories(${TRT_DIR}/samples/common)
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/plugin)
link_directories(${TRT_DIR}/lib)
add_library(myplugins SHARED ${PROJECT_SOURCE_DIR}/plugin/yololayer.cu)
target_link_libraries(myplugins nvinfer cudart)
find_package(OpenCV)
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})
file(GLOB_RECURSE SRCS ${PROJECT_SOURCE_DIR}/src/*.cpp ${PROJECT_SOURCE_DIR}/src/*.cu)
add_executable(yolov8 ${PROJECT_SOURCE_DIR}/main.cpp ${SRCS})
target_link_libraries(yolov8 nvinfer)
target_link_libraries(yolov8 cudart)
target_link_libraries(yolov8 myplugins)
target_link_libraries(yolov8 ${OpenCV_LIBS})
安装cmake:https://cmake.org/
学习笔记–TensorRT部署-Windows环境配置