網(wǎng)站美工設(shè)計培訓(xùn)學(xué)校注冊網(wǎng)站流程
- TensorRT系列教程之 Windows10下yolov8 tensorrt模型加速部署
- TensorRT系列教程之 Linux下 yolov8 tensorrt模型加速部署
- TensorRT系列教程之 Linux下 yolov7 tensorrt模型加速部署
- TensorRT系列教程之 Linux下 yolov6 tensorrt模型加速部署
- TensorRT系列教程之 Linux下 yolov5 tensorrt模型加速部署
- TensorRT系列教程之 Linux下 yolox tensorrt模型加速部署
文章目錄
- ubuntu下yolov6 tensorrt模型部署
- 一、Ubuntu18.04環(huán)境配置
- 1.1 安裝工具鏈和opencv
- 1.2 安裝Nvidia相關(guān)庫
- 1.2.1 安裝Nvidia顯卡驅(qū)動
- 1.2.2 安裝 cuda11.3
- 1.2.3 安裝 cudnn8.2
- 1.2.4 下載 tensorrt8.4.2.4
- 1.2.5 下載倉庫TensorRT-Alpha并設(shè)置
- 二、從yolov6源碼中導(dǎo)出onnx文件
- 三、利用tensorrt編譯onnx模型
- 四、編譯執(zhí)行yolov6-tensorrt工程
- 五、結(jié)束語
ubuntu下yolov6 tensorrt模型部署
YOLOv6是一款由美團視覺智能部開發(fā)的目標(biāo)檢測框架,它包含了模型訓(xùn)練、推理及部署的全流程,適用于工業(yè)應(yīng)用場景。以下是關(guān)于YOLOv6的多方面介紹。
-
首先,在模型結(jié)構(gòu)方面,YOLOv6采用了更為精細(xì)的骨干網(wǎng)絡(luò)設(shè)計,例如使用輕量級網(wǎng)絡(luò)結(jié)構(gòu)TinyNet,相比于傳統(tǒng)的CNN網(wǎng)絡(luò),它在計算量和參數(shù)量上都得到了顯著減少,同時保持了良好的性能。
-
其次,在訓(xùn)練策略上,YOLOv6引入了分布式訓(xùn)練和多卡并行訓(xùn)練技術(shù),能夠高效利用計算資源進(jìn)行模型訓(xùn)練。此外,YOLOv6還采用了知識蒸餾等訓(xùn)練技巧,使得學(xué)生模型能夠從教師模型中學(xué)習(xí)到知識,從而提高了模型性能。
-
此外,YOLOv6在算法層面也有多項改進(jìn)和優(yōu)化。例如,它提出了SPP-O與Generalized-LSTM-O兩種創(chuàng)新結(jié)構(gòu),使得模型在特征提取和時空信息捕捉方面表現(xiàn)更加優(yōu)異。此外,YOLOv6還采用了混合損失函數(shù),將樣本權(quán)重的差異考慮到損失函數(shù)中,對于樣本權(quán)重的差異能夠進(jìn)行有效的學(xué)習(xí)。
-
最后,在應(yīng)用場景方面,YOLOv6廣泛應(yīng)用于多種業(yè)務(wù)場景中,例如視頻異常檢測、工業(yè)質(zhì)檢等。以工業(yè)質(zhì)檢為例,YOLOv6能夠高效準(zhǔn)確地檢測出生產(chǎn)線上的缺陷產(chǎn)品,從而提高了工業(yè)生產(chǎn)效率和質(zhì)量。
-
總之,YOLOv6這款目標(biāo)檢測框架具有高效、精準(zhǔn)、輕量化的優(yōu)點,它在模型結(jié)構(gòu)、訓(xùn)練策略、算法層面及應(yīng)用場景等方面都展現(xiàn)出優(yōu)秀的性能及創(chuàng)新點。
本文提供yolov6tensorrt加速方法。
有源碼!有源碼!有源碼! 不要慌,哈哈哈。
一、Ubuntu18.04環(huán)境配置
如果您對tensorrt不是很熟悉,請務(wù)必保持下面庫版本一致。
請注意: Linux系統(tǒng)安裝以下庫,務(wù)必去進(jìn)入系統(tǒng)bios下,關(guān)閉安全啟動(設(shè)置 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相關(guān)庫
注:Nvidia相關(guān)網(wǎng)站需要注冊賬號。
1.2.1 安裝Nvidia顯卡驅(qū)動
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
- 進(jìn)入鏈接: https://developer.nvidia.com/cuda-toolkit-archive
- 選擇:CUDA Toolkit 11.3.0(April 2021)
- 選擇:[Linux] -> [x86_64] -> [Ubuntu] -> [18.04] -> [runfile(local)]
在網(wǎng)頁你能看到下面安裝命令,我這里已經(jīng)拷貝下來:
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添加到環(huán)境變量:
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
刷新環(huán)境變量和驗證
source ~/.bashrc
nvcc -V
bash窗口打印如下信息表示cuda11.3安裝正常
nvcc: NVIDIA (R) Cuda compiler driver<br>
Copyright (c) 2005-2021 NVIDIA Corporation<br>
Built on Sun_Mar_21_19:15:46_PDT_2021<br>
Cuda compilation tools, release 11.3, V11.3.58<br>
Build cuda_11.3.r11.3/compiler.29745058_0<br>
1.2.3 安裝 cudnn8.2
- 進(jìn)入網(wǎng)站: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只需要下載\、解壓即可,不需要安裝。
- 進(jìn)入網(wǎng)站: 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
# 快速驗證一下tensorrt+cuda+cudnn是否安裝正常
cd TensorRT-8.4.2.4/samples/sampleMNIST
make
cd ../../bin/
導(dǎo)出tensorrt環(huán)境變量(it is important!),注:將LD_LIBRARY_PATH:后面的路徑換成你自己的!后續(xù)編譯onnx模型的時候也需要執(zhí)行下面第一行命令
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xxx/temp/TensorRT-8.4.2.4/lib
./sample_mnist
bash窗口打印類似如下圖的手寫數(shù)字識別表明cuda+cudnn+tensorrt安裝正常
1.2.5 下載倉庫TensorRT-Alpha并設(shè)置
git clone https://github.com/FeiYull/tensorrt-alpha
設(shè)置您自己TensorRT根目錄:
git clone https://github.com/FeiYull/tensorrt-alpha
cd tensorrt-alpha/cmake
vim common.cmake
# 在文件common.cmake中的第20行中,設(shè)置成你自己的目錄,別和我設(shè)置一樣的路徑eg:
# set(TensorRT_ROOT /root/TensorRT-8.4.2.4)
二、從yolov6源碼中導(dǎo)出onnx文件
可以直接從網(wǎng)盤下載onnx文件[weiyun]:weiyun or google driver ,你也可以自己下載倉庫,然后按照下面指令手動導(dǎo)出onnx文件:
# 下載yolov6源碼
git clone https://github.com/meituan/YOLOv6
切換版本為6.3.0
git checkout 0.3.0
安裝 yolov6環(huán)境
pip install -r requirements.txt
用以下指令導(dǎo)出onnx模型文件
# 640
python export.py --weights yolov7-tiny.pt --dynamic --grid
python export.py --weights yolov7.pt --dynamic --grid
python export.py --weights yolov7x.pt --dynamic --grid
# 1280
python export.py --weights yolov7-w6.pt --dynamic --grid --img-size 1280
三、利用tensorrt編譯onnx模型
將你的onnx模型放到這個路徑:tensorrt-alpha/data/yolov6
cd tensorrt-alpha/data/yolov6
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 --onnx=yolov6n.onnx --saveEngine=yolov6n.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov6s.onnx --saveEngine=yolov6s.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov6m.onnx --saveEngine=yolov6m.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov6l.onnx --saveEngine=yolov6l.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
# 1280
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov6n6.onnx --saveEngine=yolov6n6.trt --buildOnly --minShapes=images:1x3x1280x1280 --optShapes=images:4x3x1280x1280 --maxShapes=images:8x3x1280x1280
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov6s6.onnx --saveEngine=yolov6s6.trt --buildOnly --minShapes=images:1x3x1280x1280 --optShapes=images:4x3x1280x1280 --maxShapes=images:8x3x1280x1280
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov6m6.onnx --saveEngine=yolov6m6.trt --buildOnly --minShapes=images:1x3x1280x1280 --optShapes=images:4x3x1280x1280 --maxShapes=images:8x3x1280x1280
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov6l6.onnx --saveEngine=yolov6l6.trt --buildOnly --minShapes=images:1x3x1280x1280 --optShapes=images:4x3x1280x1280 --maxShapes=images:8x3x1280x1280
四、編譯執(zhí)行yolov6-tensorrt工程
使用命令行編譯下代碼
git clone https://github.com/FeiYull/tensorrt-alpha
cd tensorrt-alpha/yolov6
mkdir build
cd build
cmake ..
make -j10
按照需求執(zhí)行推理,支持推理一張圖片、在線推理視頻文件,或者在線從攝像頭獲取視頻流并推理。
## 640
# infer image
./app_yolov6 --model=../../data/yolov6/yolov6n.trt --size=640 --batch_size=1 --img=../../data/6406401.jpg --show --savePath=../
# infer video
./app_yolov6 --model=../../data/yolov6/yolov6n.trt --size=640 --batch_size=8 --video=../../data/people.mp4 --show # infer camera
./app_yolov6 --model=../../data/yolov6/yolov6n.trt --size=640 --batch_size=4 --cam_id=0 --show## 1280
# infer video
./app_yolov6 --model=../../data/yolov6/yolov6s6.trt --size=1280 --batch_size=8 --video=../../data/people.mp4 --savePath=../
例如:以下是yolov6推理視頻流效果。
五、結(jié)束語
都看到這里了,覺得可以請點贊收藏,有條件的去倉庫點個star,倉庫:https://github.com/FeiYull/tensorrt-alpha