浙江大学学报(工学版), 2023, 57(4): 735-743 doi: 10.3785/j.issn.1008-973X.2023.04.011

自动化技术、计算机技术

基于改进YOLOv3的印刷电路板缺陷检测算法

卞佰成,, 陈田,, 吴入军, 刘军

上海电机学院 机械学院,上海 201306

Improved YOLOv3-based defect detection algorithm for printed circuit board

BIAN Bai-cheng,, CHEN Tian,, WU Ru-jun, LIU Jun

School of Mechanical Engineering, Shanghai Dianji University, Shanghai 201306, China

通讯作者: 陈田,女,教授. orcid.org/0000-0002-2796-4147. E-mail: chent@sdju.edu.cn

收稿日期: 2022-04-20  

基金资助: 上海市地方院校能力建设计划资助项目(22010501000); 上海多向模锻工程技术研究中心资助项目(20DZ2253200); 上海市临港新片区智能制造产业学院资助项目(B1-0299-21-023)

Received: 2022-04-20  

Fund supported: 上海市地方院校能力建设计划资助项目(22010501000);上海多向模锻工程技术研究中心资助项目(20DZ2253200);上海市临港新片区智能制造产业学院资助项目(B1-0299-21-023)

作者简介 About authors

卞佰成(1994—),男,硕士生,从事计算机视觉的研究.orcid.org/0000-0002-7776-5904.E-mail:374989167@qq.com , E-mail:374989167@qq.com

摘要

针对现有基于深度学习的印刷电路板(PCB)缺陷检测算法无法同时满足精度和效率要求的问题,提出基于YOLOv3改进的AT-YOLO算法来检测PCB缺陷. 将主干网络替换为ResNeSt50,提高特征提取能力,减少参数量. 引入SPP模块,融合不同感受野的特征,丰富了特征的表达能力. 改进PANet结构替换FPN,插入SE模块提升有效特征图的表达能力,增加1组高分辨率特征图的输入输出,提升对小目标物体的敏感程度,检测尺度由3个增加到4个. 使用K-means算法重新聚类生成锚框尺寸,提高了模型的目标检测精度. 实验证明,AT-YOLO算法在PCB缺陷检测数据集上的精度均值AP0.5达到98.42%,参数量为3.523×107,平均检测速度为36帧/s,满足精度和效率的要求.

关键词: YOLOv3 ; ResNeSt ; 缺陷检测 ; 注意力机制 ; 印刷电路板(PCB)

Abstract

An AT-YOLO algorithm based on improved YOLOv3 was proposed aiming at the problem that the existing deep learning-based defect detection algorithm for printed circuit boards (PCB) could not meet the accuracy and efficiency requirements at the same time. Feature extraction capabilities were improved and the number of parameters was reduced by replacing the backbone with ResNeSt50. SPP module was added to integrate the features of different receptive fields and enrich the ability of feature representation. The PANet structure was improved to replace FPN, and the SE module was inserted to enhance the expression capability of effective feature maps. A set of high-resolution feature maps were added to the input and output in order to improve the sensitivity to small target objects, and the detection scale was increased from three to four. K-means algorithm was re-used to generate sizes of anchors in order to improve the accuracy of object detection. The experimental results showed that the AT-YOLO algorithm had an AP0.5 value of 98.42%, the number of parameters was 3.523×107, and the average detection speed was 36 frame per second on the PCB defect detection dataset, which met the requirements of accuracy and efficiency.

Keywords: YOLOv3 ; ResNeSt ; defect detection ; attention mechanism ; printed circuit board (PCB)

PDF (1420KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

卞佰成, 陈田, 吴入军, 刘军. 基于改进YOLOv3的印刷电路板缺陷检测算法. 浙江大学学报(工学版)[J], 2023, 57(4): 735-743 doi:10.3785/j.issn.1008-973X.2023.04.011

BIAN Bai-cheng, CHEN Tian, WU Ru-jun, LIU Jun. Improved YOLOv3-based defect detection algorithm for printed circuit board. Journal of Zhejiang University(Engineering Science)[J], 2023, 57(4): 735-743 doi:10.3785/j.issn.1008-973X.2023.04.011

近年来,随着移动端设备数量的激增,作为机械结构支撑和电路连接用的印刷电路板的需求量显著提升,这对PCB的质量检测提出更高的要求. 自动光学检测(automatic optical inspection,AOI)已经逐步成为主流,在检测精度和效率上优于人工,但对于短路、断路这些传统视觉算法无法检测出来的问题,需要辅以电气测试法来解决.

Girshick等[1]提出区域卷积神经网络(R-CNN),打破了目标检测领域进展缓慢的僵局[2]. 随后诞生了Faster R-CNN[3]、SSD[4]、YOLO[5-7]等基于深度学习的通用目标检测算法.

针对PCB的缺陷检测,Lu等[8]提出提取PCB板的方向梯度直方图(histogram of oriented gradient,HOG)和局部二值模式特征(local binary pattern,LBP),分别将它们送入支持向量机中,利用贝叶斯特征融合方法,融合2组模型检测特征来识别缺陷. Zhang等[9]通过卷积神经网络来学习缺陷特征,通过滑动窗口的方式来定位缺陷. Shi等[10]通过改进SSD算法,引入注意力机制、多层特征融合来提高检测精度. Hu等[11]通过改进Faster R-CNN算法,使用带FPN结构的ResNet50作为主干网络,用GARPN代替RPN来生成更多更精确的锚框. Ding等[12]提出TDD-Net,在Faster R-CNN的基础上,更换了主干网络,引入在线难例挖掘(online hard example mining,OHEM)技术,将AP0.5提高到98.90%. 上述PCB缺陷检测算法中,基于深度学习的PCB缺陷检测算法多采用Faster R-CNN作为基础算法进行改进,保证了检测精度,但网络复杂度更高,无法满足实时检测的需求.

为了解决上述问题,提出基于注意力机制的缺陷检测算法AT-YOLO(attention-based you only look once),从以下4个方面提升缺陷检测算法的精度和效率. 1)用性能更强的ResNeSt50作为主干网络,减少了参数量和10亿次浮点运算次数(giga floating point operations,GFLOPs),提升了主干网络对图片语义信息的提取能力. 2)在neck部分,增加SPP(spatial pyramid pooling)模块,实现局部特征和全局特征的融合. 3)改进的PANet(path aggregation network)提高了算法对小目标的敏感程度. 注意力机制的添加,提升了算法在通道维度实现自适应响应的能力,抑制无效特征图的作用. 4)使用K-means算法聚类生成12个锚框(anchor box)尺寸,提高了对不同尺度目标的检测能力.

1. 相关工作

1.1. 特征提取

主干网络是目标检测任务中用于特征提取的重要组成部分,目标检测网络的性能很大程度上依赖于主干网络. 现有的主干网络大多来自目标分类网络,且已经在大型数据集(例如ImageNet)上完成了预训练.

近年来,密集连接的主干网络已经逐步取代稀疏连接的主干网络. He等[13]推出的ResNet在多项视觉竞赛中取得了第一,提出通过残差学习,以应对深层网络梯度消失的问题,将卷积神经网络的深度推到前所未有的152层. 在ResNet之后,Huang等[14]提出DenseNet,借鉴ResNet的短接操作,启用密集块加强特征重用. 近年来,利用神经网络结构搜索(neural architecture search,NAS)技术来搜索合理的网络配置,诞生了EfficientNet[15]家族,从B0到B7,模型被设计得更宽、更深,输入图像的分辨率更高. Radosavovic等[16]设计新的网络设计方式,综合了手工网络设计和NAS的优点,诞生了RegNet,在类似条件下,成绩优于EfficientNet,并且GPU速度更快. Zhang等[17]提出的ResNeSt通过分散注意力块(split attention),将输入特征图平均分成数个小组,在小组中对每个通道进行权重赋值,减小了模型复杂度,提高了分类精度.

为了应对移动端设备的需求,轻量化的主干网络相继被推出. Jie等[18]提出SENet,该网络提出SE(squeeze and excitation)模块,该模块能够自适应地调整通道响应,捕捉图像中的显著特征. Zhang等[19]提出ShuffleNet,利用pointwise group convolution和channel shuffle,在保持精度的同时大大减少了计算量. Han等[20]设计GhostNet,提出了Ghost模块,以更少的计算成本来生成更多的特征图.

在AT-YOLO算法中,选取ResNeSt50作为主干网络. ResNeSt50有良好的泛化能力,易于迁移到目标检测任务中.

1.2. 特征融合

目标检测包含2个子任务:图像分类和定位. 图像分类依赖于网络提取图像的高层语义信息,定位依赖于底层特征包含的边缘和轮廓信息. 学习到高层和底层特征信息,对目标检测网络是至关重要的. 近年来,在目标检测领域,特征融合技术在目标检测网络中得到了广泛的应用,常见的特征融合如下. 1)FPN[21](feature pyramid network):1种典型的自上而下的结构. 在主干网络的不同层级之间添加横向连接,使得不同语义强度、不同分辨率的特征相融合,既保证了小物体的目标检测,又可以利用底层细节进行定位. 2)PANet[22]:在FPN结构上,再次横向连接了1个自下而上的结构,这一步操作可以利用更加准确的底层定位信息来增强网络特征. 3)NAS-FPN[23](neural architecture search-feature pyramid network):通过神经网络来自动寻找合适的特征融合方式,该方法极其依赖GPU资源且很难重复实施一样的模块. 4)ASFF[24](adaptively spatial feature fusion):不同层级的特征对目标检测的帮助是不同的,ASFF通过加权因子对不同层级特征加权,以更好地融合. 5)BiFPN[25](bi-direction feature pyramid network):该方法移除了仅有单边输入的连接节点,同时使用深度可分离卷积,降低计算成本. 通过增加检测尺度、结构的重复堆叠以及特征间的加权融合,网络学习到更重要的输入特征.

在AT-YOLO算法中,借鉴BiFPN对PANet进行改进,增加了1组高分辨率特征图的输入输出. 在neck中插入SE模块,实现通道的自适应响应,提高了有效特征图的表达能力,抑制无效特征图的输出.

2. AT-YOLO网络模型

YOLOv3是基于YOLOv2的改进,YOLOv3在主干网络上将v2中的DarkNet19网络改进成DarkNet53网络,增加了网络的深度,同时引入了ResNet的残差思想. 在neck部分加入FPN结构,融合了高层的语义特征和底层的边缘和轮廓特征,形成3个不同尺度的特征图. 在head部分,由原来的1个检测头增加到3个,在低分辨率特征图上检测大目标,在高分辨率特征图上检测小目标.

AT-YOLO算法在YOLOv3的基础上进行改进,修改了backbone,选取了性能更强的ResNeSt50. 改进了PANet代替网络原有的FPN结构,修改后的网络结构如图1所示,具体的模块细节如图2所示.

图 1

图 1   AT-YOLO 网络结构

Fig.1   AT-YOLO network structure


图 2

图 2   AT-YOLO网络中各模块的结构

Fig.2   Structure of each module in AT-YOLO network


2.1. 主干网络

AT-YOLO算法选用ResNeSt50代替DarkNet53作为主干网络. 表1中展示了DarkNet53、ResNet50/101、ResNeSt50/101在输入相同图像分辨率时的感受野、参数量NP、GFLOPs和推理时间ti,其中ResNet50/101、ResNeSt50/101去除了用于分类的全连接层. ResNeSt作为ResNet的改进,保留了残差结构,提出了分散注意力机制,将输入特征图分成小组,每组增加通道注意力机制,使网络捕捉跨特征间的交互信息,提升网络的表征能力. 注意力机制带来了计算成本的上升,ResNeSt50通过组卷积减少了计算量,1个分散注意力块的参数量和浮点运算次数(FLOPs)和1个标准的残差块相近. 从表1可以看出,ResNeSt50拥有与原型相似的参数量,相较于DarkNet53参数量和GFLOPs大幅减少. ResNeSt50有19个3×3卷积,感受野为483×483像素,感受野(receptive field)的分辨率大于输入图像,可以增大图像像素点与最后激活之间的联系[26]. 在一些下游检测任务中,ResNeSt50的效果已经接近ResNet101.

表 1   不同主干网络参数的对比

Tab.1  Comparison of different backbone network parameters

主干网络模型 输入图像分辨率/像素 感受野分辨率/像素 NP/106 GFLOPs ti/ms
DarkNet53 416×416 725×725 40.603 49.2 13
ResNet50 416×416 483×483 23.508 28.3 10.9
ResNet101 416×416 1027×1027 42.5 54.0 21.7
ResNeSt50 416×416 543×543 25.434 37.2 17
ResNeSt101 416×416 1119×1119 46.226 70.6 27

新窗口打开| 下载CSV


为了验证ResNeSt50的高效准确性,提出以ResNeSt+SPP+neck(结构A,如图3所示)为baseline,对比ResNeSt50和ResNeSt101对PCB缺陷检测算法的作用,结果如表2所示. 表中,AP为精度均值,AP0.5为在交并比为0.5的条件下的精度均值,AP0.75为在交并比为0.75的条件下的精度均值.

图 3

图 3   PANet的4个变形

Fig.3   Four variations of PANet


表 2   不同大小的ResNeSt对算法检测精度的测试结果

Tab.2  Test results of different sizes of ResNeSt on detection accuracy of algorithm

主干网络 输入图像分辨率/像素 AP/% AP0.5/% AP0.75/%
ResNeSt50 416×416 61.07 98.43 68.41
ResNeSt101 416×416 59.90 97.48 67.08

新窗口打开| 下载CSV


表2可知,以ResNeSt50为主干网络的缺陷检测算法在AP表现上优于以ResNeSt101为主干网络的缺陷检测算法. 更大、更深的主干网络没有提高缺陷检测算法的检测精度,还极大增加了算法的参数量和GFLOPs,增加了训练时间,因此AT-YOLO算法选用ResNeSt50作为主干网络,以达到缺陷检测精度和效率的均衡.

2.2. 颈部网络

AT-YOLO在ResNeSt50的P5层(P5表示下采样25倍)后面接入SPP模块,具体结构如图2所示. 当输入图像的分辨率大时,在P3、P4、P5层后接入SPP模块能够取得更好的检测精度,但算法的训练只使用416×416像素的输入,故只在P5层接入SPP模块. SPP模块是将输入的特征图,经过3个不同大小的最大池化核,与原输入在channel维度进行拼接. 该模块用较少的计算成本将不同感受野的特征图拼接到一起,实现了局部特征和全局特征的融合,提高了特征图的特征表达能力.

AT-YOLO算法采用改进PANet代替网络原有的FPN结构. 为了探索对PCB缺陷检测效果最好的特征加权方式,设计了4种结构,如图3所示. 结构A借鉴了BiFPN的加权方式,对输入特征图整块进行赋值加权,之后将特征图按通道方向拼接. 结构B在PANet中插入SE模块,SE模块将输入特征图进行全局平均池化,经过2次全连接层后,获取输入特征每个通道的权值,再与原输入特征相乘获得输出.SE模块提高了有效特征图的表达能力,抑制无效特征图的输出. 结构C在PANet中插入CBAM[27](convolutional block attention module)模块,CBAM结合通道注意力机制和空间注意力机制,其中空间注意力机制是分别找出输入特征图通道方向的最大值和平均值,之后进行相加操作,通过sigmoid函数将求和值缩限至(0,1.0),最后与输入特征图相乘. 结构D在PANet中插入ECA[28](efficient channel attention)模块,ECA使用1×1卷积代替全连接层,对SE模块进行改进.

除了引入注意力机制进行加权外,AT-YOLO算法还在YOLOv3算法neck部分原有的3输入3输出基础上增加1组高精度特征图的输入输出,输入特征图由主干网络P2层产生,输出相应增加1层,如图2所示,提高了对小目标物体的敏感程度和检测精度. 为了选出最优特征加权方式,提出以ResNeSt50+SPP+改进PANet为Baseline,分别对以上4个特征加权结构进行对比,结果如表3所示.

表 3   改进PANet的4个变形对算法检测精度的测试结果

Tab.3  Test results of four variations of improved PANet on detection accuracy of algorithm

颈部网络 输入图像分辨率/像素 AP/% AP0.5/% AP0.75/%
结构A 416×416 61.07 98.43 68.41
结构B 416×416 64.53 98.42 76.23
结构C 416×416 61.06 98.52 69.71
结构D 416×416 62.46 98.22 72.78
改进PANet 416×416 59.71 97.60 66.78

新窗口打开| 下载CSV


表3可以看出,结构A和结构C相较于改进PANet在AP上提高了超过1%,但都弱于通道注意力机制. ECA模块提高了近3%的AP,AP0.75也大幅提高,但作为SE模块的改进,在PCB缺陷检测数据集上表现不如SE模块. SE模块的插入使得AP提高到64.53%,AP0.75大幅领先其他几种结构. AT-YOLO算法最终选择SE模块插入到PANet中.

3. 实验及结果分析

3.1. 数据集以及实验环境

算法训练使用的PCB缺陷检测数据集是由Ding等[12]制作. 如表4所示,该数据集包含缺孔、缺口、开路、短路、毛刺和铜渣共计6种缺陷,每种缺陷的图片数量Ng超过1 700张,每种缺陷数量Nd超过3 500个. 该数据集划分的训练集包含8 534张图片,测试集包含2 134张图片,图片分辨率为600×600像素. 各种缺陷的图片和样本数量是均匀分布的,不用考虑样本不均匀的问题,有利于模型训练.

表 4   PCB缺陷数据集[12]

Tab.4  PCB defect dataset[12]

缺陷类型 Ng Nd
缺孔(missing hole) 1 832 3 612
缺口(mouse bite) 1 852 3 684
开路(open circuit) 1 740 3 548
短路(short) 1 732 3 508
毛刺(spur) 1 752 3 636
铜渣(spurious copper) 1 760 3 676
总计 10 668 21 664

新窗口打开| 下载CSV


PCB缺陷主要为小尺寸缺陷,如图4所示为局部放大图.

图 4

图 4   图片放大后的缺陷类型实例

Fig.4   Examples of defect types after image enlargement


3.2. 实验细节

训练缺陷检测算法时输入图像分辨率为416×416像素,测试时算法输入图像分辨率是512×512像素. 优化器选用带动量的随机梯度下降算法(stochastic gradient descent with momentum),动量因子为0.937,权重衰减系数设置为5×10−4. 学习率初始设置为10−3,在第一阶段应用热身战略,学习率从0增长到10−3,同时使用余弦退火使学习率衰减,将学习率降至10−5. 迭代周期设置为200. 缺陷检测算法的主干网络ResNeSt50在ImageNet预训练过,可以加速网络拟合,减少训练参数量.

缺陷检测算法训练和测试所使用的GPU为RTX2080Ti,实验平台的具体配置如表5所示.

表 5   算法训练环境的配置

Tab.5  Configuration of algorithm training environment

名称 型号
CPU Intel(R) Xeon(R) Silver 4110 CPU@ 2.10 GHz
内存 16 GB
显卡 RTX 2080Ti
显存 12 GB
操作系统 Ubuntu 18.04
编程软件 Python 3.8
深度学习框架 PyTorch 1.10

新窗口打开| 下载CSV


在训练过程中,使用数据增广来增加训练样本. 1)随机水平翻转,单张图片翻转概率的超参数设置为0.5. 2)随机色调H、饱和度S、明度V的调整. 3)使用mosaic数据增强方法.

本算法用CIoU Loss(complete intersection over union loss)取代IoU Loss(intersection over union loss),CIoU Loss的表达式如下所示.

$ {\rm{IoU}}=\frac{A}{B}\text{,} $

$ {\rm{Los}}{{\rm{s}}}_{{\rm{CIoU}}}=1-{\rm{IoU}}+{{\rho }^{2}}/{{d}^{2}}\text+\alpha \nu \text{,} $

$ \alpha =\frac{\nu }{\left(1-{\rm{IoU}}\right)+\nu }\text{,} $

$ \nu \; = \;\frac{4}{{{\text{π} ^2}}}{\left( {\arctan \frac{{{w^{{\rm{gt}}}}}}{{{h^{{\rm{gt}}}}}} - \arctan \frac{w}{h}} \right)^2}. $

式中:参数 $ A $为真实框与预测框交集的面积, $B $为真实框与预测框并集的面积, $ \rho $为真实框质心和预测框质心之间的欧氏距离,参数 $ d $为真实框与预测框最小外接矩形的对角线顶点的欧氏距离,参数 $ \alpha $为权衡指标,参数 $ v $表示真实框和预测框长宽比的一致性. CIoU Loss能够更好地反映GT Box(ground truth box)和预测边界框的重合度. 本算法的目标损失和类别损失与原有YOLOv3一致.

针对AT-YOLO 的4个尺度输出,根据PCB数据集重新使用K-means聚类出12个锚框大小,即(13,12),(16,16),(22,13),(14,24),(20,20),(29,15),(17,33),(25,25),(43,17),(18,47),(30,31),(42,45),为提高算法的检测精度奠定了基础.

3.3. 结果分析以及消融实验

AT-YOLO算法最终采用的结构为ResNeSt50+SPP+改进PANet(SE). 为了验证算法的有效性,采用对比实验,与两阶段目标检测算法Faster R-CNN(主干网络是VGG-16,ResNet101)、FPN(ResNet101)、TDD-Net(ResNet101)以及与单阶段目标检测算法YOLOv3-ultralytics、YOLOv5[29]系列中参数量相近的YOLOv5m和YOLOv5l进行对比. 对比结果如表6所示. 表中,AR为召回率均值. 结果证明改进算法提高了缺陷检测的精度,极大地减少了参数量和GFLOPs,证明改进算法是精确、高效的.

表 6   PCB缺陷数据集上不同算法的参数对比和检测精度测试结果

Tab.6  Parameter comparison and detection accuracy test results of different algorithms on PCB defect dataset

网络模型 主干网络 NP/106 AP,AR/% AP0.5/% AP0.75/% GFLOPs
Faster R-CNN[12] VGG-16 58.57
Faster R-CNN[12] ResNet-101 94.27
FPN[12] ResNet-101 92.23
Faster R-CNN(fine-tuned)[12] ResNet-101 96.44
TDD-Net[12] ResNet-101 98.90
YOLOv3[12] DarkNet53 81.42
YOLOv3-ultralytics DarkNet53 62.999 58.78,33.05 96.71 64.64 66.5
YOLOv5m CSP-DarkNet53 21.077 61.17,34.27 98.43 68.21 32.3
YOLOv5l CSP-DarkNet53 46.658 64.88,35.77 98.95 75.45 73.2
本文算法 ResNeSt50 35.227 64.53,35.49 98.42 76.23 45.9

新窗口打开| 下载CSV


表6可以看出,AT-YOLO算法在PCB数据集上取得了64.53%的AP、98.42%的AP0.5和76.23%的AP0.75. 在AP0.5上的表现优于采用ResNet101作为主干网络的Faster R-CNN,领先了2%,相较于更精确的TDD-Net,AP0.5仅落后0.38%. 与单阶段目标检测算法相比,检测精度已经优于YOLOv3系列,以YOLOv3-ultralytics 56%的参数量,AP提高了5.75%. 相较于YOLOv5系列,AT-YOLO网络精度较YOLOv5m高3.36%;与YOLOv5l相比,AT-YOLO在参数量和GFLOPs分别减少了25%和37.3%,同时在AP表现相当,在AP0.75上比YOLOv5l高约1%.

表7所示为AT-YOLO对各类别缺陷检测的AP0.5. 表中,pu为各类别缺陷检测的AP0.5相对于AP0.5均值的提升比例. 从表7可以看出,除了短路缺陷外,其他类别缺陷的AP0.5都高于98%,且都高于AP0.5均值. 短路检测效果不佳是因为缺陷与背景的区分度不够明显,容易混淆.

表 7   不同类别缺陷的AP0.5

Tab.7  AP0.5 for different categories of defects

缺陷类型 AP0.5/% pu/%
Missing hole 98.90 0.48↑
Mouse bite 98.42 0
Open circuit 98.58 0.16↑
Short 97.29 −1.13↓
Spur 98.69 0.27↑
Spurious copper 98.61 0.19↑

新窗口打开| 下载CSV


为了进一步验证各处改进对提升算法精度的作用,对改进算法进行消融实验,结果如表8所示. 从表8可知,在使用ResNeSt50作为主干网络之后再加上各种训练技巧,AP0.5相较于未做改动的YOLOv3算法提升了11.3%;在颈部网络部分加上SPP模块后,AP0.5再次提高0.53%;用改进的PANet代替FPN后,AP0.5又提高了4.17%. 之后在改进PANet中添加了SE模块,使AP0.5提升了0.82%,AP提高了4.82%,如表3所示. 结果证明,算法的各处改进对AP的提高有帮助.

表 8   对改进算法进行消融实验的结果

Tab.8  Results of ablation experiments of improved algorithms

ResNeSt SPP 改进PANet 训练技巧 AP0.5/% pu/%
81.42
92.72 11.3↑
93.25 0.53↑
98.42 4.17

新窗口打开| 下载CSV


图5所示为部分检测效果. 在预测过程中采用的后处理算法是非极大值抑制算法(non-maximum suppression,NMS),置信度(confidence)的门槛设置为0.5,IoU的门槛设置为0.6. 图5中,缺陷类别旁显示的是置信度. 从检测结果可以看出,在不同背景下,AT-YOLO算法可以准确地检测出各种类型缺陷,且预测边界框紧紧包裹在缺陷附近. AT-YOLO在RTX 2080Ti上对图片的检测速度可以达到36帧/s,满足了实时性检测的要求.

图 5

图 5   不同背景下的缺陷检测效果

Fig.5   Effect of defect detection in different backgrounds


AT-YOLO算法在训练时的损失L随着迭代次数E的变化如图6所示,L随着E的增加逐渐下降并收敛. 如图7所示为AP、AP0.5和AP0.75随着E增加的变化趋势. 可以看出,AP0.5在训练初期大约40次周期时就趋于稳定,在训练中后期,AP0.75逐步提高,AP随着AP0.75的升高而逐步提高,在训练后期趋于稳定.

图 6

图 6   AT-YOLO算法在训练阶段的损失曲线

Fig.6   Loss curve of AT-YOLO algorithm in training phase


图 7

图 7   AT-YOLO算法的AP增长曲线

Fig.7   AP growth curve of AT-YOLO algorithm


4. 结 论

(1)基于YOLOv3改进的AT-YOLO算法在PCB数据集的AP0.5达到98.42%,远超大部分两阶段目标检测算法,检测速度达到36帧/s,在确保检测精度的情况下,满足了实时性的要求. 性能更强的主干网络加上合适的训练技巧可以大幅提高模型的检测精度;SPP模块增强了特征的表达能力,小幅提升了小目标物体的检测精度;改进的PANet结构大幅提高了AP0.75. 针对小目标物体,重新使用K-means算法聚类生成锚框尺寸,使得模型检测精度达到最佳.

(2)实验结果证明,合适的主干网络有助于提升网络检测精度和效率,更大、更深的主干网络并非对模型的精度提升都有帮助,在PCB缺陷检测场景下会使网络退化. 针对PCB数据集,SE模块和ECA模块可以提升网络AP0.75,但对网络AP0.5的提升有限. 通道注意力机制加上空间注意力机制的CBAM有效提升了AP0.5,但在AP0.75的表现上不如通道注意力机制.

(3)通过与YOLOv3及其改型和YOLOv5系列的对比,AT-YOLO算法模型所占的内存更小,检测精度更高,检测速度达到了实时性的要求,验证了算法的有效性.

参考文献

GIRSHICK R, DONAHUE J, DARRELL T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation [C]// Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Columbus: IEEE, 2014: 580-587.

[本文引用: 1]

ZOU Z, SHI Z, GUO Y, et al. Object detection in 20 years: a survey [EB/OL]. [2022-06-28]. https://arxiv.org/abs/1905.05055.

[本文引用: 1]

REN S, HE K, GIRSHICK R, et al

Faster R-CNN: towards real-time object detection with region proposal networks

[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39 (6): 1137- 1149

DOI:10.1109/TPAMI.2016.2577031      [本文引用: 1]

LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot multibox detector [C]// Proceedings of 14th European Conference on Computer Vision. Amsterdam: Springer, 2016: 21-37.

[本文引用: 1]

REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, real-time object detection [C]// Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2016: 779-788.

[本文引用: 1]

REDMON J, FARHADI A. YOLO9000: better, faster, stronger [C]// Proceedings of 30th IEEE/CVF Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017: 6517-6525.

REDMON J, FARHADI A. YOLOv3: an incremental improvement [EB/OL]. [2022-06-28]. https://arxiv.org/abs/1804.02767.

[本文引用: 1]

LU Z, HE Q, XIANG X, et al

Defect detection of PCB based on bayes feature fusion

[J]. The Journal of Engineering, 2018, 2018 (16): 1741- 1745

DOI:10.1049/joe.2018.8270      [本文引用: 1]

ZHANG C, SHI W, LI X, et al

An improved bare PCB defect detection approach based on deep feature learning

[J]. The Journal of Engineering, 2018, 2018 (16): 1415- 1420

DOI:10.1049/joe.2018.8275      [本文引用: 1]

SHI W, LU Z, WU W, et al

Single-shot detector with enriched semantics for PCB tiny defect detection

[J]. The Journal of Engineering, 2020, 2020 (13): 366- 372

DOI:10.1049/joe.2019.1180      [本文引用: 1]

HU B, WANG J

Detection of PCB surface defects with improved Faster-RCNN and feature pyramid network

[J]. IEEE Access, 2020, 8: 108335- 108345

DOI:10.1109/ACCESS.2020.3001349      [本文引用: 1]

DING R, DAI L, LI G, et al

TDD-Net: a tiny defect detection network for printed circuit boards

[J]. 智能技术学报, 2019, 4 (2): 110- 116

DOI:10.1049/trit.2019.0019      [本文引用: 10]

DING R, DAI L, LI G, et al

TDD-Net: a tiny defect detection network for printed circuit boards

[J]. CAAI Transactions on Intelligence Technology, 2019, 4 (2): 110- 116

DOI:10.1049/trit.2019.0019      [本文引用: 10]

HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition [C]// Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2016: 770-778.

[本文引用: 1]

HUANG G, LIU Z, LAURENS V, et al. Densely connected convolutional networks [C]// Proceedings of 30th IEEE/CVF Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017: 2261-2269.

[本文引用: 1]

TAN M, LE Q V. EfficientNet: rethinking model scaling for convolutional neural networks [C]// Proceedings of 36th International Conference on Machine Learning. Long Beach: PMLR, 2019: 97.

[本文引用: 1]

RADOSAVOVIC I, KOSARAJU R P, GIRSHICK R, et al. Designing network design spaces [C]// Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020: 10425-10433.

[本文引用: 1]

ZHANG H, WU C, ZHANG Z, et al. ResNeSt: split-attention networks [C]// Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. New Orleans: IEEE, 2022: 2736-2746.

[本文引用: 1]

JIE H, LI S, GANG S, et al. Squeeze-and-excitation networks [C]// Proceedings of the 31st IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018: 7132-7141.

[本文引用: 1]

ZHANG X, ZHOU X, LIN M, et al. ShuffleNet: an extremely efficient convolutional neural network for mobile devices [C]// Proceedings of the 31st IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018: 6848-6856.

[本文引用: 1]

HAN K, WANG Y, TIAN Q, et al. GhostNet: more features from cheap operations [C]// Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020: 1577-1586.

[本文引用: 1]

LIN T Y, DOLLAR P, GIRSHICK R, et al. Feature pyramid networks for object detection [C]// Proceedings of the 30th IEEE/CVF Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017: 936-944.

[本文引用: 1]

LIU S, QI L, QIN H, et al. Path aggregation network for instance segmentation [C]// Proceedings of the 31st IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018: 8759-8768.

[本文引用: 1]

GHIASI G, LIN T Y, LE Q V. NAS-FPN: learning scalable feature pyramid architecture for object detection [C]// Proceedings of the 32nd IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 7029-7038.

[本文引用: 1]

LIU S, HUANG D, WANG Y. Learning spatial fusion for single-shot object detection [EB/OL]. [2022-06-28]. https://arxiv.org/abs/1911.09516.

[本文引用: 1]

TAN M, PANG R, LE Q V. EfficientDet: scalable and efficient object detection [C]// Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020: 10781-10790.

[本文引用: 1]

BOCHKOVSKIY A, WANG C Y, LIAO H. YOLOv4: optimal speed and accuracy of object detection [EB/OL]. [2022-06-28]. https://arxiv.org/abs/2004.10934?.

[本文引用: 1]

WOO S, PARK J, LEE J Y, et al. CBAM: convolutional block attention module [C]// Proceedings of 15th European Conference on Computer Vision. Munich: Springer, 2018: 3-19.

[本文引用: 1]

WANG Q, WU B, ZHU P, et al. Supplementary material for ECA-Net: efficient channel attention for deep convolutional neural networks [C]// Proceedings of the 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020: 13-19.

[本文引用: 1]

GLENN J. YOLOv5 release v5.0 [EB/OL]. [2022-06-28]. https://github.com/ultralytics/yolov5/releases/tag/v5.0.

[本文引用: 1]

/