时造雄,茅正冲
(江南大学 物联网工程学院,江苏 无锡 214000)
中国是世界上最大的布匹生产国,布匹瑕疵的识别与检测在生产过程中是十分重要的一个环节,传统的布匹瑕疵检测与识别是通过人工的方式进行的,存在受主观影响较大、检测效率低下等问题。近年来,随着计算机算力的突破,深度学习技术发展迅猛,在工业生产的瑕疵检测领域已经产生了越来越多的应用。
目前主流的目标检测算法分为单阶段和双阶段两种类型,单阶段算法以SSD(single shot multibox detector)和YOLO(you only look once)为典型,而双阶段则以Faster R-CNN(faster region-CNN)网络为主[1]。
在针对花色布匹的瑕疵检测上,文献[2]在Faster R-CNN网络模型的基础上进行改进,提升了对较小目标瑕疵的检出能力及复杂背景下的瑕疵检出能力,但仍存在速度不足的缺陷[2];文献[3]提出了双路高分辨转换网络的花色布匹瑕疵检测方法,消除复杂花色背景的影响并且解决了少数类瑕疵样本准确率不高的问题,该模型存在对小目标瑕疵的检测优化不足的明显短板,整体精度较低[3];文献[4]提出基于级联卷积神经网络的复杂花色布匹瑕疵检测算法,该算法一定程度上改善了对瑕疵检测的速度和精度要求[4];文献[5]提出基于深度卷积神经网络的分类不平衡纹理布匹瑕疵检测方法,能有效减轻瑕疵种类分布不均对模型的影响,且降低了模型对部分瑕疵较少的不敏感性,但该模型的精度表现一般,仍有待改善[5]。综上所述之前国内外得研究并不能满足精度和速度的双重要求。
在以上研究的基础上,本文主要在YOLOv5网络基础上进行改进,提出了DD-YOLOv5(defect detection YOLOv5)瑕疵检测模型,首先将CoTNet与YOLOv5模型相结合,用于指导动态注意力矩阵的学习,增强视觉表示能力;其次引入CBAM(convolutional block attention module)注意力机制,让网络学会关注重点信息;接着使用α-IoU损失函数代替原网络中G-IoU损失函数,提高边界框的回归精度;最后增加检测头,提升网络对小目标的检测能力。经实验证明,改进后的网络能同时解决上述文章中提出的花色布匹瑕疵检测的如瑕疵目标小、种类分布不均、长宽比较为极端以及易与背景混淆等检测难点,且在速度上优于其它算法,表明该方法在花色布匹瑕疵检测任务中具有良好的检测性能。
YOLOv5系列网络整体沿用系列网络整体布局,主要由Backbone(主干)、Neck(颈部)、Head(头部)3个部分组成,其结构如图1所示。
图1 YOLOv5网络结构图
YOLOv5目标检测网络的主干部分主要用于提取图像浅层和深层的各项特征并整合。
主干部分中CSP1模块主要借鉴了残差网络的思想,由残差映射替换了以往的基础映射,使得深层次的网络模型达到更好的训练效果,在残差网络出现之前,学术界往往认为网络层数越深则获取信息越多,模型泛化效果越好。然而后续的研究表明当网络的层数加深时,模型的准确率反而有所降低。这是由于反向传播过程中的梯度爆炸和梯度消失所造成。也就是说,网络越深,模型越难优化。为了能让深层次的网络模型达到更好的训练效果,残差网络中提出由残差映射替换了以往的基础映射。
SPPF模块主要作用是对高层特征进行提取并融合,在融合的过程中多次运用最大池化,尽可能多地去提取高层次的语义特征。
颈部网络的主要作用是将主干网络提取的浅层和深层信息加强并融合。该部分采用的是特征金字塔网络(FPN,feature pyramid network)结合路径聚合网络(PAN,path aggregation network)的设计[6-7]。金字塔结构是一种自顶向下的侧边连接,在所有尺度上构建出高级语义特征图的结构,该结构经过多层的网络后,底层的目标信息已经非常模糊了,因此网络在颈部又结合了路径聚合网络,加入了自底向上的路线,弥补并加强了定位信息[8]。
检测头部分主要包括不同的损失函数。其主要目标是通过降低预测框和真实框的损失函数来获得最佳的目标检测框[9]。
本文提出的DD-YOLOv5模型结构如图2所示。
图2 DD-YOLOv5网络结构图
通过图2可知,与原生网络相比,本文网络主要改进点为:首先用CoT3模块代替原有CSP1模块,主要考虑CoT模块能够充分利用输入信息上下文的特点,以克服布匹瑕疵检测中大部分瑕疵为较小目标的难点[10];其次在颈部网络中引入CBAM注意力机制,在骨干网络后进一步加强针对特征的信息筛选;最后在网络的检测层处,算法增加了一个检测头,使检测头覆盖更大的检测范围,网络能够更加全面的关注到想要的信息。
Transformer的出现极大地促进了自然语言处理领域的发展,该风格的网络架构近期在计算机视觉领域也掀起了一波浪潮并取得了极具竞争力的结果[11]。尽管如此,现有的架构直接在二维特征图上执行自注意力并得到注意力矩阵,但是关于近邻丰富的上下文信息却并未得到充分探索。
CoT模块是一种能够充分利用二维特征图上下文信息的注意力机构,其结构如图3所示。
图3 CoT模块
本文中所提到的CoTNet结构由CoT模块代替主干网络中的CSP1模块而组成。
由图3可知假设输入二维特征X∈RH×W×C,而键向量K, 输入特征Q以及值向量V分别定义为:
K=X,Q=X,V=XWv
(1)
其中:Wv是指将X进行了特征的映射得到新的V。CoT模块首先采用k×k卷积提取上下文信息,所得K1∈RH×W×C自然地可以反应近邻间的上下文信息,我们将其视作输入X的静态上下文表达。将前述所得K1与Q进行拼接并通过两个连续1×1卷积Wθ和Wδ来计算并得到注意力矩阵A:
A=[K1,Q]WθWδ
(2)
接下来,基于上述所得注意力矩阵A和值向量V,我们生成增强特征K2:
K2=V*A
(3)
上述所得增强特征K2可以捕获关于输入的动态特征交互,我们将其称之为输入X的动态上下文表达。最后将上述两种上下文表达通过注意力机制融合即可得到CoT模块的输出。
CoT模块能将上下文信息挖掘与自注意力学习集成到统一架构中,充分探索近邻间的上下文信息以一种高效方式提升自注意力学习,进而提升输出特征的表达能力,提升了视觉表达能力。本文在DD-YOLOv5 模型的主干网络中多次应用该模块,有利于模型对图像深浅特征的全局提取,重点信息可以被加强,从而使花色布匹瑕疵中占比较多的瑕疵的全局特征能够得到加强。
在花色布匹瑕疵检测的过程中,部分瑕疵目标仅占几个像素点,部分瑕疵与背景极为相似,这些瑕疵的特征信息极易在深层网络中丢失,很容易出现漏检、错检。而CBAM注意力机制可有效增大小目标在整张特征图中的权重,使得各种瑕疵信息更容易在网络中学习到[12]。其结构如图4所示。
由图可知,CBAM模块包括通道注意力模块和空间注意力模块两个子模块。
首先利用通道注意力模块来生成通道注意图,特征图的每个通道都被认为是一个特征检测器,因此通道的注意力能够集中在给定输入图像中有意义的部分;在该模块中,为了有效地计算通道注意力,采用压缩输入特征映射的空间维度的方法,即同时使用平均池化和最大池化的方法,这种做法比单独使用一种池化方法更具有表征力。
此时将通道注意力模块的输出作为空间注意力模块的输入,然后利用空间注意力模块去生成空间注意图;与通道注意模块不同的是,空间注意模块更加关注的是信息的位置去作为通道注意模块的补充;为了计算空间注意力,需要在通道中使用平均池化和最大池化操作,将它们连接起来以生成一个有效的特征描述符,然后使用两个池化操作聚合一个特征图的通道信息,生成两个二维的特征图,这两个特征图分别表示了通道的平均池化特性和最大池化特性,然后利用一个标准的卷积层进行连接和卷积操作,得到最终需要的二维空间注意力图。
这样一来CBAM模块可同时关注空间和通道信息,使得提取到的高层特征更全面更丰富[13-14]。
边界框(Bbox,bounding box)是目标检测中用于框选出待检测目标的一个方框,一个目标检测器通常由边界框回归和一个分类回归组成[15]。
早期的目标检测工作使用n范数损失函数进行边界框回归,这种方法对边界框的大小极为敏感,交并比 (IoU,intersection over union)损失函数的出现弥补了这一缺陷。与n范数损失函数相比,IoU损失函数对边界框的尺度是不变的。然而,当预测框与边界框的真实值不重叠时,IoU损失会出现梯度消失问题,导致收敛速度减慢,进而导致检测器不准确。这激发了几种改进的基于IoU的损失函数设计,包括GIoU (generalized IoU)、DIoU (distance IoU)和CIoU (complete IoU)。YOLOv5原本采用的损失函数为Loss_GIoU,当预测的边界框在真实的边界框内部时,GIoU无法判断出正确的最小边界框[16]。
在花色布匹瑕疵检测中有部分瑕疵长宽比较为极端,处理不当极容易出现漏检情况,采用更有效的边界框损失函数此时显得尤为重要。为解决该问题,本文引入α-IoU予以改进,在原有的基础上更加关注高IoU目标,能够优化所有层次的目标,实现不同水平的检测框回归精度[16]。Lossα-IoU的公式如下所示:
(4)
通过对Lossα-IoU中的参数α进行调制,可以推导出现有的大多数IoU。本文中采用目前常用效果最好的LossCIoU改进为Lossα-IoU,其定义如下所示:
(5)
其中:c代表的是能够同时包含预测框和真实框的最小闭包区域的对角线距离,而v衡量长宽比的一致性,其定义如公式(6);β是一个正的权衡参数,其数值如式(7),ρ2α(b,bgt)分别代表了预测框和真实框的中心点的欧式距离。
(6)
(7)
本文改进的算法在检测头部分增加了一个低维且高分辨率的检测头,该检测头主要是用来处理难以检测的小目标部分[18]。
增加的检测头由低层高分辨率的特征图生成,当网络的输入图像尺寸为960*960时,原算法中的3个检测头对应的特征图大小分别为120*120,60*60,30*30,而增加的检测头特征图大小为240*240,该检测头能充分利用到浅层特征信息,明显降低卷积带来的小目标区域特征信息丢失的影响,虽然在计算量上有所增加,但能明显改善小目标的检测精度[19-20]。
本文选用的数据采集自佛山南海纺织车间,共计2 739张含有瑕疵的图片,其中2 122张作为训练集,617张作为测试集。图片中包括沾污、错花、水印、花毛、缝头、缝头印、虫粘、破洞、褶子、织疵、漏印、蜡斑、色差、网折共计14种瑕疵类型,图5为瑕疵数量图,沾污这种瑕疵的占比超过80%,种类分布极其不均衡。
图5 瑕疵数量
图6分别为小目标瑕疵、长宽比极端瑕疵、与背景及其相似的瑕疵展示。
本文主要针对图6中3种瑕疵检测中的难点问题搭建检测平台,并使用改进后的算法进行检测。
本文硬件配置环境如表1所示。
表1 实验环境
图7为多种瑕疵实际检测效果图的典型瑕疵检测细节图的展示。
图7 部分瑕疵检测实际效果
通过以上实际检测效果图可以发现,在本文的算法下,对布匹瑕疵的检测效果已经可以达到工业现场级别的要求,且大部分的瑕疵检测识别率更是在0.9以上。可以充分说明本文算法在针对花色布匹的瑕疵检测上效果卓然。
本文中引入以下评估标准评估模型性能:
精确率(P,precision)又称查准率,指正确预测为正占全部预测为正的比例,如式(8)所示:
(8)
召回率(R,recall)又称查全率,指正确预测为正占全部实际为正的比例,如式(9)所示:
(9)
平均精度(AP,average precision,)由精确率和召回率计算得出,根据召回率值绘出精确率的折线图,计算出该折线下的面积,如式(10)所示:
(10)
平均精度均值(mAP,mean average precision)是指C个不同缺陷的平均精度AP的平均值,如式(11)所示:
(11)
为验证本研究提出的关于 YOLOv5 的4种改进策略,在数据集上展开消融试验,以判断每个改进点的有效性,依次在原有模型基础上加上改进措施,使用改进用“√”表示,未使用改进则表格为空。训练过程使用相同的参数配置,结果如表 2 所示。
表2 消融实验结果
消融实验以原生YOLOv5网络模型为基准,输入图像分辨率均为960*960。
通过表2中第1组和第2组的实验对比,可以发现当检测层由三层增加到四层,mAP由71.1%升到了75.6%,结果表明增加的针对小目标的提取浅层信息的检测头起到了显著效果,很明显的降低了漏检率。
通过第2组和第3组对比,当网络中增加了CoT模块形成CoTNet后,mAP由75.6%提升到77.4%,主要原因是因为CoT模块能多挖掘网络中的上下文信息,进而对图像深浅特征进行全局提取,这一举动虽然损失了较小的检测速率,但能显著提高对目标的检测准确率。
通过第3组与第4组实验对比显示,在颈部网络增加了CBAM模块的网络mAP值从77.4%提升到79.3%,表明CBAM模块能够更多地关注有用的信息,提高对重点瑕疵如沾污的识别率。
通过第4组与第5组的实验数据对比,瑕疵识别的mAP值由79.3%提升到了80.0%,说明在引入了新的边界框损失函数后,检测器能更好地进行边界框的回归,从而使得长宽比极端的瑕疵的漏检率下降。
综合上述可知,在结合了多种针对YOLOv5算法的改进措施后,本文的算法能够在布匹瑕疵的专项检测中取得较好的效果,充分说明上述改进措施在实际检测中是有实际成效的。
图8和图9为原生算法和改进后算法的损失函数收敛情况。
图8 原生网络损失函数收敛曲线
图9 改进后网络损失函数收敛曲线
其中实线为定位损失box_loss,指预测框与标定框之间的误差,点划线为置信度损失obj_loss,用于计算网络的置信度,虚线为分类损失cls_loss,用于计算锚框与对应的标定分类是否正确。
通过两图对比可发现定位损失由明显下降,这是由于算法中使用α-IoU代替原网络中的G-IoU交并比计算方法,进而使得另外两种损失也跟着有所下降,网络整体收敛更快,效果更好。
为了证明DD-YOLOv5网络模型在花色布匹表面瑕疵检测方面的优势,我们将其与目前几种主流的目标检测算法进行了对比,其对比结果如表3所示。
表3 对比实验结果
从表3中可以得知,Faster-RCNN网络在精确率方面不高,但召回率却是最高,这是因为双阶段网络结构采用候选框机制遍历特征图,故能将图中的目标较齐全的检测到,但这也同样会使得二阶段网络计算量较大故而速度较慢,仅能达到22.4帧的速度。而同样作为单阶段目标检测的SSD网络虽然在检测速率上与YOLO系列没有过大的差距,但是在检测精度上,无论是精确率还是召回率,比起YOLO系列都差距较大,原因在于SSD的主干网络为VGG系列网络,网络层数较低,深层特征提取不全,针对花色布匹瑕疵的检测效果较差。
同为YOLO系列的YOLOv4算法,比起YOLOv5系列算法在检测精度上看来差距不大,仅小幅度落后于YOLOv5系列算法,但YOLOv4算法在检测速度上比起YOLOv5系列网络存在一定差距。
改进后的DD-YOLOv5由于增加了针对小目标检测的检测头以及其他的改进措施,使得整个网络的复杂程度有所提高,相应的在速度上有所损失,检测速率为73.6 Hz,比原生YOLOv5算法的75.2 Hz降低了2%,但在精度综合评估标准的mAP值上,本文算法比原生YOLOv5算法有着12.5%的检测精度提升,故综合精度和速度两方面,本文算法在众多算法中取得了较大的优势。
总之,本文提出的DD-YOLOv5算法在速度和精度的综合考虑下获得了最佳效果,比起经典算法性能更好,相比同系列YOLO其他算法表现也最为优异。
为了解决花色布匹瑕疵检测问题,进一步提高花色布匹表面瑕疵检测的准确率和识别速度,本文提出了一种基于YOLOv5的DD-YOLOv5模型,使用COT模块替代CSP1模块形成CoTNet并作为主干网络,利用输入的上下文信息来指导自注意力机制的学习,能够对图像深浅特征进行全局提取,提升目标检测的准确率,同时在颈部网络中引入CBAM注意力机制,能同时关注空间和通道信息,促使专注于有用的目标对象,在检测头部分还增加了一个关注于小目标的检测头,明显改善了网络的精度,降低了漏检率,最后用α-IoU替代原G-IoU交并比计算方法,使得网络整体收敛更快,检测效果更好。
通过实验结果证明,DD-YOLOv5网络模型在花色布匹瑕疵的数据集上mAP达到了80.0%,检测速度也达到73.6fps,同时满足了检测精度和检测效率的要求,对花色布匹瑕疵检测具有重要的现实意义。今后将进一步尝试不损失精度的前提下继续减小网络模型的参数量,使模型得到进一步的轻量化。