徐红牛,余华云
(长江大学计算机科学学院,荆州 434023)
铝合金、钢材等材料,板材与卷材的表面划痕直接影响到产品最终品质与定价,个别划痕甚至会影响下一个阶段产品的安全可靠性,所以对于工业检测中的划痕检测一直是非常关键的环节。在生产流水线中,无论板材、卷材的表面划痕检测目前依然依靠质检员目检完成,工作环境要么是在生产线上,要么以吊装抬升,工人站立于板材下方检测两种方式,目检不仅效率低下,还存在生产安全隐患,亟需利用人工智能技术手段将智能设备部署于生产线上,提高人工智能表面检测范围,将人工目检作为辅助性检测手段,提高检测效率与质量,保障生产安全。
目前,基于深度学习的工业铝片缺陷检测网络可在结构上划分为以Faster R-CNN[1]为代表的两级网络和以SSD[2]或YOLO[3-6]系列为代表的一级网络。由于多尺度特征提取和检测速度快等优点,单阶段检测方法更适合满足上述要求。YOLOv4以one-stage检测方法为代表,通过引入CSPNet[7]结构和PANet[8]结构在两个特征金字塔中融合相应的尺度特征,增强不同尺度目标的检测能力。
针对复杂多样的工业铝片检测问题,DING等[9]提出了一种表面的缺陷检测网络(TDD-Net),该方法的特征金字塔融合了多尺度和金字塔层次结构,检测精度达到98.90%,缺点是检测速度较低;程婧怡等[10]提出一种基于改进YOLOv3的缺陷检测算法,融合浅层特征与深层特征,该方法适用于尺寸小和特征模糊的目标平均检测精度为67.64%;ZHAO等[11]在YOLOv4架构的基础上进行创新,在模型颈部添加特征金字塔网络模块,提高了对金属材料表面缺陷的检测精度;李庆党等[12]提出了基于YOLOv3的钢板缺陷检测方法,采取了增加尺度的方法来提高缺陷检测的精度;李澄非等[13]提出的基于改进的YOLOv4的铝材表面缺陷检测方法;LIU等[14]在偏振器检测网络中采用深度可分离卷积代替全卷积,得到的模型大小为290 kb,每幅图像的时间为127 ms;陈国防等[15]基于数据增强深度学习的苹果花检测方法研究,采取了离线在线两种方式增强数据集的泛化能力;刘浩等[16]对YOLOv3算法进行改进并应用在机床刀具表面缺陷检测上,代替现有人工目检对刀具进行缺陷检测。
由于原YOLOv4网络结构复杂、模型体积大、硬件性能高,无法满足实际工业检测。如果能够优化检测速度和精度,可以降低系统的设备要求和投资成本,更好地扩大应用范围。因此,本文研究在YOLOv4的基础上进行了轻量级改进,利用深度可分离卷积重构网络结构以压缩网络规模。加入修改SPPF模块和通道注意力机制模块,提高了轻量级模型对多尺度目标的检测精度。提出的检测方法精度高、体积小、效率高,解决了现有检测方法无法兼顾速度和精度的问题,为后续铝片工业生产提供了重要的理论基础。
YOLOv4用CSPNet作为主干网络的构建,从网络结构设计的角度来看,它主要解决了推理中重复梯度信息的问题,基础层的特征图因此被分成两部分。然后使用跨阶段的层次结构将它们集成在一起,以确保准确性,同时最大限度地减少计算量。其结构如图1所示,它的结构包括前向网络、多尺度检测头和后向网络。前向网络由多个块组成,包括CSPDarknet53、SPP、FPN、Neck和Upsample,其中CSPDarknet53模块是基于ResNet结构实现的,它可以有效提高网络性能。多尺度检测头有3个网络:YOLOv3、SPP-YOLOv3和Panoptic-YOLO,它们可以从不同尺度检测不同大小的目标。后向网络由多个训练模块组成,包括损失函数模块、梯度模块、参数优化模块和模型评估模块,用于实现端到端的训练和预测。
图1 YOLOv4结构示意图
为了提高网络的特征提取能力,在网络中引入了挤压与激励模块。本文在原有的通道注意力机制结构上将全连接改成普通卷积。如图2所示,是本文实际使用的SE模块,由于此处全连接和1×1卷积是等价的,为了统一,将2个全连接层都替换成1×1卷积,在权重归一化上,使用Hard-sigmoid激活函数来替代Sigmoid,前者是后者的近似,计算速度更快,不需要经过幂运算,能够在保证引入SE 模块提高精度的同时,又不会带来复杂的运算,花费代价小。
图2 注意力机制模块
作为无监督聚类算法中的代表K均值聚类(K-means)算法,该算法的主要作用是将相似的样本自动归到一个类别中。文中采用K-means聚类算法根据本文数据集的标注文件重新聚类,其表达式为:
(1)
distance(i,center)=1-IoU
(2)
本文以K-means聚类算法为基础进行改进,将两个样本间的距离使用1-IoU(bboxes,anchors)作为样本之间的距离进行聚类。是初始锚框尽可能接近各种标记框的大小。由此确定9个先验锚框为[6,9]、[13,65]、[33,61]、[48,43]、[162,38]、[89,90]、[45,186]、[191,110]、[89,239]。
GhostNet采用轻量级的1×1卷积替换3×3卷积,以降低模型的计算量;其次,GhostNet使用特殊的残差跳连技术,以改善网络的特征提取能力。GhostNet具有较低的计算量和较少的参数,可以用在移动设备上运行。本文使用GhostNet结构替换原本网络主干,采用ghost低计算量的优势生成冗余的特征图。
Ghost Module是一种新的神经网络层,用于替代普通的卷积层。它使用一系列可学习的转换来实现更高效的特征提取,而不是传统的卷积。它可以改善网络的模型训练,以及模型的参数和计算效率。其结构如图3所示。
图3 Ghost module模块
如图4所示,Ghost bottleneck主要构成是两个相互之间堆叠的Ghost Module模块。第一个Ghost Module可以被理解为一个“类似于残差网络结构”,它能够增加网络的通道数量,从而提高网络的表达能力,后一个Ghost Module用来降低通道数量以匹配残差连接,同时在两个堆叠的Ghost Module模块中间加入了如图2的注意力机制。
图4 Ghost module模块
所有ghost bottleneck使用的stride=1,每个阶段的最后一个使用的是stride=2,这是为了降低特征图大小。GhostNet是一种深度神经网络架构,它通过多个Ghost Bottlenecks组件连接而成,每个组件都能提供模型的细微变化,从而提升模型的性能。GhostNet通道参数如表1所示。
表1 GhostNet通道参数
在YOLOv4中使用的最大池化层是在SPP结构里,SPP是一种在卷积神经网络中使用的池化技术,用于解决卷积神经网络每个卷积层中特征图大小不一致的问题。原SPP结构使用的是kernel size是5,9,11的池化核,本文在原来的基础上改进使用SPPF结构来进行池化,从形状上来说,SPP和SPPF的目的是相同的,只是在结构上略有差异,从SPP改进为SPPF后,模型的计算量变小了很多,模型速度有所提升。SPPF模块采用多个小尺寸池化核替代SPP结构中的单个大尺寸池化核,从而保证了融合不同感受野的特征功能之外,进一步提高了运行能力,其结构如图5所示。
图5 SPPF结构
在PANet加强特征层结构中改进使用深度可分离卷积代替原来的标准卷积,在通过构造YOLOBody的过程中将Panet当中普通的3×3卷积改成深度可分离卷积,改动的是在原YOLOv4中的连续5次卷积和连续3次卷积以及在Head检测头当中的3×3卷积,其好处是可以减少计算量和参数量。整体的网络结构图如图6所示。
图6 改进的YOLOv4网络结构图
实验平台在Linux服务器上进行使用的是ubuntu20.04系统,CPU为12核CPU Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50 GHz,GPU为NVIDIA GeForce RTX3090,深度学习安装CUDA及CUDNN图形加速,深度学习框架PyTorch,编译语言为python3.6集成工具opencv等扩展库。
数据集介绍:通过海康工业相机采集铝片表面工业缺陷检测数据集。该数据集标注为COCO格式,包含了针孔、脏污、褶皱、划伤4个类别的缺陷目标,超过400张标注图片,整个数据集中的缺陷数量达到1000个以上,如图7所示。
(a) 划伤 (b)针孔(c) 脏污 (d) 褶皱
本实验采用LabelImg工具对数据集进行标注,操作界面如图8所示,利用该工具进行标记各类别的具体过程。
图8 LabelImg工具标注图
由于数据集数量较少,本文使用离线增强和在线增强相结合的方法,采用数据增强可以通过应用各种变换,将原始数据集转换成更多的样本,从而增加数据集的大小。通过对图像的随机缩放、随机旋转、随机裁剪、随机反转、噪声添加、平移、亮度变换和添加高斯噪声等技巧实现数据增强。
如图9所示,本文使用离线数据增强的方式对数据集进行不同程度的扩充,图9a为原数据集图像;图9b对原图进行加噪音变换;图9c为亮度变换并加噪音;图9d对原图进行随机擦除;图9e对原图进行随机变形填补;图9f对原图进行亮度增加或降低并进行旋转。
(a) 原图 (b) 加噪音 (c) 亮度变换并加噪音
数据增强将原本少量的数据集的样本数目增加到4000张左右,对原本的数据集进行数据扩充,即将原本的数据集进行多次不同的变换,从而增加样本数目。一般在模型训练过程中使用在线Mosaic数据增强方法,替换一般的Mixup数据增强方式。效果如图10所示。
(a) Mixup数据增强图像 (b) Mosaic增强方式的图像
Mosaic数据增强更加简单,不需要任何额外的计算,只需要选择要混合的图像,就可以实现数据增强;而且在训练过程中能更好地保留原始图像的特征,而CutMix数据增强则会混合多个图像的特征,从而使得原始图像的特征变得模糊;同时,Mosaic数据增强可以有效的保留原始图像的结构,而CutMix数据增强则会把多个图像混合在一起,使得原始图像的结构变得模糊;最后Mosaic相对来说能够保持原始图像的尺寸,而CutMix增强则会把多个图像混合在一起,使得原始图像的尺寸变得模糊。
实验训练过程中设置输入特征图片格式为jpg,无需固定大小,自动进行resize。期间训练参数采用Adam自适应学习率算法,动量向设置为0.937,学习率下降方式使用余弦退火算法,初始值0.001。训练期间每个阶段epoch在一段时间段内的loss值变化如图11所示,在大概前10个训练迭代期间,误差急剧下降;迭代10次之后,损失曲线趋向于稳定,最终在1.5附近。
图11 损失曲线
将改进的YOLOv4模型与SSD、YOLOv4、Faster-RCNN进行比较,本文采用精确率、召回率、检测速度、精度、平均精度、F1作为指标,精确率计算公式如式(3)所示;召回率计算公式如式(4)所示。
(3)
(4)
图12和图13为改进YOLOv4精确率变化曲线和召回率变化曲线。
图12 改进的YOLOv4算法的精确率变化曲线
图13 改进的YOLOv4算法的召回率变化曲线
本文在原YOLOv4基础上增加了相应的注意力机制,使网络能够有效的关注铝片数据集的瑕疵特征,在表2和表3中可以看出各自的精确率和召回率,原YOLOv4算法在针孔这类缺陷的精确率比改进YOLOv4仅提高1.50%,但召回率却低了4.12%;SSD算法在褶皱和划伤这两类缺陷的检测精度表现一般;Faster-RCNN在划伤这类缺陷检测精度上比YOLOv4高了1.76%,但召回率低了8%;通过以上的分析描述,YOLOv4算法改进了精确率,但是提高精准率并不意味着提高召回率,因此引入F1值作为评级指标。F1值是精确率和召回率的调和平均值,用来衡量检测算法的总体性能,F1计算公式如式(5)所示。
表2 不同算法精确率(Precision)对比 (%)
表3 不同算法召回率(Recall)对比 (%)
(5)
图14为改进YOLOv4的F1值的图,改进后的网络具有较强的稳定性,曲线变化更加平缓。表4中,Faster-RCNN、SSD两个模型在褶皱缺陷检测方面F1值略低于其他模型,实验表明改进后的YOLOv4算法在检测铝片表面缺陷方面的性能优于YOLOv4、Faster-RCNN、SSD,4种缺陷的F1值均高于其他算法,表明改进YOLOv4算法能有效地检测铝片表面缺陷。
表4 不同算法F1值
图14 改进的YOLOv4算法的F1值
AP是指将给定的模型在多个类别中的准确性和召回率进行比较,它可以反映模型在多个类别上的总体表现,mAP是所有类AP值的平均值,是一个更全面的模型性能度量。AP计算公式如式(6)所示;mAP计算公式如(7)所示。
(6)
(7)
通过表5的数据可以看出,改进的YOLOv4算法相较于YOLOv4,其平均精度有了显著的提升,同时其帧率也得到了优化。改进的YOLOv4算法跟YOLOv4相比FPS提升了0.9,mAP提升了1.06%;与SSD相比FPS降低了6.05,但是mAP提升了19.64%;与Faster-RCNN相比FPS提升了8.26,mAP提高了15.12%。铝片数据集的4个类别以及它们的平均精度如图15所示。在工业铝片的4种缺陷中,脏污识别的准确率是最高的,达到1.0。
表5 不同模型AP以及mAP值对比
图15 mAp平均精度图
在设定的IOU阈值为0.5以及测试图像尺寸为608×608的情况下,YOLOv4、SSD、Faster-RCNN以及本文算法的检测性能结果如表6所示。从实验结果可以看出,本文算法的性能比YOLOv4、SSD、Faster-RCNN的表现都要优越。本文模型是在原YOLOv4模型基础上改进,通过改变主干结构模型以及加入深度可分离卷积对PANet和普通卷积进行替换,相比于YOLOv4参数量和计算量大幅度降低,结合以上描述,可以验证本文算法的性能更强。
表6 不同模型的性能比较
在实验过程中,抽取每个类别不同的几张缺陷图片输入到这几类算法模型中进行测试,检测结果分为单目标识别和多目标识别,其相应的结果分别如图16和图17所示。实验结果中,在这几类算法里脏污的识别率都达到比较高的水平,说明训练的结果比较有质量,都达到了90%以上,体现出模型的良好检测性能。在针孔和划伤这两类缺陷上,Faster-RCNN和SSD算法均出现识别精度不是很高的现象;在褶皱这类缺陷上,SSD识别率出现下跌至60%以下的现象,其余算法都达到了90%以上。通过对比4种算法检测结果表明,改进的YOLOv4算法能够更好地捕获特征,并对工业铝片表面缺陷的检测更加精确。通过引入注意力机制,该算法能够更好地提高检测效果,优于其他检测算法。
图16 各网络模型的单目标识别率
图17 各类模型的多目标识别率
为实现对铝片工业表面缺陷检测这一复杂场景进行实时检测,本文将改进YOLOv4算法应用到铝片数据集中进行缺陷检测,在此基础上设计实验并验证改进方法的有效性,总结如下:
(1)在主干网络中使用GBANet网络,增强主干网络的特征提取能力的同时降低网络模型的参数量和计算量的大小;在主干网络的最后一层将改进的SPPF替代原本SPP结构,在保证融合不同感受野的特征图功能外,进一步提高运行能力;
(2)在颈部网络PANet中用深度可分离卷积模块替换原本标准卷积,使整体运行轻量化;在网络中嵌入改进的通道注意力机制提高模型对于小尺度缺陷目标的检测能力,最终mAP值较原YOLOv4提高了1.06%,mAP达到了90.98%,改进后的算法相较原算法在各类缺陷的检测精度上都有提高。
(3)在检测速度方面,改进后的YOLOv4算法相较原算法损失0.9 fps,但也达到36.6 fps;改进后的模型权重体积较原YOLOv4减少了82.72%,GFLOPs和Params等都有大幅度的减少,一改原YOLOv4网络结构复杂、模型体积大、硬件性能高,无法满足实际工业检测的要求。改进后的YOLOv4算法满足铝型材生产现场表面缺陷检测的精度与速度要求,同时对于有类似问题的缺陷检测领域具有一定的借鉴意义。