基于改进YOLOv3的纽扣电池表面缺陷检测

2022-10-23 14:00李冬伟丁力梁栋
机械制造与自动化 2022年5期
关键词:纽扣图层预处理

李冬伟,丁力,梁栋

(江苏理工学院 机械工程学院,江苏 常州 213001)

0 引言

纽扣电池是一种常用的电路元件,因其体积偏小且具有较好的经济适用性被广泛应用于微型电子产品中。在生产加工过程中,因工艺限制或操作失误,纽扣电池表面难免会出现划痕、凹坑等缺陷[1-2]。这些损伤除了会降低产品质量外,还有可能造成安全隐患。因此企业必须对纽扣电池的表面进行缺陷检测[3]。经调研,目前普遍的检测方式为人工检测,即依靠肉眼过滤出不合格产品。这种方法不仅受质检员主观因素的影响较大,也可能对其视力造成永久性损害。因此,提出一种检测准确率和速度满足需求的纽扣电池表面缺陷检测方法具有重要的意义。

为解决上述问题,学者们将传统机器视觉图像处理技术引入至缺陷检测领域,其优势在于图像区域处理速度快和匹配检测精度高。例如,KONG Q M等[4]根据螺栓的尺寸和形状特征,提出基于改进模板匹配算法的外螺纹表面缺陷检测方法,检测准确率为96.15%。但该方法对硬件要求较高且易受光照条件、螺栓边缘提取程度等因素影响,检测速率不高。随着人工智能技术和计算机视觉算法的普及,目标检测算法逐渐取代了传统机器视觉在缺陷检测领域的地位。当前,深度学习目标检测算法[5]主要分为两类,一类是以SSD[6]、YOLO[7]为代表的one-stage算法;另一类则是以Mask R-CNN[8]、Faster R-CNN[9]为主的two-stage算法。在检测准确度相同的情况下,由于one-stage算法具有检测速度快、硬件依赖度低等优势,因此被广泛应用于检测行业。近年来,得益于算法通用性强和背景误检率低的优点,YOLO及其改进算法受到市场的青睐。例如,南虎等[10]制作高质量的原子图像数据集,使用YOLOv3实现了原子峰的位置检测,检测速率相比于高斯拟合等方法有了显著提升。王宸等[11]提出一种改进YOLOv3的轮毂焊缝缺陷检测方法,利用数据增强法扩充数据集,检测准确率达到了99.29%,检测速率满足企业生产线的节拍要求。JU M等[12]为进一步提高网络的检测性能,扩展YOLOv3的特征图层至4层,提高了小目标的检测能力。在YOLO系列算法中,优秀聚类算法不仅可以提高模型训练速度,而且能够提高缺陷检测准确率和模型泛化性。例如,XU Y M等[13]改进YOLOv3模型,采用K-means++聚类算法选取初始聚类中心,使缺陷平均检测准确率提高了3.02%。NING Z等[14]提出一种改进YOLOv3的带钢表面缺陷检测算法,其使用K-means++聚类算法进行聚类分析,使缺陷检测准确率达到了89.5%。

受上述分析启发,本文提出了一种改进YOLOv3的纽扣电池表面缺陷检测方法,即先联合HALCON软件和图像采集系统完成图像预处理和数据集预处理;然后引入K-means++聚类算法,优化YOLOv3网络结构;最后训练模型并进行检测实验。

1 图像预处理

为避免因图像质量问题影响缺陷检测准确率,本文设计了基于HALCON的图像预处理方案,具体的预处理流程如图1所示,其中包括图像采集、图像灰度化、图像滤波、Blob分析及结果输出。

图1 图像预处理流程

1.1 图像采集

由于缺陷位置不固定,并且在不同光源角度下的成像效果差异较大,故仅在同一光源角度下连续拍摄图片无法完成图像采集任务。为此,本文搭建了如图2所示的图像采集系统,该系统由计算机、光电传感器、传输装置、支架、MV-CE050-30 UC型CMOS传感器工业面阵相机、MVL-HF1228 M-6 MPE型变焦镜头、24 V电源适配器和白色同轴光源构成。为确保能够采集到可用的图像,本文通过可编程逻辑控制器和光电传感器提供拍摄信号。当纽扣电池样本被传输至指定位置时,工业相机间隔50 mm拍摄3张图片,完成图像采集工作。

图2 图像采集系统

1.2 图像灰度化

为了使用更少的数据信息体现样本的特征,同时提高图像预处理和缺陷检测的速度,需要对图像进行灰度化处理。常用的图像灰度化方法有3种,分别是平均值法、最大值法和加权平均值法[15]。本文在这里选用加权平均值法对图像进行灰度化处理,即

Igrey(i,j)=0.299R(i,j)+0.587G(i,j)+0.114B(i,j)

(1)

式中:Igrey(i,j)为灰度图像中像素点的灰度值;R(i,j)为彩色图像中像素点红色量;G(i,j)为彩色图像中像素点绿色量;B(i,j)为彩色图像中像素点蓝色量。

1.3 图像滤波

受拍摄环境和图像采集系统自身传感元件的影响,图像在采集过程中会夹杂噪声,导致图片成像质量不高,因此在图像灰度化处理后必须进行滤波消噪[16]。考虑到图像中缺陷尺寸较小,同时为了尽可能保留其总体灰度特征,本文在这里选用尺寸为3×3的高斯滤波器。如图3所示,经过高斯滤波处理,缺陷区域得到了增强。

图3 高斯滤波处理结果对比

1.4 Blob分析

高斯滤波虽然去除了硬件对图片成像的影响,但图像背景和无关区域亦会对缺陷检测造成干扰。为提高缺陷检测的准确率,本文在这里采用机器视觉中常用的Blob分析[17]提取纽扣电池的特征,剔除图像中的干扰项和无关项,其处理结果如图4所示。

图4 Blob分析处理结果

2 数据集预处理

实现纽扣电池表面缺陷检测的基础是进行数据集预处理。首先,收集尽可能多的纽扣电池表面缺陷图像;然后,针对图像收集情况批量进行数据增强处理;最后,标注图像中的缺陷参数,生成标签文件。

2.1 图像收集

为了使检测结果更加准确,本文所用的纽扣电池皆来源于某纽扣电池生产企业。经第1节所述的图像预处理环节后共收集到2 100张纽扣电池表面缺陷图像,分辨率为416×416。该企业生产的纽扣电池主要包含两种类型的缺陷,分别是划痕和凹坑,图像样本如图5所示。

图5 表面缺陷图像样本

2.2 图像增强

由于检测模型需要进行大量图像训练来降低偏差,避免出现过拟合现象,因此需要对图像进行增强处理以获取充足的数据。针对收集到的图像依次随机进行水平翻转和竖直翻转变换,并将变换后的图像加入训练集,变换后的图像如图6所示。经上述数据增强处理后共获取4 200张数据集图像,将其以7∶2∶1的比例划分为训练集、测试集和验证集,其中每张图像至少包含一种缺陷。

图6 数据增强处理

2.3 图像标注

模型训练前需要标注图像中的缺陷类型,本文使用开源标注软件LabelImg对数据集图像进行标注。缺陷标注分为两类,分别是划痕类缺陷,标签为scratch;凹坑类缺陷,标签为fossette。标注流程如图7所示。首先在LabelImg中框选出缺陷区域,获取对应的坐标位置信息;然后注明对应标签;最后生成后缀为xml的标签文件,使文件名称和图像名称保持一致。通过标注软件LabelImg生成的标签文件中,包含图像所属路径、图像像素尺寸、缺陷标签类型以及缺陷边界框的位置信息。

图7 缺陷区域标注

3 YOLOv3改进策略

YOLOv3是一种根据YOLOv2[18]改进而成的端到端的目标检测算法,被广泛运用于视频识别、图像辨识和实时检测领域。但其在缺陷检测方面依然存在检测准确率不足的问题,故本文以原始YOLOv3为基础,加入K-Means++聚类算法[19],优化其网络结构,增强了算法的缺陷检测能力。

3.1 加入K-means++聚类算法

原始YOLOv3采用经典的K-means聚类算法对数据集图像进行维度聚类分析进而获取先验框(anchor box)。虽然此算法能够取得一定的聚类效果,但其局限性在于K-means聚类算法会随机选取初始聚类中心,导致聚类效果差异较大。因此,选择合理的初始聚类中心显得十分重要。

针对K-means聚类算法[20]随机选取初始聚类中心的弊病,本文采用K-means++聚类算法进行优化。K-means++聚类算法可以使不同的聚类中心分布在距离相差较远的位置,能够降低簇间的相似度,提高算法的聚类准确率和收敛速度。该算法首先会筛选出一个样本作为初始聚类中心O1,接着计算每个样本到当前聚类中心间的最短距离,依次计算每个样本成为聚类中心的概率,然后按照概率选取聚类中心,概率计算公式如下:

(2)

式中:p为概率;D(x)为每个样本到当前聚类中心的最短距离。重复计算剩余样本成为下一个聚类中心的概率,直至选出所有的聚类中心。再针对聚类中心以外的样本,将它们划分至距离最短的聚类中心所对应的簇中。最后针对每个簇,重复计算其聚类中心坐标,直至聚类中心位置不再变化,最终筛选出K个初始聚类中心。

K-means++聚类算法能够从样本中发现显著的规律和集群,以相似度为标准将特征相似或相同的样本划分至同一类别。该方法极大地减小了K值对聚类效果的影响,有效解决了K-means聚类算法缺陷带来的问题。

3.2 网络结构优化

原始YOLOv3主要依靠3种不同尺度的特征图层实现目标检测,但纽扣电池表面缺陷的尺寸较小,而YOLOv3在检测中对小目标缺陷不敏感。因此,需要针对YOLOv3的网络结构进行改进,提高其检测准确率。

本文的改进方法是将Darknet-53主干网络中第2个残差块的浅层输出与2次采集后的网络深层输出融合,再经过卷积层(conv)构成一个新的特征图层。新的特征图层不仅继承了Darknet-53输出的深层特征,也充分利用了网络浅层特征,模型的特征提取能力得到加强。不同尺度的特征图层将图像划分为不同数量的网格,新的特征图层尺寸是数据集图像尺寸的1/4。它将图像划分至104×104个网格,网格尺寸仅为4×4,网格尺寸越小意味着对小目标缺陷越敏感。改进后的网络结构如图8所示,含有n个残差单元的残差块用res×n[21]表示,每个残差单元包含一个快捷链路与两个DBL结构。DBL结构由批归一化层(BN)、卷积层(conv)和激活函数(leaky relu)构成。conv是指卷积核为1×1的卷积层。Concat是指张量拼接环节,用于扩充张量维度。维数D表示特征图层中每个网格包含的信息数量,其公式如下:

D=E×(F+G+H)

(3)

式中:E为网格先验框的数量;F为边框坐标信息;G为边框置信度;H为检测对象的类别数量。图8中虚线框内即为新增的特征图层。

图8 改进后的网络结构

优化后的网络结构将拥有4个特征图层,每个特征图层依然拥有3个先验框,使先验框总数增加至12个。图像中先验框数量的增加能够增大检测密度,降低缺陷误检和漏检的概率。叠加的特征图层可以更好地划分缺陷的尺寸层次,强化网络对不同尺寸缺陷的综合检测能力。

4 实验与结果分析

实验硬件环境为Intel(R) Core(TM) i7-10870 H CPU @ 2.20 GHz CPU,内存16 GB;GPU为NVIDIA GeForce RTX 2070,显存8 GB。软件环境为Windows10操作系统,Anaconda环境管理器。运行环境为Python3.6,TensorFlow1.14和Keras2.1.5。编译环境为PyCharm,利用CUDA10.0和CUDNN7.6.5加速GPU运算。

4.1 性能评价标准

本文选择缺陷检测中常用的性能评价标准对本次实验进行分析,模型性能评价标准包括准确率P(precision)、召回率R(recall)、表面缺陷精度均值AP(average precision)、表面缺陷平均精度均值mAP(mean average precision)和检测速度F。P、R、AP和mAP计算公式如下:

(4)

(5)

(6)

(7)

式中:TP为真正例;FP为假正例;FN为假反例;AP(i)为第i类缺陷的精度均值;n为检测类型数量。

4.2 模型训练

模型训练采用随机梯度下降法,动量因子为0.9。图像输入尺寸为416×416,颜色通道数为1。为防止过拟合现象发生,权重衰减系数设定为0.000 5。初始学习率为0.001,最终学习率为0.000 001,学习率衰减策略为steps。采用K-means++聚类算法进行维度聚类分析获取的聚类准确度(accuracy)为91.54%。为防止计算机因显卡内存容量不足而崩溃,每批输入4张图像进行训练(batch为4)。通过预训练发现,模型的损失在迭代400次左右能实现收敛,因此将训练迭代次数设置为2 500。模型的损失变化情况如图9所示,在迭代1 000次前后达到极小值,直至训练结束都保持稳定,达到了训练模型的目的。

图9 损失函数变化曲线

4.3 验证集检测结果与分析

从模型训练部分可以得出结论,该模型训练结果收敛较快,其权重文件可以用于检测实验。验证集部分检测结果如图10所示,表明模型能够完成缺陷检测任务。验证集总体检测效果如图11所示,scratch类缺陷AP为95.15%,fossette类缺陷AP为95.40%,缺陷mAP为95.28%。从各项性能评价标准可以看出该模型在训练阶段和检测阶段均较为理想,能够胜任纽扣电池表面缺陷检测任务。

图10 测试集检测结果

图11 缺陷类型P-R曲线

4.4 实验结果与对比分析

本文分别运用K-means和K-means++两种聚类算法对数据验证集进行聚类,使用Accuracy、mAP和FPS对算法进行评估,其结果如表1所示。采用K-means++进行实验并得到的Accuracy和mAP分别为91.54%和95.28%,相比于使用K-means分别提高了6.37%和3.97%,表明K-means++聚类算法不仅能够优化初始聚类中心的选取,也提高了缺陷检测的准确率。

表1 聚类算法对比

为验证本文方法的综合检测性能,在这里使用原始YOLOv3、SSD和Faster R-CNN方法对数据训练集进行训练。此次采用AP、mAP和FPS三项指标作为性能评估标准,表2罗列了上述各方法对数据验证集的检测结果。

表2 不同方法性能对比

对表2分析可知,原始YOLOv3对scratch类缺陷较为敏感,其检测准确率为93.13%。SSD和Faster R-CNN对fossette类缺陷检测效果较好,相较于原始YOLOv3分别提高了1.69%和5.19%。本文方法对纽扣电池表面各类缺陷的检测准确率皆优于上述方法,在数据验证集上的mAP值为95.28%,相比于原始YOLOv3、SSD和Faster R-CNN分别提高了3.97%、8.93%和2.07%。同时本文方法的FPS达到35帧/s,优于SSD和Faster R-CNN。虽然检测速率比原始YOLOv3稍逊一筹,但本文方法胜在缺陷检测准确率,这是图像预处理、数据集预处理、K-means++聚类算法和网络结构优化共同作用的效果。因此结合上述性能评价标准,本文方法的综合性能优于原始YOLOv3、SSD和Faster R-CNN,具有一定的工程参考价值。

5 结语

本文为解决纽扣电池表面缺陷易受外部因素干扰导致检测准确率不足的问题,提出一种基于改进YOLOv3的纽扣电池表面缺陷检测方法,首先搭建了图像采集系统,设计了基于HALCON的图像预处理方案;然后制作了实验数据集;最后针对原始YOLOv3的不足,加入K-means++聚类算法优化聚类中心的选取,新增一个特征图层强化缺陷检测能力。以性能评价标准作为参考指标,本文方法在验证集上检测两类缺陷的平均准确率达到95.28%,优于原始YOLOv3、SSD和Faster R-CNN等对比方法,进一步证明了其有效性。该模型在检测过程中的实时性尚有提升空间,在后续研究中将着重于优化检测流程和权重文件,提升检测速率。

猜你喜欢
纽扣图层预处理
求解奇异线性系统的右预处理MINRES 方法
解密照片合成利器图层混合模式
闪闪亮亮纽扣画
基于预处理MUSIC算法的分布式阵列DOA估计
纽扣变变变
纽扣
玩转纽扣
浅谈PLC在预处理生产线自动化改造中的应用
跟我学添加真实的光照效果
基于膜过滤的反渗透海水淡化预处理