APP下载

用于PCB缺陷检测的增强上下文信息Yolov4_tiny算法

2022-09-29徐胜军胡巧艳韩九强孟月波刘光辉赵敏华

计算机测量与控制 2022年9期
关键词:残差特征提取算法

徐胜军, 胡巧艳, 韩九强,2, 孟月波, 刘光辉, 赵敏华

(1.西安建筑科技大学 信息与控制工程学院, 西安 710055;2.西安交通大学 电信学部, 西安 710061)

0 引言

随着我国现代工业技术的不断发展和智能制造体系的建立,对电子设备的生产效率和质量性能都带来了新的挑战。受限于当前制作工艺水平和集成电路的复杂性,PCB在生产过程中不可避免地出现部分印刷错误,导致电子元件质量和性能受到很大影响。当前,PCB缺陷检测方法主要使用人工目视检测[1]和电学检测方法,但是这些方法多存在速率低、成本高、难度高、有损伤等缺点,难以达到工业生产和检测对速率、精度以及成本的实际需求[2]。

近年来,机器视觉技术飞速发展,基于机器学习的PCB缺陷检测算法相继而出。传统基于图像处理方法多使用特征匹配、相似性度量等方法先定位缺陷位置,再进行缺陷类型的识别。Liu等[3]基于数学形态学和模式识别的混合识别方法提取PCB图像检测模板,并引入图像畸变检测算法进行阈值分割,得到标记的缺陷识别结果。Gaidhane等[4]利用图像对称矩阵的秩作为缺陷检测的相似性度量,在无需计算图像特征的情况下测量待测图像和检测模板的相似性。Li等[5]通过二次匹配误差算法标记目标区域并研究阈值分割图得到可能的缺陷点,最后结合掩模操作和统计直方图得到缺陷区域。虽然基于传统图像处理的检测方法实现简单、计算复杂度小,但由于光照、角度、边界等影响导致鲁棒性较差。

深度学习网络具有表达复杂图像特征的强力性能,通过卷积神经网络自动学习多层次特征,较传统图像算法具有显著优势[6],可以运用于PCB缺陷的检测问题上。目前主流的深度学习检测算法分为单阶段检测算法和两阶段检测算法。两阶段检测算法首先通过区域建议网络产生候选区域,然后对其进行分类和边界框回归。Xia等[7]使用结构相似性指数(SSIM)代替形态学算子产生目标区域,设计了一种焦点损耗的轻量级MobileNet-V3网络,在保持缺陷检测精度的前提下提升了检测速度。Ding等[8]基于Faster R-CNN提出微小缺陷检测网络(TDD-Net),通过K-means聚类算法生成锚框,使用FPN网络加强不同特征层的上下文信息。Hu等[9]通过具有特征金字塔网络的ResNet50进行特征提取,结合ShuffleNetV2残差单元,并采用GARPN生成更精确的锚框。由于两阶段检测算法以高精度为首要追求目标,故而运行速度较慢。单阶段检测算法在无需候选区域的情况下直接对目标进行类别和位置进行回归预测。Wei等[10]提出利用一个语义提升模块融合不同特征层的上下文信息,引入注意力机制和Shuffle模块加强学习能力和消除融合后的混叠效应。Adibhatla等[11]引入 GoogleNet 改进Tiny-yolov2的特征提取网络,强化缺陷特征表征能力,提高缺陷的检测精度并降低了错误率。Xin等[12]通过分析CSPDarkNet53网络结构的特征分布和PCB缺陷的尺寸分布,微调网络参数增加锚框包含检测目标的概率。李闻等[13]使用DBSCAN+K-means 聚类算法重新生成瞄框,并引入残差单元和SE Block提升了特征提取和融合能力。伍济钢等[14]使用改进二分K-means聚类算法结合交并比损失函数确定锚框,引用MobileNetV3和Inceptionv3优化特征提取网络和检测网络,优化检测速度的同时有效提高对PCB小目标缺陷的检测性能。和两阶段检测算法相比,单阶段检测算法以高速度为首要追求目标,然而其检测精度较低。

为解决上述问题,本文提出一种用于PCB缺陷检测的增强上下文信息Yolov4_tiny算法。主要贡献如下:1)通过引入Transformer编码单元改进特征提取网络增强不同局部信息的能力;2)利用浅层特征增强上下文信息,提升小目标缺陷特征的表征能力;3)引入注意力机制对有效特征层加权,强化目标特征信息。

1 Yolov4_tiny算法

Yolov4_tiny算法以Yolov4[15]算法为基础精简设计的轻量级算法,具有更为优异的检测速度。该算法从结构上分为特征提取网络、特征融合网络和预测网络。特征提取网络采用CSPDarknet-tiny[16],输入的样本经过数据预处理后利用特征提取网络提取PCB图像的浅层特征和深层特征。特征融合网络采用FPN(feature pyramid networks)[17],通过卷积和上采样操作自下而上融合特征提取网络输出的两个有效特征层,加强语义特征传递。预测网络将特征融合网络得到的两个加强特征层通过卷积操作进行分类和回归得到最后的预测结果。Yolov4_tiny算法结构图如图1所示,默认输入图像尺寸是608×608×3,特征分类为6,此时YOLO Head输出尺寸为19×19×33和38×38×33,分别对应3个先验框,每个先验框占据11维信息,包括4维坐标信息、1维置信度信息和6维类别信息。

图1 Yolov4_tiny算法网络结构图

2 用于PCB缺陷检测的增强上下文信息Yolov4_tiny算法

工业领域的PCB缺陷检测常存在目标小、特征少等问题,Yolov4_tiny作为单阶段检测算法虽然具有检测速度快的特点,但由于其检测精度较低的问题不能直接应用于工业领域的PCB缺陷在线检测。因此提出一种用于PCB缺陷检测的增强上下文信息Yolov4_tiny算法。首先,该算法通过引入Transformer编码单元对特征提取网络深层特征冗余的问题进行优化,增强网络捕获不同尺度PCB图像局部特征信息的能力;然后,针对PCB缺陷的小目标特性,利用浅层特征增强PCB缺陷上下文信息,提升对小目标缺陷的表征能力;最后,引入注意力机制对特征提取网络输出的有效特征层加权,减轻干扰信息的影响,强化目标特征信息,使检测网络更好地适应小目标检测,所提算法网络结构图如图2所示。

2.1 基于Transformer编码单元的特征提取网络

在Yolov4_tiny算法中,输入图像通过卷积单元和残差单元操作实现卷积神经网络的特征提取过程。由于轻量级网络对于小目标特征提取存在深层特征的信息冗余特点,Transformer编码单元[18]的残差结构可以提取不同图像区域之间的特征信息,为此提出使用Transformer编码单元替换特征提取网络最后的卷积单元,不仅可以捕获全局信息和丰富的上下文信息,从而避免深层特征的过度平滑,并有效降低计算复杂度。

Transformer编码单元结构图如图3所示。特征提取网络的第三个残差单元输出作为Transformer编码单元的输入,先后经过两个残差层。第1残差层为多头注意力层(MultiHead Attention),由多个自注意力组合形成,第2残差层为前向传播层(Feed Forward),由两个线性层和一个非线性层形成。两个残差层都分别经过求和、归一化和随机丢弃操作再进行残差连接,防止网络退化或者过拟合。

图3 Transformer 编码单元结构图

假设输入矩阵为X,第1残差层输出为X1,第2残差层输出即最终输出为X2,计算过程如式(1~6)所示。

Q=WQX,K=WKX,V=WVX

(1)

(2)

MSH=concat(head1,…,headh)W0

(3)

X1=AND(MSH+X)

(4)

MLP=max(0,X1W1+b1)W2+b2

(5)

X2=AND(MLP+X1)

(6)

式中,Q、K、V分别表示输入矩阵的query矩阵、key矩阵和value矩阵,head表示单个自注意力的输出,dk表示Q、K矩阵的向量维度,MSH、MLP分别表示多头注意力输出和前向传播输出,WQ、WK、WV、W0分别代表输入矩阵对于query矩阵、key矩阵、value矩阵的权重矩阵和对多个自注意力进行连接和变换的权重矩阵,W1、W2、b1、b2表示两个全连接层的权重矩阵和偏置参数,AND表示求和、归一化和随机丢弃操作。

在Transformer编码单元自注意力的计算过程中,网络的各个单元格会搜索与其他单元格的潜在关系将其关联起来,进而得出丰富的、相关的特征信息。通过两个残差层的操作,不仅挖掘了特征的表征潜能,也增加了捕获不同局部信息的能力。

2.2 增强上下文信息的FPN特征融合网络

在目标检测网络中,被检测目标与周围目标和背景存在丰富的上下文信息,本文通过增强上下文信息来提高特征的表征能力。在Yolov4_tiny算法中,特征提取网络将进行下采样后的38×38和19×19的特征层作为有效特征层进行加强特征融合。对于这种PCB缺陷的小目标检测问题而言,两个有效特征层都属于较深层特征,缺乏浅层特征表示,不利于目标定位,容易出现漏检或误检现象,影响检测精确度。故此本文从特征提取网络获取76×76的浅层特征层,提升FPN网络对小目标缺陷的表征能力,增强PCB缺陷小目标上下文信息。改进后的算法如图2所示,特征融合网络输出的38×38加强特征层继续进行卷积和上采样操作得到76×76的特征层与特征提取网络输出的76×76有效特征层融合得到具有浅层特征的加强特征层。为了减少参数量和计算量,本文去除了特征融合网络输出的适用于大目标的19×19检测层。改进后的FPN网络特征融合层可以获得加强的浅层输出,从而增强网络对小目标缺陷的表征能力。

2.3 通道空间注意力模块

在特征提取过程中,通道维度和空间维度不可避免会出现一些干扰信息,导致网络性能不佳。为了在特征融合时能高效利用特征提取网络提取到的特征信息,本文对特征提取网络输出的3个有效特征层分别添加一个注意力机制CBAM模块(convolutional block attention module)[19],分别从通道维度和空间维度依次推断注意力映射,并与输入特征层相乘以进行自适应特征优化,减轻干扰信息的影响,使模型捕获更多关键的特征信息。

图2 所提算法网络结构图

图4 CBAM模块结构图

其中,通道注意力模块强调特征图的目标信息,从通道维度对目标信息进行加权处理,计算过程如式(7)所示。先使用最大池化和平均池化从空间维度对特征图F76×76×128进行压缩,得到两个1×1×128的特征描述,再使用由MLP(multi-layer perceptron)组成的共享网络对这两个不同的特征描述进行计算并进行激活得到MC(F)。

MC(F)=σ(MLP(AP(F))+MLP(MP(F)))

(7)

MS(F)=σ(f7*7([AP(F);MP(F)]))

(8)

式中,AP、MP分别表示平均池化操作、最大池化操作,f7*7表示核大小为7*7的卷积操作,σ表示Sigmoid激活函数。

空间注意力模块强调特征图的位置信息,从空间维度对于目标信息进行加权处理,计算过程如式(8)所示。先使用最大池化和平均池化从通道维度对特征图F76×76×128进行压缩,得到两个76×76×1的特征描述,使用concat将两个特征描述合并,进一步使用7*7的卷积核进行卷积操作并进行激活生成MS(F)。

2.4 损失函数

YOLO Head输出的特征层通过解码得到预测框输出参数即坐标参数、置信度参数和类别参数,通过学习三项参数逐步确定检测目标的坐标和类别,置信度参数用于删除低于置信度阈值的预测框。因此损失函数主要由坐标误差Lloc、置信度误差Lconf和类别误差Lclass组成。

Loss=Lloc+Lconf+Lclass

(9)

坐标误差采用CIOU(Complete-IoU)损失函数,综合考虑预测框与真实框的中心距离、重合度以及宽高比,计算方式如公式(10)所示。

(10)

式中,IOU表示预测框和真实框的交并比,wgt、hgt、w、h分别表示真实框和预测框的宽度和高度,ρ2(b,bgt)表示真实框和预测框的中心点的欧式距离,c表示包含预测框和真实框的最小框的对角线距离。

置信度误差采用交叉熵损失函数,计算方式如公式(11)所示。

(11)

类别误差采用交叉熵损失函数,计算方式如公式(12)所示。

(12)

3 实验与分析

3.1 实验环境与数据集

深度学习实验平台系统配置为Ubuntu 18.04,CPU 为Inter(R) Core(TM)i9-9900CPU @2.30 GHz,GPU 为 NVIDIA GeForce GTX 2080Ti,python版本为3.7.2,pytorch版本为1.2.0,Cuda版本为10.1。

本实验采用北京大学智能机器人开放实验室的公开PCB缺陷数据集[8]进行网络的训练和测试。该数据集包含10 668张PCB缺陷图像及其对应的标注文件。图像缺陷类型分别为漏焊、缺口、开路、短路、毛刺和余铜,每张图像包含1到2类缺陷。整个数据集按照8∶2的比例随机划分为训练集和测试集。

3.2 训练参数设置与评价指标

对比实验基于迁移学习的思想,使用Yolov4_tiny算法在COCO数据集训练过的模型作为预训练模型,训练分为冻结阶段和解冻阶段,设置冻结阶段的迭代次数为50,批处理大小为48,学习率为0.001,解冻阶段的迭代次数为50,批处理大小为24,学习率为0.000 1。为了使得先验框尺寸与缺陷尺寸更加匹配,利用K-means聚类算法对先验框重新聚类,得到适合76×76特征层的先验框尺寸为[13,12]、[13,17]、[16,17],适合38×38特征层的先验框尺寸为[21,22]、[27,14]、[31,28]。

为了评估算法的检测性能,本文采用准确率(Precision)、召回率(Recall)、均值平均精度(mAP)、检测时间(Time)以及模型参数规模(Size)作为评价指标对算法进行测试和分析。Precision、Recall和mAP各类指标的计算公式如下。

(13)

(14)

(15)

(16)

式中,TP、FP、FN分别为正样本且预测正确数、正样本且预测错误数、负样本且预测错误数。其中预测值为正样本指IOU大于0.5的预测值的分类结果。

3.3 消融实验结果与分析

为了分析Transformer编码单元、改进的FPN网络以及CBAM注意力模块分别对所提算法的提升效果,以Yolov4_tiny为基础架构针对本文所提出的改进方案进行消融实验。各消融算法的相关参数设置和训练策略均相同,测试结果如表1所示。

表1 消融性能对比实验 %

实验结果表明,以Yolov4_tiny为基础在特征提取网络引入Transformer编码单元对数据集进行训练,较Yolov4_tiny算法Precision提升0.75%,Recall提升1.36%,mAP提升1.09%;以Yolov4_tiny为基础增加浅层特征映射来改进FPN特征融合网络对数据集进行训练,较Yolov4_tiny算法Precision提升2.00%,Recall提升1.25%,mAP提升1.62%;以Yolov4_tiny为基础在特征融合网络前引入CBAM注意力模块对数据集进行训练,较Yolov4_tiny算法Precision提升0.52%,Recall提升0.66%,mAP提升0.62%;以Yolov4_tiny为基础加入3个模块后,本文算法达到了最佳检测性能,较Yolov4_tiny算法Precision提升2.73%,Recall提升4.06%,mAP提升3.12%。因此,整体改进后的算法检测精度均优于单个改进后的算法。综上,通过消融实验可以证明本文所提出的改进方案对于Yolov4_tiny算法在PCB缺陷检测任务中的检测性能有所提升。

图5显示了原始Yolov4_tiny算法和本文算法在训练期间的损失曲线。无论是前半段的冻结阶段还是后半段的解冻阶段,本文算法的训练集损失和测试集损失曲线都比原始Yolov4_tiny算法具有加速收敛的趋势,且损失值更低。

图5 Yolov4_tiny算法和本文算法检测模型的损失曲线

3.4 不同检测算法性能结果与分析

为了进一步验证本文算法的优越性,选取3种主流目标检测算法同本文算法进行对比,对比算法包括以Resnet50为主干网络的两阶段目标检测算法Faster RCNN[20]和以VGG16为主干网络的单阶段目标检测算法SSD[21]、Yolov3目标检测算法[22]、用于PCB缺陷检测的改进版Yolov3算法[13]、轻量级目标检测算法Yolov4_tiny。针对不同算法的Precision、Recall、mAP、Time、Size评价指标的对比结果如表2所示。

表2 不同检测算法性能对比实验

从衡量算法精确率Precision、查全率Recall来看,Faster RCNN算法使用候选框机制遍历目标时能够较为全面的检测到目标,但因此也存在无缺陷区域,导致Recall指标表现优异,Precision指标较低;SSD算法网络结构拥有多尺度分类器,能较好地兼顾提取不同尺寸目标,又因为网络深度较低,特征提取不够充分,导致Precision指标表现优异,Recall指标较低;Yolov3算法和改进版Yolov3算法通过特征网络提取深层特征与浅层特征并进行加强融合,但对部分缺陷仍存在检测难度,Precision和Recall指标略显不足;本文算法在Yolov4_tiny算法的基础上增加特征提取网络输出的有效特征层,将浅层特征加权后传递到特征融合模块中,保留了小目标的特征信息,两类指标分别提升2.73%、4.06%。

从衡量算法整体性能的mAP来看,Faster RCNN算法、SSD算法、Yolov3算法、改进Yolov3算法在PCB缺陷检测过程中错误较多,mAP指标处于90%以下;Yolov4_tiny算法表现较好,达到了95.58%;本文算法相对于Yolov4_tiny算法提升了3.12%,达到了最优的性能指标。

从衡量算法部署应用可行性的Time和模型参数规模Size来看,Faster RCNN算法、Yolov3算法、改进版Yolov3算法的检测时间较大,难以保证实时性;SSD算法、Yolov4_tiny算法和本文算法的检测时间分别是90.73 ms、51.72 ms和81.78 ms,可以较好的保证在线检测实时性的要求,但本文算法较Faster RCNN算法、SSD算法、Yolov3算法、改进版Yolov3算法和Yolov4_tiny算法的模型参数规模分别减少90.27 MB、74.57 MB、244.93 MB、244.98 MB和3.93 MB。综上所述,考虑到定量评价的检测精度、检测速度以及模型参数规模等指标,本文算法优于其它算法。

3.5 不同检测算法检测结果与分析

为直观评价本文算法在PCB缺陷数据集中检测效果的优越性,分别采用Faster RCNN、SSD、Yolov4_tiny和本文所提算法进行对比实验,在测试结果中选择5种具有代表性的测试图对比。图6所示为测试原图。为更直观进行缺陷检测结果对比,图7中仅放大展示图6方框部分的测试结果,自上向下分别为毛刺(spur)、缺口(mouse_bite)、短路(short)、余铜(spurious_copper)和漏焊(missing_hole)缺陷检测,自左向右分别为Faster RCNN、SSD、Yolov4_tiny和本文算法的检测结果以及实际标注结果。

图6 测试原图

图7 检测结果对比

由图中对比结果可以看出,Faster RCNN算法的候选框机制虽然可以将大部分缺陷检测出来,但是对于同一个目标存在较为严重的重叠现象,如图7的第1、2、4、5行所示,同一个目标出现多个检测框,且第3行出现漏检、多检现象;SSD算法由于网络深度不足对特征的提取效果不佳,存在大量的漏检现象,对于图7中的检测目标均未检测出;Yolov4_tiny算法对于毛刺、缺口、余铜和漏焊这类尺寸较小且不易检测的目标存在一定程度上的漏检现象,如图7的第1、2、3、4行所示,且第2行中毛刺和缺口两类目标识别不清;本文算法可以将所有目标都正确地检测到,且检测结果得分最高,具有更加优异的检测效果。综上所述,同其它对比算法相比,本文所提算法的检测精度和检测速度表现最为优异。

4 结束语

针对PCB缺陷检测问题,提出了一种用于PCB缺陷检测的增强上下文信息Yolov4_tiny算法,能够在保证实时性的基础上对PCB缺陷进行精准定位和分类。首先,本文选用高实时性的Yolov4_tiny算法作为基本框架,确保了缺陷检测的准确性和快速性;其次引入Transformer编码单元来改进特征提取网络,增强了不同局部信息的能力,并利用注意力机制对特征提取网络的有效特征层加权,强化了目标特征信息。考虑到PCB缺陷目标尺寸小、特征信息少的问题,本文增加特征提取网络输出的有效特征层,利用浅层特征增强PCB缺陷小目标上下文信息,并去掉了冗余的检测层。实验结果表明本文算法可以满足工业上PCB缺陷检测的实际需求。

猜你喜欢

残差特征提取算法
同步定位与建图特征提取和匹配算法研究
多级计分测验中基于残差统计量的被试拟合研究*
用于处理不努力作答的标准化残差系列方法和混合多层模型法的比较*
Travellng thg World Full—time for Rree
基于MED—MOMEDA的风电齿轮箱复合故障特征提取研究
基于曲率局部二值模式的深度图像手势特征提取
学习算法的“三种境界”
算法框图的补全
算法初步知识盘点
测量数据的残差分析法