发明内容
本发明的目的在于克服现有技术之缺陷,提供了一种基于深度学习的指针式仪表自动读数方法及系统,解决了在复杂环境下指针式仪表的检测困难以及倾斜仪表图像校正问题,实现对仪表的准确读数。
为了到达预期效果,本发明采用了以下技术方案:
本发明公开了一种基于深度学习的指针式仪表自动读数方法,包括:
S1)获取待读数仪表图像;
S2)对仪表图像进行表盘目标检测;
S3)对检测到的表盘图像进行倾斜校正;
S4)将校正后的表盘图像展开为矩形表盘图像;
S5)基于矩形表盘图像进行指针位置检测;
S6)根据指针位置计算读数。
进一步地,所述S1)具体包括:获取原始仪表图像数据,将原始仪表图像数据分为训练数据集和测试数据集,并对数据集进行标记。
进一步地,所述S2)具体包括:构建仪表识别模型,采用深度学习算法对训练数据集进行训练,得到训练后的仪表识别模型,将测试数据集中待检测图像输入到训练后的仪表识别模型中进行目标检测并分类,剪裁得到明确类型的仪表表盘图像。
进一步地,所述深度学习算法为改进的YOLOv5算法,具体包括:首先,对于骨干网络,在最后一个C3模块后面加上全局注意力模块GAM;其次,在颈部区域,新增尺寸为输入图像四分之一的特征图;最后,引入Decoupled-head解耦头。
进一步地,所述S3)具体包括:利用AKAZE算法进行关键点匹配后的一次透视变换和对一次透视变换后的图像进行椭圆拟合后的二次透视变换实现倾斜校正。
进一步地,所述利用AKAZE算法进行关键点匹配后的一次透视变换,具体包括:
提前获取一张居中且无倾斜的仪表表盘图像作为模板图像;
对模板图像上包括起始刻度点、终止刻度点在内的关键点进行标注并保存标注数据;
对每张待读数的图像和提前获取到的模板图像进行灰度化处理;
采用AKAZE算法对灰度化处理后的图像进行特征点检测,并用双向匹配法匹配特征点;
利用RANSAC筛除图像中匹配误差较大的特征点,获得单应性矩阵;
通过单应性矩阵对待读数图像做透视变换,向模板图像校正。
进一步地,所述S4)具体包括:通过倾斜校正后的圆形表盘刻度起点和终点位置信息得到极坐标变换后在矩形表盘上对应的位置信息,对图像进行重新拼接,获得最终只包含刻度所在区域的矩形表盘图像。
进一步地,所述S5)具体包括:采用深度学习算法进行训练得到训练后的指针检测模型,将矩形表盘图像输入到训练后的指针检测模型进行目标检测,得到目标包围框,该包围框的中轴线则为指针尖所在的直线,以此得到指针位置。
进一步地,所述S6)具体包括:根据指针位置、矩形表盘图像以及仪表的表盘量程,通过距离法计算得到最终读数。
本发明还公开了一种基于深度学习的指针式仪表自动读数系统,包括:
接收模块,用于获取待读数仪表图像;
检测模块,用于对仪表图像进行表盘目标检测;对检测到的表盘图像进行倾斜校正;将校正后的表盘图像展开为矩形表盘图像;基于矩形表盘图像进行指针位置检测;
读数模块,用于根据指针位置计算读数。
与现有技术相比,本发明的有益效果是:本发明公开了一种基于深度学习的指针式仪表自动读数方法及系统,该方法首先获取待读数仪表图像;其次对仪表图像进行表盘目标检测;再次对检测到的表盘图像进行倾斜校正;接着将校正后的表盘图像展开为矩形表盘图像;然后基于矩形表盘图像进行指针位置检测;最后根据指针位置计算读数。本发明适用于各类刻度均匀的圆盘指针表,如单指针、双指针等,而传统算法则需要对每种不同类型的表计分别进行识别;本发明基于深度学习的目标检测使本发明能够对处于复杂环境下的仪表进行检测及读数;本发明还能对获取到的图像中倾斜仪表进行校正,减小后续读数误差,使读数精度更加准确。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的一种基于深度学习的指针式仪表自动读数方法的流程图。
图2是本发明实施例提供的一种基于深度学习的指针式仪表自动读数方法的改进的YOLOv5s算法结构图。
图3是本发明实施例提供的一种基于深度学习的指针式仪表自动读数方法的GAM概述图。
图4是本发明实施例提供的一种基于深度学习的指针式仪表自动读数方法的解耦头示意图。
图5是本发明实施例提供的一种基于深度学习的指针式仪表自动读数方法的表盘目标检测结果示意图。
图6是本发明实施例提供的一种基于深度学习的指针式仪表自动读数方法的表盘图像示意图。
图7是本发明实施例提供的一种基于深度学习的指针式仪表自动读数方法的模板图像标注示意图。
图8是本发明实施例提供的一种基于深度学习的指针式仪表自动读数方法的表盘图像校正效果示意图。
图9是本发明实施例提供的一种基于深度学习的指针式仪表自动读数方法的矩形表盘图像示意图。
图10是本发明实施例提供的一种基于深度学习的指针式仪表自动读数方法的指针位置检测结果示意图。
图11是本发明实施例提供的一种基于深度学习的指针式仪表自动读数方法的表盘图像在各类环境干扰下的读数示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
参见图1,本发明公开了一种基于深度学习的指针式仪表自动读数方法,包括:
S1)获取待读数仪表图像;这一步骤是为了获取原始图像数据以便后续目标检测,通过预处理筛选出包括存在倾斜、光照干扰、污点干扰等情况下的各类仪表,构成仪表自动检测识别数据集,该数据集包含多个种类的仪表图像。
S2)对仪表图像进行表盘目标检测;这一步骤主要是通过构建神经网络模型检测表盘目标。
S3)对检测到的表盘图像进行倾斜校正;由于仪表表盘平面与相机平面一般存在角度偏差,所以提取出的表盘区域图像并不是圆形,而是具有倾斜角度的畸变图像。因此需要通过透视变换对待检测图像进行处理,将其修正为正面视角图像从而减小读数的误差。
S4)将校正后的表盘图像展开为矩形表盘图像;为了便于后续指针位置检测和读数,需要将圆形的表盘图像展开了矩形表盘图像。
S5)基于矩形表盘图像进行指针位置检测;将表盘目标检测数据集通过上述步骤形成指针检测数据集,通过神经网络模型检测指针位置。
S6)根据指针位置计算读数。
本发明适用于各类刻度均匀的圆盘指针表,如单指针、双指针等,而传统算法则需要对每种不同类型的表计分别进行识别;本发明基于深度学习的目标检测使本发明能够对处于复杂环境下的仪表进行检测及读数;本发明还能对获取到的图像中倾斜仪表进行校正,减小后续读数误差,使读数精度更加准确。
优选的实施例中,所述获取待读数仪表图像具体包括:获取原始仪表图像数据,将原始仪表图像数据分为训练数据集和测试数据集,并对数据集进行标记。
优选的实施例中,通过巡检机器人在实地获取原始仪表图像数据共2400张,通过预处理筛选出包括存在倾斜、光照干扰、污点干扰等情况下的各类仪表,构成仪表自动检测识别数据集,该数据集包含多个种类的仪表图像。将数据集按照9:1划分为训练集和测试集,并使用数据标注工具Labellmg对数据集进行标记,使每张图片具有目标检测的标签。
优选的实施例中,所述对仪表图像进行表盘目标检测具体包括:构建仪表识别模型,采用深度学习算法对训练数据集进行训练,得到训练后的仪表识别模型,将测试数据集中待检测图像输入到训练后的仪表识别模型中进行目标检测并分类,剪裁得到明确类型的仪表表盘图像。
目前成熟的目标检测算法有Faster-RCNN、Mask-RCNN、YOLO、SSD等,YOLO系列算法作为One-stage算法的典型代表,算法检测速度和精度较为平衡,能够广泛地应用在各类工业场所,以解决实际问题。
优选的实施例中,所述深度学习算法为改进的YOLOv5算法,具体包括:首先,对于骨干网络,在最后一个C3模块后面加上全局注意力模块GAM;其次,在颈部区域,新增尺寸为输入图像四分之一的特征图;最后,引入Decoupled-head解耦头。
本发明选择YOLOv5s算法进行对仪表的目标检测,并对其进行改进,改进后的YOLOv5s算法结构如图2所示。对于骨干网络,在最后一个C3模块后面加上全局注意力模块GAM,以强化算法在检测过程中提取仪表目标特征的能力;在颈部区域,新增尺寸为输入仪表图像四分之一的特征图,从而提升算法针对较小的仪表目标的特征挖掘能力,即仪表图像特征较小时也能通过此算法进行特征提取和挖掘;最后,引入Decoupled-head解耦头,以改进网络模型检测模块对仪表图像进行目标分类和定位的效果。
加入全局注意力模块,值得注意的是,在YOLOv5原始算法中,对每一层特征进行提取时给予同等的关注度,这种方法忽略了不同特征通道具有不同的重要度,将导致部分目标提取困难。针对此网络特征差异性敏感度较弱问题,本发明在骨干网络中加入GAM模块,利用该模块对特征利用能力强的优点,减少信息损失并且提高全局特征交互,模块概述图如图3所示。给定输入特征图
,中间状态/>
和输出/>
定义为:
,/>
,其中,/>
和/>
分别为通道注意力图和空间注意力图,/>
表示元素乘法运算。通道注意力子模块使用三维排列来保留三维信息,并使用两层多层感知器MLP放大跨维的通道空间依赖关系。在空间注意子模块中,使用两个卷积层进行空间信息融合以关注空间信息,并删除了池化操作以进一步保留特性映射。因此,使用全局注意力模块能使网络目标提取能力更强。
优化检测端,值得注意的是,在原始YOLOv5s算法中,使用三种不同尺寸的特征图检测不同大小的目标。而根据网络中使用特征金字塔网络FPN的思想,经过深层次卷积后的特征图虽然拥有丰富语义信息,但在经过多次卷积会丢失掉目标的一些位置信息,影响较小目标的检测;浅层卷积后得到的特征图语义信息较少,但目标的位置信息却比较丰富。
在一些工业场合中,部分仪表位置偏僻,导致采集到的仪表目标在图中占比较小。因此,本发明在原始YOLOv5s算法中增加一个4倍下采样过程,将通过该下采样过程后的原始图片特征送入后续特征融合网络,能得到新尺寸的特征图,此特征图具有较小感受野且位置信息较为丰富。新增特征图将位置信息向检测端传递,从而检测端能在四个尺度上进行目标检测,有利于提升对于较小目标的检测性能,以优化网络整体检测效果。
引入Decoupled-head解耦头,值得注意的是,传统的YOLO系列网络在head部分采取的都是耦合头部,对于目标检测任务,分类与回归之间存在冲突,采用传统的耦合检测头会导致模型性能降低。如图4所示是本发明实施例提供的一种基于深度学习的指针式仪表自动读数方法的解耦头示意图。本发明引入解耦头替换原有耦合头部,解耦头经1×1卷积后,将通道维数减小至统一通道数,再接入两个平行的3×3卷积层,分别用于分类任务和定位、置信度任务,对于用于定位和置信度任务的分支再使用两个平行的1×1卷积进行解耦,最终能使分类、定位和置信度检测分别采用不同的检测层。
本发明提出的方法在表盘检测部分基于改进的YOLOv5s算法,改进算法中的mAP相对原始算法提高了3.6%,达到98.7%,能有效从复杂环境中准确检测到表盘。将待读数图片输入到仪表识别模型后检测及分类结果如图5所示,检测到后进行表盘剪裁图像如图6所示。
优选的实施例中,所述对检测到的表盘图像进行倾斜校正具体包括:利用AKAZE算法进行关键点匹配后的一次透视变换和对一次透视变换后的图像进行椭圆拟合后的二次透视变换实现倾斜校正。一次透视变换其作用是,将待检测图像校正成为同模板图像一样的无倾斜图像;二次透视变换则是为得到仪表圆心,并为展开提供中心,以及保证待检测图像校正为圆形,从而减小给后续步骤带来的误差。
优选的实施例中,所述利用AKAZE算法进行关键点匹配后的一次透视变换,具体包括:针对每个类型的仪表,都需要提前获取一张居中且无倾斜的仪表表盘图像作为模板图像;模板图像标注如图7所示。然后对模板图像上包括起始刻度点、终止刻度点在内的关键点进行标注并保存标注数据;接着对每张待读数的图像和提前获取到的模板图像进行灰度化处理;接着采用AKAZE算法对灰度化处理后的图像进行特征点检测,并用双向匹配法匹配特征点;接着利用RANSAC筛除图像中匹配误差较大的特征点,获得单应性矩阵M;最后通过单应性矩阵M对待读数图像做透视变换,向模板图像校正。
值得注意的是,AKAZE算法包括三个步骤:构建非线性尺度空间、特征点检测及定位、M-LDB(Modified-local Difference Binary)特征描述子生成。其中,AKAZE算法采用改进局部二值微分算法的M-LDB算法进行特征点描述,该算法利用非线性空间提取的梯度和强度信息,在旋转不变性和尺度不变性上均有较好的鲁棒性。因此,本发明利用AKAZE算法能较好检测到待读数图像与模板图像中可以匹配的特征点。
值得注意的是,双向匹配后得到的匹配结果依旧存在错误匹配点,不筛除误匹配点会影响后续透视变换的效果,因此采用RANSAC算法剔除误匹配点。该算法是在已得到匹配点的基础上,随机从中抽取四个点作为样本点,计算出单应性矩阵;然后计算所有匹配点与矩阵间的投影误差,若该误差小于阈值,则在剩余匹配点中选择一个点加入样本点,同时继续按此前方式进行计算比较,不断更换新的矩阵,直到找到最佳的单应性矩阵。透视变换则是利用此前找到的最佳单应性矩阵,将图像从当前平面投影至新的视平面,实现图像校正。
值得注意的是,由于通过一次透视变换是基于模板图像的透视变换,因此可用模板图像标注的关键点来拟合椭圆,利用拟合后椭圆的长短轴端点作为变换矩阵的计算依据,从而实现保证待匹配图像向模板图像校正的目的,同时拟合椭圆后能得到表盘圆心,为表盘展开提供条件。椭圆拟合是用椭圆方程表示平面上点的分布,即找到一个使平面上点尽可能靠近该椭圆的圆。本发明使用最小二乘法拟合表盘椭圆,求解出平面上椭圆的一般方程:
。
根据透视变换原理,变换矩阵通过两个视平面中四个不同点对应的坐标值得到唯一解。因此,在得到拟合出的椭圆方程后,求解出椭圆长短轴端点作为变换矩阵计算依据,从而达到校正效果。完成倾斜校正后图像如图8所示。
优选的实施例中,所述将校正后的表盘图像展开为矩形表盘图像,具体包括:通过倾斜校正后的圆形表盘刻度起点和终点位置信息得到极坐标变换后在矩形表盘上对应的位置信息,对图像进行重新拼接,获得最终只包含刻度所在区域的矩形表盘图像。为了便于采用距离法进行仪表读数计算,需要利用极坐标变换将表盘图像由圆形展开为矩形。在二次透视变换阶段,得到了表盘刻度区域的圆心,以该圆心为变换中心进行极坐标变换,将图像变换到极坐标系。极坐标变换表达式为
,/>
,式中:/>
、/>
分别为极坐标系极半径和极角,/>
、/>
为变换中心,/>
、/>
为原坐标系中像素点的横纵坐标。得到展开图像后,由于极坐标展开的起点与圆形表盘刻度位置并不对应,通过圆形表盘刻度起点、终点位置信息能得到极坐标变换后在矩形表盘上对应的位置信息,对图像进行重新拼接,获得最终只包含刻度所在区域的矩形表盘图像。表盘展开矩形图像如图9所示
优选的实施例中,所述基于矩形表盘图像进行指针位置检测,具体包括:将仪表目标检测数据集通过上述步骤形成指针检测数据集,采用深度学习算法对训练数据集进行训练,得到训练后的指针检测模型,将矩形表盘图像输入到训练后的指针检测模型进行目标检测,得到目标包围框,该包围框的中轴线则为指针尖所在的直线,以此得到指针位置。本发明得到矩形表盘图像后,采用YOLOv5算法对指针进行目标检测,得到目标包围框,该包围框的中轴线则为指针尖所在的直线,此方法与常规方法相比,减少了原始图像中其它区域对指针中轴线定位过程的干扰。
优选的实施例中,由于对指针的目标检测背景更加单一、目标大小相对更大,因此更好检测,本发明选用原始YOLOv5s算法进行指针位置的检测。指针检测结果如图10所示。
优选的实施例中,所述根据指针位置计算读数具体包括:根据指针位置、矩形表盘图像以及仪表的表盘量程,通过距离法计算得到最终读数。优选的实施例中,在得到指针位置后,即可用指针位置、最小刻度线位置和最大刻度线位置三者通过距离法公式得到最终读数。基于距离法求得的最终读数r为:
,式中:W为矩形仪表宽度,/>
为指针线位置横坐标,m为仪表量程,/>
为仪表起始读数。
优选的实施例中,为验证本发明的适用性,将采用本发明方法的读数结果与人工读数相比较,对读数误差进行定量分析。优选的实施例中,对比实验包括对不同仪表读数结果分析和有干扰环境下读数的结果分析。
针对不同类型仪表的指针读数:对数据集中每种类型的指针式仪表抽取同样个数的图像进行抽样,分别将量程为2.5MPa的压力表、量程为1.6MPa的压力表、量程为100℃的温度表、量程为150℃的温度表和量程为120℃的温度表记为仪表1、仪表2、仪表3、仪表4和仪表5,部分测试结果如下表1所示。
表1 不同仪表部分读数结果
由表1可知,不同类型仪表通过本发明方法读数误差均较小,其中最大相对误差为1.7186%,在读数误差可允许的范围内,表明本发明方法能针对不同类型指针式仪表进行准确读数。
针对有干扰环境下的指针读数:在实际工作环境中,仪表所处环境较为复杂,会导致拍摄的仪表图片容易受到光照强度、污垢等因素的影响。为了测试本发明方法的稳定性,选取多组被干扰后的量程为1.6MPa的压力表图像进行测试,各类干扰示例图像如图11所示,表2为其中部分测试结果。
表2 有干扰环境下的部分仪表读数结果
实验表明,各类环境干扰会对读数有些许影响,其中最大相对误差为1.9089%,但都在预期允许的误差范围内,证明本发明方法能有干扰的情况下对仪表进行较准确的读数。
由此可知,本发明能对复杂环境下的指针式仪表进行准确检测,并对检测到的倾斜仪表进行倾斜校正,最后能实现准确读数,且方法具有稳定性和鲁棒性,能适用于工业场合。
基于同一发明思路,本发明还公开了一种基于深度学习的指针式仪表自动读数系统,包括:
接收模块,用于获取待读数仪表图像;
检测模块,用于对仪表图像进行表盘目标检测;对检测到的表盘图像进行倾斜校正;将校正后的表盘图像展开为矩形表盘图像;基于矩形表盘图像进行指针位置检测;
读数模块,用于根据指针位置计算读数。
优选的实施例中,当系统进入仪表读数模式,首先通过接收模块获取待读数仪表图像,再通过检测模块对仪表图像进行表盘目标检测,然后对检测到的表盘图像进行倾斜校正,其次将校正后的表盘图像展开为矩形表盘图像,接着基于矩形表盘图像进行指针位置检测;最后通过读数模块根据指针位置计算读数,输出读数。
本发明适用于各类刻度均匀的圆盘指针表,如单指针、双指针等,而传统算法则需要对每种不同类型的表计分别进行识别;本发明基于深度学习的目标检测使本发明能够对处于复杂环境下的仪表进行检测及读数;本发明还能对获取到的图像中倾斜仪表进行校正,减小后续读数误差,使读数精度更加准确。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。