吴烈权,周志峰,朱志玲,张 维,王 勇
(1.上海工程技术大学 机械与汽车工程学院,上海 201620;2.上海司南卫星导航技术股份有限公司,上海 201801;3.国网思极位置服务有限公司,北京 102211)
贴片二极管在电气系统中有非常广泛的使用,例如整流、稳压、续流、包络线检测等,而贴片二极管的表面缺陷严重影响了其电气绝缘性能,所以贴片二极管表面缺陷检测显得尤为重要[1]。传统目测法借助显微工具进行人工检测,工作强度大、效率低,且其检测结果易受检测人员的主观因素影响。
传统目标检测算法基于手工特征的模型通常较浅,语义性不高,同时基于滑动窗口的候选框选择策略没有针对性,时间复杂度高,窗口冗余,在特征提取和分类时运行速度慢,且对图像多样性的变化没有很好的鲁棒性。随着数字图像处理技术和卷积神经网络的兴起,现阶段有很多新兴算法使用在目标检测领域。根据算法的流程,可以将现有的目标检测算法分为以拥有较高检测精度的 R-CNN[2-4]系列为代表的Two-Stage 算法,和以拥有较快运行速度的SSD[5]和YOLO[6-9]系列为代表的One-Stage 算法。R-CNN 系列算法在精度检测中的效果显著,但是检测速度较慢。在Bochkovskiy A 提出YOLO-V4 之前,YOLO 系列运行速度很快,但是其检测精度相较于R-CNN 系列算法较差,而YOLO-V4 不仅兼顾了R-CNN 系列算法检测精度高和SSD 算法运行速度快的优点,且优化了对小目标的检测精度。
目前,在表面缺陷、小目标行人、多目标航拍[10]等方面的检测,都大量使用以YOLO-V4 为基本框架的算法,且在小目标检测中效果突出,因此针对贴片二极管的小目标结构,本文选取YOLOV4 为基本架构。文献[11]提出了一种基于改进的YOLO-V4 算法的航空发动机部件表面缺陷检测,PANet(路径聚合网络)结构中融合浅层特征与深层特征,同时优化了Focal Loss,提高小目标检测精度。但为提高检测速度,去除 PANet 中自下而上的路径增强结构,牺牲low-level 特征具有许多微小细节和高定位精度。文献[12]为解决小目标行人检测精度低、实时性差等问题,在特征融合部分引入 scSE(空间和通道的压缩和激励)注意力模块,促使网络学习到更有意义的特征信息,同时引用深度可分离卷积代替 YOLO-V4 算法残差结构中的传统卷积,降低模型残差和计算量。但深度可分离卷积需要保存的中间变量更多,会导致训练速度有所降低。
针对上述问题,本文算法通过FPN+PANet 使特征融合得到更丰富的特征信息,并引入三分支注意力机制模块以剔除特征融合所形成的无用信息,提升检测速度。在保留传统卷积的同时,CSP1模块采用DenseNet 替换原网络中的ResNet,更有利于特征和梯度的传递,可以增强特征在网络间的传播,有效减少计算量,以提升检测速度。
图1 所示为YOLO-V4 算法框架。作为YOLO系列平衡检测精度和运行速度的YOLO-V4 的体系架构,由 CSPDarknet53 作为主干网络,SPP 作为附加模块用来扩大感受野,PANet 中的路径聚合模块作为混合和组合图像特征的网络层和 YOLOV3(基于锚点)的检测头组成,YOLO-V4 采用了新的数据增强算法(Mosaic 和SAT),使用遗传算法选择超参数,使用交叉小批量标准化(CmBN)改进SAM、PAN,使用DropBlock正则化方法。
图1 YOLO-V4 算法框架Fig.1 Algorithm framework of YOLO-V4
本文所用的改进的YOLO-V4 算法框架如图2所示。首先输入图像进行预处理后,经过CBM、CSP1_DenseBlock 和TAM 模块获得特征映射;DenseNet[13]弱化了梯度消失问题以及减少网络特征冗余的情况;三分支注意力机制模块实现了特征信息的跨纬度融合;FPN+PANet 对特征进行融合,在FPN 的基础上加入了自底向上线路增强和自适应特征池化。自底向上线路增强使更多边缘的浅层特征得以保留,自适应特征池化将单层特征换成多层特征,即每个ROI 需要和多层特征做ROI Align 操作,然后将得到的不同层ROI 特征融合;最后分别得到80×80,40×40,20×20 的特征映射;取代5 层CBL 的CSP2 降低网络的运算量;最后由预测层分别对三种特征图进行识别。
图2 改进的YOLO-V4 算法框架Fig.2 Algorithm framework of improved YOLO-V4
特征提取能力在一定程度上影响算法的性能,随着网络的加深,性能会提高直至瓶颈,最后出现衰退。YOLO-V4 基于DarkNet53 特征提取网络引入了CSP 结构,该结构有2 个分支:1)普通卷积;2)通过Res unit 组件生成残差边。Res unit 模块缓解网络加深而梯度消失的现象,增强了卷积神经网络的学习能力,加快了网络推理速度。Res unit的基础残差模块如图3 所示。图3 中x表示输入,H(x)为期望输出,F(x)为残差,期望输出为H(x)=F(x)+x。当F(x)=0时,H(x)=x,在梯度传播过程中可以解决梯度消失现象,避免信息的遗漏。残差单元将复杂的期望映射转换为残差映射,使得网络更容易训练,网络的层数也能大大加深。
图3 基础残差模块Fig.3 Basic residual module
基础残差单元解决了梯度消失现象,但是残差结构的下一层输入仅来自上一层,没有更多的特征信息。本文用DenseNet 模块替代Res unit 模块,DenseNet 模块对特征信息做拼接,每层网络输入都包括前面所有网络的输出,从特征重用的角度提升网络的性能。一个DenseNet 由3 个DenseBlock组成,单个DenseBlock 由多个BN 层、卷积层和ReLU函数组成。该结构的每层都能直接从损失函数中得到梯度,直接获取输入信号,这样可以训练出更深的网络,得到更多的特征信息,但同时也增大了网络的计算量,降低了运行速度。因此本文在DenseNet的基础上,设计了改进的DenseBlock 结构来取代Res unit,如图4 所示。由此,改进YOLO-V4 中只需要将原有的CSP 模块中X个残差组件替换成X个DenseBlock。
图4 改进的DenseBlock 结构Fig.4 Improved DenseBlock structure
同时为提高算法检测速度,本文用改进的CSP2替换CBL×5 模块,降低了网络的运算量,具体结构如图5 所示。
图5 改进的CSP2 结构Fig.5 Improved CSP2 structure
视觉注意力机制是人类视觉所特有的大脑信号处理机制,利用有限的注意力资源从大量信息中筛选出高价值信息。注意力机制模块与人类的视觉注意力机制模块类似,主要目标也是选择更关键的信息。
本文在FPN+PANet 对特征融合的基础上,引进了三分支注意力机制模块[14],使输入的图像信息得到更高效的处理,并能有效地过滤无关特征。注意力机制模型输入的是大量图像信息X_i,根据上下文Y,给予X_i 不同的权重,输出的Z是由X_i加权算数平均数,在整个加权过程中剔除了大量无关信息。基于图像的空间和通道维度,注意力机制可分为空间注意力机制和通道注意力机制,以及混合注意力机制。空间注意力机制根据所需的图片信息计算权重;通道注意力机制针对各通道的特征信息进行学习,实现通道层面的重要性感知;混合注意力机制是将上两种注意力机制进行融合,所得到的提取图像特征信息的完整性、准确性和可扩展性更强。YOLO-V4 仅用到了空间注意力机制,本文采用的是三分支混合注意力机制,如图6 所示。
图6 三分支混合注意力机制Fig.6 Three-branch mixed attention mechanism
其原理是对输入特征映射信息进行旋转变换,然后对不同维度的特征进行重要性学习并且编码。三分支注意力机制模块由空间、通道及空间权重计算3 个分支构成。第一个分支和第二个分支均是通道C和空间H维度交互捕获分支,输入特征后经过置换,分别在H维度和W维度上进行最大池化和平均池化,分别变为H×C×W维度特征和C×H×W维度特征,然后均进行逐个元素相加;第三个分支为通道注意力分支,输入特征后也经过最大池化和平均池化,再接着7×7 卷积;3 个分支通过Sigmoid 来获得权重,模块最终通过对3 个分支输出的特征进行相加平均处理,来实现跨维度交互。本文中的融合注意力机制可以忽略计算开销,同时消除权重和通道之间的间接关系。
YOLO-V4 的正样本损失函数如式(1)所示:
本文检测对象是贴片二极管,贴片二极管的缺陷检测问题可以视为二分类问题。本文实验采集的贴片二极管图片中难易样本分类数量不均衡,使得模型从样本训练中学习的有用信息有限,易造成过拟合,影响模型的泛化性。针对上述问题,本文引进Focal Loss 函数,如式(2)和式(3)所示:
式中:Pt反映了与类别y的接近程度;为真实值;P为预测值;Pt越大说明越接近类别y,也说明分类的置信度越高,代表样本越易分,γ >0时为可调节因子。
在Focal Loss 函数中另外引进一个权重因子,如式(4)所示。其中权重因子的大小一般为相反类的比重,即负样本越多,它的权重越小,这样可以降低负样本的影响。
利用式(2)、式(3)和式(4)对式(1)进行优化,得到式(5):
在本文中,根据所采集的贴片二极管图像样本的难易分类样本和正负样本数量,取α=0.25、γ=2[15]。
本文的贴片二极管检测分为缺陷和无缺陷,在开始训练模型之前采集贴片二极管的样本图像为数据集,该数据集包括870 张贴片二极管图片,随机抽取600 张为训练子数据集,40 张为缺陷子数据集,230 张为测试子数据集用于训练、验证和测试,然后利用标注工具对图像进行标注,生成XML类型的标注文件。本文算法基于pytorch 实现,实验所用计算机配置:CPU 为Intel Xeon W-2135,内存大小为32 G,GPU 为GeForce RTX 2080Ti,显存大小为10 G,操作系统为Ubuntu18.04。
为了使模型获得更好的初始化参数,本文所改进的YOLO-V4 算法在COCO 数据集上进行预训练。图7 是本文算法在训练过程中平均损失率(avg_loss)和平均检测精度值(mAP)随算法迭代次数的变换曲线。随着不断迭代,avg_loss 不断下降,mAP 在迭代40 次后基本不变化,达到最大值。此时,网络模型收敛。
图7 平均损失率和平均检测精度曲线Fig.7 Curves of average loss rate and average detection accuracy
本文实验中选择主流的一阶算法SSD、YOLOV3 和YOLO-V4 进行对比实验。实验中采用精确率P(precision)、召回率R(recall)、多分类平均精度mAP以及检测速度FPs作为评价模型的性能指标,如式(6)所示:
式中:TP为真阳性;FP为假阳性;FN为假阴性;AP为平均精度;n为类别数。本文检测对象只有贴片二极管,所以多分类平均精度值与平均精度值相等。
表1 是本文实验模型与其他热门网络模型的对比实验结果。从表1 中可以看出,本文改进的YOLO-V4 算法在P、R、mAP上均高于目前流行的几种网络模型,仅在FPs方面略有下降。本文算法相较于SSD 的P、R、mAP分别高出9.55%,8.30%,9.98%;相较于YOLO-V4 的P、R、mAP分别高出2.98%,2.65%,2.92%。综上所述,本文改进算法在检测精度和漏检率上都有提高,检测效果较好。
表1 各种模型性能指标对比Table 1 Performance indicators of various models
图8 所示为本算法对贴片二极管表面缺陷检测的实验图。从图8 中可以看出,本算法对贴片二极管检测的准确率较高,且未存在漏检、错检情况,能准确检测出存在表面缺陷的贴片二极管。
图8 测试集部分图像在本文算法上测试的结果Fig.8 Test results of part of images in test set on algorithm
本文在YOLO-V4 的基础上提出了改进的YOLOV4 的贴片二极管表面缺陷算法。在改进的YOLOV4 算法中,CSP1 模块采用DenseNet 替换原网络中的ResNet,更好地增强了小目标检测精度,同时弱化梯度消失问题以及减少网络特征冗余的情况。引进三分支注意力机制模块,实现了特征信息的跨纬度融合,抑制了无效的贴片二极管特征信息,同时消除了权重和通道之间的间接关系。通过改进的Loss函数优化损失,降低了样本不平衡和难易样本对检测精度的影响。本文建立贴片二极管数据集,对改进的YOLO-V4 算法和SSD、两种YOLO 系列的算法进行对比试验。改进的YOLOV4 算法的检测精确度达到了98.16%,相较于SSD算法其检测精确度(P)提升了9.55%,相较于YOLO算法其检测精确度(P)提升了2.95%,且多分类平均精度(mAP)达到99.45%。综上所述,本文改进的YOLO-V4 算法能够实时准确检测贴片二极管表面缺陷。