yolov8n 瑞芯微RKNN、地平线Horizon芯片部署,TensorRT部署,部署工程难度小,模型推理速度快

发布时间:2025-06-24 16:48:50  作者:北方职教升学中心  阅读量:365


  特别说明:参考官方开源yolov8代码、瑞芯微官方文件、地平线官方文件,侵权通知删除#xff0c;谢谢。

  模型和完整的模拟测试代码,将参考链接放在github上 模型和代码。

  因为之前写了几篇关于yolov8模型部署的博文,#xff11有两个问题a;部署难度大,模型推理速度慢。本文解决了这两个问题,而且是全网难度最小、模型运行速度最快的部署方式。与之前写的[yolov8相比 瑞芯微RKNN和地平线Horizon芯片模拟测试部署将DFL写在后处理中,模型加速,优化后处理后的时间消耗略有增加。

1 模型和训练。

  培训代码参考官方开源yolov8培训代码。

2 导出 yolov8 onnx。

   导出onnx添加以下几行代码a;
在这里插入图片描述
   假如使用的yolov8版本与当时写博客的版本不同,在同一个地方添加这些行是一样的。
   以下是新版本的hend文件。
在这里插入图片描述

# 导出 onnx 增加。y。 =[。]。for。i。 in。range。(。self。.。nl。)。:。t1。 =self。.。cv2。[。i。]。(。x。[。i。]。)。t2。 =self。.。cv3。[。i。]。(。x。[。i。]。)。y。.。append。(。t1。)。y。.。append。(。t2。)。return。y。

  增加onnx模型代码的保存。
在这里插入图片描述

print。(。"===========  onnx =========== ")。import。torch        dummy_input。 =torch。.。randn。(。1。,3。,640。,640。)。input_names。 =[。"data"]。output_names。 =[。"reg1","cls1","reg2","cls2","reg3","cls3"]。torch。.。onnx。.。export。(。self。.。model。,dummy_input。,"./weights/yolov8___relu__ZQ1.onnx",verbose。=False。,input_names。=input_names。,output_names。=output_names。,opset_version。=11。)。print。(。"======================== convert onnx Finished! ... ")。

  修改上述两个地方,运行推理脚本(操作会错误󿀌但不影响onnx文件的生成)。

from。ultralytics。 import。YOLO。# 推理。model。 =YOLO。(。'./weights/yolov8n_relu_ZQ_80class.pt')。results。 =model。(。task。='detect',mode。='predict',source。='./images/test.jpg',line_width。=3。,show。=True。,save。=True。,device。='cpu')。

3 yolov8 onnx 测试效果。

  onnx模型和测试完整代码,将代码放在github上。
在这里插入图片描述

4 tensorRT 优化前后时间消耗。

  最后一篇[yolovolov8] 瑞芯微RKNN和地平线Horizon芯片模拟测试部署]tensort部署推理1万次的平均时间消耗(显卡 Tesla V100、cuda_11.0)
在这里插入图片描述
tensorrt部署推理1万次的平均时间消耗(显卡 Tesla V100、cuda_11.0)
在这里插入图片描述

5 rknn 板端C++部署。

  C++参考代码和模型示例的完整部署。

  C++参考代码和模型示例的完整部署。  C+板端;+还发布了代码模型和时间消耗,供您参考,使用芯片rk3588。与之前的rk3588推理40ms࿰相比c;降到17ms。

,后处理略有增加。
在这里插入图片描述
  最后一篇[yolovolov8] 瑞芯微RKNN和地平线Horizon芯片模拟测试部署]C+部署在rknn3588上;+时耗。
在这里插入图片描述

  本部署方法的时耗。  2024年1月12日#xff1a;后处理代码。优化rknn。
在这里插入图片描述

,后处理时的消耗量大大降低。(检测类别越多,效果越明显。c;检测一个类别没有优化效果,代码已同步到相应的代码仓库)