丁 琼,祝双武,田 乐,王 茹
(西安工程大学纺织科学与工程学院,陕西 西安 710048)
纺织生产中,面料在生产过程中会出现各类疵点,影响产品质量。这些疵点会导致纺织品价格降低45%~65%[1],所以织物疵点的检测在纺织品生产过程中至关重要。随着深度学习技术的发展,在工业疵点检测领域,深度神经网络的应用受到越来越多关注。与传统的特征提取学习方法相比,深度学习能够从训练样本中学习更丰富的层次特征,并表现出卓越的性能[2-4],卷积神经网络(CNN)在这一高性能的成功中发挥了主导作用[5]。Peng等[6]提出了一种先验锚框卷积神经网络(PRAN-Net)来检测织物疵点,基于织物缺陷真值盒生成稀疏先验锚的方法,以代替固定锚,从而更准确、有效地定位极端缺陷,试验结果表明,该方法显著提高了织物疵点检测的准确性和效率。Li等[7]实现了多方向长短期记忆网络以从连续缺陷中提取上下文特征,研究中还加入了空间和通道注意力模块,用来考虑纹理图像的整体信息,虽然试验验证了长短时记忆网络(LSTM)检测疵点的有效性,但该模型的计算成本较高。史甜甜[8]提出基于Fisher准则的深层卷积神经网络织物疵点检测算法。利用深度可分离卷积设计小型的深层卷积神经网络(DCNN),并对DCNN网络的Softmax增加Fisher准则约束,在TILDA 和彩色格子数据集上分类率分别为98.14%和98.55%。Sabeenian等[9]对VGG 网络进行了改进,将VGG 输出类别数由1000改为5,同时加入迁移学习以更快训练网络,改进后的模型参数量比VGG 网络减少了57%,大大提高了检测效率。
尽管卷积神经网络在许多任务中表现出色,但它们的池化过程存在一个潜在问题,可能会导致关键图像信息的丢失,从而降低检测的精度。在这一背景下,胶囊网络作为深度学习领域的一种新兴技术,提供了一个有前景的解决方案。不同于传统的卷积神经网络,胶囊网络在胶囊中编码特征并建立局部和整体关系[10],具有独特的优势。这种网络以矢量形式表示输入和输出,有助于解决卷积神经网络中的信息丢失问题。胶囊网络自2017年首次提出以来,已经在多个领域取得了显著进展,包括医学疾病检测、动作识别、语音处理及计算机视觉等。Núñez-Fernández等[11]利用Caps Net对无镜片显微镜图像进行分类预测结核病,试验结果表明Caps Net架构比传统的CNN 网络性能更好。文献[12]利用胶囊网络进行动作识别的光流估计,设计出Flow Caps模型,与使用CNN 相比,利用更少的真实数据,获得了更好的检测结果。在人工声音事件检测中,Vesperini等[13]采用CapsNet来处理复音任务,利用胶囊单元代表每个声音事件的一组独特属性,结果显示基于Caps Net的算法不仅优于标准的CNN,而且相对于最新算法,也表现出更佳的结果。Ayush Jaiswal等[14]提出了一种生成对抗胶囊网络CapsuleGAN,将生成对抗网络中的鉴别器卷积神经网络用胶囊网络替换,该框架在公共数据集上进行图像数据建模和半监督分类的结果都优于CNN,同时生成的图像数据也更真实。Wei Zhang等[15]结合CNN 和Caps Net 2种模型的优点,将CNN 提取的特征图输入新设计的CapsNet中获得分类结果,试验表明模型在3个公共基准遥感图像数据集中都表现出了比深度卷积神经网络好的分类精度。在文本分类任务中,胶囊网络在将单标签文本分类转换为多标签文本分类时表现出显著的提升效果[16]。
基于以上分析可知,胶囊网络已成功应用于各种领域任务中,但作为一种相对新颖的分类网络,还需要进一步研究和改进,其在计算机视觉中的应用,特别是在织物疵点的检测中需要进一步探索。针对卷积神经网络在织物疵点检测中特征提取不足所导致的低精度问题,提出了一种基于胶囊网络的织物疵点检测与识别方法。胶囊网络被广泛用于分类任务,但在织物疵点检测中,无法满足目标定位的需求。为了克服这一挑战,将胶囊网络与滑动窗口技术相结合,通过滑动窗口截取可能包含疵点的子图像,并将这些截取的疵点图像用于模型训练。通过对各种参数进行详细分析,以确定最佳模型配置。此外,引入非极大值抑制算法,能够有效地去除冗余的目标框,从而实现对不同疵点的准确定位和分类识别。通过实验验证了所提出模型的有效性和准确性。
CapsNet不同于卷积神经网络(CNN),它具有CNN 所缺乏的平移等变性,CNN 是将图像信息以特定的分层形式存储在随机结构中,这样使图像的相关组件必须存储在一起,导致当网络错误地将输入分配给不同的类别标签时,就会出现假阴性[17-18]。相比之下,Caps Net采用一种类似树的结构来映射对象组件的层次结构关系,使所有部件都与整体相连。这种结构实现了对空间信息的编码,并同时计算物体的存在概率。此外,CNN 中常使用池化操作,但池化过程会导致信息损失。因此,CNN 通常需要大量的训练数据来弥补这种信息损失,而CapsNet使用较少的训练数据就能够实现泛化能力。
CapsNet的结构如图1 所示,完整的网络结构分为编码器和解码器,编码器包括一个卷积层(256个通道,每个通道由6×6滤波器组成,步幅为1,Re Lu激活函数应用于32×32×3的织物图像),PrimaryCaps层(卷积胶囊层,6×6×32个胶囊,每个胶囊有8个卷积单元,使用3×3的内核操作)和DigitCaps层(该层是一个全连接层,通过应用Squashing挤压函数创建了4个16D 的胶囊,每个数字胶囊将下一层所有胶囊的输入包装成胶囊,按4 类进行分类);解码器是由3层全连接层组成的输入重构,将数字胶囊中模长最长的向量取出,输入解码器中进行重构,其中重构损失就是把最终输出和最初输入的3072个单元上的像素值相减并平方求和。网络的总体损失就是间隔损失和重构损失,其中,间隔损失占主导地位。
图1 胶囊网络结构
该网络基于卷积神经网络(CNN)的基础上引入了“胶囊”的概念。这些“胶囊”是一组神经元,不仅包括特定物体存在的概率,还涵盖了与实例化参数相关的各种信息,如旋转、姿态、位置、方向和比例等[19]。与传统的CNN 中的池化和卷积等组件不同,胶囊具有更高的信息容纳能力。CapsNet通过动态协议路由算法实现主胶囊层与数字胶囊层之间的信息传递,在主胶囊层中,胶囊被分组形成父胶囊,每个父胶囊都与数字胶囊层中的对应胶囊建立连接。这些父胶囊计算并输出与数字胶囊层相关的信息。每个胶囊都试图估计其所连接的父胶囊的输出结果。当胶囊的估计输出与父胶囊的实际输出相匹配时,它们之间的耦合系数将增加。将u i作为胶囊i的输出,其对母体胶囊j的预测计算为:
式中:^μj|i为下一层胶囊i计算的更高一层第j个胶囊输出的预测向量;W ij为后一层需要学习的权重矩阵。
根据下一层胶囊与母胶囊之间的确认程度,耦合系数c ij使用以下softmax函数计算:
式中:b ij是胶囊i是否应该与胶囊j耦合并在协议路由过程开始时初始设置为零的对数概率。
因此,父胶囊j的输入向量计算如下:
为了防止胶囊的输出向量超过1,使用如下非线性挤压函数,根据式(3)给出的初始向量值,形成每个胶囊的最终输出。
Caps Net与传统CNN 的不同之处在于它使用向量代替标量值,动态路由算法代替了池化操作,使用胶囊特有的激活函数Squash,胶囊参数的前馈训练不同于CNN 的反向传播。胶囊神经元与传统神经元对比见表1。
表1 胶囊神经元对比传统神经元
表2 聚类目标框尺寸
表3 滑窗切分尺寸
Caps Net由多层胶囊组成,而每层胶囊又是由神经元组成。然而,与神经元不同的是,胶囊处理的输入与输出都是矢量。每个向量的方向表示该实体的某一特征(例如位置、纹理等),而向量的长度则表示该实体存在的概率。这些向量之间可以通过仿射变换和加权等计算进行处理,而胶囊间的信息传递则是通过动态路由协议来实现的。
在实际生产过程中,纺织品种类丰富,造成疵点的原因也各有不同。考虑到这些疵点的纹理多变、类型多样及尺度各异的特点,采用神经网络来存储完整的代表性信息可以显著提高缺陷类型检测的输出性能。与传统的卷积神经网络相比,胶囊网络具有更强大的信息存储能力,因此能够更全面地捕捉图像的层次关系和等变性。这使得胶囊网络在提高疵点检测精度方面具有一定的优势。研究的疵点检测流程如图2 所示。
图2 织物疵点检测流程
应用滑动窗口和胶囊网络的织物疵点检测过程主要包括几个步骤:
(1)将采集到的疵点图像进行预处理,并将数据分为训练样本和测试样本集;
(2)利用K-means算法对标注的4种疵点目标框进行聚类,得到滑窗截图尺寸;
(3)滑动窗口对织物疵点图像进行截图,得到不同尺寸的疵点候选图;
(4)胶囊网络提取疵点特征,将疵点的不同特征封装在胶囊向量中,Softmax分类器将特征进行识别分类;
(5)NMS算法将冗余目标框去除。
由于织物图像数据集中包含尺寸、形状各不相同的疵点类型,为了获取更精准的疵点定位结果,需要对所有的疵点标注框进行聚类分析,获得最优的滑动窗口切分尺寸。选用传统的聚类算法K-means,该算法具有较易实现和在中等规模数据上较快收敛的特点。其算法思想大致为:从样本集中随机选取k个样本作为簇中心,然后计算所有样本与这k个“簇中心”的距离。接下来,对于每一个样本,将其划分到与其距离最近的“簇中心”所在的簇中。最后,针对新的簇,计算各个簇的新的“簇中心”。这种方法的优势在于其相对简单而高效,特别适用于中等规模的数据集。
K-means算法对初始化敏感,不同的初始质心k可能导致不同的聚类结果。因此,基于数据集中各种疵点的特征设定了不同的k值,并比较了产生的定位结果,以选择适当的初始质心k。此外,将对象点分配到距离聚类中心最近的簇需要使用最近邻的度量策略。在不同情况下,需要采用不同的度量公式,包括欧式距离、曼哈顿距离和余弦相似度。在研究的目标框聚类中,通过计算目标框之间的欧氏距离来衡量它们之间的相似性或差异性,从而将相似的目标框归为同一簇。这有助于将目标框分组,形成用于胶囊网络检测算法的聚类锚框。
式中:x=(x1,x2,…,x n)和y=(y1,y2,…,y n)表示n维空间中2个点的坐标。
在织物疵点检测任务中,胶囊网络作为一种分类网络,存在一定的局限性,难以实现对疵点的准确定位。为了克服这一问题,采用滑动窗口的方法,用于检测图像中可能存在织物疵点的区域。随后,利用胶囊网络对这些区域进行分类,从而实现对织物疵点的定位和分类。
具体而言,设定指定大小的窗口,对高分辨率图像进行滑动切分,即沿着从左到右、从上到下的方向在图片上滑动,以达到提取出图片中每一个区域的目的,同时由于切分可能导致目标图像被分割,因此需要设置重叠率overlap使相邻切分子图之间具有重叠部分,这样可以较好解决目标被分割的情况。对于窗口的大小,指定为上一节聚类分析得到的几种窗口尺寸,图3是滑窗截取的疵点候选子图示例,其中左图是640像素×640像素的原跳花疵点图像,右图是经过滑窗截取的可能含有疵点的4种尺寸子图。
图3 织物疵点截取图像示例
以实验室拍摄的真实场景中的织物疵点图像[20-25]和部分阿里天池纺织品缺陷图像为数据集。图像尺寸不一,经过预处理将所有图像调整为640像素×640像素,且对图像进行随机旋转变化、亮度调节、色彩变换及自适应对比增强等处理。经预处理后的数据集共5453张图像,其中包含跳花、破洞、污渍和长条状的纱线缺陷4类疵点,分别命名为float、hole、stain、line,如图4所示。然后利用Labelme标记工具对图4中的各种疵点进行标记,得到研究方法所需的疵点目标框标注文件。
图4 织物疵点图像示例
另一个数据集是常用的公共数据库TILDA,这是一个著名的织物纹理数据库,包含8种具有代表性的织物类别。根据纺织品图谱分析,定义了7个错误类别和1个正确类别。选择了250个织物图像,将其分为孔洞、污渍、划痕、携带和结头5类,并依次分别标记为e1~e5。其中每个类由50个织物图像组成,将每个图像的大小调整为256像素×256像素,在试验中,将整个数据库的80%作为训练集,剩下的20%作为测试集。图5展示了几个样本及其标签。
图5 TILDA 织物疵点图像示例
通过K-maens算法对4类疵点目标框进行聚类分析,由于每种疵点形状、大小不一,所以针对每个类型的疵点都需设置不同的初始质心。设定当聚类结果目标框与所有目标框的匹配程度达到60%以上的k值为初始质心,以下分别是各类疵点聚类得到的候选框尺寸。
根据聚类分析得到的候选框尺寸,以各类别候选框比例分别选择适当的切分尺寸。对于跳花疵点,聚类目标框包含了6种尺寸,其中(63,70)的目标框能够容纳(55,38)尺寸的目标框,(263,302)的目标框则适用于(132,115)尺寸的目标框。然而,(37,442)和(327,32)的目标框由于具有不同的长宽比例,无法相互包含。因此选择了4种尺寸进行滑动窗口切分,分别是(63,70)、(263,302)、(37,442)和(327,32)。其他3种疵点的处理方法类似。对训练集和测试集分别进行滑动窗口切分,得到包含疵点的20134张训练集和5628张测试集切分子图。
以Python语言基于Pytorch 框架构建Caps Net模型。该模型试图检测并分类4种缺陷,模型框架设计与原始Hinton模型不相同。Primary Caps层有9×9×32个胶囊,每个胶囊输出一个1D 向量,步幅为2,每个主胶囊有8个卷积单元,以9×9内核运行;Digit-Caps层应用Squashing挤压函数创建了4个4D 胶囊,每个数字胶囊对来自下一层的所有胶囊的接收输入进行编码,以便根据4个类别进行分类;解码器即结构的最后一部分,确定前一层中每个胶囊的长度,以获得该实体存在的概率。以间隔损失和Adam 分别作为损失函数和优化器,以织物疵点数据集(训练集20134张,测试集5628张)对模型的学习率和囊间路由次数进行研究,从而完成织物疵点检测与识别。
3.4.1 学习率对模型损失值的影响
为了得到学习率对织物疵点检测模型性能的影响,设定模型训练学习率为0.1、0.01、0.001 和0.0001,训练周期为5次,对模型进行训练,结果如图6所示。可知,学习率为0.001和0.0001时,损失值下降最快且模型在训练2个周期内达到最小并保持稳定,但学习率为0.001比0.0001达到的训练损失值更小,因此选用0.001为Caps Net模型的训练学习率。
图6 学习率对模型损失值的影响
3.4.2 囊间路由次数对模型准确率的影响
为研究胶囊神经元间动态路由次数对网络模型性能的影响,设定路由次数为1、2、3 次,训练周期为5次,对模型进行训练,结果如图7所示。可知,模型的准确率与囊间路由次数呈负相关关系。路由次数越少,模型训练准确率提升越快,在路由次数为1时,模型准确率的提升速率是最快的。因此,设定CapsNet网络的胶囊间动态路由次数为1。
图7 囊间路由次数对模型准确率的影响
由于研究数据集不同于MNIST,具有3通道且图片尺寸较大,所以网络结构与超参数设定有所不同。训练数据集的Caps Net体系结构见表4,网络超参数设置见表5。
表4 模型结构
表5 超参数设置
为评估该算法的有效性,采用不同类型疵点的织物图像进行检测。试验结果表明,利用滑动窗口结合Caps Net模型的方法对织物疵点具有较好的检测效果,可以检测到不同类型、不同尺寸的织物疵点,进一步说明了该方法的有效性。
根据表6试验结果且结合检测效果图8 可以得出:该模型对于织物的跳花、破洞、污渍及长条状纱线疵点具有较好的检测结果,平均精度均值达到90.78%,验证了该方法对织物疵点检测具有一定的准确性和有效性。
表6 数据集疵点检测统计结果
图8 织物疵点检测结果
根据表7试验结果可以得出:该模型对于TILDA数据集中的孔洞、划痕及携带疵点具有较好的检测结果,但对于污渍和结头的检测结果较差,可能的原因是该数据集中这2类疵点的大小形状变化太多,导致滑动窗口方法无法精确切分疵点子图。
表7 TILDA 疵点检测统计结果
为验证上述提出的疵点检测方法对织物疵点检测的优越性,将该算法与目前主流的目标检测算法SSD、Faster R-CNN、YOLOv4 和YOLOv5 在织物疵点检测上的网络性能进行了对比,根据表8中列出的5种算法检测出的4种疵点的精度均值(AP)与平均精度均值(m AP),可以得出该算法对于跳花疵点的检测精度较Faster RCNN 和YOLOv5低,但另外3种疵点的检测精度都较其他算法高,综合平均均值精度来看,该算法的检测精度是最高的。
表8 各算法的检测能力对比
提出了一种基于胶囊网络(CapsNet)和滑动窗口的织物疵点检测方法,该方法通过使用滑动窗口来截取潜在的疵点子图,随后利用Caps Net来提取织物疵点的特征,并通过Softmax分类器对这些织物疵点进行分类,最终,采用非极大值抑制(NMS)算法来筛选出与真实值最接近的目标框,从而实现了对织物疵点的定位与分类。利用织物疵点数据集对模型中的参数进行分析,当模型的学习率为0.001,胶囊间路由次数为1时,模型检测性能最佳。与其他算法相比,该方法在织物疵点检测方面取得了更高的精度。通过上机试验对织物疵点图像数据集和TILDA 数据集进行测试,结果表明该算法可准确检测并识别出不同类型的疵点,平均精度均值(m AP)分别达到了90.78% 和84.75%,证明了该方法在织物疵点检测方面的有效性和先进性。