DeepStream-Yolo项目中RTMDet模型部署指南
前言
本文将详细介绍如何在DeepStream-Yolo项目中部署RTMDet目标检测模型。RTMDet是MMYOLO系列中的高效检测模型,具有优秀的检测精度和推理速度。通过本文,您将学习到从模型转换到最终部署的完整流程。
环境准备
在开始之前,请确保您已准备好以下环境:
- Python虚拟环境(推荐使用)
- 已安装DeepStream SDK
- 基本的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
配置说明:
maintain-aspect-ratio
和symmetric-padding
:RTMDet使用中心填充的输入调整方式,这些设置可提高精度model-color-format=1
:RTMDet使用BGR输入格式net-scale-factor
和offsets
:对应训练时的归一化参数(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
注意事项:
- 首次运行会生成TensorRT引擎文件,可能需要较长时间(10分钟以上)
- 如需调整批处理大小、网络模式等参数,请参考相关文档
结语
通过以上步骤,您已成功将RTMDet模型部署到DeepStream-Yolo项目中。RTMDet作为高效的检测模型,结合DeepStream的优化能力,可以在边缘设备上实现高性能的目标检测应用。如需使用自定义模型,只需按照相同流程准备相应的模型文件和配置文件即可。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考