前言:最近几天一直在搞这个东西,现在跑通了,为了以后自己看和帮助他人,就记录一下。虽然是跑通了但是觉得怪怪的,感觉不是自己想要的效果,另外这个只能检测图片,不能摄像头实时监测(我暂时没找到方法)。另外我部署的这个可能是c++版本的。你可以先看一下整体的,在决定用不用我的方法。
第一,下载项目,我这里使用yolov5的第六个版本,你根据自己所需下载自己的。
GitHub - wang-xinyu/tensorrtx: Implementation of popular deep learning networks with TensorRT network definition APIImplementation of popular deep learning networks with TensorRT network definition API - wang-xinyu/tensorrtxhttps://github.com/wang-xinyu/tensorrtx
这里基本都是用的终端操作,需要进入虚拟环境中,建立build文件(以下为操作命令)
cd {tensorrtx}/yolov5/
mkdir build
cd build
第二,更改下面文件内容。
用以下内容替换。
cmake_minimum_required(VERSION 2.6)
project(yolov5)
#change to your own path
##################################################
set(OpenCV_DIR "D:\\ruanjian1\\opencv\\opencv\\build")
set(TRT_DIR "D:\\ruanjian1\\tensorrt\\TensorRT-8.5.3.1")
set(Dirent_INCLUDE_DIRS "D:\\ruanjian1\\tensorrt\\TensorRT-8.5.3.1\\include")
##################################################
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)
替换完成后需要更改opencv、tensorrt的安装路径,与上面对照着改以下的内容。
第三,运行cmake ..命令,我这个没有报错。(这个cmake命令可能提示未安装,你可以在虚拟环境中安装 pip install cmake也可以安装软件跟下面的博主一样操作)
windows下 使用VS2019部署yolov5使用TensorRT加速模型推理_vs2019 +tensorrt配置加载模型-CSDN博客文章浏览阅读1.3k次,点赞10次,收藏16次。yolov5s通过tensort,导出为dll文件,python、c++调用dll文件。1.项目环境软件安装,及其环境变量配置请参考上述人员的博客,必须基于yolov5(6.0版本),cuda和cudnn和TensorRT版本必须匹配,如有报错请考虑软件版本、环境变量是否匹配。下载地址下载地址下载地址下载地址下载地址下载地址下载地址下载地址。_vs2019 +tensorrt配置加载模型https://blog.csdn.net/liyucong1/article/details/130412991
其实,按照这位博主的步骤基本能把yolov5自带的yolov5s.pt跑通,
第四,我补充以下使用自己的模型部署时的操作,CLASS_NUM的个数就是自己要识别的数量。
修改完成后重新生成下,应该就可以了。
第五,目前进行摄像头实时监测未完成,希望有人完成,在评论区留下方法吧。