YOLOv3 Tiny算法在卷烟爆珠气泡缺陷检测中的应用
2021-09-26遵义医科大学陈锦秋左安康
遵义医科大学 陈锦秋 左安康
“爆珠”是指嵌在卷烟过滤嘴内的一颗液体小胶珠,它包裹了不同类型香料的液体,如果吸烟者在吸烟过程中将其捏爆,珠内液体流出,将会使得香烟的口感更丰富、香润。在卷烟爆珠的生产过程中,由于设备和工艺的影响,可能会生产出有着气泡、连体、带帽、过大过小等缺陷的不良品。为使得卷烟爆珠满足质量要求,需要进行缺陷检测,挑选出质量不合格的爆珠,缺陷检测是卷烟爆珠制造过程中一个必不可少的环节。
针对卷烟爆珠的“气泡”缺陷,本文利用爆珠工业生产过程中采集的爆珠图像数据集,构建基于YOLOv3 Tiny算法的缺陷检测模型,用于卷烟爆珠生产过程中的气泡缺陷检测。
1 卷烟爆珠缺陷检测系统
实现卷烟爆珠缺陷检测需要建立一套计算机视觉处理系统,系统由吸附杆、工业相机、图像处理单元以及电控系统组成。具体的实现流程为:首先将爆珠吸附于吸附杆上,然后由工业相机对吸附杆上的爆珠进行拍照,并将拍到的照片传输到图像处理单元,图像处理单元对爆珠照片进行分析,识别出不符合常规形状、颜色、大小的不良品,最后将信号传递给电控系统,通过高速脉冲电磁阀剔除不合格产品。图像处理单元是缺陷检测系统的核心,缺陷检测算法的识别率影响着最后分拣效果的好坏。
2 缺陷检测算法
2.1 算法的选择
传统的人工缺陷检测方法存在效率低、成本高、主观性强等缺点,并且容易出现误检、漏检等情况。将图像处理、模式识别等机器视觉技术应用到工业产品的缺陷检测上,是工业自动化的趋势。相比于传统的机器视觉方法,深度学习可以减少手动提取特征对识别精确度的影响,具有检测速度快、精确度高等特点,现已逐渐被应用于工业品缺陷检测。
深度学习中用于目标检测的算法大致可分为两类:一类是基于候选区域的目标检测算法,如R-CNN、Fast R-CNN、Faster R-CNN等;另一类是基于回归的目标检测算法,如SSD、YOLO等。基于候选区域的目标检测算法由区域提取和目标分类两步构成,首先需要将输入图像分割为多个候选区域,然后分别将每个候选区域送入神经网络进行分类,这种方法虽然检测精度较高,但是存在训练步骤复杂,检测速度较慢等问题。基于回归的目标检测算法去掉了产生候选区域这一步骤,将物体定位和目标分类问题转化为回归问题,将两个步骤合二为一,实现了端到端的训练,简化了训练过程,大大提高了检测速度。为了快速精准地分拣出带有“气泡”缺陷的爆珠,本文选择YOLOv3 Tiny算法来构建气泡缺陷检测模型。
2.2 YOLOv3 Tiny算法
YOLOv3 Tiny算法的模型主要由13层卷积层和6层最大池化层构成,采用的归一化方法为Batch Normalization,激活函数为LReLU函数。模型的网络结构如图1所示。
图1 YOLOv3 Tiny网络结构
在YOLOv3 Tiny的网络结构图中,Conv表示卷积层,Pool表示池化操作层,Upsample表示上采样操作,Concat表示张量拼接操作。上采样操作会扩大特征图的尺寸,张量拼接操作是在特征图的通道维度上进行连接。YOLOv3 Tiny模型利用2种不同尺寸的特征图进行目标检测,分别对输入图像的32倍降采样特征图和16倍降采样特征图进行目标检测。
3 气泡缺陷检测模型构建
3.1 实验数据
本实验的数据来源于某烟草企业,卷烟爆珠的直径在2mm-5mm范围内,通过工业相机对爆珠进行拍照,采集到100张爆珠图像,图像的分辨率为1600×1200,为减少模型的计算量,将原始数据分割为416×416的图像块作为实验数据,并使数据量由100张扩充到200张。
爆珠图像中包括了正常和缺陷两类爆珠,本实验构建的模型只针对爆珠的“气泡”缺陷。如图2所示,一个吸附杆上有5个爆珠,用红框标注的爆珠为有“气泡”缺陷的样本,其余的爆珠为正常样本。
图2 样本数据(一)
每张样本图像中都有5个爆珠,图像中的爆珠存在着两种情况:
(1)图像中没有缺陷爆珠,如图3所示,图像中的爆珠全为正常爆珠。
图3 样本数据(二)
(2)图像中有一个或多个缺陷爆珠,如图4所示,5个爆珠中有4个爆珠为“气泡”缺陷。
图4 样本数据(三)
通过观察发现,“气泡”缺陷爆珠有明显的纹理特征,在视觉上表现为黑色的“圆圈”,根据这一特征,我们利用标注工具LabelImg,对图像数据进行人工标注,以“defect”代表缺陷爆珠,实验数据集有200张图像数据,共标注了303个缺陷目标。
我们按照7:3的比例将实验数据集划分为训练集和测试集。训练集和测试集中正常爆珠和缺陷爆珠的数量如表1所示,训练集中包含140张图像数据,共有480个正常爆珠和220个缺陷爆珠;测试集中包含60张图像数据,共有217个正常爆珠和83个缺陷爆珠。
表1 正常爆珠和缺陷爆珠的数量
3.2 模型训练
本文基于Tensorflow框架训练YOLOv3 Tiny模型,具体的实验环境为:Cuda9.0加速,Nvidia GeForce GTX 1660Ti显卡,显卡内存为6G,CPU内存为16G,操作系统为CentOS7。
实验中的超参数设置如表2所示,根据模型的参数量和实验平台硬件资源情况,将批次大小设置为6;基于模型训练的调参经验,将学习率设置为0.001,训练迭代次数设置为100。
表2 超参数
模型在训练100次后,损失趋于平稳,本实验用模型训练100次时的权重进行目标检测。
将测试数据集的图像输入模型,模型在图像中画出预测框,并预测出目标类别和类别的置信度。将如图5所示的样本数据输入模型进行检测,得到的检测结果如图6所示。模型在输入样本中检测出3个有“气泡”缺陷的目标,在图像上分别用3个预测框标注,“气泡”缺陷目标的置信度分别为0.9、0.99、1。
图5 输入样本
图6 检测结果
3.3 模型性能评估
为了评估模型的检测性能,我们选取准确率(Accuracy)、精确率(Precision)、误检率(FPR)、漏检率(FNR)以及平均检测时间(Time)作为评价指标,计算公式如(1)-(5)所示。
其中,TP表示测试样本中被模型正确检测出的缺陷爆珠个数,FN表示测试样本中没有被检测出的缺陷爆珠个数,FP表示测试样本中被误检出的缺陷爆珠个数,TN表示测试样本中没有被误检成缺陷爆珠的正常爆珠个数。分别表示模型在第k个样本上开始检测和结束检测的时间,n表示样本数量。
本实验中,我们将置信度的阈值设为0.7,即当预测框的置信度超过0.7则为正确识别,不高于0.7则为错误识别。在测试数据集上进行试验,模型的检测结果如表3所示。
表3 模型检测结果
根据公式(1)-(5)得出模型的性能评估,如表4所示。
表4 模型性能评估
模型的准确率为97.36%,精确率为94.94%,误检率为1.79%,漏检率为5.06%,平均检测时间为45.31ms。从模型性能评估结果中可以看出,对于检测卷烟爆珠“气泡”缺陷,模型的准确率和精确率较高,误检率和漏检率较低,并且平均检测时间较少,达到了预期的检测效果。