基于改进的RetinaNet医药空瓶表面气泡检测

2020-12-04 01:54吴华运任德均吕义钊
关键词:空瓶瓶颈气泡

吴华运, 任德均, 吕义钊, 胡 彬, 付 磊, 邱 吕

(四川大学机械工程学院, 成都 610065)

1 引 言

医药空瓶在生产制造过程中表面会出现气泡类缺陷.气泡的存在不仅会影响产品外形包装的美观,而且会影响产品的销售和使用.因此,对表面存在气泡的空瓶进行检测在工业生产过程中有着重要意义.传统的检测往往由人工来完成,不仅工作量大、劳动强度高,而且容易受到检测人员主观因素的影响,导致检测效率和检测精度都不能够保证.基于机器视觉的检测系统由于检测精度高等优点已经被广泛的应用在瓶体表面缺陷检测领域,但在实际应用中也遇到许多问题和挑战[1].传统特征提取算子提取的特征通常处于较低水平,在针对复杂的场景变化,如光照变换,透视失真,遮挡,物体变形等情况下,所提取的特征通常不足以应对这种情况,因此许多算法在实际环境中并不适用.除此之外,医药空瓶在拍摄过程中,由于气泡缺陷自身的透明特性和瓶身位置的不确定性,使其在图片上成像并不明显,给传统的特征提取带来很大的挑战.

深度学习,特别是卷积神经网络[2],已经被证明在提取图像特征方面有着强大的能力,在各种监督问题上都达到了最高的精度,如物体分类[3],目标检测[4],语义分割[5]等.相比传统的空瓶表面缺陷检测,深度学习提取的特征可以达到更好的效果,同时它不需要将特征提取和分类训练分开进行,它可以在训练过程中实现自动提取最优特征.近年来,深度学习已经广泛应用与工业检测,文献[6]提出一种基于正样本训练的新型缺陷检测框架,他们将GAN和自动编码器结合起来用于缺陷图像重建,并使用LBP[7]进行图像局部对比以检测缺陷.文献[8]提出使用两个FCN语义分割网络来检测物体表面缺陷,一个FCN用来粗略定位,另一个FCN用来精准定位,实现了准确地绘制缺陷轮廓,并达到实时检测缺陷的效果.

本文针对传统算法在医用空瓶表面缺陷检测中存在的局限性进行了简单的分析,首先提出将深度学习目标检测算法RetinaNet[9]应用于空瓶表面缺陷检测,并对RetinaNet网络进行改进,大大提高了检测精度.本文主要工作如下.

(1) 对特征金字塔网络进行了改进.传统的FPN仅将高层和底层输出网络简单的合并,并未考虑对融合后特征图的进行语义特征的提取.针对这种情况,本文在特征融合过程中增加了膨胀卷积操作,增强对语义特征的提取,提高特征的判别性和鲁棒性;

(2) 本文以RetinaNet作为基础检测算法,在训练和测试过程中,本文仅利用FPN网络中P3,P4,P5和P6等四个阶段的特征图来分类和定位缺陷,并去除了原网络中用来检测较大目标的网络结构,降低网络的计算量,加快模型的训练速度;

(3) 对ResNet50网络结构进行了优化.在ResNet50骨干网络中增加了Layer5,并使用膨胀瓶颈模块替换Layer4和Layer5中的普通瓶颈模块.这样可以保证特征图尺寸不变的基础上增大特征图的感受野.

2 基于RetinaNet的空瓶表面缺陷检测

本文采用RetinaNet算法实现对医药空瓶表面缺陷的检测,具体结构如图1所示.由图可知,RetinaNet算法由ResNet网络[10],FPN网络[11]和分类定位子网络构成,ResNet网络主要用来提取特征,FPN网络将提取的特征图进行重新组合,实现特征的精细化提取,分类定位子网络用于目标的分类和定位.输入图片首先经过ResNet网络提取特征,然后通过FPN网络实现高层特征和低层特征之间的融合.最后使用分类定位子网络完成分类和定位.

图1 RetinaNet 网络结构Fig.1 The structure of RetinaNet

在分类子网络中,常用的损失函数为交叉熵损失函数.在RetinaNet网络中,为了解决正负样本不平衡现象,引入参数α,用来控制正负样本对总分类损失的贡献权重,新损失函数定义如下[13].

CE(Pt)=-αtlog (pt)

(1)

其中,定义Pt为

(2)

式中,y∈{±1}为真实标签类别;p∈[0,1]为类标签y=1的概率值.

针对难例问题,在新损失函数中加入调节因子(1-pt)γ,其中,γ为聚焦参数,因此,Focal Loss损失函数定义为

FL(Pt)=-αt(1-pt)γlog (pt)

(3)

(4)

(5)

3 模型结构

3.1 膨胀瓶颈模块

随着网络层数的增加,使用标准卷积层将要训练大量的参数,模型参数越多,运行所需要的消耗的资源越多.针对这种现象,常用的解决方法是将标准卷积层和1×1的卷积相结合,通过中间产生一个瓶颈层,达到减少参数和计算量,加快网络模型的收敛,如图2(a)所示[14].在本文中,为了扩大特征图的感受野,引进了一种新的瓶颈模块结构,即替换标准瓶颈模块中的3×3标准卷积层为卷积核为3,膨胀系数为2的膨胀卷积,形成了膨胀瓶颈模块[15],如图2(b)所示.除此之外,在膨胀卷积模块的shortcut的分支中加入1×1的卷积映射得到1×1卷积映射的膨胀瓶颈模块,如图2(c)所示.这种模块结构可以在不增加参数量的条件下,可以有效的扩大特征图的感受野.

图2 网络的基本结构模块

3.2 改进 FPN网络

特征金字塔网络(FPN)通过自上而下的路径和横向连接可以实现网络特征提取更加精细化,网络从单分辨率输入图像中可以有效地构建一个丰富的多尺度的特征金字塔.FPN的设计思想就是同时利用低层特征和高层特征,在不同的层上同时进行预测.因此其检测过程是通过在原始图像上先进行深度卷积,然后分别在不同的特征层上面进行预测.传统FPN的低层特征和高层特征融合方式简单地将高层语义特征和低层细节特征相加,但这种方式获得的特征鲁棒性不强,都是一些弱特征.为了提取到尺度和形状不变的强特征图,本文在特征融合之后增加了特征增强模块(Feature Enhance Module),通过采用具有不同扩张率(r=1,3,5,7)的膨胀卷积来捕获不同感受野的语义信息.然后让不同膨胀卷积得到的特征与1×1卷积后特征组合起来,得到最终用于检测的特征图,如图3所示.

图3 改进的FPN特征融合方式Fig.3 Improved FPN feature fusion

定义改进后的FPN计算方式为

Pj=fconcat(fdilation(fadd(Cj,fup(Ci))))

(6)

式中,Ci表示高层特征图;Cj表示低层特征图;fup(·)表示特征图Ci上采样函数;fAdd(·,·)表示特征融合函数;fdilation(·)表示膨胀卷积操作;Pj表示经过上采样,特征融合以及膨胀卷积后得到的特征图.

3.3 ResNet网络

深度学习目标检测对骨干网络的设计通常存在两大难题:(1) 保持深度神经网络的空间分辨率会极大地消耗时间和内存;(2) 减小下采样因子将会导致有效感受野的减少.为了解决这两个难题,本文的网络结构单元采用了DetNet[15]中的膨胀瓶颈模块结构.除此之外,在使用原始RetinaNet算法对空瓶气泡缺陷进行研究中发现,较小的气泡缺陷在经过多次降采样后,特征逐渐消失.为了解决这种现象,本文对ResNet50进行重新组合形成改进后ResNet50网络,如图4所示.

对于ResNet详细改进细节说明如下.(1) 将原始ResNet50中Layer3中的6个瓶颈层减小为3个,并在Layer4后面增加一个layer5,Layer5设置为3个膨胀瓶颈模块.因此,改进后ResNet从Layer1到Layer5的瓶颈模块数依次为3,4,3,3,3;(2) 保持前3个Layer的瓶颈模块类型不变,对Layer4和Layer5中的瓶颈模块使用膨胀瓶颈模块进行替换,这样可以有效地扩大感受野.为了减小膨胀卷积带来的时间损耗,本文设置Layer4和Layer5拥有和Layer3相同的输入通道数(256个输入通道);(3) 修改了ResNet50网络每一阶段输出特征图的空间尺寸.相比较于原始的ResNet50的输出步长[2,4,8,16,32],修改后的ResNet的输出步长为[2 ,4,8,16,16,32],保持Layer3和Layer4有着相同的特征图输出尺寸,有效地防止因下采样而造成感受野的减小.

图4 优化后ResNet50网络详细结构

4 实 验

4.1 实验设置

数据集:本文数据集为在线采集的瓶身气泡缺陷图片,对图片缺陷使用LabelImg进行标注,对被标注后的数据集进行训练测试设置如表1所示,其中在训练设置中,训练集和验证集均为带有气泡缺陷的图片,而测试数据集中含有500张正常图片.

表1 训练测试数据详细设置

性能评价指标:为了评估检测的效果,我们通过使用准确率(Accuracy),漏检率,误检率和均值平均精度(mAP)等性能评价指标对检测效果进行了评估.

(7)

(8)

(9)

其中,TP表示被正确预测为缺陷数目;FP表示为错误预测为背景的数目;FN表示错误预测为缺陷的数目;TN表示正确预测背景的数目;AP表示平均精度,precision表示精准率;recall表示召回率.

训练:本文实验基于PyTorch实现,所有实验均使用Xavier初始化方法对网络模型进行初始化.输入图像大小为300×450×3,.训练过程中,采用多尺度训练方法,并对图片进行随机旋转、平移、剪切等数据增强操作.训练时使用随机梯度下降优化方法进行迭代优化,设置动量为momentum=0.9,权重退化率为weight-decay=0.000 5,输入批次batchsize=16,初始学习率为learning rate=0.000 01,其中每经过60次迭代后学习率下降为原来的十分之一,总共迭代次数为200次.

4.2 模型改进前后结果对比

为了验证改进后的模型结构对注塑空瓶表面气泡检测的有效性,本文分别对原始RetinaNet模型,RetinaNet加改进后的FPN,RetinaNet加改进后的ResNet网络以及本文方法在测试集上的检测效果进行了对比,结果如表2所示.

表2 模型改进前后检测结果

由表2可知,在检测精度方面,改进后的模型相比改进前的模型mAP提升接近2.4%,准确度提高了1.6%,漏检率和误检率分别降低到0.12%和0.16%;在检测速度方面,改进后的模型速度提升了14.18%.对比改进前后的特征金字塔网络的检测结果,可以看出改进后的特征金字塔网络相较于原始特征金字塔网络有更好特征提取能力.对比ResNet 50网络,改进后的网络也有较小幅度的提升.

本文算法在医药空瓶数据集上的部分检测结果和原始RetinaNet检测结果如图5所示.

图5 本文算法检测结果和原始RetinaNet检测结果对比第一行图片为Ground Truth;第二行图片为RetinaNet算法检测结果;第三行图片为本文算法检测结果.Fig.5 Comparison of detection results between the algorithm in this paper and the original RetinaNetThe first row: Ground Truth; the second row: the detection results of RetinaNet; the third row: the detection results of ours.

由图5可知,相较于原始RetinaNet网络,本文算法有更好的定位能力,尤其对于粘连气泡缺陷.

4.3 不同目标检测模型检测效果对比

为了进一步验证本文检测算法对于医药空瓶表面气泡缺陷检测的有效性,本文通过将本文算法与当前主流的目标检测算法Faster RCNN、SSD以及YOLOV3等算法进行了对比,通过在医药空瓶气泡数据集上对上述算法进行训练和测试,结果如表3所示.由表3数据可知,相较于Faster RCNN、SSD和YOLOV3,本文提出的算法有更高的mAP和准确率;在检测速度上,本文算法优于Faster RCNN和SSD算法,但略低于YOLOV3的检测速度.

表3 不同模型检测效果对比

5 结 论

本文使用深度学习中最先进的目标检测算法RetinaNet对医药空瓶表面气泡缺陷进行了检测.为了满足工业检测所需要的准确度,本文先对原始特征金字塔网络的特征融合过程进行优化,增加了语义特征提取模块,有效地增强了对特征图语义信息的提取和扩大特征图的感受野.然后,去掉特征金字塔网络用于检测大目标的网络层,从而减小网络的参数量和降低训练过程中的计算消耗.最后,在ResNet网络中添加了膨胀卷积瓶颈模块,有效地提高了特征图的感受野和特征的鲁棒性.通过上述改进,在满足检测时间的条件下,检测准确率较未改进网络提升了1.60%,漏检率降低到0.12%,误检率降低到0.16%.相较于传统的检测方法,本文提出的方法有较高的优势.

猜你喜欢
空瓶瓶颈气泡
堵塞:绿色瓶颈如何威胁清洁能源业务 精读
SIAU诗杭便携式气泡水杯
浮法玻璃气泡的预防和控制对策
满瓶不响空瓶响
分批换VS一次换
冰冻气泡
在突破瓶颈中成长
买酒还瓶
动动脑,你能喝几瓶?
再论校园足球发展的瓶颈