基于YOLOX的类增量印刷电路板缺陷检测方法

吴瑞林 葛泉波 刘华平

吴瑞林, 葛泉波, 刘华平. 基于YOLOX的类增量印刷电路板缺陷检测方法 [J]. 智能系统学报, 2024, 19(4): 1061-1070. doi: 10.11992/tis.202309044
引用本文: 吴瑞林, 葛泉波, 刘华平. 基于YOLOX的类增量印刷电路板缺陷检测方法 [J]. 智能系统学报, 2024, 19(4): 1061-1070. doi: 10.11992/tis.202309044
WU Ruilin, GE Quanbo, LIU Huaping. Class-incremental printed circuit board defect detection method based on YOLOX [J]. CAAI Transactions on Intelligent Systems, 2024, 19(4): 1061-1070. doi: 10.11992/tis.202309044
Citation: WU Ruilin, GE Quanbo, LIU Huaping. Class-incremental printed circuit board defect detection method based on YOLOX [J]. CAAI Transactions on Intelligent Systems, 2024, 19(4): 1061-1070. doi: 10.11992/tis.202309044

基于YOLOX的类增量印刷电路板缺陷检测方法

doi: 10.11992/tis.202309044
基金项目: 江苏高校“青蓝工程”项目(R2023Q07).
详细信息
    作者简介:

    吴瑞林,硕士研究生,主要研究方向为计算机视觉和缺陷检测。E-mail:ruilin_wu0516@126.com;

    葛泉波,教授,博士生导师,主要研究方向为多源信息融合、自主无人系统和协同目标识别。中国自动化学会青年工作委员会副主任委员、智能自动化专业委员。主持国家自然科学基金项目(共4项,其中1项重点),发表学术论文100余篇。E-mail:geqb@ nuist.edu.cn;

    刘华平,教授,博士生导师,主要研究方向为机器人感知、学习与控制、多模态信息融合。吴文俊人工智能科学技术奖获得者、中国人工智能学会理事。主持国家杰出青年科学基金1项、国家自然科学基金1项。发表学术论文100余篇。E-mail:hpliu@ tsinghua.edu.cn.

    通讯作者:

    刘华平. E-mail:hpliu@tsinghua.edu.cn.

  • 中图分类号: TP391

Class-incremental printed circuit board defect detection method based on YOLOX

  • 摘要: 为了应对更加实际的增量式印刷电路板缺陷检测场景,本文将知识蒸馏与YOLOX相结合,提出了一种基于YOLOX的类增量印刷电路板缺陷检测方法。在只使用新训练数据的情况下,模型能够检测出所有学过的缺陷类型。通过对模型的输出特征和中间特征使用知识蒸馏来促进旧缺陷类别知识的传递,使得学生模型能够有效保留教师模型在旧缺陷类别上的检测性能。实验结果表明,本文方法能够显著缓解增量学习过程中的灾难性遗忘问题,在两阶段增量场景下,模型对所有缺陷的平均检测精度为88.5%,参数量为25.3×106,检测速度为39.8 f/s,便于工业设备部署的同时,可以满足增量式检测场景下印刷电路板(printed circuit board, PCB)质检的检测精度和检测速度要求。

     

    Abstract: To cope with more practical incremental printed circuit board detection scenarios, by combining the knowledge distillation with the YOLOX, this paper proposes a class-incremental Printed Circuit Board defect detection method based on YOLOX. The model can detect all learned defect types when only new training data is used. The transfer of knowledge about old defect categories is facilitated by using knowledge distillation for the model's output features and intermediate features, enabling the student model to effectively retain the detection performance of the teacher model on old defect categories. The experimental results show that the method in this paper can significantly alleviate the catastrophic forgetting problem during the incremental learning process. Under the two-stage incremental scenario, the model has a mean average precision of 88.5% for all defects, a parameter size of 25.3 M, and an inspection speed of 39.8 f/s, which facilitates the deployment of industrial equipment and at the same time, it can satisfy the detection accuracy of printed circuit board (PCB) quality inspection and the inspection speed requirement in incremental detection scenarios.

     

  • 随着经济和科技的迅速发展,电子产品逐渐趋向于智能化、便捷化,人们对它们的性能需求也大大上升。作为电子产品的重要部件,印刷电路板(printed circuit board, PCB)扮演着非常重要的角色,可以说PCB板的生产质量直接关联着电子产品的品质。从日常生活中所使用的手机、电脑到航空航天设备,印刷电路板的应用范围非常广泛,因此,PCB缺陷检测工作成为了电子制造过程中不可缺少的一道关键步骤,同时也是保证电子制造业稳定发展的基石[1]

    近年来,不少研究者开始将深度学习技术用于PCB缺陷检测中。钱万明等[2]针对现有PCB缺陷检测方法存在精度低、实时性差且难以部署等问题,提出一种基于改进YOLOv4的轻量级缺陷检测模型。为了增强PCB板上小缺陷的特征提取能力,季堂煜等[3]分别在检测模型的主干网络和特征融合网络中加入坐标注意力(coordinate attention,CA)模块和卷积注意力模块(convolutional block attention module,CBAM)。Tang等[4]在YOLOv5网络中添加一个小目标检测层来使得网络更加关注缺陷信息。Chen等[5]将Swin-Transformer与YOLOv5相结合,有效建立了不同尺度特征之间的依赖关系,使得模型的PCB缺陷检测性有了进一步的提升。相较于传统的方法而言,基于深度学习的方法不仅有效降低了人工成本,而且大大提升了检测效率和检测精度[6]。虽然现有的PCB表面缺陷检测方法已经取得了可观的检测性能,但却无法直接应对增量式的检测场景。

    类增量学习作为持续学习的一种具体场景,旨在让模型连续地学习不断到来的新数据流中的类别知识,同时保持对先前所学类别的性能表现。在无法获得先前所学任务的训练数据时,如何使得模型在学习新任务后在旧任务上的表现不发生灾难性遗忘是持续学习所面临的一个主要挑战。不遗忘学习(learning without forgetting,LWF)[7]是第一个将知识蒸馏[8]策略引入类别增量的方法,通过学生网络学习冻结教师网络的类别输出表示,从而将教师网络在旧类别上的知识转移到学生网络中,然而当新旧任务之间的关联度较低时会导致知识的混淆。增量分类器和表征学习(incremental classifier and representation learning,iCaRL)[9]在LWF的基础上加入回放策略,进一步缓解了在旧任务上的知识遗忘。POD(pooled outputs distillation)[10]同样采取回放加蒸馏的方法来缓解遗忘,与iCaRL不同的是,该方法只对主干特征提取网络获得的中间特征计算蒸馏损失,同时提出一种Spatial-level空间级别的蒸馏计算公式。增量目标检测(incremental object detection, IOD)将增量学习专门应用于目标检测,与传统增量分类相比,目标检测任务本身的复杂度增加了增量目标检测的难度。Shmelkov等[11]借鉴LWF的工作同时将知识蒸馏用于Fast-RCNN检测器的分类输出和回归输出,这是关于增量目标检测的第一个工作。Zhou等[12]为了兼顾精度和效率,在此基础上使用了更具代表性的Faster-RCNN检测器,且额外地将知识蒸馏应用于区域建议网络来保留旧类别的知识。然而这些工作都是基于两阶段目标检测器进行开发的增量目标检测方法[11-12],由于采用两阶段架构设计,导致模型具有较高的参数量和较低的检测速度,不利于设备部署的同时也无法满足工业PCB质检的实时性要求。此外,这些方法都只针对输出特征进行蒸馏损失的设计,却忽略了对具有高级语义信息的中间特征的有效利用。

    受到以上增量学习相关工作的启发,与先前PCB缺陷检测研究不同的是,本文聚焦于一种更加实际且具有挑战性的增量式PCB缺陷检测场景,即在每个阶段只使用新数据集训练模型,检测模型随着增量学习的过程而不断更新,最终得到的模型能够检测出所有学习过的PCB缺陷种类。YOLO系列检测器凭借着高精度与高速度的优势,被广泛应用于工业质检中,然而,现有的增量目标检测方法却很少基于YOLO系列检测器进行开发。为了更好地应对动态场景下的PCB缺陷检测任务,本文将增量学习算法与YOLOX[13]检测器相结合,提出一种基于YOLOX的类增量印刷电路板缺陷检测方法。基于知识蒸馏的增量目标检测方法往往需要根据检测模型的输出结构而具体设计,因此,针对YOLOX检测器的不同输出分支,本文分别为其设计特征蒸馏。考虑到PCB板上的缺陷普遍较小,为了缓解对旧缺陷知识的遗忘,本文额外为YOLOX添加中间特征蒸馏,使得模型能够有效保留旧PCB缺陷中的高级语义信息。此外,对于增量PCB缺陷检测任务而言,在增量学习过程中模型需要同时兼顾对新缺陷和旧缺陷的检测性能,有效权衡模型对新旧缺陷的关注程度同样重要,因此本文分别为输出特征蒸馏和中间特征蒸馏添加权重参数,并分析不同权重参数对检测结果的影响。不同增量场景下的实验结果表明,本文所提出的方法能够有效应对增量场景下的PCB缺陷检测任务。

    类增量PCB缺陷检测是指在连续的数据流中训练检测模型,而模型在学习新缺陷类别时只能获得当前阶段的训练数据。本文考虑按序学习多个PCB缺陷检测任务$T = \{ 1,2,\cdots ,K\}$,其中T表示所有任务阶段的集合,$K$表示最大任务阶段编号。第$k$个任务阶段${T_k}$的输入数据记为

    $$ {D_k} = \{ x_k^i,y_k^i\} _{i = 1}^{{N_k}} $$

    式中:$x_k^i$为第$i$张训练图像;$y_k^i$是其对应的标签,其中分别包含类别标注和边界框标注;${N_k}$为该任务阶段所有训练图像的数量。此外,需注意的是每个任务阶段均只包含带有缺陷的PCB图像且每张图像上只有一种缺陷类别,每个任务阶段满足所有缺陷种类${C_m} \geqslant 1,m \in T$。不同任务阶段需要学习不同的缺陷类别,并且满足没有类别重叠,即${Y^i} \cap {Y^j} = \varnothing $,其中${Y^k}$代表第$k$个任务阶段的标签集合。

    依次学习$K$个PCB缺陷检测任务,将任务阶段${T_{K - 1}}$训练好的缺陷检测模型记为${f_{K - 1}}$$\varTheta $表示模型的参数权重,$l$代表损失函数,那么任务阶段${T_K}$的训练总损失可以表示为

    $$ {L_K} = \frac{1}{{{N_K}}}\sum\limits_{i = 1}^{{N_K}} {l\left({f_{K - 1}}(\varTheta ;x_K^i),y_K^i\right)} $$

    本文的目的是不断更新缺陷检测模型以适应所有缺陷检测任务阶段,即模型能够检测出所有学过的缺陷类别$({C_1} \cup {C_2} \cup \cdots \cup{C_K})$。本文方法期望在第$k$个任务阶段更新的检测模型${f_k}$在第$j$个任务阶段上仍能取得满意的检测结果$(j < k)$。具体来说,假设模型训练充分,即对于每个增量阶段所学过的PCB缺陷类别,模型都能够做出准确的预测,那么在推理阶段,输入一张(一帧)待检测PCB图像,若模型没有在图像中输出任何缺陷的预测结果,此时可认为该输入图像为正常PCB样本。如果该待检测图像不是正常PCB样本,模型则会在图像中定位出具体的缺陷位置并给出缺陷类别。

    早期的目标检测算法采用两阶段架构[14-15],尽管两阶段检测算法具有较好的检测效果,但是由于繁琐的结构设计,导致模型拥有较低的推理速度,从而不能满足工业PCB缺陷检测的实时性要求。近年来,研究者们开始关注单阶段目标检测模型[16-17]的开发,相较于两阶段目标检测模型而言,单阶段检测模型在保持较高检测精度的同时拥有更快的推理速度。 随着目标检测模型的不断发展,YOLO系列检测模型始终为实时应用而追求精度与速度之间的最佳平衡。凭借着具有高推理速度的优势,YOLOv1~YOLOv5被广泛应用在各种检测场景中,例如医学影像[18-19]、遥感图像[20-21]、目标跟踪识别[22-24]和瑕疵检测[25-29]等。然而这些检测算法依赖于锚框的设计,对于PCB缺陷检测而言,由于缺陷普遍较小,锚框尺度匹配得当就显得尤为重要,不同尺度的锚框都会影响最终的检测精度。为了避免选择锚框这一繁琐的过程,本文使用基于无锚框设计的YOLOX[13]作为PCB缺陷检测模型,相比于先前的YOLO系列检测模型,YOLOX拥有更快的检测速度和检测精度,因此更加适合部署在工业PCB缺陷检测中。

    图1给出了YOLOX检测模型的基本结构。其主要由5个子网络组成:首先一个CSPDarknet主干网络用于对输入的图像进行连续的下采样操作,从而获得不同尺度的特征图;其次,一个PAFPN特征融合网络用于将从主干网络获得的不同尺度特征图进行多尺度融合操作,进一步增强特征图的表示能力;最后,3个YOLOHead检测头网络利用增强后的不同尺度特征分别进行目标的分类、目标置信度和边界框的回归预测。在推理阶段,网络首先根据预先设置的阈值对符合要求的边界框进行解码操作,然后采用非极大值抑制操作过滤掉冗余的预测框。

    图  1  YOLOX检测模型基本结构
    Fig.  1  Basic structure of YOLOX detection model
    下载: 全尺寸图片

    本文提出的类增量PCB缺陷检测方法的整体架构如图2所示,其表示当$2 \leqslant t \leqslant K(t \in T)$时的增量学习过程。为了学习新任务阶段$k$中的${C_k}$个新缺陷类别,首先在旧任务模型${f_{k - 1}}$的基础上复制一份完全相同的副本作为教师模型,同时冻结教师模型中的参数权重来防止其参与梯度回传;然后,为旧任务模型中负责分类的网络分支输出层添加${C_k}$个神经元用来学习新缺陷类别,将扩展后的旧任务模型作为学习新任务阶段的学生模型。学生模型的参数权重使用旧任务模型的对应参数权重进行初始化,对于分类网络输出层中新增的神经元,对其参数权重实施随机初始化。

    图  2  类增量PCB缺陷检测方法的整体架构
    Fig.  2  Overall architecture of the class-incremental PCB defect detection method
    下载: 全尺寸图片

    尽管增量学习在传统分类任务上已经取得了出色的表现,但是只保留教师模型的分类能力对于目标检测是不够的,因为学生模型在只使用新类的边界框标签进行训练时,仍然会失去对旧类预测正确边界框的能力。为了解决这个问题,本文借鉴先前的相关工作[11-12,30],将知识蒸馏的思想扩展到YOLOX的所有输出中,以便近似旧缺陷类别在教师模型中的输出。此外,仅对模型的输出应用蒸馏损失并不足以防止对旧类别知识的遗忘。虽然只使用新类别数据进行训练,但对预测旧类别很重要的中间特征在反向传播过程中也发生了变化。因此,本文对检测模型所提取的中间特征同样施加蒸馏损失,使得学生模型中提取的特征不会与教师模型有显著差异。根据上述分析,在增量学习过程中,PCB缺陷检测学生模型的整体学习目标可以定义为

    $$ \begin{gathered} {L_{{\text{Total}}}} = {L_{{\text{YOLOX}}}} + {\lambda _1}\left({L_{{\text{dist\_cls}}}} + {L_{{\text{dist\_obj}}}} + {L_{{\text{dist\_bbox}}}}\right) + {\lambda _2}{L_{{\text{dist\_feat}}}}\\ \end{gathered} $$ (1)

    式中:第1个损失项${L_{{\text{YOLOX}}}}$是YOLOX模型自身的损失用于训练学生模型来检测新的PCB缺陷,$ {L_{{\text{dist\_cls}}}} $${L_{{\text{dist\_obj}}}}$${L_{{\text{dist\_bbox}}}}$分别为模型的输出特征蒸馏损失,${L_{{\text{dist\_feat}}}}$为模型的中间特征蒸馏损失。此外,$\lambda $是用于平衡不同损失项的权重参数,本文中设置${\lambda _1} = {\lambda _2} = 1$

    针对单阶段目标检测模型YOLOX的3个分支输出,本文分别为其添加3个蒸馏损失项,使得学生模型在学习新缺陷类别时,能够保留对旧缺陷类别的检测性能。

    在训练过程中,通过式(1)中的第2个损失项促使学生模型能够保留教师模型中的旧类别信息。计算公式定义为

    $$ {L_{{\text{dist\_cls}}}} = \sum\limits_{i = 1}^m {{{(C_T^i - C_S^i)}^2}} $$

    式中:${C_T}$为冻结教师模型使用新训练数据的旧类别输出,${C_S}$为学生模型对$m$个旧类别的输出。

    YOLOX检测模型中的目标分支主要用来预测边界框包含目标的置信度。倘若学生模型没有保留教师模型对旧类别预测框的目标置信度的判断能力,学生模型最终可能会给出一个较低的目标置信度得分,导致在推理阶段高类别得分乘上低目标置信度得分后,预测框被一系列后处理操作过滤掉,从而影响模型对旧类别的检测精度。因此,本文同样为目标输出特征添加与分类输出特征相同的蒸馏损失,即式(1)中的第3项损失定义为

    $$ {L_{{\text{dist\_obj}}}} = \sum\limits_{j = 1}^{H \times W} {{{(O_T^j - O_S^j)}^2}} $$

    式中:${O_T}$${O_S}$分别为教师模型和学生模型的目标分支输出特征,$H$$W$分别为输出特征的高度和宽度。

    边界框回归输出对于增量目标检测来说同样至关重要。式(1)中的第4个损失项使得学生模型能够保留教师模型正确预测旧类边界框的能力。由于教师模型与学生模型的回归输出可能会出现差异较大的情况,倘若使用L2损失作为蒸馏损失可能会带来梯度爆炸的问题,最终影响模型的正常训练。因此,在增量训练学生检测模型的过程中,本文使用smooth L1损失函数作为边界框回归输出的蒸馏损失。具体来说,损失的计算定义为

    $$ {L_{{\text{dist\_bbox}}}} = \sum\limits_{r \in \{ x,y,w,h\} } {{\text{smoot}}{{\text{h}}_{\text{L}1}}(B_T^r - B_S^r)} $$

    式中:${B_T}$${B_S}$分别为教师模型和学生模型的边界框回归输出,$ x、y、w、h $分别为预测边界框的中心点横坐标、纵坐标、预测框宽度以及高度。

    随着检测模型网络深度的增加,位于中间层(PAFPN特征融合网络)的特征具有丰富的语义信息,例如目标的类别语义信息和边界框定位信息等。因此,本文为式(1)中添加最后一个中间特征蒸馏损失项来防止学生模型提取到的中间特征发生剧烈变化,从而引发对旧类别的灾难性遗忘。

    对于PCB缺陷检测任务来说,由于缺陷普遍较小,因此,本文使用一种空间级别的蒸馏损失[10] 来让学生模型更好地保留教师模型所提取的中间层特征中的小目标信息,从而进一步提升学生模型对旧缺陷类别的检测能力。具体损失计算的定义为

    $$ {L_{{{{\rm{spatial}}\text{-}w}}}} = {\sum\limits_{c = 1}^C {\sum\limits_{h = 1}^H {\left\| {\sum\limits_{w = 1}^W {{F_T} - \left. {\sum\limits_{w = 1}^W {{F_S}} } \right\|} } \right.} } ^2} $$
    $$ {L_{{{{\rm{spatial}}\text{-}h}}}} = {\sum\limits_{c = 1}^C {\sum\limits_{w = 1}^W {\left\| {\sum\limits_{h = 1}^H {{F_T} - \left. {\sum\limits_{h = 1}^H {{F_S}} } \right\|} } \right.} } ^2} $$
    $$ {L_{{\text{dist\_feat}}}} = {L_{{{{\rm{spatial}} \text{-} w}}}} + {L_{{{{\rm{spatial}} \text{-} h}}}} $$

    式中:${F_T}$${F_S}$分别为教师模型和学生模型的中间特征输出,$C、H、W$分别为中间特征的通道数、宽和高,${L_{{{{\rm{spatial}}\text{-}w}}}}$为水平方向的空间蒸馏损失,${L_{{{{\rm{spatial}}\text{-}h}}}}$为垂直方向的空间蒸馏损失。

    4.1.1   PCB缺陷数据集

    为了更好地还原真实检测场景,本文在自己收集的PCB缺陷数据集上进行实验,其中所有图片均来自工业生产线中。该数据集由6种缺陷类别组成,其中包括凹陷、防焊沾金、孔壁沾金、划痕、氧化和孔内毛刺。为了方便起见,将6种缺陷依次记为01、02、03、04、05和06。图3给出了每种缺陷的示例,其中虚线框代表具体缺陷位置。从图3中可以看到,PCB缺陷普遍较小且部分缺陷与背景对比度较低,因此对于增量检测场景而言更具挑战性。每种缺陷的样本数量分布在表1中给出。本文使用mAP@IOU0.5(mean average precision)作为所有实验的评估指标。

    图  3  6种不同PCB缺陷的示例
    Fig.  3  Sample diagram of six different PCB defects
    下载: 全尺寸图片
    表  1  6种不同PCB缺陷的样本数量
    Table  1  Sample numbers for six different PCB defect classes
    PCB缺陷种类训练集数量/张测试集数量/张
    01556140
    02704180
    03528136
    04500140
    05608156
    06512132
    4.1.2   实施细节

    本文使用YOLOX[13]目标检测模型作为基线,分别与LWF[7]、POD[10]、RILOD[30]、PNN[31]、iCaRL[9]这5种增量学习方法相结合进行对比实验。此外,本文分别将基于微调和全数据的方法作为增量学习的下界和上界。在类增量学习任务开始之前,使用含有ImageNet预训练权重的模型进行训练得到初始的教师模型。本文所有实验均使用Python编程语言在PyTorch深度学习框架下搭建,显卡配置为RTX3090。实验中,模型输入大小为640像素×640像素,使用Adam优化器和余弦退火学习率调整策略训练模型,初始学习率为0.001,训练轮数为20,样本批次大小为16。

    4.1.3   实验设置

    本文根据不同的缺陷类别数量划分一阶段增量场景和两阶段增量场景2种类增量PCB缺陷检测场景(如图4所示)。具体来说,对于一阶段增量场景而言,分别定义2类+4类、3类+3类和4类+2类这3种设置。对于两阶段增量场景而言,则定义2类+2类+2类这种设置。

    图  4  不同增量场景设置
    Fig.  4  Different incremental scenario settings
    下载: 全尺寸图片
    4.2.1   一阶段增量场景

    本文在表2中给出了一阶段增量场景下的实验结果。从表2中数据可以看出,随着初始旧缺陷类别数量的增加,不同方法之间的性能差距也越来越大,这是因为在增量学习的过程中,检测模型需要保留更多的旧缺陷类别知识。基于微调的方法在3种不同设置上的性能相较于上界而言,分别下降为71.4%、50.8%和39.4%,这是因为基于微调的方法在增量学习过程中,网络的参数变化太过于随机使得学生模型对旧缺陷类别的记忆趋于0,最终造成灾难性遗忘。PNN通过结合模型在先前任务上的特征一起训练新任务,然而直接将旧的任务特征和新任务特征相结合会严重影响目标检测模型的训练,最终无法取得满意的结果。LWF在增量分类任务中取得了可观的成绩,然而对于增量目标检测任务而言,仅仅考虑旧类别信息显然是不够的。虽然POD使得学生模型保留了对旧类别的特征提取能力,但是却没有保留对提取好的特征执行分类和回归的能力,而这些对目标检测任务来说是至关重要的。RILOD通过选择5个最高分类得分的预测框来进行回归蒸馏损失的计算,然而用于训练不同任务的数据具有不同的分布,因此无法选择一个适合所有任务的预测框数量,若选择不当将会影响最终的检测结果。在2类+4类设置下,iCaRL通过回放部分旧样本,使得模型在学习新缺陷类别的同时能够有效保留旧缺陷知识,在该设置下取得了最好的表现,平均检测精度为94.8%。对于3类+3类和4类+2类这2种设置而言,随着旧类别数量的增加,iCaRL需要在有限存储空间中保留不同种类的旧缺陷样本,这样会导致新缺陷样本与旧缺陷样本之间的数量不平衡,最终影响模型的平均检测精度。而本文方法在这2种设置下均取得了最好的表现,平均检测精度分别为92.2%和89.8%,这主要得益于输出特征蒸馏和中间特征蒸馏使得模型在学习新缺陷的同时,保持了对旧缺陷类别的良好记忆。

    表  2  一阶段增量场景下的检测结果
    Table  2  Detection results under the one-stage incremental scenario
    场景方法mAP/%
    所有数据上界96.1
    2类+ 4类微调71.4
    PNN73.1
    LWF80.8
    POD75.0
    RILOD88.4
    iCaRL94.8
    本文方法94.2
    3类+3类微调50.8
    PNN55.7
    LWF69.6
    POD67.9
    RILOD87.0
    iCaRL91.4
    本文方法92.2
    4类+2类微调39.4
    PNN41.1
    LWF59.6
    POD50.7
    RILOD81.3
    iCaRL88.0
    本文方法89.8
    注:加黑代表最优结果,下同。
    4.2.2   两阶段增量场景

    表3中,本文同样给出了两阶段增量场景下不同方法的实验结果。在初始阶段,模型采用正常训练策略,因此所有方法的性能都处于统一水平96.4%。从增量阶段开始,每个阶段的检测结果为增量学习过程中所有已学缺陷类别的平均值。从结果中不难发现,本文方法在每一个增量阶段上都优于其他方法。第1个增量阶段训练结束后,模型对4种缺陷(2种旧缺陷和2种新缺陷)的平均检测结果为94.9%,当所有缺陷类别依次学习完毕后,模型仍具有88.5%的平均检测结果。而基于微调、PNN、LWF和POD的方法,从图5中可以看出,随着增量学习阶段的增加,平均检测结果都发生了急剧的下降。尤其是基于微调的方法,学生模型不断地从动态数据流中获取新的知识,由于训练过程中没有添加任何的约束导致新知识不断干扰旧知识,从而引发灾难性遗忘,最终所有类别的平均检测结果仅有44.6%。本文方法相较于RILOD和iCaRL,所有缺陷类别的平均检测结果分别提升了8.9%和2.2%,这主要是因为学生模型在每一个增量阶段都能够通过蒸馏损失来有效地保留已学缺陷类别的知识,同时不影响新缺陷的学习。因此,本文所提出的方法可以更好地缓解增量学习过程中的灾难性遗忘问题。图6给出了两阶段增量学习结束后,不同方法对4种旧缺陷的检测效果。从图6中可以看出,本文方法能够对所有旧PCB缺陷进行准确的检测,而其他方法由于发生了灾难性遗忘,因此无法准确地检测并定位出旧PCB缺陷。

    表  3  两阶段增量场景下的检测结果
    Table  3  Detection results under the two-stage incremental scenario
    %
    方法阶段1阶段2阶段3上界
    微调96.461.144.696.1
    PNN 96.464.345.9 96.1
    LWF 96.473.854.4 96.1
    POD 96.468.846.0 96.1
    RILOD 96.490.579.6 96.1
    iCaRL 96.494.086.3 96.1
    本文方法96.4 94.988.5 96.1
    图  5  两阶段增量场景下的检测结果曲线
    Fig.  5  Detection result curve under the two-stage incremental scenario
    下载: 全尺寸图片

    此外,本文还对比了两阶段增量场景下,不同方法所占用的存储空间大小。从图7中可以看出,在增量学习过程中,基于蒸馏的方法只需要考虑模型本身参数量的大小。而基于回放的方法iCaRL除了需要考虑模型本身参数量以外,还要留有部分存储空间用于回放旧训练样本。PNN采用动态参数隔离的方法,需要保留每一个阶段的模型,因此该方法所占存储大小随着增量阶段的增加呈线性增长的趋势。因此,综合考虑检测精度和工业设备部署存储压力,本文所提出的基于蒸馏的方法可以给动态场景下的类增量PCB缺陷检测任务提供良好的解决方案。

    图  6  旧PCB缺陷类别的可视化检测结果
    Fig.  6  Visual inspection results for old PCB defect categories
    下载: 全尺寸图片
    图  7  不同方法所占用的存储空间
    Fig.  7  Storage space used by different methods
    下载: 全尺寸图片
    4.2.3   消融实验

    通过在一阶段增量场景4类+2类设置下进行消融实验来进一步验证本文所提出的各个蒸馏损失的有效性。在表4中,Cls、Obj和Reg分别代表类别蒸馏、目标蒸馏和回归蒸馏,它们共同组成输出特征蒸馏;Feat代表中间特征蒸馏。从表4中数据可知,当只添加类别蒸馏时,模型的平均检测精度仅有55.5%,这说明对于增量目标检测任务而言,只保留旧类别信息是不够的。在添加类别蒸馏的基础上分别添加目标蒸馏或回归蒸馏后,平均检测精度分别达到了74.3%和71.4%,而前者比后者高了2.9%,这说明对于YOLOX检测器来说,让模型保留对旧缺陷目标的判断能力更为重要。当同时添加类别、目标和回归这3个蒸馏损失后,模型的平均检测精度相比于编号1中的结果而言,提升了30.2%,达到了85.7%。当在添加所有输出特征蒸馏的基础上加入中间特征蒸馏后,模型的检测精度进一步提升了4.1%,这主要得益于中间特征蒸馏损失使得模型有效地保留了旧缺陷类别中丰富的高级语义信息,从而显著缓解了对旧缺陷知识的遗忘,模型的最终平均检测精度为89.8%。为了更直观地展示中间特征蒸馏带来的收益,图8给出了模型对前4种旧缺陷的检测结果,第1行表示只添加输出特征蒸馏,第2行表示同时添加输出特征蒸馏和中间特征蒸馏。从图8中不难发现,在增量训练过程中,为模型同时施加输出特征蒸馏和中间特征蒸馏可以更加准确地检测并定位出旧PCB缺陷。根据以上消融实验结果的分析,充分证明了本文所提出的输出特征蒸馏和中间特征蒸馏的有效性。

    表  4  不同特征蒸馏损失的消融实验
    Table  4  Ablation experiments of distillation loss with different characteristics
    编号ClsObjRegFeatmAP/%
    155.5
    274.3
    371.4
    485.7
    589.8
    图  8  消融实验的可视化检测结果
    Fig.  8  Visualization results of ablation experiments
    下载: 全尺寸图片
    4.2.4   不同权重参数分析

    在类增量学习过程中,如何权衡模型对新旧任务中类别的关注程度同样重要。因此本文分别为输出特征蒸馏损失和中间特征蒸馏损失定义7种不同的权重参数,在一阶段增量场景4类+2类设置下进行实验来分析不同参数设置对模型的影响。在表5中,“旧缺陷”表示增量阶段训练结束后,模型对前4个旧PCB缺陷类别的平均检测结果,而“新缺陷”则表示模型对后2个新PCB缺陷类别的平均检测结果。“所有缺陷”表示增量阶段训练结束后,模型对所有学过的6个缺陷类别的平均检测结果。从表5中数据可知,当${\lambda _1} = {\lambda _2} = 0.5$时,此时模型自身损失与2个蒸馏损失之比为2∶1∶1,因此模型在训练时会更偏向于对新缺陷类别的学习,最终模型对新缺陷的平均检测精度为96.0%,而对旧缺陷的平均检测精度仅有79.2%,对所有缺陷的平均检测精度为84.8%。随着蒸馏损失2个权重参数的增加,模型对旧缺陷类别的平均检测精度也随之增加,对新缺陷类别的平均检测精度却不断下降。当${\lambda _1} = {\lambda _2} = 2$时,此时模型自身损失与2个蒸馏损失之比为1∶2∶2,模型对旧缺陷类别的平均检测精度为91.7%,对新缺陷类别的平均检测精度仅为82.6%,这主要是因为模型在训练的过程中更加关注对旧缺陷知识的保留,尽管有效缓解了对旧缺陷类别的遗忘,却抑制了模型对新缺陷类别的学习。而当${\lambda _1} = {\lambda _2} = 1$时,模型在训练过程中能够最好地权衡对新旧缺陷的关注程度,最终对所有缺陷类别的平均检测精度为89.8%。根据以上结果分析,本文设置权重参数${\lambda _1} = {\lambda _2} = 1$,以使得模型在不影响学习新缺陷的同时能够有效缓解对旧缺陷的灾难性遗忘问题。

    表  5  不同权重参数结果分析
    Table  5  Analysis of results for different weight parameters
    编号${\lambda _1}$${\lambda _2}$旧缺陷/%新缺陷/%所有缺陷/%
    10.50.579.296.084.8
    20.51.082.195.186.3
    31.00.585.394.388.3
    41.01.088.093.389.8
    52.00.589.288.688.9
    62.01.090.087.488.9
    72.02.091.782.688.4

    先前的增量目标检测工作[12,30]分别基于Faster-RCNN[15]检测模型和RetinaNet[32]检测模型进行开发。尽管这2个检测模型在当时都取得了令人惊艳的成绩,然而它们并不能胜任工业PCB缺陷检测任务。表6分别给出了不同检测模型在PCB缺陷数据集上的检测性能。

    表  6  6种缺陷类别正常训练时不同模型的检测性能
    Table  6  Detection performance of different models under normal training of six defect classes
    检测模型mAP/
    %
    参数/
    M
    检测速率/
    (f/s)
    推理时间/
    ms
    Faster-RCNN93.541.512.580.0
    RetinaNet91.734.525.738.9
    YOLOX96.125.339.825.1

    表6中数据可以看出,YOLOX在拥有更少参数量的情况下具有更高的检测精度,并且推理速度远远超过另外2个检测模型。因此,凭借着高精度和高速度的优势,YOLOX更加适合工业PCB缺陷检测任务。

    为了解决动态检测场景下的PCB缺陷检测问题,本文提出了一种基于YOLOX的类增量印刷电路板缺陷检测方法。利用知识蒸馏有效缓解了增量学习过程中学生模型对旧类别知识的遗忘。通过不同增量场景下的实验证明了所提出方法的有效性,大大提高了PCB缺陷检测模型的适用性和拓展性。尽管本文方法在各种增量场景下表现良好,但是在蒸馏的过程中并没有考虑背景信息带来的干扰,如何过滤掉这些干扰而只将有效的信息从教师模型中转移到学生模型中是本文今后改进的方向。此外,在训练阶段没有考虑正常样本也是本文的一个不足之处。在今后工作的拓展研究中,将计划与更具挑战性的领域相结合,例如自监督学习、零样本学习和在线学习等。

  • 图  1   YOLOX检测模型基本结构

    Fig.  1   Basic structure of YOLOX detection model

    下载: 全尺寸图片

    图  2   类增量PCB缺陷检测方法的整体架构

    Fig.  2   Overall architecture of the class-incremental PCB defect detection method

    下载: 全尺寸图片

    图  3   6种不同PCB缺陷的示例

    Fig.  3   Sample diagram of six different PCB defects

    下载: 全尺寸图片

    图  4   不同增量场景设置

    Fig.  4   Different incremental scenario settings

    下载: 全尺寸图片

    图  5   两阶段增量场景下的检测结果曲线

    Fig.  5   Detection result curve under the two-stage incremental scenario

    下载: 全尺寸图片

    图  6   旧PCB缺陷类别的可视化检测结果

    Fig.  6   Visual inspection results for old PCB defect categories

    下载: 全尺寸图片

    图  7   不同方法所占用的存储空间

    Fig.  7   Storage space used by different methods

    下载: 全尺寸图片

    图  8   消融实验的可视化检测结果

    Fig.  8   Visualization results of ablation experiments

    下载: 全尺寸图片

    表  1   6种不同PCB缺陷的样本数量

    Table  1   Sample numbers for six different PCB defect classes

    PCB缺陷种类训练集数量/张测试集数量/张
    01556140
    02704180
    03528136
    04500140
    05608156
    06512132

    表  2   一阶段增量场景下的检测结果

    Table  2   Detection results under the one-stage incremental scenario

    场景方法mAP/%
    所有数据上界96.1
    2类+ 4类微调71.4
    PNN73.1
    LWF80.8
    POD75.0
    RILOD88.4
    iCaRL94.8
    本文方法94.2
    3类+3类微调50.8
    PNN55.7
    LWF69.6
    POD67.9
    RILOD87.0
    iCaRL91.4
    本文方法92.2
    4类+2类微调39.4
    PNN41.1
    LWF59.6
    POD50.7
    RILOD81.3
    iCaRL88.0
    本文方法89.8
    注:加黑代表最优结果,下同。

    表  3   两阶段增量场景下的检测结果

    Table  3   Detection results under the two-stage incremental scenario

    %
    方法阶段1阶段2阶段3上界
    微调96.461.144.696.1
    PNN 96.464.345.9 96.1
    LWF 96.473.854.4 96.1
    POD 96.468.846.0 96.1
    RILOD 96.490.579.6 96.1
    iCaRL 96.494.086.3 96.1
    本文方法96.4 94.988.5 96.1

    表  4   不同特征蒸馏损失的消融实验

    Table  4   Ablation experiments of distillation loss with different characteristics

    编号ClsObjRegFeatmAP/%
    155.5
    274.3
    371.4
    485.7
    589.8

    表  5   不同权重参数结果分析

    Table  5   Analysis of results for different weight parameters

    编号${\lambda _1}$${\lambda _2}$旧缺陷/%新缺陷/%所有缺陷/%
    10.50.579.296.084.8
    20.51.082.195.186.3
    31.00.585.394.388.3
    41.01.088.093.389.8
    52.00.589.288.688.9
    62.01.090.087.488.9
    72.02.091.782.688.4

    表  6   6种缺陷类别正常训练时不同模型的检测性能

    Table  6   Detection performance of different models under normal training of six defect classes

    检测模型mAP/
    %
    参数/
    M
    检测速率/
    (f/s)
    推理时间/
    ms
    Faster-RCNN93.541.512.580.0
    RetinaNet91.734.525.738.9
    YOLOX96.125.339.825.1
  • [1] CHEN Yajun, DING Yuanyuan, ZHAO Fan, et al. Surface defect detection methods for industrial products: a review[J]. Applied sciences, 2021, 11(16): 7657. doi: 10.3390/app11167657
    [2] 钱万明, 朱红萍, 朱泓知, 等. 基于自适应加权特征融合的PCB裸板缺陷检测研究[J]. 电子测量与仪器学报, 2022, 36(10): 92–99.

    QIAN Wanming, ZHU Hongping, ZHU Hongzhi, et al. Research on defect detection of PCB bare board based on adaptive weighted feature fusion[J]. Journal of electronic measurement and instrumentation, 2022, 36(10): 92–99.
    [3] 季堂煜, 赵倩, 余文涛, 等. 基于增强小目标特征提取的PCB板缺陷检测模型[J]. 仪表技术与传感器, 2023(4): 87–92. doi: 10.3969/j.issn.1002-1841.2023.04.018

    JI Tangyu, ZHAO Qian, YU Wentao, et al. PCB board defect detection model based on enhanced small-target feature extraction[J]. Instrumentation technology and sensors, 2023(4): 87–92. doi: 10.3969/j.issn.1002-1841.2023.04.018
    [4] TANG Junlong, LIU Shenbo, ZHAO Dongxue, et al. PCB-YOLO: an improved detection algorithm of PCB surface defects based on YOLOv5[J]. Sustainability, 2023, 15(7): 5963. doi: 10.3390/su15075963
    [5] CHEN Wei, HUANG Zhongtian, MU Qian, et al. PCB defect detection method based on transformer-yolo[J]. IEEE access, 2022, 10: 129480–129489. doi: 10.1109/ACCESS.2022.3228206
    [6] QIN Ling, ISA N A M. Printed circuit board defect detection methods based on image processing, machine learning and deep learning: a survey[J]. IEEE access, 2023, 11: 15921–15944. doi: 10.1109/ACCESS.2023.3245093
    [7] LI Zhizhong, HOIEM D. Learning without forgetting[J]. IEEE transactions on pattern analysis and machine intelligence, 2017, 40(12): 2935–2947.
    [8] HINTON G, VINYAL O, DEAN J. Distilling the knowledge in a neural network[EB/OL]. (2015−03−09) [2023−09−27]. https://arxiv.org/abs/1503.02531.
    [9] REBUFFI S A, KOLESNIKOV A, SPERL G, et al. Icarl: incremental classifier and representation learning[C]//Proceedings of the IEEE conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017: 2001−2010.
    [10] DOUILLARD A, CORD M, OLLION C, et al. Podnet: pooled outputs distillation for small-tasks incremental learning[C]//European Conference on Computer Vision. Glasgow: Springer International Publishing, 2020: 86−102.
    [11] SHMELKOV K, SCHMID C, ALAHARI K. Incremental learning of object detectors without catastrophic forgetting[C]//Proceedings of the IEEE International Conference on Computer Vision. Venice: IEEE, 2017: 3400−3409.
    [12] ZHOU Wang, CHANG Shiyu, SOSA N, et al. Lifelong object detection[EB/OL]. (2020−09−02) [2023−09−27]. https://arxiv.org/abs/2009.01129.
    [13] GE Zheng, LIU Songtao, WANG Feng, et al. Yolox: exceeding yolo series in 2021[EB/OL]. (2021−07−06) [2023−09−27]. https://arxiv.org/abs/2107.08430.
    [14] GIRSHICK R. Fast R-CNN[C]//Proceedings of the IEEE International Conference on Computer Vision. Santiago: IEEE, 2015: 1440−1448.
    [15] REN Shaoqing, HE Kaiming, 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, 2016, 39(6): 1137–1149.
    [16] TIAN Zhi, SHEN Chunhua, CHEN Hao, et al. Fcos: fully convolutional one-stage object detection[C]//Proceedings of the IEEE International Conference on Computer Vision. Seoul: IEEE, 2019: 9627−9636.
    [17] CARION N, MASSA F, SYNNAEVE G, et al. End-to-end object detection with transformers[C]//European Conference on Computer Vision. Cham: Springer International Publishing, 2020: 213−229.
    [18] KOTHALA L P, JONNALA P, GUNTUR S R. Localization of mixed intracranial hemorrhages by using a ghost convolution-based YOLO network[J]. Biomedical signal processing and control, 2023, 80: 104378. doi: 10.1016/j.bspc.2022.104378
    [19] 韩璐,毕晓君. 基于增强特征融合YOLOV5的视网膜病变检测[J]. 应用科技, 2022, 49(1): 66–72.

    HAN Lu, BI Xiaojun. Detection of retinopathy based on enhanced feature fusion YOLOV5[J]. Applied science and technology, 2022, 49(1): 66–72.
    [20] BAO Wenxia, DU Xiang, WANG Nian, et al. A defect detection method based on BC-YOLO for transmission line components in UAV remote sensing images[J]. Remote sensing, 2022, 14(20): 5176. doi: 10.3390/rs14205176
    [21] 李朝辉,安金堂,贾红雨,等. 结合旋转框和注意力机制的轻量遥感图像检测模型[J]. 中国图象图形学报, 2023, 28(9): 2706–2718.

    LI Zhaohui, AN Jintang, JIA Hongyu, et al. Lightweight object detection model in remote sensing image by combining rotation box and attention mechanism[J]. Journal of image and graphics, 2023, 28(9): 2706–2718.
    [22] 孙智文,秦志亮,彭若松,等. 基于改进YOLOv4深度学习的有雾海面船只识别[J]. 应用科技, 2023, 50(5): 37–45.

    SUN Zhiwen, QIN Zhiliang, PENG Ruosong, et al. Ship identification of foggy sea surface based on improved YOLOv4 deep learning algorithm[J]. Applied science and technology, 2023, 50(5): 37–45.
    [23] 吴睿,毕晓君. 基于改进YOLOv5算法的珊瑚礁底栖生物识别方法[J]. 哈尔滨工程大学学报, 2022, 43(4): 580–586.

    WU Rui, BI Xiaojun. A coral reef benthic recognition method based on the improved YOLOv5 algorithm[J]. Journal of Harbin Engineering University, 2022, 43(4): 580–586.
    [24] 余越,柏兴,狄岚. 基于YOLO网络和小波降噪的视频车辆跟踪测速优化[J]. 应用科技, 2023, 50(1): 14–20.

    YU Yue, BAI Xing, DI Lan. Video vehicle tracking and speed measurement optimization based on YOLO network and wavelet noise reduction[J]. Applied science and technology, 2023, 50(1): 14–20.
    [25] 卞佰成, 陈田, 吴入军, 等. 基于改进YOLOv3的印刷电路板缺陷检测算法[J]. 浙江大学学报(工学版), 2023, 27(4): 735–743. doi: 10.3785/j.issn.1008-973X.2023.04.011

    BIAN Baicheng, CHEN Tian, WU Rujun, et al. PCB defect detection algorithm based on improved YOLOv3[J]. Journal of Zhejiang University (engineering science edition), 2023, 27(4): 735–743. doi: 10.3785/j.issn.1008-973X.2023.04.011
    [26] ZHENG Liaomo, WANG Xiaojie, WANG Qi, et al. A fabric defect detection method based on improved yolov5[C]//2021 7th International Conference on Computer and Communications. Chengdu: IEEE, 2021: 620−624.
    [27] 张秋雁,朱傥,肖书舟,等. 基于改进YOLOv4算法的高压输电线路异物检测[J]. 应用科技, 2023, 50(4): 59–65.

    ZHANG Qiuyan, ZHU Tang, XIAO Shuzhou, et al. Foreign object detection of high voltage transmission line based on improved YOLOv4 algorithm[J]. Applied science and technology, 2023, 50(4): 59–65.
    [28] ZHANG Meng, YIN Liju. Solar cell surface defect detection based on improved YOLOv5[J]. IEEE access, 2022, 10: 80804–80815. doi: 10.1109/ACCESS.2022.3195901
    [29] 公徐路, 张淑娟. 基于改进YOLOv5s的苹果叶片小目标病害轻量化检测方法[J]. 农业工程学报, 2023, 29(19): 175–184. doi: 10.11975/j.issn.1002-6819.202306118

    GONG Xulu, ZHANG Shujuan. Lightweight detection method of small target disease in apple leaves based on improved YOLOv5s[J]. Transactions of the chinese society of agricultural engineering, 2023, 29(19): 175–184. doi: 10.11975/j.issn.1002-6819.202306118
    [30] LI Dawei, TASCI S, GHOSH S, et al. RILOD: near real-time incremental learning for object detection at the edge[C]//Proceedings of the 4th ACM/IEEE Symposium on Edge Computing. Washington: ACM, 2019: 113−126.
    [31] RUSU A A, RABINOWIT N C, DESJARDIN G, et al. Progressive neural networks[EB/OL]. (2016−06−15) [2023−09−27]. https://arxiv.org/abs/1606.04671.
    [32] LIN T Y, GOYAL P, GIRSHICK R, et al. Focal loss for dense object detection[C]//Proceedings of the IEEE International Conference on Computer Vision. Venice: IEEE, 2017: 2980−2988.
WeChat 点击查看大图
图(8)  /  表(6)
出版历程
  • 收稿日期:  2023-09-27
  • 网络出版日期:  2024-06-04

目录

    /

    返回文章
    返回