一种基于机器人巡检的指针式仪表读数识别方法与流程

文档序号:22430827发布日期:2020-10-02 10:12阅读:274来源:国知局
一种基于机器人巡检的指针式仪表读数识别方法与流程

本发明属于图像处理技术领域,尤其涉及一种基于机器人巡检的指针式仪表读数识别方法。



背景技术:

随着仪器仪表技术的快速发展,仪器仪表被广泛的应用于各行各业,仪表数量繁多,需求量大。指针式仪表的使用在我国许多工厂、交通设备中仍然有不可替代的地位。指针式仪表的优点是结实耐用、价格便宜,并且其示数的波动(即指针的摆动)能形象的表示出参数的变化,此外其比较突出的优点是:对于一些特殊的场合,机械式指针仪表其防冻特性都能让其很好地在天气寒冷的地方工作、其防水特性能让其在水下工作,这些特性让其发挥在恶劣环境下仍能正常工作的优势。指针式仪表一般通过两种方式读数:(1)直接人工读取表盘上的数据;(2)拍摄表盘图像进行处理获得数据。其中,方式(1)费时费力,受人为因素的影响,误差较大。方式(2)拍摄表盘的图像受摄像机摆放位置和角度、光照、表盘不干净等因素的影响,图像处理难度大,适应性差、算法通用性低。

伴随工业自动化、图像处理和模式识别技术的发展,对广泛应用于电力、石油、化工等行业的各类指针式仪表,出现了机器人智能巡检技术,以代替人工巡检,提高巡检效率,降低人工巡检的危险和巡检成本。机器人巡检,可以节省人力,确保人身安全,但是一般场所的巡检过程中会涉及到读取大量指针式表计读数的任务,而且现场情况多种多样,指针式表计的安装位置、角度等各不相同,也不可能为了机器人巡检,统一调整各指针式表计的安装位置和角度,所以如何使机器人识别不同角度、不同高度的指针式表计的读数,是目前机器人巡检工作中亟待解决的问题。



技术实现要素:

针对现有技术存在的不足,本发明所要解决的技术问题是,提供一种机器人巡检时,能够识别不同角度、不同高度的指针式仪表,具有较强适应性、鲁棒性及较高准确性的基于机器人巡检的指针式仪表读数识别方法。

为解决上述技术问题,本发明所采取的技术方案是:一种基于机器人巡检的指针式仪表读数识别方法,包括如下步骤:

(1)、获取包含待识别读数的指针式仪表表盘的图像;

(2)、使用yolo将cnn网络将输入的图片分割成s×s网格,然后每个单元格负责去检测那些中心点落在该格子内的目标;

(3)、采用yolo卷积网络来提取特征,然后使用全连接层来得到预测值,网络结构参考goolenet模型,包含24个卷积层和2个全连接层;

(4)、先在imagenet上进行预训练,其预训练的分类模型采用前20个卷积层,然后添加一个average-pool层和全连接层。预训练之后,在预训练得到的20层卷积层之上加上随机初始化的4个卷积层和2个全连接层;

(5)、首先从所有的检测框中找到置信度最大的那个框,然后挨个计算其与剩余框的iou,如果其值大于一定阈值(重合度过高),那么就将该框剔除;然后对剩余的检测框重复上述过程,直到处理完所有的检测框;

(6)、首先通过目标检测算法将每一个指针式仪表表盘检测出来,然后在检测框的基础上针对单个指针式仪表表盘做刻度起点位置、刻度终点位置、圆心位置及指针位置关键点检测;

(7)、神经网络输出指针表计的起始刻度、终止刻度、圆心、指针刻度4点关键点,然后依据关键点之间的内在联系,计算指针所对应的占比。

所述的基于机器人巡检的指针式仪表读数识别方法,所述步骤(2)中进行处理时,包含以下步骤:每个单元格会预测b个边界框以及边界框的置信度。置信度包含两个方面,一是这个边界框含有目标的可能性大小,二是这个边界框的准确度,前者记为pr(object),当该边界框是背景时,此时pr(object)=0,而当该边界框包含目标时,pr(object)=1,边界框的准确度用预测框与实际框的iou来表征,记为置信度定义为边界框的大小与位置用4个值来表征:(x,y,w,h),其中(x,y)是边界框的中心坐标,而w和h是边界框的宽与高,中心坐标的预测值(x,y)是相对于每个单元格左上角坐标点的偏移值,单位是相对于单元格大小。边界框的w和h预测值是相对于整个图片的宽与高的比例,理论上4个元素的大小在[0,1]范围,每个边界框的预测值包含5个元素:(x,y,w,h,c),其中前4个表征边界框的大小与位置,而最后一个值是置信度。

所述的基于机器人巡检的指针式仪表读数识别方法,所述步骤(2)中进行处理时,包括分类,对于每一个单元格给出预测出c个类别概率值,其表征的是由该单元格负责预测的边界框其目标属于各个类别的概率,计算出各个边界框类别置信度:每个单元格需要预测(b*5+c)个值,如果将输入图片划分为s×s网格,那么最终预测值为s×s×(b*5+c)大小的张量,对于pascalvoc数据,其共有20个类别,如果使用s=7,b=2,那么最终的预测结果就是7×7×30大小的张量。

所述的基于机器人巡检的指针式仪表读数识别方法,所述步骤(6)中进行处理时,首先通过目标检测算法将每一个指针式仪表表盘检测出来,然后在检测框的基础上针对单个指针式仪表表盘做刻度起点位置、刻度终点位置、圆心位置及指针位置关键点检测,首先将图像中所有的关键点都检测出来,然后将所有的关键点聚类成不同的个体。

所述的基于机器人巡检的指针式仪表读数识别方法,所述步骤(6)中进行处理时,主要网络结构分为多个stage,其中第一个stage会产生初步的关键点的检测效果,接下来的几个stage均以前一个stage的预测输出和从原图提取的特征作为输入。

本发明基于机器人巡检的指针式仪表读数识别方法的优点是:本发明通过目标检测,物体定位,图像分割,对指针型仪表的刻度起点位置、刻度终点位置、圆心位置及指针位置关键点进行识别,确定指针型表计表盘中指针的读数比例,保证指针模型识别读数的鲁棒性,能够使机器人识别不同角度、不同高度的指针式表计的读数。本发明能够识别不同角度、不同高度的指针式仪表,具有较强适应性、鲁棒性及较高准确性,值得被广泛推广应用。

附图说明

图1为本发明的两级检测流程图。

具体实施方式

下面结合附图以及具体实施例对本发明做进一步详细说明;

如图1所示,指针表计的一级检测,指针型表计的一级检测即检测指针型仪表的“仪表外边框”,用于确定仪表的具体位置;图像处理算法的检测技术都是基于yolo算法采用一个单独的cnn(卷积神经网络)模型实现end-to-end(端到端)的目标检测:

目标检测算法原理

在计算机视觉最基本的任务之一图像分类的基础上建立更复杂的任务:如目标检测,物体定位,图像分割等,见图1所示。目标检测可以看成图像分类与定位的结合,给定一张图片,系统要能够识别出图片的目标并给出其位置,由于图片中目标数是不定的,且要给出目标的精确位置。

目标检测也在无人驾驶中有所应用,如果能够在无人车上装载一个有效的目标检测系统,那么无人车将和人一样有了眼睛,可以快速地检测出前面的行人与车辆,从而作出实时决策。而在表计检测中也利用目标检测原理,定位表计确定位置,帮助判断和减少干扰,以进入二级检测。我们在指针表计的目标检测的算法做了一定的突破。目标检测算法我们主要涉及两类,一类是基于regionproposal的r-cnn系算法(r-cnn,fastr-cnn,fasterr-cnn),它们是two-stage的,需要先使用启发式方法(selectivesearch)或者cnn网络(rpn)产生regionproposal,然后再在regionproposal上做分类与回归。而另一类是yolo,ssd这类one-stage算法,其仅仅使用一个cnn网络直接预测不同目标的类别与位置。yolo在表计检测中的实效性优于r-cnn,准确度略低,但比较适用于表计一级检测,因此yolo是一级检测的主要方法,r-cnn作为调优的辅助手段。

我们介绍的是指针表计识别模型一级检测涉及到的其中一类yolo算法,其全称是youonlylookonce:unified,real-timeobjectdetection。本文主要讲述yolo-v1算法的原理,特别是算法的训练与预测中详细细节,最后将给出如何使用tensorflow实现yolo算法。

检测原理-滑动窗口与cnn

yolo算法是基于滑动窗口技术。采用滑动窗口的目标检测算法思路将检测问题转化为了图像分类问题。其基本原理就是采用不同大小和比例(宽高比)的窗口在整张图片上以一定的步长进行滑动,然后对这些窗口对应的区域做图像分类,这样就可以实现对整张图片的检测了,如dpm就是采用这种思路。但是这个方法有个缺点,就是你不知道要检测的目标大小是什么规模,所以你要设置不同大小和比例的窗口去滑动,因此需要选取合适的步长。但是这样会产生很多的子区域,并且都要经过分类器去做预测,这需要很大的计算量,所以你的分类器不能太复杂,因为要保证速度。解决思路之一就是减少要分类的子区域,这就是r-cnn的一个改进策略,其采用了selectivesearch方法来找到最有可能包含目标的子区域(regionproposal),其实可以看成采用启发式方法过滤掉很多子区域,这会提升效率。

使用cnn分类器时,滑动窗口非常耗时。但是结合卷积运算的特点,我们使用了cnn实现更高效的滑动窗口方法即就是一种全卷积的方法,简单来说就是网络中用卷积层代替了全连接层。输入图片大小是16x16,经过一系列卷积操作,提取了2x2的特征图,但是这个2x2的图上每个元素都是和原图是一一对应的,图上蓝色的格子对应蓝色的区域,这不就是相当于在原图上做大小为14x14的窗口滑动,且步长为2,共产生4个字区域。最终输出的通道数为4,可以看成4个类别的预测概率值,这样一次cnn计算就可以实现窗口滑动的所有子区域的分类预测。之所可以cnn可以实现这样的效果是因为卷积操作的特性,就是图片的空间位置信息的不变性,尽管卷积过程中图片大小减少,但是位置对应关系还是保存的。同时这个思路也被r-cnn借鉴,从而诞生了fastr-cnn算法。

尽管可以减少滑动窗口的计算量,但是只是针对一个固定大小与步长的窗口,还是远远不够的。yolo算法在表计模型中不再使用窗口滑动了,而是直接将原始图片分割成互不重合的小方块,然后通过卷积最后生产这样大小的特征图,基于上面的分析,可以认为特征图的每个元素也是对应原始图片的一个小方块,然后用每个元素来可以预测那些中心点在该小方格内的目标,这就是表计识别模型算法的朴素思想。下面将详细介绍设计理念。

我们首先将输入图片resize到448x448,然后送入cnn网络,最后处理网络预测结果得到检测的目标。相比r-cnn算法,它是一个统一的框架,速度更快,而且我们yolo的训练过程也是end-to-end的。

具体来说,使用yolo将cnn网络将输入的图片分割成s×s网格,然后每个单元格负责去检测那些中心点落在该格子内的目标,可以看到狗这个目标的中心落在左下角一个单元格内,那么该单元格负责预测这个狗。每个单元格会预测b个边界框(boundingbox)以及边界框的置信度(confidencescore)。所谓置信度其实包含两个方面,一是这个边界框含有目标的可能性大小,二是这个边界框的准确度。前者记为pr(object),当该边界框是背景时(即不包含目标),此时pr(object)=0。而当该边界框包含目标时,pr(object)=1。边界框的准确度可以用预测框与实际框(groundtruth)的iou(intersectionoverunion,交并比)来表征,记为因此置信度可以定义为很多人可能将yolo的置信度看成边界框是否含有目标的概率,但是其实它是两个因子的乘积,预测框的准确度也反映在里面。边界框的大小与位置可以用4个值来表征:(x,y,w,h),其中(x,y)是边界框的中心坐标,而w和h是边界框的宽与高。还有一点要注意,中心坐标的预测值(x,y)是相对于每个单元格左上角坐标点的偏移值,并且单位是相对于单元格大小的。而边界框的w和h预测值是相对于整个图片的宽与高的比例,这样理论上4个元素的大小应该在[0,1]范围。这样,每个边界框的预测值实际上包含5个元素:(x,y,w,h,c),其中前4个表征边界框的大小与位置,而最后一个值是置信度。

还有分类问题,对于每一个单元格其还要给出预测出c个类别概率值,其表征的是由该单元格负责预测的边界框其目标属于各个类别的概率。但是这些概率值其实是在各个边界框置信度下的条件概率,即pr(classi|object)。值得注意的是,不管一个单元格预测多少个边界框,其只预测一组类别概率值,这是yolo算法的一个缺点,在后来的改进版本中,yolo9000是把类别概率预测值与边界框是绑定在一起的。同时,我们可以计算出各个边界框类别置信度(class-specificconfidencescores):边界框类别置信度表征的是该边界框中目标属于各个类别的可能性大小以及边界框匹配目标的好坏。后面会说,一般会根据类别置信度来过滤网络的预测框。

总之,每个单元格需要预测(b*5+c)个值。如果将输入图片划分为s×s网格,那么最终预测值为s×s×(b*5+c)大小的张量。对于pascalvoc数据,其共有20个类别,如果使用s=7,b=2,那么最终的预测结果就是7×7×30大小的张量。在下面的网络结构中我们会详细讲述每个单元格的预测值的分布位置。

网络设计

我们采用yolo卷积网络来提取特征,然后使用全连接层来得到预测值。网络结构参考goolenet模型,包含24个卷积层和2个全连接层,对于卷积层,主要使用1x1卷积来做channlereduction,然后紧跟3x3卷积。对于卷积层和全连接层,采用leakyrelu激活函数:max(x,0.1x)。但是最后一层采用了线性激活函数。可以看到网络的最后输出为7×7×30大小的张量。这和前面的讨论是一致的。对于每一个单元格,前20个元素是类别概率值,然后2个元素是边界框置信度,两者相乘可以得到类别置信度,最后8个元素是边界框的(x,y,w,h)。对于边界框为什么把置信度c和(x,y,w,h)都分开排列,而不是按照(x,y,w,h,c)这样排列,其实纯粹是为了计算方便,因为实际上这30个元素都是对应一个单元格,其排列是可以任意的。但是分离排布,可以方便地提取每一个部分。这里来解释一下,首先网络的预测值是一个二维张量p,其shape为[batch,7×7×30]。采用切片,那么p[:,7*7*20]就是类别概率部分,而p[:,7*7*20:7*7*(20+2)]是置信度部分,最后剩余部分p[:,7*7*(20+2):]是边界框的预测结果。这样,提取每个部分是非常方便的,这会方面后面的训练及预测时的计算。

网络训练

在训练之前,先在imagenet上进行了预训练,其预训练的分类模型采用前20个卷积层,然后添加一个average-pool层和全连接层。预训练之后,在预训练得到的20层卷积层之上加上随机初始化的4个卷积层和2个全连接层。由于检测任务一般需要更高清的图片,所以将网络的输入从224x224增加到了448x448。

下面是训练损失函数的分析,yolo算法将目标检测看成回归问题,所以采用的是均方差损失函数。但是对不同的部分采用了不同的权重值。首先区分定位误差和分类误差。对于定位误差,即边界框坐标预测误差,采用较大的权重λcoord=5。然后其区分不包含目标的边界框与含有目标的边界框的置信度,对于前者,采用较小的权重值λnoobj=0.5。其它权重值均设为1。然后采用均方误差,其同等对待大小不同的边界框,但是实际上较小的边界框的坐标误差应该要比较大的边界框要更敏感。为了保证这一点,将网络的边界框的宽与高预测改为对其平方根的预测,即预测值变为

另外一点,由于每个单元格预测多个边界框。但是其对应类别只有一个。那么在训练时,如果该单元格内确实存在目标,那么只选择与groundtruth的iou最大的那个边界框来负责预测该目标,而其它边界框认为不存在目标。这样设置的一个结果将会使一个单元格对应的边界框更加专业化,其可以分别适用不同大小,不同高宽比的目标,从而提升模型性能。大家可能会想如果一个单元格内存在多个目标怎么办,其实这时候yolo算法就只能选择其中一个来训练,这也是yolo算法的缺点之一。要注意的一点时,对于不存在对应目标的边界框,其误差项就是只有置信度,坐标项误差是没法计算的。而只有当一个单元格内确实存在目标时,才计算分类误差项,否则该项也是无法计算的。

综上讨论,最终的损失函数计算如下:

其中第一项是边界框中心坐标的误差项,指的是第i个单元格存在目标,且该单元格中的第j个边界框负责预测该目标。第二项是边界框的高与宽的误差项。第三项是包含目标的边界框的置信度误差项。第四项是不包含目标的边界框的置信度误差项。而最后一项是包含目标的单元格的分类误差项,指的是第i个单元格存在目标。这里特别说一下置信度的target值ci,如果是不存在目标,此时由于pr(object)=0,那么ci=0。如果存在目标,pr(object)=1,此时需要确定当然你希望最好的话,可以将iou取1,这样ci=1,但是在yolo实现中,使用了一个控制参数rescore(默认为1),当其为1时,iou不是设置为1,而就是计算truth和pred之间的真实iou。不过很多复现yolo的项目还是取ci=1,这个差异不会太影响结果。

网络预测

yolo算法的预测过程是基于非极大值抑制算法(nonmaximumsuppression,nms),这个算法不单单是针对yolo算法的,而是所有的检测算法中都会用到。nms算法主要解决的是一个目标被多次检测的问题,人脸检测,可以看到人脸被多次检测,但是其实我们希望最后仅仅输出其中一个最好的预测框。采用nms算法来实现这样的效果:首先从所有的检测框中找到置信度最大的那个框,然后挨个计算其与剩余框的iou,如果其值大于一定阈值(重合度过高),那么就将该框剔除;然后对剩余的检测框重复上述过程,直到处理完所有的检测框。yolo预测过程也需要用到nms算法。

指针表计的二级检测

指针表计的二级检测即指针型仪表的刻度起点位置、刻度终点位置、圆心位置及指针位置关键点;主要目的是为了确定指针型表计表盘中指针的读数比例,保证指针模型识别读数的鲁棒性。

算法概述

指针仪表的二级级检测即读数识别是基于关键点检测算法,我们拿人体骨骼关键点检测算法为例来介绍其实现方法。

多人人体骨骼关键点检测主要有两个方向,一种是自上而下,一种是自下而上,其中自上而上的人体骨骼关键点定位算法主要包含两个部分,人体检测和单人人体关键点检测,即首先通过目标检测算法将每一个人检测出来,然后在检测框的基础上针对单个人做人体骨骼关键点检测,其中代表性算法有g-rmi,cfn,rmpe,maskr-cnn,andcpn,目前在mscoco数据集上最好的效果是72.6%;自下而上的方法也包含两个部分,关键点检测和关键点聚类,即首先需要将图片中所有的关键点都检测出来,然后通过相关策略将所有的关键点聚类成不同的个体,其中对关键点之间关系进行建模的代表性算法有paf,associativeembedding,partsegmentation,mid-rangeoffsets,目前在mscoco数据集上最好的效果是68.7%。

我们的人体骨骼关键点检测其中关键点回归的groundtruth的构建问题,主要使用了两种思路,coordinate和heatmap,coordinate即直接将关键点坐标作为最后网络需要回归的目标,这种情况下可以直接得到每个坐标点的直接位置信息;heatmap即将每一类坐标用一个概率图来表示,对图片中的每个像素位置都给一个概率,表示该点属于对应类别关键点的概率,比较自然的是,距离关键点位置越近的像素点的概率越接近1,距离关键点越远的像素点的概率越接近0,具体可以通过相应函数进行模拟,如gaussian等,如果同一个像素位置距离不同关键点的距离大小不同,即相对于不同关键点该位置的概率不一样,这时可以取max或average。

对于两种groundtruth的差别,coordinate网络在本质上来说,需要回归的是每个关键点的一个相对于图片的offset,而长距离offset在实际学习过程中是很难回归的,误差较大,同时在训练中的过程,提供的监督信息较少,整个网络的收敛速度较慢;heatmap网络直接回归出每一类关键点的概率,在一定程度上每一个点都提供了监督信息,网络能够较快的收敛,同时对每一个像素位置进行预测能够提高关键点的定位精度,在可视化方面,heatmap也要优于coordinate,除此之外,实践证明,heatmap确实要远优于coordinate。

最后,对于heatmap+offsets的groundtruth构建思路主要是在距离目标关键点一定范围内的所有点的概率值都为1,在heatmap之外,使用offsets,即偏移量来表示距离目标关键点一定范围内的像素位置与目标关键点之间的关系。heatmap+offsets不仅构建了与目标关键点之间的位置关系,同时offsets也表示了对应像素位置与目标关键点之间的方向信息,要优于单纯的heatmap构建思路。

自上而下(top-down)的人体骨骼关键点检测算法主要包含两个部分,目标检测和单人人体骨骼关键点检测,对于关键点检测算法,首先需要注意的是关键点局部信息的区分性很弱,即背景中很容易会出现同样的局部区域造成混淆,所以需要考虑较大的感受野区域;其次人体不同关键点的检测的难易程度是不一样的,对于腰部、腿部这类关键点的检测要明显难于头部附近关键点的检测,所以不同的关键点可能需要区别对待;最后自上而下的人体关键点定位依赖于检测算法的提出的proposals,会出现检测不准和重复检测等现象,我们是基于这三个特征去进行相关改进,接下来我将简要描述一下我们的算法思路。

convolutionalposemachines:将深度学习应用于人体姿态分析,同时用卷积图层表达纹理信息和空间信息。主要网络结构分为多个stage,其中第一个stage会产生初步的关键点的检测效果,接下来的几个stage均以前一个stage的预测输出和从原图提取的特征作为输入,进一步提高关键点的检测效果。用各部件响应图来表达各部件之间的空间约束,响应图和特征图一起作为数据在网络中传递。人体关键点在空间上的先验分布会指导网络的学习,假如stage1的预测结果中右肩关键点的预测结果是正确的,而右肘关键点的预测是错误的,那么在接下来的stage中肩和肘在空间上的先验分布会指导网络的学习。除此之外,使用多阶段监督,对于各个阶段的预测输出都有监督训练,避免过深网络难以优化的问题,而且感受野随着stage的增多而逐渐增大,最后是第一阶段对原图提取特征的网络区别于stage>1的特征提取网络,因为第一个阶段网络的作用是预测初步的结果,而后几个阶段的作用是结合关键点空间先验知识和对原图提取的特征对上一个stage预测的结果做进一步精化。

cascadedpyramidnetwork:主要关注的是不同类别关键点的检测难度是不一样的,整个结构的思路是先检测比较简单的关键点、然后检测较难的关键点、最后检测更难的或不可见的关键点。

具体实现分为两个stage,globalnet和refinenet。其中globalnet主要负责检测容易检测和较难检测的关键点,对于较难关键点的检测,主要体现在网络的较深层,通过进一步更高层的语义信息来解决较难检测的关键点问题;refinenet主要解决更难或者不可见关键点的检测,这里对关键点进行难易程度进行界定主要体现在关键点的训练损失上,使用了常见的hardnegativemining策略,在训练时取损失较大的top-k个关键点计算损失,然后进行梯度更新,不考虑损失较小的关键点。

rmpe:主要考虑的是自上而下的关键点检测算法在目标检测产生proposals的过程中,可能会出现检测框定位误差、对同一个物体重复检测等问题。检测框定位误差,会出现裁剪出来的区域没有包含整个人活着目标人体在框内的比例较小,造成接下来的单人人体骨骼关键点检测错误;对同一个物体重复检测,虽然目标人体是一样的,但是由于裁剪区域的差异可能会造成对同一个人会生成不同的关键点定位结果。

因此提出了一种方法来解决目标检测产生的proposals所存在的问题,即通过空间变换网络将同一个人体的产生的不同裁剪区域(proposals)都变换到一个较好的结果,如人体在裁剪区域的正中央,这样就不会产生对于一个人体的产生的不同proposals有不同关键点检测效果。

基于人体关键点检测原理,提出了一种指针表计的关键点检测方法,神经网络输出指针表计的起始刻度、终止刻度、圆心、指针刻度4点关键点,然后依据关键点之间的内在联系,计算指针所对应的占比。

当然,上述说明并非是对本发明的限制,本发明也并不限于上述举例,本技术领域的普通技术人员,在本发明的实质范围内,作出的变化、改型、添加或替换,都应属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1