APP下载

改进YOLOv3的金属表面缺陷检测研究

2021-10-14程婧怡段先华

计算机工程与应用 2021年19期
关键词:网络结构图层聚类

程婧怡,段先华,朱 伟

江苏科技大学 计算机学院,江苏 镇江 212100

金属作为主要的工业产品原材料之一,在加工过程中难免会对表面造成损伤,如划痕、裂缝等[1]。金属表面的损伤会使产品的质量、美观受到严重的影响,导致企业利润减少,因此企业需要在产品生产过程中对金属表面进行缺陷检测,确保产品质量,降低成本。然而传统的人工检测,由于人的主观因素影响较大,存在漏检、成本高、效率低等问题[2]。因此,金属表面的缺陷如何获得高效精准的检测也成为热门的研究方向之一。

早期的金属表面缺陷检测引入了机器视觉技术,主要分为两类:传统的图像处理方法和基于人工提取特征的机器学习方法[3]。虽然两类方法在一定程度上可以克服人工检测的主观性强、效率低等缺点,但是机器视觉技术会受硬件设备和周围环境影响,无法准确地定位缺陷位置,造成信息误差,难以大规模地应用到实际项目中。随着计算机视觉技术的不断发展,深度学习的检测方法得到广泛应用,并且逐渐的取代传统机器视觉对金属表面缺陷的检测。深度学习检测算法从思路上主要分为两类:一类是two-stage 方法,也称为基于区域的目标检测算法。这类方法是将目标检测分为生成候选框和识别目标类别两部分,如Mask R-CNN[4]、Faster R-CNN[5]等算法,优势在于检测精度较高。另一类是one-stage 方法,直接从图片中预测出物体的类别,如YOLO[6]、SSD[7]等算法,优势在于检测速度较快。

利用深度学习检测不同材质的表面缺陷种类,也得到广泛的研究应用[8],例如,黄凤荣等人[9]提出基于聚类生成anchor 方案的Faster R-CNN 算法,利用K-MeansII聚类算法生成先验框,提高对零件表面的检测精度;张磊等人[10]利用YOLOv3检测铝型材表面缺陷,将原始图像与预处理后的图像融合进行检测,提取更多的特征信息,增强鲁棒性;袁野等人[11]利用YOLOv3 检测冰箱金属表面缺陷,引入CIoU 损失函数和K均值聚类,提高检测精度。通过文献分析可知,目前基于YOLOv3的改进方法都是在数据和网络部分进行改进,如增强数据提取,数据集聚类提高精度,引入损失函数帮助模型迅速收敛,改进残差结构提高检测精度等。这些改进后的网络确实可以提高对目标的整体检测效果,但是在金属表面的缺陷检测中,由于缺陷目标尺寸太小,使这些主流的改进算法在检测小缺陷目标时不敏感,效果不佳,有漏检现象,所以需要对YOLOv3进行针对性的改进。

根据上述分析得到YOLOv3 在金属表面存在漏检小缺陷目标以及检测精度低的问题[12],将在YOLOv3的基础上提出改进方法,并且与目前主流检测算法进行实验对比分析。

相关的改进工作主要有以下三点:第一,在YOLOv3的Darknet-53[13]结构中新增一个尺度为104×104特征图层,形成四个尺度预测,加密检测密度,降低漏检率,提高缺陷检测精度,解决原网络检测小目标不敏感的问题。第二,引入DIoU[14]损失,为边界框提供移动方向和更准确的位置信息,加快模型训练收敛,解决IoU不能衡量框的距离以及相交方式的问题。第三,采用K-Means++[15]聚类分析先验框信息,优化聚类中心的选取,获取最优的Anchor Box,减少网络损失,进一步提高检测精度,解决K-Means定位不准确、有误差的问题。

1 YOLOv3相关介绍

1.1 网络结构

YOLOv3 是在YOLOv2[16]的基础上改进提出的,不仅检测精度有所提高,检测速度也更快,还常用于图像、视频、实时目标检测等应用中。YOLOv3 以Darknet-53网络结构作为特征提取网络,如图1所示。

图1 Darknet-53网络结构Fig.1 Network structure of Darknet-53

Darknet-53 网络采用全卷积结构[17],由多个1×1 和3×3 卷积层组成。每个卷积层后跟有一个归一化层和一个激活层,通过步长为2的卷积代替pooling进行下采样操作,并且经过5次下采样后将特征图缩小为原图的1/32。Darknet-53网络还融合ResNe(tResidual Network)[18]的残差块结构,将快捷链路[19]设置在卷积层之间,有效降低训练深层网络的难度,使网络能够更好地收敛。

YOLOv3 借鉴特征金字塔网络(Feature Pyramid Network,FPN),提取多个不同尺度的特征图层,提高对小缺陷目标的检测能力。YOLOv3 将浅层特征与经过上采样的深层特征进行融合,生成3种不同尺度的特征图,分别检测大、中、小3 种尺寸的目标,提升整体检测精确度。采用3种尺度的特征图对目标进行检测,每种尺度的特征图上生成3个Anchor Box,共有9个Anchor Box。预测过程中,Anchor Box的大小由K-Means算法聚类获取。如图2所示,在检测中首先将输入图片划分为S×S个网格,每个网格的宽、高为cx、cy,网格输出相对于Anchor Box 的偏移量分别为tx、ty、tw、th,则预测框坐标计算公式为:

图2 预测框示意图Fig.2 Schematic diagram of prediction box

其中,bx、by、bw、bh为预测框的中心坐标以及宽和高;pw、ph为Anchor Box的宽和高。σ为激活函数Sigmoid,将预测值tx、ty映射到[0,1]区间内,计算每个预测框对应的置信度。通过设置置信度阈值,过滤掉小于阈值的预测框,最后利用非极大值抑制方法[20]删除多余的预测框,获取最佳的检测结果。

1.2 分类预测

在类别预测时,YOLOv3 使用多个独立的Logistic分类器代替原有的softmax 分类器。softmax 选择概率最大值为正确类别,使其判定一个目标只能属于一个类别。但在很多情况下,一个目标可能不止属于一个类别,而Logistic 恰好可以解决这一问题。它对每个类别进行二分类,利用sigmoid 函数将输入值归一化在[0,1]之间,sigmoid函数公式如下:

其中,z为分类边界的函数,假设边界函数为线性的,则公式如下所示:

将其代入sigmoid 函数中,得到预测函数,则公式如下所示:

当sigmoid 值超过0.5 时,判定目标属于该类。Logistic直接判断目标是否属于该类别,使用多个Logistic可达到多标签分类的目的。

2 改进的相关工作

2.1 网络结构改进

YOLOv3通过增加不同尺度的特征图层,将输入图像划分为32×32、16×16、8×8的网格,提高对不同大小目标的检测能力。但是金属表面的缺陷存在大量尺寸较小的目标,而YOLOv3 在检测中对小目标检测不敏感,容易漏检所以需要对YOLOv3进行针对性改进,提高对小缺陷目标的检测精度。

本文算法在YOLOv3网络结构的基础上,融合新增一个尺度的特征图层,提高对小缺陷目标的检测。改进后的网络模型如图3所示,resn表示包含n个残差单元的残差块,每个残差单元由两个DBL 单元和一个快捷链路组成。其中,DBL 是由卷积层、批归一化层(Batch Normalization,BN)以及Leaky Relu 激活函数组成。Concat 为张量拼接操作,以扩充张量维度。Conv 为卷积核大小为1×1的卷积层。图3中红色虚线框内为新增尺度104×104的特征图层。

图3 改进后的算法结构Fig.3 Structure of improved algorithm

在Darknet-53中将第2个残差块的浅层输出与经过2倍上采样后的网络深层输出进行融合,再经过卷积核大小为1×1 的卷积层形成一个新的特征图层104×104,使网络提取特征能力更强。新增特征图层的尺寸是输入图像大小的1/4,将输入图像划分成更小的4×4网格,即网格数量为104×104。更小的网格使网络对小目标更加的敏感。将浅层特征与Darknet-53 输出的更深层特征进行融合,生成有利于检测小目标的特征图层,不仅继承了深层特征,还充分地利用网络浅层特征,增强模型提取小目标特征的能力,降低漏检的小缺陷目标概率,提高检测精度。

网络中每个特征图层的Anchor Box 数量依旧为3个,但是增加一个特征图层后,使它的总数从9 个增加至12 个,加强检测密度。特征图层数量的叠加可以划分缺陷目标的尺寸层次,增强网络对不同尺寸目标大小的综合检测能力。

2.2 加入DIoU边框回归损失

对缺陷进行位置预测时,算法生成不止一个预测框,需要使用非极大值抑制方法删除多余的预测框,选择最接近真实框的预测框。在YOLOv3 中,交并比(Intersection over Union,IoU)作为衡量边界框置信度的评价指标,但是IoU 存在明显的不足:无法衡量两个边界框的距离,不能反映两者的相交方式,而IoU Loss仅与两框的交并比以及相交面积相关。如果直接使用IoU 作为损失函数,当两框相交面积相同时,IoU Loss相等,无法给出预测框和真实框的重合度;当两框不相交时,IoU Loss为零,无法优化边界框,故无法准确衡量位置信息,降低模型的性能。

针对上述问题,采用距离交并比(Distance-IoU,DIoU)代替IoU作为评价边界框位置的参数,同时使用DIoU Loss 作为边界框位置预测的损失函数。DIoU 示意图如图4所示,其中d为两个候选框中心点之间的距离,c为两框最小外接矩形的对角线距离。

图4 DIoU示意图Fig.4 DIoU diagram

DIoU 在IoU 的基础上加入一个包含边界框和真实框的最小凸包,DIoU公式定义如下:

式中ρ代表两个框中心点之间的欧氏距离,b、bgt分别代表两个候选框的中心点。当两框的DIoU 值越大时,DIoU Loss 就越小。当边界框与目标框全部重合时,LDIoU=0;当两框相距很远时,LDIoU=2;所以能够更好地反应两框之间的重合度。DIoU Loss公式定义如下:

利用DIoU Loss作为损失函数,当边界框与目标框不相交的情况,仍然可以为边界框提供更准确的移动方向。由于DIoU Loss直接限制的是两个框的距离,因此会使模型收敛很快。对于两框包含的情况,DIoU Loss仍可以使回归快。同时利用DIoU代替IoU作为评价参数,当边界框与真实框上下或左右相邻时,DIoU能够优化不相交的边界框,保留位置更准确的边界框,提高模型对目标位置预测的精确度,使其通过非极大值抑制筛选得到的结果更加合理。

2.3 加入K-Means++聚类算法

YOLOv3利用K-Means聚类分析获取Anchor Box,但具有一定的局限性。K-Means 对初始聚类中心的选取敏感,不同初始聚类中心聚类的结果差别很大。由于聚类过程中K值不容易确定[21],造成定位不准确,有误差,因此选择合适的K个聚类中心极其重要。

针对K-Means 选取初始聚类中心的弊端,利用KMeans++解决该弊端。随机选择一个样本作为当前的第一个聚类中心,然后计算每个样本和已有聚类中心之间的最短距离,并将该样本归类到与其相距最小的聚类中心所对应的类别中。同时计算出每个样本被认定为下一个聚类中心的概率,选择概率最大的样本作为下一个中心,其中概率的计算公式为:

D(x)为每一个样本点到当前中心的最短距离,每次分配一个对象,聚类中心会根据现有聚类的对象重新计算,重复此过程直到没有对象被重新分配到其他的聚类中,最后筛选出K个聚类中心。在NEU-DET[22]数据集上,利用K-Means++聚类获取的Anchor Box 宽和高分别为(18,35)、(44,36)、(23,71)、(16,175)、(47,69)、(84,57)、(175,28)、(71,134)、(35,184)、(143,77)、(82,189)、(183,194)。因为获取的12个Anchor Box之间差异性更大,所以检测目标的效果显著提高。

K-Means++选取聚类中心的过程大大减小聚类结果对K值的依赖性,并且使初始的聚类中心之间距离尽可能地远,有效地解决K-Means的缺陷。

3 实验结果分析

3.1 实验平台搭建

实验运行环境为Windows10 系统;CPU 为Core i7-9700K;内存为32 GB;GPU 为NVIDIA GeForce RTX 2080。利用CUDA10.0 和CUDNNv7.6.5,加快GPU运算。编译器为PyCharm,并且安装第三方库支持模型训练。

3.2 数据集来源

实验选用东北大学采集的NEU-DET 钢材表面缺陷数据集,一共6 种缺陷,分别为裂纹(Crazing)、杂质(Inclusion)、斑块(Patches)、麻点(Pitted_surface)、氧化铁皮压入(Rolled-in_scale)和划痕(Scratches)。每类缺陷图片300 张,共1 800 张,图片大小为416×416。为强化模型训练效果,随机抽取十分之一的图片数据进行数据增强操作,将抽取的图片旋转90°和180°,再对图片的饱和度和对比度进行调整,同时加入部分无缺陷的金属图像,提高数据的鲁棒性。最后形成新的NEU-DET数据集,共计2 100 张。使用.xml 格式对缺陷位置进行定位和分类。将数据集以8∶2的比例随机分为训练集和测试集,即训练集1 640张,测试集460张。类图如图5所示。

图5 数据集图像Fig.5 Dataset images

3.3 模型训练

在模型训练中,设置目标的类别置信度阈值为0.5,DIoU 阈值为0.45。当预测框之间的DIoU 值超过0.45时,删除该预测框。初始学习率值为0.001,权重衰减系数设置为0.000 5,防止数据过拟合。当设置训练迭代次数为9 600 次时,学习率衰减10 倍,当设置训练迭代次数为10 800 次时,学习率衰减100 倍。实验初期设置batch_size为2,训练得到模型损失值为15.2。经过反复实验训练,当batch_size 为4 时,损失值最小为9.6,停止训练。

利用准确率P(Precision)和召回率R(Recall)计算出的平均精确度均值mAP(mean Average Precision)作为网络模型性能评估标准。mAP是所有类别平均检测准确率的均值,用来评价检测模型的整体性能。P、R和mAP计算公式如下:

其中TP为被正确预测的正例,FP为被错误预测为正例的负例,FN为被错误预测为负例的正例,n为检测类别数,AP为各类检测精度,计算公式为:

如图6 为检测所得各类P-R 曲线,其中横坐标Recall为召回率,纵坐标Precision为某类型缺陷准确率,阴影部分为该类检测精度。

图6 各个缺陷类型的P-R曲线Fig.6 P-R curves of each defect types

3.4 结果分析

为论证本文提出方法的可行性,逐一将改进点一一对比分析,再将本文算法与主流算法进行性能比较。

通过K-Means++和K-Means两种方法分别对NEUDET数据集进行聚类。如表1所示,使用K-Means++聚类的mAP 为62.30%,比用K-Means 的YOLOv3 提高1.15 个百分点。结果表明K-Means++可以起到优化聚类中心的作用,加强定位,使算法的检测精度提高。

表1 两种聚类算法对比Table 1 Comparison of two clustering algorithms

如表2 为DIoU 和IoU 对NEU-DET 数据集的检测结果对比,两者均使用K-Means++聚类生成的Anchor Box。对表2分析,使用DIoU值代替IoU值作为筛选预测框的评估值后,检测精度有一定的提高,达到64.72%,比原算法提高2.42个百分点,同时与自带IoU的YOLOv3检测速度持平。结果表明本文提出的加入DIoU可以解决IoU不能衡量边界框的距离以及相交方式的问题,为边界框提供移动方向和更准确的位置信息,加快模型训练收敛,提高检测效果。

表2 加入DIoU前后的对比Table 2 Comparison of before and after adding DIoU

如表3为改进网络结构前后的YOLOv3在NEU-DET数据集上的各类型缺陷检测精度对比,均使用K-Means++聚类算法进行聚类生成的Anchor Box。对表3分析,改进网络结构后的mAP为65.51%,是改进前的1.1倍。改进后的网络结构在各类检测精度均有明显的提高,尤其是对小缺陷目标的检测优势显著,如类Crazing 和Rolled-in_scale的检测精度35.47%和56.91%,比改进前YOLOv3分别提高了6.35个百分点和6.40个百分点。结果表明,改进原网络结构的第11层浅层和网络深层,融合一个新的尺度为104×104 的特征图层,形成4 个预测尺度,解决原网络结构对小目标提取特征信息差,检测不敏感问题,说明该方法针对小缺陷目标的改进是可行的。

表3 网络改进前后的结果Table 3 Results of before and after network improvement %

使用YOLOv3 和本文算法分别对金属表面缺陷进行检测,如图7 所示。对比图中的YOLOv3 和本文算法,可以清晰地看出本文算法检测出所有的小缺陷目标,比YOLOv3多检测出两个。在6种缺陷类型的检测中,本文算法的检测效果均优于YOLOv3 的检测效果,表明改进后的算法可以有效地降低漏检概率。

图7 两种算法检测效果对比Fig.7 Comparison of two algorithms detection effect

如图8 为YOLOv3 与本文算法的各类检测结果对比。从图8 中可知,引入K-Means++聚类、改进网络结构和DIoU 损失,能够准确检测出各类金属表面缺陷,如Scratches 类,本文算法检测该类精度为81.61%,比YOLOv3 提高了7.24 个百分点。结合图7 和图8 分析,本文算法检测Inclusion类的精度为67.56%,比YOLOv3提高7.55 个百分点,同时检测出小缺陷目标数量也比YOLOv3 多。因此,本文算法检测各类的精度均优于YOLOv3,能够满足对缺陷检测更高的精度要求。

图8 两种算法检测结果对比Fig.8 Comparison of two algorithms detection results

为验证本文算法的综合检测性能,与Faster R-CNN、SSD、YOLOv2、YOLOv3、文献[10]以及文献[11]算法对NEU-DET数据集进行实验对比。各个模型学习率初期均为0.001,至少训练10 800 轮,其中本文算法DIoU 阈值为0.45,文献[10]的IoU阈值为0.6,其余算法模型IoU均为0.5。本次采用检测速率和mAP 两项指标对每个算法进行评估,如表4所示。

表4 不同算法的对比Table 4 Comparison of different algorithms

对表4 分析可知,本文算法的mAP 为67.64%,比YOLOv3提高了7.49个百分点。同时结合图6中各个缺陷类型的AP 值,表明本文算法在整体精度和各类精度上均优于与原YOLOv3算法。文献[10]和文献[11]也是基于YOLOv3 改进的算法,但是比本文算法的精度分别低了3.83 个百分点、2.38 个百分点,这是因为本文加入一个新的特征图层,提取到更多的特征信息。Faster R-CNN的mAP略低于本文算法2.95个百分点,相对其他算法有一定的优势,但是检测速率是测试算法中最慢的。SSD检测精度低,检测速率与本文算法的31 frame/s基本持平。对比YOLOv2和YOLOv3的检测速率,本文算法检测速度略低,但是检测精度是最高的,这是由于改进网络结构添加一个大的尺度输出,加入DIoU损失以及K-Means++聚类共同改进的效果。因此结合两项指标,本文算法的综合性能是最优的,满足对金属缺陷检测精度更高的要求。

4 结语

由于金属表面缺陷检测中目标尺寸小,容易漏检,导致精度低的问题,本文在YOLOv3的基础上进行针对性的改进。在Darknet-53 结构中融合新增一个尺度为104×104特征图层,提取更多的小缺陷目标信息,形成4个尺度预测,降低漏检小缺陷概率。其次引入DIoU 损失函数,为边界框提供移动方向和更准确的位置信息,加快模型评估和训练收敛。然后采用K-Means++优化聚类中心的选取,获取最优的Anchor Box,减少网络损失,进一步提高检测精度。实验结果表明,本文算法的检测精度为67.64%,比YOLOv3 提高了7.49 个百分点,同时也优于目前主流的目标检测算法,满足对金属缺陷检测精度的需求。该模型检测的实时性还有待提高,下一步将继续优化网络模型,减少模型参数,提高检测速度。

猜你喜欢

网络结构图层聚类
基于K-means聚类的车-地无线通信场强研究
巧用混合图层 制作抽象动感森林
基于高斯混合聚类的阵列干涉SAR三维成像
基于互信息的贝叶斯网络结构学习
知识网络结构维对于创新绩效的作用机制——远程创新搜寻的中介作用
沪港通下A+ H股票网络结构演化的实证分析
图层法在地理区域图读图中的应用
复杂网络结构比对算法研究进展
跟我学添加真实的光照效果
一种层次初始的聚类个数自适应的聚类方法研究