-
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模型加速部署
-
更多(點(diǎn)我進(jìn)去)…
ubuntu下yolov8 tensorrt模型加速部署【實(shí)戰(zhàn)】
TensorRT-Alpha基于tensorrt+cuda c++實(shí)現(xiàn)模型end2end的gpu加速,支持win10、linux,在2023年已經(jīng)更新模型:YOLOv8, YOLOv7, YOLOv6, YOLOv5, YOLOv4, YOLOv3, YOLOX, YOLOR,pphumanseg,u2net,EfficientDet。
倉(cāng)庫(kù)TensorRT-Alpha:https://github.com/FeiYull/TensorRT-Alpha
一、加速結(jié)果展示
1.1 性能速覽
??快速看看yolov8n 在移動(dòng)端RTX2070m(8G)的新能表現(xiàn):
model | video resolution | model input size | GPU Memory-Usage | GPU-Util |
---|---|---|---|---|
yolov8n | 1920x1080 | 8x3x640x640 | 1093MiB/7982MiB | 14% |
下圖是yolov8n的運(yùn)行時(shí)間開(kāi)銷,單位是ms:
更多TensorRT-Alpha測(cè)試錄像在B站視頻:
B站:YOLOv8n
B站:YOLOv8s
1.2精度對(duì)齊
下面是左邊是python框架推理結(jié)果,右邊是TensorRT-Alpha推理結(jié)果。
YOLOv4 YOLOv3 YOLOR YOLOX略。
二、Ubuntu18.04環(huán)境配置
如果您對(duì)tensorrt不是很熟悉,請(qǐng)務(wù)必保持下面庫(kù)版本一致。
請(qǐng)注意: Linux系統(tǒng)安裝以下庫(kù),務(wù)必去進(jìn)入系統(tǒng)bios下,關(guān)閉安全啟動(dòng)(設(shè)置 secure boot 為 disable)
2.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
2.2 安裝Nvidia相關(guān)庫(kù)
注:Nvidia相關(guān)網(wǎng)站需要注冊(cè)賬號(hào)。
2.2.1 安裝Nvidia顯卡驅(qū)動(dòng)
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
2.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)頁(yè)你能看到下面安裝命令,我這里已經(jīng)拷貝下來(lái):
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的安裝過(guò)程中,需要你在bash窗口手動(dòng)作一些選擇,這里選擇如下:
- select:[continue] -> [accept] -> 接著按下回車鍵取消Driver和465.19.01這個(gè)選項(xiàng),如下圖(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)境變量和驗(yà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>
2.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)
- 你將會(huì)下載這個(gè)壓縮包: “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*
2.2.4 下載 tensorrt8.4.2.4
本教程中,tensorrt只需要下載\、解壓即可,不需要安裝。
- 進(jìn)入網(wǎng)站:
https://developer.nvidia.cn/nvidia-tensorrt-8x-download
網(wǎng)站更新2023.12:https://developer.nvidia.com/nvidia-tensorrt-8x-download
(順便,法克 Nvidia) - 把這個(gè)打勾: 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
- 你將會(huì)下載這個(gè)壓縮包: “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
# 快速驗(yàn)證一下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模型的時(shí)候也需要執(zhí)行下面第一行命令
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xxx/temp/TensorRT-8.4.2.4/lib
./sample_mnist
bash窗口打印類似如下圖的手寫(xiě)數(shù)字識(shí)別表明cuda+cudnn+tensorrt安裝正常
2.2.5 下載倉(cāng)庫(kù)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)
三、YOLOv8模型部署
3.1 獲取YOLOv8onnx文件
直接在網(wǎng)盤(pán)下載 weiyun or google driver 或者使用如下命令導(dǎo)出onnx:
# ?? yolov8 官方倉(cāng)庫(kù): https://github.com/ultralytics/ultralytics
# ?? yolov8 官方教程: https://docs.ultralytics.com/quickstart/
# ??TensorRT-Alpha will be updated synchronously as soon as possible!
# 安裝 yolov8
conda create -n yolov8 python==3.8 -y
conda activate yolov8
pip install ultralytics==8.0.5
pip install onnx==1.12.0
# 下載官方權(quán)重(".pt" file)
https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt
https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8s.pt
https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8m.pt
https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8l.pt
https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x.pt
https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8x6.pt
導(dǎo)出 onnx:
# 640
yolo mode=export model=yolov8n.pt format=onnx dynamic=True opset=12 #simplify=True
yolo mode=export model=yolov8s.pt format=onnx dynamic=True opset=12 #simplify=True
yolo mode=export model=yolov8m.pt format=onnx dynamic=True opset=12 #simplify=True
yolo mode=export model=yolov8l.pt format=onnx dynamic=True opset=12 #simplify=True
yolo mode=export model=yolov8x.pt format=onnx dynamic=True opset=12 #simplify=True
# 1280
yolo mode=export model=yolov8x6.pt format=onnx dynamic=True opset=12 #simplify=True
新增更新:
如何使用代碼導(dǎo)出onnx文件。在yolov8官方源碼目錄下新建my_export.py文件,如下代碼:
yaml是官方提供的配置文件,如果是自己訓(xùn)練的模型,那就設(shè)置為自定義yaml文件即可。
from ultralytics import YOLO
# Load a model
model = YOLO('ultralytics/cfg/models/v8/yolov8.yaml')
model = YOLO('yolov8n.pt') # load an official model
# Export the model
model.export(format='onnx', dynamic=True, opset=12) # 第2、3個(gè)參數(shù)禁止修改
3.2 編譯 onnx
# 把你的onnx文件放到這個(gè)路徑:tensorrt-alpha/data/yolov8
cd tensorrt-alpha/data/yolov8
# 請(qǐng)把LD_LIBRARY_PATH:換成您自己的路徑。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/TensorRT-8.4.2.4/lib
# 640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov8n.onnx --saveEngine=yolov8n.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov8s.onnx --saveEngine=yolov8s.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov8m.onnx --saveEngine=yolov8m.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov8l.onnx --saveEngine=yolov8l.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov8x.onnx --saveEngine=yolov8x.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
# 1280
../../../../TensorRT-8.4.2.4/bin/trtexec --onnx=yolov8x6.onnx --saveEngine=yolov8x6.trt --buildOnly --minShapes=images:1x3x1280x1280 --optShapes=images:4x3x1280x1280 --maxShapes=images:8x3x1280x1280
你將會(huì)的到例如:yolov8n.trt、yolov8s.trt、yolov8m.trt等文件。
3.3 編譯運(yùn)行
git clone https://github.com/FeiYull/tensorrt-alpha
cd tensorrt-alpha/yolov8
mkdir build
cd build
cmake ..
make -j10
# 注: 效果圖默認(rèn)保存在路徑 tensorrt-alpha/yolov8/build
# 下面參數(shù)解釋
# --show 表示可視化結(jié)果
# --savePath 表示保存,默認(rèn)保存在build目錄
# --savePath=../ 保存在上一級(jí)目錄
## 640
# 推理圖片
./app_yolov8 --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=1 --img=../../data/6406407.jpg --show --savePath
./app_yolov8 --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=4 --video=../../data/people.mp4 --show --savePath
# 推理視頻
./app_yolov8 --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=4 --video=../../data/people.mp4 --show --savePath=../
# 在線推理相機(jī)視頻
./app_yolov8 --model=../../data/yolov8/yolov8n.trt --size=640 --batch_size=2 --cam_id=0 --show
## 1280
# infer camera
./app_yolov8 --model=../../data/yolov8/yolov8x6.trt --size=1280 --batch_size=2 --cam_id=0 --show
yolov8 tensorrt cuda模型推理加速部署TensorRT-Alpha《ski facility》
yolov8 tensorrt cuda模型推理加速部署TensorRT-Alpha《NewYork-Stree》
yolov7 tensorrt cuda模型推理加速部署TensorRT-Alpha《Korea-Night》
四、如何部署自己訓(xùn)練的yolov8模型
未必避免文章太長(zhǎng),直接給出演示視頻:
yolov8 tensorrt 部署自己訓(xùn)練的模型文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-713518.html
五、參考
https://github.com/FeiYull/TensorRT-Alpha文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-713518.html
到了這里,關(guān)于linux下 yolov8 tensorrt模型部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!