Orin运行YoloV8-TensorRT
以下内容建立在Orin已经能正确运行YoloV8的情况下。
安装TensorRT
Jetpack已经安装好了TensorRT,在anaconda虚拟环境对应文件夹建立软连接即可(注意:“/root/anaconda3/envs/torch3.8/lib/python3.8/site-packages/”为你的anaconda以及所使用虚拟环境的具体位置,要根据实际情况进行修改!!!):
sudo ln -s /usr/lib/python3.8/dist-packages/tensorrt* /root/anaconda3/envs/torch3.8/lib/python3.8/site-packages/
在虚拟环境测试一下,运行如下指令, 若出现版本号,则成功::
python -c "import tensorrt;print(tensorrt.__version__)"
安装YoloV8-TensorRT
输入以下命令:
git clone https://github.com/triple-Mu/YOLOv8-TensorRT.git
cd YOLOv8-TensorRT
pip install -r requirements.txt
导出ONNX模型
ultralytics有导出onnx模型的API,准备yolov8权重文件,放置在export-det.py
同一目录下,输入以下命令,这一步尽量在PC端执行:
python3 export-det.py \
--weights best.pt \
--iou-thres 0.45 \
--conf-thres 0.25 \
--topk 100 \
--opset 11 \
--sim \
--input-shape 1 3 640 480 \
--device cuda:0
所有参数的描述
--weights
: yolov8权重文件。--iou-thres
:NMS的IOU阈值。--conf-thres
: NMS的置信阈值。--topk
: 检测框的最大数量。--opset
: ONNX opset版本, 默认为11。--sim
: 是否简化你的ONNX模型。--input-shape
:输入模型的形状,应该是 4 个维度。--device
: 您导出的 CUDA 设备引擎。
通过Trtexec工具导出Engine
YoloV8也提供了Engine导出脚本,但是推荐使用Trtexec,这一步必须在Orin上执行,执行时间较长,所以检查导出的ONNX满足推理要求:
# Using trtexec tools for export engine
/usr/src/tensorrt/bin/trtexec \
--onnx=best.onnx \
--saveEngine=best.engine
使用C++推理
YoloV8-TensorRT提供了demo,在目录csrc/jetson/detect
。根据需要修改 main.cpp
中的 CLASS_NAMES
和 COLORS
,然后编译
export root=${PWD}
cd src/jetson/detect
mkdir build
cmake ..
make
mv yolov8 ${root}
cd ${root}
使用:
# infer image
./yolov8 yolov8s.engine data/bus.jpg
# infer images
./yolov8 yolov8s.engine data
# infer video
./yolov8 yolov8s.engine data/test.mp4 # the video path