仪表盘读数识别~1

搬来了大赛仪表盘读数识别德国冠军方案解读   , 大佬勿怪 

1、仪表识别

对于预测仪表框与真实仪表框,计算f1-score,IoU使用0.7,此部分成绩记为score1

2、刻度点识别

对于预测关键点与真实关键点,计算RMSE,此部分成绩记为score2

3、OCR识别

对于预测的数值框,计算f1-score,IoU使用0.5,此部分成绩记为score3

4、读数识别

计算每个仪表的读数得分,并对所有仪表的得分求平均值,此部分成绩记为 score4

将上述4点得到4项成绩进行加权,最终得分:

加权的权重为配置参数,默认值为:

weight_1 = 0.1

weight_2 = 0.25

weight_3 = 0.25

weight_4 = 0.4赛题分析

本次任务的仪表数据集存在以下难点:

1、仪表刻度存在遮挡、模糊等问题,影响OCR识别

2、仪表图像存在旋转、倾斜问题,影响读数测量

算法设计

算法分为4个流程,首先用yolov5s模型从原图中识别出仪,接着用yolov8x-pose模型检测出仪表中的刻度线、指针的关键点,再用DBNetpp模型检测出数值框并用SATRN模型进行文本识别,最后后处理得到读数结果。

(1)基于YOLOv5s的仪表检测选型理由

Yolov5s网络小,速度快。虽然AP精度低,但检测的是仪表这种大目标是完全够用的。我们采用极市官方提供的yolov5s训练套件进行训练,上手简单,且仪表识别准确率达到了99.7%,效果满足实际需求。

(2)基于YOLOv8x-pose的指针和刻度关键点检测

选型理由YOLOv8是YOLOv5团队ultralytics在今年开源的SOTA模型,引入了新的改进,进一步提升了性能和灵活性。YOLOv8 设计快速、准确且易于使用,使其成为目标检测、实例分割、图像分类和姿态估计任务的绝佳选择。

yolo-pose是估计人体姿态的一个模型,它将人体姿态分为17个关键点。

为了尽可能地提高关键点检测精度,我们使用了规模最大的YOLOv8x-pose模型。

指针关键点数据集制作我们将指针的两个点作为其关键点,由这两个点组成的矩形框作为目标检测框,如果两个点组成的矩形框太窄,进行适当延伸。

刻度关键点数据集制作由于每个仪表的数值框个数不同,我们将每个数值框视为同一个类别进行目标检测,每个数值框携带对应的刻度点作为其关键点。

我们采用从官网下载的预训练模型在仪表数据集上微调,将关键点权重从12提高到20。

(3)基于DBNetpp的文本检测

选型理由

由于仪表尺寸大小不一,我们选用DBNetpp模型,它在DBNet模型基础上引入了多级特征聚合模块(Adaptive Scale Fusion, ASF),ASF模块由阶段注意力和空间注意力子模块构成,加强了不同尺度特征的融合,提高了处理不同尺寸图像的鲁棒性。(4)基于SATRN模型的文本识别 

 

选型理由

SATRN模型利用self-attention机制对字符的2D空间关系进行建模,并且在FFN模块中引入卷积层,增强了模型对全局和局部特征的捕捉能力。

SATRN模型对于大曲率弯曲、大角度旋转文本依然具备足够的识别能力,在多个不规则文本数据集上达到SOTA。

(5)读数识别

将上述模型的输出采用opencv进行后处理得到读数结果,具体流程如下:

1. 区分内外径

 

根据刻度点和数值框距离指针原点的距离区分内径和外径,分别进行后续处理。

2. 确定刻度点的顺序

 

起点到终点的角度差值是相邻两点间角度差值中最大的,我们只需要找到这个最大的角度差值,就可以确定起始点。

先将刻度点坐标转成以指针原点为中心的极坐标,根据角度从小到大排序 [16,0,4,8,12]

然后计算相邻刻度点两两间的角度差值,选择最大差值的下一个刻度点作为起点,调整顺序后 [0,4,8,12,16]

3. 修正OCR识别结果

上图中由于指针遮挡,1500识别成500,通过等差数列对其进行修正。

4. 透视变换步骤:

1、确定最后一个点的坐标:已知最后一个点在透视变换后的极坐标角度为45°,假设所有刻度点距离圆心距离为R,则最后一个点的坐标可以表示为(45°,R)可以根据该极坐标得出笛卡尔坐标系下的坐标。

2、确定其他三个点的坐标:这里一共有6个间隔平分整个270°量程,所以每个刻度夹角为270/6=45°,据此可以依次计算出其他三个点在变换后的坐标。

通过这种方式,可以确定四个刻度点在透视变换后图像中的坐标,并用这些坐标来进行透视变换。

5. 补充被指针遮挡的点

步骤:

1、首先,确定缺失点的前后点,以及它们与圆心的平均距离。这些信息将用于推算缺失点的极坐标。     whaosoft aiot http://143ai.com  

2、根据前后点的角度和平均距离,计算出缺失点的极坐标。极坐标由极径和极角组成,极径表示点到圆心的距离,极角表示点在极坐标系中的角度。将缺失点的极坐标转换为笛卡尔坐标。

3、如果进行了透视变换,需要将转换后的坐标应用于透视矩阵,以获得原图中的坐标。

6. 计算读数

算法优化

存在问题

边框遮挡导致的刻度数字无法识别,上述算法不能很好的处理。

改进方法

根据数据集分布,为内外径各建立一个list,以外径举例:

outer_list = [
  [32, 50, 100, 150, 200],
        [0, 4, 8, 12, 16],
        [0, 2, 4, 6, 8, 10],
        [0, 1, 2, 3, 4, 5, 6],
        [0, 0.2, 0.4, 0.6, 0.8, 1],
        [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6],
        [0, 2, 4, 6, 8, 10, 12, 14],
  [0, 10, 20, 30, 40, 50, 60],
        [0, 1000, 2000, 3000, 4000, 5000, 6000],
  [0, 100, 200, 300, 400, 500, 600, 700, 800, 860]
    ]

将左图中识别的外径[0,100,200,300,400,500,600]与该outer_list进行匹配,得到最接近的[0,100,200,300,400,500,600,700,800,860]。即可对照模板将遗漏的刻度点补全。

总结

最终,方案的成绩如下。优点:

1、目标检测算法和ocr识别算法均源自开源算法库中SOTA模型,实现简单高效,且具备丰富的工业部署落地支持。

2、没有采用传统直线检测的方式检测关键点,通过类似姿态估计的方式提高了关键点检测精度。

3、提出了一种基于查表的鲁棒仪表读数方法,对于遮挡严重的情况也能较好地处理。

4、通过透视变换,将形变的仪表图像修正,使得读数更加准确。

可提升点:

1、将模型文件转换为TensorRT格式,加速推理。

2、更改ocr识别模型,提升效率。

引用

1.https://github.com/ultralytics/yolov5

2. https://github.com/ultralytics/ultralytics

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要使用YOLOv5进行仪表盘读数识别,你需要按照以下步骤进行操作: 1. 准备数据集:收集包含仪表盘读数的图像,并为每个图像创建相应的标注文件,包括边界框和类别信息。确保数据集包含足够多的样本以覆盖各种仪表盘读数情况。 2. 安装YOLOv5:在你的开发环境上安装YOLOv5。你可以从YOLOv5的官方GitHub仓库(https://github.com/ultralytics/yolov5)中获取源代码和安装说明。 3. 配置模型和训练:通过修改YOLOv5的配置文件来适应仪表盘读数识别任务。你可以调整模型的结构、超参数和训练设置,以使其适应你的数据集和需求。 4. 数据预处理:根据YOLOv5的要求,对数据集进行预处理。这可能包括图像大小调整、归一化、数据增强等操作。你可以使用YOLOv5提供的数据预处理工具或自定义脚本来完成这些操作。 5. 训练模型:使用准备好的数据集和配置文件,执行训练命令来训练YOLOv5模型。根据你的硬件和数据集大小,训练可能需要一些时间。你可以根据训练过程中的指标和结果进行调整和优化。 6. 模型评估和调整:在训练完成后,使用测试集或验证集对模型进行评估。根据评估结果调整模型的配置和超参数,以提高识别准确率和性能。 7. 进行仪表盘读数识别:使用训练好的模型对新的仪表盘图像进行读数识别。通过调用YOLOv5的推理函数,传入输入图像,获取输出的边界框和类别信息。你可以根据需要对输出结果进行后处理和解析,以获取具体的读数值。 以上是使用YOLOv5进行仪表盘读数识别的一般步骤。具体的实施细节和调整方法可能因数据集和任务而有所不同。你可以参考YOLOv5的官方文档和示例代码,以及相关的深度学习和计算机视觉资源,来更深入地了解和实践这个任务。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值