基于深度学习的电解电容识别与极性检测*
2024-02-24黄旭东张伟伦曹金龙胡新宇
汪 威,王 冲,黄旭东,张伟伦,曹金龙,胡新宇
(湖北工业大学 机械工程学院,湖北 武汉 430068)
0 引言
电解电容作为印刷电路板(printed circuit board,PCB)的重要极性元器件之一,起到滤波和耦合的作用。目前许多工厂仍采用人工目检的方式来检测电解电容的极性方向,然而这种方式效率低,成本高,并且随着劳动时间的增长,检测人员会感到视觉疲劳导致其检测的正确率降低[1]。
近年来,随着计算机视觉的发展,基于卷积神经网络(CNN)的检测方法被应用到PCB的各项检测任务中[2]。Lin Y L等人[3]提出了一种基于YOLO算法的PCB组件的电容检测方法。Susa J等人[4]提出了一种利用YOLOv3 检测电路板上电容的方法,该方法总体精度为93.33%。Li J等人[5]提出一种改进YOLOv3 的算法,实现了电解电容的检测,精度达到93.07%。然而,上述方法均是对电容的检测识别,并未涉及到极性检测。目前,对于电容极性判断的方法分为传统视觉识别方法和机器学习融合算法。全正相、李天宇、魏嘉莉等人[6~8]利用传统算法拟合电容基圆,通过展开电容圆环带来得到电容的极性方向。Fang J 等人[9]提出了一种基于多角度分类识别的插入式极性电容器AOI(automatic optical inspection)算法。He J W等人[10]提出一种基于机器学习和形态学的插入式电容极性检测融合算法,准确率达到99.73%,漏检率为0.12%。Fang J等人[11]提出了一种基于YOLO 目标搜索的三级电容搜索算法,实现了对插电电容的识别与定位。然而,上述极性检测方法均是在理想条件下得到的检测结果,没有考虑到实际应用中存在的复杂情况,如极性区域噪声大,电容环带上文字干扰多,光照条件不好等。
针对上述提出的电容检测与极性识别问题,本文提出一种两步检测法。该方法首先利用目标检测网络检测电容,得到电容的位置,再利用语义分割网络对识别的电容进行语义分割得到电容的极性区域。该方法可以同时识别电容和判断电容的极性方向,能够适应复杂的环境,有较强的鲁棒性。
1 电容识别与极性检测方法
1.1 检测方案设计
本文设计的电容识别与极性检测方案如图1 所示,算法总体设计共分为3个部分。
图1 检测方案
首先,提出一种改进的YOLOv5[12]算法对电容进行识别定位,同时提取电容感兴趣区域(region of interest,ROI);然后,利用语义分割模型对电容极性区域以及基圆区域进行分割,如图2所示;最后,对分割结果进行形态学处理得到电容的极性方向。
图2 区域划分
1.2 改进的YOLOv5 算法
YOLOv5网络结构主要包括4个部分:输入层(input)、主干层(backbone)、颈部(neck)和预测头部(prediction head)[13]。本文对YOLOv5 算法的改进分为2 个方面,首先在主干网络的Backbone中融合Swin Transformer模块[14]以提高模型的特征提取能力;其次在主干网络的Neck网络中,使用双向特征金字塔网络(bidirectional feature pyramid network,BiFPN)来进行特征融合。改进后的网络模型如图3所示。
图3 改进YOLOv5 网络结构
1.2.1 Swin Transfomer模块
Swin Transformer是一种注意力机制的网络,它拥有全局信息建模的能力,其结构如图4(b)所示。
图4 Swin Transformer结构
自注意力机制公式如式(1)所示
式中 K 为键值矩阵;Q 为查询矩阵;V 为值矩阵,是输入向量经过线性变换得到的;dk为缩放因子。
MSA(multi-source agreement)模块中对图像中所有像素进行全局自注意力计算,然而巨大的h×w 对全局注意力计算而言是难以承受的,SW-MSA 模块则解决了这一问题,该方法在连续Swin Transformer blocks中的两种分区配置间交替,引入了先前层非重叠相邻窗口间的联系,如图4(a)所示。
1.2.2 BiFPN模块
YOLOv5 在Neck 使用了PANET 进行特征提取和融合。并在原来FPN的基础上构建了一条自下而上的通路,这样的结构取得了一定的效果,然而这种特征融合往往只是简单的特征图相加,而不对同时加进来的特征图进行区分。不同输入的特征图具有不同的分辨率,对融合输入特征图的贡献也是不同的,因此简单的进行叠加并不是最佳的操作。而BiFPN模块如图5所示,是一种加权BiFPN,将同一层的输入和输出节点跨层连接起来,实现更高层次的融合,缩短了上下层之间信息传递的路径。带权重的特征融合能够学习不同输入特征的重要性,对不同输入特征进行有区分的融合。
图5 BiFPN模块
1.3 改进的Unet分割算法
由图6所示,Unet架构看起来像一个“U”,由3 个部分组成:编码块、颈部和解码块。Unet 的编码块类似于经典的VGG16,解码块包含上采样层和残差连接。
图6 Unet网络结构
本文对Unet网络的改进分为2 个部分,首先在编码阶段插入MobileNetV3模块,以达到轻量化网络的目的,同时引入SE通道注意力机制,增强特征提取能力;然后在解码块中的上采样阶段提出一种双上采样模块用来恢复特征图,提高分割精度。
1.3.1 MobileNetV3模块
Unet采用的是传统的CNN,这样的结构导致其参数量较大,而MobileNetV3 通过深度可分离卷积减少网络参数的数量和计算量。深度可分离卷积将传统的卷积操作分成了两步:第一步通过深度卷积对每个通道进行轻量级滤波;第二步通过逐点卷积对上一步卷积得到的输出进行线性组合来建立新的特征,如图7所示。
图7 深度可分离卷积
SE通道注意力机制通过一个权重矩阵,从通道域的角度赋予图像不同位置不同的权重,得到更重要的特征信息,如图8所示。
图8 SE注意力模块
1.3.2 双上采样融合模块
上采样常用的几种方法有反卷积、双线性插值、反池化、和亚像素卷积。反卷积上采样会在生成的图像中造成棋盘效应,反池化上采样直接对采样部分补零,导致特征不连续。双线性插值在放大图像时,图像看上去会比较平滑、干净;亚像素卷积则可以对缩小后的特征图进行有效放大,将降低分辨率的特征图通过卷积和多通道间的重组得到高分辨率的特征图。本文将双线性插值和亚像素卷积的融合为一种双上采样模块,如图9 所示,在Unet 解码阶段用以恢复特征图,提高网络的分割精度。
图9 双上采样模块
2 实验结果与分析
2.1 实验平台
本文的实验硬件配置如下:CPU:Intel®CoreTMi9—12900K 3.20 GHz;GPU:NVIDIA GeForce GTX3090Ti 24 GB;128 GB内存。实验环境为Windows10 64 位操作系统,编程语言Python 3.9,深度学习框架PyTorch 1.11.0,CUDA 11.3。
2.2 目标检测实验
2.2.1 评价指标
实验采用目标检测中常用的几种评价指标来验证本文模型的性能,召回率(recall)、精确率(precision)、平均正确率(mAP),如式(2)~式(4)所示
其中,TP为实际为正例且被分类器划分为正例的实例数,FP为实际为负例但被分类器划分为正例的实例数;FN为实际为正例但被分类器划分为负例的实例数。
2.2.2 消融实验与对比实验
本文以YOLOv5为基准网络,设计了4 组实验来验证本文改进的方法,见表1。方案(4)为YOLOv5 网络,方案(5)为在方案(4)中融合Swin Transformer模块,方案(6)为在方案(4)中融合BiFPN模块,方案(7)为在方案(4)中同时融合Swin Transformer和BiFPN模块;同时选择常用的目标检测算法YOLOv3、YOLOv4 和SSD 进行对比实验,总实验结果如表1所示。
表1 消融实验与对比实验 %
从表1中可以看出,对比方案(4)和方案(5)融合Swin Transformer之后模型的3 种评价指标分别提升了5.7%,1.4%,4.2%,其中提升最为明显的是精确率,这表明融合之后的网络有更强的特征提取能力;对比方案(4)和方案(6),在原网络的颈部融合BiFPN模块之后,整个模型的召回率得到明显提升,BiFPN 的融合方式是各层的特征得到有效的融合,降低网络“漏检”的风险;对比方案(4)和方案(7),整个模型的评价指标分别提升了9.5 %,7.7 %,8.8%,表明本文的改进方法不仅有更强的特征提取能力而且有较好的特征融合能力。
对比方案(1)~方案(3)可知本文改进方法对比现有方法有较好的精度,本文方法与方案(4)实验结果的对比如图10所示。
图10 实验结果
2.3 语义分割实验
2.3.1 评价指标
本文采用语义分割中常见的几种评价指标来验证网络模型的性能,像素准确率(pixel accuracy,PA)表示预测类别正确的像素数占总像素数的比例,平均像素精确度(mean pixel accuracy,MPA)分别计算每个类被正确分类像素数的比例,然后累加求平均,交并比(intersection over union,IoU)表示模型对某一类别预测结果和真实值的交集与并集的比值,平均交并比(mean IoU,MIoU)先求每一类的IoU然后求和再平均的结果,如式(5)~式(8)所示
2.3.2 消融实验与对比实验
本文以Unet网络为基准网络,设计了4 组实验来验证改进的方法,见表2。方案(1)为Unet 网络;方案(2)在方案(1)中编码块中融合MobileNetV3-SE模块;方案(3)在方案(1)解码块中使用双上采样模块;方案(4)在方案(1)中同时使用方案(2)和方案(3)。实验结果如表2所示。
表2 消融实验结果 %
由表2可得,对比方案(2)和方案(1),在融入Mobile-NetV3模块后,整体MAP和MIoU提升了1.7%,3.1%,其中极性区域的Precision和IoU 相比基圆区域提升较大;对比方案(3)和方案(1),在解码块中使用双上采样模块之后,MAP和MIoU提升了1.4%,2.3%,对比方案(4)和方案(1),在编码块和解码块中同时使用本文所提出的改进策略,MAP和MIoU分别提升了2.7%,3.7%,极性区域的Precision和IoU分别提升了5%,5.1%,极性区域分割精度的提高有利于判断电容的极性方向,实验结果表明本文的改进策略是有效的。
为验证本文方法的可靠性,选择与目前常用的几种语义分割网络对比,实验结果如表3所示。
表3 不同网络性能对比
由表3 可得,对比DeeplabV3 +网络,本文方法虽然MIoU略有降低,但是检测速度有较大的提升,基本能满足检测需求。
2.4 极性方向检测
极性方向检测整体流程如图11 所示。图11(a)为原图,经过语义分割后的图片如图11(b)所示。首先将彩色图片转换为R,G,B三通道图片,R通道中通过阈值分割将电容的基圆部分提取,然后求该区域的最小外接圆,定位其圆心,如图11(f)所示;在G 通道中,同样也利用阈值分割提取极性部分,求该区域的中心,如图11(e)所示,最后建立坐标系,如图11(i)所示,得到电解电容的方向,如图11(h)所示。
图11 极性检测
为验证本文极性检测方法的有效性,本文通过1000张电解电容图片对算法进行测试,实验结果如表4所示;并将本文方法与目前极性检测方法中效果较好的文献[8]中方法进行对比。
表4 电容检测极性结果
文献[8]中利用机器视觉的方法对电容极性进行识别,然而,该方法对有文字噪声的圆环极性无法识别,同时当电容极性区域所在圆环不完整时无法进行极性识别,而本文方法对这两种情况下的电容极性均能有效识别,实验结果如图12所示。
图12 极性检测实验对比
3 结论
针对PCB电解电容识别与极性检测问题,研究了一种基于深度学习的检测方法。首先利用改进的目标检测网络检测电容,得到电容定位;然后将电容送入语义分割网络分割电容的基圆区域和极性区域;最后利用形态学处理得到电容的极性方向。该方法与文献[8]方法相比具有较强的鲁棒性,未来研究中将继续提高模型的检测能力和分割能力,以应对更复杂的场景。