卢麒仰,徐超林,杨 育,伍梓帆,赵洪琛,刘宏展
(华南师范大学信息光电子科技学院,广东 广州 510631)
作为电子工业的重要部件,PCB 几乎作用于每种电子设备,它可以代替复杂的布线,实现电路中各元件之间的电气连接。面对PCB 较大的生产量和精细的结构,人工检测暴露出低效率,低准确率和低缺陷检测率的问题[1-2]。为了应对PCB 生产量和市场对PCB 的需求的提高,目前已有许多学者对其进行了研究[3-5]。
在PCB 图像的检测方面,传统方法主要是图像处理统计方法。陈寿宏等[6]基于多特征的SVM 多分类方法检测PCB 的焊点,对采集到焊点图像的形状和纹理特征利用SVM 中最优的核函数进行检测,再利用基于HOG 的SVM 多分类算法进行二次检测得到结果。李广宏等[7]采用红外图像和可见光图像结合的方法,获得兼具元器件位置和工作属性等信息的图像,其检测速度快于只用可见光图像的方法,但是存在外界环境对红外图像温漂的影响。李孟歆等[8]通过优选边缘检测算子,采用基于熵的全局多阈值图像分割算法提取焊点边缘特征,再利用粗糙集对提取得到的形状特征进行约简和特征组合。但是这类传统方法具有一定的局限性,无法满足复杂情况下的检测。
如今随着计算机科学发展,PCB 图像的检测多使用深度学习的方法,整体的效率和精确度大为上升。在深度学习领域中,两阶段目标检测算法有基于区域的卷积神经网络R-CNN 算法、快速基于区域的卷积神经网络Fast R-CNN[9]算法和更快的基于区域的卷积神经网络Faster R-CNN[10]算法等,单阶段目标检测算法有快速目标检测算法YOLO[11]和SSD[12]。而在实际应用中,伍济钢等[13]在YOLOv4网络的基础上改进二分K-Means 聚类结合交并比(Intersection over Union,IoU)损失函数确定锚框,并且引用MobileNetV3 作为特征提取网络,提升对PCB 小目标缺陷的检测性能。瞿栋等[14]采用基于残差学习结构的方法,允许原始输入信息直接传到后面的层中,并使该层的神经网络可以只学习上一个网络输出的残差。减少了由于网络深度加深而导致的准确度饱和对网络检测效果进一步提升的影响。通过何国忠等人[15]的基于卷积神经网络的PCB 板缺陷检测的研究可知,YOLO 系列算法的检测精度和检测速度相比其他算法具有较大优势。但YOLO 系列网络在检测微小缺陷时仍存在检测正确率低的情况。
针对YOLO 系列网络存在对微小缺陷检测效果较差的问题,本文提出对YOLOv5 网络进行修改,采取FPN 算法,增加了针对小目标的检测层,将底层和上层的缺陷特征进行融合,以提高其对小缺陷的检测能力。同时,本文通过图像处理技术,分割提取出待测板的缺陷ROI 图片,提高缺陷尺寸在整张图片中的占比,再对缺陷ROI 图片进行检测,将检测到的缺陷信息回归原图。通过放大缺陷占比和减少检测次数,提高了检测正确率和检测效率。由此能满足工业生产对PCB 的要求。
基于改进YOLOv5 网络的PCB 裸板缺陷识别算法流程如图1 所示。
图1 基于YOLOv5 的PCB 裸板缺陷识别算法流程图
YOLO 系列是非常经典的one-stage 目标检测算法,它将物体检测问题视为一个回归问题,用一个卷积神经网络完成检测。相比于其他网络,它具有更加优秀的检测性能,可以更快地进行实时检测。并且在框架上使用Pytorch 框架,相对于YOLOv4 采用的Darknet 框架,YOLOv5 模型体积缩小了,因而更容易部署在硬件侧,且更容易投入生产。其速度在高达140 FPS 的同时,仍保持了较高的正确率和稳定性。
PCB 板缺陷具有缺陷区域面积小的特点,对于这种小目标的检测,YOLOv5 表现出了一定的局限性,即复杂环境下的小目标物体检测易受背景信息的影响,特征提取网络能够提取的语义信息较为有限。在目标检测特征提取过程中,由于经过了较少的卷积运算,浅层特征图含分辨率较高的特征形状信息,可提升边界框回归识别精度,但其语义信息较少,易受噪音点的干扰;经过多次卷积计算得到的深层特征图含较强的语义信息,但其分辨率较低,细节表达能力较差。引入特征融合可以将浅层的形状信息补充进深层的语义信息中,提高深层信息的综合度进而提升对小目标形状的检测能力。
本文首先在YOLOv5 网络的基础上增加了多个小目标检测层,即每个尺度的检测层均配备额外的小目标检测层来提取网络所提取的特征。在网络结构分布上,各个小目标检测层同样具有不同深度层次的分布,将输出进行通道混合,重新等量分配到各个检测模块中。同时本文采用晚融合中的FPN 算法,将深层信息上采样,与浅层信息逐元素地相加,达到提升预测正确率的效果。并且在每个融合后的特征层上单独进行预测,从而构建了尺寸不同的特征混合金字塔结构。YOLOv5 网络中,本身具有三层FPN 检测结构,其大小分别为20×20、40×40 以及80×80,但其只适合检测大尺度的缺陷,在检测小缺陷图像时易丢失信息。因此本文在其基础上进行改进,添加了一层大小为160×160 的FPN 检测结构,使其更适合于检测小型多形态目标,其结构示意图如图2 所示。
图2 修改后的FPN 结构图
具体操作为:首先在模型的第17 层后,转为对特征图进行上采样等处理,使得特征图继续扩大,使其包含更多的小缺陷特征。在第20 层时,将获取到的大小为160×160 的深层特征图与骨干网络中第2层的浅层特征图进行concat 融合,再通过1×1 卷积核将特征信息混合得到新的特征信息,该部分特征信息同时包括了形状特征和语义特征,能够反映缺陷区域的整体形态。在输出通道混组后,等效于每个输出具有了3 个尺度的综合信息,相较于之前的特征具有更高的全局特征综合度,补充了小目标的浅层语义信息,构成了FPN 检测结构。通过增加小目标检测层和特征融合次数,提高了网络模型对小目标的检测能力。
微小目标检测效果不好主要是因为其尺寸问题,在复杂环境下的小目标物体检测易受背景信息的影响,特征提取网络能够提取的语义信息十分有限。网络输入图像尺寸为32N×32N,在YOLOv5 中进行五次下采样,得到的三张图像特征图尺寸分别为N×N,2N×2N,4N×4N。其中最大的4N×4N负责小目标的检测,感受野为大小。因此若待检测目标的尺寸小于8 像素时,网络检测会遗漏目标的特征信息,造成误检或漏检。因此采用分割的方式,将分割后的图像输入目标检测网络中,可以极大地降低最小可检测目标像素值。传统方法主要通过对图像进行滑块式分割,但采用全局滑块式分割的方式,会进行较多无效检测,大大增加检测时间。因此本文在网络检测中利用图像处理方法分割出ROI 区域,提高检测效率。其步骤与示意图如图3 所示。
图3 缺陷ROI 分割流程实例图
本文通过模版匹配方法,首先通过比较标准板与待测板,通过图像异或方法对预处理后的二值图片进行比较,得到缺陷位置。图像异或是把两幅图像对应位置的像素值进行异或,定义标准板为A,待测板为B,若两图中同一位置像素值相同,则将其设置为背景色,若不同,则将其突出出来,即
上述运算后,得到两幅图的差异,由于在图像采集过程中,图像很难严格重合,因此在进行异或操作之后,往往存在像素级的微小差异,对缺陷位置的确定存在干扰,需要对异或后的二值图像进行去噪。本文中采用中值滤波滤除噪声,中值滤波是一种非线性滤波方式,将图像中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点,设{xij(i,j)∈I2}为图像中各个像素点的灰度值大小,F为设定的滤波窗口,其大小为9×9。
滤除噪声之后即可清晰地得到图像缺陷位置。如图4 所示,白色像素区域即为缺陷位置。
图4 异或操作后的PCB 图
图5 截取后的PCB 图
图7 网络检测输出的PCB 图
根据上述步骤中得到的缺陷位置,将其坐标返回到原图中,并以其为中心,将缺陷及其周围的图像信息提取出来,作为缺陷图片,送入网络模型中进行识别。当缺陷位于图像边缘时,提取出的缺陷图片的质量难以保证,故本文提取图片背景色将图像进行扩充。
通过上述步骤,能够精确地得到以缺陷为中心,大小可自定义的缺陷ROI 图片,利用网络模型对其进行检测可以得到相比直接检测原始图像更为精确的结果。
本实验采用包含RTX2080 显卡、64G 内存的工作站。
在实际工业生产中,可采用如图所示的图像采集系统获得PCB 的图片。其中传送带匀速运动,四台高亮度LED 在PCB 上方沿PCB 宽度固定,保证了PCB 受光照均匀,整体亮度一致,当PCB 待测板运动到指定位置时,由CCD 摄取PCB 平面图经PC的图像采集卡采集。随着传送带的运动,即得到随传送带运动的多张PCB 的高清平面图。而传送带的具体移动速度取决于具体工业生产的程序。
印刷电路板瑕疵数据集是一个公共的合成PCB 数据集,它由北京大学发布,其中包含1 386 张图像以及6 种缺陷(短路、断路、毛刺、漏孔,鼠啮、铜渣),用于检测、分类和配准任务。因此本文选用该数据集来模拟实际生产的PCB 板。
为验证切割缺陷周围图像以进行检测的方法对系统识别准确率的影响,本实验通过使用改进后的YOLOv5 训练框架进行训练,为扩大数据集容量,对数据集复制一份到十份,训练完成后,得到训练模型。利用该模型,对缺陷ROI 图片进行检测,得出缺陷种类和相应的检测准确率。
本文将数据集和标签文件分为训练集、验证集、测试集,并分别将其放到进行操作的文件夹内,然后对训练模型的参数进行配置,训练次数Epochs 设为1 000 次;批次大小Batch size 是指训练时一次性输入网络的图片数目,将其设为16;提高输入分辨率会提高小目标检测精度,所以输入分辨率img-size值设置为640。参数设置完成后,开始训练,在训练结束后,得到检测模型。将待测PCB 图输入模型,即可进行识别,得到PCB 的缺陷情况。
若将待测PCB 图直接送入YOLOv5 网络进行检测,则检测效果较差,有较多的漏判和误判现象,因此本文首先分割出缺陷ROI 图片再送入改进的YOLOv5 网络,由于增加了小目标检测层和FPN 算法,改进的YOLOv5 网络对其识别效果更好,用这种方式得到检测结果的漏判和误判率明显下降。
本文中为评估模型的检测性能引入以下评估指标对模型进行测试分析:Precision,Recall,AP 及mAP,各个指标的计算公式如下:
将数据集中的大量PCB 平面图输入进行训练及验证,验证得到的结果见表1。
表1 剪切图和原图缺陷验证的效果比较 单位:%
从实验结果可见,设计的优化方案相比于优化前缺陷漏判率降低了1.91%;检测精确度提高了1.89%;召回率提高了1.83%;平均检测精度均值提高了1.82%。由于本文对网络结构进行了改进,提升了对于图像中小缺陷的检测能力,同时由于是对图像的的缺陷ROI 区域进行检测,可以放大缺陷的尺度,进而得到更好的检测结果。
实验中选取9 种不同种类的PCB 板,通过训练得到的权重对其进行实际检测,得到该权重对不同种类缺陷的识别正确率,检测得到的结果见表2。
表2 不同种类缺陷识别的效果比较
从实验结果可见,本文的的优化方案相比于优化前各种缺陷的检测率均有所提升,其中对于毛刺,其检测精确度提升程度高达20.77%。由此可见,经过异或操作得到ROI 缺陷图片,输入改进后的网络进行检测,相较于直接检测,对于微小缺陷的检测率有较大提升。
本文针对PCB 制造过程中产生的缺陷提出了一种基于卷积神经网络的检测模型。该模型重点解决了对微小缺陷检测不准确的问题。该模型首先通过额外增加小目标检测层获取更多小目标特征信息,再使用FPN 算法逐层融合YOLOv5 网络中的浅层形状信息和深层语义信息,补充了语义信息,提高了其综合度。此外,通过图像分割增大了缺陷在图像中的尺度占比,更好地获取缺陷信息,进而提升了对小目标的检测能力。根据测试,本文所设计的优化YOLOv5相比优化前对于小目标的检测能力显著提升。可对未来PCB 更加精细的研究提供技术支持。