当前位置: 首页 > news >正文

【jetson】yolo8+DeepStream测试

本文档记录了在 Jetson Orin Nano(JetPack 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# 克隆官方开源仓库(GitHub)gitclone 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-iE"onnx|torch|ultralytics"# 缺失则安装pip3installonnx ultralytics

遇到的问题:安装 ultralytics 后 numpy 被升级到 2.x,导致 PyTorch 2.8 无法运行。
解决

pip3install"numpy<2"--force-reinstall

3.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 版本并修改 Makefile

nvcc--version# 显示 12.6cd~/yolo_test/DeepStream-Yolo/nvdsinfer_custom_impl_YoloCUDA_VER=12.6make-j4

4.2 编译

makecleanmake-j4

编译成功后在nvdsinfer_custom_impl_Yolo/下生成libnvdsinfer_custom_impl_Yolo.so


五、配置文件修改

5.1 推理配置文件(YOLOv8 专用)

原始模板config_infer_primary_yoloV8.txt已存在。
只需修改 3 个关键项(其他保持原样):

[property] onnx-file=yolov8n.onnx network-mode=2 num-detected-classes=80
  • network-mode=2→ 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-file=config_infer_primary_yoloV8.txt

② 视频源(先用视频文件测试)

[source0] enable=1 type=2 uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4 num-sources=1 gpu-id=0 cudadec-memtype=0 [tests] file-loop=1 # 循环播放,避免窗口闪退

③ 显示 sink(根据环境选择)

[sink0] enable=1 type=2 # xvimagesink,X11 环境 sync=0 gpu-id=0 qos=0

若遇到 Wayland 或显示问题可改用:

  • type=5→ 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 1280x720@30fps。

7.2 修改主配置文件

[source0] enable=1 type=1 device=/dev/video0 camera-width=640 camera-height=480 camera-fps-n=30 camera-fps-d=1 num-sources=1 gpu-id=0 [streammux] live-source=1 width=640 height=480 [tests] file-loop=1 #可改为 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可查询摄像头原生支持分辨率、帧率、编码格式,保证配置参数与硬件能力匹配。
http://www.jsqmd.com/news/1208590/

相关文章:

  • 无需充值解锁全部人格解析,2026 十六型人格测试 TOP11 榜单实测整理 - 时讯资讯
  • 2026深圳钻石回收报价虚高到店压价?报价7天有效、不强制成交的门店推荐 - 融媒生活
  • 从零入门 Linux:从发展史到用户权限,一篇搭好完整认知框架
  • 警惕乱象!别再把印刷LOGO当成真正的Qi认证
  • 静安黄浦积家爱彼回收门店横向测评对比 - 讯息早知道
  • 5步掌握IINA:打造macOS专业级视频播放体验的完整指南
  • 2026年7月全国精选5款珠宝首饰零售SAAS小程序开发公司:0代码做小程序,含零代码SAAS、AI编程、源码定制
  • 2026年带全案设计的/服务好的/体验好的的顶奢家具展厅/高端家具展厅/进口家具展厅怎么选择 - 硬核推荐
  • 一件代发退款不同步怎么办?抖店买家退款与1688供货商退款解析 - 抖大侠
  • DDE-GoCode与其他桌面环境依赖包的终极对比分析:为什么选择正确的依赖包至关重要
  • 2026年北京售后服务好的/专业的的大平层橱柜定制/别墅橱柜定制/进口橱柜定制/顶奢橱柜定制怎么选择 - 硬核推荐
  • 从实验室到临床:药物递送材料定制领域的质量稳定性探索——以杭州新乔生物科技为例 - 品牌推荐大师
  • 批量作业零闪退,优质多任务稳定运行龙虾AI台式机推荐
  • 2026Q2:工程支撑领域实力厂家选择策略——深基坑与高支模专用钢管支撑,工程承重与施工安全的关键考量 - 甄选服务推荐
  • Navicat for Mac终极破解指南:3种方法实现永久免费试用
  • 抖店怎么自动回填物流单号?1688发货后的同步流程 - 抖大侠
  • Wireshark抓包实战:ATM与以太网帧结构对比与网络故障排查
  • Maya安装错误1625根源解析与Windows环境兼容性修复指南
  • 大模型实时进化框架:告别离线微调,实现越用越聪明的AI应用
  • 第一套人民币:每张钞票都是一部建国史诗
  • 嵌入式Linux C应用编程——GPIO
  • 1688供应商发货后,工具怎么找到原来的抖店订单?订单关联原理 - 抖大侠
  • 卡游重封盒识别指南:植物大战僵尸卡牌收藏防坑攻略
  • 2026山东郯城素法武术学校招生简章出炉,官方招生电话、小学初中职高学费全公示 - 全国文武学校招生
  • 智能体测开Day27
  • 风控评分卡模型原理与应用(七):模型转评分
  • 一文读懂Kimi K3核心基础知识
  • 长沙全区域 LV 回收,Neverfull 水桶包磨损款正规高价回收 - 讯息早知道
  • Win11Debloat:让你的Windows系统重获新生的5个关键优化维度
  • Ubuntu 18.04 WiFi驱动问题诊断与解决指南