为代理网站做网站,做网站申请完域名后做什么,pc网站自动转换wap网站,中国建设银行官网站金银纪念币文章目录 ubuntu下yolov5 tensorrt模型部署一、Ubuntu18.04环境配置1.1 安装工具链和opencv1.2 安装Nvidia相关库1.2.1 安装Nvidia显卡驱动1.2.2 安装 cuda11.31.2.3 安装 cudnn8.21.2.4 下载 tensorrt8.4.2.41.2.5 下载仓库TensorRT-Alpha并设置 二、从yolov5源码中导出onnx文… 文章目录 ubuntu下yolov5 tensorrt模型部署一、Ubuntu18.04环境配置1.1 安装工具链和opencv1.2 安装Nvidia相关库1.2.1 安装Nvidia显卡驱动1.2.2 安装 cuda11.31.2.3 安装 cudnn8.21.2.4 下载 tensorrt8.4.2.41.2.5 下载仓库TensorRT-Alpha并设置 二、从yolov5源码中导出onnx文件三、利用tensorrt编译onnx模型四、编译执行yolov5-tensorrt工程五、结束语 ubuntu下yolov5 tensorrt模型部署
YOLOv5的创新性相比于之前的目标检测算法YOLOv5在多个方面进行了创新和优化。首先它在网络结构上采用了轻量级的设计使用了CSPDarknet53作为骨干网络减少了计算量和参数量提高了算法的实时性和效率。其次YOLOv5引入了蒸馏学习策略使用教师模型指导学生模型进行学习提高了模型的性能和泛化能力。此外YOLOv5还采用了多尺度特征融合策略使得模型能够更好地捕捉到不同尺度的目标特征。另外YOLOv5还改进了损失函数的设计采用GIOU和COCO等损失函数提高了模型的准确性。YOLOv5对工业界的影响YOLOv5的推出对工业界产生了广泛的影响。首先它被广泛应用于智能驾驶、安防监控、机器人视觉等场景中为工业界提供了更准确、高效和可靠的目标检测工具。其次YOLOv5的推出加速了目标检测技术的发展和应用促进了计算机视觉领域的进步。此外YOLOv5的开源也为工业界提供了更多的参考和选择推动了深度学习算法的发展和完善。YOLOv5的优点YOLOv5具有多个优点。首先它具有高效性能够在短时间内处理大量的图像和视频数据。其次YOLOv5具有准确性能够准确地检测到目标物体并对其进行分类和定位。此外YOLOv5还具有实时性能够实时地输出检测结果和处理速度使得它能够适用于各种实际应用场景中。另外YOLOv5还具有易用性其简单的接口和易懂的文档使得开发者可以轻松上手并开发出高质量的目标检测程序。
本文提供yolov5-tensorrt加速方法。 有源码有源码有源码 不要慌哈哈哈。 下图右边是yolov5s部署之后tensorrt部署效果和python推理结果一致。
yolov5s : Offical( left ) vs Ours( right ) 一、Ubuntu18.04环境配置
如果您对tensorrt不是很熟悉请务必保持下面库版本一致。 请注意: Linux系统安装以下库务必去进入系统bios下关闭安全启动(设置 secure boot 为 disable)
1.1 安装工具链和opencv
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install git
sudo apt-get install gdb
sudo apt-get install cmakesudo apt-get install libopencv-dev
# pkg-config --modversion opencv1.2 安装Nvidia相关库
注Nvidia相关网站需要注册账号。
1.2.1 安装Nvidia显卡驱动
ubuntu-drivers devices
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-470-server # for ubuntu18.04
nvidia-smi1.2.2 安装 cuda11.3
进入链接: https://developer.nvidia.com/cuda-toolkit-archive选择CUDA Toolkit 11.3.0(April 2021)选择[Linux] - [x86_64] - [Ubuntu] - [18.04] - [runfile(local)] 在网页你能看到下面安装命令我这里已经拷贝下来
wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run
sudo sh cuda_11.3.0_465.19.01_linux.runcuda的安装过程中需要你在bash窗口手动作一些选择这里选择如下
select[continue] - [accept] - 接着按下回车键取消Driver和465.19.01这个选项如下图(it is important!) - [Install] bash窗口提示如下表示安装完成
#
# Summary
##Driver: Not Selected
#Toolkit: Installed in /usr/local/cuda-11.3/
#......把cuda添加到环境变量
vim ~/.bashrc把下面拷贝到 .bashrc里面
# cuda v11.3
export PATH/usr/local/cuda-11.3/bin${PATH::${PATH}}
export LD_LIBRARY_PATH/usr/local/cuda-11.3/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}}
export CUDA_HOME/usr/local/cuda-11.3刷新环境变量和验证
source ~/.bashrc
nvcc -Vbash窗口打印如下信息表示cuda11.3安装正常
nvcc: NVIDIA (R) Cuda compiler driverbr
Copyright (c) 2005-2021 NVIDIA Corporationbr
Built on Sun_Mar_21_19:15:46_PDT_2021br
Cuda compilation tools, release 11.3, V11.3.58br
Build cuda_11.3.r11.3/compiler.29745058_0br1.2.3 安装 cudnn8.2
进入网站https://developer.nvidia.com/rdp/cudnn-archive选择 Download cuDNN v8.2.0 (April 23rd, 2021), for CUDA 11.x选择 cuDNN Library for Linux (x86_64)你将会下载这个压缩包: “cudnn-11.3-linux-x64-v8.2.0.53.tgz”
# 解压
tar -zxvf cudnn-11.3-linux-x64-v8.2.0.53.tgz将cudnn的头文件和lib拷贝到cuda11.3的安装目录下
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod ar /usr/local/cuda/include/cudnn.h
sudo chmod ar /usr/local/cuda/lib64/libcudnn*1.2.4 下载 tensorrt8.4.2.4
本教程中tensorrt只需要下载\、解压即可不需要安装。
进入网站 https://developer.nvidia.cn/nvidia-tensorrt-8x-download把这个打勾 I Agree To the Terms of the NVIDIA TensorRT License Agreement选择: TensorRT 8.4 GA Update 1选择: TensorRT 8.4 GA Update 1 for Linux x86_64 and CUDA 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6 and 11.7 TAR Package你将会下载这个压缩包: “TensorRT-8.4.2.4.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz”
# 解压
tar -zxvf TensorRT-8.4.2.4.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz
# 快速验证一下tensorrtcudacudnn是否安装正常
cd TensorRT-8.4.2.4/samples/sampleMNIST
make
cd ../../bin/导出tensorrt环境变量(it is important!)注将LD_LIBRARY_PATH:后面的路径换成你自己的后续编译onnx模型的时候也需要执行下面第一行命令
export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/home/xxx/temp/TensorRT-8.4.2.4/lib
./sample_mnistbash窗口打印类似如下图的手写数字识别表明cudacudnntensorrt安装正常
1.2.5 下载仓库TensorRT-Alpha并设置
git clone https://github.com/FeiYull/tensorrt-alpha设置您自己TensorRT根目录:
git clone https://github.com/FeiYull/tensorrt-alpha
cd tensorrt-alpha/cmake
vim common.cmake
# 在文件common.cmake中的第20行中设置成你自己的目录别和我设置一样的路径eg:
# set(TensorRT_ROOT /root/TensorRT-8.4.2.4)二、从yolov5源码中导出onnx文件
可以直接从网盘下载onnx文件[weiyun]:weiyun or google driver 你也可以自己下载仓库然后按照下面指令手动导出onnx文件:
# 下载yolov5源码
git clone https://github.com/ultralytics/yolov5切换版本为yolov5.7.0
git checkout v7.0安装 yolov5环境
pip install -r requirements.txt用以下指令导出onnx模型文件640表示模型的输入分辨率为640X640,1280同理表示1280X1280。建议使用640对应的小模型。
# 640
python export.py --weightsyolov5n.pt --dynamic --includeonnx
python export.py --weightsyolov5s.pt --dynamic --includeonnx
python export.py --weightsyolov5m.pt --dynamic --includeonnx
python export.py --weightsyolov5l.pt --dynamic --includeonnx
python export.py --weightsyolov5x.pt --dynamic --includeonnx
# 1280
python export.py --weightsyolov5n6.pt --dynamic --includeonnx
python export.py --weightsyolov5s6.pt --dynamic --includeonnx
python export.py --weightsyolov5m6.pt --dynamic --includeonnx
python export.py --weightsyolov5l6.pt --dynamic --includeonnx
python export.py --weightsyolov5x6.pt --dynamic --includeonnx
三、利用tensorrt编译onnx模型
将你的onnx模型放到这个路径:tensorrt-alpha/data/yolov5
cd tensorrt-alpha/data/yolov5
export LD_LIBRARY_PATH$LD_LIBRARY_PATH:~/TensorRT-8.4.2.4/lib编译onnx模型指令640表示模型的输入分辨率为640X640,1280同理表示1280X1280。注意编译onnx格式的模型会得到例如xxxx.trt格式的文件下文推理要用到。
# 640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnxyolov5n.onnx --saveEngineyolov5n.trt --buildOnly --minShapesimages:1x3x640x640 --optShapesimages:4x3x640x640 --maxShapesimages:8x3x640x640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnxyolov5s.onnx --saveEngineyolov5s.trt --buildOnly --minShapesimages:1x3x640x640 --optShapesimages:4x3x640x640 --maxShapesimages:8x3x640x640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnxyolov5m.onnx --saveEngineyolov5m.trt --buildOnly --minShapesimages:1x3x640x640 --optShapesimages:4x3x640x640 --maxShapesimages:8x3x640x640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnxyolov5l.onnx --saveEngineyolov5l.trt --buildOnly --minShapesimages:1x3x640x640 --optShapesimages:4x3x640x640 --maxShapesimages:8x3x640x640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnxyolov5x.onnx --saveEngineyolov5x.trt --buildOnly --minShapesimages:1x3x640x640 --optShapesimages:4x3x640x640 --maxShapesimages:8x3x640x640
# 1280
../../../../TensorRT-8.4.2.4/bin/trtexec --onnxyolov5n6.onnx --saveEngineyolov5n6.trt --buildOnly --minShapesimages:1x3x1280x1280 --optShapesimages:4x3x1280x1280 --maxShapesimages:8x3x1280x1280
../../../../TensorRT-8.4.2.4/bin/trtexec --onnxyolov5s6.onnx --saveEngineyolov5s6.trt --buildOnly --minShapesimages:1x3x1280x1280 --optShapesimages:4x3x1280x1280 --maxShapesimages:8x3x1280x1280
四、编译执行yolov5-tensorrt工程
使用命令行编译下代码
git clone https://github.com/FeiYull/tensorrt-alpha
cd tensorrt-alpha/yolov5
mkdir build
cd build
cmake ..
make -j10按照需求执行推理支持推理一张图片、在线推理视频文件或者在线从摄像头获取视频流并推理。
# 640
# infer an image
./app_yolov5 --versionv570 --model../../data/yolov5/yolov5n.trt --size640 --batch_size1 --img../../data/6406401.jpg --show --savePath../
# infer video
./app_yolov5 --versionv570 --model../../data/yolov5/yolov5n.trt --size640 --batch_size8 --video../../data/people.mp4 --show
# infer web camera
./app_yolov5 --versionv570 --model../../data/yolov5/yolov5n.trt --size640 --batch_size2 --show --cam_id0# 1280
./app_yolov5 --versionv570 --model../../data/yolov5/yolov5s6.trt --size1280 --batch_size1 --img../../data/6406401.jpg --show --savePath
例如以下是yolov5推理视频流效果。
五、结束语
都看到这里了觉得可以请点赞收藏有条件的去仓库点个star仓库https://github.com/FeiYull/tensorrt-alpha