基于改进YOLOv5的织物缺陷检测

2024-02-27 03:45张胜利季坚莞
毛纺科技 2024年1期
关键词:织物注意力精度

陈 淼,张胜利,季坚莞

(浙江理工大学科技与艺术学院,浙江 绍兴 312369)

织物缺陷检测是织物生产过程中的一个重要环节。在织物生产过程中,难免会出现织物表面缺陷,比较常见的缺陷有破洞、污渍、刮擦、线头、断经、断纬等。对于这些缺陷,目前常用的检测方法为传统的人工检测,但是人工检测的质量及效率受人为因素影响比较大。根据统计,验布员平均专注工作时间为20~30 min,且每分钟通常只能验12 m2布料[1-2]。随着计算机视觉的发展,基于深度学习的研究方法在许多行业达到了很好的应用[3],在织物缺陷检测也有相应的应用。

目前,针对织物缺陷检测的研究方法主要可分为两大类:一类是基于传统机器视觉的处理方法,另一类则是采用深度学习的检测算法。其中基于传统机器视觉的处理方法包括基于统计[4]、频谱[5]、模型[6]及基于字典[7]等方法,但是由于织物表面纹理复杂,缺陷和纹理很难区分,传统的检测方法只能在特定条件下检测,通用性较差,难以满足工业上的需求。

随着深度学习技术的进步,基于深度学习的研究方法也取得了显著的成果。Mei等[8]提出了一种多尺度卷积去噪自动编码网络模型,该方法通过卷积去噪网络在多个高斯金字塔层上重建图像块,并从相应的分辨率通道合成检测结果,每个图像块的重建残差用作像素级预测的直接指标,通过在每个分辨率级别上分割和综合重建残差图,最终实现缺陷检测。Jing等[9]提出了一种基于Mobile-Unet模型实现端到端的缺陷分割,使用轻量化MobileNetV2特征提取器作为编码器,减少了模型的参数和计算量。Jia等[10]提出了一种基于改进Faster R-CNN的织物缺陷检测,将Faster R-CNN中网络结构区域生成网络(RPN)与多尺度特征金字塔(FPN)相结合,并引入感兴趣区域(ROI)池化层,生成具有更丰富语义信息的候选区域,达到很好的预测结果,但实时性有待改善。周君等[11]提出一种基于S-YOLOv3模型织物缺陷检测方法,通过批归一化层中的缩放因子γ评估每个卷积核的权重,将权重值低于阈值的卷积核进行剪枝,得到轻量化模型S-YOLOv3,提高了检测效率。Borchers等[12]提出了一种重复模式缺陷网络(RPDNet)模型,通过重复模式检测器来检测织物图像中的周期性模式,获取重复模式信息并在高级语义空间中对网络进行适当的引导,实现了理解周期特征知识和强调潜在缺陷区域的能力,实现了轻量级的织物缺陷检测。

整体而言,以上方法都可以实现织物缺陷在特定条件下的有效检测,但是对于通用性、实时性及小目标检测能力都还有待于提高。针对以上问题,本文提出一种基于改进YOLOv5模型的织物缺陷检测算法,在提高精度的同时,对小目标检测有很好的识别能力,且实时性好,满足工业需求。

1 YOLOv5 初始模型

YOLOv5模型是一种one-stage的目标检测算法,主要包括输入、骨干网络(Backbone)、颈部结构(Neck)、头部预测(Head)和输出。Backbone是模型的主要部分,用于提取输入图像特征。Neck是连接Backbone和Head的中间层,用于降维或调整Backbone的特征。Head是模型的最后一层,它将经过Neck处理后的特征作为输入,产生最终的输出。YOLOv5有5种不同尺寸预训练模型,分别为YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x、YOLOv5n,每个尺寸具有不同的深度和宽度,各模型在复杂度、速度及准确度方面存在差异。其中,YOLOv5s权重值最小,收敛速度最快,但是准确度会低一点,综合考虑织物缺陷检测的准确性和实时性,最终选择基于YOLOv5s模型进行设计,其网络结构如图1所示。

图1 YOLOv5s 网络结构图Fig.1 YOLOv5s network architecture diagram

2 改进的YOLOv5网络

2.1 增加CBAM注意力机制

CBAM(Convolutional Block Attention Module)[13]是一种注意力机制,用于在卷积神经网络中增强特征表征能力。CBAM包括通道注意力模块(Channel Attention Module)和空间注意力模块(Spatial Attention Module)。由于织物图像通常包含大量的纹理和细节[14],这些细节需要通过空间关注图像中的特定区域以检测细微的纹理差异;此外,织物通常涵盖不同颜色和亮度的区域,通道注意力能够动态选择突出哪些通道,从而识别与不同颜色和亮度相关的特征。在YOLOv5骨干网络中加入CBAM注意力机制,自适应地调整特征图的通道和空间维度注意力权重,提高了特征的建模,从而提高了特征的表征能力。CBAM网络结构如图2所示。

图2 CBAM结构图Fig.2 CBAM architecture diagram

(1)

(2)

2.2 特征融合改进

随着网络的加深,各个网络层级上的特征也差异明显。考虑到织物缺陷具有多样的尺度和大小,传统的特征金字塔网络(FPN)通过自顶向下的方式从底层特征逐步上采样生成不同尺度的特征金字塔。然而,这种自顶向下的单向信息传递可能导致小目标特征信息的丢失和模糊[15]。YOLOv5中Neck层使用的PANet是在FPN的基础上增加一条相反的自底向上的路径,用于不同的特征层之间的信息传播,但多层级信息聚合可能会导致过多的上下文信息,从而导致信息聚合不均匀,使模型难以集中在小目标上,降低了小目标的检测能力。为了使高层级获得足够的特征信息,提高小目标检测的能力及准确性,设计采用Bi-FPN[16]代替PANet。Bi-FPN由多个层级组成,每个层级包括了自底向上和自顶向下的2个分支,通过双向信息传递和特征融合,且引入了双线性注意力融合机制,利用双线性插值技术将来自不同层级的特征进行融合,更好地保留多尺度特征信息,并且提供更好的上下文感知能力。同时,在同一层的输入和输出节点之间引入了侧向连接,在不增加代价的同时融合更多的特征。另外,Bi-FPN通过双向的特征传播机制,实现特征图的高效计算和传递。FPN结构如图3(a)所示,PANet的结构如图3(b)所示,Bi-FPN的结构如图3(c)所示。

图3 Neck改进前后结构图Fig.3 Structure diagram before and after Neck improvement

2.3 优化损失函数

YOLOv5采用的损失函数是CIOU Loss,CIOU Loss综合考虑重叠面积、中心点距离和长宽比3项,在小目标检测中具有良好的效果,但是CIOU Loss纵横比描述的是相对值,存在一定的模糊问题,不利于收敛,且没考虑到难易样本的平衡问题。由于织物样本的难易程度及类别数量各不相同,所以设计采用Focal EIOU Loss[17]代替CIOU Loss。Focal EIOU Loss是由EIOU Loss和Focal Loss整合而成。其中,EIOU Loss考虑了边界回归的纵横比问题,EIOU的惩罚项是在CIOU的惩罚项基础上将纵横比的影响因子拆开分别计算目标框和锚框的长和宽,该损失函数包含3个部分:重叠损失,中心距离损失,宽高损失,前2个部分延续CIOU中的方法,但是宽高损失直接使目标盒与锚盒的宽度和高度之差最小,使得收敛速度更快,其计算公式如式(3)所示。其次,由于织物图像背景比较多且复杂,且具有不同的尺寸和形状,一些小型或模糊的缺陷难以准确检测,会在训练时出现很多候选框和负例现象,从而造成样本难易不均衡,Focal Loss会设定不同梯度,将错误率大的地方设定更高的梯度,从而更加关注难的样本识别,解决预测框回归中的样本难易不平衡问题,其计算公式如式(4)所示。Focal EIOU Loss的计算公式如式(5)所示。

LEIOU=LIOU+Ldis+Lasp=

(3)

(4)

LFocal-EIOU=IOUγLEIOU

(5)

式中:LIOU是重叠损失函数;Ldis是中心距离损失函数;Lasp是宽高损失函数;IOU是真实框与预测框的交并比;b、bgt为2个框的中心点;ρ为2个中心点的欧式距离;w、h为框的宽度和高度;c为能够同时包围2个框的最小对角线距离;ch、cw为以2个框中心点构成的矩形的高和宽;β用于控制曲线的弧度;x代表真实值与预测值的差值;e为自然常数;C为常数;γ为控制异常值抑制程度的参数。

2.4 改进的网络结构

改进的网络结构如图4所示。其中CBAM注意力机制加在骨干网络的空间金字塔池化层(SPP)层之上,以提高网络的特征关注能力。同时,在颈部结构中使用Bi-FPN网络提高了多尺度特征的平衡能力。此外,使用Focal EIoU Loss损失函数,有利于网络的收敛性并有效解决样本难易不平衡问题。

3 结果与分析

3.1 实验平台

本文基于Pytorch深度学习框架进行模型的训练及测试,系统采用centos 7.8.2003,其配置环境如表1所示。

表1 配置环境Tab.1 Configure environment

3.2 数据集

实验中使用的数据集是阿里巴巴云天池[18]挑战赛公开的数据集。该数据集由20种织物缺陷类别,但是由于每个类别的数量各不相同,有的类别很少,且有的类别可以归为一类,所以经过人工分类和筛选,共选出6 789张图片,分为12个缺陷类别,分别为污渍、破洞、结头、三丝、浆斑、色差档、磨痕、纬纱不良、吊经、断经、死皱、浪纹档,用数字1~12表示。将数据按8∶1∶1划分为训练集、测试集和验证集。

3.3 评价指标

衡量织物缺陷检测算法的性能指标主要有精确率P(Precision)、召回率R(Recall)、平均精度AP(Average Precision)和平均精度均值mAP(Mean Average Precision),其计算公式如下:

(6)

(7)

(8)

(9)

式中:P表示预测样本为正例的比例;R表示预测正例的样本与所有正样本的比例;TP表示正确预测样本的个数;FP表示错误预测样本的个数;FN表示样本被漏检的个数;P(R)表示PR曲线;AP表示平均精度,指的是某一类别的PR曲线下的面积;mAP表示所有类别AP的平均值,C为类别个数。

3.4 网络训练

本文实验将训练迭代300次,权重系数为0.000 5,批大小为16,采用Adam优化器。图5显示了改进前后损失值随着训练轮次的变化曲线。随着训练轮次的增加,损失值快速下降至平缓,说明训练没有发生过拟合现象,且改进的网络损失值下降得更快,表明改进的模型效果要优于原始模型。

图5 改进前后损失函数曲线Fig.5 Loss function curves before and after improvement. (a)Train loss function curves;(b)Val loss function curves

3.5 消融实验

为了验证本文添加的注意力机制在YOLOv5s上的有效性,添加SE、ECA、CBAM 注意力机制进行对比,得到各mAP值如表2所示。

表2 不同注意力机制比对实验Tab.2 A comparison experiment of attention mechanisms

由表2可知,在YOLOv5s骨干网络中添加了3种注意力机制与原网络相比。具体而言,添加SE注意力后,平均精度均值下降0.6个百分点,而添加其他2种注意力机制平均精度均值都有一定的提升。其中添加ECA注意力机制,平均精度均值提升了0.8个百分点,添加CBAM注意力机制,平均精度均值提升了1.6个百分点。所以本文设计采用在骨干网络添加CBAM注意力机制。

接下来,对CBAM注意力机制、Bi-FPN网络结构以及Focal EIOU Loss逐一进行添加和删除实验,其结果如表3所示,“√”表示使用此方法,“×”表示未使用此方法。从表3可见,仅添加CBAM注意力机制与原始算法对比,精确率提升了1.1个百分点,召回率提升了1.4个百分点,平均精度均值提升了1.6个百分点,这是因为该注意力机制能够关注数据集中的纹理细节、颜色以及亮度区域。另一方面,仅添加Bi-FPN时与原始算法对比,精确率提升了1个百分点、召回率提升1.2个百分点,平均精度均值提升了1.3个百分点,这是因为数据集中的缺陷具有多种尺度,提高了小目标的检测能力。当仅引入Focal EIOU Loss与原始算法对比时,精确率提升了0.4个百分点,召回率提升了0.7个百分点,平均精度均值提升了0.9个百分点,这是因为数据集存在类别不平衡问题,引入Focal EIOU Loss能够平衡各类别权重,并提高目标定位精度。当加入CBAM注意力机制和采用Bi-FPN网络与原始算法对比时,各项指标进一步提高,其中精确率提高了2个百分点,召回率提高了2.5个百分点,平均精度均值提高了3个百分点。最后,将这3种方法融合后,与原算法相比,各项指标均达到最佳水平。其中,精确率提高了2.8个百分点,召回率提高了3.6个百分点,平均精度均值提高了4.7个百分点。这一系列的实验证明了本文的改进模型在所使用的数据集上的有效性。

表3 消融实验结果Tab.3 Results of ablation experiments

3.6 对比实验

为了验证本文模型的可靠性,在相同实验环境下采用SSD算法、Faster R-CNN算法、YOLOv5s、YOLOv5m及本文的算法的精确率、召回率、平均精度mAP值、检测速度(FPS)进行对比实验,结果如表4所示。

表4 对比实验结果Tab.4 Comparison of experimental results

由表4可知,相对于SSD、Faster R-CNN、YOLOv5s和YOLOv5m,本文算法的mAP值分别提升了21.2、9.9、4.7和0.8个百分点。在检测速度FPS方面,本文算法表现优于SSD、Faster R-CNN和YOLOv5m,但略低于YOLOv5s算法。这是因为引入CBAM注意力机制后,需要额外参数来学习注意力权重,导致计算量增加。总的来看,本文算法不仅提高了目标定位和检测精度,同时也满足了工业实时性的要求。

图6展示了模型改进前后部分验证集的检测效果。在图6(a)中,由于背景纹理的影响,YOLOv5s将背景信息误认为缺陷信息,导致定位不准确。在图6(b)中,虽然2种算法都正确识别了类别,但缺陷部分纹理信息不清晰,导致YOLOv5s的定位不精准。在图6(c)中,由于2个缺陷位置部分重叠,YOLOv5s受到缺陷之间特征的影响,出现误检现象。而在图6(d)中,出现了尺度不同的多个目标,导致YOLOv5s漏检了一些小目标。综合来看,本文算法的置信度高且定位更准确,整体提高了对缺陷的分类识别能力和检测精度。

图6 模型改进前后对比检测结果Fig.6 Comparison of detection results before and after model improvement.(a)Image 1;(b)Image 2,(c)Image 3;(d)Image 4

4 结束语

为进一步提升织物缺陷检测的精度,通过提出改进YOLOv5的织物缺陷检测方法,在特征提取阶段,通过增加CBAM注意力机制,增强特征提取能力;在特征融合阶段,通过改进特征融合网络,引入Bi-FPN网络,增强小目标织物缺陷的检测能力,进一步提高模型的检测精度和降低漏检率;同时在检测端引入Focal EIOU Loss损失函数,提高模型收敛速度和检测精度。实验结果表明,改进后的算法平均精度均值mAP值达到了84.5%,比原研究算法提高了4.7%,较好地解决了织物缺陷检测的漏检、误检和精度低的问题,对织物缺陷的智能化检测具有重要的意义。

猜你喜欢
织物注意力精度
无Sn-Pd活化法制备PANI/Cu导电织物
让注意力“飞”回来
《纺织品织物折痕回复角的测定》正式发布
竹纤维织物抗菌研究进展
基于DSPIC33F微处理器的采集精度的提高
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
GPS/GLONASS/BDS组合PPP精度分析
织物柔软剂的香气发展趋势
改进的Goldschmidt双精度浮点除法器