APP下载

改进YOLOv3算法的筷子毛刺缺陷检测方法

2020-05-11陈俊松何自芬张印辉

食品与机械 2020年3期
关键词:查全率毛刺梯度

陈俊松 - 何自芬 - 张印辉 -

(昆明理工大学机电工程学院,云南 昆明 650500)

筷子在中国有着巨大的市场需求,据不完全统计[1],中国目前每年大概需要消耗450亿双一次性筷子,因此筷子加工质量检测技术有着很大的市场需求。目前,中国的部分中小型筷子加工制造企业仍然采用人工检测的方法,随着筷子生产效率的进一步提高,传统的人工检测方法已经不能满足生产的需求。也有一部分中大型企业采用质检机检测,但现有的筷子质检机大多通过光纤检测出弯曲、细、半截料、发黑、发霉等不合格产品,再通过PLC(处理器)控制气动电磁阀自动去除不合格的产品,但不能对带有毛刺的筷子进行准确分拣。

卷积神经网络是一种常用于分析和处理视觉数据的深度学习模型或多层感知机,先由卷积层对图像进行特征提取,再通过分类器对卷积层所提取到的特征进行分类。由于卷积神经网络具有简单、高效的特点,因此近年来卷积神经网络得到了快速发展,越来越多的传统工作中开始运用机器视觉与图像处理的方式来代替原来人眼的劳动[2],例如针对自然场景下苹果图像的检测需求,程鸿芳等[3]提出了一种基于改进LeNet卷积神经网络的苹果目标识别模型,并利用该模型对不同场景的苹果图像进行识别训练与验证,试验结果表明该算法具有较强的抗干扰能力,图像识别速度快、识别率更高。胡小慧等[4]提出基于图像分割的筷子瑕疵检测研究,利用图像处理技术对筷子图像进行增强、边缘检测及图像分割,获取筷子图像的RGB数据;对RGB三通道所占百分比及百分比方差进行统计分析最终能够对青皮、色斑、烧焦3种瑕疵进行处理分析。

笔者拟提出一种基于改进YOLOv3(You Only Look Once,YOLO)算法的筷子毛刺缺陷检测方法,通过对YOLO算法的改进得出一个检测效果更好的网络模型,以解决带毛刺筷子的检测问题,进一步提高筷子加工业的自动化水平。

1 YOLO的介绍

YOLOv1算法是由Redmon等[5]于2015年提出的,它主要是采用直接回归的思想,对输入的图像进行S×S的网格划分,通过物体中心所在网格对其进行预测,每个网格需要预测B个边界框以及C个类别概率。YOLOv1算法通过设置阈值过滤掉概率低的候选框,再对保留的候选框进行非极大值抑制,得到最终的检测结果。该法存在诸多缺点,如对于密集的小目标种群以及近距离目标的检测效果不理想;检测结果的定位误差较大等。

Redmon等[6]针对YOLOv1缺点进行了改进,提出了YOLOv2网络模型。YOLOv2网络主要是在分类的准确度不变的情况下,提高了网络的查全率以及定位精度。YOLOv2模型通过提高训练图像的分辨率;在网络中添加 Batch Normalization 层,从而提高网络收敛性,同时还消除了其对其他形式的正则化的依赖。取消全连接层,使用anchor boxes来预测目标方框等措施进行改进。YOLOv2网络包含了19个卷积层以及5个最大池化层,所以也被称为Darknet19,最终YOLOv2模型在识别精度、定位精度、查全率等方面都有较大的提高。

针对两个近距离的同类或者异类目标的检测这一问题。很多新的算法不断地被提出,YOLOv3便是其一,YOLOv3网络在近距目标与小目标的检测上有很好的鲁棒性,在一定程度上解决了这一问题。YOLOv3网络是在YOLOv2模型的基础上,针对YOLOv2模型的一些问题又作了一些改进,连续使用3×3和1×1卷积层;参考残差网络,在新的网络的一些层之间添加快捷链路,形成一个深度达到53层的网络;利用多尺度特征进行对象检测,通过获得不同尺度的感受野,来加强对不同尺度对象的检测;用能够支持多标签对象的Logistic分类器替换YOLOv2模型中softmax分类器[7]。经过改进最终提出了YOLOv3模型[8],也被称Darknet53。

2 改进的YOLO算法

文中通过删除YOLOv3网络多尺度检测中的32倍降采样的检测层、在YOLOv3网络中增加4倍降采样层,进一步得到深层特征并与第二次降采样中的浅层特征进行融合,让网络同时学习深层和浅层特征后进行检测,重新聚类与待检测目标最合适的anchor box尺寸、改变YOLOv3网络的超参数,减小抖动、减小权重衰减正则项、选择合适的动量值等方法对原网络进行改进。最终得到相对于原来的网络具有更高的平均精度、查全率、查准率、检测速度以及平均交并比(intersection over union,IOU)的新的网络模型。

YOLOv3原网络中参考SSD[9]的思想分别在32倍降采样、16倍降采样、8倍降采样等3个不同的地方进行了3次检测。其中32倍降采样的感受野最大,主要是用于大型目标的检测,而16倍降采样适合检测中等大小的物体,8倍的感受野最小,则是主要是用于小型目标的检测,由于筷子毛刺属于中小目标检测,因此文中删除了原YOLOv3网络中32倍降采样时的YOLO检测层,获得新的网络模型。

网络层越深,特征表达效果越好。在YOLOv3网络中使用up-sample(上采样),能使16倍降采样和8倍降采样使用深层特征。YOLOv3网络为了让网络同时学习深层和浅层特征,获得更好的表达效果,因此使用route层把16倍采样得到的feature map与第4次下采样得到的浅层特征进行融合,将8倍采样得到的feature map与第3次下采样得到的浅层特征进行融合。为了使网络得到更好的检测效果,在8倍采样后面增加了一个具有更小感受野的4倍降采样,并利用route层使其与网络中的第2次下采样的浅层特征进行融合然后用于YOLO层的检测,相对于原网络,改进后的网络平均检测精度提升了1.5%、查准率提高了5.0%、查全率提高了1.0%。

Anchor box的作用是解决传统检测中,一个窗口只能检测一个目标以及多尺度预测的问题。YOLOv3先验框与Faster R-CNN[10]和SSD的设定方法不同,Faster R-CNN和SSD采用人工设定的方法,在YOLOv3中采用K-means聚类的方式确定Anchor box尺寸。K-means算法是基于距离的聚类算法,基本思想是随机选取初始聚类中心,再计算每个样本点到初始聚类中心的欧式距离,按照距离最近的准则将它们分配给相似度最大的聚类中心所代表的类。计算每个类别所有样本点的均值,更新聚类中心,直到目标准则函数收敛为止[11],见图1。通过K-means聚类的方法重新计算了多组,并与文中数据集相适应的且在416×416网络输入下的anchor box尺寸。当anchor box尺寸为4,7,7,15,10,13,16,30,33,23,30,61,62,45,59,119,116,90时的网络相对于原网络的平均检测精度提升了2.6%、查准率降低了2.0%、查全率提高了6.0%。

图1 K-means聚类法示意图

利用数据抖动产生更多数据,防止过拟合。抖动是裁剪的参数,抖动0.1,就在0.0~0.1中裁剪。试验中当抖动为0.1时,改进后的网络相对于原网络,平均检测精度提升了4.31%、查准率提高了2.00%、查全率提高了8.00%。抖动为0.1时裁剪效果如图2所示。

图2 裁剪效果示意图

在损失函数中加入一些正则项可以防止网络的过拟合。在随机梯度下降(SGD)[12]中加入正则项对损失函数进行规范化:

(1)

Z=wx+b,

(2)

式中:

λ——权值衰减参数;

ωi——权重;

b——偏置;

Z——输出值;

E——损失函数;

η——学习率。

由式(1)可知,权值衰减参数λ增大,权重ωi则会衰减。由式(2)可知,权重ωi的衰减使得Z值不断减小,实际上Z的取值范围很小,因此激活函数会相对线性,整个神经网络会计算离线性函数近的值,这个线性函数相对简单且不会发生过拟合。权值衰减参数λ越大对过拟合的抑制能力越强。在文中通过网络搜索的方式对0.001 5、0.000 5(基准)、0.000 3、0.000 2、0.000 1 5组参数进行训练,结果显示,当权重衰减正则取0.000 1时改进后的网络相对于原网络,平均检测精度提升了5.0%、查准率提高了4.0%、查全率提高了9.0%。

动量影响梯度下降到最优值的速度,由式(3)可知梯度下降法参数的更新只与当前梯度有关。但动量梯度下降法是先求每个mini-batch的梯度,然后再进行指数加权平均得到新的参数V与V用以更新之前的参数,由于指数加权平均后的梯度中含有之前梯度的更新方向的信息,所以利用指数加权平均之后的梯度对参数进行更新得出最终的更新方向,是一种较优的梯度下降方法,其过程如式(4)所示。动量梯度下降算法不仅能够增加稳定性而且还能避免局部最优。若当前梯度与历史梯度一致则增强此梯度,反之则梯度衰减抑制震荡,其作用效果如图3所示。通过试验,当动量取0.9时,平均精度达到最大值。

(3)

(4)

式中:

W——权重;

b——偏置;

α——步长;

β——加权参数;

V——指数加权平均数。

图3 梯度下降示意图

3 超参数优化结果

表1中所列为Anchor box尺寸、权重衰减正则项、抖动、动量4个参数的不同取值组。用darknet53.conv.74预训练权重对表1中的不同参数依次由上往下,逐步使用网络搜索的方法进行训练,每次训练次数为4 000次,使得网络的平均检测精度、查全率、平均IOU、F1-score逐步得到提高,最终得到更优的网络模型。

通过网络搜索的方式对数组参数分别进行训练,取到其中的最优值。通过试验所确定的各组最优参数见表2。

表1 试验参数取值

表2 试验最优参数

4 试验与结果讨论

4.1 数据集的准备

数据集主要通过相机拍摄的方式获取。文中的数据集全部是来源于C型一次性竹筷。为了增加模型的泛发性和训练精度,文中数据集在获取图像时,增加了许多不同形态特征、不同角度、不同位置的筷子毛刺的图片。筷子上既可能包含特征较为明显的毛刺也可能包含特征不明显的毛刺(见图4)。毛刺可能出现在筷子上的任何位置,且由于拍摄角度和筷子本身姿态的影响,同一个筷子毛刺可能会在图像中表现出不同的特征(见图5)。筷子上的毛刺数量不一,可能只有一个也可能有多个(见图6)。数据集总共包含了303图片,其中222张图片作为训练集,81张图片作为测试集。由于筷子毛刺检测环境并不复杂,因此不需要人工制造负样本数据用于网络训练,采用YOLO网络中的Grid Cell机制,来确定相应的正负样本。其作用是通过计算其与一个或者多个Object的Ground Truth Box的IOU,再选择特定阈值对正、负样本进行分类。数据集标注时只标注毛刺这一类缺陷。

4.2 试验平台

试验在 PC端完成。PC主要配置为:i7处理器、电脑运行内存为16G、GPU(GTX-1060)、显存为6G。开发环境为Visual Studio2015,需要配置CUDA9.0、CUDANN9.0、OpenCV3.0和YOLOv3物体检测框架。

图4 不同程度毛刺筷子的示意图

图5 不同姿态毛刺筷子的示意图

Figure 5 Schematic diagram of chopsticks glitches in different poses

图6 不同数量毛刺筷子的示意图

Figure 6 Illustration of burrs with different number of chopsticks

4.3 筷子毛刺缺陷检测工作流程

文中提出的改进YOLOv3算法的筷子毛刺缺陷检测方法具体的检测过程主要有以下几个步骤:① 通过相机获取待检测筷子的图像;② 将获取到的图像传输到训练好的网络模型中进行检测,判断是否具有毛刺;③ 获取模型的检测结果,若未检测到毛刺则为合格,若检测到毛刺则对此筷子进行剔除;④ 对合格的筷子进行收集。工程流程图见图7。

4.4 结果与分析

用改进后的网络模型对darknet53.conv.7预训练模型进行训练,训练次数为4 000次,得到一系列检测模型,其结果见图8。由图8可知,训练到4 000次时检测模型的平均检测精度最高,此时的平均loss值降到了0.070。原网络的训练结果见图9。由表3可知,当IOU为50时改进后的网络的平均检测精度提高了5.0%,查准率提高了4.0%,查全率相比提高了9.0%,平均IOU提高到了3.5%,F1-score提高到了0.92,检测速度由16.8帧/s提升到了21帧/s,从而每小时检测的图像数为75 600张,已经超过了目前市面上筷子质检机每小时70 000只的检测效率。综上所述可知,相比原网络模型,改进后的网络模型在平均检测精度、查准率、查全率、检测速度等各方面都有较大的提升。

图7 筷子毛刺检测工作流程图

4.5 测试对比结果分析

IOU为50时,分别对原网络的检测模型与改进后的最优检测模型进行测试,其结果见图10、11。在图10(a)原网络中从左往右,两处缺陷的检测精度分别为92%,65%。而在图11(a)改进后网络中从左往右,两个空闲车位的检测精度分别提升到了99%,91%。在图10(b)中原网络出现了误检的情况,图中从左往右,3个缺陷的检测精度分别为63%,76%,99%,但图中其实只有两处缺陷,分别为图中的筷子的中部和右部,筷子的左部并无毛刺缺陷,因此出现了误检的情况。而在图11(b)改进后网络中并未出现误检的情况,且图中从左往右,两个毛刺缺陷的检测精度分别提升到了99%、98%。由对比结果可以看出,由于改进后的模型有更高平均检测精度、查全率、查准率、平均IOU以及F1-score,所以检测效果明显优于改进前的模型,不仅检测精度明显提高,且有更高的查全率以及更好的泛化能力,不易发生漏检的情况。

图8 改进后网络训练结果示意图

Figure 8 Schematic diagram of improved network training results

图9 原网络训练结果示意图

Figure 9 Schematic diagram of original network traini-ng results

表3 当IOU为50时最优模型检测结果

图10 原模型的测试结果

图11 改进后模型的测试结果

4.6 与其他目标检测网络的对比

采用具有较快检测速度与精度的SSD神经网络[9]对文中的筷子毛刺缺陷数据集进行了训练检测,并与文中提出的方法进行对比,结果见表4。通过对比可知,基于改进YOLOv3的检测方法与SSD神经网络算法相比,在准确率与检测速率的上都有明显的优势。

表4 不同检测方法的训练结果

5 结语

研究提出了一种基于改进YOLOv3算法的筷子毛刺缺陷检测方法,通过删除YOLOv3网络多尺度检测中的32倍降采样的检测层、在YOLOv3网络中增加4倍降采样层并与第二次下采样进行融合、重新聚类anchor box尺寸、改变YOLOv3网络的超参数,减小抖动、减小权重衰减正则项、选择合适的动量值等方法对原网络进行改进,最终得到了新的网络模型。再利用新的网络模型进行训练,最后得到了一个相对原模型具有更好检测效果的检测模型,当交并比为50时其平均检测精度达到了94%、查准率达到了93%、查全率达到了91%、平均检测速度21帧/s。该方法基本能满足筷子毛刺的检测需求。在后续的研究中将通过进一步改进网络结构等方法继续提高模型的泛化能力和检测速度。

猜你喜欢

查全率毛刺梯度
带非线性梯度项的p-Laplacian抛物方程的临界指标
电化学去毛刺试验研究
去毛刺机飞锤异常损坏原因与预防措施
新视域下金属切削毛刺控制技术实践运用探究
阀芯去毛刺工艺研究
一个具梯度项的p-Laplace 方程弱解的存在性
海量图书馆档案信息的快速检索方法
基于AMR的梯度磁传感器在磁异常检测中的研究
基于词嵌入语义的精准检索式构建方法
基于数字虚拟飞行的民机复飞爬升梯度评估