面向交通工具金属材料的缺损识别算法
2021-07-19李胜永张智华王胜男
李胜永,张智华,王胜男,王 孟
(1.江苏航运职业技术学院 交通工程系,江苏 南通 226000;2.南通大学 理学院,江苏 南通 226000)
0 引 言
完整的缺陷检测任务旨在实现识别图像中每个缺陷的特定类别和精确位置,这使得在实践中该任务仍然具有挑战性。缺陷检测是分类和定位结合的联合任务,导致相关方法往往难以兼顾两者的准确性。对金属缺陷的检查是保证例如高铁轨道、轮船船体、汽车发动机等几乎所有交通工具安全运行的关键步骤。然而,该过程通常依赖人工或者昂贵的精密设备,具有不可靠、不经济且耗时等特点。为了替换手工作业,笔者希望设计一种利用计算机视觉技术自动检查钢材表面缺陷的轻便设备。
在此研究领域,专家们将缺陷检测分为两类:缺陷分类和缺陷定位,前者解决金属是否包含某类缺陷,而后者进一步解决某类缺陷的具体位置。以往的自动缺陷检测(ADI)有两个常见的问题:一个是手工特征依赖人类经验[1],这导致缺陷类别判别误差极大;另一个则是定位偏差较大,仅仅提供缺陷的大致位置[3]。深度学习技术克服了传统ADI方法的缺陷,并在许多视觉任务中取得了显著成果,它可以对位置注释的样本进行训练以获得精确的位置信息。基于传统方法和深度学习的ADI技术,一些研究者进行了大量的工作。基于传统技术,K.C.SONG等[1]改进了LBP以抵抗噪声,并采用NNC和SVM对缺陷进行分类;S.GHORAI等[5]基于一组小波特征,使用SVM进行缺陷分类。与这两种方法不同,M.X.CHU等[6]采用了通用特征提取器并增强了SVM。然而这些工作集中于缺陷分类,这在复杂的缺陷图像中作用甚微。因此,后续工作集中于缺陷定位,文献[3]和文献[4]中的缺陷检测器首先执行0-1分类,判断是否属于缺陷类,然后根据边缘检测找到缺陷的位置,进而执行不同的分类方法确定该位置属于何类缺陷。致力于提升该算法的效率,文献[7]去掉最后的分类方法以提升速度,但它只能识别是否缺陷而不能识别其属于何种缺陷。
在深度学习的方法上,基于CNN的特征提取通过大量学习构建所有输入数据的特征表示,以克服传统方法上的粗略估计缺点。基于CNN的检测器分为两类:基于回归的一阶段检测器和基于区域提议的两阶段检测器。前者专注于速度的提升[8],而后者强调目标的准确,但两者均基于预定义的anchor框以获取预测类别框。而最近,H.LAW等[10]探寻基于特征点的去anchor目标检测方法,但是其并没有显示出特别的优势且增加了运算成本。实践表明[12],这类方法会产生较多的误检。一些研究者也探寻将基于anchor的通用检测器运用于缺陷检测。P.H.CHEN等[13]证明,如Overfeat[14]一般的物体探测器可以通过某种方式转移到缺陷检测器上。而R.X.REN等[15]使用顺序CNN提取特征可以提高缺陷检测的分类准确性。另外,V.NATARAJAN等[16]采用更深层的CNN(VGG19)用于进行缺陷分类。最近,Y.HE等[17]提供了一种新颖的基于anchor的目标检测器用于缺陷检测,并公布一种可以用于评估金属缺陷探测性能的公开数据集,其提出的缺陷检测器作为了该数据集的基线。
致力于保障缺陷检测中高准确率和高效率的目标,笔者提出一种基于特征细化融合的金属缺陷检测器,以提供强大的特征分类和目标精确定位的能力。其主要的贡献在于:①设计了一种基于残差模块的特征细化骨干网络,以提供良好的基础特征;②吸收基于anchor框的一阶段检测器高效率和两阶段检测器高精确的优势,提出一种沙漏型特征融合模块,为检测器的后处理阶段提供细微的特征;③设计一种特征细化模块,以加强图像的上下文联系;④在一阶段检测器的后处理部分添加批量归一化以提升网络泛化能力;⑤实现在移动端设备上端到端的自动检测,并提供良好的性能。
1 特征细化融合缺损检测器
在提出的检测器中,首先由专门设计的骨干网络提取图像中的基础特征,接着添加两个残差块Res6和Res7继续卷积计算,然后经过沙漏模块提取目标的细微特征,并解决来自不同尺度特征的融合问题,再在沙漏模块的每部分后使用金字塔特征细化模块加强上下文联系,最后经过一阶段检测器的后处理实现缺陷的定位和分类。经过详细的测试,在4个检测头的所有卷积层后添加批量归一化有助于网络的泛化并增强检测性能。在测试阶段可以将批量归一化层合并至卷积层,使运算成本不会增加。网络结构如图1。
图1 金属缺损检测网络结构
1.1 基于残差结构的骨干网络
在检测网络中,骨干网络为后处理提供特征支持。常用的骨干网络是VGG16[18]或残差网络ResNet[19]系列以及它们的改进版本。通常情况下,非常深的残差网络如ResNet101[19]和ResNet101[20]等具有更好的特征提取能力,但会带来巨大的计算量,导致其在实际工业应用中常常被抛弃。ResNet成功的原因是残差块能够减少特征传递时的损失,并且使用批量归一化带来较好的泛化能力。然而,较浅的残差结构通常不会显示出比其它网络更好的能力,如ResNet18和ResNet34,这是因为越深的网络,特征损失越明显。但是,浅层的残差结构能够大幅提高网络的运行效率。笔者使用浅层的残差网络,并对其进行重新设计,在保障运算速度的同时提高网络特征提取能力,能够实现比其它类似骨干网络更好的效果。
传统残差网络在首个卷积层中使用7×7的卷积核且输出的特征图被池化层迅速下采样为1/2,此为一个巨大的诟病,会严重损失小物体的细节特征。这样设计的原因可能是为后面各层减轻计算负担。为此,在ResNet的头网络部分,7×7的大卷积核用3个3×3的小卷积核卷积层堆叠取代。这3个小卷积层输出的特征图并不会经过池化层进行下采样。图2是重新设计的Refine-ResNet18和原始ResNet18骨干网络结构对比。ResNet34的设计与ResNet18类似,图2中数字分别表示卷积核大小、输出通道和输出特征图大小。这种设计是经过实验结果得到的结论,也更适合针对的目标。
1.2 沙漏型特征模块
传统的单阶段检测器如SSD和YOLOv3通常从骨干网络深浅不同的卷积层输出特征图中按照特征点提取anchor框,以适应不同尺度的目标特征。然而此种方法太过于粗糙,各层提取的anchor框单独分支并没有将不同细节的特征进行融合,导致了单阶段检测器面对小物体时常常表现失败。而两阶段检测器通过生成目标提议候选框,然后分类回归。两步级联回归目标参数和两阶段特征描述对象使得它们在小目标中占据优势。在缺损识别定位领域,常有不易察觉或类间差异较小的缺损难以区分。所以,借助计算机视觉自动识别缺损需要捕捉极细微的特征。为此,吸收一阶段和两阶段检测器的优点,克服两者的缺点,笔者设计了一种沙漏型特征模块,用以融合不同尺度的特征并为后续的检测头处理阶段消除大量负样本。沙漏型特征模块使用在骨干网络与检测头之间,具体的结构如图1。
原始的SSD在骨干网络VGG后添加了太多额外的卷积层继续缩小特征图,最终得到1×1的特征图,然而太小的特征图被认为是多余的[21]。在本设计中,骨干网络最小的输出大小为5×5。为了结合不同尺度的特征,添加4个反卷积层,然后输出的特征图与对应的骨干网络卷积块输出的特征图相融合,并将其输入到检测头进行后处理。这有利于检测小物体。从图1中可以看出,一系列的反卷积后,Res4模块的输出融合了其它3个残差块Res5、Res6和Res7输出的所有尺度特征,这对目标识别的贡献最大。
1.3 特征细化模块
图像中的上下文信息常常是识别物体的重要依据,比如不能在天然的木材上识别到混合物。为此,笔者设计了一种金字塔特征细化模块用以加强网络的上下文联系。该模块的结构如图3。
由图1和图3可以看出,当每个反卷积层与对应的残差块进行特征融合后输入到金字塔特征细化模块中,而金字塔细化模块并不会下采样输出的特征图,只是采用简单的3个不同核大小的并行卷积层进行计算后继续融合。具体的原因是不同大小的卷积核具有不同大小的实际感受野,实现从不同大小的区域中感受相互之间的关联性。
2 实验方法
实验分为3个部分:①通过消融实验验证骨干网络、沙漏型特征模块和特征融合模块的具体作用;②比较与基线以及其它先进方法的效能,以证明提出算法的高效;③将训练好的深度学习模型部署于嵌入式移动端,通过FPGA测试模型的实际应用能力。
2.1 数据集
NEU-DET数据集由Y.HE等[17]于2019年公布,其由2012年提出的缺陷分类数据集改版而来,提供6种类型缺陷图像和基于CNN的基线模型。6种金属缺陷分别为开裂、夹杂物、补丁、表面凹陷、表皮氧化以及划痕(图4)。训练集共包含1 500张图像,这些图像中包含的6类目标框最少的有245个,最多的有261个,分布较为平衡。另外的298张图像用于测试。为了发挥CNN的强大性能,在训练阶段采用了包括随机翻转、裁剪等技术的随机数据增强策略。
图4 NEU-DET数据集中的类别实例
2.2 评估方法
为了更好的对比,采用了常用的评估方法。通过平均精度(Pave)来评估实验的结果,并记录每一类别的准确率P(Prcision)和召回率R(Recall)。这些指标的计算方法如式(1)、式(2)。另外,以模型测试时的速度FPS(每秒运行的帧数)为单位来记录。
(1)
(2)
式中:TP、FP代表真阳性和假阳性的数量,而FN表示假阴性的数量。
2.3 训练参数设置
首先,基于提出的骨干网络,使用ImageNet数据集进行分类预训练,这是漫长的过程。收敛良好的骨干网络模型用于微调提出的检测器。由于为检测头部分添加了BN,特征细化融合缺损检测器能够以较大的基础学习率进行微调训练,学习率取值为0.01。为了在训练过程中动态调节学习率,通过多步数衰减方式衰减3次后减小为0.000 01,衰减步数为每1万次迭代后衰减1/10。另外,批量大小为32,权重衰减参数为0.000 1,动量为0.9,最大迭代次数为50 000 次,使用随机梯度下降进行优化。所有的训练以及PC测试均基于搭配两块GTX 1080的caffe[22]框架完成。
3 结果与讨论
3.1 消融实验
整个系列的消融实验分别以改进的骨干网络、沙漏型特征模块、特征融合模块以及为检测头部分添加批量归一化作为单独变量进行。其中原始的Res18骨干网络使用前人提供的ImageNet预训练模型进行微调训练,而检测头部分未添加批量归一化时只能使用0.001的基础学习率训练。试验结果(置信阈值为0.01,IoU阈值为0.5)如表1。
4组实验均使用单一变量,其中无沙漏特征模块在试验中只去除Conv8、反卷积层及其融合模块,只在对应的卷积层后使用特征细化模块。从表1可以看出,无沙漏特征模块对结果的影响最大,PmA值下降了13.77%,这表明该模块对于提升缺损识别准确度具有巨大贡献。而对ResNet头部的改进对类别1和类别5的P值提升较多,这说明ResNet的头部细化模块能够增强检测器在难检类别上的精度。而在检测头使用批量归一化能够提升网络的整体性能。金字塔特征细化模块的使用对结果并无明显直观的表现,但在实际应用中能够有效避免误检的发生。
表1 消融实验结果
3.2 与先进检测器的对比
经过仔细的参数优化,特征细化融合金属缺陷检测器在和NEU-DET基线网络及其它先进检测器的具体性能比较中显示出较强的优势。具体的结果如表2。表2中统计了置信阈值为0.01、IoU阈值为0.5情况下所有类别的PA值、总体的PmA值以及PC端GPU的测试速度。
表2 与先进网络的测试结果比较
如表2,基于优化后的Res18骨干网络的特征细化缺陷检测器能后实现与基线网络相当的PmA,但测试速度更加具有优势。而Refine-Res34为骨干的网络对比其它先进检测器,包括一阶段和除Cascade R-CNN之外的所有两阶段网络均能实现领先,但是Cascade R-CNN实在过于缓慢,缺乏在工业生产中利用的实际价值。而在与anchor free网络的对比中,基于Saccade骨干网络的ConnerNet检测器的PmA值能够超过提出的Res18网络,但其在速度上处于劣势。当使用优化后的Res34骨干网络时,能够实现PmA值的完胜,并在速度上与其它网络相当,超过实时检测器YOLOv3。当忽略速度,使用多尺度测试时,所提出的网络能够超越所有的先进网络。值得一提的是,笔者提出的金属缺陷识别网络仅仅使用浅层的Res34便能够实现众多使用ResNet101为骨干网络的通用检测器。6个类别的P-R曲线(图5)和每类PA值直方图(图6)可直观地显示笔者提出金属缺陷检测器的优势。
图5 P-R曲线
从图5中可以发现,笔者提出的基于Refine-Res34骨干网络的金属缺陷检测器在多尺度测试时能够在P-R曲线中与先进的两阶段检测器Cascade R-CNN保持相当的走势,而优于非常先进的单阶段检测器YOLOv3和RefineDet。
图6的直方图可以明显看出,笔者提出的网络在每类PA值上均能保持较为先进的结果。图7给出了一些钢材缺损识别的实例并与基线网络进行对比。相比而言,笔者所提网络的故障检测更少,如图7(a)~(c)可以有效减少漏检,图7(d)~(e)中减少重叠框和误检。这些故障检测在人工经验中也属于较难区分的范围。
图6 与先进网络AP结果对比
图7 基线网络和所提方法的实际测试结果对比
3.3 移动端的实际部署
基于良好的检测模型,使用联咏公司生产的NT9852X嵌入式平台(图8)实现基于实物的具体测试,其中NT9852X使用两组FPGA实现CNN的运行。需要注意的是,移动端由于内存和运算能力的限制,基于CNN的检测器的计算量(Macc值)和参数量(Param)往往是衡量模型的重要基准。表3列举了一些先进模型的计算量和参数量指标。由表3可以发现,笔者提出模型的Macc值和参数量相比于一些大型网络拥有较大的优势,而对于一些轻量级网络Pelee来说,后者损失的准确率在实际工业生产中是不可承受的。
图8 NT9852X嵌入式平台
表3 一些先进网络的计算量与参数值
在具体的测试过程中,首先将模型通过SDK编译后植入嵌入式平台。接着选用汽车部件钢材,钢材被人为地刻画一些缺损信息用于测试嵌入式平台。拍摄后的图像用于测试,然后将结果输出至计算机。具体的输出结果如图9。由图9可以看出,笔者提出模型能够实现较为精准的测试。最后,笔者提出的模型在移动端Res18骨干网络下能够实现10.5 FPS的速率。
图9 嵌入式平台实测
4 结 论
笔者以对交通安全十分重要的金属材料的缺损检测任务为出发点,基于CNN设计了一种可媲美两阶段网络精度和一阶段网络速度的特征细化融合金属缺损检测器,实现对金属缺陷的快速准确检测。通过优化后的骨干网络、沙漏型特征模块、特征细化模块和检测头阶段的批量归一化策略相互配合得到优秀的结果。通过公共数据集中的消融试验和与先进网络的对比,试验结果均表明了笔者所提出网络的有效性。最后,模型被部署在嵌入式平台进行移动端测试,结果证明其能够实现良好的实践性能。今后笔者将继续完善算法,设计移动产品,丰富缺损数据类型,推动模型在汽车年检、道路随机车检、轨道安全排查等领域的应用。