李 辉,吕祥聪,申贝贝,陶 冶,王俊印
(青岛科技大学 信息科学技术学院,山东 青岛 266061)
传统的布匹瑕疵检测方法使用选择性搜索进行广泛搜索找到潜在瑕疵,这种方法计算成本高、检测效果差并且方法难以迁移[1];相比之下,基于深度学习的瑕疵目标检测效果明显提升,训练与迁移能力较强[2,3]。但目前针对复杂花色布匹瑕疵检测还存在大量其它问题,如在纹理布匹瑕疵图片背景复杂,瑕疵检测难度高,导致检测精度低,并且在单张图片中存在多个不同种类瑕疵的情况下,大多检测方法仍不能准确进行瑕疵缺陷检测。此外基于深度学习的通用目标检测方法对于布匹瑕疵检测工作来说,还存在无法检测色调与背景十分接近的疵点、预定义的锚框不能满足极端长宽比、对少数类瑕疵样本检测性能较差等问题[4-6]。
综上所述,为了提高复杂花色背景干扰下瑕疵检测准确率低的问题,本文提出一种双路高分辨率特征提取用于消除花色布匹背景的噪声干扰,并设计了自适应锚框生成器,使生成的边界框更加紧密,最后采用改进的聚焦损失降低模型对少数类瑕疵的不敏感性。
自动化的布匹瑕疵缺陷检测使用检测算法来进行瑕疵的特征提取、对存在的瑕疵进行分类和定位瑕疵位置3个任务[7]。常见的布匹瑕疵检测方法有光谱分析法、模型设计法、低秩分解法[8]。空间统计方法通过计算统计特征与周围环境的差异来检测缺陷,包括局部纹理分布、颜色相似性和局部同质性。Zhang等[9]采用将布匹疵点图像的RGB颜色进行空间转换,根据颜色相似度和相似块之间的位置距离来度量缺陷值,但这类方法不能有效地利用图像地全局信息,而且经常受到噪声地影响。光谱分析方法是在实际布匹瑕疵检测中使用较多的一类方法,常用的主要有小波变换、Gabor滤波[10]、傅里叶变换等[11]。Chen等[12]利用改进的混合滤波器对纹理布匹进行降噪处理,提高了边缘提取的质量。Boluki等[13]首先利用优化后的Gabor滤波器来完成对布匹瑕疵的自动检测,其次改进自适应局部二值化方法,提高检测算法的性能。然而,这些方法对复杂纹理布匹图像地检测性能较差,耗时较长。模型设计法使用建模和参数估计技术进行瑕疵纹理特征提取,并利用测试图像与正常纹理模型的相似度来进行瑕疵的确定。模型设计法主要分为自回归模型和马尔科夫随机场模型。Liu等[14]提出利用马尔科夫随机场的领域特性和模糊相似矩阵,根据图像块之间的差异性检测瑕疵区域,这些方法取得了满意的检测性能,但是该方法的计算复杂度都很高,不能有效地检测出较小尺寸的瑕疵。低秩分解法通过将一个特征矩阵分解为代表图像无疵点区域的低秩矩阵和代表疵点区域的稀疏矩阵来实现瑕疵检测。JI等[15]提出低秩校正分解模型,通过交替方向法优化求解,利用阈值分割产生的显著图完成瑕疵检测。存在计算过程繁琐,漏检率高和检测精度低的问题。综上所述,传统方法存在着噪声敏感、对复杂纹理瑕疵特征提取效果较差、错检率高等问题,随着深度学习方法的不断发展,使用深度网络能够更好地解决布匹瑕疵缺陷检测问题[16]。
深度卷积神经网络的出现打破了图像语义表达的局限,被广泛应用于布匹瑕疵的检测和分类。现有的主流的检测方法可以分为两类,一类是两阶段检测方法,主要有Faster RCN、Mask RCNN[17]和Cascade RCNN[18,19]等。Wei等[20]提出了基于快速区域卷积网络方法用于布匹瑕疵检测,引入VGG思想提升训练效率,减少了锚点数量,并使用区域建议网络生成候选瑕疵锚点和边界框。另一类是一阶段检测方法,主要有YOLO、YOLOv2、YOLOv3、SSD和RetinaNet等。Redmon等[21,22]提出了实时目标检测框架YOLO系列,YOLO将物体检测任务视为一个回归问题,直接从整个图像中预测边界框坐标、边界框中包含目标的置信度以及目标的概率。整个检测过程端到端进行,虽然此类方法在速度上提高了但是检测精度较低,He等[23]提出基于特征金字塔的布匹瑕疵检测算法,该算法对于小目标瑕疵检测精度较低,但训练速度和检测速度很快。Lin等[24]提出了使用Focal loss损失函数的 RetinaNet算法,来解决类别不平衡的问题,降低模型对少数类样本的不敏感性。这些研究表明深度学习方法对于解决布匹瑕疵缺陷检测问题具有很好的适用性,但仍需要进一步改进。
本文所使用的布匹瑕疵数据集是从广东省某纺织车间现场采集的布匹图像,在实际的布匹生产过程中,布匹瑕疵的特征如下:①布匹花色背景复杂,瑕疵特征提取困难;②布匹瑕疵较小且类别较多,不同瑕疵数据类别不平衡;③布匹瑕疵尺度不均衡,难以生成紧密的边界框。已有的目标检测算法对于复杂花色背景、小目标瑕疵多、纵横比悬殊等问题不能很好解决,检测效果较差,如图1所示,对于小目标以及复杂花色背景,存在漏检以及包围框不准确的问题。因此,针对现有花色布匹瑕疵检测方法所存在的问题,本文提出了一种双路高分辨率转换网络的花色布匹瑕疵检测方法,完成对布匹中的瑕疵目标高质量检测。
图1 布匹瑕疵检测问题
本文提出的花色布匹瑕疵缺陷检测方法包括以下内容:①设计双路高分辨率特征提取网络,通过权值共享的特征提取网络提取缺陷图和模板图特征;②在区域候选网络中,设计自适应边框生成器,优化锚框的生成过程,提高后续检测与回归的精度。③在检测阶段,采用改进的聚焦损失函数,降低模型对少数类瑕疵样本的敏感性,从而提升网络的预测精度和泛化能力。
具体过程如下:将缺陷图和模板图输入双路的高分辨网络中进行特征提取,并合并两个特征图,由于布匹瑕疵中小目标占比较多,再接入多尺度特征金字塔转换器,更好融合深层的语义信息与浅层的位置信息,得到最终的特征图后经由自适应边框生成器指导RPN的锚设计,利于后续检测框回归,最后送入级联的检测器中对候选框进行分类和回归,逐步提升检测模型的回归精度。网络架构如图2所示,其中“Ci”,“Bi”,i=1,2,3分别表示分类网络和回归网络。
图2 本文网络架构
在布匹瑕疵检测中,由于不同花色背景的影响,很难在多种花色布匹上取得理想的效果,为了消除这种影响,最直接的方法是原图相减,在差分图上进行瑕疵检测,但对于瑕疵图片与模板图片并非严格的像素点对齐的情况,直接做差不但无法消除背景,还会破坏瑕疵原本的形态。因此,为了减少噪声的影响,本文提出双路高分辨率网络将提取到的瑕疵特征和模板特征进行差分,在特征层将瑕疵与模板特征做差,虽然像素点不对齐但是区域特征是相同的,卷积核提取的特征是区域特征,在特征层上做差不仅可以保证消除同区域内相似的背景特征,而且还可以保留瑕疵的特征。
双路高分辨率网络架构如图3所示。将瑕疵图片和模板图作为输入,其中,模板图中不包含任何瑕疵信息,在特征提取的过程中这两部分是权值共享的,其提取的特征表达如式(1)所示
图3 双路高分辨率网络架构
f(xi)=CNNecd(xi,θencoding)
(1)
式中:xi是输入样本,θencoding是CNN的编码参数,然后将提取的两个输出向量进行相减并取绝对值,如式(2)所示
(2)
式中:xi表示输入瑕疵样本,xj表示模板样本,它们经过全连接层和Sigmod函数得到输出结果,输出表现如式(3)所示
P(xi,xj)=SigMod(FC(D(f(xi),f(xj))))
(3)
输出值归一化至0~1之间,计算相似度得分,然后提取出整幅图像所有相似性较低的图像块,通过这样的方式可以在一定程度上抵消像素点不对齐带来的影响,屏蔽背景并且保留瑕疵原有特征,从而提升模型对瑕疵特征的表达能力。
在布匹瑕疵检测中存在背景复杂的问题,使用特征金字塔网络能够有效地融合图像中各个维度地特征,而传统的特征金字塔网络未考虑全局特征信息并且以固定尺度构建特征金字塔,会丢失部分不同层级特征之间的语义差异信息,增大瑕疵检测的难度。为了在一定程度上消除布匹的纹理特征在空间分布上的差异,采用了多尺度特征金字塔转换器,使特征图可以跨空间和跨尺度进行非局部交互,融合具有丰富语义信息的深层特征和高分辨率的浅层特征,有效提高了小目标瑕疵检测精度,网络结构如图4所示。
图4 多尺度特征金字塔转换网络结构
由双路高分辨率网络提取不同尺度的特征图,然后经过同层之间的交互、自上而下的交互和自下而上的交互分别去计算对应的融合了上下文信息的特征图,将多层语义信息进行整合,得到跨尺度和跨空间特征交互后的特征金字塔。如上图所示,多尺度特征金字塔转换器主要分为3步:同层特征图的交互(Fst)、自上而下的交互(Fgt)、自下而上的交互(Frt),详细过程如算法1所示。
算法1: 多尺度特征金字塔转换网络算法
输入: C2、C3、 C4、 C5
输出: P2、 P3、 P4、 P5
说明: Ci表示由基础网络提取的第2~5层特征图; pi表示卷积转换特征图尺寸后得到的第2~5层特征图; Pi表示转换后的第2~5层特征图; Fst():ST操作; Fgt():GT操作; Frt():RT操作
算法过程:
(1) p5=Fconv(C5) //从C5开始,先卷积转换特征图尺寸
(2) p4=Fconv(C4)
(3) p3=Fconv(C3)
(4) p2=Fconv(C2)
(5) s5=Fconcatenate(Fst(p5), Frt(p4,p5), Frt(p3,p5), Frt(p2,p5), p5, 1) //拼接操作
(6) s4=Fconcatenate(Fst(p4), Frt(p3,p4), Frt(p2,p4), Fgt(p5,p4), p4, 1)
(7) s3=Fconcatenate(Fst(p3), Frt(p2,p3), Fgt(p4,p3), Fgt(p5,p3), p3, 1)
(8) s2=Fconcatenate(Fst(p2), Fgt(p3,p2), Fgt(p4,p2), Fgt(p5,p2), p2, 1)
(9) P5=Fconv(s5) //卷积缩小维度, 降至原本通道数
(10) P4=Fconv(s4)
(11) P3=Fconv(s3)
(12) P2=Fconv(s2)
(13) return P2、 P3、 P4、 P5//输出转换后的特征图
上述操作不会改变多层级特征的输入和输出的尺寸和通道数,因此多尺度特征金字塔转换网络可以直接嵌入到主干网络中,达到跨尺度和跨空间非局部交互的效果,有助于提高小目标瑕疵检测的准确率。
在布匹瑕疵检测任务中,一般会预先设置一些不同尺度不同位置的固定参考框,根据预定义的anchor,网络模型可以更好了解先验框偏差的信息,从而得到更好的预测结果。但由于布匹疵点的特殊性,疵点中绝大多数多为小尺寸、纵横比悬殊的目标,导致检测精度较低。因此本文设计了自适应边框生成器来优化锚框,优化过程是通过改进K-means聚类算法来进行的。
在聚类过程中,远离群点的瑕疵类对算法结果影响较大,所以不能采用一般聚类方法的欧式距离,因为对于欧式距离来说,过大或过小的包围框都会产生太大的损失。因此,引入新的基于IOU的度量方式,如式(4)所示,其中b是真实标注框,c是聚类的中心点
d(b,c)=1-IOU(b,c)
(4)
聚类的详细过程描述如下:
(1)聚类使用布匹瑕疵数据集训练集中真实标注框的坐标信息作为原始数据。
(2)选取初始聚类中心点:对于训练集每个类别的瑕疵,随机选取代表一类瑕疵集簇的k个初始聚类中心点。
(3)计算相似度距离:计算所有瑕疵真实标注框与每个聚类中心的相似度距离,并将各标注框样本归类给相似度最近的聚类中心。
(4)重新计算聚类中心点:按照式(5)重新计算每个瑕疵类聚类中心点,以最新归类的标注框样本为基准点,计算各聚类中心点与基准点的距离,选取距离最小的聚类中心点作为新的聚类中心点
(5)
(5)重复步骤(3)和步骤(4)以得到最优的锚定框。具体过程如下所示。
算法2: 自适应边框生成器算法
输入: 每类待聚类瑕疵样本集真实边界框: B={bi, i∈{1,2,…,n}}
初始anchor大小: A={aj, j∈{1,2,…,m}}
输出: 最优初始锚定框A*={aj1, j1∈{1,2,…,m}}
算法过程:
(1) Repeat
(2) 令Cj=φ, j∈{1,2,…,m}
(3) for i=1,2,…,n do
(4) dij=1-IOU(bi,aj) //计算真实边界框和当前anchor的距离
(5) λj=argmini∈{1,2,…,m}dij//距离最近的anchor确定的bi簇标记
(6)Cλj=Cλj∪{bi} //将真实边界框bi划入相应的簇
(7) end for
(8) A*=φ
(9) for j=1,2,…,m do
(11) A*=A*∪μj//将计算的anchor大小添加到A*中
(12) end for
(13) Until当前anchor大小不再改变或达到最大迭代次数
经由自适应边框生成器指导RPN的锚设计,产生候选区域后,使用级联的目标检测器完成分类和回归。如式(6)所示
f(x,b)=fT∘fT-1∘…∘f(x,b)
(6)
式中:T为级联的总数,级联中的每个回归器ft根据对应阶段的样本分布bt进行优化,逐级回归后,使样本分布更加精确,同时,IOU在回归过程中被逐级提升。
本文方法的级联数设置为3,在级联回归过程中,将上一级生成的预测边界框输出作为感兴趣区域输入下一个检测器,最后经过全连接层完成分类和回归,可以精准地实现对布匹瑕疵的分类与定位。级联检测器结构如图5所示。
图5 级联检测器结构
在此阶段,训练阶段的损失函数由边界框回归损失和分类损失组成,损失函数如式(7)所示
(7)
式中:N为预测框的数量,pt表示对anchor的预测置信度,G′i为预测框的位置信息,Gi为目标框位置信息,Lreg采用smoothL1作为损失函数,如式(8)所示,参数x是预测结果与真实值的差
(8)
分类置信度损失Lcls是预测类别置信度与目标类别的误差,布匹瑕疵数据集存在不同瑕疵类别的样本数量极度不平衡,导致样本数较少的类别不能得到充分训练,造成检测精度较低。采用Focal loss损失函数作为分类损失来缓解模型中参与训练的正负样本不平衡问题,如式(9)所示
Lcls(pt)=-αt(1-pt)γlog(pt)
(9)
Lcls(pt)=-δt(1-pt)γlog(pt)
(10)
(11)
本文实验的软硬件环境配置见表1。
表1 实验环境配置
图6 布匹瑕疵数据集
实验以MS COCO数据集的评价标准进行性能评估。使用随机梯度下降方法作为优化器,初始学习率设置为0.0025,冲量设置为0.9,batch size设置为2,权重衰减设置为0.0001,训练步数设置为18 000。为了获得理想的训练效果,本文对原始数据集采用了水平和垂直翻转、对称变化等多种数据增强方式进行数据增强。数据增强后的样本分布见表2。
表2 增强前后数据集中的样本分布
为了验证本文方法对于布匹瑕疵缺陷检测的有效性和先进性,在花色布匹瑕疵数据集上进行了网络训练和结果分析,图7为瑕疵图和模板图直接相减和由双路高分辨率特征提取差分后的可视化对比,上图为瑕疵图和模板图直接相减,下图为采用双路高分辨网络将提取到的瑕疵特征和模板特征进行差分,在特征层将瑕疵特征与模板特征做差的效果图,通过对比发现,直接做差不但无法消除背景,还会破坏瑕疵原本的形态,而在特征层上做差可以保证同区域内相似的背景特征被消除,并同时可以保留瑕疵的特征。
图7 图片相减与特征差分对比结果
图8是不同网络的损失曲线。随着神经网络的迭代次数增加,损失曲线整体呈现下降趋势,目标检测网络对于花色布匹瑕疵数据的判别能力逐渐逼近训练数据集。这表明,本文方法能更好地收敛于布匹瑕疵缺陷数据集,并且分类与回归任务的误差也较低,这是由于采用双路高分辨率特征提取在特征层差分有效剔除了无关背景信息的干扰,利用多尺度特征金字塔转换器,充分学习瑕疵目标的上下文信息,在RPN阶段进一步优化锚框,利用后续检测和回归。最后在检测阶段,引入改进的聚焦损失函数来缓解训练过程中瑕疵类别不平衡导致的分类精度低问题,降低模型对少数类瑕疵样本的不敏感性,从而提高花色布匹瑕疵目标的检测性能。
图8 损失变化曲线对比结果
为了验证提出的检测方法中各个模块的有效性,在基础网络的基础上,融合不同改进点的消融实验结果见表3。
表3 消融实验
(1)基础网络(BaselineNet)。基础网络为未改进之前的Cascade RCNN,由于复杂花色背景、小瑕疵目标、尺度变化大、类别不平衡等一系列问题的影响,导致最终的检测性能较差。为了更好地解决这些问题,提高花色布匹瑕疵检测的准确率和定位精度,分别针对上述不同问题进行改进创新,以下所有的改进均是在此BaselinNet的基础上进行的。
(2)BN+双路高分辨率网络(DCF)。使用双路高分辨率网络代替BaselineNet中原始的特征提取网络,由表可见,相比于基线方法,双路高分辨率网络将基线方法改进了1.7个mAP。这说明双路高分辨率网络有效的消除复杂花色背景的影响,提取更清晰、更具有代表性的瑕疵特征,得到丰富的瑕疵特征的上下文信息,为检测模型提供高质量特征信息,提高算法对瑕疵的定位与判断是否为瑕疵的能力。
(3)BN+DCF+多尺度特征金字塔转换器(FPT)。为了进一步提高小目标瑕疵的准确率,在双路高分辨率网络的基础上添加了FPT,以此获得更多小目标瑕疵特征的细节信息。由表可见,相比于基线方法,多尺度特征金字塔转换器给基线方法带来了1.0个mAP,由于多尺度特征金字塔转换器充分捕获全局信息并且能更好使用高层语义信息对低层的特征进行补充,从而得到语义信息更丰富的特征。
(4)BN+DCF+FPT+自适应边框生成器(ABG)。考虑到布匹瑕疵长宽比差异大,原RPN中锚点比例设计并不能满足瑕疵长宽比过于极端的情况,因此,本文通过自适应边框生成器计算最优锚定框的设计,由表可见,自适应边框生成器给基线方法带来1.4个mAP,这是因为自适应边框生成器计算得到了锚定框的尺寸适用于瑕疵极端长宽比的情况最优锚定框,使得瑕疵的初始边框更精确,因此检测性能得到了提升。
(5)BN+DCF+FPT+ABG+MFL(ours)。为应对布匹数据集中瑕疵种类不平衡对检测结果的影响,采用改进的聚焦损失函数时,其mAP的变化幅度1.7%。同时实验表明,当γ=2、λ=0.5时,模型可取得最好的性能,这说明采用改进的聚焦损失可以有效改善瑕疵类别不平衡对模型检测性能的影响。
提出的布匹瑕疵检测方法与目前主流的检测方法进行实验对比,在花色布匹瑕疵数据集上的检测结果显示本文方法检测性能优于YOLOv3、RetinaNet、EfficientDet等一阶段检测方法,并且对不同大小的瑕疵检测精度均高于Faster RCNN、Cascade RCNN、IC-RCNN和TC-RCNN等算法,mAP达到了68.5%,对比结果见表4。
表4 各算法在布匹瑕疵数据集上的结果
由表4可知,与两阶段的目标检测算法Faster RCNN和Cascade RCNN相比,单阶段检测算法精度方面会差一些,因此文中选择了两阶段检测方法,本文方法的mAP达到了68.5%,比目前先进的检测算法IC-RCNN和TC-RCNN分别提升了3.5%和7.1%,实现了对花色背景干扰下布匹瑕疵高质量检测。
为了更直观评估模型分类结果的好坏,图9为测试瑕疵分类结果归一化混淆矩阵,在混淆矩阵中,颜色越深,识别的准确性越高,图中横坐标表示预测标签,纵坐标表示真实标签,基于混淆矩阵,可以看出本文模型的总体识别准确率较高,但对于漏印这类瑕疵较少的样本其识别率还有待提升,其分类错误的主要原因是由于复杂纹理干扰和瑕疵形状相似度较高造成的。
图9 瑕疵样本分类结果混淆矩阵
随后,表5记录了不同方法训练和测试所需时间对比结果,其中,T1为完成训练集所耗时间,T2为测试所有瑕疵样本所耗时间,T3为测试单张瑕疵样本所耗时间。从表5中可以看出,由于本文采用了双路高分辨率特征提取,导致训练模型时耗时较长,比Cascade RCNN增加了196 min,这是由于参数量增多造成的,在测试单张瑕疵样本时,所需时间为305.67 ms,虽然耗时较其它方法有所增加,但在保证高精度的同时基本可以满足工厂车间实际的生产要求。
表5 各算法训练时间和测试时间对比
针对布匹瑕疵数据集中的几类问题进行测试,例如复杂花色背景、小目标以及纵横比悬殊等,如图10所示,本文改进的方法在上述场景下取得了较高的检测精度,并且能够生成紧密的边界框,这说明本文所提出的方法针对布匹瑕疵数据进行了有效设计,达到了较好的泛化能力,对于该数据集中存在大量复杂花色背景的瑕疵图,可以很好消除背景的影响,对于大量的小目标瑕疵可以达到较好的检测成功率,同时对于尺度变化大和瑕疵样本较少的类别也能够生成紧密的包围框。
图10 布匹瑕疵检测效果
本文针对花色布匹瑕疵检测存在的问题,提出了双路高分辨率转换网络的花色布匹瑕疵检测方法,该方法通过双路高分辨率特征提取、优化自适应边框生成和改进聚焦损失,对花色布匹瑕疵检测的精度有了明显提高,并且优于当前主流的花色布匹瑕疵检测方法,说明该方法更适用于布匹瑕疵缺陷检测的情况。未来可以考虑在检测模型轻量化上进行改进。