张冲伟,张云伟,2*
(1.昆明理工大学信息工程与自动化学院,云南昆明 650500)
(2.昆明理工大学云南省人工智能重点实验室,云南昆明 650500)
瓶装矿泉水在出厂前需要检测是否含有杂质异物(工业上一般规定半径大于50 μm的不溶性物质即为杂质异物[1]),因此检测环节成为生产流水线上的重要环节。目前该环节检测的手段主要是通过人工用人眼去寻找杂质异物,如图1所示。然而,人工灯检需要消耗大量的人力物力,对人眼健康伤害较大,且检测效率低,可靠性差。尽管传统的图像处理方式能够一定程度上缓解该问题,但是其性能依赖于图像的质量,且检测速度慢。因此研究一种高检测率、快速的检测方法具有重要意义。
目前,瓶装液体(白酒、安瓿、大输液)的异物检测方法主要分为基于传统检测、基于视觉、基于神经网络三类。基于传统的检测方法:在早期工作中,由于检测瓶体简单且单一,部分研究者基于传统方法检测瓶装液体中异物。例如,王会昌等人[2]采用超声波检测法检测透明灌装瓶液体中非透明杂质。Michael和 Maurício等人[3,4]利用光电传感器检测液体中悬浮固体。这种方法对瓶身的要求很高,主要针对瓶体都是全新且一致的产品,而且算法复杂度高。基于视觉的方法:部分研究人员将异物检测化为目标提取任务,目标提取通常着重于将图像中的目标与背景分割出来。湖南大学王耀南研究团队[5,6]采用背景减除法对酒类进行异物检测;Ishii等人[7]针对塑料瓶装药液检测采用图像帧间差分法。以上方法能够有效的将瓶装液体中异物和气泡检测出来,但是瓶体表面的缺陷、外包装和液体中气泡对检测精度影响较大。基于神经网络的方法:针对瓶装液体异物的多样性,将异物检测任务看成目标分类任务。Moghadas等人[8]利用多层感知机(MLP)神经网络设计了一种检测医用小瓶的分类器;Zhou等人[9]采用思维进化算法(MEA)对反向传播(BP)神经网络进行优化,设计了一种检测大输液中异物的分类器。但该类方法并没有充分将异物高纬度特征和低纬度特征用于异物检测,造成目标分类不清晰,并且该方法过于依赖样本。随着深度学习能够有效地捕捉目标物的特征,在机器学习领域取得了巨大成就。如果能够将这一技术充分与矿泉水异物检测任务相结合,并针对矿泉水异物固有的特性提出合理的特征提取方法,就能够极大程度上提高检测效率,提升异物检测精度。
本研究旨在创建瓶装矿泉水异物数据集、提取具有判别性的瓶装矿泉水异物特征,结合深度学习算法,建立小尺度瓶装矿泉水异物检测模型,为提高瓶装矿泉水质量提供可靠的理论基础和技术支持。
通过查阅相关文献可知,关于瓶装矿泉水异物检测的研究鲜有报道,所以目前还没有针对瓶装矿泉水异物公开数据集。因此,本文设计瓶装矿泉水异物检测方案采集数据集。具体来说,每次将四种不同的异物随机放进360 mL规格的空矿泉水瓶中,再将其放入数据采集装置。接下来,利用京航USB2.0带缓存系列COMS工业相机JHSM300f和LED可变聚焦灯获取矿泉水异物图像。
1.1.1 图像采集装置结构
本文设计的瓶装矿泉水异物数据采集简易装置主要由LED可变聚焦灯、传送带、转动轮、暗箱、摄像机、推杆、控制器、电机控制装置、齿轮和活动挡板等10个部分组成,如图2所示。摄像头在暗箱顶部,拍摄角度正对瓶装矿泉水样本,推杆和控制器位于入口处传送带的一侧,传送带与暗箱内的转动轮相接用于传输待测样本,在转动轮的另一侧设置电动门,LED光源安装在两个转动轮中间,活动挡板置于瓶装矿泉水入口处,电机控制装置布置在转动轮一侧。
1.1.2 图像采集工作原理
(1)采集送样:待检测瓶装矿泉水通过传送带进入暗箱送到两个转动轮上,电机控制出口端一侧的转动轮顺时针转动,电机驱动齿轮带动入口端一侧的转动轮,控制器控制两根转动轮的转速差,使得瓶装矿泉水能够低速顺时针旋转,滚动作用使瓶中的异物处于运动状态,在光源照射下,由于异物颗粒表面对光线的漫反射作用,目标整体清晰明亮,在视觉传感器采集的图像中有较好的成像效果。
(2)光源照射:LED光源位于两个转动轮后端正中间,光线中心对应瓶底中心,且垂直于矿泉水瓶底部照射,可照射到整瓶水的状态。
(3)图像采集:摄像机位于两个转动轮中间正上方暗箱顶部,拍摄方向与LED光源方向垂直,即在水瓶正上方拍摄图像。数据采集时,该装置暗箱四周封闭,样本进出口均由活动挡板构成,使得图像采集在只有LED光源照射环境下进行,既可以清晰地捕捉到质量好的目标图像,又简化了后续图像处理时对复杂背景的处理。此外,为避免瓶外标签遮挡,应在粘贴瓶外标签工序前完成数据采集。
(4)样本输出:瓶装矿泉水异物数据采集完成,控制器控制齿轮转速差,将样本由转动轮上运输至传送带上,最后经过活动挡板输送至暗箱外。至此,单个瓶装矿泉水异物数据采集完毕。
1.1.3 瓶装矿泉水异物数据集
一共采集挑选了1000张样本,如表1所示,并使用Labelimg软件标注,制作了瓶装矿泉水异物小目标检测数据集,将其命名为 BFBSOD(Bottle Foreign Body Small Object Detection)数据集,如图3所示。从左往右图a、b、c、d中勾选框中的异物分别为毛发、橡胶、蚊虫、塑料,从图3中可以看出,异物在照明系统下的成像较为清晰。
表1 数据集Table 1 The data set
数据集的扩增可以增加训练集样本,加强网络学习到更鲁棒性的特征,从而使模型拥有更强的泛化能力。当前,常用的数据集扩增方式主要包括对图片的裁剪、平移、改变亮度、加入噪声、旋转角度以及镜像等。本文结合异物目标的颜色特征提出了一种通道重组的方法对数据扩增,针对同一种异物,将采集的图像RGB三通道拆分,再重组,能够得到RBG、GRB、GBR、BRG和BGR等5种图像,如图4所示。
通过采用提出的数据集扩增方法,将数据集扩增至 6000张。本文采用随机划分的原则,将数据集以2/3、1/3的原则进行划分,2/3其中为训练集,1/3为测试集。
对目标物进行判别性表征是提升识别性能的关键因素。为此,构建了一个深度卷积模型提取样本特征。具体来说,该深度模型主要以Darknet-53[10]为基本框架,包含53个卷积—归一化—激活块。此外,考虑到梯度消失的问题,在这个模型中借鉴残差连接的思想,在块与块之间设置了快捷链路操作,即将块的输入和输出进行加和操作。首先,将图像送进Darknet-53网络以提取特征,在此基础上,利用聚类算法计算出先验框的大小。具体步骤如下:
(1)在瓶装矿泉水数据集上随机选取一个样本点,作为第一个聚类中心点。
(2)把每个样本点与它最近的一个聚类中心点之间的距离计算出来,记作D。
(3)选取概率大的样本点作为聚类点。
(4)重复步骤(2)和(3),直至第K个聚类点选出为止。
如公式(1)和(2)所示:
式中:
boxpred——预测框;
boxtruth——标注框;
area——面积。
通过上述算法对数据集进行聚类,得到了3种尺寸 anchor box,大小尺寸分别为(3*4),(3*6),(5*5)。
获得上述先验框后,在提取的特征图上利用先验框对异物进行类别预测。为了保证特征的判别性,利用交叉熵损失进行约束以赋予网络识别物体类别的能力,目标函数如下式(3)所示:
除了分类损失,还有坐标误差如下式(4)所示:
式中:
B——box的数量;
Lcoord——坐标的宽高误差;
x、y、w、h——物体的坐标值。
通过上述两个约束,能极大程度上保证提取特征的判别性,赋予网络对样本具有提取判别性表征的能力。
随着深度卷积神经网络层数不断的加深,特征图中包含的语义信息不断提高。但不断的卷积与池化使得大量的空间信息和细节信息被丢弃。导致目标定位精度降低甚至小目标无法被感知。尤其对于矿泉水异物而言,其尺寸较小,在图像中占比少,因此网络难以提取具有细粒度信息的特征。为缓解该问题,设计了小尺度特征学习机制。
具体来说,在8倍降采样层一个尺度上建立小目标特征检测层。同时,特征图尺寸放大的方法采用尺度转换法,将尺度转换(scale-transfer)模块可以嵌入到Darknet-53网络中,scale-transfer没有做卷积操作,减少了计算量和卷积层的参数个数。scale-transfer将特征图中每个像素的N2个通道排列成一个N*N大小的区域,这个像素通道形成的正方区域就是高分辨特征图的一部分,将低分辨图像中所有像素排列形成的方块组合到对应的高分辨率特征图上,就完成了特征图放大,整个过程没有卷积操作,转换速度快。
低分辨特征图输入维度为H×W×C×r2,其中H和W是特征图的长和宽,输入特征图的通道数C×r2,C是输出特征图的通道数,r是升序比例,本文设置r=2,输出的高分辨特征图尺寸为2H×2W。特征图转换示意图如图5所示。
从图5可以看出,通过改变通道数的数量来改变特征图的尺寸大小。数学表达公式(5)如下:
式中:
IHR——大尺寸特征图;
ILR——小尺寸特征图。
因此,将提取到的低维度特征与高维度特征互补融合能得到特征性表达能力更丰富的特征[11-13]。当前,很多目标检测算法通过融合多层特征来提升检测性能,本文采用concat系列特征融合,直接将两个特征进行张量拼接,获得小尺度目标检测特征,以此建立小目标检测层。因此小目标检测模块的损失函数如下式(6)所示:
本文提出方法的网络结构如图6所示,提出的方法主要包含三个模块,分别为特征判别性学习模块,数据集增值模块以及细粒度信息获取模块。
1.5.1 实验参数设置
实验所用计算机配置为 Linux操作系统,i7 9700KF处理器(3.6 GHz),深度学习框架为Torch1.4,GPU为GTX2070Super,8G显存。在此次实验中,本文将批大小设为4,epochs设为180轮,学习速率设置为 0.009,动量设置为 0.9,权重衰减值设置为0.0005。采用动量优化器[14](Adam)对网络参数进行更新。
1.5.2 性能指标
本次实验使用mAP、R和f/s等指标作为评估算法性能。f/s表示每秒检测图像的帧率、mAP指所有类别C检测精度的均值,一个类别的检测精度用AP(Average Precision)表示、召回率R预测结果中被正确预测正样本与样本的比值。它们的计算公式(7)如下:
由于各地油品性质、组分、密度等不同,难以找到一种普适的油品掺混黏度预测模型[3],于是一些学者在大量实验或半理论的基础上,对现存的一些模型进行修正,如利用两种组分原油各占一半的混合原油黏度为基础进行修正而得到一些新的模型。根据黏度的函数形式不同,大体上可分为以下4类模型。
式中:
P——精确率;
TP(True Positive)——真正例;
FP(Flase Positive)——假正例;
FN(Flase Negative)——假负例;
NC——C类划分精确率(Precision,P)和召回率(Recall,R)最大值的数量;
P(rc)——在第C类召回率rc时的P值。
2.1.1 已有研究对象对比
国内外研究矿泉水异物检测的团队非常少,盛子夜等人[15]采用帧间差分法检测瓶装矿泉水中悬浮物。该方法先通过差分法检测到异物,然后对处理后的图像中异物进行数量和尺寸大小的分析统计。但是作者没有表明具体的检测准确率,因此,一方面从算法的流程进行分析。1)抗干扰能力。差分法对照明的均一性要求较高,相机捕捉的连续帧图像光照饱和度要保持一致;2)消除抖动。消除瓶装矿泉水碰撞带来的抖动增加了算法的复杂性;3)降低误检率。瓶装矿泉水中的气泡易被当成异物检测;4)检测异物时间。检测时间主要包括,连续帧图像的获取时间、人工挑选图像时间、差分后图像的预处理时间,检测异物时间消耗较长,对于实际的生产应用存在一定的局限。另一方面从实际测试效果进行对比,由于差分法需要的是连续帧图像,准备50组差分图像进行测试,一组样本图像如图7所示。实验从检测的准确率和时间进行比对,结果如表3所示。
表2 已有方法对比实验结果Table 2 Existing methods compare experimental results
从表2中可以看出,本文提出的方法准确率比差分法高出7个百分点,差分法所需时间是本文方法的9.6倍。综上测试结果可知,本文提出方法整体性能高于差分法。
2.1.2 相关方法对比
表3 瓶装矿泉水异物检测对比实验结果Table 3 Comparative test results of foreign matter detection in bottled mineral water
在这一部分,我们将本文提出的方法与目前一些较为先进的目标检测方法进行实验对比,从实验结果证明了本文方法的有效性。需要说明的是,由于目前没有基于深度学习的瓶装矿泉水异物检测的相关工作,因此在这一部分,本文在SSD和YOLOv3模型上进行比较,结果如表3所示。
从表3可以看出,本文提出的方法平均精度值为83.84%,高于YOLOv3的61.13%和SSD的54.51%;召回率为86.31%,较YOLOv3提高了19个百分点,较SSD提高了29个百分点;本文模型的平均帧率达到50 f/s,小于SSD模型,但是从处理速度上来看,能够满足瓶装矿泉水异物检测任务要求。
提出的方法主要包含判别性特征学习、数据集增值、小尺度目标检测等模块。在这一小节中,进行了一系列实验用来验证各模块的有效性。每一模块的结果如表4所示,需要说明的是,为了便于展示,用字母A和B分别表示数据集增值模块和细粒度信息获取模块。首先,应该基于判别性特征学习模块对有标签原数据集进行训练得到基准线(Baseline),然后再将A和B两个模块部署在模型上。
表4 消融实验结果Table 4 Ablation test results
数据集增值模块的有效性:为了证明A模块的有效性,将A模块与Baseline相互连接,由表4所示,相比于Baseline,加入A模块后,在瓶装矿泉水异物检测任务上,mAP值和召回率R分别提升了18.32%和9.89%,有效的证明了该数据集增值的方法能够增强模型的泛化能力。
细粒度信息获取模块的有效性:如表4所示,加入了B模块以后,提出的方法在异物检测任务上mAP值和R分别提升了4.39%和9.19%,同时,由于先验框的减少,将检测速度提高到了50 f/s。可见,提出的方法能够从图像中提取到更具表征的特征。
为了评估模型的具体检测性能,本文在测试集中各挑选50张含有橡胶、塑料、蚊虫、毛发样本数据分别送入YOLOv3和本文提出的模型进行检测,模型对200张样本的检测结果如表5所示。本文方法检测的平均准确率相比于YOLOv3提高了10个百分点,达到了96.22%;对橡胶、塑料、蚊虫、毛发四类异物的检测上准确率均有所增加。可视化效果如图8所示。
表5 不同方法下的检测率Table 5 The detection rate under different methods
为了方便,将异物标签 foreign matter简写成matter,图中的bubble代表的是瓶中产生的气泡,如图8所示,matter代表的是检测到的异物(橡胶、塑料、蚊虫、毛发)。图8a、8c是YOLOv3分别对蚊虫和橡胶检测的效果图,从图 8a中可以看出 YOLOv3对蚊虫的检测存在漏检的情况;对橡胶的检测整体置信度是比较低的,而且对气泡的检测效果也是不理想。反观本文方法对同一目标的检测能够达到预期的效果,能够有效的检测出蚊虫和橡胶。
如图8a、8b所示,对同一个异物,改进后算法得到的异物置信度为0.66,低于YOLOv3的0.80。为此,对200张测试样本的异物置信度进行了统计,改进后异物置信度低于YOLOv3的只有7张。经实验分析,置信度反而下降的主要原因如下:YOLOv3能提取到图8a中右下角的异物,提取到的异物特征单一,对一些特定的异物识别率较高;而本文方法对图8a中的两个异物特征都能提取,使得提取到的该类异物特征较为丰富,异物的综合特征增加,提高了模型对异物的检测率,但是图8a中同一种异物表现出的特征差异较大,就会导致模型对该类异物置信度下降。总体来看,论文方法改进后,与YOLOv3相比,多数预测框的置信度得到提高,即在整个样本数据集上预测框置信度的期望值得到了提高,但不排除在个别样本数据上出现比YOLOv3低的情况。
针对瓶装矿泉水异物检测,本文设计了一个小尺度特征提取模块用于表征瓶装矿泉水中异物细粒度信息。具体来说包含三个模块:判别性特征学习模块利用深度Darknet-53网络对数据进行表征学习;数据增值模块主要通过通道随机打乱和重组的方式对 RGB图像进行处理以增强样本的多样性;考虑到细粒度特征能够进一步对识别性能的提升起积极作用,设计了一个小尺度特征学习机制以提取具有细粒度的判别性信息。最后,实验结果表明,瓶装矿泉水异物检测的mAP值达到83.84%,召回率为86.31%,检测速度为50 f/s,测试平均准确率为 96.22%。此外,对已有的瓶装矿泉水检测方法进行测试对比,从检测的准确率和速度上证明了该方法的优越性;消融实验验证了提出方法中模块的有效性。因此,本研究为瓶装矿泉水异物检测提供了可靠方法和技术指导。