基于YOLOv4的印刷电路板常见缺陷检测模型研究 | ![]() |
伴随着现代电子产品的普及, 作为基础部件的印刷电路板(PCB, printed circuit board)生产更加精细, 结构也更加复杂。印刷电路板产品必须保证线路连接、线距以及外观等指标符合工业生产的标准才能够流入市场, 因此对印刷电路板成品在出厂前进行缺陷检测成为必不可少的环节。传统的自动光学检测(AOI, automated optical inspection)利用摄像头、扫描仪等对PCB板进行扫描, 将标准板和被测板的电路图像进行比较, 从而发现缺陷。AOI设备检测效率高, 是目前工厂采用较多的一种检测手段。
AOI检测方法大体可以分为三大主流[1-6]: 参考比较法、非参考验证法和混合方法。参考比较法将识别的印刷电路板图像与标准模板进行比较, 找到之间的差异, 作为识别缺陷的依据。参考方法需要进行点对点比较, 图像配准的精度对识别的精度有很大的影响, 并且需要很大存储空间来保存标准图像。因为可以获得更高清晰度的图像, 参考方法在专门的硬件上实现很简单。非参考方法不使用标准图像, 而是将默认的识别规则应用于要识别的图像, 跟识别规则不符合的区域视为缺陷。这种方法非常灵活, 更适合各种类型的缺陷的检测。混合方法包括很多方法的组合, 结合了参考技术和设计规则技术, 充分利用了两种方法的优点, 克服了他们的缺点, 提高了系统的效率。混合方法的检测更加准确, 但算法复杂度高。上述传统的AOI方法和设备, 一般只判断是否存在质量问题, 对于出现的具体缺陷类型不进行分类识别。
近年来, 机器学习和深度学习应用到传统视觉目标检测算法中取得很大成功[7-10]。特别是YOLO算法的出现, 大大加快了目标检测算法在生产实践中落地应用的步伐[11-14]。正是基于这种发展态势, 本文探究了采用YOLO算法在两种印刷电路板缺陷训练数据上训练缺陷检测模型, 得到性能良好的参考/无参考检测模型, 可以识别印刷电路板的缺陷及类别, 同时定位目标的位置和大小, 并且检测的准确度也达到同类算法中的领先水平。
1 基于深度学习的目标检测算法目前基于深度学习的目标检测算法大致可以分为两类: 一阶段(One-stage)与两阶段(Two-stage), 两者在准确性和速度上各有优势。Two-stage算法的代表如R-CNN系列, 该算法将检测任务分为两个阶段进行, 第一阶段负责找出目标的候选区域, 对是否为目标进行初步判断;第二阶段对第一阶段产生的候选区域进一步分类和回归, 对候选区域的位置进行再一次的修正, 最后输出目标的类别信息以及坐标信息。YOLO属于One-stage目标检测算法, 是一个端到端的深度网络模型, 采取了对分类和位置回归的联合训练, 一端输入图像, 另一端输出检测到的目标的边界框、边界框置信度得分和类别概率, 检测速度快, 能满足实时性要求。另外, YOLO算法因为是基于整图输入的检测算法, 对目标特征的学习过程可以很好的结合环境信息, 检测本身特征比较简单的目标结合环境信息进行判断, 误判的情况很少, 检测的准确度比起基于单独缺陷样本训练的两阶段模型会有很大提升。YOLO的核心思想是将输入的图像划分成S×S的网格, 每个网格负责对落入其中的目标进行检测。YOLO划分的网格中最后只会选择与目标相交的IOU(intersection over union)最高的边界框作为输出, 因此划分的每个网格最多只会检测出一个目标。相比两阶段检测方法, YOLO小目标检测效果较差, 定位准确度也不够精确。YOLOv2在保持YOLO处理速度的同时, 定位更精准, 且可以识别9 000种不同对象, 因此又被称为YOLO9000。YOLOv3的特色是引入了FPN来实现多尺度预测, 同时还使用了更加优秀的基础网络Darknet-53和二值交叉熵损失函数(Binary cross-entropy loss), 并且可以通过改变模型的网络结构来实现速度与精度的平衡。YOLO模块内包含金字塔池化等图像尺度调整的功能层和模块, 因此对于输入图像的分辨率没有严格的限制, 基本可以应用于任意尺度的图像。在输出端的NMS是一个独立的模块, 对于检测目标位置, 按照置信度的排序, 进一步进行非最大值抑制处理, 可以排除大部分的误判错误。为了减少检测搜索框的数量, YOLO算法依然沿用预设锚框, 预设锚框大小可以在训练数据集上聚类产生, 也可以沿用YOLO模块自带的锚框系列。本文依据前期对Faster RCNN和YOLOv3的实验结果, 选取更适合印刷电路板缺陷检测的YOLOv4建模, 实现了优异的检测性能。YOLOv4网络架构设计中采用CSPDarknet53作为主干特征提取网络, 在CSPDarknet53中采用更多残差恒等映射模块的目的是提取具有很大区别性的特征, 而不会出现在大型数据集中的梯度消失和梯度爆炸的问题, 非常适用于PCB图像数据集的检测。
2 数据集及标注通常来说由工业相机采集的PCB图像由于镜头本身的噪声, 拍摄环境光源的不均匀等原因, 初步获得的图像质量不够理想, 需要进行必要的预处理操作, 大体包括图像增强, 电路板图像缺陷定位处理以及形态学处理等。另外采用机器学习方法处理的数据, 还需要对缺陷类别进行人工标注。
2.1 PCBData黑白图像数据集PCBData[15]数据集是一个公开发布的支持科研使用的免费数据集, 其中共包括1 500个数据图像对, 即一张缺陷数据和一张对比用的标准数据。每一对图像附带标注信息文件, 记录缺陷类别以及缺陷出现的位置(图 1)。数据图像经过预处理是黑白二值图像。整个数据集中出现了6种缺陷。
![]() |
注: 左边是缺陷图, 右边是标准对照图, 缺陷图中包括多处缺陷目标;中间是标注数据形式, 对缺陷类别按照1~6进行了编号。 图 1 PCBData中的图像对样例 |
原始PCBData数据集中的缺陷类别的标注不符合YOLO的数据格式, 因此, 需要对于上述预处理的缺陷图像数据重新标注。通过Labelimg软件可以对6种常见缺陷进行手工标注(图 2), 得到适合YOLO模型训练使用的.XML文件。
![]() |
图 2 使用labelimg进行标注的示意图 |
2.2 彩色电路板数据集DeepPCB
彩色电路板数据集DeepPCB来自一个公开的电路板缺陷检测数据集(https://robotics.pkusz.edu.cn/resources/dataset/) 由北京大学发布, 其中包含1 386张图像以及6种缺陷(开路、短路、鼠咬、漏钻孔、毛刺、假铜)。DeepPCB不包含对照标准数据, 用于检测、分类和配准任务。数据集中包括了部分位置偏转图像数据, 附带了符合YOLO格式的缺陷目标标注文件。
2.3 数据标注实验所用到的标注工具为labelimg。PCB板常见的缺陷分为6种, 分别是: 开路(open circuit)、短路(short)、鼠咬(mouse bite)、漏钻孔(missing hole)、毛刺(spur)、假铜(spurious copper)。如图 3所示。
![]() |
注: (a)开路;(b)短路;(c)鼠咬;(d)毛刺;(e)漏钻孔;(f)假铜。 图 3 常见电路板缺陷定义 |
3 性能评估
对于印刷电路板缺陷检测模型, 我们采用常规的目标检测模型的评估指标进行评价。评估缺陷检测的质量的混淆矩阵, 如表 1。
表 1 检测指标混淆矩阵 |
![]() |
基于上面的混淆矩阵, 可以定义下列关键的评估指标。
3.1 准确率(Precision)和召回率(Recall)Precision和Recall是广泛用于信息检索和统计学分类领域的两个度量值, 用来评价结果的质量。其中准确率是检索出相关文档数与检索出的文档总数的比率, 衡量的是检索系统的查准率, Precision的计算方法如式1;召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率, 衡量的是检索系统的查全率, Recall的计算方法如式2。
$ \text { Precise }=\mathrm{TP} /(\mathrm{TP}+\mathrm{FP}) $ | (1) |
$ \text { Recall }=\mathrm{TP} /(\mathrm{TP}+\mathrm{FN}) 。$ | (2) |
F1表示的是Precision和Recall的调和平均评估指标, 是统计学中用来衡量二分类模型精确度的一种指标, 计算方式如式3。F1分数可以看作是模型精确率和召回率的一种加权平均, 同时兼顾了分类模型的精确率和召回率。最大值是1, 最小值是0。
$ \text { F1-Score }=2 *(\text { Precision } * \text { Recall }) /(\text { Precision }+ \text { Recall }) 。$ | (3) |
AP(Average Precision)即平均精准度, 是指PR曲线上的Precision值的平均值。在PR曲线上, 采用了积分法计算AP。PR曲线(Precision Recall Curve), 即横轴为Recall, 竖轴为Precision的曲线, 曲线上的每一点对应在阈值取从0到1的设置时, 得到的一对(Precision, Recall)。实际计算AP是要对PR曲线进行平滑处理, 再计算AP的值。AP是针对单个类别的识别器, 而mAP是从类别的维度对AP进行平均, 因此可以评价多分类器的性能。mAP必须在[0, 1]范围内, 尽可能大。在目标检测中, 这一指标是最关键的。
4 实验与分析实验分别在两个数据集-黑白参考电路板数据集PCBData以及彩色电路板数据集DeepPCB上进行。不论哪一个数据集, 实验中将所使用的缺陷图像数据集按照6∶3∶1的比例, 将其划分为训练、验证和测试数据集。采用YOLOv4代码, 训练了针对6种常见缺陷的检测模型。
YOLO模型一般从头训练的效果都很差, 所以实验采用前期在VOC公用数据集上预训练的模型参数对检测模型进行初始化, 迁移训练的过程中训练60步(为了控制训练时间), 前面30步锁定预训练的模型参数, 后面30步, 在全部模型参数上进行训练和优化。
4.1 黑白无参考图像模型训练与评估采用黑白电路板数据集PCBDate, 只采用缺陷图像, 划分训练、验证和测试数据, 采用YOLOv4算法建模。结果发现, YOLO模型在没有使用标准对照图像的情况下, 可以很好的提取缺陷类别相关的特征信息, 对缺陷类别的位置进行有效的检测。在训练数据上训练模型在效验数据集上评估, 不同的缺陷类别的评估指标以及综合mAP评估数据见表 2。
表 2 PCBData数据集训练YOLO模型的评估指标 |
![]() |
检测结果显示在黑白PCB图像下, 6类缺陷的检测中, mAP的值为93.70%。各类的检测中开路、毛刺和假铜的检测准确率较高分别达到96.19%、96.01%、96.14%, 漏钻孔93.60%, 短路和鼠咬最差只有90.64%和89.63%。漏钻孔缺陷的F1值最高达到0.96, 而假铜最低只有0.73。从表 2可看出, 除了spurious copper缺陷以外, F1都能达到0.9以上, 各种缺陷的检测Precision都在90%以上, 召回率变动较大, 在spurious copper类别上, 为57.14%, short上为86.37%, 其他类别上都是90%以上。任意抽样考察数据集中各类学习数据所占比率(图 4), 可以看到各种缺陷样本的采样数量很不平衡, 进一步提高spurious copper的采样数量, 无疑会提高该类别的检测AP指标。
![]() |
图 4 黑白图像缺陷类别分布情况图 |
图 5给出了训练模型在测试集上进行检测实验的输出实例。从图 5中可以看到, 黑白图像检测结果良好, 图像中存在的大部分缺陷能够比较准确的检测出来, 但是仍有部分类型的缺陷检测结果较差, 没有能够准确的检测出来, 检测的位置也比较准确, 说明没有使用标准图像, YOLO模型可以很好的完成缺陷目标检测的任务。
![]() |
图 5 黑白PCB图像缺陷检测结果 |
4.2 DeepPCB数据集模型训练与检测评估
DeepPCB共1 086张彩色PCB图像, 每个类别采样的数量分别为: missing hole: 146、mouse bite: 200、open circuit: 203、short: 141、spur: 185、spurious copper: 211。模型训练在训练集上进行, 然后在验证集上进行性能验证。训练集和测试集的样本分布基本上是相似的。检测实验各种缺陷类别的AP值、F1值以及准确率和召回率如表 3所示。
表 3 彩色电路板无参考检测数据训练YOLO模型的评估指标 |
![]() |
检测结果显示在彩色图像6类缺陷的检测中, mAP的值为85.52%, 其中各类的检测中F1从0.81到0.97。召回率差距较大, 最大值漏钻孔为95.43%, 最小值为毛刺: 71.63%。彩色图像对小范围旋转不敏感, 正常放置及其旋转图像检测结果如图 6所示, 在旋转了一个角度的图像中, 缺陷部分也能够被检测出来。
![]() |
图 6 彩色PCB图像检测结果实例 |
总体来说, 选择YOLO算法训练印刷电路板缺陷检测模型不需要参考原图, 检测结果较为准确, 能够很好地检测并标记出印刷电路板缺陷的位置以及存在的缺陷类型。在两种图像的检测当中, 黑白二值图像检测结果准确率更高, 但需要对现场采集的图像进行标准化的预处理过程。在彩色电路板数据集上训练的模型, 在现场检测的时候, 无需图像二值化和精确对齐的过程, 其训练模型的精确度保持在一个较为良好的水平, 并且更加健壮。
4.3 DeepPCB数据集上进行的对比实验为了验证YOLOv4更适合电路板缺陷检测问题, 在DeepPCB数据集上进行的平行实验, 与YOLOv3和Faster RCNN算法进行对比, 结果表明YOLOv4比YOLOv3算法检测整体准确度mAP比提高了6%, 同时在Faster RCNN算法上进行的平行测试, 效果很差, 检测出的有效的缺陷很少, 这应证了Faster RCNN因为不能结合环境因素, 因此在缺陷样本特征比较简单, 不容易与背景区分的PCB检测问题上, 几乎没有什么用处。
三个模型检测整体mAP如图 7所示。
![]() |
图 7 平行对照实验检测性能比较 |
5 结论
YOLOv4用于印刷电路板缺陷检测非常适合, 特别是彩色图像的检测效果很好, 省去了参考图对齐, 图像预处理等传统AOI算法的步骤, 并且对于照射效果和图像歪斜都有很好的鲁棒性, 是非常有前景的缺陷检测方法。YOLOv4算法对图像拍摄的要求不高, 硬件改造花费小。缺点是需要建立对于不同缺陷类型的数据量很大的标注训练集, 才能保证模型训练的质量, 如何能够提高缺陷数据标注和扩展的效率是工程化需要考虑的主要问题。另外YOLO运行在深度学习平台上, 能否高效移植和嵌入到生产流水线硬件系统中是设备集成需要考虑的主要问题。
[1] |
马彩青. 基于图像处理的PCB缺陷检测系统的设计与研究[D]. 成都: 西南交通大学, 2009.
|
[2] |
陈彦, 李琦. 基于图像处理的PCB板检测技术分析及研究[J]. 现代工业经济和信息化, 2017, 7(2): 91-92. |
[3] |
黄莹. 基于图像处理的PCB缺陷检测系统的研究与实现[D]. 武汉: 武汉理工大学, 2018.
|
[4] |
张露文. PCB图像表面缺陷检测算法研究[D]. 昆明: 昆明理工大学, 2021.
|
[5] |
李世文. 局部自适应分割算法在PCB图像处理中的应用[J]. 顺德职业技术学院学报, 2019, 17(2): 9-12. |
[6] |
任柳清. 基于图像处理的PCB焊接缺陷检测方法研究及实现[D]. 绵阳: 西南科技大学, 2021
|
[7] |
秦岭. 基于图像处理和深度学习的PCB图像缺陷检测[D]. 无锡: 江南大学, 2021.
|
[8] |
WEN Y W, MAO J, WANG J, et al. Automated inspection of printed circuit boards through machine vision[J]. Computers in Industry, 1996, 28(2): 103-111. DOI:10.1016/0166-3615(95)00063-1 |
[9] |
孙灿. 基于图像处理和深度学习的PCB缺陷检测[D]. 扬州: 扬州大学, 2021.
|
[10] |
李丹. 基于深度学习的PCB缺陷检测技术研究[D]. 长沙: 湖南师范大学, 2021.
|
[11] |
REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, real-time object detection[C]//Computer Vision & Pattern Recognition, Las Vegas NV USA: 2016.
|
[12] |
REDMON J, FARHADI A. YOLOv3: An incremental improvement[C]//CVPR, Salt Lake City, UT, USA: arXiv e-prints, 1804.02767.2018
|
[13] |
REDMON J, FARHADI A. YOLO9000: Better, faster, stronger[C]//Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition(CVPR). Honolulu: IEEE, 2017.
|
[14] |
李袁. 基于改进YOLOv4的目标检测方法研究与应用[D]. 重庆: 重庆邮电大学, 2021.
|
[15] |
TANG S, FAN H, HUANG X, et al. OnlinePCB defect detector on a new PCB defect dataset[C]//Computer Vision and Pattern Recognition Computer Science, Long Beach C A USA: arXiv e-prints: 1902.06197.2019.
|