当前位置:   article > 正文

YOLOv5+TensorRT+Win11(Python版)_python yolo5 +tensorrt

python yolo5 +tensorrt

快速上手YOLOv5

一、YOLOv5算法

1. 算法对比

(1)传统目标检测方法

在这里插入图片描述

(2)基于深度学习的目标检测算法

在这里插入图片描述

(2-1)Two-Stage(R-CNN/Fast R-CNN/Faster R-CNN)

Two-Stage:先产生候选区域,后对目标分类与位置精修,准确率高但速度较慢

在这里插入图片描述

在这里插入图片描述

(2-2)One-Stage(SSD/YOLO)

One-Stage:直接回归目标类别与位置,速度快但准确率较低

在这里插入图片描述

(2-3)One-Stage VS Two-Stage

在这里插入图片描述

在这里插入图片描述

YOLO v5s:模型小、推理时间短、准确率较高


二、环境配置

1. NVIDIA独立显卡

打开设备管理器查看是否拥有NVIDIA独立显卡:

在这里插入图片描述

查看NVIDIA独立显卡是否支持CUDA:

https://developer.nvidia.com/cuda-gpus

在这里插入图片描述


2. 环境要求

环境 版本 地址
Visual Studio Visual Studio 2019 版本 16.11 Community 点击下载
CMake cmake-3.24.0-rc2-windows-x86_64 点击下载
OpenCV OpenCV – 3.4.16 点击下载
Anaconda 64-Bit Graphical Installer (594 MB) 点击下载
CUDA Toolkit CUDA Toolkit 11.3.1 点击下载
cuDNN cuDNN v8.2.1 (June 7th, 2021), for CUDA 11.x 点击下载
TensorRT TensorRT 8.2 GA Update 4 for x86_64 Architecture 点击下载

3. 安装Visual Studio

安装Visual Studio 2019勾选C++桌面开发工具:

在这里插入图片描述


4. 安装Anaconda

添加系统环境变量:

在这里插入图片描述

测试:

在这里插入图片描述

换国内源:

新建.condarc文件保存以下代码,并替换C:\Users\XXX下的.condarc文件

channels:
  - defaults
show_channel_urls: true
default_channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

5. 安装CUDA Toolkit

选择自定义

在这里插入图片描述

全部安装

在这里插入图片描述

添加系统环境变量:

在这里插入图片描述

上述两项是安装完成Cuda后,已自动生成的环境变量的配置,我们需要自行添加的下述变量:

CUDA_BIN_PATH: %CUDA_PATH%\bin

CUDA_LIB_PATH: %CUDA_PATH%\lib\x64

CUDA_SDK_PATH: XXX\NVIDIA Corporation\CUDA Samples\v11.1

CUDA_SDK_BIN_PATH: %CUDA_SDK_PATH%\bin\win64

CUDA_SDK_LIB_PATH: %CUDA_SDK_PATH%\common\lib\x64

并在系统变量Path中,添加一下四个信息:

%CUDA_BIN_PATH%

%CUDA_LIB_PATH%

%CUDA_SDK_BIN_PATH%

%CUDA_SDK_LIB_PATH%

测试:

nvcc -V
  • 1

在这里插入图片描述


6. 安装cuDNN

复制XXX\cudnn-11.3-windows-x64-v8.2.1.32\cuda全部内容到XXX\NVIDIA GPU Computing Toolkit\CUDA\v11.3

在这里插入图片描述


7. 安装TensorRT

添加环境变量:

在这里插入图片描述

复制XXX\TensorRT-8.2.5.1\lib以下所有dll文件到XXX\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin下

在这里插入图片描述

安装XXXTensorRT\TensorRT-8.2.5.1\python目录下tensorrt-8.2.5.1-cp39-none-win_amd64.whl:

activate pytorch
pip install tensorrt-8.2.5.1-cp39-none-win_amd64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 1
  • 2

8. 安装OpenCV

添加环境变量:

在这里插入图片描述


9. 安装CMake

添加环境变量:

在这里插入图片描述


10. 安装Pytorch

https://pytorch.org/get-started/locally/

在这里插入图片描述

以管理员模式在命令行中运行:

conda create -n pytorch python=3.9
activate pytorch
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
  • 1
  • 2
  • 3

在这里插入图片描述

测试:

# cuda test
import torch
print(torch.__version__)
x = torch.Tensor([1.0])
xx = x.cuda()
print(xx)
print(torch.cuda.is_available())

# cudnn test
from torch.backends import cudnn
print(cudnn.is_acceptable(xx))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述


11. 安装YOLOv5必要依赖包

下载YOLOv5源代码:

在这里插入图片描述

在这里插入图片描述

进入XXX\yolov5-master目录执行:

activate pytorch
pip install -r requirements.txt
  • 1
  • 2

测试:

activate pytorch
python detect.py
  • 1
  • 2

运行结果保存在XXX\yolov5-master\runs\detect\exp下

在这里插入图片描述


12. YOLOv5使用TensorRT加速

下载YOLOv5 TensorRT加速版本:

https://github.com/wang-xinyu/tensorrtx

在这里插入图片描述

在这里插入图片描述

在XXX\tensorrtx下创建include文件夹,下载文件dirent.h放置在include文件夹中,
下载地址 https://github.com/tronkko/dirent/tree/master/include/dirent.h

在这里插入图片描述

修改XXX\tensorrtx\yolov5目录下CMakeLists.txt内容为(按自己的安装目录修改#1 #2 #3 #4):

cmake_minimum_required(VERSION 2.6)

project(yolov5)  
set(OpenCV_DIR "D:/Environment/OpenCV/opencv/build")    ##1
set(OpenCV_INCLUDE_DIRS "D:/Environment/OpenCV/opencv/build/include")    ##2
set(OpenCV_LIBS "D:\\Environment\\OpenCV\\opencv\\build\\x64\\vc14\\lib\\opencv_world3416.lib")    ##3
set(TRT_DIR "D:/Environment/TensorRT/TensorRT-8.2.5.1")    ##4

add_definitions(-DAPI_EXPORTS)
add_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)
include_directories(${TRT_DIR}\\include)
include_directories(D:\\Environment\\TensorRT\\tensorrtx\\include)    ##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)
link_directories(${OpenCV_DIR}\\x64\\vc14\\lib) #8

add_executable(yolov5 ${PROJECT_SOURCE_DIR}/calibrator.cpp yolov5 ${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)
target_link_libraries(yolov5 "nvinfer" "nvinfer_plugin") #9
target_link_libraries(yolov5 ${OpenCV_LIBS})        #10
target_link_libraries(yolov5 ${CUDA_LIBRARIES}) #11
target_link_libraries(yolov5 Threads::Threads) #12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68

在XXX\tensorrtx\yolov5目录下新建build文件夹

在这里插入图片描述

运行XXX\CMake\bin\cmake-gui.exe配置:

Where is the source code: XXX\tensorrtx\yolov5

Where to build the binaries: XXX\tensorrtx\yolov5\build

在这里插入图片描述

依次执行Configure -> Generate -> Open Project

下载YOLOv5 TensorRT Win10加速版本:

https://github.com/Monday-Leo/Yolov5_Tensorrt_Win10

在这里插入图片描述

复制XXX\Yolov5_Tensorrt_Win10-master\yolov5.cpp文件内容,替换XXX\tensorrtx\yolov5\yolov5.cpp内

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/129817
推荐阅读
相关标签
  

闽ICP备14008679号