【jetson】yolo8+DeepStream测试 本文档记录了在 Jetson Orin NanoJetPack 6.0 DeepStream 7.x平台基于 DeepStream-Yolo 开源仓库完成 YOLOv8n 模型从 PyTorch 到 ONNX 再到 TensorRT FP16 引擎的转换、自定义推理插件编译与配置调优的全流程一、基础环境硬件Jetson Orin Nano系统JetPack 6.0 (CUDA 12.6)DeepStream 7.1.0运行环境Jetson 设备连接显示器在本地执行二、获取 DeepStream-Yolo 官方仓库操作mkdir~/yolo_testcd~/yolo_test# 克隆官方开源仓库GitHubgitclone https://github.com/marcoslucianops/DeepStream-Yolo.gitcdDeepStream-Yolo三、模型转换YOLOv8n.pt → ONNX → TensorRT 引擎3.1 准备 YOLOv8 模型将yolov8n.pt放到~/yolo_test/下可从 Ultralytics 下载。3.2 安装依赖# 检查已安装的包pip3 list|grep-iEonnx|torch|ultralytics# 缺失则安装pip3installonnx ultralytics遇到的问题安装 ultralytics 后 numpy 被升级到 2.x导致 PyTorch 2.8 无法运行。解决pip3installnumpy2--force-reinstall3.3 运行转换脚本cd~/yolo_test/DeepStream-Yolo/utils python3 export_yoloV8.py-w../../yolov8n.pt在 yolov8n.pt 同级目录下生成文件yolov8n.onnx— ONNX 模型labels.txt— 类别标签COCO 80 类将上面两个文件到项目目录中mv../../yolov8n.onnx../mv../../labels.txt../四、编译自定义 YOLO 插件4.1 确认 CUDA 版本并修改 Makefilenvcc--version# 显示 12.6cd~/yolo_test/DeepStream-Yolo/nvdsinfer_custom_impl_YoloCUDA_VER12.6make-j44.2 编译makecleanmake-j4编译成功后在nvdsinfer_custom_impl_Yolo/下生成libnvdsinfer_custom_impl_Yolo.so。五、配置文件修改5.1 推理配置文件YOLOv8 专用原始模板config_infer_primary_yoloV8.txt已存在。只需修改 3 个关键项其他保持原样[property] onnx-fileyolov8n.onnx network-mode2 num-detected-classes80network-mode2→ FP16 加速引擎文件名可改为model_b1_gpu0_fp16.engine与 FP16 匹配非必须但推荐5.2 主应用配置文件先备份原文件cd~/yolo_test/DeepStream-Yolocpdeepstream_app_config.txt deepstream_app_config.txt.bak编辑deepstream_app_config.txt关键修改① 推理部分[primary-gie] config-fileconfig_infer_primary_yoloV8.txt② 视频源先用视频文件测试[source0] enable1 type2 urifile:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 num-sources1 gpu-id0 cudadec-memtype0 [tests] file-loop1 # 循环播放避免窗口闪退③ 显示 sink根据环境选择[sink0] enable1 type2 # xvimagesinkX11 环境 sync0 gpu-id0 qos0若遇到 Wayland 或显示问题可改用type5→ fakesink无画面测试实际运行报错原因未知六、运行测试6.1 确保 X11 显示可用exportDISPLAY:1# 根据实际环境gst-launch-1.0 videotestsrc!xvimagesink# 验证6.2 首次运行构建引擎cd~/yolo_test/DeepStream-Yolo deepstream-app-cdeepstream_app_config.txt过程若引擎文件model_b1_gpu0_fp16.engine不存在会自动构建 TensorRT 引擎耗时约 6 分钟仅一次。构建成功后引擎文件保存于项目根目录。引擎文件名不匹配会导致每次重建 → 把config_infer_primary_yoloV8.txt中的model-engine-file改为model_b1_gpu0_fp16.engine。6.3 验证推理效果日志输出serialize cuda engine to file: .../model_b1_gpu0_fp16.engine successfully Load new model:...config_infer_primary_yoloV8.txt sucessfully PERF: 60.10 (58.77)画面视频窗口带检测框循环播放。七、切换到 USB 摄像头实时检测7.1 查看摄像头设备ls/dev/video* v4l2-ctl --list-devices v4l2-ctl-d/dev/video0 --list-formats-ext本例为 USB 摄像头设备节点/dev/video0支持 MJPG 1280x72030fps。7.2 修改主配置文件[source0] enable1 type1 device/dev/video0 camera-width640 camera-height480 camera-fps-n30 camera-fps-d1 num-sources1 gpu-id0 [streammux] live-source1 width640 height480 [tests] file-loop1 #可改为 0实时摄像头不需要循环7.3 运行实时检测deepstream-app-cdeepstream_app_config.txt预期窗口显示摄像头实时画面带 YOLOv8 检测框帧率约 30 fps受摄像头帧率限制。![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4de0791ec0d442c388805076914a6388.png#pic_center)八、最终文件结构关键文件~/yolo_test/ ├── yolov8n.pt ├── DeepStream-Yolo/ │ ├── yolov8n.onnx │ ├── labels.txt │ ├── model_b1_gpu0_fp16.engine (自动生成) │ ├── config_infer_primary_yoloV8.txt │ ├── deepstream_app_config.txt │ ├── nvdsinfer_custom_impl_Yolo/ │ │ └── libnvdsinfer_custom_impl_Yolo.so │ └── ...九、总结核心步骤模型转换 → 编译插件 → 修改配置 → 运行。引擎首次构建需数分钟后续启动仅加载约 5-10 秒。通过v4l2-ctl -d /dev/video0 --list-formats-ext可查询摄像头原生支持分辨率、帧率、编码格式保证配置参数与硬件能力匹配。