基于ResNeSt 的烟支外观缺陷分类
2022-05-25袁国武刘建成刘鸿瑜
袁国武,刘建成,刘鸿瑜,瞿 睿,周 浩
(云南大学 信息学院,云南 昆明 650500)
中国是一个烟草大国,卷烟烟支是烟草行业最重要的产品.在烟支的生产过程中,难免会因为各种因素导致烟支外观存在缺陷.剔除生产流水线上的缺陷烟支,是卷烟厂提高卷烟质量的一个关键步骤.目前,高速烟支生产流水线已经达到每秒200支的速度,传统的人工检测已经无法胜任.应用计算机视觉技术,自动快速地对烟支外观缺陷进行检测和分类,能提高卷烟生产的质量和效率.
随着深度学习的发展,AlexNet[1]、VGG16[2]、ResNet[3]等网络已经在很多检测和分类问题上有应用.在产品质量自动检测中,如竹条、纺织品、钢条等,已经有大量的应用研究.高钦泉等[4]用改进的CenterNet 网络对竹条外表缺陷做了10 个分类,平均检测精度(mean Average Precision,mAP)达到了76.9%.刘洋洋等[5]提出一种基于改进Faster RCNN 的检测方法,对布匹做了将近20 种缺陷分类,mAP 达到63.4%.丁关雄等[6]在AlexNet 网络上添加了空洞卷积层增大感受野,在布匹缺陷分类的平均准确率和平均召回率上均达到了85%.寇旭鹏等[7]提出了一种基于Faster-RCNN 的钢带缺陷检测模型FRDNet,在GC10-DET 钢带缺陷数据集上mAP 达67.7%,相较于原模型提升了4.9%.徐镪等[8]用改进的YOLOv3 应用于钢板表面缺陷检测,在测试集上精度比原YOLOv3 提高了23.3%.
在烟支外观缺陷分类问题上,国内外研究主要是基于传统的数字图像处理方法,如杨钰煊[9]利用特征提取及阈值分割的方法来检测缺陷,准确度不高.目前,国内外文献还未见到把深度学习应用于烟支外观缺陷分类的研究报道.
烟支外观缺陷图像具有缺陷面积大小不一、缺陷种类多样、缺陷占比小、烟支图像狭长等特点,用VGG16[2]、GoogleNet[10]、ResNet[3]等网络均不能很好地学习相关特征并进行分类.2020 年,Zhang 等[11]提出了ResNeSt 网络,该网络引入了分散注意力模块,可以让注意力跨特征图(featuremap)组,能够关注烟支外观缺陷的重要特征,从而更好地进行学习.
本文对ResNeSt 网络进行改进,使其更加适应烟支外观缺陷图像的特征,提出了一种基于ResNeSt 的烟支外观缺陷分类方法.该方法首先针对烟支外观缺陷样本数量不足的问题,在ImageNet数据集上训练ResNeSt 网络;其次,针对烟支图像狭长的问题,采用多尺度测试,输入不同尺度大小的图片进行训练;最后,为了更好地提取缺陷特征,提高分类准确率,用h-swish 替换ReLU 激活函数.实验表明,该方法的分类准确率达到了92.04%,高于AlexNet、VGG16、ResNet、未经预训练及激活函数调整的ResNeSt 等几种方法.
1 ResNeSt 网络模型
ResNet 网络模型[3]在2015 年提出,使用了一种连接方式叫做“Skip Connection(shotcut)”,即“抄近道”,对每层的输入做一个reference(X),学习形成残差函数:
其中,σ为ReLU 函数,X为输入图像,W1和W2分别为线性变换矩阵,通过公式
获得输出Y.ResNet 引入了跳跃连接,使上一个残差块的信息没有阻碍地流入到下一个残差块,避免了由于网络过深引起的梯度消失问题和退化问题.
ResNeSt 网络[11]则是在ResNet 的基础上加入分散注意力模块,图1 是ResNeSt 模型的核心模块图.
图1 ResNeSt 核心模块Fig.1 ResNeSt core module
自ResNet 诞生以来,衍生了许多网络,如Google-Net、ResNeXt、SE-Net、Sk-Net 等,都较原先的ResNet 在某些方面有所提升.本文所提到的ResNeSt借鉴了上述的一些网络,在ResNet 网络的基础上引入了多路径和注意力机制的思想,从而取得了更好的效果.其具体思想如下:网络结构首先输入256×256 的图像,通过分支结构分为k个基数群(Cardinal group),在基数群里引入切片,对每个切片分别进行1×1 和3×3 的卷积.然后通过分散注意力(Split Attentions)机制对不同的特征赋予不同的权重.最后将其进行聚合,并把聚合输出的特征图与残差模块输出的特征图进行线性组合输出.其中,分散注意力(Split Attentions)的结构图如图2 所示.
图2 的分散注意力模块中,首先对所有输入进行加权平均和全局池化,其次通过不同的注意力机制对其进行处理,并通过r-softmax 分类器进行分类,最后将其与残差模块的输出结果做一个线性组合输出.模块中r-softmax 函数的公式如下:
图2 分散注意力模块Fig.2 Split attentions module
2 基于ResNeSt 的烟支外观缺陷分类方法
2.1 烟支外观缺陷概述烟支由两部分组成:较长的装烟丝部分称为烟棒,较短的装过滤嘴部分称为滤嘴.根据生产流水线的环节、外观缺陷的位置和形成原因,云南中烟工业有限责任公司将缺陷分为5 类:错牙、局部泡皱、滤嘴暗点、烟棒斑点和烟棒刺破.
错牙指烟支的包装纸在生产过程中没有对齐,主要由生产机器造成;局部泡皱指烟支上有像皱纹一样的形状,主要由生产机器用滤嘴纸卷过滤嘴或烟棒纸卷烟丝时造成;滤嘴暗点指滤嘴上面有大小不一的暗点,主要由滤嘴纸印刷不合格形成;烟棒斑点指烟棒上有大小不一的斑点,主要由烟棒纸印刷不合格或者后期受到染色形成;烟棒刺破主要由烟丝梗把烟棒卷纸刺破形成.具体烟支外观缺陷图像如图3 所示.而正常的烟支外观如图4 所示.
图3 烟支外观缺陷图Fig.3 Image of cigarette appearance flaws
图4 正常烟支外观图Fig.4 Image of normal cigarettes
目前,本文实验用的烟支外观图像数据集有36 000 张烟支图像,由于训练ResNeSt 需要大量的图片数据,36 000 张达不到训练要求.为了在训练数据少的情况下使网络能够快速收敛,并得到较好的分类效果,我们采用了迁移学习的方法.
2.2 ResNeSt 迁移学习方法迁移学习是指把当前网络模型在其它标注数据充足的数据集上学习到的知识,应用到所要研究领域的一种机器学习方法[12].本文引入迁移学习的主要原因是因为能用的训练数据集较少,不足以用ResNeSt 网络直接对其进行训练.本文的迁移学习具体步骤如下:首先,将ResNeSt 网络的最后一个全连接层用一个新的全连接层代替,该层分类数与烟支外观缺陷数据集的分类数相同;然后,随机初始化权重,用ImageNet样本训练网络来更新全连接层的权重.通过这种方法,在训练烟支外观缺陷数据集时,能够更快的收敛并得到更好的分类效果.具体思想如图5 所示.
图5 基于全连接层的训练Fig.5 Training based on the fully connected layer
2.3 多尺度测试烟支外观缺陷图像的大小是1 200×142,而ResNeSt 网络要求输入图像是256×256,因此需要采用多尺度训练方法[13]对全连接层的权重进行训练.多尺度训练对全卷积层网络有效,一般设置几种不同尺度,训练时每隔一定迭代次数就随机选取一种尺度训练,测试时,生成几个不同尺度的特征图.对于每个候选框(Region Proposal),在不同的特征图上有不同的尺度,一般选择最接近某一固定尺寸的候选框(Region Proposal)作为后续输入.这样训练出来的模型鲁棒性强,可以接收任意大小的图片.因此对于烟支缺陷的外观图片,分别设置了以下几种尺寸大小进行训练,如图6 所示.
图6 不同尺寸特征图的的设置Fig.6 Setting of characteristic images of different sizes
用这些尺寸的图像进行训练,生成不同尺寸的特征图,然后选择256×256的图像作为后续的输入.通过这种方法,能够有效地对ResNeSt 网络的全连接层进行训练,满足ResNeSt 网络的要求,从而较好地提取原先图像的特征信息,避免因为图像缩放带来的信息丢失问题.
2.4 h-swish 激活函数在ResNeSt 网络的注意力机制模块,主要采用了ReLU 激活函数.为了提高分类的准确率,本文用h-swish[14]函数替换ReLU函数,h-swish 函数的公式如下:
其中,Ru表示ReLU6 函数,计算公式如下:
h-swish 的取值范围有负数,这使得该函数较之ReLU 有更好的表达能力和特征提取能力,因此我们把它应用到ResNeSt 网络,后续的实验结果也表明用h-swish 函数的ResNeSt 网络模型的分类准确率更高.
2.5 改进的ResNeSt 核心模块经过上述改进,首先用ImageNet 样本训练初始网络,再将烟支外观缺陷图像数据集送入整个改进的ResNeSt 网络进行训练.改进后的ResNeSt 核心模块如图7 所示.从图7 可以看出,框架上主要采用的网络还是ResNeSt.与图2 对比,在split connection 里面,本文将ReLU 函数改成了h-swish 函数,这样能够使烟支外观缺陷分类的准确率提高.
图7 改进后的简略ResNeSt 模块Fig.7 Improved simplified ResNeSt module
3 实验结果与分析
3.1 实验数据集本文使用的烟支外观缺陷图像数据集均为烟支生产流水线上采集的烟支图像,来自于云南中烟工业有限责任公司.烟支在高速流水线上的速率是每秒200 支,采用高速工业摄像头拍摄,且在流水线上的前后两个位置,分别对一支烟的两面都采集了图像,不会造成可见面正常而不可见面有缺陷被遗漏的情况.
该数据集共36 000 张图像,包括正常、错牙、烟棒刺破、烟棒斑点、滤嘴暗点、局部泡皱等6 类烟支外观图像,如图3~4 所示.首先对所有数据集图片做了标签,选取其中28 000 张图片进行训练.按照比例8∶2 随机选取22 400 张图片作为训练集,5 600 张图片为验证集,而剩下的8 000 张标注图片作为测试集,如表1 所示.
从表1 可以看出,挑选的数据集中缺陷类型的样本数量大体均衡,有利于网络提取外观缺陷特征.而正常类型的样本数量相对较少,因为正常烟支类别所需要学习的特征相对偏少.
表1 烟支外观图像数据集统计Tab.1 Statistics of cigarette appearance image data set
3.2 实验结果及分析实验所用操作系统为Windows10,GPU 为Nvidia Gtx2080Ti,深度学习平台为PyCharm,所采用的框架为Pytorch.
实验中,对大小为1 200×142 的图像,采用多尺度训练方式作为输入,批量大小(batch size)设为16,学习率设为0.000 3.在网络训练中,首先冻结网络的其它层,只对全连接层进行预训练,然后再用网络对本文的数据集进行训练.
在评价指标上,本文采用准确率来评估模型,准确率即模型正确分类样本数占总样本数的比例(所有类别).用A表示准确率,A的计算公式如下.
其中,TP是实际为正例且被分类器划分为正例的样本数,FP为实际为负例但被分类器划分为正例的样本数,TN为实际为正例但被分类器划分为负例的样本数,FN为实际为负例且被分类器划分为负例的样本数.
另外,卷烟厂要求尽可能地找出外观有缺陷的烟支,不使外观缺陷烟支流入市场,所以我们还考虑了外观缺陷烟支的召回率,用R1表示,计算公式如下:
为了验证本文方法的有效性,本文针对迁移学习和注意力机制替换做了如下的对比实验.在表2的实验结果中,采用相同的实验数据来训练模型,为了方便,用ResNeSt+来表示方法加入了迁移学习模块,用ResNeSt++表示方法同时加入了迁移学习和h-swish 激活函数这两个模块.各个模型分类的准确率和外观缺陷烟支的召回率的对比实验结果如表2 所示.
从表2 可以看出,未用迁移学习而直接用烟支外观缺陷数据集进行训练,分类准确率较差,只有70%余.这是由于样本数量太少,网络无法很好地学习样本的特征.而经过预训练后,利用迁移学习的方法再进行分类测试,准确率有明显的提升.从表2 中不难看出,分类准确率与所使用的网络好坏成正相关.一般来说,VGG16 优于AlexNet,ResNet缓解VGG16 梯度消失问题,而ResNeSt 结合了GoogleNet 和SE-Net 等网络,网络的分类能力更优.本文模型在ResNeSt+基础上采取了适合烟支外观缺陷数据集特征的注意力机制,虽然召回率比ResNeSt+少了0.04%,但是准确率达到了92.04%,因此网络的改进非常有效.
表2 各个模型的实验准确率和召回率结果Tab.2 Experimental accuracy and recall results%
在实验中,训练损失能反映模型的收敛情况,epoch 的值在50 左右时,本文模型的损失值便趋于稳定,模型已经收敛.不同模型运行的损失表现如图8.图8 中绿色曲线表示ResNet 模型的损失值变化情况,紫色曲线表示VGG16+模型的损失值变化情况,红色曲线代表改进前的损失值变换情况,淡蓝色曲线为本文改进算法的损失值变化情况,可以发现改进后的算法的初始损失值更小,且总体损失更小,随着训练次数的增加,收敛速度加快,模型在训练时发散的情况也得以缓解.
图8 不同模型损失表现图Fig.8 Loss performance of different models
从图8 可以看出,基于预训练的模型往往能够更快地收敛,而没有经过预训练的模型往往会因为样本数量较少而出现过拟合的现象,这与前面使用迁移学习方法的原因一致.实验在训练轮次达到36 次时收敛,与其它的网络相比较,迭代所花费的时间比其中最少的时间少了4 次训练.
另外,本实验针对于top-5 的准确率也进行了对比实验.top-5 即指对一张图像,判断概率排名前5 中是否包含正确答案,包含即为分类正确,否则为分类错误.实验对比了VGG16+,VGG16 以及ResNet,ResNeSt+以及ResNeSt++网络,实验结果如表3 所示.实验结果表明,本文模型取得的top-5准确率和召回率还算理想,准确率比ResNeSt+高出2.79%.可以看出,ResNeSt++模型在一些性能方面也优于其他主流网络.
表3 实验top-5 准确率和召回率Tab.3 Accuracy and recall of experimental top-5%
4 结束语
本文针对烟支外观缺陷分类需求,提出了基于改进的ResNeSt 模型的分类方法,引入了迁移学习,能够在较少的样本情况下获得较高的分类准确率.本文所做的工作如下:①建立了一个包含36 000张烟支外观缺陷图像的数据集;② 采用预训练模型和迁移学习使得提出的网络具有更好的学习和特征提取能力,使分类效果更好;③采用了ResNeSt 网络模型,并针对烟支外观缺陷图像数据集进行了一些改进.本文的不足之处在于,实验所采用的硬件设备性能有限,设计并运行的网络层数不深,未来在有条件的情况下,将在层数更深的ResNeSt101 及ResNeSt200 上实验,期待取得更好的准确率和召回率.