改进YOLOv7的纸张表面缺陷检测研究
2024-01-06陈钰枚李兆飞
陈钰枚 李兆飞,2,3,* 侯 劲,2 赵 俊,2
(1.四川轻化工大学自动化与信息工程学院,四川宜宾,643002;2.人工智能四川省重点实验室,四川宜宾,644002;3.企业信息化与物联网测控技术四川省高校重点实验室,四川宜宾,643002)
在纸张的生产过程中,受生产工艺及现场环境等影响,纸张表面容易出现裂缝、孔洞、黑斑、线条、褶皱等缺陷或异常。本课题将超出预期模式范围数据的纸张表面缺陷统称为纸病[1]。在造纸过程中,要对纸张表面的纸病信息进行实时检测、处理,才能提高成纸的品质和质量,带来更大的生产利润。随着现代高速纸机的普遍应用,基于机器视觉的纸张表面缺陷检测方法已逐步取代人工检测方法[2]。卷积神经网络(Convolutional Neural Network,CNN)表面缺陷检测适用性广,可以在兼顾质量和效率的同时,实现智能化在线缺陷检测,克服传统纸病检测算法实时性低、精度不高等问题。赵晓等人[3]利用纸病区域为简单连通图像的特点,通过提取优化的连通区域标记和形状特征值,提高了纸病检测的准确率及效率;雷扬博等人[4]通过Markov 随机场理论对纸病图像纹理进行分析,得到纹理特征参数,对纸病区域进行分割,提高了分割的准确度;魏晓艳[5]利用BP神经网络,建立纸病分类器,对各种纸病进行识别;张璐[6]利用改进后的邻域均值滤波处理法,进行了纸病动态识别;高乐乐等人[7]提出基于CNN 的辨识方法,并对纸张进行纸病检测;冯雨[8]采用MSER 分割算法对图像进行预处理,并利用CNN 对纸病进行检测,但预处理技术会增加算法的运行成本,检测速度较低;曲蕴慧等人[9]结合迁移学习,改进CNN 网络,设计了一种适用于纸病图像的小样本深度CNN 分类器,但是对于实际纸机生产环境,迁移学习的适应性不强;毛艳玲等人[10]提出了轻量化的Mobilenetv3-YOLOv4 纸病检测网络,但其需要对纸病进行预处理,降低了算法速度,检测精度也较低;张开生等人[11]采用基于YOLOv5的算法,对纸病进行检测,但其检测速度不高,不适用于在线监测。目前,纸机生产速度快、幅宽长,产生纸病数量也会大概率增加,尤其是对于宽幅纸张的小目标纸病,常会出现漏检情况,严重影响成纸的品质,造成原料的浪费和企业生产效率的下降。利用CNN 提取图像特征时,随着卷积层数的加深,特征图分辨率逐渐减小,局部感受野能感知到原图像的范围不断扩大,越接近顶层的特征图越倾向于关注图像的全局信息,所以深层神经网络提取的深层特征非常不利于小目标纸病检测。王欣等人[12]在YOLOv3-Tiny 加入注意力模块(Convolutional Block Attention Module,CBAM);秦强强等人[13]将通道注意力(CA)模块和空间注意力(SA)模块相结合,均可以提升小目标纸病检测精度。
为了在保障一定速度的情况下,提高小目标纸病检测精确率,本课题在研究YOLO 系列[14]目标检测网络的基础上,借鉴前人的研究成果,选用精度更高、速度更快的YOLOv7 网络作为纸病检测算法,提出一种改进YOLOv7 的纸病检测方法。该方法的主干网络用于特征提取,通过引入注意力机制模块CBAM,提高纸病检测的精确性和算法稳定性;再将空洞空间卷积池化金字塔(Atrous Spatial Pyramid Pooling,ASPP)加入主干网络的空间金字塔池化(Spatial Pyramid Pooling,SPP) 中,在SSP 中加入ASPP 空洞卷积,可以在不丢失图像分辨率的情况下扩大特征图的感受野,高分辨率可以精确定位目标,有利于纸病缺陷目标提取,而不同的感受野可以感受不同的尺度信息,从而实现不同大小纸病缺陷的目标检测及分类目的。
1 YOLOv7网络模型
在COCO 公开数据集上5~160 帧/s的FPS范围内,YOLOv7 深度学习目标检测算法的检测精度和检测速度均超过了目前所有的目标检测算法[15]。所以本课题选用YOLOv7作为检测模型。
YOLO 系列网络均基本由3 个部分组成[16],YOLOv7 包括Backbone、FPN 以及YOLO Head 3 个部分,其网络模型如图1 所示。Backbone 是YOLOv7 的主干特征提取网络,输入的图片首先会在主干网络获得3 个有效特征层进行特征提取。FPN 是YOLOv7 的加强特征提取网络,3 个有效特征层会在这一部分进行特征融合,目的是结合不同尺度的特征信息,提高检测精度。YOLO Head 是YOLOv7 的分类器与回归器,其输入是3 个加强过的有效特征层,每1 个特征层都有宽度、高度和通道数,每个特征点上有3 个先验框,每1个先验框都有通道数个特征,以判断是否有物体与其对应。YOLOv7 所用解耦头可使分类和回归在一个1×1卷积里实现。
图1 YOLOv7模型结构图Fig.1 Structure of YOLOv7 model
2 改进YOLOv7算法
正常的卷积对图片中的物体提取特征时,并不特别关注部分重要的信息,而是把所有的信息当成相同权重进行处理,导致许多重要信息的损失。为了提升YOLOv7 对于小目标纸病的检测能力,在YOLOv7 的主干网络特征提取部分,将注意力机制模块CBAM 加入其中,再将ASPP空洞卷积加入主干网络的SPP中,能在不丢失图像分辨率的情况下扩大特征图的感受野,提高分辨率,进而精确定位纸病目标,有利于纸病缺陷目标的提取,而不同的感受野可以感受不同的尺度信息,实现不同大小纸病缺陷目标检测及识别。
2.1 引入CBAM
加入注意力机制能够抑制无关信息的干扰,保留待检测目标的更多关键特征,使网络关注到更多小目标纸病,提高检测精度。利用空间注意力机制有助于明确小目标位置,利用通道注意力机制可建模特征通道的重要程度,CBAM 同时关注了空间和通道维度特征,对于小目标纸病缺陷检测效果更佳[17]。
给定一个中间特征图后,CBAM 模块会沿着2 个独立的维度(通道和空间)依次推断注意力图,然后将注意力图乘以输入特征图以进行自适应特征修饰。通道上,将输入的特征图F(H×W×C)分别经过基于宽度、高度的全局最大池化和全局平均池化,得到2 个1×1×C的特征图;再将其分别送入1 个2 层的神经网络(MLP),第1 层神经元个数为C/r(r为减少率),激活函数为ReLu,第2层神经元个数为C,这个2 层的神经网络是共享的;而后,将MLP 输出的特征进行加和操作,再经过激活函数,生成最终的通道特征,即Mc;最后,将输出Mc的和输入特征图F相乘,生成空间特征模块需要的输入特征。空间上,将通道特征模块输出的特征图F作为本模块的输入特征图。首先设置1个基于通道的全局最大池化和全局平均池化,得到2 个H×W×1 的特征图,将这2 个特征图基于通道做通道拼接;然后经过一个7×7 卷积,降维为1 个通道,即H×W×1;再经过激活函数生成空间特征,即Ms;最后将该特征和该模块的输入特征做乘法,得到最终生成的特征。通道上模块具体计算如式(1)~式(4)所示,CBAM 具体计算如图2所示。
图2 CBAM结构图Fig.2 Structure of CBAM
式 中,σ为 激 活 函 数Sigmoid;W0∈RC/r·C,W1∈RC·C/r;f7×7为7×7的卷积。
2.2 引入ASPP
利用CNN 提取图像特征时,随着卷积层数的加深,特征图分辨率逐渐减小,局部感受野能感知到原图像的范围不断扩大,且越接近顶层的特征图越倾向于关注图像的全局信息,所以深层神经网络提取的深层特征非常不利于小目标检测。引入ASPP 可以进一步扩大感受野[18],使较小目标纸病的特征信息在网络传递时得到保留,有利于小目标纸病的提取,进而提高网络性能。ASPP由2部分并联组成:第1部分包含1 个1×1 卷积层和3 个3×3 的采样率为Rate={6,12,18}的空洞卷积层,卷积核数量为256,包含批标准化层;第2部分是图像级特征表示,具体操作是应用全局平均池化之后接着1 个卷积核为256 的1×1 的卷积层,最后再进行双线性上采样操作,得到所需的空间维度。ASPP 结构里存在4 种不同采样率的空洞卷积并行采样,空洞卷积能在不丢失图像分辨率的情况下,扩大特征图的感受野,分辨率高,可以精确定位纸病目标,而不同的感受野可以感受不同的尺度信息,通过并行组合不同采样率,可以获得多个不同尺寸的感受野,实现对任意大小纸病目标的分类目的。ASPP结构如图3所示。
图3 ASPP结构图Fig.3 Structure of ASPP
2.3 改进后的YOLOv7网络结构
改进后的YOLOv7 主干网路部分,在第1、2、3个Conv2D+BN+SiLU 模块和第1 个Multi_Concat_Block模块后面分别添加1 个CBAM 模块。前2 个CBAM 是在浅层网络加入,可以提升网络对于小目标纸病缺陷特征提取能力。第3 个CBAM 模块作用是在进行下一次特征融合之前,先对特征图进行特征加强操作。通过该改进,能使网络忽略无关纸病信息的干扰,着重关注关键纸病特征,并将相对重要的特征加以融合,使融合后的特征图包含更多有效纸病信息,提高小目标纸病定位精度。特征提取部分CBAM 从空间和通道2 方面加强了关键纸病信息的检测,保障算法稳定性。
在主干网路里面加入ASPP 可以进一步扩大感受野,使较小目标纸病的特征信息在网络传递时得到保留,进而提高网络性能。有利于小目标纸病的识别。改进后YOLOv7 网络如图4 所示,红色椭圆形为新加入的模块。
图4 改进YOLOv7算法结构Fig.4 Improved YOLOv7 algorithm structure
3 实验与结果分析
3.1 实验环境与评价标准
本课题所有模型实验环境为Linux 系统,ubuntu118.04,anconda4.12.0 & python3.8,CUDA11.6;软件采用Pycharm2022.1.1;框架pytorch1.12。GPU 为24 GB显存的NVIDIA GeForce RTX 3090,CPU为Gold 5218R。
2017年3月31日,财政部修订发布了《企业会计准则第22号——金融工具确认和计量》、《企业会计准则第23号——金融资产转移》和《企业会计准则第24号——套期会计》等三项金融工具会计准则。此次更新即是趋同国际会计准则,结合我国实际情况和需要进行的修订。本次修订也是金融工具相关准则自2006年发布后的首次修订。
精确率(P)、召回率(R)、平均精确率(AP)及平均精确率均值(mAP)作为网络的性能评判指标。在工厂检测纸张表面缺陷需要满足实时性,使用单张图片平均推断时间作为评价指标。在检测准确性评价指标方面,本课题选择在目标检测领域中常用mAP 0.5 和mAP 0.5:0.95 指 标,mAP 计 算 如 式(5)所示。
其中,AP 为精确率-召回率(P-R)曲线的曲线下面积。在计算P的过程中,首先设定预测框与真实框交并比(Intersection of Union,IoU)阈值,然后绘制预测框的P-R曲线,计算AP 值。mAP 0.5 指IoU 阈值取50%时的mAP 值。此外,将阈值从50%开始,以5%为步长逐渐升高至95%,得到不同IoU 阈值下的mAP,mAP 0.5:0.95即为所有mAP的平均值。
3.2 纸病数据集构建
3.2.1 纸病图像采集
研究中采用2 种方式采集纸病图像,分别从包装纸生产车间生产线上采集实际遇到的纸病和从实验室中通过实验室设备采集的纸张纸病。包装纸生产车间生产线上收集到的纸病图像是纸病诊断系统经过裁剪处理后的图像,实验室采集到的纸病图像是相机拍摄的原图,这些纸病图像大部分图片的长度和宽度不一样,为了统一图片尺寸大小并防止图片失真,采用背景插值法和图像外接矩形区域法对图片进行缩放。本课题纸病数据集一共有3500 张图片,包含了黑斑、亮斑、孔洞、折皱、裂缝5类纸病,部分原始纸病图像数据如图5所示。
图5 原始纸病图像数据Fig.5 Paper disease image data
3.2.2 纸病图像标注
所有采集的图像首先进行了图像缩放、翻转、长宽扭曲等数据处理,以增加训练样本的多样性、扩大纸病数据集规模;然后用labelimg 软件标注出目标区域及类别,纸病类别一共有5 类,分别为黑斑、白斑、孔洞、裂口、褶子。通过执行Python 脚本课题件把数据集按数量比8∶2 划分生成训练集和验证集。执行完结果在VOCdevkit/VOC2007 目录下生成文件夹YOLOLabels,存放的文件是图像的YOLO 格式的标注文件,在VOCdevkit 目录下生成images 和labels 文件夹,images 文件夹里有train 和val 文件夹,分别放置训练集和测试集图片;labels 文件夹有train 和val 文件夹,分别放置训练集和测试集标签(YOLO 格式),在YOLOvX 下生成了2 个文件YOLOvX_train.txt 和YOLOvX_val.txt。YOLOvX_train.txt 和YOLOvX_val.txt 是分别存放的训练图片文件和测试图片文件的列表,含有每个图片的路径和文件名。
3.3 对比实验
为方便比较,设计了消融实验来验证改进效果,改进后的YOLOv7 消融实验结果如表1 所示。由表1可知,引入CBAM 和ASPP 均不同程度地提升了网络性能;添加CBAM 模块可以加强小目标的特征信息提取,使模型的mAP 提升了1.4 个百分点;通过加入ASPP 模块,扩大感受野,模型的mAP 0.5 提升了0.9 个百分点。虽然加入的模块会降低网络的检测速度,但由表1可知,其对于速度影响较小,改进后的YOLOv7网络仍能保证纸病缺陷的实时检测。
表1 消融实验结果Table 1 Ablation experiment results
为了证明改进后的算法性能,表2 显示了改进后的YOLOv7 算法模型在本课题纸病数据集里面的性能指标对比。由表2 可知,改进后的YOLOv7 算法P比YOLOv7提高了1.5个百分点,R比YOLOv7提高了2.3 个百分点,mAP 0.5 比YOLOv7 提升了2.1 个百分点,mAP 0.5:0.95 提升了3.2%。对于本课题的纸病数据集来说,改进后的算法在保障了一定速度的情况下提升了P和R等指标精度。
表2 对比实验结果Table 2 Comparative experimental results
为了更好地验证所提出的改进YOLOv7算法的检测性能,采用检测准确率与检测时间2项指标,将本课题的改进YOLO 算法同现有基于CNN 的纸病分类算法与其余主流目标检测网络模型SSD、YOLOv5在自建数据集上的训练结果进行评估与对比,对比实验的结果如表3所示。由表3可以看出,本课题所提出的改进算法相较于基于SSD 的纸病类算法的mAP 0.5高3.5个百分点,速度快38.1帧/s,相较于YOLOv5提升了3.1个百分点,速度提升了38.2 帧/s,相较于YOLOv7,提高了2.1个百分点,且检测速度差异较小。
表3 传统算法对比实验结果Table 3 Traditional algorithm compares the experimental results
通过纸病数据集对改进YOLOv7 模型进行训练,纸病数据集训练结果图如图6 所示。图6 中从左到右前6个是训练的损失函数,分别为Box框的损失函数、不含目标类别的损失函数、类别的损失函数,后4个是指标变化图。由图6 可知,改进后的YOLOv7 算法loss 值不断下降并且收敛,训练精度不断上升,网络模型具有较好的收敛能力和学习能力。
图6 纸病数据集训练结果图Fig.6 Training result graphs for paper detect dataset
改进后的YOLOv7 算法检测结果如图7 所示,图片为经过Mosaic 增强拼接后的训练结果。其中0~4分别代表裂痕、孔洞、黑斑、亮斑、折皱5 种纸病类别。从图7 可以看出,改进后的YOLOv7 的速度比YOLOv5 快,精度也比YOLOv5 和YOLOv7 高,提升了纸病检测的效率和质量,提升了造纸机的出纸品质和效率,是一种有效的纸机纸病在线实时检测的有效算法。
图7 改进后的YOLOv7 算法检测结果Fig.7 Detection results of the improved YOLOv7 algorithm
4 结 论
本课题通过在YOLOv7 网络中加入注意力机制CA 和BAM 及空洞空间卷积池化金字塔ASPP,提升了网络对纸病检测的精度,其平均精确率均值mAP 0.5提升了2.1个百分点,检测速度超过78帧/s,且模型具有较好的鲁棒性,具有较高的纸病缺陷在线检测应用价值。研究中只检测了常见的5类纸病,后期可增加更多纸病类型;由于没有开源的纸病数据集,纸病数据集数量仅3500 张左右,导致训练模型的泛化性能不高,后期可采集更多的纸病图像,丰富数据集的规模;同时,可以考虑通过迁移学习策略提高纸病特征学习及检测效率;并对纸病进行预处理,放大小目标图像,进一步提高检测效率。