基于Swin Transformer的两阶段织物疵点检测
2023-02-21雷承霖
雷承霖 李 敏,2,3 王 斌
(1.武汉纺织大学,湖北武汉, 430200;2.湖北省服装信息化工程技术研究中心,湖北武汉, 430200;3.纺织服装智能化湖北省工程研究中心,湖北武汉, 430200)
在织物生产过程中,因设备、原料、工艺或者外部原因,织物表面会出现疵点。疵点的出现不仅会影响织物的质量,还会影响到企业的经济效益。传统的疵点检测方法以人工检测为主,这种方式不但效率低、精度差,而且长时间的工作会对纺织工人的眼睛造成影响。为了提高生产效率,降低人工成本,使用自动检测设备来替代人眼进行疵点检测成了现代纺织企业的追求目标。
近年来,随着深度学习的发展,采用深度学习技术对织物疵点进行检测的方法不断地被提出。安萌等[1]提出了一种改进的Faster RCNN织物疵点检测方法,通过对Softmax分类器进行正则化来减小类内间距、增大类间间距,不断更新网络参数提高网络收敛能力,在一个简单背景的数据集上有比较高的准确率。JUN X等[2]将二阶段目标检测算法拆解开来,将待检测的织物图片切分成规则的小块,对每个小块使用Inception-V1[3]模型来判断是否存在疵点,然后再对缺陷的图片使用LeNet-5模型进行疵点类型的判断,在TILDA数据集上取得了不错的结果;然而由于将图片切分导致计算量倍增,即使是最轻量级的模型也需要1.6 s/张的检测速度,达不到实时在线检测的需求。叶舒婷等[4]在最新的目标检测框架Cascade RCNN的基础上,采用二步聚类算法确定适用于极端形状疵点检测的预定义框最佳尺寸,改进后的疵点识别准确率最高可达98.4%。上述基于深度学习的疵点检测方法需要大量图像数据对模型进行训练,并且检测精度严重依赖于模型的表达能力。
鉴 于Swin Transformer[5]在 计 算 机 视 觉 领 域的优秀表现,本研究提出了一种用Swin Transformer作为主干网络的织物疵点检测新模型。首先,在基础目标检测网络Cascade RCNN[6]的基础上,引入Swin Transformer架构来进行特征提取;为了在一个可扩展空间中寻找一个更好的特征金字塔结构来融合特征,摒弃了手动设计的FPN模块,引用NAS-FPN[7]进行神经架构搜索;与此同时,还结合多尺度训练、提高预设锚框的数量、Soft-NMS[8]等技术来进一步提高疵点检测精度。试验结果表明:在20类疵点的检测结果中,该方法相比通用目标检测算法的mAP@0.5提高了38.1%。
1 算法框架
基于Swin Transformer的两阶段织物疵点检测算法框架如图1所示。首先,利用Swin Transformer模块来提取输入图像的特征;然后,使用NAS-FPN模块来搜索最佳特征融合方式,以适应不同大小的疵点,并根据疵点的长宽比进行kmeans聚类来调整锚点;最后,使用级联区域建议网络,从特征图中得到可能为疵点的建议框,对疵点进行类别判断与位置修正。
图1 基于Swin Transformer的两阶段织物疵点检测框架
1.1 Swin Transformer
通过分析疵点图像发现,在提花织物或者复杂背景中的疵点更加难以识别,这是由于通常卷积网络无法学习到背景与疵点之间的关联,而Transformer[9]引入注意力机制,将学习到整体与部分特征之间的关联与突出疵点特征,能有更好的效果。而将Transformer从自然语言处理领域引入图像处理,要解决两个问题。一是数据规模。在自然语言处理中,单词是基本元素,单词会通过词嵌入算法转换成相同尺度;在图像处理中,待检测目标的尺寸变换范围很大。二是计算量。图像中像素的分辨率远远大于文本段落中单词量,Transformer计算自注意力的复杂度为图像大小的二次方,这会增加疵点检测的计算复杂度。
为了解决这两个问题,Swin Transformer构建了层次化的特征映射,将自注意力计算限制为不重叠的局部窗口,以降低计算复杂度;同时,Swin Transformer允许跨窗口连接,移位窗口可以解决疵点形状和尺寸变化的问题。Swin Transformer架构图如图2所示。图2中,输入的RGB图像先被划分为不重叠的小块,每个小块的大小为4×4。它们的特征被设置为RGB三通道的连接,每个小块的特征维度为H/4,W/4。
阶段1由一个线性嵌入层与2个连续的Swin Transformer块组成,长度为48的小块经过线性嵌入层可以投射到任意维度(这里以C表示)。Swin Transformer块是一个经过修改的自注意力模块,通过将Transformer中的标准多头自注意力(MSA)模块替换为基于移动窗口的模块(WMSA),其他层保持不变,如图2(b)所示。在每个MSA模块和每个MLP之前应用一个LayerNorm(LN)层。通过阶段1得到H/4×W/4个特征块,每个特征块的通道为C。为了产生分层表示,通过合并相邻的分块来减少特征块的数量,patch merge层将相邻2×2的每一组补丁的特征块拼接起来,这样得到H/8×W/8个特征块,通道为4C。经过阶段2的Swin Transformer块,输出通道设置为2C,得到H/8×W/8×2C的输出,特征块的数量变成了上阶段的1/4。阶段3、阶段4与阶段2类似,分别得到H/16×W/16×4C与H/32×W/32×8C的输出。这样层次化的输出特征图与经典的卷积神经网络具有相同的分辨率,可以直接取代现有目标检测的骨干网络。
图2 Swin Transformer架构图
1.2 NAS-FPN
特征金字塔网络(FPN)[10]可以解决多尺度目标特征表示问题。如图3所示,在FPN中,不同层次的特征融合方式是手动指定的,不同阶段产生的特征图通过上采样的方式融合到一起。FPN通过将下采样与底层特征融合,可以生成高分辨率和强语义的特征表示。
图3 FPN的特征融合方式
尽管FPN简单而有效,但FPN的融合方式是固定不变的,很难找到不同层级之间最好的连接方式。为此,借鉴神经架构搜索算法[11]的优势,采用NAS-FPN来提高小疵点的检测精度。
NAS-FPN由多个merging cells构成,它是NAS-FPN的基本模块,表示为任意两个不同尺度特征的融合,输出为一个给定通道的特征。构建merging cells的方式如图4所示。
图4 构建merging cells的4个步骤
如何构建合并单元的决定由控制器RNN进行。RNN控制器选择任意两个候选特征层和二进制操作以将它们组合到新的特征层中,其中所有特征层可能具有不同的分辨率。每个合并单元具有不同的Softmax。分类器控制的4个预测步骤。步骤1,选择一个候选特征层hi;步骤2,选择另一个特征层hj;步骤3,选择输出层的分辨率;步骤4,对hi与hj进行融合操作,并使用步骤3选取的分辨率进行输出。
1.3 根据k-means聚类分析改进预定义候选框
通过Swin Transformer提取特征与NASFPN进行特征融合之后,将通过候选区域生成网络(RPN)生成可能存在疵点的候选框,默认的候选框有3种长宽比(1∶1,1∶2,2∶1)。然而与通用目标检测不同的是,疵点存在极端的长宽分布,需要根据疵点的特性来进行调整,一般是根据经验人工调整长宽比,然而经过试验发现,利用kmeans对疵点数据集长宽比进行聚类分析有更好的效果。
目前统计的疵点有结头、破洞、三丝、粗维、百脚等20种类型,图5显示了疵点的长宽分布情况。
图5 疵点长宽比分布图
通过对疵点的长宽比进行统计,采用kmeans的方式对预设框的长宽比进行计算。图6显示了使用k-means方法计算之后的长宽比检测情况。可以看到,使用手动设置的预设框,置信度较低且发生了漏检,而使用k-means聚类分析得到的预设框对于疵点的范围判断更加准确且置信度更好,没有发生漏检。
图6 长宽比检测情况
2 试验结果及分析
2.1 数据集
试验织物疵点图片数据集采用了阿里天池2019广东工业智造创新大赛布匹瑕疵检测初赛数据集,有6 899张织物图像,疵点总数有9 523个,疵点类型为20个类别,图像尺寸为2 446 pixel×1 000 pixel,疵点具体情况见表1。
表1 各类疵点数量
所有试验均在两个GTX 2080Ti GPU进行训练和测试。训练时,将图片按比例缩放到1 434 pixel×593 pixel,初始学习率为0.001,在第27轮次和第33轮次进行衰减。共训练36个轮次。基准模型Cascade RCNN使用Resnet50作为backbone,使用标准FPN作为特征融合网络,Cascade头设置阈值为0.5、0.6和0.7;使用的Swin Transformer每个阶段的swin Transformer块堆叠层数分别为2,2,6,2,经过阶段1映射后的维度C=96;在NAS-FPN,堆叠次数设置为7,anchor的初始设置取[0.5,1.0,2.0]。
2.2 评估指标
选择平均精度均值mAP@0.5∶0.95作为织物疵点数据集的评估标准,mAP@0.5∶0.95通常用于目标检测,计算IoU阈值从0.5到0.95,步长为0.05的mAP,计算公式如式(1)所示。
式中:n为检测的类别数量;APi为第i类的AP,即平均精度,AP为PR曲线的面积,其计算公式如式(2)所示。
式中:N为PR曲线的取值点数;P(k)为对应点的精准率,其计算公式如式(3)所示;R(k)为对应点的估计召回率,其计算公式如式(4)所示。
式中:TP为检测正确的数量;FP为检测错误的数量;FN为未被检测出的正确样本数量。但考虑到有时织物疵点位置的精确性没有那么极端,可以参考IoU为0.5时的平均精度均值,即mAP@0.5。
2.3 试验结果
表2是与多种检测模型的对比试验。从表2可以看出,基于Swin Transformer的两阶段检测模型拥有最高的mAP@0.5∶0.95,但由于计算复杂度原因,检测速度有所下降,这将是下一步需要研究的目标。
表2 检测模型试验对比结果
表3详细对比了各类织物疵点检测效果的提升。可以看出,尺寸通常较小的疵点与极端长宽比疵点AP值提升明显。例如星跳、跳花的AP值从0.139提升到0.433,粗经的AP值从0.067提升到0.571,死皱、云织、双纬等的AP值从0.024提升到0.304。这归功于更好的主干网络和anchor的合理设置。其余还有磨痕、松经、色差档等疵点的检测效果都有较大的提升。
表3 各类疵点检测AP值的对比结果
为得出使用k-means聚类进行预设框分析的具体效果,试验则单独分析了不同k-means参数对检测效果的影响,其中k值表示将长宽比分为k类,利用距离作为相似性评价指标进行聚类,预设长宽比是指在检测阶段设置的检测框的长度/宽度,通过对数据集预先进行分析处理,加入先验的检测框长宽比。试验结果显示,人工指定的3类预设长宽比(0.5,1.0,2.0)和9类(0.02,0.05,0.1,0.5,1.0,2.0,10,20,50)预 设 长 宽 比,mAP@0.5∶0.95分别是0.223和0.267;而通过k-means聚类得到的4类(23.564 607 95,0.585 341 62,12.111 156 76,5.435 642 73)长宽比 和9类(0.244 938 91,11.857 211 75,5.361 932 15,22.469 742 56,16.412 395 48,2.935 330 51,36.670 708 05,8.372 126 77,1.040 044 59)长宽比,mAP@0.5∶0.95分别是0.293和0.304。可以看出,当使用k-means聚类且k=9时候效果最好。
表4设计了针对改进的消融试验。可以看到,使用标准的Cascade RCNN时,mAP@0.5∶0.95为0.220,当将特征提取网络切换成Swin Transformer之后,mAP@0.5∶0.95提升到0.231;然后再将标准的FPN网络替换成NAS-FPN,mAP@0.5∶0.95提升到0.237,最后在训练时添加更多的anchor预设比,来提高极端长宽比疵点的检测精度,最终将mAP@0.5∶0.95提升到0.304。结果表明本研究模型是有效的。
表4 消融试验
图7是本研究模型对织物图像进行疵点检测的结果。可以看出,在疵点较大的情况下,如色差档和水渍,Cascade RCNN因为使用的卷积神经网络受限于感受野大小而产生了漏检,采用基于Swin Transformer的两阶段检测模型却可以很好地检测到;还有松经和轧痕,因为呈细长条状,利用初始的预设长宽比无法很好地检测到,而利用k-means方法计算得到的预设长宽比却可以检测到。但是两种方法对于极小的目标,如三丝,则都产生了漏检和错检。
图7 部分疵点检测结果对比
3 结语
为解决人工疵点检测效率低、精度差的问题,本研究基于Cascade RCNN进行改进,针对小疵点、长宽比极端疵点和大疵点引入了Swin Transformer代替卷积神经网络,并通过NAS-FPN得到最佳的特征融合方式,加上使用k-means计算得到的预设长宽比,最终得到的mAP@0.5比Cascade RCNN模型结果提高了31.8%。结果证明,本研究提出的算法能更好地识别各类疵点。
不过由于计算量的增加,本研究模型相较于Cascade RCNN模型,检测速度降低了18.5%,如何提高计算速度是下一步关注的目标。另外,本研究模型总体上的精度仍然有很大的提升空间,我们会继续探索深度学习在织物疵点检测上的应用,以促进织物疵点检测的进一步发展。