1. 为什么选择RK3588 NPU部署YOLOv5?
RK3588作为瑞芯微新一代旗舰SoC,其内置的NPU算力达到6TOPS,在边缘计算设备中属于第一梯队。我在实际项目中测试发现,相比传统CPU推理,NPU加速能使YOLOv5s模型的推理速度提升8-12倍,这对于需要实时检测的安防、工业质检等场景至关重要。
选择YOLOv5而非其他版本,主要考虑到v5系列在精度和速度的平衡性最好,社区支持完善,且官方提供了完整的训练和导出工具链。最新测试数据显示,YOLOv5s在COCO数据集上可达27.6mAP@0.5,同时保持2.4ms的NPU推理速度(输入尺寸640×640)。
2. ONNX模型导出关键步骤解析
2.1 环境准备与模型训练
首先需要搭建PyTorch 1.8+环境,建议使用官方Docker镜像避免依赖冲突。训练阶段要特别注意:
bash复制git clone https://github.com/ultralytics/yolov5
pip install -r requirements.txt onnx>=1.10.0
2.2 导出ONNX的特殊参数
使用YOLOv5自带的export.py时,必须添加以下参数:
python复制python export.py --weights yolov5s.pt --include onnx --opset 12 --dynamic
其中--dynamic参数允许输入尺寸变化,这对后续NPU优化至关重要。我遇到过静态尺寸导出后无法修改输入分辨率的问题,动态导出可以避免。
注意:务必指定opset_version=12,这是RKNN Toolkit2支持的最高版本。测试发现opset13会导致后续转换失败。
2.3 输出层处理技巧
YOLOv5默认输出三个检测头的原始数据(85维向量),但NPU端需要做以下调整:
- 添加
--grid参数保留网格坐标 - 在post-process中处理sigmoid激活
- 输出格式改为
[batch, num_anchors, xywh_conf_cls]
3. RKNN模型转换实战指南
3.1 转换环境搭建
需要安装RKNN Toolkit2(目前最新版1.3.0
