首页 > 编程语言 >易百纳ss928开发板移植自训练模型跑通yolov5算法

易百纳ss928开发板移植自训练模型跑通yolov5算法

时间:2024-09-10 17:24:13浏览次数:8  
标签:yolov5 易百纳 训练 ss928 模型 BGR 格式 推理

ss928平台移植官方yolov5s算法参考文章:https://www.ebaina.com/articles/140000017418,这位大佬也开源了代码,gitee链接:https://gitee.com/apchy_ll/ss928_yolov5s
本文在参考上述文章的基础上,将官方yolov5s模型跑通,验证推理图片正确,然后移植自训练的推理模型,在移植过程中遇到了一些问题,解决后记录一下。
一、模型转换
自训练模型是在yolov5-v7.0版本下训练的,通过export.py将pt模型转为onnx模型,需要注意的是在运行export.py转出前,需要将yolo.py文件里的foward函数修改为如下:

点击查看代码
def forward(self, x):
     for i in range(self.nl):
        x[i] = self.m[i](x[i])  
        bs, _, ny, nx = x[i].shape  
        x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous()

      return x
这样修改的目的是为了让模型推理输出三层output,进一步通过后处理解算目标检测框。目前试过yolov5_62_export_ncnn、yolov5-v6.2、yolov5-v7.0、瑞芯微rk的yolov5代码(在官方yolov5-v7.0版本上做了些优化)这些版本转出的onnx模型都相同,可以进行下一步运用atc工具转换为om模型转换om模型。

二、模型部署
在参考上述提到的文章里的代码移植自己训练好的模型,与官方yolov5s不同的是自训练模型检测8类目标,需要修改如下几个地方:
1.模型调用路径
2.模型输入图像数据路径
3.后处理代码中的检测类别数量

4.画图可视化时目标标签类型

经过以上修改编译完成得到可执行文件,就可以用自训练模型推理了。
** 三、推理验证**
采用一张测试集中的图片进行推理测试,在板端推理结果如图1所示,在PC端用python工程推理结果如图2所示。

图1 板端推理结果

图2 PC端推理结果
明显可看出PC端检测结果要比板端检测结果好很多,验证了pt、onnx模型的推理结果都正常以及板端后处理代码无误后,定位问题出在om模型或输入推理模型的图像。进一步研究发现在使用act工具转om模型时会开启aipp_op配置,默认配置文件里是将YUV420SP_U8转为GRAY灰度图格式,对应代码中将输入的jpg图片转为YUV420SP_U8格式数据再输入给推理函数。这里推测自训练模型效果差是因为输入的是GRAY格式图片,训练的数据集都是jpg图片,可能不像官方yolov5s用的coco数据集那么多,导致模型推理GRAY格式图像检测精度下降。因此将代码修改如下:
1.输入图片letterbox预处理后不转为YUV420SP格式,直接保存为BGR格式的bin文件,然后再输入给推理函数。

2.此时保存的bin图像数据是BGR格式,在onnx转换om模型时,开启通道交换开关,将BGR格式转换为RGB格式。

这里配置时输入格式参数是RGB888_U8,其实应该写BGR的,但是查看了act工具手册里,该参数没有BGR合适的输入,最后验证这里写RGB888_U8,只开启通道交换功能,最后推理结果是正确的,说明BGR格式转为了RGB格式,aipp里的其它功能暂时没有使用过,不确定这样配置是否会影响其它功能正确使用。
修改后重新编译推理测试图片,推理结果如图所示。

标签:yolov5,易百纳,训练,ss928,模型,BGR,格式,推理
From: https://www.cnblogs.com/onlyliveonce/p/18406593

相关文章

  • YOLO 自动标注工具autolabelimg(适用yolov5 v6.1)
    一、获取自定义数据集的YOLOv5.pt权重  首先,手动标注一部分数据集,训练YOLOV5模型,得到best.pt。二、下载和安装autolabelimg   (1)github链接:  https://github.com/wufan-tb/AutoLabelImg.git  手动下载.zip ,也可以clone:gitclonehttps://github.com/w......
  • YOLOv5: 从0开始搭建环境进行模型训练
    ​视频链接:YOLOv5:从0开始搭建环境进行模型训练_哔哩哔哩_bilibili《YOLOv5:从0开始搭建环境进行模型训练》课程致力于帮助学生实战YOLOv5目标检测算法。常心老师将手把手带领大家从0开始搭建YOLOv5环境,带领大家排坑、避坑、填坑。本课程将进行数据集打标、格式转化、模型......
  • yolov5单目测距+速度测量+目标跟踪
    要在YOLOv5中添加测距和测速功能,您需要了解以下两个部分的原理:单目测距算法单目测距是使用单个摄像头来估计场景中物体的距离。常见的单目测距算法包括基于视差的方法(如立体匹配)和基于深度学习的方法(如神经网络)。基于深度学习的方法通常使用卷积神经网络(CNN)来学习从图像......
  • 非煤矿山电子封条视频监控系统 YOLOv5
    非煤矿山电子封条视频监控系统采用现场摄像头和图像分析终端等设备,通过对煤矿关键地点进行实时监测和数据分析。当有异常情况发生时,非煤矿山电子封条视频监控系统可以通过人工智能算法将自动识别异常情况并记录信息,及时通知现场管理人员进行处理。非煤矿山电子封条视频监控系统24小......
  • YOLOv5 结合切片辅助超推理算法 | 这才叫让小目标无处遁形!
    引言YOLOv5作为一种高效的目标检测算法,在许多领域得到了广泛应用。然而,在处理小目标检测任务时,YOLOv5仍然面临一些挑战。切片辅助超推理算法则为解决这一问题提供了一种有效的思路。本文将深入探讨YOLOv5与切片辅助超推理算法结合的原理、实现细节、以及在小目标检测方面的优......
  • YOLOv5改进 | NMS | 将NMS修改为soft-NMS【完整代码】
    秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转......
  • Yolov5入门介绍(官网文档学习笔记)
    一、yolov5是什么yolov5是yolo的第五次迭代,旨在提供高速、高精度的目标检测模型官方文档:ComprehensiveGuidetoUltralyticsYOLOv5-UltralyticsYOLODocs二、yolov5的优点1、高速、高精度 (例如R-CNN目标检测有两部:先生成候选框再分类)2、基于pytorch搭建,使用于各......
  • YOLOv5改进 | 模块融合 | C3融合 ghost + DynamicConv 【两次融合 + 独家改进】
    秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转......
  • YOLOv5—6.1训练好的模型之后进行模型部署
    将YOLOv5训练好的模型进行部署,通常包括以下步骤:模型导出、推理部署、并在实际应用中使用。下面详细介绍如何进行这些步骤。1.模型导出首先,你需要将YOLOv5的PyTorch模型导出为适合部署的格式。YOLOv5支持导出为多种格式,包括'torchscript','onnx','openvino','engin......
  • 训练yolov5时出现报错:AttributeError: ‘FreeTypeFont‘ object has no attribute ‘g
    报错:Traceback(mostrecentcalllast):File"D:\anaconda3_xz\envs\luopytorch\lib\threading.py",line932,in_bootstrap_innerself.run()File"D:\anaconda3_xz\envs\luopytorch\lib\threading.py",line870,inrunself._target(*s......