ubuntu下yolov5 tensorrt模型部署
TensorRT系列之 Windows10下yolov8 tensorrt模型加速部署TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署TensorRT系列之 Linux下 yolox tensorrt模型加速部署TensorRT系列之 Linux下 u2net tensorrt模型加速部署更多点我进去…文章目录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 安装工具链和opencvsudoapt-getupdatesudoapt-getinstallbuild-essentialsudoapt-getinstallgitsudoapt-getinstallgdbsudoapt-getinstallcmakesudoapt-getinstalllibopencv-dev# pkg-config --modversion opencv1.2 安装Nvidia相关库注Nvidia相关网站需要注册账号。1.2.1 安装Nvidia显卡驱动ubuntu-drivers devicessudoadd-apt-repository ppa:graphics-drivers/ppasudoaptupdatesudoaptinstallnvidia-driver-470-server# for ubuntu18.04nvidia-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)]在网页你能看到下面安装命令我这里已经拷贝下来wgethttps://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.runsudoshcuda_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.3exportPATH/usr/local/cuda-11.3/bin${PATH::${PATH}}exportLD_LIBRARY_PATH/usr/local/cuda-11.3/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}}exportCUDA_HOME/usr/local/cuda-11.3刷新环境变量和验证source~/.bashrc nvcc-Vbash窗口打印如下信息表示cuda11.3安装正常nvcc: NVIDIA(R)Cuda compiler driverbrCopyright(c)2005-2021 NVIDIA CorporationbrBuilt on Sun_Mar_21_19:15:46_PDT_2021brCuda compilation tools, release11.3, V11.3.58brBuild 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-zxvfcudnn-11.3-linux-x64-v8.2.0.53.tgz将cudnn的头文件和lib拷贝到cuda11.3的安装目录下sudocpcuda/include/cudnn.h /usr/local/cuda/include/sudocpcuda/lib64/libcudnn* /usr/local/cuda/lib64/sudochmodar /usr/local/cuda/include/cudnn.hsudochmodar /usr/local/cuda/lib64/libcudnn*1.2.4 下载 tensorrt8.4.2.4本教程中tensorrt只需要下载\、解压即可不需要安装。进入网站https://developer.nvidia.com/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-zxvfTensorRT-8.4.2.4.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz# 快速验证一下tensorrtcudacudnn是否安装正常cdTensorRT-8.4.2.4/samples/sampleMNISTmakecd../../bin/导出tensorrt环境变量(it is important!)注将LD_LIBRARY_PATH:后面的路径换成你自己的后续编译onnx模型的时候也需要执行下面第一行命令exportLD_LIBRARY_PATH$LD_LIBRARY_PATH:/home/xxx/temp/TensorRT-8.4.2.4/lib ./sample_mnistbash窗口打印类似如下图的手写数字识别表明cudacudnntensorrt安装正常1.2.5 下载仓库TensorRT-Alpha并设置gitclone https://github.com/FeiYull/tensorrt-alphagitfetch origingitcheckout legacy设置您自己TensorRT根目录:gitclone https://github.com/FeiYull/tensorrt-alphagitfetch origingitcheckout legacycdtensorrt-alpha/cmakevimcommon.cmake# 在文件common.cmake中的第20行中设置成你自己的目录别和我设置一样的路径eg:# set(TensorRT_ROOT /root/TensorRT-8.4.2.4)二、从yolov5源码中导出onnx文件可以直接从网盘下载onnx文件[weiyun]:weiyun or google driver 你也可以自己下载仓库然后按照下面指令手动导出onnx文件:# 下载yolov5源码gitclone https://github.com/ultralytics/yolov5切换版本为yolov5.7.0gitcheckout v7.0安装 yolov5环境pipinstall-rrequirements.txt用以下指令导出onnx模型文件640表示模型的输入分辨率为640X640,1280同理表示1280X1280。建议使用640对应的小模型。# 640python 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# 1280python 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/yolov5cdtensorrt-alpha/data/yolov5exportLD_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工程使用命令行编译下代码gitclone https://github.com/FeiYull/tensorrt-alphagitfetch origingitcheckout legacycdtensorrt-alpha/yolov5mkdirbuildcdbuild 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/tree/legacy