基于改进YOLO v3的PCB缺陷检测

2022-04-07 12:46李小春闫昊雷
电光与控制 2022年4期
关键词:检测时间残差聚类

李 闻, 李小春, 闫昊雷

(空军工程大学信息与导航学院,西安 710000)

0 引言

现在绝大多数印刷电路板(PCB)存在着设计或制作的缺陷,从而导致电子设备无法正常运行,因此快速而又准确地检测出PCB板中的缺陷成为了近些年的研究热点。

PCB缺陷检测可以分为两大类:传统的PCB缺陷检测和基于深度学习的PCB缺陷检测。传统的PCB缺陷检测存在着检测效率低、检耗时间长、误检率高且受人为主观因素影响大等问题,极大地降低了企业的产能,无法满足现代化印刷电路板检测的需求。而基于深度学习的PCB缺陷检测主要以实现自动光学检测(Automated Optical Inspection,AOI)[1]为目标,要求深度学习网络可以准确且快速地从图像中识别出目标。其中较为成熟的算法可以分为两大类。一类是以R-CNN[2],Fast R-CNN[3]和Faster R-CNN[4]等为代表的基于区域提名的两阶段目标检测算法,例如HU等[5]在Faster R-CNN中提出了一种改进的特征金字塔架构,有效地利用了深层特征图的语义信息,但是却没有充分地利用浅层特征图的信息,导致PCB缺陷定位不准确;TSAI等[6]提出基于CNN的模型并结合支持向量回归(SVR)实现了对漏焊的检测。另一类是以SSD[7]和YOLO[8-11]系列网络为代表的基于回归方法的目标检测算法。例如文献[12]采用密集连接网络(DenseNet)结构代替YOLO v3的原有网络结构,提高特征提取能力,并增大网络预测尺度,提高对于小尺寸缺陷的检测能力;LI 等[13]将Faster R-CNN与YOLO v2进行融合,实现了对桥连、漏焊等6种焊接问题的检测。但是以上这些方法不能很好地兼顾检测精度和检测速度,而且这些检测方法不适用于一些尺寸较小的缺陷检测,同时最新的YOLO v4和YOLO v5算法由于采用过多的模块进行堆叠,不容易集成到工业检测的设备中。所以,为了提高对PCB板上尺寸较小的缺陷目标的检测精度和速度,本文通过对聚类算法和网络模型进行改进,提出了一种改进的YOLO v3网络的PCB缺陷检测方法。

1 YOLO v3网络模型

YOLO v3网络是在YOLO v1网络和YOLO v2网络基础上改进而来的,具体来讲,YOLO v3网络由基础骨干网络Darknet 53和检测网络两部分组成。Darknet-53由5个残差块构成,借鉴了残差神经网络的思想。每个残差块由多个残差单元构成,通过输入与两个数码累积造型(DBL)单元进行残差操作,构建残差单元。其中,DBL单元是YOLO v3的基本构成单元,包括卷积、批归一化(BN)和Leaky ReLU激活函数。

在检测网络中,YOLO v3对输入图像上采样和融合操作,分别通过8×8,16×16 和32×32这3个不同尺度的融合特征图对目标进行独立检测,其中,深层特征图提供丰富的语义信息,浅层特征图提供待检测目标的位置信息,使YOLO v3网络既可以检测大目标,也可以检测小目标。

同时,YOLO v3网络借鉴Faster R-CNN网络和SSD网络中的Anchor Boxes思想,通过k-means聚类算法对所有真实目标框的长宽进行聚类分析,得到了9个Anchor Boxes。

2 改进的YOLO v3网络模型设计

由于本文数据集PCB缺陷检测数据集中的目标均为小目标,而原网络采用的聚类算法与网络结构均不适用于本文的研究对象,因此,本文针对以上两点进行改进。

2.1 改进的聚类算法

原YOLO v3利用k-means聚类算法获得适用于COCO数据集的Anchor Boxes,但并不适用于本文数据集,而且k-means聚类算法在聚类迭代的过程中采用欧氏距离、曼哈顿距离等作为相似性指标存在很大的问题,且k值的选择具有非常大的主观性[14],同时,由于图像在采集过程中不可避免地会出现异常点,它们远离数据的样本空间,而k-means聚类算法会将这些异常点参与到聚类中心的计算中,导致聚类结果出现严重偏差[15]。因此,本文首先采用DBSCAN聚类算法分析聚类包含的点以及聚类个数,解决孤立点对聚类结果的影响,并为k-means聚类算法自适应地确定k值;然后再采用自定义距离公式的k-means聚类算法来确定聚类中心,即

D(X,Y)=1-IOU(X,Y)

(1)

式中:X为真实的目标框;Y为聚类框大小;IOU(X,Y)为目标的中心框与聚类框之间的交并比。

最终通过DBSCAN聚类算法确定k-means聚类算法中k的最大值为9,最终聚类结果如图1所示,图中,星号表示异常点。

图1 聚类结果分析Fig.1 Analysis of clustering results

由图1可以发现,本文的聚类算法忽略了异常点,拥有更好的聚类中心。但是本文数据集的Anchor Boxes较为密集且尺寸较小,虽然一般来说Anchor Boxes数量越多,预测效果越好,但是会导致计算量增大以及Anchor Boxes冗余,因此,本文采用重叠度Avg IOU(平均交并比)进一步分析,从而选取更适合本文数据集的Anchor Boxes。其中,Avg IOU计算方法为

(2)

式中:n为样本的总数;k为样本聚类中心的总数;ni为第i个聚类中心的样本数。

其次,培训组的编制太少,极大影响培训效果。目前,B公司东北营销区域的培训组仅有2名培训人员,而目前正常运营的经销商合计100余个,在此种情况下,培训组人员必然无法针对所有的经销商进行兼顾,虽然有兼职内训师,但在工作节奏越来越快、工作压力越来越大的大环境下,对于培训工作,兼职内训师也多是应付了事。

然后令k取值1~9,分别对数据集中样本进行上述的聚类分析,其结果如图2所示。可以看出,随着k值增加,平均交并比的值虽然越来越高,但是最终曲线逐渐趋于平稳,而且曲线在k=9处的函数值和k=3处的函数值相差不大,且考虑到本文数据集中的目标均为小目标,因此选择了3个聚类中心,分别为(8,14),(13,14),(10,18)。

图2 Avg IOU结果Fig.2 Analysis of Avg IOU

2.2 改进的网络结构

2.2.1 SE Block模块

由于原网络在特征提取时将每一层提取的特征图的特征通道视为同等重要,并没有考虑到不同特征通道对待检测目标的重要程度不同,因此本文引入了SE Block模块[16],其目的是通过学习一组权重值来表示每个特征通道的重要程度,并按照权重值的大小将特征通道进行重新排列,从而突出了那些有用的特征通道,并削弱用处不大的特征通道。具体结构如图3所示。

图3 SE Block结构图Fig.3 Structure of SE Block

图中,第1个模块为压缩(Squeeze)模块,该模块在特征图上顺着空间维度来进行特征压缩,将每个维度大小为w×h的二维特征通道变成一个实数zc,该实数在某种程度上具有尺度为w×h大小的全局感受野,然后再将所有实数组合,得到一个1×1×c的特征向量,即

(3)

第2个模块是激励(Excitation)模块,该模块将压缩模块得到的1×1×c向量,经过一系列指定的操作后得到尺寸为1×1×c大小的每个特征通道的重要性权重值。需要注意的是在该映射过程中,并非直接将两个向量进行连接,而是先通过全连接的方式进行一个c/r的降维操作,再通过ReLU函数进行特征映射,然后通过全连接的方式从c/r恢复成c大小,最后使用sigmoid激活函数来得到其重要性权重值。通过乘法将确定的每个通道的重要性权值分别加权到每个通道中。

2.2.2 多尺度特征融合结构设计

上文中SE Block模块只是针对每个尺度特征通道的重新标定及排列,接下来将通过设计多尺度特征融合来提高对PCB缺陷检测的性能。浅层特征图拥有更多目标细节信息,更利于小目标的定位;而深层特征图拥有较大的感受野以及丰富的语义信息,能提高小目标的检测精度,其中不同层级的特征图可视化对比见图4。

图4 不同层级的特征图可视化Fig.4 Visualization of feature maps at different levels

图4(a)是截取的拥有缺失孔缺陷的图像,图4(b)为经过第2个卷积模块得到的特征图。图4(c)为经过第5个卷积模块得到的特征图。可以很明显地看出,浅层特征图相对深层特征图有更多的细节信息,特征也更加明显,但是如果只利用浅层特征会导致检测精度不高。因此,为了使网络能够充分利用浅层特征和深层语义信息,本文首先在第2个残差模块中增加了2个残差单元,从而获取了更多的浅层特征;其次将SE Block模块输出的重新标定后的特征图首先依次进行卷积核上采样操作;然后通过特征通道权重值的大小,采用依序进行特征通道的对位相加(Add)代替原网络中连接的特征融合方式,这是因为对位相加的融合方式可以增加每一维的信息量,同时使网络加强了对检测任务有用特征通道的利用,减少了参数量,特征融合的整体结构如图5所示。

图5 多尺度特征融合结构图Fig.5 Structure diagram of multi-scale feature fusion

图6 改进后的特征图Fig.6 The improved feature map

从图中可以看出,缺失孔缺陷表达能力更强,细节信息更加丰富。为了获取更多小目标的特征信息,将输出层前包含的6个DBL单元和1个1×1卷积核单元,改为2个DBL单元以及2个残差单元,其中,残差单元增强了网络对小目标特征的表达能力,而DBL单元解决了梯度消失的问题。

3 实验结果及分析

本文进行的实验是在Ubuntu18.04操作系统下配置的。实验采用的硬件配置为:中央处理器Intel(R) Core(TM)i9-9900CPU @2.30 GHz;图形处理器NVIDIA GeForce RTX 2080Ti,使用的开发框架为Tensorflow。

3.1数据集

本文中采用的PCB缺陷数据集包含693张图像,6种缺陷:缺失孔(Missing hole)、鼠标咬伤(mouse bite)、开路(open circuit)、短路(short circuit)、毛刺(spur)、伪铜(pseudo copper)。但是,由于该数据集的数据量太小,为了防止网络陷入过拟合状态,因此本文将图像进行曝光度调整、水平翻转等数据增强操作。最终数据按照训练集和测试集8∶1的比例随机划分,训练集包含9704张图像,测试集包含1213张图像。

3.2 网络训练

本文在选择经过COCO预训练的YOLO v3算法权重的基础上对超参数进行了设定,整个训练过程分为100个epoch,动量为0.9,权重衰减系数为0.000 5,学习率设置为0.000 1,Batch_size设置为8,总迭代次数为33 820。整个训练过程的损失函数变化情况见图7,最终经过100个epoch迭代训练后网络收敛至0.1,说明网络训练的结果比较理想,可以进行测试工作。

图7 损失函数曲线Fig.7 Loss function curve

测试所用的评价指标主要有:准确率P、召回率R、平均精度均值mAP、检测时间Time和加权调和平均值Fβ,β为1。

P=NTP/(NTP+NFP)

(4)

R=NTP/(NTP+NFN)

(5)

mAP=(∑AP)/M(class)

(6)

(7)

3.3 网络性能测试

3.3.1 不同聚类算法实验结果分析

为了检验本文的聚类算法是否有效,表1展示了采用不同聚类算法在不同网络结构下对PCB缺陷数据集上的检测精度和检测时间的对比。

表1 不同聚类算法的检测精度和检测时间对比Table 1 Comparison of different clustering algorithms on detection precision and speed

从表2中可以看出,在YOLO v3网络基础上,采用本文改进的聚类算法,与DBSCAN+k-means聚类算法相比,平均精度均值提升了1.3%,检测时间缩短了0.027 s;在改进网络结构的基础上,采用本文改进的聚类算法,平均精度均值提升了1.5%,检测时间缩短了0.019 s。由此可见,聚类算法的改进能较好地提升平均精度均值,检测速度也得到明显提高,使缺陷检测能力更强。图8对不同聚类算法检测结果进行了更直观的对比,采用DBSCAN+k-means聚类算法导致针对同一缺陷出现了两个检测框,这是Anchor Boxes的数量冗余导致的,而采用本文改进聚类算法检测的结果,不仅避免了重叠检测,而且检测的精度更高。

图8 不同聚类算法检测结果对比Fig.8 Detection results of different clustering algorithms

3.3.2 本文改进网络的实验分析

图9展示了在改进聚类算法的基础上本文改进网络实验结果,可以发现原始的YOLO v3网络只能检测出原始图像中的短路和缺失孔,而利用改进的YOLO v3网络结构可以检测出所有缺陷,可见,本文改进的YOLO v3网络结构对各类缺陷小目标检测准确率有了明显改善。为了更直观地说明本文检测算法的优越性,从检测数据集中选择了6种典型的缺陷,利用改进前后的YOLO v3网络结构对检测结果进行放大对比(见图10),发现原始的YOLO v3网络无法检测出开路、毛刺、鼠咬这3种缺陷,对短路的检测仍出现了2种检测框,同时,检测框中出现了过多的背景信息,而采用本文改进的YOLO v3网络不仅能够检测出6种缺陷,而且减少了检测框中出现的背景信息,检测精度和定位精度都有明显改善。

图9 不同算法检测结果对比图Fig.9 Comparison of detection results of different algorithms

图10 各类缺陷放大检测结果Fig.10 Various defects amplification inspection results

为进一步验证本文完整改进方案相较原YOLO v3网络的检测性能,选取目标检测算法评价指标中的准确率P、召回率R和加权调和平均值F1,其中YOLO v3仍采用k-means聚类算法,其结果见表2。

表2 YOLO v3网络改进前后性能指标对比Table 2 Performance indexes before and after YOLO v3 improvement

从表2中可以看出,相较于原始的YOLO v3网络,本文完整的改进方案(聚类改进+模型改进)在PCB缺陷数据集上的准确率、召回率、加权调和平均值均有明显提升,表明了本文改进方案的有效性。

3.3.3 不同检测网络的实验分析

为了更全面地测评本文改进的YOLO v3网络的检测性能,将本文算法与目前主流目标检测网络Faster R-CNN,SSD,YOLO v3的检测结果进行对比实验,数据集均采用本文选取的PCB缺陷数据集,并选取平均精度均值与对单张图像的检测时间两项指标对各算法进行评价,实验结果如表3所示。

表3 不同目标检测算法结果对比Table 3 Inspection results of different algorithms

从表3中可以看出,相比分别以VGG16和ResNet-101为主干网络的Faster R-CNN,本文完整的改进方案在平均精度均值上分别提升了29%和6%,同时检测时间也大幅度缩短。这主要是因为Faster R-CNN的先验框是预先设定好的,无法调节,造成先验框无法适配本文数据集中的缺陷小目标,且存在先验框冗余的现象,导致网络检测效果不理想以及检测时间过长;典型的单阶段目标检测算法SSD虽然在检测精度上略低于两阶段目标检测算法Faster R-CNN,但是在检测速度方面却有着较大的提升;原始的YOLO v3网络虽然在检测时间上比本文完整的改进方案缩短0.003 s,但是检测精度明显低于本文完整的改进方案;与上面前3种算法检测结果对比,本文完整的改进方案在检测精度和检测速度上均得到较大提升。

4 结论

针对目前通用的目标检测算法对PCB缺陷检测的精度不高、效率低的问题,本文提出了一种基于改进YOLO v3算法的PCB缺陷检测方法。实验结果表明,相较于目前典型的其他几种缺陷检测网络,本文改进算法对缺陷小目标的准确率和检测效率均有明显提高,且与改进前的网络相比,虽然检测速度略有降低,但检测精度明显提升。因此,为满足工业实时化检测的要求,下一步将在优化轻量型网络结构方面进行探索研究,实现对PCB缺陷更加快速且精准的检测。

猜你喜欢
检测时间残差聚类
基于残差-注意力和LSTM的心律失常心拍分类方法研究
基于双向GRU与残差拟合的车辆跟驰建模
基于残差学习的自适应无人机目标跟踪算法
对两种细菌鉴定法在血液检验中的应用效果进行分析
基于深度卷积的残差三生网络研究与应用
基于K-means聚类的车-地无线通信场强研究
新型溶血素与传统溶血素在临床血常规检验中的应用研究
ABL90血气分析仪在急诊科的应用研究
基于高斯混合聚类的阵列干涉SAR三维成像
不同检测时长对粉煤灰砌块放射性检测结果的影响