基于LSD和改进YOLOv2的压力表识读方法
2023-07-03石孟曦张文红郭佑民
石孟曦,张文红,张 磊,郭佑民
(1. 兰州交通大学机电技术研究所,甘肃 兰州 730070;2. 中国铁路兰州局集团有限公司科研技术监督所,甘肃 兰州 730000;3. 甘肃省物流及运输装备信息化工程技术研究中心,甘肃 兰州 730070)
1 引言
随着计算机技术与机器视觉的迅速兴盛,与此同时,与之相关的各类检测技术被广泛用于识别各种精密仪器,同时由于工业生产的规模的迅速扩大,各类仪表的数量也显著上升,因此如何快速、准确地获取仪器仪表的测量值已经成为了亟待解决的问题。目前虽然关于仪表读数识别技术的相关研究已取得一定的成果,但是在具体的应用场景中仍旧存在着亟待解决的问题[1]。
近些年以来,有关目标回归检测分析方法的网络模型基本都是以深度学习为基础,其中可以大致分为两种:其中第一种是以侯选框为基础的Faster R-CNN算法,第二种则是以深度学习为基础的SSD和YOLO算法[2],后者的目标检测结果速度更快并且对于大物件的目标检测结果准确率更高[3]。
Faster R-CNN系列算法根据先获取侯选框之后再实施分类的方法,得以确定多目标。它为了提高检测的准确性,巧妙地把检测问题用分类的方法完成,其优点主要是精度高,但同时也存在着速度慢的缺点[4]。
针对上述存在的问题,本文提出了一种结合YOLOv2与LSD的算法,在目标检测方面,选用精度优于Faster R-CNN,且速率优于传统ORB与SSD[5]的YOLOv2算法,采用残差网络ResNet50作为基础网络构架。同时,去除其最末尾的池化层与全连接层,并添加一个转移层。从而能够获得更完善的细粒度特征,提高识别同一目标的准确度和鲁棒性。在识别指针方面,本文使用了实时性与精度更优的LSD算法。
2 基于YOLOv2目标检测算法和LSD直线检测的压力表读数识别模型
本文采用机器视觉中YOLOv2检测方法首先分割出待测图像,准确提取仪表表盘区域。其次根据LSD检测算法,得到指针的精确快速的定位。最终,经过计算得出的指针倾角同时与待测压力表的刻度信息进行对比推算,获得待测压力表的示数值。本文主要引入了YOLOv2进行目标的检测以及LSD进行指针位置信息的提取。本文的具体工作流程如图1所示。
图1 基于YOLOv2 和LSD的仪表识读流程
3 YOLO网络模型的改进
3.1 单一检测目标
YOLOv2在通常情况下可以实现多类型目标的检测,由于只需要检测输入图像中的仪表,无需执行多类型目标检测。为了减少多目标网络检测和分类所带来的额外计算量,因而简化YOLOv2 的网络结构,并减少卷积核的样本规模到选择更具表现力的仪表特征,能够显著提高检测的精度与效率。
YOLOv2算法中,预训练图像的分辨率为448×448, Darknet-19的基本架构由19个卷积层、5个最大池化层组成。作为一种基本架构,Darknet-19 网络主要是通过使用全局平均池化层来实现准确预测[6]。此外,在每一个卷积层之后都会添加一个 BN (Batch Normalization)层,这种结构可以使模型达到更高的速度并降低模型过拟合概率。
Darknet-19网络能够表现出很强的目标检测效果,但在小范围内没有优势。在实际场景下,仪表在整幅图中占据较小的尺寸,而浅层特征是小尺寸仪表的关键依赖层。然而,在Darknet-19基础构成中,19个卷积层和4个池化层先提取特征,这阻止了高分辨率中的浅层特征的使用,会造成浅层训练不足特征。这会阻止使用高分辨率浅层特征,并会造成浅层训练特征不足。
3.2 网络结构搭建
ResNet50不仅可以有效解决残差网络数据深度过深可能引起的梯度爆炸问题,并且还可以有效缓解深度学习网络退化问题,而且基于该网络的数据训练处理过程要明显优于其它网络。
因此,本文充分考虑了ResNet50的优点,将其深层神经网络作为基础网络构架。通过选用残差神经网络ResNet50获取到待测压力表的特征,替换了原本YOLOv2 中的基础网络构架Darknet-19。同时,进一步对该深层神经网络做出相应的改进与完善,去除其最末尾的池化层与全连接层,并添加一个转移层。这样有效的融合了深浅特征,可以提取丰富的内容,获得更完善的细粒度特征。采用聚类算法K-means作为侯选框的选择策略,相比于传统策略,此算法能更为准确的识别同一类目标,并且摒弃无关侯选框。如图2显示了部分目标检测结果:
图2 不同位置中的仪表检测结果
3.3 训练结果评价
Loss值表明了在该训练中的预测结果与标定结果之间的偏差值,其中,Loss值和训练网络检测目标的精度呈现负相关的态势。图3为YOLOv2 与改进后的YOLOv2 的Loss值变化曲线图。
图3 Loss值变化曲线图
如图所示,Loss值在经历了较大程度的降低之后,逐渐呈现稳定的状态。就整体的变化过程而言,经过相应的改进后的YOLOv2的Loss值显然低于YOLOv2原模型,由此可以得知,本文做出的改进后的模型在目标准确度方面的确优于原模型。
通常根据精度(Preision,P)、召回率(Recall,R)与平均准确率(Average-Precision,AP)相关指标对搭建的网络结构进行综合评估。
(1)
在上式中,TP(TRUE P)包含的意义为预测为正例,同时真实结果也为正例的特征数,而FP(False P)包含的意义为预测为正例,而真实结果为负例的特征数。
召回率包含的意义为最终得到的正确的数值与所有正确的数值的比率,TN包含的意义为预测为负例,同时真实结果也为负例的特征数,FN包含的意义为预测为负例,而真实结果为正例的特征数。
(2)
精度是针对预测结果而言,表示的是真实的正例在预测为正的例子中所占的比率。
(3)
上式中,P代表Precision,r代表Recall,平均准确率即为P-R曲线下的包络区域的面积。通常情况下AP值与分类器的性能,两者会呈现正相关的态势。
本文提出的改进YOLOv2网络模型在检测精度上有一定的优势,通过多例测试结果可以得到两种算法的召回率和精度曲线如图4所示。
图4 召回率与精度曲线
如图4所示,最后压力表的分类结果可达到83%的召回率,之后,随着召回率的提高,精度逐渐下降,最后精度降低到94%左右,经过计算后得到的召回率从0到1之间的平均精度为96%,精度满足对待测压力表实现目标检测的要求。
4 仪表读数识别
4.1 图像预处理
在图像预处理阶段,在图像经过检测与校正之后即可得到用于待检的高质量目标图像,为了剔除外部无关的噪声与影响,进行均值滤波。采用sobel算子进行边缘检测。如图5为采用sobel算子。
图5 sobel算子进行边缘检测
图6为采用非极大值抑制的结果。
图6 非极大值抑制
4.2 指针直线检测
通常而言,Hough 变换是较为经典的检测方法,虽然它可以稳定地实现某些功能,但实际上存在的一些缺点不能忽视。例如,检测过程中需要手动设置参数以限制线段的数量,这样人为信息将降低算法的鲁棒性。因此针对Hough 法运算量大、缺乏实时性等不足,本文所采用的指针直线的提取方法,是由Gioi等人首次提出的LSD算法,以改善传统算法的计算实时性与精度[7]。
LSD直线提取算法的步骤[8]如下:
1)高斯降采样。即将图像长、宽进行缩放,再进行高斯滤波。
2)梯度的计算。像素点(x,y)处的灰度值为i(x,y)。梯度由以下公式来计算。
gx(x,y)=
(4)
gy(x,y)=
(5)
3)区域的增长。将采用过的邻域像素进行检测并标记。
4)更新区域的倾斜度。每次向该区域中增加新的像素时,则会更新其倾斜度为
(6)
种子点处的level-line角度即为初始角度,下标j是用来遍历该区域中的所有像素。
5)直线段的确定。
4.3 指针检测结果分析
为了测试文中改进方法的性能,从训练样本中选取图像来评估算法的实际效果,同时与传统方法进行了比较。图7是使用Hough变换法之后得到的结果,由此可知,传统的Hough变换存在着精度不足和易被误检的问题。图8是采用改进后的Hough变换的结果,相对于未进行改进的原方法而言,改进之后的效果较好,但准确性和精度仍旧不足。图9显示了LSD对指针直线的识别结果,由此可以表明此方法克服了传统方法的精度不足和容易误检的缺陷,提高了精度和准确度。
图7 Hough变换的结果
图8 改进Hough变换的结果
图9 LSD指针识别结果
在误检和漏检两个方面,根据图7和图8能够清楚地看出,传统的直线检测方法在自然场景图中会存在较多误检,并且在两组图像中也存在像着一定的漏检。因此,通过与原有的方法进行对比后,可以得知LSD可以达到更大程度上的准确度和更稳定的性能。
由表1能够清楚地看出,改进Hough变换法较Hough变换法耗时提升了24.5%,而LSD算法较Hough变换法耗时提升了71.9%,较改进Hough变换法耗时提升了62.8%。因此,LSD算法在提高计算效率这部分较其余两种算法更为显著。
表1 直线检测各算法耗时对比
4.4 角度法读数
压力表读数识别的角度法是利用待测压设待测表的指针与其右刻度线的夹角为α,指向该刻度线的值为L,待测表的指针与其左刻度线的夹角为β,指向该刻度线的值为H,被测仪表的最终读数由以下公式计算[9]:
(7)
在现实场景下,综合考虑外界因素的影响,在分析了50张样本图片之后,提取其中的10张,分别采用Hough算法、改进Hough算法、LSD算法并与人工识读进行比较,得到的结果如表2所示。由式(7)可算出LSD算法的识读率可达96%。
表2 直线检测各算法与人工识读对比
5 结论
本文完成的主要工作如下:
1)在传统指针式压力表读取方法中摒弃了缺乏稳定性的 ORB等算法[10],利用机器视觉中的 YOLOv2模型,提出了一种改进的YOLOv2算法,通过检测变电站场景中的压力表图片,能够准确提取压力表图像。由实验可以得出,改进后YOLOv2的Loss值明显低于传统的YOLOv2,同时改进后YOLOv2的平均精度为96%,优于传统的YOLOv2。
2)运用图像处理的方法与技术,对待测仪表图进行滤波降噪、边缘检测等去除干扰的一系列预处理,为下一步的示值识读打好基础。
3)结合LSD方法得到待测表的指针直线的精准位置信息,通过计算倾角来得到待测压力表的示值,由实验可以得出,LSD算法较Hough变换法耗时提升了71.9%,较改进Hough变换法耗时提升了62.8%。在现实场景下进行识读,LSD方法的准确率可达到96%。
从本文的实验中能够清楚地看出:由于压力表的外观和表盘之间的相似性差别,而且YOLOv2 算法在小型样本上的表现力也很高,所以在实验中进行检测时所获得的仪表位置信息也都是较为准确的,这也给接下来进行指针的提取和读数工作提供了良好的基础。在对压力表进行读数的时候,通过对图像进行预处理以及采用LSD 直线检测法,同时由于实验是在现实环境中进行的,因此在拍摄过程中,相机的倾斜和光线的反射等问题难以完全得到消除,这些影响因素都对压力表的读数造成了一些影响,但是总体来说,基于YOLOv2 算法和 LSD 直线检测算法的读数识别方法具有较高的准确度与较强的鲁棒性。