黄杨乐天,刘宜胜,陈 锬,刘丹丹
(浙江理工大学 机械工程学院,杭州 310018)
以前国内大多数的数据中心机房主要依靠人工目视的方式进行机房巡检,但是随着数据中心及通信机房的规模逐步扩大,巡检工作也变得越来越繁重。据此,基于移动机器人的机房巡检系统应运而生,实现无人值守,提高巡检效率[1-2]。目前巡检系统在电网行业应用比较广泛,特别是在变电站、配电室等[3-4]。研究前期的仪表识别主要采用的是传统的视觉算法,图像识别的准确度非常依赖于人工设计的图像特征提取方法[5]。传统的图像特征提取方法基于匹配的机制,利用识别对象的特征进行匹配实现目标检测[6],但由于变电站的环境复杂导致该方法的鲁棒性较差,难以满足项目的需要。
近年来,以深度学习为代表的仪表识别技术已经应用在机器人上[7-8]。基于深度学习的目标检测技术从检测过程可分为二阶段和单阶段两类[9],代表的网络有R-CNN 系列[10]和YOLO 系列[11-12]。本文从机房巡检识别系统出发,设计了基于深度学习的仪表定位算法以及读数识别方法,并实装于杭州某轨道交通信号系统龙头企业。
仪表的总体识别方案如图1 所示。由于仪表图像中表盘占比往往较小,因此采用了对小目标检测精度高的Faster R-CNN 网络。目前没有公开的机房仪表数据集,本实验根据实际场景建立了一个数据集。首先收集了巡检机器人采集到的图像,按8∶1∶1的比例划分为训练集、测试集和验证集供网络模型训练。为了提高模型的泛用性,避免过拟合,对训练集进行了数据增强,包括旋转、镜像和缩放,改变图像的亮度、对比度、噪声。对这些方法进行随机组合,来增加数据的多样性,经过数据增强,共得到了1584 张图像。
图1 指针仪表的识别流程Fig.1 Identification process of pointer instruments
为了提高检测模型的精度,本文对其进行了改进。首先使用残差网络对原始图像进行特征提取;接着,区域生成网络根据特征图在原始图像中生成一定数量的候选框,对框内对象进行分类和回归计算,筛选包含较多目标的候选框,池化模块处理筛选后的候选框;最后,目标分类模块对候选框内的内容进行分类,坐标回归模块执行坐标偏差量的回归计算得到更接近目标实际边缘的边界框。本文使用改进的Faster R-CNN 网络结构如图2 所示。
图2 改进后的Faster R-CNN 网络框架Fig.2 Improved Faster R-CNN network framework
常用的主干特征提取网络有VGG16、ResNet50等。ResNet 最大的特点是使用了残差块,残差块的引入使其有更深的网络架构,而不会造成梯度消失或过拟合,增加网络的非线性,提高了检测的精度;同时参数比浅层网络更少,性能更好且收敛速度更快,计算速度大大提高。该结构由2 个卷积层和1个跨层连接组成,如图3 所示。这个跨层连接允许梯度直接跨过1 个或多个卷积层,可以将输入的特征图直接添加到输出中,从而保留更多的特征信息。表1 中对比了不同深度的ResNet 网络结构。
表1 三种深度的ResNet 网络结构Tab.1 Three deep ResNet network structures
图3 残差结构模块Fig.3 Residual structure module
区域生成网络依靠RPN(region proposal network)以卷积层提取的特征图作为输入,基于滑动窗口机制,在每个窗口位置上生成k 个锚点,每个锚点与多个不同尺度和宽高比的候选目标框相关联,通过对每个锚点进行二分类和边界框回归。候选框回归层输出是候选框的4 个位置坐标,分类层输出是预测前景和背景概率的2 个分数。比较每个候选框的得分并进行分类,判断候选框属于包含仪表还是背景,并利用线性回归来获得更接近仪表实际边缘的边界框。
RoI Pooling 将RoI 区域划分为一个固定大小的网格,而固定大小网格可能无法完全覆盖RoI,从而导致信息的丢失,且当RoI 很小时,RoI Pooling的固定网格大小可能会导致特征量不足。为了提高仪表表盘的识别精度,将原池化层中的RoI Pooling改进为RoI Align,它取消了RoI Pooling 的严格量化,将提取的特征与输入对齐,避免了RoI 边界的量化,保留浮点数,通过双线性插值计算多个样本点的精确值,并将多个样本点的最大值或平均值聚合以得到最终值。这样,RoI Align 可以更精确地捕捉RoI 内的特征,同时也可以充分利用RoI 内的像素信息,从而提高了目标检测和物体识别的准确性。
在RPN 训练期间,Faster R-CNN 为网络训练的每个候选框分配一个二进制标签。以下2 种类型的锚被指定为正标签:具有最高交并比(IoU)的锚与外部目标框重叠;锚对于任何目标具有高于0.7 的IoU。此外,具有低于0.3 的IoU 的非正锚被分配负标签。Faster R-CNN 的总损失函数包括分类和回归损失,损失函数定义如下:
式中:i 为小批量数据中锚点i 的索引;pi为锚点i成为目标对象的概率,如果锚是目标对象(正),则目标真实标签为1,如果锚是背景(负),则为0;Ncls为小批量的数目;Nreg为锚点的数量;ti为候选框与锚点的4 个坐标偏移量为实际的偏移量。这里输出的是坐标偏移量,要得到修正后的锚点还要用原坐标和这个偏移量进行运算,偏移量计算公式如下:
式中:w、h、x 和y 分别表示候选框的宽度、高度、x 坐标和y 坐标;wa、w*分别定义为候选框和锚点框的偏移量和实际偏移量,同样适用于x,y,h。对于分类部分采用双对数损失函数,其计算公式如下:
式中:R 是smoothL1函数,其计算公式如下:
由于提取到的指针式仪表区域边框可能会发生倾斜,影响计算指针夹角的精确度,需要对表盘区域进行图片矫正。本实验所涉及均为矩形仪表,故利用边框直线的倾斜角度对其进行矫正。基于图像边缘检测使用的各类算子对图像进行处理,并进行霍夫变换检测直线,如图4 所示。可以发现,Sobel算子几乎没有检测到边框直线;Scharr 算子检测到的直线过多,对后续筛选边框直线造成了困难。对比Canny,Laplacian 两类算子处理后的图片,均可以很好地检测出边框直线,而经过Laplacian 算子处理后检测到的直线更贴合边框且无其余直线影响。故Laplacian 算子处理后进行霍夫变换能得到更符合要求的直线,然后从中筛选出相互垂直的直线,并保留最外端的线段,通过仿射变换矫正图片。矫正流程如图5 所示。
图4 各类边缘算子检测后的霍夫变换图Fig.4 Hough transform graph after detection of various edge operators
图5 仪表图片矫正流程Fig.5 Instrument image correction process
经过矫正后的仪表图片存在背景噪声等问题。为了精确提取指针,需要对图像进行滤波和形态学处理。首先,遍历整张图像进行轮廓检测,由于指针是细长型的轮廓,因此可以通过长宽比来筛选目标轮廓;然后使用霍夫变换来检测指针所在的直线;在矫正后的图像中提取到指针直线时,其与水平线的夹角即为指针的旋转角度。其处理流程如图6所示。
图6 指针提取过程Fig.6 Pointer extraction process
最后使用角度法对指针式仪表进行读数,其计算公式为
式中:Vmin表示零刻度线数值;Vmax表示最大刻度线数值;θ0表示指针旋转角度;θ1表示零刻度线与最大刻度线间的夹角。
本文使用的深度学习框架为Pytorch,操作系统为Windows 10。其中GPU 为NVIDIA GeForce RTX 3090,显存为32 G;Cuda 与Cudnn 版本11.3、Pyotrch版本1.11、Python 版本3.9、Opencv 版本4.5。实验中的参数设置batch_size=8,epoch=500,学习率=0.001,权重变化=0.0001。
本文采用参数量(Parameters)、精确度(Precision,P)、召回率(Recall,R)、平均精确度(mAP)和F1 评分指标对模型的性能进行了客观的评价。参数量指的是模型所包含的参数的数量。精确度是最常用的评价指标,它是正确的目标数除以检测到的目标数。召回率是所有正例被分对的比率。平均精确度是衡量模型在所有类别中的平均值。F1 评分为精确度和召回率的加权平均值。具体计算公式如下:
式中:TP 为将正类预测为正类数样本数量;FP 为将负类预测为正类数样本数量;FN 为将负类预测为负类数样本数量;TN 为将正类预测为负类数样本数量。
4.3.1 网络改进对比
表2 所示为不同池化策略的检测结果对比,可知采用RoI Align 的每类仪表检测精度均高于RoI Pooling,特别是对于电流表表盘,其准确度提高了10%。表3 显示随着ResNet 网络层数的加深,模型的识别精度越来越高,说明在本数据集上加深网络更好地提取了表盘特征,提高了模型的识别准确率,其中ResNet152 提升精度最高,平均提升了0.42%。
表2 不同池化策略的识别准确率Tab.2 Detection accuracy of different pooling strategies
表3 不同ResNet 层数对比Tab.3 Comparison of different ResNet layers
4.3.2 消融和对比实验
为了验证网络改进的有效性,对改进Faster RCNN 进行了消融实验,并和目前主流的YOLO 系列检测模型性能进行了对比。由表4 可以看出,经过改进池化策略和加深残差网络层数的Faster RCNN 比原模型的mAP 提升了6.2%,F1 得分提高了0.06。由表5 可以看出,轻量化模型YOLOv7-tiny的平均准确率高于其他YOLO 模型,改进Faster RCNN 的F1 得分与YOLOv7 系列相对持平,mAP 高出0.76%。
表4 Faster R-CNN 消融实验结果Tab.4 Faster R-CNN ablation experimental results
表5 主流模型对比实验Tab.5 Comparison experiment of mainstream models
4.3.3 指针读数结果
搭载本文算法的巡检系统能够对指针式仪表做出准确识别。随机选取10 个仪表图像,将本实验的识别结果与真实读数进行比较,得到相对误差,读数实验如表6 所示。平均相对误差在0.73%,最大误差稳定在2%之内,取得了较好的准确度,符合巡检识别的精度要求。
表6 读数结果对比Tab.6 Comparison of reading results
本文从机房巡检识别系统出发,构建了机房巡检系统总体架构,同时对其方案进行设计。基于深度学习的仪表定位算法,针对指针仪表的表盘读数的边缘检测结合霍夫变换的识别算法,有效提高了识别准确率,且误差小于2%。经过轨道交通信号公司测试人员测试用例,最终得到指针式表计识别率为96%,最大读数误差小于4%,符合企业巡检需求,并投入生产使用,具有较好的实际应用价值。