王贺楠,曹江涛,韩济阳,姬晓飞
(1.辽宁石油化工大学 信息与控制工程学院,辽宁 抚顺 113001;2.沈阳航空航天大学 自动化学院,沈阳 110136)
布匹疵点检测是纺织品生产过程中一道必要的工艺,由于机器的挤压、摩擦、沾染油污以及漂染过程中出现失误等问题会造成布匹产生不同种类疵点,常见的疵点类型有油渍、破洞和褶皱等,这些疵点严重地影响了布匹的质量和实用性。随着计算机视觉技术的不断发展,基于计算机视觉的目标检测算法常常被研究人员应用在智能工厂中,利用图像处理的方法进行布匹疵点检测可以极大提高生产效率、减少人力的浪费,具有重要的实际意义。
传统的布匹疵点检测算法通过提取不同特征进行疵点检测与分类,孙国栋等[1]提出一种将反向投影与灰度共生矩阵结合的方法,该方法优化了灰度共生矩阵的距离和灰度级等参数值,再选出相应的滤波和自适应阈值法进行检测。汤晓庆等[2]对图像进行Gabor滤波器和双边滤波操作,再将图像分成均匀的子图,提取子图的HOG特征,对比HOG特征差异实现疵点的检测。刘伟彬等[3]通过傅里叶变换和傅里叶逆变换等方法对图像进行处理,得到的图像中只包含疵点信息,再利用二值化分割出织物疵点。以上提取传统特征的方法适应性较差,往往受到很多因素的限制,无法保证检测的准确率。深度学习因其优异的目标检测性能为复杂环境下的疵点检测提供了有效的解决方案。目前基于深度学习的目标检测算法可以分为两类,一类是两阶段的Fast R-CNN(Fast Region-based Convolutional Neural Networks)[4-6]及其改进模型,另一类是一阶段的SSD(Single Shot MultiBox Detector)[7]、YOLO(You Only Look Once)[8]和Retina-Net[9]等网络模型。张丽瑶等[10]提出使用SSD算法进行疵点检测,该方法可以有效且迅速地定位到4种织物瑕疵,并且给出准确的分类信息。Zhang等[11]提出了基于深度卷积神经网络的YOLOV2染色织物疵点检测,这种方法可以在有限的负样本的情况下提取疵点特征,实现分类与目标检测。Liu等[12]提出一种轻量级的卷积神经网络,网络结构简单,相比于darknet特征提取网络的计算量大幅度减少,并使用两种不同尺度特征进行特征提取,从最后的结果来看检测精度略低于原始的YOLOv3算法,但是检测速度缩短为原来的38.5%,可以直接应用于工厂和嵌入式设备。为了提高疵点检出率和织物产品质量,Jing等[13]提出了一种基于改进YOLOv3模型的实时性能更高的织物疵点检测方法。添加一个尺度的预测层,使得原始的三尺度预测变为四尺度预测,当特征图为104×104时,添加检测层,改进后的网络模型对灰布和格子布的错误率均小于5%。目前布匹疵点检测还存在一些问题,在保证检测准确率的同时,需要满足生产线的生产速度,因此每帧的检测时间要等于或小于0.1秒。此外一些疵点在图像中占比过小会导致现有的YOLO算法及其改进模型难以实现布匹疵点的精确检测。
针对布匹疵点检测的问题,本文提出一种改进的YOLOv3检测算法,将YOLOv3的网络框架进行调整,更换特征提取网络为轻量级神经网络GhostNet,加快网络的计算速度。在特征提取网络中的第一层和最后一层加入空间注意力模块,加强网络对于显著区域的学习,使用CIOU函数作为位置回归损失函数代替IOU函数,预测框的选取更符合实际情况。最后根据实际目标的面积大小,对特征图层进行调整,提高网络对于小目标的检测精度。实验结果表明,针对布匹疵点检测的问题,改进的YOLOv3检测算法检测速度更快,准确率更高。
YOLOv3的算法框架如图1所示。YOLOv3的网络结构可以分为两个部分,即特征提取部分和目标检测部分。
图1 YOLOv3算法框架
特征提取网络为darketNet,如图2所示,darketNet网络共包含53层,其中包含了大量的卷积核为1×1和3×3的卷积,卷积如图2中灰色方块所示,灰色方块的长度代表着卷积滤波器的个数。同时用卷积操作代替池化层,可以有效防止在下采样的过程中丢失信息。darketNet网络不断地将图片进行卷积获取高层的语义特征,同时在卷积过程中加入残差的思想,在每个卷积结构里引出一条快捷链路,与接下来的两次卷积后的结果融合,如图2中支路箭头所示,可以有效防止梯度消失的现象的发生。
图2 darketNet网络结构
输出最后的特征图后,YOLOv3算法有效地将底层的特征信息和高层的特征信息进行融合,进行多尺度预测,每一个尺度都会将特征图分为N×N个网格,每个网格输出多个元素,元素中包括如下信息:是否含有目标、目标的中心坐标、目标的高和宽以及各个种类的概率。然后利用不同大小的先验框对大、中、小物体进行定位回归,先验框的大小需要事先根据数据集进行K-means聚类,并利用非极大值抑制的方法将交并比最大的预测框进行保留,输出目标的定位信息。其中,YOLOv3的位置回归损失函数为IOU(交并比),通过求取多个预测框与真实框的交并比来筛选出最优的预测框。IOU的公式如式(1)所示。
(1)
式中A和B分别为真实框和预测框。
为了使YOLOv3算法更好地应用到布匹疵点检测的实际问题中,对算法的特征提取网络和位置回归损失函数进行改进,使用轻量级神经网络GhostNet作为特征提取网络,使用CIOU函数作为位置回归损失函数,并在此基础上引入注意力机制,最后对特征图层进行调整,提升算法对疵点的检测效果,尤其是小目标疵点的检测效果。改进的特征提取网络如图3所示。其中前4个虚线框内的最后一个无边框灰色方块是步长为2的G-bneck,其余均是步长为1的G-bneck。
图3 改进的特征提取网络结构
原始特征提取网络有53层,参数量和计算量都十分庞大,相对于布匹疵点数据集来说,背景信息相对简单,无需darkNet-53这种深层的神经网络,因此在网络结构上进行改进,将特征提取网络替换为GhostNet[14]。GhostNet网络架构是华为诺亚方舟实验室提出来的一个新型的轻量级卷积神经网络,目前有很多的轻量级神经网络,比如MobileNet[15]和ShuffleNet[16]。与这些轻量级神经网络相比,GhostNet网络更加关注特征图之间的冗余性和相关性。
GhostNet在卷积处理上做了很大的改进,建立了Ghost模块。Ghost模块的结构如图4所示。Ghost 模块的卷积方式可分成两步:第一步是传统的卷积操作;第二步对每一个通道分别做线性变换,最后进行融合,可以减少大量的计算,降低检测目标需要消耗的时间。
图4 Ghost模块
根据Ghost 模块的优点,建立两种瓶颈结构G-bneck,如图5所示,每一个G-bneck都由两个Ghost 模块组成,第一个模块用于增加通道数量,第二个模块用于减少通道数量。不同的是步长为2的G-bneck引入了深度可分离卷积。
图5 G-bneck结构
此外,GhostNet中添加了压缩激励模块,压缩激励模块率先将输入的所有特征图平均池化为1×1×C的向量,降低计算量,克服梯度消失的问题,进行激励操作,如公式(2)~(4)所示。
W1=C/r×C
(2)
W2=C*C/r
(3)
s=Fex(z,W)=σ(g(z,W))=
σ(W2δ(W1z))
(4)
式中,r为缩放系数,W1和W2为参数,δ为激活函数,σ为sigmoid函数,输出s为压缩激励后的结果,然后进行特征重标定,如式(5)所示。
(5)
式中,将s与输入特征图uc相乘,完成对于原特征图的特征重标定,压缩激励模块可以帮助网络集中对高权重通道进行特征学习,在网络结构精简的情况下提升网络的学习效率。
YOLOv3中的原始位置回归损失函数为IOU,但是IOU有很多考虑不周全的问题,无法精确地展现出预测框的效果,挑选出真正的最优预测框,比如说当交并比值相同时,重合方式不一定相同,无法做出更好的判断。近年来又有研究学者提出GIOU[17]和DIOU[18]的概念,尽管在IOU上做出了一定的改进,但是仍都存在各自的局限性,而CIOU总结了之前几种位置回归损失函数出现的问题,在判断预测框的效果时考虑多种因素,比如同时关注重叠区域和非重叠区域,目标与先验框之间的距离和长宽比。GIOU、DIOU和CIOU如式(6)~(8)所示。
(6)
(7)
(8)
式中,A为真实框,B为预测框,C为真实框与预测框之间的最小外接矩形的面积。(ix,iy),(jx,jy)分别为真实框和预测框的中心点坐标,c为能够同时包含预测框和真实框的最小外接矩形的对角线长度,α为权重函数,v是用来度量长度比的相似性。从这几种损失函数的定义中可以得到,位置回归损失函数采用CIOU时可以最大限度地提高位置回归的准确率。
为了让网络集中学习疵点所在的位置区域,在网络中加入空间注意力模块提取特征更快速而有效地学习到图像的信息,在特征提取网络的开端和最后一层引入空间注意力机制模块,如图3中虚线框白色方块所示。空间注意力模块使网络可以更好地学习到疵点所在位置的显著性特征,有利于网络对于特征的学习。
空间注意力模块的本质是定位目标并进行一些变化,首先将输入的特征图进行3次普通的卷积操作得到3个特征图A、B和C,将特征图A降至一维,经转置后与特征图B降维后的结果相乘,经过softmax分类器输出大小为N×N的空间注意力特征图S,如式(9)所示。
(9)
S矩阵中每一行的计算结果可以直观地反映出像素之间的依赖关系,再将特征图C降维后与空间注意力特征图S转置后的结果相乘,乘积后的结果与原输入相加得到最后的输出特征图E。如式(10)所示。
(10)
式中α为尺度因子,Ci为C的元素,Aj为A的元素。
YOLOv3算法中的原始预测特征图层大小分别为52×52,26×26和13×13,为了增进小目标的检测效果,需要对预测特征图层进行修改。分析实际数据可知,每一帧的图像大小为1 848×740,最小的疵点区域大小为25×25,当回归的网格略大于疵点时效果最佳,因此将输出的特征图层调整至104×104,52×52和26×26可以提高小目标的检测效果。
利用工业相机采集的大量图像作为本实验的数据集,数据集共包含5 000张图像,以8∶2的比例随机抽取图像制作训练集与测试集,其中4 000张图像用于训练网络,1 000张图像用于测试。图像大小为1 868×740,利用labelImg软件将图像数据进行疵点标注,生成格式为.xml的数据文件。实验的设备配置与训练环境如表1所示。
表1 实验平台配置
在实验开始前用K-means聚类算法得到先验框的大小,然后修改权重文件,将学习率调整至0.001,batch设置为4。由于工业相机采集的数据分辨率为1 868×740,同时为了减少一些不必要的计算,在进入网络之前将图片大小调整至416×192,加快训练速度,减少训练时间,然后送入网络中训练100次。
为了更加直观地展现实验结果,本实验采取目标检测评价指标mAP(mean Average Precision)和F1。为了增强实验结果的对比效果,本实验分别使用YOLOv3-tiny检测算法、YOLOv3检测算法、YOLOv3-GhostNet(仅将特征提取网络替换成GhostNet)算法和本文改进的算法对数据集进行训练,所有方法的训练效果和测试结果如表2所示。
表2 不同检测网络性能对比
经测试,将YOLOv3中的特征提取网络darketNet替换成GhostNet之后,网络会更快速地回归,可以得到本文的改进算法相较于YOLOv3算法有着全面性的提升,mAP的值提升了16.3%,F1的值提升了18.6%,每一帧图像检测速度缩短了0.06秒,在替换特征提取网络的基础上引入空间注意力机制和替换位置回归函数,mAP和F1的值同样有着1.7%和2.6%的提高。对比YOLOv3-tiny的检测效果,尽管在检测速度上略有不足,但是mAP和F1的值明显高于YOLOv3-tiny,同时每帧0.053秒的检测速度足够满足工业生产的实际需求。实验结果既证明了GhostNet网络的优良性能,也证明空间注意力机制让网络变得更加高效,并展示了CIOU回归损失函数等其他改进的提升效果。改进算法的检测效果与YOLOv3原始算法的检测效果对比如图6所示,图6a为改进算法的检测效果,图6b为YOLOv3原始算法的检测效果。从效果对比中可以看出,改进算法可以检测出YOLOv3原始算法无法检测到的小型疵点,同时在部分疵点中,改进算法的定位更加精确,可以完整地框出整个疵点。这种直观的对比再次证明了改进算法具有更好的检测效果。
图6 检测效果对比
针对布匹疵点检测的问题,本文提出了一种基于改进YOLOv3的布匹疵点检测算法,使用轻量级卷积神经网络GhostNet作为YOLOv3算法中的特征提取网络,同时引入了空间注意力机制,更换了位置回归损失函数,使网络变得更加高效。通过实际生产测试,该算法具有很好的检测效果。在后续的工作中,希望将时序信息加入算法,观察并记录重复出现的疵点,实现同一疵点去重。