丁 琼,祝双武,田 乐,王 茹,余灵婕
(西安工程大学纺织科学与工程学院,西安 710048)
在纺织工业中,织物缺陷是产品外观质量的主要考虑因素之一。织物缺陷可能导致产品降低价值,对企业造成严重经济损失。因此,实现自动检测织物疵点已成为该领域的重要研究方向。
传统疵点检测方法通常涉及图像分割、边缘提取、特征提取等步骤,适用于单一背景、平整布面和明显疵点的情况。然而,在实际生产中,对各种织物进行准确和快速的疵点检测依然具有挑战性。随着科技的进步,各行各业越来越倾向于智能化和无人化。在过去二十年中,研究领域提出了多种基于计算机视觉和深度学习的解决方案,以克服传统方法的缺陷。近年来深度学习的方法已经成为研究人员的主要研究关注点[1-2]。一些研究者设计了关于自编码器[3]、长短期记忆网络[4]、深层卷积神经网络[5]、UNet[6]、弱监督浅层网络[7]等深度学习方法,采用不同策略和技术,具有各自的优点和适用性。文献[8-10]提出了改进RCNN 的不同算法,其中陈梦琦等[11]将卷积块注意力(CBAM)引入Faster R-CNN,将疵点检测精度提高至78.81%。文献[11-14]分别改进了YOLOv3、YOLOv4、YOLOv5,获得了不同程度的性能提升。Yue等[15]在YOLOv4 中引入注意力模块,并提出CEIoU 损失,增强了小疵点检测的准确性。Transformer[10]利用四叉树注意力机制,更好地捕捉全局特征,优化了织物图像重构。这种方法减轻了缺陷样本采集和手动标记的困难。
综上所述,许多研究人员已经提出了各种深度学习算法,相较于传统方法有了巨大的进步。然而,由于织物缺陷的多样性,差异和分布不均匀性,如何实现检测速度和准确性之间的平衡仍然是疵点检测领域的主要挑战。而本文提出的模型在实时性和准确性方面表现出色,能够迅速识别多种织物缺陷。为了提高特征提取能力,引入了一种LSKBlock(large selective kernal block)选择性注意力机制。相较于其他注意力机制,LSKBlock 更具自适应性,具有更广泛的感受野,同时能够保持较高的计算效率。此外,引入可变形卷积,增强变换建模能力。最后,采用了轻量型网络设计范式Slimneck,以降低网络参数数量。在TILDA数据库上对这一方法进行了评估,结果表明它在检测和识别织物缺陷方面表现出了出色的能力。同时,我们还在收集的织物缺陷图像上进行了测试,充分证明了该算法的泛化能力,取得了良好的效果。
YOLO 系列算法是单阶段检测算法,其优势是把定位和分类两个步骤合并在一起,相比双阶段大大减少了计算量、提高了检测效率,最新的YOLOv8模型检测速度非常快,但其精度略有降低。因此本文采用融合注意力机制、引入可变形卷积和轻量化结构的方法,以期达到小幅度降低速度、提升精度,满足实际生产中疵点检测任务的高精度和实时性要求。
1.1 选择性注意力
LSKBlock[16]结构如图1 所示,由两个残差子块组成:大核选择(LK Selection)子块和前馈网络(FFN)子块。LK 选择子块根据需要动态地调整网络的感受野,前馈网络子块则用于通道混合和特征细化。
图1 LSK块结构图
为了使模型更关注空间中的重点背景信息,选择性地用多尺度大型卷积核提取空间特征。首先,将来自于不同感受野卷积核的特征进行通道拼接(channel concatenation):
然后进行空间适应池化,平均池化Pavg( )· 和最大池化Pmax( )· 保留重要空间信息,得到SAavg和SAmax特征:
交互不同空间池化特征SAavg和SAmax的信息,经过卷积层F2→N(·),将两通道的池化特征映射为N个空间注意力特征:
之后,再用Sigmoid 激活每一个,得到解耦的大卷积核所对应的独立空间选择掩膜:
最后将输入特征X与注意力特征S进行逐元素点乘,获得LSK module的最终输出,即:
1.2 可变形卷积层
现有的卷积神经网络所能应对的几何变换是有限的,为了增强变换建模能力,如图2 所示,通过引入少量参数用于位移学习,可以容易地替换掉现有CNNs中对应的模块,并且可通过标准的反向传播轻松进行网络的端到端学习,最终所得网络具有内在的转换参数,这些参数是直接从数据中学到的。
图2 3*3可变形卷积
1.3 轻量化结构
本文引入了Slimneck 设计范式,用于在降低网络计算复杂度和推理时间的同时,保持模型准确性。Slimneck 中的GSConv 降低了深度可分离卷积对模型性能的负面影响,首先对输入特征图进行下采样,然后深度卷积对其进行处理,并Concat 两个Conv 的结果;
最后shuffle 操作重洗数据,增强网络泛化能力。同时,本文在GSConv 的基础上继续引入跨级网络模块VoV-GSCSP,使用该模块代替Neck 中的CSP 模块,在降低网络结构和计算复杂性的同时,保持足够的精度。如图3所示。
图3 VoV-GSCSP模块
1.4 改进后的YOLOv8算法
图4是改进后的YOLOv8 模型。所作改进如下,在主干特征提取的尾部即SPPF 层前后第9层和第11 层融合了选择性注意力机制LSKBlock,该机制可以使网络更关注小目标的细节信息,通过自适应地学习这些细节特征,并与其他特征进行有效融合,从而改善织物中小疵点检测难的问题,提高网络整体的检测准确率;
其次将部分卷积层替换为可变形卷积,将C2f结构与DCN 结合得到C2f_DCN 卷积层,使网络更容易按照疵点目标形状提取特征,提升网络性能;
最后,在模型颈部引入轻量化范式Slimneck,原始的C2f 模块由VoV-GSCSP 代替,同时将主干部分中第5 层和第7 层的普通Conv 改进为提取特征更高效的GSConv,使Concat 后的特征更丰富,这种设计方式能最大程度地提高精度,并且在保持网络精度的同时适量减少网络的参数量。
图4 改进后的YOLOv8n
2.1 织物疵点数据集
本文采用两个织物疵点图像数据集。一个是常用的公共数据库TILDA,该数据库包含八种具有代表性的织物类别。根据纺织品图谱分析,定义了七个错误类别和一个正确类别。与文献[17]类似,选择了300张织物图像,将其分为正常、孔洞、污渍、划痕、携带和结头六类,并依次分别标记为e0~e5。其中每个类由50 个织物图像组成,将每个图像的大小调整为256×256像素,在实验中,将整个数据库的70%作为训练集,剩下的30%作为测试集。图5 展示了六类样本及其标签。
图5 TILDA数据库中的样本
另一个数据集中包含有阿里天池纺织品缺陷图像和实验室内拍摄的疵点图像[18-23],原始图像尺寸不一,经过处理后将所有图像调整为640×640像素,且对图像进行随机旋转变化、色彩变换、亮度调节及自适应对比增强等图像处理,以此增强数据集,提高网络的泛化能力。
经过预处理后的图片共5453张,包括破洞、跳花、污渍及长条状的纱线缺陷四种疵点类型,其中将断经、断纬、缺经、缺纬和并纬五种长条状的纱线缺陷划分为一类疵点。将四种疵点分别标记为e1~e4,图6展示了四种类型的疵点图像。
图6 疵点数据集中的部分样本
数据集中包含有6163 个疵点目标,其中包含跳花类疵点1688 个、破洞类疵点1532 个、污渍疵点1366 个和长条状的纱线缺陷疵点1577个。图7(a)显示了四种疵点目标框的中心位置分布,揭示了这些疵点目标框主要分布在图像的上下中心区域,呈现相对均匀的分布特征。图7(b)则呈现了疵点目标的各种形状和尺寸分布,表明数据集中包含许多小型目标以及极端长宽比的目标。
图7 疵点分布状况
图8 TILDA检测效果图
2.2 评价指标
本文算法主要采用精度(Precision,P)、召回率(Recall,R)和平均精度均值(mean Average Precision,mAP)作为评估标准,具体计算公式如下:
式中:TP表示成功预测为正类的部分,FP表示误报为正类的部分,FN代表了被错误预测为负类的部分,即漏检的情况。mAP代表平均精度的均值,它是一种衡量算法多类别检测的综合性能度量。AP由精确率-召回率曲线下的面积计算得到,mAP则是各个类别AP值的平均。
式中:k表示类别的数量。
2.3 实验环境
网络运行基于PyTorch 1.11.0 的深度学习平台,使用NVIDIA GeForce RTX 3090 加速计算,显存为24 GB,CUDA 版本为11.3,编译语言Python3.8。同时使用AdamW 优化器和指定的学习率来训练模型,初始学习率为0.001,训练批次设置为16,测试批次设置为1,按比例将数据集划分为训练集(70%)和测试集(30%),两个数据集分别训练300、100 epochs。
2.4 实验结果与分析
本文设计了三组实验,首先对LSKBlock、MHSA 和Biformer 这三种注意力机制进行对比分析,以选择最适合融入YOLOv8 的注意力机制。其次在公共数据集TILDA 上进行消融实验,以验证不同方法的改进效果。最后在织物疵点数据集上进行不同算法的性能比较,验证本文算法的有效性与先进性。
2.4.1 注意力机制对比
在YOLOv8n 模型的相同位置分别引入三种注意力机制LSKBlock、MHSA 和Biformer,进行了网络训练,并在相同配置下使用测试集进行性能评估。表1 展示了测试结果,明显可见,LSKBlock 注意力机制在提升网络性能方面表现出色,这进一步证实了它的高效性和先进性。
表1 不同注意力机制的表现对比(%)
2.4.2 消融实验
在公共数据集TILDA 上进行消融实验,以验证不同方法的改进效果,包括融和注意力机制、可变形卷积的引入以及模型轻量化。如表2所示,改进1 引入了LSKBlock,虽然精确率有所下降,但召回率提高至70.3%,mAP 提高至84.9%,说明模型能够识别更多的正例。由于在原模型中直接加入了两层注意力层导致模型深度增加,所以参数量较原模型略微增加;
改进2只引入了Slimneck,可以看到模型的参数量有很大幅度减少,相对较轻,而且性能上也有所提高,召回率提高了7.1个百分点,mAP 提升到85.9%,同时保持了与原模型相同的检测速度:2.3 ms;
改进3和4比较了在卷积层C2f_DCN提取特征的情况下分别引入Slimneck与LSKBlock的模型性能,两者检测性能都有提升,其中改进4的检测精度更高,但检测速度也更慢,而改进3中引入Slimneck模块降低了计算复杂度和参数量,进而节省了计算资源;
改进5同时引入了LSKBlock、Slimneck和C2f_DCN,此时模型性能最优,精确率与召回率均有提升,mAP 较原模型提高了4.1个百分点。同时参数量比改进4 中没有Slimneck结构的模型也有所降低。
表2 不同改进方法的实验效果
综上所述,不同的改进方法在性能和模型复杂度之间存在权衡。改进5 在性能上表现最佳,参数量较原模型增加不多,检测精度提升最大,虽然检测速度略微变慢,但由于YOLOv8模型速度非常快,所以这种幅度的减速并不影响实际生产中的检测速度。
2.4.3 不同织物疵点检测算法比较
在织物疵点数据集上验证本文算法的有效性与先进性。从表3 可以看出,改进的YOLOv8n,即本文算法可以准确检测数据集中的四种疵点,其中跳花检测精度可达97.6%、破洞检测精度为95.2%、污渍及长条状的纱线缺陷检测精度为88.5%和89.4%,而且相比原YOLOV8n 算法,跳花、污渍、纱线缺陷的AP 值均有提高。平均精度均值的提高说明模型识别正样本的能力总体得到提升。此外,跳花、破洞、污渍、纱线缺陷的识别准确率分别提高了1.2、1.6、2.6 和2.0个百分点。
表3 算法在织物疵点数据集上的改进效果(%)
为证明改进算法的先进性,本文将改进的YOLOv8n 算法与一些主流目标检测算法及改进的织物疵点检测网络模型[10]进行了mAP、权重以及检测效率方面的对比,结果见表4。经过改进的YOLOv8n的mAP值达到了92.7%,且2.5 ms就可以检测一张疵点图像(640×640),对比其它主流网络有很大提升,较原模型的mAP值增加了4个百分点。整体而言,本文改进的YOLOv8n 网络相比主流的目标检测模性更有优越性。
表4 织物疵点数据集中不同织物疵点检测算法的比较
鉴于织物缺陷检测在纺织工业中的重要作用,提出了一种基于YOLOv8的织物缺陷自动检测方法。该方法通过引入注意力机制、可变形卷积以及轻量化设计范式提高模型精度以获得更好的检测性能。在公共数据库和收集的织物图像上进行算法性能评估。几种改进方法在公共数据集和织物疵点数据集上都有不同程度的提升效果,在NVIDIA RTX 3090上测试,TILDA数据集中平均单张疵点图像检测速度可达2.8 ms,mAP 从84.5%提升到88.6%;
织物疵点数据集中平均单张疵点图像检测速度可达2.5 ms,mAP从88.7%提升到92.7%。同时与其他主流方法的比较表明,该方法的检测精度和速度都明显高于常见目标检测网络,满足实际生产中纺织品缺陷的自动检测任务。