DeepStream-Yolo项目中RTMDet模型部署指南

DeepStream-Yolo项目中RTMDet模型部署指南

DeepStream-Yolo NVIDIA DeepStream SDK 6.3 / 6.2 / 6.1.1 / 6.1 / 6.0.1 / 6.0 / 5.1 implementation for YOLO models DeepStream-Yolo 项目地址: https://gitcode.com/gh_mirrors/de/DeepStream-Yolo

前言

本文将详细介绍如何在DeepStream-Yolo项目中部署RTMDet目标检测模型。RTMDet是MMYOLO系列中的高效检测模型,具有优秀的检测精度和推理速度。通过本文,您将学习到从模型转换到最终部署的完整流程。

环境准备

在开始之前,请确保您已准备好以下环境:

  1. Python虚拟环境(推荐使用)
  2. 已安装DeepStream SDK
  3. 基本的CUDA和cuDNN环境

模型转换步骤

1. 获取MMYOLO代码库

首先需要获取MMYOLO的代码库,这是RTMDet模型的官方实现:

git clone https://github.com/open-mmlab/mmyolo.git
cd mmyolo

2. 安装依赖项

安装必要的Python依赖项:

pip3 install openmim
mim install "mmengine>=0.6.0"
mim install "mmcv>=2.0.0rc4,<2.1.0"
mim install "mmdet>=3.0.0,<4.0.0"
pip3 install -r requirements/albu.txt
mim install -v -e .
pip3 install onnx onnxslim onnxruntime

3. 准备转换脚本

从DeepStream-Yolo项目中复制转换脚本export_rtmdet.py到MMYOLO目录下。

4. 下载预训练模型

下载所需的RTMDet模型权重文件,例如RTMDet-s模型:

wget https://download.openmmlab.com/mmrazor/v1/rtmdet_distillation/kd_s_rtmdet_m_neck_300e_coco/kd_s_rtmdet_m_neck_300e_coco_20230220_140647-446ff003.pth

5. 执行模型转换

使用以下命令将PyTorch模型转换为ONNX格式:

python3 export_rtmdet.py -w kd_s_rtmdet_m_neck_300e_coco_20230220_140647-446ff003.pth -c configs/rtmdet/distillation/kd_s_rtmdet_m_neck_300e_coco.py --dynamic

关键参数说明

  • -s/--size:指定输入尺寸,默认640
  • --simplify:简化ONNX模型(DeepStream 6.0+)
  • --dynamic:使用动态批处理(DeepStream 6.1+)
  • --batch:指定静态批处理大小
  • --opset:指定ONNX算子集版本(DeepStream 5.1需使用12或更低)

编译自定义库

1. 设置CUDA版本

根据您的DeepStream版本设置正确的CUDA版本:

export CUDA_VER=XY.Z

常见版本对应关系:

  • x86平台:

    • DeepStream 7.1: 12.6
    • DeepStream 7.0/6.4: 12.2
    • DeepStream 6.3: 12.1
    • DeepStream 6.2: 11.8
    • DeepStream 6.1.1: 11.7
    • DeepStream 6.1: 11.6
    • DeepStream 6.0.1/6.0: 11.4
    • DeepStream 5.1: 11.1
  • Jetson平台:

    • DeepStream 7.1: 12.6
    • DeepStream 7.0/6.4: 12.2
    • DeepStream 6.3/6.2/6.1.1/6.1: 11.4
    • DeepStream 6.0.1/6.0/5.1: 10.2

2. 编译库文件

make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo

配置文件调整

1. 修改推理配置文件

编辑config_infer_primary_rtmdet.txt文件,关键配置项包括:

[property]
onnx-file=kd_s_rtmdet_m_neck_300e_coco_20230220_140647-446ff003.pth.onnx
num-detected-classes=80
parse-bbox-func-name=NvDsInferParseYolo
maintain-aspect-ratio=1
symmetric-padding=1
model-color-format=1
net-scale-factor=0.0173520735727919486
offsets=103.53;116.28;123.675

配置说明

  1. maintain-aspect-ratiosymmetric-padding:RTMDet使用中心填充的输入调整方式,这些设置可提高精度
  2. model-color-format=1:RTMDet使用BGR输入格式
  3. net-scale-factoroffsets:对应训练时的归一化参数(mean=[103.53,116.28,123.675], std=[1/0.017352...])

2. 修改主配置文件

deepstream_app_config.txt中指定使用RTMDet的推理配置:

[primary-gie]
config-file=config_infer_primary_rtmdet.txt

模型测试

运行以下命令测试模型:

deepstream-app -c deepstream_app_config.txt

注意事项

  1. 首次运行会生成TensorRT引擎文件,可能需要较长时间(10分钟以上)
  2. 如需调整批处理大小、网络模式等参数,请参考相关文档

结语

通过以上步骤,您已成功将RTMDet模型部署到DeepStream-Yolo项目中。RTMDet作为高效的检测模型,结合DeepStream的优化能力,可以在边缘设备上实现高性能的目标检测应用。如需使用自定义模型,只需按照相同流程准备相应的模型文件和配置文件即可。

DeepStream-Yolo NVIDIA DeepStream SDK 6.3 / 6.2 / 6.1.1 / 6.1 / 6.0.1 / 6.0 / 5.1 implementation for YOLO models DeepStream-Yolo 项目地址: https://gitcode.com/gh_mirrors/de/DeepStream-Yolo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曹令琨Iris

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值