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下yolox 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并设置

二、yolox环境安装与onnx导出三、利用tensorrt编译onnx模型四、编译执行yolox-tensorrt工程五、结束语

ubuntu下yolox tensorrt模型部署

YOLOX是一种基于深度学习的目标检测算法,它的主要优点是速度快、精度高。相比其他目标检测算法,YOLOX在保持高精度的同时,能够实现更快的检测速度,这使得它在实际应用中具有很大的优势。YOLOX的创新点主要体现在两个方面:SimOTA和PANet。SimOTA是一种基于Transformer的目标检测算法,它通过引入自注意力机制来提高模型的表达能力,从而提高了检测精度。PANet是一种金字塔注意力网络,它能够在不同的尺度上对目标进行检测,从而提高了模型的鲁棒性。在业内,YOLOX已经得到了广泛的认可和应用。例如,在Kaggle的车辆检测挑战赛中,YOLOX获得了第一名的好成绩。此外,YOLOX还在COCO数据集上取得了很好的性能表现。这些成果表明,YOLOX是一种非常优秀的目标检测算法,具有很高的实用价值和广泛的应用前景。从性能方面来看,YOLOX在速度和精度上都表现出色。在速度方面,YOLOX比其他一些主流的目标检测算法要快很多,这使得它在实时场景下的应用具有很大的优势。在精度方面,YOLOX与其他一些高精度的目标检测算法相当甚至更好。这些优点使得YOLOX成为了一种非常受欢迎的目标检测算法。总之,YOLOX是一种非常优秀的目标检测算法,它具有速度快、精度高、创新性强等优点。在业内已经得到了广泛的认可和应用,并且在性能方面表现出色。未来,随着深度学习技术的不断发展和完善,相信YOLOX将会在更多的领域发挥出更大的作用。

本文提供yolox-tensorrt加速方法。 有源码!有源码!有源码! 下图右边是yolox部署之后,tensorrt部署效果,和python推理结果一致。

yolox : 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 cmake

sudo apt-get install libopencv-dev

# pkg-config --modversion opencv

1.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-smi

1.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.run

cuda的安装过程中,需要你在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 -V

bash窗口打印如下信息表示cuda11.3安装正常

nvcc: NVIDIA (R) Cuda compiler driver

Copyright (c) 2005-2021 NVIDIA Corporation

Built on Sun_Mar_21_19:15:46_PDT_2021

Cuda compilation tools, release 11.3, V11.3.58

Build cuda_11.3.r11.3/compiler.29745058_0

1.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 a+r /usr/local/cuda/include/cudnn.h

sudo chmod a+r /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 -zxvf TensorRT-8.4.2.4.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz

# 快速验证一下tensorrt+cuda+cudnn是否安装正常

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_mnist

bash窗口打印类似如下图的手写数字识别表明cuda+cudnn+tensorrt安装正常

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)

二、yolox环境安装与onnx导出

推理的时候是支持多batch推理的,本文以batch_size=1为例子,可以直接从网盘下载onnx文件[weiyun]:weiyun or google driver ,你也可以自己下载仓库,然后按照下面指令手动导出onnx文件:

# 下载yolox源码

git clone https://github.com/Megvii-BaseDetection/YOLOX

切换版本为yolox 0.3.0

git checkout 0.3.0

安装 yolox环境

pip install -r requirements.txt

用以下指令导出onnx模型文件,640表示模型的输入分辨率为:640X640,416同理表示:416X416。

# 640 for image

python tools/export_onnx.py --output-name=yolox_s.onnx --exp_file=exps/default/yolox_s.py --ckpt=yolox_s.pth --decode_in_inference --batch-size=1

python tools/export_onnx.py --output-name=yolox_m.onnx --exp_file=exps/default/yolox_m.py --ckpt=yolox_m.pth --decode_in_inference --batch-size=1

python tools/export_onnx.py --output-name=yolox_x.onnx --exp_file=exps/default/yolox_x.py --ckpt=yolox_x.pth --decode_in_inference --batch-size=1

python tools/export_onnx.py --output-name=yolox_s.onnx --exp_file=exps/default/yolox_s.py --ckpt=yolox_s.pth --decode_in_inference --batch-size=1

# 416 for image

python tools/export_onnx.py --output-name=yolox_nano.onnx --exp_file=exps/default/yolox_nano.py --ckpt=yolox_nano.pth --decode_in_inference --batch-size=1

python tools/export_onnx.py --output-name=yolox_tiny.onnx --exp_file=exps/default/yolox_tiny.py --ckpt=yolox_tiny.pth --decode_in_inference --batch-size=1

三、利用tensorrt编译onnx模型

将你的onnx模型放到这个路径:tensorrt-alpha/data/yolox

cd tensorrt-alpha/data/yolox

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/TensorRT-8.4.2.4/lib

编译onnx模型指令,640表示模型的输入分辨率为:640X640,416同理表示:416X416。注意:编译onnx格式的模型会得到例如xxxx.trt格式的文件,下文推理要用到。

# 640

../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolox_s.onnx --saveEngine=yolox_s.trt --buildOnly

../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolox_m.onnx --saveEngine=yolox_m.trt --buildOnly

../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolox_x.onnx --saveEngine=yolox_x.trt --buildOnly

# 416

../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolox_nano.onnx --saveEngine=yolox_nano.trt --buildOnly

../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolox_tiny.onnx --saveEngine=yolox_tiny.trt --buildOnly

四、编译执行yolox-tensorrt工程

使用命令行编译下代码

git clone https://github.com/FeiYull/tensorrt-alpha

cd tensorrt-alpha/yolox

mkdir build

cd build

cmake ..

make -j10

按照需求执行推理,支持推理一张图片、在线推理视频文件,或者在线从摄像头获取视频流并推理。

## 640

# infer image

./app_yolox --model=../../data/yolox/yolox_s.trt --size=640 --batch_size=1 --img=../../data/6406401.jpg --show --savePath=../

# infer video

./app_yolox --model=../../data/yolox/yolox_s.trt --size=640 --batch_size=1 --video=../../data/people.mp4 --show

# infer camera

./app_yolox --model=../../data/yolox/yolox_s.trt --size=640 --batch_size=1 --cam_id=0 --show

# 416

./app_yolox --model=../../data/yolox/yolox_nano.trt --size=416 --batch_size=1 --img=../../data/6406401.jpg --show --savePath

例如:以下是yolox推理视频流效果。

五、结束语

yolox的tensorrt部署到这里结束。都看到这里了,觉得可以请点赞收藏,有条件的去仓库点个star,仓库:https://github.com/FeiYull/tensorrt-alpha

相关链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。