顾 旭,郭锐锋,王鸿亮,张晓星
1(中国科学院大学,北京 100049) 2(中国科学院 沈阳计算技术研究所,沈阳 110168)
目标检测是计算机视觉的核心问题之一,应用领域包括智能视频监控、机器人导航、数码相机中自动定位、自动驾驶、缺陷检测、目标识别等,有巨大的使用价值和应用前景[1].缺陷检测在工业领域应用较为广泛,工控部件在喷涂时中难免会产生一些缺陷,而工件表面打磨、喷涂质量的缺陷则影响工件的性能及使用寿命.目前多数企业仍采用传统人工检测方式,抽检率低、准确性不高、且实时性差,检测过程中很容易受到人工经验、主观性影响[2].传统缺陷检测使用手工设计特征,虽然在一定程度上能够有效的过滤掉背景噪声,但在低对比度的情况下表现不佳[3].深度学习网络的局部连接、权值共享及池化操作可以有效的降低网络复杂度,减少训练参数,使模型具有更好的泛化能力,及更强的表达能力,能够处理更为复杂的分类问题[4].避免人为主观性等因素的影响,且油漆对人体具有危害性,现在企业转向自动化、智能化,大多采用机器喷涂的方式,缺陷更易产生,因此对喷涂表面缺陷的检测具有实际的应用价值.针对大型多面复杂结构件表面打磨、喷涂等处理对自动化、智能化的需求,传统目标检测具有局限性,小目标检测准确度低,速率慢等缺点.现有大多是工件表面缺陷的检测,如裂纹、气泡、凹陷等,没有专业针对迷彩喷涂质量检测的系统,工件表面打磨、喷涂喷涂质量对表面检测技术要求更高,特征提取更为困难.
对于工件表面喷涂质量问题,国内外学者已开展了相关的研究,并取得一定研究成果[5-9].工件表面缺陷检测方法依据数据标签的不同,将其整体分为全监督学习模型、无监督学习模型和其他方法,如半监督学习模型和弱监督学习模型[10].文献[11]通过SIFT算子提取特征向量,使用Euclidean距离相似性判定度量实现图像匹配,进而检测中厚板的表面缺陷.文献[12]引用视觉注意力机制,将注意力模块嵌入卷积网络中,通过软注意力模块提取特征,实现工件表面缺陷的检测.文献[13]采用Gabor滤波器,并进行复合差分进化,改进参数,对显著性缺陷目标进行阈值分割,完成带钢表面缺陷检测.文献[14]介绍了视觉检测系统的物理设置,通过降尺度以及高斯去噪等方式实现对汽车行业车身油漆缺陷的检测.文献[15]改进Faster R-CNN,基于聚类生成Anchor,引入了多级ROI池化结构,实现零件表面磕碰伤、车刀痕、杂质这3种表面缺陷的检测.文献[16]提供了GC10-DET数据集,用于大规模金属表面缺陷检测,提出对于复杂环境下的端到端缺陷基于Single Shot MultiBox检测器的检测网络(EDDN).
面向大型多面工业复杂结构件对迷彩喷涂质量的需求,在海底隧道管廊、武器承载车等大型多面复杂结构件制造领域;火车车厢、迷彩车身、军用工件设备、迷彩建模等应用领域也较为广泛.大部分研究都停留在表面检测技术应用与改进上,而对工业结构件表面打磨、迷彩喷涂质量检测的设计与实现研究较少,检测效率和准确度无法得到保障.现有大多是工件表面缺陷、单一喷涂质量的检测,没有专业针对迷彩喷涂质量检测的系统,工件表面打磨、迷彩喷涂质量对表面检测技术要求更高,特征提取更为困难.本文提出一种改进YOLOv3算法的工件表面喷涂质量检测方法,首先使用K-means++算法对Anchor参数进行优化,通过迁移学习引用权重信息,再对YOLOv3算法进行改进,调整网络结构,提高检测准确度和实时性.
深度学习目标检测方法分为One-Stage和Two-Stage两种,其中SSD系列和YOLO系列属于One-Stage,Faster RCNN系列属于Two-Stage.本文选用YOLOv3算法并加以改进,准确率高,且检测效率快,可以良好的满足小目标检测的工控环境需求.其中,YOLOv1[17]作者将图像分为S×S个网格,包含Ground Truth(GT)物体中心的格子负责检测相应的物体,每个格子预测B个检测框及其置信度,以及C个类别概率,总向量长度为S×S×(B×5+C),但YOLOv1的图像输入尺寸是固定的,对小目标检测效果差,同一个格子包含多个物体时,仅预测一个IOU最高的.YOLOv2[18]网络结构为Darknet-19,引入Batch Normalization规一化数据到均值为0,方差为1的空间中,防止训练过程中梯度消失和梯度爆炸,进行多尺度训练(Multi-Scale Training),结合Faster RCNN中的RPN网络,引入Anchor Boxes机制,采用细粒度特征的方式将浅层特征连接到深层特征图,提高小目标检测效果,进行算法的改进.YOLOv3[19]更新原有网络结构为Darknet-53,在多尺度检测方面采用两次上采样,可以获得更细节图的信息,进一步提升对小目标的检测效果,并且采用9个Anchor Boxes,使得小物体多目标的情况更好的得以解决.
YOLOv3算法把系统检测模型作为一个回归问题,将输入图像划分为S×S个网格,如果一个对象的中心落在一个网格单元中,则该网络单元格负责检测该对象.每个网格的高为cy,宽为cx.对每个网络单元格预测B个边界框和这些框的置信度以及C类概率,置信度反映锚框是否包含物体以及包含物体情况下位置的准确性,为公式(1)-公式(4).每个边界框由5个预测组成:x、y、w、h和置信度.(x,y)坐标表示相对于网络单元格边界的方框中心.宽度和高度的预测相对于整个图像.最后,置信预测表示预测盒与地面真值之间的IOU.这些预测被编码为S×S×(B×5+C)的张量.
图1 Anchor Box和Bounding BoxFig.1 Anchor Box and Bounding Box
Anchor Box和Bounding Box对应关系如图1所示.
bx=σ(tx)+cx
(1)
by=σ(ty)+cy
(2)
bw=pwetw
(3)
bh=pheth
(4)
其中,pw,ph为Anchor Boxes的宽高;tx,ty为Anchor Boxes预测的中心目标;cx,cy为包含GT的网格的左上角目标;σ(tx)表示对tx进行logistic进行约束,使得GT中心落在网格内.
图2 YOLOv3网络结构Fig.2 YOLOv3 network structure
YOLOv3算法的网络结构如图2所示[19].
损失函数采用均方和误差,由坐标误差、包含物体的IOU误差、不包含物体的IOU误差以及类别误差组成.计算见公式(5):
(5)
现有标签先验框聚类方法大多使用K-means算法和K-means++算法.K-means算法是从数据集中随机选取K个样本作为聚类中心,且K值需要提前指定,再通过计算数据集中每个样本到聚类中心的位置,进行分类,再进一步迭代计算新的聚类中心,直到聚类中心不再变化或者到达限定迭代次数时终止,但是K-means算法不同的初始聚类中心可能会导致不同的聚类结果.K-means++算法首先随机选取1个样本点作为聚类中心,再计算数据集的每一个点到聚类中心的距离D(x),距离D(x)越大,则该样本点作为聚类中心的概率越大,直到选取出K个聚类中心,再使用这K个聚类中心执行K-means算法.本文选用K-means++算法,生成9个候选框.
YOLOv3采用Darknet-53作为提取特征的网络,使用多尺度的特征提取,对不同尺度的目标进行检测.迷彩喷涂缺陷的背景更为复杂,迷彩大多是3个颜色,缺陷不明显,且迷彩背景图案对小目标缺陷的检测有影响,使得小目标的缺陷识别较难,文献[20]将ResNet网络与HOG-PCA算法相结合,基于更快的RCNN算法对不同材质纹理的工件缺陷进行检测.工件迷彩喷涂质量检测应用到工控环境中,对实时性要求较高,因此本文算法在保证正确率的同时,提升检测实时性.YOLOv3采用两次上采样,使用插值方法将图片放大到原来的2倍与前几层的网络进行多尺度训练,将浅层特征与深层次特征进行融合,在包含浅层特征的同时也继承了深层次特征.
迷彩喷涂缺陷大多为小目标,且工控环境对实时性要求较高.改进算法在原始Darknet-53网络基础上适当抽取部分卷积层,减少卷积层数,同时进行多尺度融合训练,低分辨率图像相对于高分辨率图像丢失了很多图像高频信息,并且每个一个点点的还原都伴随的周边图像的图像信息相关,深层特征与浅层特征充分融合利用网络中的分层特征信息,为重组图像提供了更多更丰富的特征信息[21].本文算法结构如图3所示,在保证检测准确度不降低的情况下,提高算法的实时性.
图3 改进YOLOv3算法网络结构Fig.3 Improved YOLOv3 network structure
4.1.1 数据采集
本文主要针对工件表面喷涂质量进行检测,由于现有开源数据集,如ImageNet、COCO、VOC2007、VOC2012、Pascal、NEU-DET、KMUST-DET等,没有相关的检测数据集,因此本文自己制作了关于工件表面喷涂质量数据集,严格控制光照等,符合喷涂工控环境的要求,因此数据集具有实际应用价值.
本文调研迷彩喷涂质量的缺陷种类,以及喷涂方法,通过开源数据集、网络爬虫技术、自己喷涂等方式获取大量缺陷样本.现有开源数据集包含工件表面喷涂缺陷数据集、汽车喷涂开源数据集等,但数量较少,且仅少部分适合本文;网络中也有部分迷彩喷涂的图片,本文通过网络爬虫技术,收集了适合本文的喷涂数据集,并进行图像处理,进一步筛选;数据集主要来源为自己喷涂自制方式.本文通过阅读大量喷涂文献、迷彩喷涂工艺要求、喷涂技术、喷涂质量评价标准、中国喷涂标准(GB spraying standards)等,并走访喷涂工厂,了解当下企业最常用的迷彩喷涂方式,自己喷涂,制造大量样本集.在制造数据集过程中,本文结合实际工控环境,严格控制各种因素,如底材、喷漆、喷涂方法等,本文数据集具有实际应用价值.工件喷涂常见缺陷如斑点、刮伤、毛刺边等,以确保数据集的丰富性,提高模型的泛化能力.所采集的图片包括斑点、刮伤、橘皮、积粉、杂质、毛刺边,能够较为完备的反映真实情况,通过传统数据增强等方式对数据量进行扩增,数据集共4000张.从中选取3200张作为训练集,其余800张图片用于测试模型的准确度.
4.1.2 数据增强
数据增强将数据集进行量级扩增和模式扩增,量级扩增是指扩大数据量级,模式扩增是在扩增量级的同时,让不同的样本包含更多的特征信息[22].文献[23]在图像增强方面,提出一种V-CLAHE图像增强方法,有效改善了图像增强后特征失真的情况.实验结果表明,该方法能有效扩充数据集,提高模型泛化能力.数据增强包括翻转、旋转、压缩、裁剪、平移、加噪等,使模型具有更好的拟合性.翻转有上下翻转,及左右翻转;旋转采用直角旋转,可将本数据集扩增为原来的4倍;压缩可向外放大及向内缩小;裁剪即随机选取图片中部分图片,并将该部分图调整大小为原始图片大小;平移是将图片沿X轴或Y轴平移任意像素点.
4.1.3 数据标注
根据实验要求,使用开源标注工具LabelImg对图片进行多标签标注,并生成与之对应的与VOC数据集相同格式的XML目标框位置信息文件,位置信息文件包含名称以及真实边界框的坐标信息.标注的对象为6类,分别为斑点(spot),划伤(scratch),污迹(stain),积粉(accumulate),毛刺边(burr edge),橘皮(orange peel).该标注软件最后生成的文件作为工件喷涂质量数据集标签.并根据本实验所需数据集标签格式进行转化处理.
由于VOC数据集包含的物体较大且种类繁多,并不含有与工件表面喷涂质量相关的数据,使用YOLOv3原始Anchor参数训练准确率不高且效率较差.因此需要对工件喷涂质量标签重新进行聚类分析,得到更适合工件喷涂质量检测的Anchor参数.
通过大量调研文献及分析对比,本文选用K-means++算法对工件表面喷涂质量标签进行维度聚类分析,分为9个类,K-means++算法聚类后得到的9组先验框高宽分别为{(16,15),(48,116),(62,41),(75,228),(139,105),(176,282),(229,30),(307,116),(350,298)}.
在缺陷检测中,图像质量的好坏直接影响识别算法的精度,所以需要对图像进行预处理.图像预处理的主要目的是去除与图像无关的信息进行去噪处理,恢复处理过程中真实信息.本文采用的部分图像预处理方式如图4所示,其中灰度化,将彩图转化为灰度图,彩图是三通道的,灰度图是单通道的,因此使用灰度图可以减少计算量,提高图像处理速度.直方图均衡化有助于图像直方图的延展,均衡化后的图像的灰度级范围更宽,有效地增加了图像的对比度,进行图像增强.高斯滤波对图像进行平滑处理去噪声,可以得到信噪比SNR较高的图像,实现去噪声处理.
图4 灰度图、直方图均衡化、高斯滤波Fig.4 Grayscale image,histogram equalization,gaussian filter
根据本文数据集的特点,对训练网络的配置文件做出相应修改.训练过程中批处理大小(batch)设置为64,分组(subdivision)设为16,使用BN(batch normalization)对数据批量标准化提升模型收敛速度.动量(momentum)设置为0.9,权重衰减(decay)设置为0.0005,防止模型过拟合,初始学习率(learning rate)设置为0.001.在训练中,使用Adam优化器优化网络参数,共迭代12000代.
通常用精确率(Precision)和召回率(Recall)来评价网络模型的好坏,在缺陷检测中,一般使用平均精度均值(MeanAveragePrecision,mAP)来评价网络模型的性能.式(6)为精确率的计算公式,式(7)为召回率的计算公式:
(6)
(7)
其中,TP为成功预测的正例的个数,FP为负例被模型误判为正例的个数,FN表示正例被模型错误预测为负例的个数.
平均精度(AveragePrecision,AP)为不同召回率下精确度的平均值.mAP是所有目标类别检测精度的均值,用来评价网络模型的性能,计算公式如式(8)所示.fps为检测速度,帧每秒(FramesPerSecond,fps),表示每秒钟所能检测的图片的数量,用来评价网络模型的检测速度,计算公式如式(9)所示.
(8)
(9)
其中,AP(i)为单一类别的检测准确度,n为类别数,NumFigure为检测的图片总数,TotalTime为检测总时间.
本文各类缺陷的平均精度值如表1所示.
表1 各类缺陷的平均精度值Table 1 Average accuracy of various defects
本文算法与原有模型性能对比如表2所示.其中,YOLOv3+K-means++为本文的第1个改进点,可以看出,对比改进前,检测准确度mAP有明显提升,检测速度提升较少.改进YOLOv3+K-means++为第1个改进点与第2个改进点相结合的效果,改进后的网络在准确度上降低了一点,在可接受范围内,但是检测速度有了很大提升.本文算法改进具有实际的意义.
表2 模型性能对比Table 2 Model performance comparison
使用Intel(R)-CPU-E5-2620-V4处理器,在Ubuntu 16.04操作系统下进行实验,GPU选用NVIDIA Tesla K80,软件环境为CUDA10.1和cuDNN7.6.在所有的检测中,使用实际目标与预测目标之间的交并比(IOU)来评价是否成功预测目标的位置,认为IOU>0.5的预测目标是成功预测到了目标位置.
随着训练迭代次数的不断增加,平均损失函数的值在不断下降.调用训练生成的权重文件对测试集图片进行测试,测试后会对测试图片中的工件迷彩喷涂缺陷进行标记,标记包含相应缺陷标签以及置信度,测试效果如图5所示.改进后的算法对小目标识别率增高,从测试效果图可以看出,可以有效地检测出工件迷彩喷涂缺陷.
图5 实验结果图Fig.5 Experimental results
针对大型多面复杂结构件表面打磨、喷涂等处理对自动化、智能化的需求,传统目标检测具有局限性,小目标检测准确度低,速率慢等缺点.本文提出了一种改进YOLOv3算法的工件表面喷涂质量的检测方法.首先使用K-means++算法对Anchor参数进行优化,生成适合工件迷彩喷涂缺陷的尺度大小,再通过迁移学习,引用小目标检测权重信息,加快模型的收敛,最后对YOLOv3算法进行改进,调整网络结构,减少卷积层数,通过多尺度特征融合,在保证检测准确度的同时,提高实时性.本文的改进算法,结合实际工控环境进行改进,在保证准确度的同时提升检测速率,具有实际的生产应用价值,下一步将移植到嵌入式微控制处理器中,进一步缩小模型.