基于改进YOLOv5算法的织物疵点检测系统

2022-11-15 06:08谢团结林贤伟胡连信严明华王泽峰
棉纺织技术 2022年11期
关键词:疵点池化织物

谢团结林贤伟胡连信严明华王泽峰

(1.湖州师范学院,浙江湖州,313000;2.湖州市菱湖万事美毛纺织有限公司,浙江湖州,313009)

纺织业是我国国民经济的支柱型产业和重要的民生产业,也是我国国际竞争优势明显的产业,在繁荣市场、扩大出口、吸纳就业、增加收入、促进城镇化发展等方面发挥着重要作用[1]。在我国纺织业发展的过程中,织物质量是影响织物价格的关键因素,有疵点的织物比没有疵点的织物价格降幅达50%[2]。为了提高产业经济效益,需要对织物疵点进行检测。当前织物疵点检测主要依靠人工目测的方式完成[3],人工目测不仅人工成本高,而且肉眼在对织物进行检测的过程中,极易产生疲劳反应,直接影响织物的细微疵点检测。

国内外针对织物疵点,提出了许多相关检测算法。按照检测方法的不同,能够将这些研究算法分为4大类。一是基于统计的方法。该类方法是利用织物疵点图像的灰度像素值,通过计算这些像素值得到描述图像纹理特征的统计量。邹超设计了一种基于模糊类别共生矩阵的织物疵点在线检测系统,有效提高了织物疵点检测的速度[4]。LATIF-AMET A等人提出应用共生矩阵对织物疵点进行检测[5]。二是基于频域的方法。KARLEKAR V V等人提出了一种结合小波变换和形态学的织物疵点检测方法[6]。李益红等人提出基于Gabor滤波器的均值归一化方差算法,降低了运算量,提高了准确率,达到了93%[7]。三是基于模型的方法。该类方法主要是在图像层面构建模型,通过假设检验的方法判断织物纹理是否符合所建立的模型。常用的模型方法有自回归模型[8-9]和马尔科夫随机场[10-11]。该类方法最大的缺点是不易识别小疵点。四是基于学习的方法。唐有赟等人提出了一种基于轻量级模型的经编织物疵点在线检测算法,这个算法在满足经编织物疵点检测精度的基础上,具有更快的检测速度,是目前人 工检测速 度 的4倍~6倍[12]。ZHENG L等人提出了一种基于改进YOLOv5的织物疵点检测系统探测器,该算法能快速准确地提高织物疵点检测和疵点定位的准确性[13]。

1 系统设计

本研究设计的织物疵点在线检测系统结构如图1所示。该系统硬件由相机、光源、下位机、嵌入式微控制器、警报器组成,软件用python语言编写,PC界面采用pyqt设计,数据库采用MySQL。首先训练织物疵点检测模型,然后把训练好的模型搭载到下位机上,计算机通过读取摄像头录取的视频对织物进行识别。并把识别到的结果通过ffmpeg推流应用传到rtmp视频流服务器,上位机通过读取rtmp视频流在前端进行显示。如果发现了织物疵点,警报器就会发出响声,并停止机器的运行,提醒工作人员织物出现了疵点,所有的织物疵点都会存储在数据库中,对织物质量提供参考。

图1 系统结构图

2 YOLOv5模型与改进

2.1 YOLOv5模型

YOLO[14]是 单 阶 段 目 标 检 测 的 算 法,YOLOv5模 型 分 为Input、Backbone、Neck、Prediction 4个部分。

2.1.1 Input

Input包含Mosaic数据增强、自动锚框计算和自适应图片缩放。Mosaic数据增强随机将4张图片进行拼接,丰富了图片的背景,增加了很多小目标,让网络的鲁棒性更好。YOLOv5中将计算锚框的功能加入到代码中,每次训练时,自动计算出训练集中的最佳锚框值。YOLOv5的自适应图片缩放,是为了提高推理速度,自适应图片缩放相比于统一缩放,能够减少图片冗余信息和计算量,推理速度也得到了提升。

2.1.2 Backbone

Backbone模块主要是由Conv结构、CSP[15]结构、SPPF[16]构成。Conv结构包括Conv2d二维卷积,BatchNormal,SiLU激 活 函 数。Conv结 构 负责对特征图进行特征提取,并更改特征图通道数。CSP结构主要通过减少网络优化中的梯度信息重复,减少神经网络计算量。YOLOv5的CSP结构有两种不同的结构,一种为带残差结构的,一种为不带残差结构的。SPPF主要作用是为了增强特征图的表达能力。

2.1.3 Neck

Neck部 分 采 用FPN[17]+PAN[18]结 构,FPN是自顶向下,对特征层进行下采样,将高层的强语义特征传递下来,使得所有尺度下的特征都有丰富的语义信息。FPN中间经过多层的网络后,底层的目标信息已经非常模糊了,PAN加入了自底向上的路线,对特征层进行上采样,弥补并加强了定位信息。

2.1.4 Prediction

Prediction使用了二维普通卷积,其采用了CIoU_Loss[19]计算位置损失,以及BCEWithLogits_Loss计算置信度损失和分类损失。CIoU_Loss和BCEWithLogits_Loss的计算如公式(1)和公式(2)所示。

式中:α为权重;ν为衡量长宽比的相似度;b,bgt分别表示预测框和目标框的中心点,两者之间距离采用欧式距离ρ;c表示能同时包含预测框和目标框的最小包围框的斜距。

式中:n为样本总数;wn为权重调节系数;yn为数据标签值;xn为数据预测值;σ为Sigmoid函数。

2.2 改进YOLOv5模型

在纺织产业中,织物疵点更多是比较细微的,很难被发现。YOLOv5作为单阶段检测的算法,相对于二阶段检测Faster RCNN,存在着对小目标识别不够准确的缺陷。模型对于比较细微的织物疵点,检测精度无法满足工业需求,存在检测精度低和漏检等情况。本研究针对织物疵点较细微、不易识别的特点,添加卷积注意力模块(CBAM)[20],提高对小目标的检测精度和识别效果。CBAM是一种结合了空间和通道的注意力机制模块,能够增强重要特征的表达能力,抑制无相关噪声信息,进而提高检测精度。

本研究提出的算法模型如图2所示。由于特征层SPPF的输出包含比较多的特征信息,经过卷积之后会损失特征图特征。为了提高模型整体识别精度,并控制模型的大小,本研究把第4个Concat连接层提前到SPPF,具体连接线如图2虚线连接线所示。融合更多的特征层以及学习更多的特征,加快了模型收敛速度,提高了整体精度,获得了更好的效果。为了提高模型检测小目标的精度,本研究提出了将CBAM模块添加到第一个CSP模块之后的方法,具体位置如图2虚线框包围的CBAM所示。通过在CSP模块之后添加CBAM模块,增加网络的深度,并让网络更加关注特征图的重要信息,提高网络的表达能力,进而提高识别精度。

图2 改进YOLOv5结构图

CBAM模块如图3所示,包括通道注意力模块和空间注意力模块。通道注意力模块在通道提取特征图的特征,空间注意力模块在空间提取特征图的特征。CBAM既关注通道特征,又关注空间特征,更有利于小目标的识别。

通道注意力模块结构如图4所示。输入特征层分别进行通道全局最大池化和平均池化,然后经过共享权重层,接着对输出1和输出2进行加和操作,最后经过Sigmoid激活函数,输出特征层。该模块负责对通道特征进行增强,提取通道上的重要特征信息,通过平均池化与最大池化平行计算,使通道上的特征信息更加明显,该模块的计算过程如公式(3)所示。

图3 CBAM结构

图4 通道注意力模块结构

式中:σ为Sigmoid激活函数;MLP为共享权重层;F为输入特征图;MaxPool为通道全局最大池化;AvgPool为通道全局平均池化。

空间注意力模块结构如图5所示。输入特征层分别进行空间全局最大池化和平均池化,然后对输出进行特征堆叠,接着对堆叠后的特征进行卷积操作,最后经过Sigmoid激活函数,输出特征层。该模块负责对空间特征进行增强,提取空间上的重要信息,并通过Concat连接计算,将最大池化与平均池化的信息融合,使空间上的特征信息更加明显,该模块的计算过程如公式(4)所示。

图5 空间注意力模块结构

式 中:σ为Sigmoid激 活 函 数;F为 输 入 特 征图;MaxPool为通道全局最大池化;AvgPool为通道全局平均池化;f7×7为7×7大小的卷积核;Concat为连接操作。

3 数据预处理

3.1 数据集采集

本研究使用的织物疵点数据集来自于浙江湖州某纺织工厂。在工业生产过程中,工业相机价格昂贵,普通工业相机在1万元起,成本较高。为了实现降低成本以及提高系统在纺织行业的适用性,本系统选择用普通相机替代工业相机,并达到工业需求标准。因为网络上公共织物疵点数据集种类繁杂、大小不一、分辨率不同,硬件设备也不同,基于此数据集训练得出的模型,很难适用于定制化的纺织工厂,所以本研究直接采用工厂数据,并通过扩容得到大容量数据集用于机器学习,以达到对工厂织物疵点的精确识别。调研发现,纺织厂的疵点类型主要有破洞、毛疵、斑点,本研究对这3种疵点进行收集,一共收集到710张不同类型的疵点织物,图片大小为1 280 pixel×720 pixel。

3.2 数据集扩容

一般而言,神经网络需要大量的参数,比如AlexNet参数量为60 965 128,但是大量的参数需要更多的样本数据进行机器学习训练,才能达到令人满意的效果。而在实际情况中,真实的样本数据很难采集。例如在纺织工厂,平均200 m的织物才会出现1个~2个疵点。针对数据量太少的问题,本研究采取水平翻转、上下翻转的方法对疵点织物数据集进行扩容处理,以增加数据量。对数据所做的处理如图6所示。

图6 数据扩容

3.3 数据标注

本研究使用labelImg标注工具对数据进行标注,标注数据的格式为YOLO格式。本研究将标注的织物疵点分为3类,分别为斑点、毛疵、破洞。将标注好的织物疵点数据集按7∶1的比例分为训练集、测试集。

4 试验与分析

4.1 试验配置

本系列试验进行机器学习训练的操作系统为Centos7.9,CPU为Xeon(R)Sliver 4214,GPU为TITAN RTX,显存为24 GB,充足的显存为试验的顺利进行提供了保障,并缩短了机器学习的时间。深度学习框架选择了Pytorch1.7,Cuda为Cuda10.0版本,程序语言为Python3.7。

4.2 网络训练

改进前与改进后算法所采用的超参数相同。其中学习率为0.01,动量为0.937,权重衰减为0.000 5,优化器为SGD,批量大小为90,轮数为300。本研究提出的改进YOLOv5与原始YOLOv5算法在训练时的损失值变化过程如图7所示。

图7 损失值变化过程

改进算法的位置损失、置信度损失和分类损失收敛速度都更快并且损失值也更小。对于位置损失和置信度损失,在训练轮数为300左右时,改进算法的损失值普遍小于原始算法。对于分类损失,在训练轮数为300左右时,改进算法和原始算法的损失值趋向于相等,但改进算法在训练轮数为100左右时,损失值逐渐平缓,原始算法在训练轮数为150左右时,损失值才逐渐平缓。通过对比,本研究提出的算法更易于训练,并且损失值更小。

4.3 结果与分析

本研究将改进YOLOv5与原始YOLOv5进行比较,在织物训练集上,两者的性能参数如表1所示。可以看出,改进算法相比于原始算法精确率提高了0.9个百分点,召回率提高了1.9个百分点,mAP@0.5提高了0.2个百分点,mAP@0.5∶0.95提高了2.4个百分点,这得益于本研究提出的算法融合了更多的特征,并加入了CBAM模块,增强重要特征的表达能力,进而从训练数据中学习到更多的特征,表现出比原始算法更好的性能。

表1 训练结果性能对比

把训练好的改进YOLOv5模型与原始YOLOv5模型在测试集上进行测试,两者模型部分图片测试结果如图8所示。改进模型对斑点的置信度为0.61,对毛疵的置信度为0.67,对破洞的置信度为0.91;原始模型对斑点没有检测出,对毛疵的置信度为0.55,对破洞的置信度为0.86。改进算法相对于原始算法对织物疵点有更高的置信度,识别效果更好。

改进YOLOv5模型和原始YOLOv5模型在织物测试集上的PR曲线如图9所示。

图9 PR曲线

从PR曲线能够看出,改进模型相比于原始模型的曲线面积更大,在织物测试集上的识别效果更优。

改进YOLOv5模型和原始YOLOv5模型测试结果性能对比如表2所示。在织物测试集上,改进模型的参数相比于原始模型参数增加了131 682,mAP@0.5提高了2.1个百分点,检测速度差别不大,在TITAN RTX GPU上,帧数仅相差18帧。本研究提出的算法,在检测速度比原始算法降低比较小的情况下,对织物疵点检测的精确度更高。

表2 测试结果性能对比

5 结语

针对现在织物疵点基本靠人工目测,存在人工成本较高、检测效率低、容易漏检等问题,本研究基于原始YOLOv5算法对其改进,设计了一种自动化检测织物疵点的系统。针对原始算法识别精度不高的问题,以及织物数据集疵点比较细微难以识别的问题,改进算法通过融合更多的特征层,在原始算法加入CBAM模块,从而提高对织物疵点检测的精度。相比于原始YOLOv5算法,改进YOLOv5算法的mAP@0.5提高了2.1个百分点。本研究算法对于纺织厂的织物疵点能够更好地识别,从而提高织物良品率以及产业收益。

由于纺织厂织物疵点的数据量少,公共织物疵点数据和纺织厂织物疵点数据不相同,包括织物的疵点、材料以及颜色不一致。因此,本研究的数据集并不全面,后续会增加织物疵点的数据量,优化织物检测算法,以获得更大的性能提升。

猜你喜欢
疵点池化织物
基于高斯函数的池化算法
无Sn-Pd活化法制备PANI/Cu导电织物
《丝绒织物》等103项纺织行业标准发布
基于Cascade RCNN 和二步聚类的织物疵点检测
卷积神经网络中的自适应加权池化
《纺织品织物折痕回复角的测定》正式发布
基于总变差的织物疵点分割方法
竹纤维织物抗菌研究进展
喷丝板疵点检测系统设计
基于FPGA的图像疵点处理设计与实现