融合浅层特征和注意力机制的PCB缺陷检测方法
2024-04-10廖鑫婷吕盛坪
廖鑫婷,张 洁,吕盛坪
(1.东华大学 人工智能研究院,上海 201620;2.东华大学 机械工程学院,上海 201620;3.华南农业大学 工程学院, 广东 广州 510642)
0 引言
印制电路板(Printed Circuit Board,PCB)作为现代电子产品不可或缺的组成部件,由于受到各种复杂工序要求、设备运作状况、人为因素和环境因素等影响,在生产制造过程中可能出现毛刺、鼠咬、缺孔、短路、断路等缺陷[1]。这些缺陷不仅影响整板的美观与性能表现,还可能导致整板的报废,以至于降低产品合格率和增加生产成本[2]。因此,为了提高PCB产品的质量及生产效率,缺陷检测是印刷电路板生产过程中质量控制的基本要求。
PCB缺陷检测是利用人工目视或机器视觉判断产品表层是否存在缺陷的技术,主要包括人工检测法和自动光学检测法等[3]。自动光学检测作为一种无损非接触式的缺陷在线检测技术,已成为PCB制品质量检测的重要环节,其核心检测算法可划分为传统机器视觉的检测算法和基于深度学习的检测算法[4]。基于传统机器视觉的PCB缺陷检测算法,往往采用常规图像处理算法或人工设计特征加分类器方式完成缺陷检测任务,存在标准模板制作繁杂,缺陷特征提取困难,检测不同型号PCB时需要重新建模等问题[5-8]。
相较之下,基于深度学习的目标检测算法借助其优秀的表征学习能力可以有效地解决这类问题[9]。近年来不少研究学者纷纷将其应用于PCB缺陷检测领域,以突破传统机器视觉缺陷检测技术的瓶颈。ZHANG等[8]针对PCB缺陷检测中类分布的不平衡以及真实缺陷和伪缺陷的不同错误分类成本的问题,在ResNet中添加成本敏感调整层,根据不平衡程度为少数真实缺陷分配了较大的权值,通并过最小化加权交叉熵损失函数来优化CS-ResNet检测网络。伍济钢等[10]使用改进聚类算法确定锚框,引入MobileNetV3和Inceptionv3分别作为特征提取网络和检测网络,不仅提升PCB缺陷检测性能,还有助于现场轻量化移动端的部署。苏佳等[11]在YOLOv4的基础上,利用二分K-means算法生成合适的锚框,利用ResNet网络作为特征提取网络减少网络参数,并结合注意力机制、改进PANet结构和H-Swish激活函数提高准确率。陈博源[12]在PCB缺陷数据集上,用数据增强、自适应锚框设计、广义交并比(Generalized Intersection Over Union,GIOU)损失函数等训练技巧进行YOLOv5网络训练,以此获得PCB缺陷智能检测模型。杨杰等[13]利用密集YOLOv3的PCB缺陷检测算法,增强网络的特征重用,并改进损失函数解决交并比为零时无法继续优化的问题。CHEN等[14]提出Transformer-YOLO检测网络,改进聚类算法以生成适合PCB缺陷的锚框,并利用Swin Transformer特征提取网络有效建立图像特征之间的关系。TANG等[15]通过融合K-means++算法、Swin transformer模块、小目标预测层、EIoU损失函数和深度可分离卷积,构建PCB-YOLO检测算法,实现PCB缺陷的检测效率和实时性的提高。基于深度学习的检测方法使用感受野较大的深层网络结构,不断对输入图像进行卷积操作来提高检测精度。在实际生产中,PCB微小缺陷在图像中占比小,缺陷位置随机,并与背景语义信息区别甚微,因此深层网络模型学习到的缺陷特征信息非常薄弱。
现有基于深度学习的PCB微小缺陷检测存在以下问题:①深层网络的大量卷积操作造成PCB微小缺陷关键信息的流失。深层网络的卷积操作,虽能在减少参数量的同时提取特征信息,但对于微小缺陷而言,随着网络层次的增加,深层卷积输出的特征信息已被压缩或者丢失;②PCB微小缺陷关键特征信息提取不完善。由于PCB微小缺陷图像占比小,与背景对比度低,深层网络在特征提取过程中,未能有效剔除冗余的背景信息,导致网络对微小缺陷信息的敏锐度不强。
为解决上述问题,本文提出基于YOLOv5-Tiny Defect Detection(YOLOv5-TDD)的PCB微小缺陷检测算法。首先针对深层网络的微小缺陷信息丢失的问题,设计了颈部网络结构,在原有YOLOv5的基础上,通过添加更浅层CSPblock1的特征Output1作为输入,将包含微小缺陷语义信息的更浅层特征融入颈部网络,并缩短了更浅层特征Output1与小目标检测分支YOLO Head1距离。其次针对网络对微小缺陷信息的敏锐度不强的问题,在YOLOv5-TDD网络特征合并节点中引入10个SE-SiLU注意力机制模块,对合并前特征图中微小缺陷信息分配较高的特征权重,使得有效微小缺陷信息多次重用,提升深层网络对微小缺陷的表征学习能力。最后,以PCB_DATASET[16]数据集、DeepPCB[17]数据集和PCBSDD[18]数据集为测试对象,基于本文提出的方法进行不同算法的性能对比实验分析和优化策略的消融实验分析。
1 YOLOv5-TDD网络模型
针对PCB表面缺陷检测的实时性需求和工程项目部署难度,本文的YOLOv5-TDD模型选用模型参数量较小的YOLOv5s[19]模型为基础进行改进,其参数量和计算量分别是8.32 M和35.85 G。如图1所示,YOLOv5-TDD模型根据各部分功能不同分为主干网络(Backbone)、颈部网络(Neck)和预测网络(Prediction)三部分。主干网络由Focus模块、卷积模块(Conv)、CSP_X模块和SPPblock模块组合而成,主要功能是提取输入图像的特征信息,并将4个CSPblock提取的特征输入颈部网络。颈部网络通过对160×160、80×80、40×40、20×20四种不同尺寸的特征图,不断上采样(Upsampling)、合并(Concatenation)和下采样进行特征融合,进一步加强不同尺寸的特征信息传递。鉴于深层微小缺陷特征信息量少,将尺寸80×80的特征图作为小目标检测分支输入YOLO Head1,并为其分配尺寸为(10,13)、(16,30)和(33,23)的预设小锚框;而中目标检测分支YOLO Head2和大目标检测分支YOLO Head3则分别以尺寸为40×40和20×20的特征图作为输入,以及匹配尺寸为(30,61)(62,45)和(59,119)的预设中锚框和尺寸为(116,90)(156,198)和(373,326)的预设大锚框。最后,预测网络中3个YOLO Head模块将前期提取的特征转化为预测结果。
1.1 YOLOv5-TDD颈部网络结构
在深度学习中,浅特征层相较于深特征层的感受野较小,能够从像素级别关注图像信息,从而使得特征提取网络获得更多的细节特征,有利于提高图像中占比小的PCB缺陷检测的准确率。如图1和图2所示,YOLOv5-TDD颈部网络结构在原有基础上,添加更浅层CSPblock1的特征Output1作为输入,将包含微小缺陷的语义信息的更浅层特征融入颈部网络,并将微小缺陷信息较丰富的特征Output1与特征Output2融合后的特征Output5作为小目标检测分支YOLO Head1的输入,缩短更浅层特征Output1与小目标检测分支YOLO Head1距离,改善随着网络深度的增加微小缺陷特征信息丢失的问题。Output1特征输入先与经过CSP_X模块、Conv模块和上采样操作的Output2特征融合,再进行CSP_X模块和Conv模块操作实现下采样,并与下层特征融合后的特征进行二次融合,最后再次进行CSP_X模块作为预测网络小目标检测分支YOLO Head1的输入和后续下采样的输入,具体如图2所示。其中,为了减少网络的计算量和深度,此处的CSP_X模块设置1个Res unit模块(n=1),并将残差边(shortcut)设置为False。在图1和图2中,自顶向下信息通路的融合操作和自底向上的信息通路的融合操作分别如式(1)和式(2)所示:
图2 融合不同尺寸浅层特征的小目标检测分支
f(xi,yi+1)=xi+Upsampling(yi+1),
(1)
g(xi,yi-1)=xi+Downsampling(yi-1)。
(2)
式中,χ和Y为特征层的集合,x∈χ和y∈Y各为一个张量,xi为第i层特征,yi∈Y是第i层的输出,xi+1为xi的上一层特征,f(·)和g(·)分别是自顶向下通路以及自底向上通路的融合操作符。
1.2 SE-SiLU注意力机制模块
YOLOv5-TDD在网络特征合并节点中引入10个SE-SiLU注意力机制模块,对合并前特征图中微小缺陷信息分配较高的特征权重,使得有效微小缺陷信息多次重用,抑制无关的背景特征信息流通,降低微小缺陷有效信息随着网络加深丢失和微小缺陷与背景对比度不高的影响,提升深层网络对微小缺陷特征的学习和表达能力。SE-SiLU模块的整体流程如图3所示,鉴于压缩和抑制(Squeeze and Excitation, SE)结构的思想,利用全局平均池化(AvgPool)对输入特征图的信息进行压缩,再通过两个全连接层(Linear)和SiLU激活函数组成的多层感知机(Multi-Layer Perception,MLP)进行特征提取,再利用Sigmoid函数进行归一化后得到不同通道的权重值,最后结合权重值对输入特征图进行特征放大和抑制操作,提升网络对PCB微小缺陷特征的选择能力,该过程可用式(3)表示。其中,SiLU激活函数,相较于原ReLU激活函数,具有其无上界有下界、平滑、非单调的特性,可改善深层网络训练效果和性能表现,具体表达式和曲线图分别如式(4)和图4所示。
图3 SE-SiLU模块
图4 SiLU函数曲线
(3)
式中,输入特征图F∈RH×W×C,H、W、C分别为输入特征图F的高、宽和通道数,fx0(i0,j0)表示输入特征图F的第x0通道中坐标为(i0,j0)点的像素值,⊗表示两个矩阵对应元素相乘。
(4)
2 PCB缺陷图像数据集
2.1 PCB_DATASET数据集
PCB_DATASET数据集是由北京大学智能机器人开放实验室通过工业摄像机拍摄不同PCB裸板的图像后,均衡不同缺陷种类的数量进行修图,最后得到每张图像含若干个同类缺陷的缺陷图像数据集,主要包含缺孔、鼠咬、断路、短路、毛刺、残铜6类常见的PCB表面缺陷[16]。PCB_DATASET数据集作为实验的数据集,共693张缺陷图像,其平均像素为2777×2138。
由于原始数据集样本量较少,本文采用随机裁剪、图像旋转和亮度变化进行数据集扩充。随机裁剪通过用鼠标点击定位为操作的中心,得到不同大小的图像。图像旋转则使图像以90°、180°和270°的角度旋转,从而可以获得相同缺陷的4个不同角度。亮度变化指定亮度值,调整原始图像的亮度。旋转和随机剪切图像有助于检测性能和鲁棒性的提高;亮度变化模拟了不同环境照明的亮度偏差,提高了模型对不同照明的适应性[20-21]。此外,将所有图像的大小调整为640×640像素,最终获得9037张图像,各缺陷类别的图像数量如表1所示。最后,每个图像的表面缺陷由LabelImg标注,并以PASCAL VOC格式存储,并将数据集按9∶1的比例,随机划分为训练集和测试集。
表1 PCB_DATASET详细信息
2.2 DeepPCB数据集
DeepPCB数据集是由上海交通大学图像处理与模式识别研究所公开的PCB缺陷数据集。如表2所示,该数据集包含1500张残铜(copper)、鼠咬(mousebite)、断路(open)、针孔(pin-hole)、短路(short)和毛刺(spur)6类PCB缺陷图像,并且每张缺陷图像包含若干个不同种类缺陷[17]。虽然PCB_DATASET数据集与DeepPCB数据集的缺陷类型相似,但是两数据集中PCB图像背景区别较大、图像颜色不同,并且前者每张图像中仅包含一种类型缺陷的多个目标,而后者图像中则包含多种类型缺陷的多个目标。由于该数据集已包含缺陷图像和缺陷标注文件,本文仅将其按照9∶1的比例划分训练集和测试集,以便后续PCB缺陷检测模型的训练与验证。
表2 DeepPCB详细信息
2.3 PCBSDD数据集
PCBSDD数据集是在PCB企业生产车间采集的常见PCB表面缺陷数据集,并进行数据集扩充和LabelImg表面缺陷标注。如表3所示,该数据集包含的缺陷与前两个数据集不同,主要包含线路不良、杂物、划伤、补线不良、孔损、补油超标6类常见的PCB表面缺陷,共19029张图像[18]。为了方便验证模型性能,将其按9:1的比例随机划分为包含17126张图像的训练集和包含1903张图像的测试集。
表3 PCBSDD详细信息
3 实验与分析
3.1 性能评价指标
目前目标检测模型常用的性能评价指标主要有精确率(P)、召回率(R)、F1得分,某一类别的平均准确率(AP)和多类别的平均准确率(mAP)等[22]。在计算各性能评价指标前,需设定IoU(交并比)判定阈值T(一般设T=0.5)及计算IoU。在图5中,实线矩形框A为预测框,虚线矩形框B为真实框,网格阴影区域C为它们的重叠区域,C区域面积与A、B区域并集面积之比则为IoU,具体公式如式(5):
(5)
图5 预测框与真实框示意图
假设某个预测框IoU得分大于阈值T,则该预测框被划分为真正例TP,而那些IoU得分小于阈值T的预测框和不包含目标的预测框为假正例FP,真实目标总数为N,则召回率R、精确率P和F1得分计算方法为:
(6)
(7)
(8)
AP为P-R曲线下方区域的面积,其中该曲线展示不同阈值对应的P与R。mAP是多个类别AP的平均值,mAP的大小一定在[0,1]区间,且越大越好。
3.2 实验环境及参数设置
在实验环境的选择上,本文实验采用了Ubuntu18.04-64位操作系统,型号为Tesla V100的显卡,Python开发语言,Visual Studio Code编译软件,PyTorch深度学习框架,并行计算架构是CUDA11.0+cuDNN8.0.5。
为了减少网络训练时间以及避免网络过拟合或欠拟合现象,采用迁移学习加微调训练方法[23]。基于迁移学习原理,采用基于VOC数据集的模型作为预训练模型,用于主干网络的参数初始化。在前50训练世代内,首先冻结主干网络的参数,对其余部分进行训练和参数更新;然后在后50训练世代内,解冻主干网络的参数,对整个网络的参数进行更新。训练网络时,网络输入大小为640×640,优化损失函数采用SGD优化器,前50世代的批大小(batch size)为16,初始学习率为0.001,后50世代的batch size为8,初始学习率为0.0001。
3.3 不同数据集的对比实验
由于PCB缺陷形态和种类多样,本文采用PCB_DATASET、DeepPCB和PCBSDD三种PCB缺陷数据集进行YOLOv5-TDD和YOLOv5算法的性能对比实验分析。如表4所示,针对PCB_DATASET的PCB微小缺陷,YOLOv5-TDD的检测速度略低于YOLOv5,但其检测精度为99.12%,比YOLOv5提高了3.54%,每类缺陷的检测精度提升了0.13%~5.28%。针对DeepPCB数据集的检测结果如表5所示,YOLOv5-TDD的检测精度不仅比YOLOv5提高了3.93%,检测速度FPS略高于YOLOv5,其中鼠咬、断路和毛刺的检测精度提升显著,分别提升了3.88%、3.43%和4.93%。由表6可知,在PCBSDD数据集的检测任务中,YOLOv5-TDD比YOLOv5的检测性能率高,检测精度达到了98.87%,并且针对划伤这类形态纤细、与背景对比度小的缺陷,检测精度提高了5.45%。综上所述,在PCB微小缺陷检测任务中,YOLOv5-TDD比YOLOv5检测性能表现更佳,从而验证了YOLOv5-TDD比YOLOv5对PCB微小缺陷的网络表征学习能力更强。
表4 PCB_DATASET数据集的不同算法性能指标结果
表5 DeepPCB数据集的不同算法性能指标结果
表6 PCBSDD数据集的不同算法性能指标结果
3.4 优化策略的消融实验
为验证优化策略的有效性,利用PCB_DATASET数据集,对YOLOv5、YOLOv5+改进颈部网络、YOLOv5+SE、YOLOv5+SE-SiLU和YOLOv5-TDD五种算法进行消融实验分析。
3.4.1 模型训练过程分析
由不同算法的训练损失曲线(图6a)可知,YOLOv5-TDD的训练损失曲线,随着训练世代的增加,曲线斜率逐渐减小,并从第4个世代开始,训练损失值均较小于其他算法,证明加入优化策略后的检测算法的训练效果优于其他算法。其次,如图6b所示,利用不同Epoch训练得到的权重进行检测精度验证时,YOLOv5-TDD从第4个世代开始,检测精度均较高于其他算法,表明优化策略使得检测算法不但获取更低的训练损失值,而且在微小缺陷的检测任务中得到更高的检测精度。
图6 不同优化策略模型的训练过程分析
3.4.2 模型P-R曲线分析
如图7所示为不同算法对测试集进行测试后,得到的6个微小缺陷的P-R曲线。YOLOv5-TDD的每类PCB缺陷P-R曲线完全包络了其他算法曲线,这说明YOLOv5- TDD获得的每类微小缺陷检测精度都优于其他算法。相较于YOLOv5算法获得的P-R曲线,YOLOv5+改进颈部网络算法在残铜缺陷检测任务中获得的P-R曲线波动较大,而YOLOv5+SE算法在缺孔、断路和短路缺陷检测任务中获得的P-R曲线波动较大。YOLOv5-TDD通过同时优化颈部网络和引入SE-SiLU注意力机制模块,改善利用单一优化策略时个别微小缺陷的P-R曲线波动较大和曲线包络面积小的问题。
图7 不同缺陷类型的P-R曲线
3.4.3 模型性能和热力图分析
由表7不同算法的性能指标结果可知,YOLOv5-TDD的平均精度(mAP)为99.12%,比YOLOv5的检测精度高了3.54%,F1值、不同缺陷种类的平均召回率(mR)和不同缺陷种类的平均精确率(mP)分别提高了0.06、9.28%和1.66%,同时检测速度FPS与其接近,验证了YOLOv5-TDD优化策略的有效性。此外,颈部网络的优化策略,通过增加更浅层特征融合分支,避免包含更丰富的微小缺陷特征信息丢失于深层网络中,显著提升了断路、短路和残铜缺陷的检测精度,而SE-SiLU注意力机制模块的优化策略,自适应增加和减少有用的特征信息和冗余的背景信息,显著提升了鼠咬和毛刺缺陷的检测精度,两种优化策略相辅相成。
表7 消融实验的不同性能指标结果
此外,如图8所示,本文通过热力图可视化对比不同优化策略对断路缺陷特征的空间响应,其中颜色由蓝到红表示激活值逐渐变大。由YOLOv5算法得到的热力图可知,该算法不但未能识别出全部缺陷,而且在缺陷以外的部分局部区域仍能获取到网络的关注度,而利用优化策略的算法既能精准识别出全部缺陷,还能剔除缺陷以外的背景信息干扰。值得注意的是YOLOv5-TDD算法通过叠加优化策略,在取得上述效果的基础上,热力图中缺陷部分均为红色,表明网络对缺陷区域的关注度明显增加。
图8 断路缺陷特征可视化对比
3.5 不同检测算法的对比实验
在相同的实验环境下,采用Faster-RCNN[24]、YOLOv3[25]、Efficiendet[26]、Centernet[27]、YOLOv4[28]、YOLOX[29]六种目标检测算法与YOLOv5-TDD进行性能上的对比实验,其实验结果如表8所示。相比于其他目标检测算法,YOLOv5-TDD算法的mAP值为99.12%,比Faster-RCNN的mAP值高34.40%,比YOLOv3高5.07%,比Efficiendet高4.16%,比Centernet高1.12%,比YOLOv4高5.89%,比YOLOX高0.79%;在检测速度方面YOLOv5-TDD获得的FPS为40.92,比Faster-RCNN高26.41,比YOLOv3高10.03,比Efficiendet高26.53,比Centernet高2.09,比YOLOv4高12.42,比YOLOX高0.57。由图9的对比结果可知,YOLOv5-TDD不仅成功识别5个断路缺陷并获取较高的置信度,而且能精准定位5个断路缺陷位置,而其他算法对于断路缺陷检测,缺陷个数、位置和置信度等检测结果都欠佳。
表8 常用目标检测算法的不同性能指标结果
图9 不同算法断路缺陷检测结果
此外,将YOLOv5-TDD与针对PCB_DATASET数据集的TDD-net[16]、MMDetection[30]、YOLOv4-W[10]、YOLO-J[11]、YOLOv5-C[12]和密集YOLOv3[13]算法进行检测精度对比分析。由于算法使用的硬件环境、训练数据集、训练参数和训练技巧均对模型性能有一定的影响,因此不同算法之间的检测精度差距略有差异。如表9所示,YOLOv5-TDD算法的mAP值比TDD-net高0.22%,比MMDetection高54.82%,比YOLOv4-W高0.02%,比密集YOLOv3高15.12%,比YOLO-J高0.10%,比YOLOv5-C略低0.40%。其中,MMDetection由于着重实现端到端的轻量化检测模型,并且网络修改没有合适的预训练模型,并未使用迁移学习的训练策略,一定程度上影响PCB缺陷检测性能。此外,本文YOLOv5-TDD的参数量和计算量比YOLOv5-C分别减少80%和64%,故YOLOv5-TDD检测性能不但接近YOLOv5-C,而且网络复杂度显著降低。由上述分析可知,与其他不同检测算法相比,本文提出的YOLOv5-TDD在相同PCB微小缺陷检测场景中有较高的检测精度,较好地满足了PCB微小缺陷检测需求。
表9 不同PCB缺陷检测算法检测精度结果
3.6 锚框机制的工业有效性分析
由于PCB缺陷具有种类多样、尺寸跨度大、长宽比大等特点,利用DeepPCB数据集和PCBSDD数据集,分析YOLOv5-TDD锚框机制的工业有效性,进一步验证YOLOv5-TDD的检测性能。YOLOv5-TDD不但通过优化策略提高PCB微小缺陷信息网络流通效率,而且沿用YOLOv5的锚框机制,选取3个不同尺寸的特征图进行不同尺寸范围的PCB缺陷目标检测,对每个特征点预设不同尺寸的锚框,并利用检测头(YOLO Head)选择合适的锚框计算损失,最后利用非极大值抑制进行冗余锚框筛选。在图10不同尺寸缺陷的锚框检测效果对比图中,第一行为YOLOv5-TDD在DeepPCB数据集获取的检测结果图,第二行为YOLOv5-TDD在PCBSDD数据集获取的检测结果图。如图10所示,YOLOv5-TDD不但能在断路、毛刺、针孔等微小缺陷检测任务中具有较好的检测性能,而且针对与微小缺陷尺寸跨度较大的线路不良和杂物缺陷,以及长宽比大的划伤和补线不良缺陷,同样能定位精确和获取较高的置信度。这表明YOLOv5-TDD的锚框机制,面对实际PCB工业缺陷检测任务,能保证尺寸不一的PCB缺陷检测性能。
图10 不同尺寸缺陷的锚框检测效果对比图
4 结束语
针对由于微小缺陷图像占比小,与背景对比度低,导致的微小缺陷特征信息在深度网络容易丢失和特征提取不充分的问题,本文提出了融合浅层特征和注意力机制的YOLOv5-TDD检测算法,并通过3种PCB缺陷数据集进行实验验证:
(1)在提高微小缺陷特征信息的网络流动效率方面,在颈部网络中添加更浅层特征融合分支,将断路、短路和残铜缺陷的检测精度分别提升至97.68%、96.10%和99.01%,实现微小缺陷特征信息流在网络中的二次流通,降低有效信息在深度网络中流失的风险。
(2)在提高微小缺陷与背景的对比度方面,在网络中嵌入10个SE-SiLU注意力机制模块,将缺孔、鼠咬和毛刺缺陷的检测精度分别提升至100.00%、99.12%和98.85%,有效抑制冗余的背景信息抓取网络关注度的可能性,使得模型能够专注于学习缺陷信息特征。
(3)本文方法针对PCB_DATASET公开数据集、DeepPCB数据集和PCBSDD数据集,检测精度mAP分别获得99.12%、97.63%和98.87%,与其他算法相比具有一定的优越性,并且得益于其锚框机制,YOLOv5-TDD算法对于尺寸跨度大和长宽比较大的PCB缺陷仍能获取较高的检测精度。
下一步的研究工作,考虑在本文PCB微小缺陷检测算法的基础上,进一步研究不同对象的微小目标检测,优化模型在微小目标检测任务中的泛化能力,提高模型的任务可移植性。