基于机器视觉和轻量级卷积网络的安瓿瓶包装质量检测算法
2020-10-18任德均胡云起
郜 明,任德均,胡云起,付 磊,邱 吕
(四川大学机械工程学院,成都 610065)
(*通信作者电子邮箱rdjw@163.com)
0 引言
安瓿瓶的包装是使用安瓿瓶作为容器的医用制剂流向市场之前的最后一道工序,对于安瓿瓶包装质量的检测,目前国内仍以人工检测为主,在生产线上设置前后两个人工检测工位:工位1检查安瓿瓶是否贴标,是否漏装;工位2使用称重法复检。人工检测存在速度慢、易受主观因素影响导致准确率低等问题。
相较于人工检测,机器视觉在快速性和准确性等方面有极大优势,因此被越来越多应用于药品包装检测行业。美国Banner 公司[1]在智能相机上采用连通域分析(Blob Analysis)的方法检测特定颜色安瓿瓶包装时的缺瓶和破损;方文星等[2]使用快速鲁棒特征(Speeded Up Robust Feature,SURF)配合支持向量机(Support Vector Machine,SVM)检测铝塑泡罩药品的包装缺陷;国外学者Qasim 等[3]使用人工神经网络(Artificial Neural Network,ANN)对塑料包装药品的包装表面孔洞及内部药片缺陷进行检测。这些基于Blob 分析或使用手工特征组合分类器(如SVM 或ANN)的方法应用于安瓿瓶包装质量检测时存在以下问题:1)安瓿瓶制剂规格众多,药液及标签颜色不尽相同,Blob分析难以处理无色瓶体,手工设计特征也难以完全通用;2)在面对工业现场存在的瓶内药液晃动或玻瓶反光等复杂环境下成像时,上述方法的鲁棒性差。
卷积神经网络(Convolutional Neural Network,CNN)近年来取得了极大发展,尤其是在各种图像分类数据集上验证了其强大的特征提取能力[4]。一般高性能网络的部署会需要高昂的硬件成本,因此使用减少了大量网络参数同时保持了一定精度的轻量级卷积神经网络,可以极大地降低对硬件的要求,使其能在嵌入式平台运行,更适合工业环境中的低成本部署。国内已有相关研究,如:姚明海等[5]提出一种轻量级低延时的卷积神经网络MagnetNet,用来实时检测磁片表面缺陷;张琪等[6]改进了MobileNet对肝部病理组织切片进行分类。
Google 在2017 年提出了MobileNet 系列网络的第一个版本——MobileNetv1[7],设计为面向移动端的轻量级卷积神经网络模型,提出深度可分离卷积(depthwise separable convolution),这种卷积将传统卷积的运算的两步分离开来,先分通道执行按位相乘的计算,再使用1×1 卷积核进行传统卷积运算,这种卷积较传统卷积精度损失不多,但是参数量大幅减 少。MobileNetv2[8]是Google 于2018 年提出的,相较于MobileNetv1 提出了两个方面的改进:一是使用线性瓶颈(Linear Bottlenecks),如图1 中所示的Linear 层。由于MobileNetv1 结构中低维输出层后面的激活函数ReLU(Rectified Linear Unit)会导致信息损失[8],因此MobileNetv2去除低维输出层后的非线性激活函数,使用线性激活函数来保证模型的表达能力。二是使用倒残差模块(Inverted residuals),如图1(a)所示。受残差网络(Residential Networking,ResNet)[9]思想影响,MobileNetv2 中滑动步长Stride为1 的卷积块中使用了旁路短连接,目的是复用低维特征,缓解特征退化情况。与ResNet 中维度先缩减后扩增相反的是其先通过扩张层(Expansion)升维,然后再降维,旁路连接到维度缩减后的特征图。基于这两个改进点,相较于前一版本,MobileNetv2 在参数量减少的情况下,准确度反而提高了,且推理延迟减少30%[8],所以它是一个表现良好的轻量级通用分类模型,具备改进潜力来更加适合特定应用场景。
图1 MobileNetv2的卷积块结构Fig.1 Convolution block structure of MobileNetv2
为了满足本文检测任务以及在生产环境下实现低成本部署、提高生产效率,本文结合传统的图像处理方法,参考MobileNet 系列网络结构设计了一种安瓿瓶包装缺陷检测算法,算法总体流程如图2 所示。首先,对工业相机采集的原始图片进行图像预处理,包括阈值分割、位置校正以及感兴趣区域(Region Of Interest,ROI)裁剪,得到单支安瓿瓶区域图像;然后再将单支安瓿瓶区域图像依次送入包装缺陷分类网络;最后输出每支安瓿瓶区域图像的类别。
图2 安瓿瓶包装质量检测算法流程Fig.2 Flowchart of ampoule packaging quality inspection algorithm
1 图片预处理
首先对获取的彩色图像进行灰度化处理,即图像中每一个像素在RGB 三个通道的分量值均相等。灰度化处理后,为减少计算量,根据相机使用外触发拍照及安瓿瓶吸塑托盘在图像中的区域相对稳定的特点,划定感兴趣区域(ROI)裁剪原始图像,得到感兴趣区域图像f(x,y),如图3(a)所示。灰度图像中吸塑托盘与背景中的一部分挡块灰度值接近,直接使用全局阈值不能有效分离出托盘,图3(b)是直接使用最大类间差分法(Otsu)的结果。观察ROI 图像可知吸塑托盘盒背景的边缘区分明显,因此可以利用边缘信息辅助Otsu 进行阈值分割[10]。
图3 图像阈值处理过程Fig.3 Image threshold processing
本文首先对ROI 图像使用高斯滤波器进行平滑处理,然后使用拉普拉斯算子计算图像边缘[11]485,再使用拉普拉斯图像绝对值中的99%来指定阈值非负T对拉普拉斯图像进行阈值处理,得到一个稀疏的像素集合gt(x,y),过程可表示为:
其中:R(x,y)为过滤器模板在其覆盖区域中心处的响应。
再将ROI图像f(x,y)与gt(x,y)相乘得到g(x,y):
根据g(x,y)非零像素的直方图,使用Otsu 方法对ROI 图像进行二值化[12],结果如图3(c)所示,虽然灰度相近的一部分干扰区域也被分割出来,但是由于边缘信息的加入,使得结果中吸塑托盘与干扰区域被分割成相互独立区域,对阈值结果进行连通域操作,再进行区域面积筛选,就能得到完整吸塑托盘分割图像I(x,y),如图3(d)所示。
吸塑托盘在图中存在倾斜角度时,影响后续的安瓿瓶区域裁剪,因此需要对图片中的安瓿瓶区域进行校正。首先使用形态学重建的方法对吸塑托盘分割二值图像I(x,y)进行内部孔洞填充[11]425,然后创建吸塑托盘区域的最小外接矩形如图4(a)所示,宽、高、倾斜角度以及中心点坐标如图4(b)所示。
图4 最小外接矩形及其几何参数Fig.4 Minimum bounding rectangle and its geometric parameters
根据吸塑托盘区域的最小外接矩形的中心点(x,y)以及倾斜角度θ,使用仿射变换校正原图像以及外接矩形,使得最小外接矩形中心点(x,y)与图片中心点(Xw/2,Yh/2)重合,角度旋转至0°,仿射变换过程如下:
其中:Tx=Xw/2-X,Ty=Yh/2-Y;t1=(x,y)为变换后图像中像素的坐标,t2=(v,w)为原图像中像素的坐标。仿射变换后的图像使用校正后的最小外接矩形裁剪,得到吸塑托盘区域图像,如图5(a)所示;再根据安瓿瓶的支数采用固定ROI裁剪出每支安瓿瓶区域图像,如图5(b)所示。
图5 图像的校正及裁剪Fig.5 Correction and cutting of image
2 安瓿瓶包装缺陷识别网络
2.1 网络结构设计
本文以MobileNet系列网络为基础进行改进,安瓿瓶包装缺陷检测任务中图像经过裁剪分割后的安瓿瓶区域图像内容相对单一,且图像类别较少,无需过深网络提取特征,因此可以适当删减网络层数,使用连续下采样;由于安瓿瓶属于高宽比较大的物体,因此设计网络输入图片尺寸为56×224的彩色图像;原始MobileNetv2 网络在最后一层卷积后面使用全局平均池化(Global Average Pooling),由于本文网络是矩形图像输入,最后一层卷积产生矩形特征图,因此更改池化层为自适应平均池化层(Adaptive Average Pooling)[13]。
网络具体结构如图6 所示:由两个全卷积层(Fully Convolutional,FC)、五个卷积块、一个自适应平均池化层、一个全连接层及一个Softmax分类函数组成。
图6 缺陷分类网络结构Fig.6 Defect classification network structure
第一层是有32 个3×3 的卷积核的全卷积层,Stride=2,输出为32个28×112的特征图;第二层至第六层依次是五个卷积块(Block),Block 内部扩张倍数均取6,其中Block1~Block4 设置滑动步长为2,连续进行下采样,每个Block 输出特征图依次为:14×56×64,7×28×64,4×14×96,2×7×96,Block5 设置滑动步长为1,输出特征图为2×7×160;第七层是一个有512 个1×1卷积核的全卷积层,用来进行特征升维;第八层是自适应平均池化层,保持特征图通道数不变,改变特征图尺寸为1×1;第九层是全连接层,后接Softmax 层进行分类。在除了平均池化层之外的每层网络后都添加了批量归一化(Batch Normalization)层[14],用来加速训练以及提高模型泛化能力,Batch Normalization 层后使用ReLU6 激活函数[15],并在全连接层后使用dropout层[16]来防止网络训练时发生过拟合。
2.2 数据集
实验数据来源于安瓿瓶包装生产线,使用工业相机采集图像,经本文所述预处理算法处理后构建安瓿瓶包装缺陷检测任务数据集。数据集所用图像来自2 ml、4 ml 和6 ml 三种规格的安瓿瓶,瓶体颜色有琥珀红、棕色、无色透明三种,一共13 000张安瓿瓶区域图片。按照缺陷种类将数据集图片分为三个类别:合格、缺标以及缺支,部分样本如图7所示。
图7 数据集样本Fig.7 Samples in dataset
使用深度卷积神经网络进行图像分类任务需要大量数据,且各类别样本数量应当均衡,但是在生产现场,合格以及缺支类别的图像易获取,缺标的产品数量较少,因此较难获取,原始数据集中三个类别样本数量分布如图8(a)所示。因此针对本文任务下可能出现的产品方向不定、安瓿瓶及托盘表面反光、标签贴纸颜色不同等情况,采用随机翻转、镜像、随机高亮斑点、颜色增强、缩放等方法扩充数据集至19 500 张,各类别样本数量分布如图8(b)所示。在训练数据中每个类别样本随机选取80%作为训练集,20%作为验证集,另选取9 000 支安瓿瓶区域图像作为测试集,其中每个类别数量相等,测试集不参与训练。
图8 数据集样本分布Fig.8 Dataset sample distribution
3 实验与结果分析
3.1 预处理算法
使用构建本文数据集的原始图像共4 400 张(五支装)测试预处理算法,由于阈值分割结果决定了后续的倾斜校正以及ROI 裁剪的准确性,因此本文设置两个对照组,分别使用Otsu 以及全局双阈值作为预处理算法中的阈值方法,实验结果如表1所示。
表1 不同阈值方法下预处理算法性能Tab.1 Performance of preprocessing algorithm under different threshold methods
使用全局双阈值方法的预处理算法执行速度最快,平均耗时8.34 ms,准确率为97.00%,影响准确率主要因素为亮度波动;使用Otsu 作为阈值方法的预处理算法准确率最低,为92.5%,影响准确率主要因素为托盘与灰度相近的挡块紧贴时难以分割。边缘辅助阈值具有良好的适应性,预处理算法准确率为100%,平均耗时为15 ms,综合性能更优。
3.2 识别网络
在上述构建的安瓿瓶包装缺陷分类数据集上对本文提出的安瓿瓶包装缺陷分类网络(LocalNet)进行训练和测试,在具体实验过程中,分别使用到了核心配置为:CPU Xeon Gold 6148,GPU NVIDIA Tesla V100 的计算机以及NVIDIA 公司推出的Jetson Nano小型深度学习模块,以及Pytorch框架。
为比较本文网络与参考网络的性能,设置两个对照组:一组是原始MobileNetv2,输入尺寸为224×224×3;另一组是使用输入尺寸为224×224×3 的本文网络(LocalNet_224)来对比输入尺寸变化对网络影响。三组实验均采用随机梯度下降法(Stochastic Gradient Descent,SGD)[17]进行训练,使用余弦退火策略[18]调整学习率,如图9(a)所示,初始学习率为0.1,最小学习率为1× 10-8,动量因子为0.9,权重衰减因子为0.000 3。如图9(b)所示:原始MobileNetv2 网络收敛最快,loss 稳定在0.004;LocalNet 收敛次之,loss 稳定在0.005;LocalNet_224 收敛最慢,loss 稳定在0.035。图9(c)中原始MobileNetv2和LocalNet的验证准确率均为99.99%,LocalNet_224 验证准确率为98.67%。从实验数据看出:使用图片输入尺寸为224×224 时,LocalNet_224 在训练损失收敛以及验证精度上的表现不如MobileNetv2,使用输入尺寸为56×224 的LocalNet 训练损失收敛以及最终训练损失略低于MobileNetv2,但均优于LocalNet_224,验证精度和MobileNetv2持平,且明显优于LocalNet_224,实验结果验证了本文所提网络结构设计的有效性。
图9 不同网络训练验证过程Fig.9 Training and verification processes of different networks
为验证本文网络分类性能,在上述构建的测试集上进行测试评估,同时设置测试对照实验组,包括两种轻量级网络:ShuffleNetv2[19]、SqueezeNet[20];两种机器学习方法:基于局部二值模式(Local Binary Pattern,LBP)[21]特征的SVM 和超限学习机(Extreme Learning Machine,ELM)[22]。对照组预先在训练集上进行训练。
表2 列举了不同分类方法的性能对比,包括输入尺寸、参数量大小、准确率,以及使用GPU(NVIDIA Tesla V100)、CPU(Xeon Gold 6148)、Jetson Nano 这三种不同硬件条件下平均检测一支安瓿瓶区域图片所耗时间。
从表2 可知,在模型参数量方面,本文提出的模型参数量为0.50×106,在所列深度学习模型中最少。在检测准确率方面,ShuffleNetv2 准确率最高,达到99.99%,本文所提网络为99.94%,仅差0.05 个百分点,LBP-ELM 方法准确率最低。在检测耗时方面:LBP-ELM 方法由于ELM 的结构优势,因此速度最快,在计算机和Jetson Nano的CPU环境中分别为3.87 ms和10.25 ms;本文所提网络在三种硬件下检测耗时在所列深度学习模型中达到最优,分别为2.31 ms、7.82 ms、11.02 ms;SqueezeNet 虽然参数量少,但是其仍有大量常规卷积计算,因此并未体现出有速度优势。由此看出,本文所提网络在参数量、准确率、检测速度三个指标上为所列方法中综合最优。在Jetson Nano 平台上部署本文网络,以一盒五支装的安瓿瓶包装图像为例,整张图像预处理时间为15 ms,则检测时算法总体耗时70.1 ms,即可达到14 盒/s,满足流水线上实时检测的要求。
4 结语
本文通过对安瓿瓶药品包装生产线上采集的图像进行分析,并借鉴MobileNet 系列轻量级卷积神经网络的思想,提出了一种面向小型计算平台(以Jetson Nano为例)的安瓿瓶包装质量检测算法,包括安瓿瓶包装区域图像裁剪预处理算法及识别网络。通过实验,本文提出的预处理算法能准确提取出安瓿瓶包装区域图像,识别网络可以在Jetson Nano 平台上可以达到每秒14 盒的检测速度,大大超过现有人工视检每秒1盒的速度,且实现了99.94%的准确率。本文算法部署在安瓿瓶包装生产线上可显著减少检测速度对生产线产能提高的制约,为包装生产线自动化升级提供了技术支撑。下一步打算开展算法优化、模型量化、硬件平台适配相关的工作,进一步提高算法的速度与精度以满足产品化的需求。
表2 不同分类方法的性能对比Tab.2 Performance comparison of different classification methods