基于深度学习的电表字符缺陷检测方法

2021-03-22 03:43赵卫东黄汉成

赵卫东,陈 凤,黄汉成,程 伟

(安徽工业大学电气与信息工程学院,安徽马鞍山243032)

电表实际生产中,由于存在显示器笔画段损坏或显示屏损坏等问题,电表显示屏上的字符会出现微小缺陷。传统目标检测方法包括方向梯度直方图(histogram of gradient,HOG)、支持向量机(support vector machine,SVM)和可变形组件模型(deformable part model,DPM)等,存在区域选择策略的针对性低、复杂度高、窗口多余等缺点,难以保证检测结果的准确性。实际生产应用中,目标背景复杂多变,而传统字符检测方法需单一的图片背景对图片进行预处理、字符定位识别等,过程复杂且检测精度也无法保证。在人工智能快速发展的时代,基于深度学习的目标检测已成为检测的重要研究方向。基于深度学习的目标检测方法可分为单级、双级和多级,单级方法是将整个流程串联统一,直接得出检测结果,主要包括单级多框预测器(single shot-multibox detector,SSD)、RetinaNet、梯 度 均 衡 机 制(gradient harmonizing mechanism,GHM)、YOLOv3等;双级方法是将整个检测流程分为两部分,即生成候选框和识别框内物体,主要包括Faster RCNN、Mask RCNN、SPP-Net等;多级方法包括Cascade RCNN等。其中RCNN为区域卷积神经网络(region with convolutional neural netlooks)

随着目标检测算法的不断优化改进,基于深度学习的目标检测应用越来越多,朱丽倩针对传统的数显仪表字符识别问题,提出一种基于深度学习的字符自动检测方法,但其算法网络模型结构复杂,检测识别一张图片耗时长,无法满足工业生产的实时性要求;吉训生等针对电路板上模糊的微小字符,设计一种改进Faster RCNN算法的字符检测方法,提高了字符检测精度,但仍存在部分漏检情况且检测速度较慢;付磊等使用优化的RetinaNet网络完成对医用塑瓶气泡、积料等生产缺陷进行实时检测,检测精度良好,但检测时间较长。一张完整的电表图片中含大量字符,单次检测耗时长且精度低,无法满足工业生产的要求。针对该问题,设计一种Faster RCNN与RetinaNet相结合的深度学习算法,将电表字符进行分块检测,采用召回率、查准率、平均准确率均值和检测速度等4个指标评估算法性能。

1 电表字符缺陷检测算法

1.1 电表字符区域分块算法

1.1.1 Faster RCNN算法结构

Faster RCNN 算法分为两个网络结构,分别为候选框提取(region proposal networks,RPN)网络和Fast RCNN网络,两个网络共享特征图的一层。其中:RPN 是全卷积神经网络,用于提取候选框;Fast RCNN 基于RPN 提取的建议框检测并识别建议框中的目标。Faster RCNN 算法结构如图1。使用一组CNN提取输入图像的特征图,将提取的特征图作为RPN和分类回归网络的输入,RPN判断建议框中是否存在目标,并进行边界框回归、修正建议框,从而得到相对准确的建议框。

1.1.2 RPN

如图1 所示,在Faster RCNN 算法结构中,RPN处于中间部分,使用神经网络自主学习生成候选框,在特征提取网络输出的特征图上进行滑窗生成区域建议框。RPN结构如图2。

图1 Faster RCNN算法结构Fig.1 Faster RCNN algorithm structure

图2 RPN结构Fig.2 RPN structure

1.1.3 损失函数

Faster RCNN 的损失主要分为RPN 的损失和Fast RCNN 的损失,两部分损失均包括分类损失和回归损失,计算公式如下

分类损失公式如下

RPN分类损失函数如

回归损失函数如

其中smooth(x)为平滑函数,其表达式如

其中x=t-t。

1.2 电表字符缺陷检测算法

1.2.1 RetinaNet算法结构

分别采用50层的深度残差网络(ResNet)、特征金字塔网络(feature pyramid networks,FPN)作为RetinaNet算法的特征提取网络和特征融合网络,算法结构如图3。使用深度残差网络提取高层语义特征映射,之后在特征金字塔网络中重组特征,最后将特征送入分类和回归子网络得出检测结果。

1.2.2 FPN

FPN是RetinaNet的主干网络,其网络结构如图3中间部分。FPN通过输入单尺度、随意大小的图像,得到多层次与特征图大小成比例的输出。通常的卷积神经网络是自底向上卷积,使用最后一层特征图进行预测,如SPP-Net,只采用网络最后一层的特征。FPN可针对ResNet网络中的多尺度特征进行强化获得包含多尺度目标区域信息的候选框,最后将FPN 候选框上的两个全连接层分别用两个FCN(fully convolutional networks)子网络代替,该网络最大的创新就是使用Focal Loss函数代替传统的交叉熵函数,其可同时利用低层特征高分辨率和高层特征的高语义信息,通过融合不同层的特征达到预测效果。

图3 RetinaNet算法结构Fig.3 RetinaNet algorithm structure

1.2.3 Focal Loss损失函数

在RetinaNet模型中,针对样本类别不均匀及分类难度不平衡的问题,引入Focal Loss函数。Focal Loss在标准交叉熵损失函数的基础上,增加类别权重α 和样本难度权重因子(1-p),以提高模型的检测精度。常用交叉熵函数(CE)定义如

其中:p ∈[0,1];y 为聚焦参数;p的定义如下式

为解决类别不平衡的问题,在交叉熵函数基础上增加权重参数α,构成平衡交叉熵函数,定义如下式

其中:α ∈[0,1];α的定义式与p相同。即使增加权重参数,也不能区分简单和困难样本,在交叉熵损失函数增加调节因子(1-p)和可调节聚焦参数y,构成聚焦损失函数,定义如下式

其中FL(p)为聚焦损失函数,当p趋于0时,(1-p)也趋于0,样本权重越小。

2 实验结果与分析

实验平台:CPU 为Intel Core i7-6800K@3.400 GHz,GPU 为两块NVIDIA GTX1080Ti,内存为16 GB,操作系统为Ubuntu16.04、深度学习框架为PyTorch。采集电表图片的相机型号为大恒MER-2000-5 GM,分辨率为5 496×3 672。使用Faster RCNN算法对图片检测分类,再将图片裁剪为9块区域,使用RetinaNet算法分别对9块区域的字符进行缺陷检测。使用训练好的Faster RCNN和RetinaNet算法模型对测试集进行检测实验,针对检测样本,其R(recall,召回率)和P(precision,查准率)定义如下:

其中:T为存在的缺陷被检测出的样本数量;F为存在的缺陷没有被检测出的样本数量;F为不存在的缺陷却被检测出的样本数量。实验结果的平均准确率均值P定义如下:

其中:P为平均准确率均值;j为当前类别索引;A 为平均准确率;C为检测类别数。

2.1 分块实验

采集300张电表显示屏图片,使用labelImg对图片进行特征标注,任选其中250张作为训练数据集输入神经网络训练,剩余50张作为测试集。标注如图4,整块电表的字符分块类别分别为a,a,b,b、c,c,c,d,d。其中:a区域为第一行第一个字符到“反”字;a区域为第一行的“向”字到“数”字;b区域为第二行的第一个字符到“电”字;b区域为第二行的“量”字到“号”字;c区域为第三行前三列图形;c区域为第三行中间的“8”和小数点;c区域为第三行“8”后的单位字符等;d区域为第四行的第一个字符到“成”字;d区域为第四行的“功”字到“积”字。训练完成,对测试集图片进行测试,测试结果如图5。

图4 电表字符的分块标注Fig.4 Block marking of meter characters

图5 电表字符分块检测结果Fig.5 Test results of character block of meter

为测试分块实验算法的性能,采用RetinaNet,SSD,RFCN,Faster RCNN算法分别对字符进行分块检测,检测结果如表1。比较表1可知,在Faster RCNN算法下类别检测的召回率、查准率均在99%以上,平均准确率均值为99.9%,检测速度为0.60 s/张。从检测精度和速度上综合比较,RetinaNet 算法检测速度高于Faster RCNN,但其检测精度低于Faster RCNN算法,其他两算法在检测精度上均不及Faster RCNN算法。综合比较各指标,选择Faster RCNN算法作为字符区域分块算法。

表1 不同算法分块实验结果对比Tab.1 Comparison of block experiment results of different algorithms

2.2 字符缺陷检测实验

使用labelImg对分块后的2 700张图片进行缺陷标注,其中a,a,b,b,c,c,c,d,d区域分别有300张,每块区域字符按照顺序进行缺陷标注。如第一块(a)每个字符缺陷按照a,a,a,…顺序标注;第二块(a)每个字符缺陷按照b,b,b,…顺序标注,第三块(b)每个字符缺陷按照c,c,c,…顺序标注,第四块(b)每个字符缺陷按照d,d,d,…顺序标注;以此类推,最后一块(d)每个字符缺陷按照i,i,i,…顺序标注。将每块的300张图片分别输入Faster RCNN和RetinaNet神经网络训练,各块字符训练测试结果如图6。

图6 电表字符缺陷检测结果Fig.6 Test results of character defect of meter

从图6可观察到,对于随机选取的测试集,缺陷字符均被检测,检测边框精度较高,字符被完整检测。b,c,d区域字符缺陷检测的平均准确率均值如图7。由图7可看出:数据集为300张时,RetinaNet算法下b块缺陷检测的平均准确率均值为80.3%,c块检测的平均准确率均值为90.1%,d块检测平均准确率均值的71.9%,检测精度不高;加大b,c,d块的训练样本量,将图片增加到400 张,且将阈值从0.50 上调至0.65,重复训练b,c,d块,测试后的平均准确率均值分别为98.5%,100%,98.9%。由此表明,增加样本量可有效提高检测精度。

采用RetinaNet,SSD,RFCN算法对字符进行检测,结果如表2。由表2可看出,RFCN算法的检测速度比RetinaNet算法快0.02 s/张,但RetinaNet算法的检测精度高于RFCN及其他两算法。故使用RetinaNet算法更能满足工业生产的要求。

图7 b2,c1,d2区域字符缺陷检测的平均准确率均值Fig.7 Mean average accuracy of character defect detection in b2,c1,d2 regions

表2 不同算法字符缺陷检测实验结果对比Tab.2 Comparison of experimental results of character defect detection based on different algorithms

3 结 论

提出一种结合Faster RCNN 和RetinaNet 的电表字符缺陷检测方法,利用Faster RCNN 作为电表字符区域分块算法,完成对电表字符的分块提取,利用RetinaNet作为电表字符缺陷检测算法,完成对各块区域字符缺陷的精确检测。实验结果表明,所提方法在电表检测实际应用中,每个电表检测时间为1.64 s,且能精准检测出电表字符缺陷,可满足实际生产中高效率、高精度的要求。