融合多尺度特征的工业缺陷检测模型
2023-05-12何思锐张孙杰王永雄
何思锐,张孙杰,王永雄
(上海理工大学 光电信息与计算机工程学院,上海 200093)
1 引 言
在现代工业自动化生产中,连续大批量生产过程中都会产生一定的次品,这极大地影响了后续的工业生产和应用.例如,织物表面的变形、脏污、划伤等缺陷,将极大地破坏服装的美观和价值;钢轨的裂纹缺陷会影响列车的运行,造成严重的安全事故[1];在生产流水线上,产品的表面缺陷,如孔洞、边裂等,可能造成严重的生产事故.因此,及时发现和消除瑕疵和残次品至关重要.
早期的人工检测方法效率低,工作环境受限,检测水平不稳定.随着照相机和计算机技术的飞速发展,基于视觉的检测方法应用广泛,该方法主要由图像采集、图像处理以及缺陷检测3部分组成,能够避免操作条件和主观因素对检测结果的影响,提高检测效率.该方法主要分为传统检测方法和深度学习检测方法[1].传统检测方法利用直方图均衡化、滤波、灰度二值化等方法,对照相机获得的图像进行预处理,然后利用方向梯度直方图(Histogram of Oriented Gradien,HOG)特征[2]、形态学理论等方法进行特征提取和检测.Zhao等[3]根据图像不同区域灰度值的分布,利用HOG特征对图像进行特征提取,并利用支持向量机进行分类,检测出缺陷区域.Zhu[4]等通过改进的霍夫变换方法提取圆形电阻片位置,利用滤波方法获得候选区域,最后利用形态学方法分析电阻片的表面缺陷.
由于传统检测方法需要人工提取特征,泛化性能差等缺点,近年来,基于深度学习的表面缺陷检测成为研究热点之一.Tao等[5]利用分割的思想,设计了一种用于缺陷分割的级联自动编码器结构.该模型根据编码器对正常区域和缺陷区域的不同响应,对缺陷区域进行定位.Xu等[6]通过特征金字塔网络[7]对提取到的布匹图像特征进行过滤,以提高检测精度.Chen等[8]通过级联SSD(Single Shot MultiBox Detector)[9],YOLO(You Only Look Once)[10],深度卷积神经网络[11]等模型,在复杂环境下可以得到较好的检测效果.然而,深层网络通常模型较大,运算复杂,不能满足实时缺陷检测的需要.此外,工业缺陷图像与自然场景相比,更关注纹理信息,过深的网络可能会淹没细粒度缺陷特征,因此不适合使用较深的网络模型.
针对上述问题,本文提出了一个单阶段缺陷检测模型,用于对工业场景中产品的表面缺陷进行快速检测.该模型在训练阶段采用多种类型的卷积核提取多尺度信息,加强对纹理特征的提取;在推理阶段进行卷积核的融合,使单个卷积核学习到不同卷积核的知识,同时减少计算量,保证推理速度;针对不同的预测目标,设计差异化的检测头部;此外,设计轻量级联合注意力模块用于加强特征表示,进一步提升模型检测能力.
2 相关工作
目标检测是计算机视觉以及图像处理领域的一个基本问题,其主要任务是对图像中的目标进行准确分类和定位,给出类别名称及位置信息,因此能够应用到缺陷检测领域.
当前所流行的深度学习目标检测方法主要分为两类,双阶段法和单阶段法.双阶段法代表方法有R-CNN[12]、Fast R-CNN[13]、Faster R-CNN[14]等.此类方法首先通过选择性搜索[15]或区域选择网络进行采样,得到稀疏的感兴趣区域,然后进行分类和边界框回归.双阶段目标检测算法通过复杂的模型,感兴趣区域的提取、背景区域的过滤等方法,可以达到较好的检测效果.其中, Faster R-cnn作为高精度的双阶段检测模型,也被应用于缺陷检测领域.Wang等[16]利用Faster R-cnn算法,首先通过滑动窗口方法对原始图像进行采样,然后对采样后的区域进行分类.但是在双阶段模型中,筛选出候选区域的过程需要大量的计算,因此达不到实时检测的要求.
单阶段目标检测算法没有区域筛选步骤,直接在整张特征图上进行分类和回归,可以达到较高的速度.代表性算法有YOLO系列,SSD等.YOLO首先将输入图像尺寸归一化,划分成S×S个网格;然后通过一系列卷积操作进行特征提取,每个网格单元预测B个边界框,通过对边界框的回归直接得到最后的检测结果,产生分类结果和位置信息.该算法具有较高的检测速度,但是只有单层特征输出,且由于网络结构简单,不能获得较高的精度.SSD通过利用不同层次的特征图,进行多尺度预测输出,可以提升对不同尺寸目标的检测效果;但是,由于SSD需要利用深层网络进行预测,因此,对小目标检测效果较差.近年来,YOLO算法通过引入锚进一步加快推理速度[17]、参考特征金字塔网络进行多尺度预测[18]、采用更复杂的骨干网络[19]等方法,大大提升了检测性能,发展出一系列基于YOLO的算法.
其中,Yolov3应用最为广泛.该网络基本模块是由3×3卷积(Convolution)、批归一化(Batch Normalization)和Leaky-relu构成的CBL(Convolution+ Batch Normalization+Leaky-relu)模块,卷积层提取图像特征,批归一化操作对每层的输入进行处理,使输入分布均匀,加快网络收敛速度,减轻过拟合, Leaky-relu激活函数增加网络的非线性,同时能够避免梯度消失和梯度爆炸.骨干网络通过串联的CBL逐步进行特征提取,并通过残差连接[20]避免网络退化,最后利用特征金字塔结构使用3种不同大小的特征图来检测大、中、小对象,获得多尺度的预测输出.
Yolov3-Tiny是Yolov3的简化版本,它包含了Yolov3的基本功能,体积更小,速度更快.但是由于网络层数的减少,不能学习到足够的特征,因此精度较低.针对工业缺陷检测任务,本文对Yolov3-Tiny进行改进,通过多尺度信息融合增强模型提取特征的能力,并通过注意力模块对特征进行处理.
3 本文算法
为了满足工业检测中的速度需要,本文采用Yolov3-Tiny进行表面缺陷检测.本文通过加强骨干网络,引入注意力机制等策略,对Yolov3-Tiny进行改进,改进后的网络结构见图1.其中PCBL(Parallel Convolution+Batch Normalization+Leaky-relu)代表由平行卷积和批归一化及激活函数构成的平行卷积模块.C代表拼接(Concat)操作,将特征按照通道维度进行叠加,U代表上采样.
图1 Wide-Yolo网络结构Fig.1 Network structure of Wide-Yolo
本文将只包含单个3×3卷积的CBL模块替换为由多个不同卷积构成的组合,并结合对网络宽度的研究,提出了平行卷积组合模块,输入图像进行一系列平行卷积,获得具有多尺度信息的特征图;同时,通过联合注意力对特征重要性进行学习,最后通过检测头部输出多尺度检测结果.
3.1 平行卷积模块
对于卷积神经网络的每一层,每个通道代表一种特征,通道数越多代表信息越丰富[21].本文通过通道的叠加增加网络宽度,增强对纹理特征的学习与提取.由于不同尺寸的卷积核具有不同的感受野,可以使网络学习到多尺度特征,因此,在网络宽度增加的部分采用与原始卷积平行的1×1卷积,即逐点卷积,增强对细粒度特征的学习,同时,3×3学习大尺寸特征,使网络对不同尺寸的物体都能保持较好的检测效果.平行卷积模块见图2.
除此之外,Ding等[22]指出,卷积具有可加性,其定义为公式(1):
I×k1+I×k2=I×(k1+k2)
(1)
其中I是输入特征,k代表卷积核,即多个不同的卷积核对同一输入进行卷积,其结果相加等于先将卷积核进行融合,再进行卷积.
基于以上原理,本文将原网络中的3×3卷积替换为由1×3,3×3,3×1构成的非对称卷积组合,通过结合对称的3×3卷积和非对称卷积,提取到更丰富的特征.值得注意的是,平行卷积方式仅用于训练阶段.在推理过程中,通过在3×3卷积核中加入非对称卷积的参数,将卷积核进行融合.因此,该结构不增加推理时间.通过这种方法,可以建立一个更强大的检测模型,和使用单一的卷积核相比,能够提取更丰富的特征.
图2 平行卷积模块Fig.2 Parallel convolution module
在这一部分中,本文将原始骨干网络中的CBL模块替换为由不同尺寸的平行卷积组合,同时引入了残差连接.在训练阶段,除了逐点卷积之外,模型采用由3个不同卷积构成的非对称卷积组合,共4个卷积层对前一层特征进行处理,在推理阶段,将非对称卷积进行融合,仅利用3×3和逐点卷积进行预测.因此,推理阶段的模型和原始模型相比只增加了一个逐点卷积,但可以捕捉到不同类型的多尺度特征,性能可以获得较大的提升.
3.2 联合注意力
卷积神经网络的注意力机制主要分为通道注意力和空间注意力两个方面,能够从复杂信息中选择对当前任务更为关键的信息.Hu等[23]提出了通道注意力,对于一个H×W的特征图,通过在每个通道上添加权重来表示信息的重要性,权重越大,通道和关键信息之间的相关性越高.空间注意力[24]认为,同一层特征图上的不同像素对网络学习也具有不同的贡献,因此需要学习特征图上每一个像素的重要性,以进一步提高准确性.此外,Woo等[25]结合通道和空间注意力来综合评价信息,比单一维度的注意力机制取得了更好的效果.
图3 注意力模块Fig.3 Attention module
受文献[25]的启发,本文设计了结合通道和空间的联合注意力模块,对骨干网络输出的特征进行有选择地学习,以充分考虑通道间以及像素的重要性.注意力模块如图3所示,分为通道注意力图3(a)和空间注意力图3(b)两部分.其中,代表sigmoid计算.
文献[23]通过Squeeze压缩特征图,通过Excitation学习通道间的相关性,为了减少计算量,通过全连接层对通道进行降维.文献[26]指出,通道降维会影响模型的学习能力.同时,学习所有通道的相关性是不必要的,而且会增加计算复杂度.
基于上述理论,本文对得到的特征图,首先通过全局平均池化(Global Average Pooling)进行压缩,得到融合了每层空间信息的1维输出,然后通过ki×ki的卷积核学习局部通道之间的相关性,实现跨通道信息交互,其中ki代表学习的局部信息覆盖的通道数量,本文设置为5.通过sigmoid得到各个通道的激活值,即权重系数.最后,将得到的系数与原特征图相乘,产生具有不同重要性的特征图.计算过程见公式(2):
Fout=Fin·σ(fki(GAP(Fin))
(2)
其中,Fin为输入特征,Fout为输出特征,σ为sigmoid激活函数,fki为局部卷积操作,GAP为全局平均池化.
该模块不需要全连接层进行降维,直接进行快速卷积,可以极大地减少计算量,提高运算速度,局部卷积结果直接反映了各通道之间的相关性,同时带来精度的提升.
经过通道注意力模块的处理,网络已经学习到不同通道的重要性,将此时产生的特征图作为空间注意力模块的输入,进一步学习空间上的相关性.首先在通道维度进行全局最大池化和全局平均池化,获得具有差异化的全局信息,然后将两个特征图分别进行卷积,学习到空间相关信息,将特征图进行拼接后再次通过卷积进行降维,sigmoid激活函数得到特征图上每个像素的激活值,即像素的权重系数.最后,将得到的系数与原特征图相乘,产生注意力模块的最终输出.实验证明,经过双重学习的空间注意力图,能够有针对性地学习到不同情况下的空间信息.计算过程见公式(3):
Fout=Fin·σ(f(f(GAP(Fin))+f(GMP(Fin))))
(3)
其中,σ为sigmoid激活函数,f为卷积操作,+为通道拼接操作,GMP为全局最大池化(Global Max Pooling).
3.3 多尺度检测头部
目标检测算法通过骨干网络提取特征,检测头部产生分类结果和位置信息.Yolov3检测头部通过多层卷积后进行预测输出.Yolov3-tiny的检测头部只采用单个3×3卷积.为了进一步提高精度,本文对检测头部进行设计.
图4 检测头部结构Fig.4 Structure of head
为了保证推理速度,本文不直接采用多层卷积叠加的级联结构,而是设计并行结构,分别输出分类结果和位置信息,通过多任务学习提高检测精度;同时,在检测头部中,首先利用1×1卷积进行降维,在之后的卷积中也加入1×1卷积,逐步减少模型计算量.在Yolov3-tiny中,有两个尺度的预测输出,大尺度特征图分辨率较低,具有更强的语义信息,小尺度特征图分辨率较高,可以提取到丰富的纹理特征.本文针对两个检测头部设计不同的结构,以充分利用多尺度信息,见图4.
3.4 先验框设置
为了加快收敛速度,YOLO系列算法通过对COCO数据集进行聚类,得到一组长宽比和尺寸不同的锚(anchor),使算法从预设的尺度开始进行回归.本文针对缺陷检测任务,对3个不同的缺陷数据集进行训练和测试,如果将通过对COCO数据集聚类后的锚直接用于缺陷检测工作,一些不合适的框会产生较差的检测结果.因此,为了获得更具针对性的先验锚,本文采用k均值聚类算法针对3个数据集进行重新聚类,以进一步提高模型的精度.
4 实验及分析
4.1 实验说明
本文实验基于Pytorch深度学习框架,使用两个8G的NVIDIA GTX1080 GPU,操作系统为ubuntu16.04.本文使用随机梯度下降优化器,迭代次数为1500,批大小设置为8,初始学习率为0.001,动量设置为0.9,权值衰减率为0.0005,在迭代1200次和1350次后依次衰减10倍学习率.训练时,输入图像尺寸在320×320-608×608的范围内随机缩放,以提高对不同大小图像的鲁棒性.
实验采用准确率P(Precision),召回率R(Recall),平均精度均值mAP(mean Average Precision),帧速率FPS(Frames Per Second),参数量,计算量作为评价指标,指标定义见公式(4)~公式(7):
P=TP/(TP+FP)
(4)
R=TP/(TP+FN)
(5)
(6)
(7)
在机器学习中,TP(True Positive)、FP(False Positive)、TN(True Negative)、FN(False Negative)分别代表真阳性、假阳性、真阴性、假阴性样本的个数.式(4)代表精确率,表示检测出的正样本中实际为正样本的比例,式(5)代表召回率,表示有多少正样本被检出.AP表示在测试集上对某一类别检测的平均精度,通过式(6)计算.对所有类别的AP求均值得到平均精度均值mAP,见式(7),是目标检测中的综合评价指标.
4.2 数据集
本文在DAGM[27]、NEU-DET[28]、PCB[29]数据集上进行实验,它们分别针对纹理、热轧钢带和印刷电路板等领域.
DAGM是由人工生成的用于在纹理表面上进行检测的数据集,共包含10类缺陷,每个图像包含一个缺陷,每个图像分辨率为512×512.数据集提供椭圆形的二值掩码标签.NEU-DET是由东北大学提供的热轧钢带表面缺陷检测数据集,共包含6类缺陷,即轧制氧化皮,斑块,开裂,点蚀表面,内含物和划痕,每类缺陷分别提供300张图片,每个图片中包含多个缺陷,每个图像的原始分辨率为200×200.数据集提供VOC格式的标注.北京大学提供的PCB缺陷检测数据集,包含6类缺陷,即缺孔,鼠咬,开路,短路,杂散,伪铜,数据集共1386张图片,提供VOC格式的标注.
图5 数据增强Fig.5 Data augmentation
为了减轻过拟合,增强模型的表达能力,本文使用旋转,裁剪,随机拼接4张图像等方法进行数据增强,数据集处理方法如图5所示.训练集,验证集,测试集的设置见表1.对提供掩码的数据集,训练前将其转化为YOLO所用的标注格式,即包含类别和边界框坐标的5维标注信息.对于提供VOC标注形式的NEU-DET和PCB数据集,同样转化成YOLO格式的标签.
表1 数据集设置Table 1 Setting of Datasets
4.3 检测结果及分析
本文以Yolov3-tiny作为基线网络,针对所提出的改进方法,分别在3个公共数据集上进行实验,并通过定性分析与定
图6 算法效果比较Fig.6 Comparison of algorithm effects
量分析,验证所提出方法的有效性.不同算法针对3个数据集的检测结果见图6所示,从上到下依次为DAGM、NEU-DET、PCB的检测结果.从图6可以看出,Yolov3-tiny在3个数据集上的检测置信度较低,此外,对于印刷电路板中检测物体密集,缺陷较小等情况,出现漏检的现象,不能完整识别出所有缺陷.针对多个缺陷目标,Wide-Yolo可以有效检测出全部缺陷,改善原模型中误检、漏检等问题;同时,能够有效提升纹理表面的检测精度;由于针对数据集重新聚类,可以进一步提升预测框的置信度.
表2~表4对结果进行定量分析,针对3个数据集,分别在本文方法、原模型Yolov3-tiny、单阶段检测模型Yolov3、Yolov5[30]以及双阶段检测模型Faster R-CNN上进行训练并比较,从精度、精确率、召回率等方面验证所提出方法的有效性.
表2 不同算法的检测结果对比(DAGM)Table 2 Comparison of detection results of different algorithms(DAGM)
表3 不同算法的检测结果对比(NEU-DET)Table 3 Comparison of detection results of different algorithms(NEU-DET)
由表中结果可以看出,由于采用了更宽的骨干网络和检测头部,同时引入了双重学习的联合注意力模块,本文的改进模型和原模型相比,在DAGM、NEU-DET、PCB数据集上分别获得了11.6%、10.4%、9.5%的精度提升,此外,在3个数据集上都获得了准确率和召回率的提升.同时,在人工生成的纹理表面缺陷数据集DAGM,和钢轨表面缺陷数据集NEU-DET上,本文模型获得了较高的精度提升,表明更宽的网络能够提取到更丰富的细粒度信息,利用多尺度特征融合能够有效增强纹理特征的提取与学习.与Yolov3相比,本文模型在NEU-DET上的精度有所下降,但在DAGM上可获得与Yolov3相当的精度,在PCB上获得0.4%的精度提升.与双阶段检测方法Faster R-CNN相比,Wide-Yol的精度都有所提高,召回率有小幅提高或下降,本文认为这是由于Yolo系列算法产生的预测框较少,且Yolov3-tiny通过2个预测头部产生2个尺度的输出,导致召回率相对较低.
表5 不同算法的性能对比Table 5 Performance comparison of different algorithms
表5为输入图像尺寸在416×416时不同模型的参数量、计算量以及速度比较,以比较模型的性能.从表中可以看出,Wide-Yolo由于将骨干网络和检测头部的宽度进行扩充,同时引入了具有双重学习的联合注意力模块,参数量和计算量相比原模型都有所增加.但是,即使Wide-Yolo的宽度为原模型的2倍,网络整体参数量仅增加15%,计算量增加24%,且都远远小于其他模型.在检测速度方面,虽然与原模型相比有所降低,但仍然可以达到64FPS,可以满足实时应用的需求.在表2~表4中,Yolov5在3个数据集上都获得了最佳的检测效果,本文模型与之相比,虽然精度有所降低,但模型大小仅为Yolov5的1/2,且计算量大幅减少,可以满足轻量化部署的需求.此外,与两阶段算法相比,Wide-Yolo的参数量和计算量都有大幅降低.
4.4 消融实验
为了进一步了解本文提出的不同方法对模型性能上的影响,进行了消融实验,结果见表6.
表6 消融实验Table 6 Ablation experiments
从表6可以看出,本文提出的平行卷积组合模块PCBL,在3个数据集上分别获得7.8%、6.5%、6.3%的精度提升,证明不同类型的卷积核能够学习到更丰富的多尺度特征,使得较浅的网络也能捕获足够的信息,增强网络的学习能力.对于DAGM和NEU-DET数据集,有较大的提升,表明该模块能够增强对纹理特征的学习.
通过增加联合注意力模块.利用轻量化通道注意力和双重学习的空间注意力,使网络学习到不同特征的重要性,可以分别获得3.8%、3.3%、4.7%的精度提升,并且不会带来参数量和计算量的明显增加.
利用不同结构的检测头部,可以有效地利用深层网络学习到的语义信息来检测大目标,同时不损失浅层网络的纹理信息,更好地检测小目标.
在本文中,由于PCBL模块增加了网络宽度,所以会带来模型大小的增长;联合注意力模块不会明显改变模型大小;由于在检测头部的第一层首先采用1×1卷积,大大减少了计算量,并在之后的卷积层中加入1×1卷积,进一步降低模型大小.因此,与只增加PCBL模块相比,Wide-Yolo的计算量和参数量有所下降.通过上述方法,本文模型能够在不明显影响单阶段检测算法的速度的情况下达到精度的有效提升,表明通过更强的骨干网络学习到的特征能够在注意力模块的帮助下进一步提升网络性能.
5 结 论
本文针对缺陷检测任务,设计了一个轻量化实时检测模型Wide-Yolo.该模型基于Yolov3-tiny的基础网络,在训练阶段利用卷积组合模块提取多尺度特征,在推理阶段进行卷积核的融合,在不增加推理代价的基础上实现精度提升;并通过注意力模块将提取到的特征进行过滤,高效利用有效信息;设计多结构检测头部进行预测.实验表明,本文在3个数据集上分别获得了11.6%、10.4%、9.5%的精度提升,并具有较高的检测速度.今后的工作,将关注于进一步提升检测精度,将该算法应用于其他检测领域.