1. 引言
在制造过程中的印刷电路板(PCB)可能会出现诸如膜腐蚀、膜氧化、孔结构问题、线路损坏和异物污染等问题。这些问题的存在可能导致产品性能下降或整体质量受损,更严重的情况是会危害消费者的健康安全。所以,实时且迅速地检查PCB表面的缺陷至关重要[1]。
在机器学习尚未广泛应用时,传统的如人工目检等方式被用于PCB的瑕疵识别中,人工目检作为早期的PCB质量检测方式,主要通过检测人员借助放大镜或投影仪等光学仪器,利用肉眼进行观测对比,来检测PCB缺陷。然而此种办法存在明显的不足之处:长时间工作会导致视力疲惫、错误判断及遗失问题的可能;此外,由于现代电子产品日益精密化与多样化的需求使得人类难以准确地辨别出所有的问题点从而增加了工作的困难程度和人力的投入量[2]。另一方面,随着工业水平和各个行业的需求提高,PCB板的形态愈发复杂,线路密集度高,这使人工目检的难度大大提高,对工作人员的检测技术要求也更高,人力成本大幅度提高[3]。
因此研究者们近年来也在不断探索更高效的PCB缺陷检测方法[4]。基于卷积神经网络(CNN)的深度学习技术已经在图像特征抽取上展示了其强大功能,这使得诸如缺陷分类、缺陷检测和缺陷划分等有监督的学习方式已在工业产品质量检测领域被广泛应用。然而,这种有监督的方法依赖于大量的缺陷实例来构建模型,而实际上很难获得这些信息,并且产品的制作过程中的缺陷也是不可预见的,这就意味着有监督学习的模型不能涵盖所有的缺陷样例,从而影响对新出现的缺陷的辨识。
为了解决这些问题,无监督学习方法成为研究图像表面缺陷检测的热点。随着近些年深度无监督学习的发展,其中基于重建的方法也得到了广大研究人员的探索。作为重建方法之一的自动编码器检测缺陷方式被广泛应用于表面缺陷检测问题中,例如张宏伟等[5]提出一种基于去噪卷积自编码器的无监督重构模型,通过对比检测图像和重构图像之间的差异来实现对彩色织物的瑕疵检测及位置确定;刘珈彤等人[6]使用采用二维主成分分析卷积自编码器以识别晶圆表面缺陷,这种方法所提炼出的缺陷信息更具非线性特征;合肥工业大学罗月童等[7]提出了一种卷积去噪自编码器模型用以检测半导体芯片表面的细微缺陷,实践证明此法对于芯片表面微小瑕疵的检出有良好的表现。生成对抗网络GAN [8]作为另一种强大的生成模型被学者应用于异常检测任务中。AnoGAN [9]第一次将GAN应用到异常检测领域,它使用正常样本训练一个标准GAN,使生成器学习到正常样本分布,测试阶段通过迭代方法选择出一个表征向量,使得由该向量生成的正常样本最接近测试样本。由于该迭代过程特别耗时,Akcay等人[10]提出GANomaly通过构造编码–解码–再编码的重建网络并结合生成对抗学习实现测试阶段的低计算开销。ALAD [11]采用BiGAN框架同时将样本图像及其对应的表征向量应用于训练流程,使模型同时具有学习图像特征以及低维表征的能力,增强对正常样本建模的能力。
无监督式学习网络架构能充分运用到现实生产制造过程中易于获得无瑕疵样品且无需标记有问题的样品这一显著优势上,借助消除杂音并重新构建的方式生成检测样本的修正版。然后,把检测样本与其修正图像进行残差计算,就能找出并且确定缺陷位置。这类方法的核心问题是无监督网络模型是否能够成功地抽取待检测样品的主要特性,它决定了无监督网络模型能否在有效重构正常的图像同时修复缺陷区域。在此,提出了一种基于卷积自动编码器算法完成印刷电路板快速高效的质量检测。
2. 模型原理
2.1. 卷积自动编码器原理
自编码器(Autoencoder, AE)作为一种神经网络模型,主要用于无监督学习,工作方式是将输入尽可能地复原到输出,主要被用于降维或特征学习。自编码器内部包含一个编码器(Encoder)用于将输入图像映射为隐藏编码,编码器部分将输入数据(通常是高维数据,如图像或时间序列)压缩成一个低维的表示(编码或潜在空间表示),这一部分通常由几层神经网络组成,最终输出一个比输入维度低得多的特征向量,编码器的目标是提取输入数据中的主要特征,并将数据压缩成一个低维的潜在空间。另一个结构为解码器(Decoder)将编码映射为重建图像。编码器用于将输入图像
映射为隐藏编码
,表示为:
(1-1)
解码器将编码
映射为重建图像
(1-2)
在图像处理任务中通常使用卷积神经网络来拟合编码函数
和解码函数
。自编码器原理图如图1所示:
Figure 1. Autoencoder schematic diagram
图1. 自编码器原理图
传统自编码器的编码器和解码器部分通常采用全连接层,对于一维信息并没有影响,而对于二维信息组成的图像和视频处理领域,这将会导致空间信息的丢失,于是在深度学习逐渐发展之后,受到卷积神经网络的启发,MASCIJ等人提出了卷积自编码器,在卷积自编码器中,编码器由卷积层和池化层(下采样层)组成,解码器由上采样层和卷积层组成,其中上采样层为池化层的逆过程[12]。
2.2. 生成对抗网络原理
生成对抗网络(Generative Adversarial Networks, GAN)自从在2014年被提出以来,一直是一个被广泛研究的课题,由于其出色的数据生成能力,被应用于许多实际场景中,如图像生成、图像编辑、图像超分辨率生成和文本图像合成等。
同样隶属于生成任务的图像重建也引入GAN来改善数据建模效果,提升重建生成能力。GAN包括两个网络:生成器(Generator)和判别器(Discriminator),通过对抗训练的形式使生成器学习到真实样本的分布。判别器的目的是尽可能的区分样本是真实数据还是由生成器生成的数据,而生成器就是为了生成尽可能真实的样本以使得判别器难以区分数据来源[13]。由此两个网络进行博弈最终达到纳什均衡,判别器无法分辨真实数据和生成器产生数据的真假,由此,此时的生成器已训练完成[14]。生成对抗网络模型如图2所示:
Figure 2. Generate the adversarial network schematic
图2. 生成对抗网络原理图
3. 模型网络结构设计
图3所示,基于卷积自编码器的网络模型由编码器和解码器两部分组成,每个部分包括3层。编码器有3个子层:卷积层、批量归一化、激活层。解码器的子层包括反卷积层、批量归一化、激活层以及向上采样。输入图像为640 × 640,编码为包含640 × 640个特征的向量。解码器输出640 × 640的图像作为修复后的图像。网络中使用的激活函数是Relu激活函数。损失函数是均方误差函数。为了提高网络模型学习更多的特征,模型使用了迁移学习。首先,单独训练了一个基于生成对抗网络的网络模型来生成正常图像,通过将训练好的生成对抗网络模型中的生成器作为提出基于自编码网络模型的解码器,这样网络模型就能学习到完好印刷电路板的主要特征,此时的模型也具有了修复功能。
编码器输入通道数为1 (即单通道图像,例如灰度图)首先进行卷积,输出通道数为32,卷积核大小为3,步幅为2,填充为1。经过这个卷积层后,特征图的尺寸从(640, 640)减少到(320, 320)。经过批量归一化和激活函数,接下来的卷积层结构相似,每次输出通过翻倍并减小特征图尺寸,直到最后输出100个通道,经过扁平化层将特征图展平,转换为一维张量。
解码器反卷积层将输入的潜在向量转为一个形状为(512, 3, 3)的特征图,输出通道数为512,卷积核大小为3,步幅为1,填充为0。对512个通道的特征图进行了标准化,接着使用ReLU激活函数增强非线性特征。使用的反卷积层依次为256,128,64,32通道,经过每层的反卷积、批标准化、ReLU激活,特征地图的大小逐步增大。利用双线性插值法将特征图的尺寸上采样到(640, 640),最终输出的图像尺寸为640 × 640。
Figure 3. Model network structure diagram
图3. 模型网络结构图
4. 实验结果与分析
4.1. 数据集
DeepPCB数据集是一个公开PCB缺陷数据集,总共有1500个样本,每个样本都由未出现问题的原始模板图和对应的测试图组成,同时附带了详细标注,这些标注涵盖了六大主要类型的PCB问题位置:开口,短路,咬伤,杂散,针孔和伪铜。所有的图片都是从线型CCD中采集而来,其分辨率为大约一毫米等于48像素,而模板与测试图的尺寸则大致为16 k × 16 k像素,接着被切割成许多大小为640 × 640的子图像,最后使用模板配准方法来实现它们的同步。图4与图5展示的图像数据分别为数据集中一组对应的正常图像数据与异常图像数据。
Figure 4. Normal PCB
图4. 正常的印刷电路板
Figure 5. Defective PCB
图5. 异常的印刷电路板
4.2. 实验装置
本算法模型通过PyTorch深度学习框架搭建,版本号为2.4.0。编程语言为python,版本号为3.8.19。所有实验均是在配置有Intel(R) Xeon(R) Silver 4110 CPU @ 2.10 GHz,64 GB内存和NVIDIA GeForce RTX 2080Ti的服务器上进行。
4.3. 训练流程
使用学习率衰减训练该网络模型,初始学习率0.001,每40个训练周期衰减为原来的1/10,训练周期总数为200。训练步骤如下:
步骤1:进行图像预处理将图像调整至640 × 640大小,使用随机对比度变换、随机亮度变换、随机噪声添加。
步骤2:使用随机初始值结合Adam算法进行优化。未特别声明时,所有训练均在此条件下完成。
经过训练后,神经网络可以生成与输入图像对应的无缺陷图像,并计算输入图像与重构图像的残差图像,通过残差分析检测并定位缺陷区域的位置。图6所示完整训练流程图。
Figure 6. Flow chart of model training test
图6. 模型训练检验流程图
4.4. 评价指标
本文使用召回率、精确率、准确率和F1分数四个指标定量评估模型的性能。指标recall (召回率)和precision (精确率)的计算如公式(1-3)和公式(1-4)所示,准确率(accuracy)和F1分数(F1-score)的计算如公式(1-5)和公式(1-6)所示。
(1-3)
(1-4)
(1-5)
(1-6)
其中,
表示成功识别出真实的缺陷图像的数量;
表示未被识别出的真实缺陷图像的数量;
表示正常图像被误判为缺陷图像的数量;
表示正常图像被成功识别为正常图像的数量。
4.5. 结果与其分析
在训练过程中,就可以看出模型是否通过损失变化收敛,如图7所示。为了进一步直观体现训练的最优模型在PCB瑕疵检测任务中的效果,通过在缺陷印刷电路板图像上进行检测。训练有素的网络模型可根据输入图像预测出已修复的印刷电路板图像。通过将输入图像和输出图像相减,就能确定有缺陷的印刷电路板,通过残差分析检测并定位缺陷区域。输入和输出之间的差值越大,说明PCB的缺陷越多。图8是使用卷积自编码器训练后的得到PCB瑕疵检测模型检测的结果。从结果可以看出,模型可以准确地识别出瑕疵的位置。这在生产加工领域具有重要的应用价值。
Figure 7. Model training loss curve
图7. 模型训练损失曲线图
Figure 8. Comparison of defect detection test results
图8. 瑕疵检测测试结果对比图
表1为模型在数据集上检测结果的召回率、精确率、准确率和F分数的对比,这4个评价指标的取标的取值范围均为从0到1,数值越大,表明检测结果越好。
Table 1. Comparison of test results under different evaluation indexes
表1. 检测结果在不同评价指标下的对比
阈值 |
召回率 |
精确率 |
准确率 |
F分数 |
0.29 |
0.9231 |
0.9600 |
0.9388 |
0.9412 |
0.27 |
0.9615 |
0.9627 |
0.9615 |
0.9434 |
0.25 |
0.9615 |
0.9538 |
0.9592 |
0.9615 |
5. 结论
提出了一种利用卷积自编码器的新型印刷电路板瑕疵识别技术。这可以有效地解决如因缺乏有瑕疵的样例而导致的困难、由于不同类型的瑕疵分布不均匀所引发的问题、人为设计的瑕疵特性导致的高成本和低泛化性能等问题。为印刷电路板缺件检测提供了一种易于人工目检的缺陷自动检测方案。