基于YOLO_v4的空心杯电枢表面缺陷实时检测*
2021-07-02庾彩红黄海松姚立国
庾彩红,黄海松,曾 锋,姚立国
(1.贵州大学现代制造技术教育部重点实验室,贵阳 550025;2.贵州省机场集团有限公司,贵阳 550012)
0 引言
空心杯电机由于轻量型、小体积、低能耗等特点被广泛应用于医疗器械、机器人和无人机等领域。电枢部件的质量对空心杯电机驱动性能好坏有重要影响。为了精准地检测出空心杯电机电枢表面微小缺陷,提高生产效率,优化生产工艺。急需展开对高精度空心杯电机电枢表面缺陷更深入的研究,保证高精度空心杯电机的制造质量和产品性能。目前对空心杯电机电枢的表面缺陷检测主要依靠人工来筛选。人工检测速度慢、效率低。随着人工智能技术的发展,深度学习[1]算法在目标缺陷检测领域取得了很好的成绩。
文献[2]在R-CNN网络的基础上使用多任务损失函数,提出了Fast R-CNN算法。文献[3]在Fast R-CNN网络的基础上结合了区域提议网络(Region Proposal Network),提出Faster R-CNN网络的概念。文献[4]提出使用改进的Faster R-CNN算法对油辣椒灌装生产线中封盖面的缺陷进行检测。网络输入使用稀疏滤波与卷积神经网络相结合提取的重要图像特征。文献[5]提出用Mask R-CNN网络对齿轮表面缺陷进行检测。文献[6]提出使用Faster R-CNN算法检测刨花板表面的缺陷,利用不同的特征提取网络下的不同Anchor值设置模型进行训练、验证和测试。
文献[7]提出YOLO_v1,检测速度达到了每秒检测45张图片。原图片输入卷积核,按模型的输出网格划分,产生多个grid cell。根据网格中心位置检测物体所属类别。Sakai Y等[8]提出联合训练算法思想,使用分层的思想训练物体检测器。YOLO_v3[9-10]重新将分类器应用于需要进行检验测试的任务中,网络应用于待检测目标的多个区域,划分区域预测得分较高的作为实验结果。文献[11]提出用YOLO_v3网络对汽车底部危险微小物品进行目标检测。文献[12]利用多尺度训练的YOLO_v3网络检测电力巡检图片中的防鸟刺区域,选取Resnet52作为特征提取网络实现防鸟刺部件的识别和故障检测。
综上所述,R-CNN系列网络检测精度高但运行速度慢,且不满足实时性检测要求,仅适用于推荐系统。对实时检测系统并不适合,尤其应用于工业流水线实时在线检测。空心杯电机作为一种轻量型工件,很少有学者对其进行表面缺陷检测。为解决空心杯电机电枢表面的微小孔洞缺陷实时检测问题,提出一种基于YOLO_v4的缺陷检测方法,实现缺陷位置的检测以及识别缺陷类别功能。最终通过在检测平台上的实验,验证了该方法可行性。
1 YOLO_v4的空心杯电机电枢表面缺陷实时检测方法
1.1 YOLO_v4网络原理
YOLO_v4由Bochkovskiy A等[13]于2020年提出,该网络是通过结合新的算法思想对YOLO_v3的子结构进行改进得来的,实现了算法检测效率及精度的提高,对微小目标的检测更加友好。YOLO_v4网络引入了Mosaic及SAT(Self Adversarial Training)数据增强方法丰富输入图像,提高YOLO_v4训练网络的鲁棒性。算法使用CSPDarknet53网络提取数据集特征,该网络包含5个CSP模块,每个CSP模块前面增加下采样方法,卷积核大小为3*3,stride=2。特征图尺寸的变化尺度依次为608→304→152→76→38→19。CSPDarknet53中用SPP block模块代替全连接层(Fully Connected Layer),扩大了感受野的范围,提取输入图像重要的特征的同时不降低算法的运行速度。YOLO_v4框架图如图1所示。
图1 YOLO_v4网络框架结构图
YOLO_v4中的损失函数采用了CIoU_Loss回归方式,由三部分组成:
(1)Bounding Box Regression损失,如式(1)所示:
(1)
(2)对于预测的类别带来的损失,如式(2)所示:
(2)
(3)对于预测的置信度的损失,如式(3)、式(4)所示:
(3)
CIoULoss=1-CIoU=
(4)
RCIoU是对CIoU的定义,其中α是做权衡的一个参数,如式(5)所示:
(5)
其中,v是衡量长宽比一致性的参数,如式(6)所示:
(6)
YOLO_v4网络输出了3个不同尺度的特征图,每个特征图对应的将输入图像分成Si×Si个单元格,检测目标中心落在的单元格负责对这个目标的检测,并预测目标位置边框及边框的置信度。置信度反映出该边框内含有待识别目标的可信程度。如式(7)所示:
(7)
1.2 评价指标
常用于评估目标检测模型的指标主要包括三种:IoU(Intersection over Union)交并比、平均精度(Average Percision)、均值平均精度(Mean Average Percision)。
IoU是图像标注区域与预测区域的交集面积占两者并集面积的分值比。反映的是评价检测目标定位准确率的一个指标。训练的模型的IoU的值越大,表明训练的模型性能越好,预测精度越准。M表示图像标注区域的面积,N表示预测区域的面积,X表示两者交集的面积,那么IoU的计算公式如(8)所示:
(8)
图例如图2所示。
图2 IoU图示
分类结果混淆矩阵表示方法如表1所示。
表1 分类结果混淆矩阵
表格中P代表缺陷空心杯电枢样本,N代表无缺陷空心杯电枢样本;T代表结果识别正确,F代表结果识别错误。
召回率(Recall)反映了数据集中具有缺陷空心杯电机电枢全部被检测出的比例。精确率反映了空心杯电机电枢孔洞缺陷的预测正确率。Precision和Recall表达式为:
(9)
(10)
以训练网络中反映分类器对正例覆盖能力的recall值为坐标轴横轴,以检测器识别为正例数目的precision值为纵轴,对PR曲线进行平滑处理。AP就是PR曲线与x轴围成的图形面积。
对于连续的PR曲线,AP如式(11)所示:
(11)
对于离散的PR曲线。AP如式(12)所示:
(12)
mAP为所有类别的平均AP值,如式(13)所示:
(13)
2 实验
2.1 实验硬件平台
搭建实验平台装置进行采集数据及验证YOLO_v4算法检测空心杯电机电枢表面缺陷的可行性。图像采集平台由CCD相机、PC机、镜头、匀速转盘、图像采集卡、LED弧形光源(如图3所示)。光源、焦距、阴影这些外界因素在采集图像的时候会影响图像的质量。开始工作前,首先调整合适的光圈和焦距。检测实验中使用Ubuntu16.04系统、英特尔酷睿 i7-1075H处理器,英伟达 GeForce GTX 1650 Ti显卡。
图3 图像采集装置图
2.2 数据集
在空心杯电机电枢缺陷识别领域,目前没有公开的大型数据集。本实验所用的数据集为自制数据集,利用匀速转盘每秒转动15°,进行采集一张图片。总共包含480张图像。
图像数据集数量过小就会使训练的深度学习神经网络模型过拟合。为了避免这种情况,需要对采集的图像集采取数据增强的方法提高模型的鲁棒性和泛化能力。文章中使用数据扩充法对采集的空心杯电枢图像进行数据增强。对空心杯电枢图像进行图像曝光度、图像饱和度、图像色度、图像旋转(参数如表2所示),图4为数据增强前后对比。
表2 空心杯电机电枢孔洞微小缺陷图像数据增强参数
(a) 曝光(b) 饱和
(c) 色度(d) 旋转图4 图像数据增强前后对比
空心杯电枢图像进行数据增强后,结合K折交叉验证(K-fold Cross Validation)对空心杯电枢图像集进行划分。K折交叉验证可以更好地估计训练的模型的试验误差。将数据集Y分为K个完全不相同的数据子集。图像集中的待训练样本的数量为X,那么每一个数据子集有X/K个训练样本,对应的子集为{y1y2…ys}。随机取一个子集作为验证集,剩余子集作为待训练子集,实验令K=6。使用K折交叉验证,模型的性能不会因为数据的划分而出现较大差异。一定程度上降低了模型过拟合,使模型训练结果更加可靠。
2.3 缺陷目标检测
实验以采集的空心杯电机电枢图像为检测对象。使模型更好地适用本数据集,模型的超参设置为默认参数,初始学习率为0.001 3,动量和权值分别设置为0.88以及0.000 1,设置待训练模型运行迭代轮数为4000。网络训练流程分为模型训练及缺陷识别。
模型训练步骤为:①读取初始化的网络模型及权重;②读取空心杯电机电枢数据集,根据数据集样本的数量决定迭代次数寻找最优参;③根据最终训练得到loss值判定模型是否拟合,保存模型训练得到的权重文件对图像进行测试,检验模型是否符合要求。
图5 模型训练流程图
获取适用于识别空心杯电机电枢表面缺陷的权重文件之后,使用基于得到的权重对空心杯电机电枢数据集进行目标缺陷检测。缺陷检测步骤为:①读取待测空心杯电机电枢图片;②引入网络模型以及训练的权重文件;③对读入的空心杯电机电枢进行检测。
图6 缺陷检测流程图
2.4 实验结果及分析
YOLO_v4中的特征提取网络为CSPDarknet53,将输入图像分为两部分降低复杂度,图像分辨率为1440×1080。采集的空心杯电机电枢图像中至少有一个微小孔洞缺陷,且缺陷的大小不一,位置不定,保证YOLO_v4网络训练得到的模型符合对多种尺度范围的微小孔洞缺陷进行检测的要求。
以YOLO_v4基础网络对采集的数据图片进行训练,算法迭代一次读取两张空心杯电机电枢的图片,网络运行迭代到700次左右之后网络开始收敛,在迭代了2700次左右训练的模型loss值趋于稳定,网络基本拟合。迭代过程中损失值及mAP的变化如图7、图8所示。
图7 训练集的损失函数图及平均损失函数图 图8 测试集mAP及best mAP
经过Loss结果图显示网络迭代到2700趋于稳定,且在网络运行迭代了1000次之后,网络每迭代120次对数据进行一次mAP计算。网络迭代轮数运行完毕之后,空心杯电枢缺陷检测结果显示loss值为0.63,mAP为0.88。加载网络模型权重验证模型可行性。测试结果如图9所示。
图9 空心杯电枢图像缺陷检验结果
表3 空心杯电枢缺陷检验结果
表3说明本次实验使用72.6 s以88%的正检率完成了对50个空心杯电枢缺陷样本的检测。结果证明本文提出的方法适用于空心杯电机电枢表面缺陷的在线实时检测。检测结果出现了漏检现象,这是由于空心杯电枢表面孔洞缺陷过小不易检测,而且与采集的图像质量以及人为标注的主观感受这些因素也有关系。在今后研究中,可运用增加卷积层或提取双层图像特征提高缺陷识别率。
3 结束语
为了解决空心杯电机电枢表面孔洞缺陷难以检测的问题,本文提出一种基于YOLO_v4网络框架的表面缺陷检测方法。以CSPdarknet53作特征提取网络,增加SPP模块,扩展感受野的范围。去掉全连接模块,降低训练难度。搭建实验平台采集数据并验证算法。测试单张图片耗时1.452 s,识别精度达到88%。结果证明,YOLO_v4目标检测算法能够满足空心杯电机电枢生产线检测要求。在实际生产过程中,生产线每道工序的异常都会产生各种缺陷,本文仅检测了细微的孔洞缺陷,在今后研究中,结合多种目标检测方法对工件的质量缺陷问题进行深入研究。