yolov8 官方模型进行瑞芯微RKNN和地平线Horizon芯片仿真测试部署

  由于之前写了一篇 ”yolov8 瑞芯微RKNN和地平线Horizon芯片仿真测试部署“ 这一篇导出的onnx模型在板端芯片部署效率非常高的,高效率体现在模型的所有操作都在加速引擎(NPU或BPU)上,模型推理没有CPU和板端加速引擎的切换,且后处理对一些维度变换直接用了索引的方式,没有额外的维度变换操作;且导出的onnx模型通用性很强,可以转换成任何板端模型;但工程部署难道相对大一些,有网友希望提供一个基于官方导出的onnx进行板端部署,因此本篇就基于 yolov8 官方导出onnx的方式,进行模型在板端芯片部署和仿真测试。

完整代码部署代码参考

1 模型训练修改部分

  由于有些板端芯片对SiLU激活函数不支持,因此将激活函数 SiLU 替换成 ReLU,并基于 VOC 数据集进行了重新训练。

2 导出onnx模型修改

   导出onnx需要修改一行
yolov8 官方模型进行瑞芯微RKNN和地平线Horizon芯片仿真测试部署_第1张图片

# 导出 onnx
from ultralytics import YOLO

model = YOLO('../weights/yolov8n_relu_20class.pt')
success = model.export(format="onnx")

强烈建议、强烈建议、强烈建议:导出 onnx 后用 simplify 后再看输出或转换成其他板端模型
有些同学反馈沟过的问题,在这里统一列出来:
1、导出的onnx输出和博客中的结构不一样
2、转换成板端模型时onnx模型加载异常
3、测试onnx输出结果异常

以上问题通过 simplify 后解决。

from onnxsim import simplify
import onnx

onnx_model = onnx.load('./yolov8n_relu_20class.onnx')
model_simp, check = simplify(onnx_model)

assert check, "Simplified ONNX model could not be validated"
onnx.save(model_simp, './yolov8n_relu_20class_sim.onnx')

3 onnx测试效果

yolov8 官方模型进行瑞芯微RKNN和地平线Horizon芯片仿真测试部署_第2张图片

4 板端高效部署方式

   请参考板端芯片高效部署

你可能感兴趣的:(YOLO,人工智能)