APP下载

基于注意力机制和可变形卷积的金属表面细微不规则损伤的图像识别模型*

2023-02-08邓中港吴湘宁邓玉娇

计算机工程与科学 2023年1期
关键词:池化注意力卷积

邓中港,代 刚,吴湘宁,邓玉娇,王 稳,陈 苗,涂 雨,张 锋,方 恒

(中国地质大学(武汉)计算机学院,湖北 武汉 430078)

1 引言

金属材料由于具有抗腐蚀性、电导率低等优点,被广泛用于航空航天、交通运输等领域。然而,在生产、加工、冶炼和运输过程中,由于诸多因素影响,金属材料表面会出现起坑、涂层开裂和脏点等瑕疵,从而影响金属材料的质量。为保证金属材料的质量,需要对金属表面的损伤进行检测。

工业界曾使用一些传统的金属表面缺陷的检测方法。基于电磁感应原理的二维涡流检测方法[1]利用了正弦波电流激励探头内线圈周围的交变磁场,在金属表面产生感应电涡流,同时电涡流产生的磁场与线圈磁场的频率相同,方向相反,引起的探头阻抗的变化量可用来检测金属表面的缺陷及其深度。但是,该方法的检测深度与检测灵敏度相矛盾,检测速度与材料的材质和表面状态等高度相关。钢铁制品无损检测的漏磁检测技术利用了磁源对被检测材料局部磁化,材料表面裂纹使局部区域的磁导率降低,磁阻增加,磁化场将从该区域部分外泄,从而形成可检验的漏磁信号[2],通过研究缺陷漏磁场的特点可以确定缺陷的特征。但是,该方法只适用于铁磁材料,且难以检测出很小的裂纹。

近年来,基于深度学习的方法逐渐被应用于工业金属表面损伤检测。Wang等人[3]较早使用了深度学习方法进行表面损伤检测,通过对输入图像进行切片,然后把切片图像输入深度学习网络中,在推理时使用滑动窗口检测方式对各位置逐一识别,准确率较高,但是速度较慢。Chen等人[4]采用3阶段的方式来检测接触网支架紧固件是否存在缺陷,第1阶段采用SSD(Single Shot MultiBox Detector)[5]作为检测网络,定位主要结构件的位置,第2阶段采用YOLO(You Only Look Once)[6]网络对第1阶段检测出的各个结构图像中的紧固件进行检测,第3阶段对图像进行裁减,再利用深度卷积神经网络DCNNs(Deep Convolutional Neural Networks)进行分类与回归,但由于不是端到端模型,实际应用起来比较困难。Tao等人[7]讨论了一种能准确定位和分类的双重过程来自动检测金属缺陷,设计了一种新的级联自动编码器CASAE(CAScade Auto Encoder)结构,用于缺陷的分割和定位,该方法满足了一定的金属缺陷检测的稳健性和准确性要求。Zhao等人[8]提出了一种新的基于正样本训练的缺陷检测框架,结合对抗生成网络GAN(Generative Adversarial Network)[9]和自动编码器建立一个重建网络,用于修复样本中存在的缺陷区域,然后将输入样本与恢复样本进行比较,以评估修复GAN缺陷区域的能力,但是GAN的训练需要达到纳什均衡,否则会因为训练不稳定而导致生成的结果非常差。

本文在传统深度学习目标检测模型的基础上针对特定的模块进行改进,提出了ADC-Mask R-CNN(Attention-Deformable-Cascade Mask Region based Convolution Neural Network)模型。该模型引入注意力机制与特征金字塔FPN(Feature Pyramid Network)[10]以帮助网络更好地关注目标区域的信息,通过可变形卷积与可变形感兴趣区域池化技术来处理样本中的长条状等不规则瑕疵;并参照Cascade R-CNN[11]的思想,将多个基于区域的卷积神经网络R-CNN(Region based Convolutional Neural Network)基于不同的交并比IoU(Intersection over Union)阈值级联,从而优化金属表面细微不规则损伤检测的效果。

2 ADC-Mask R-CNN模型

2.1 模型结构

ADC-Mask R-CNN模型在Mask R-CNN[12]的基础上进行了一部分结构上的修改。Mask R-CNN是一种深度神经网络,作为Fast R-CNN[13]的扩展,也是一个灵活的目标检测框架。它可以分离图像或视频中的不同对象,并且将其进行边框、类和掩码的预测。Mask R-CNN的骨干网络是一种特征金字塔网络FPN[10]类型的深度神经网络。FPN优于其他单一卷积网络的主要原因是它在不同分辨率尺度下都能保持强大的语义特征,对小目标物体的检测更加有效。

ADC-Mask R-CNN模型的结构如图1所示,分为以下几个部分:

Figure 1 Structure of ADC-Mask R-CNN model图1 ADC-Mask R-CNN模型结构图

(1)数据处理模块:对金属表面损伤数据集进行预处理和数据增强。

(2)ResNet101(Residual Neural Network-101)骨干(Backbone)网络:在ResNet101的卷积层之间嵌入特征金字塔和一个封装好的注意力模块(Attention Module),以此来增强对小目标的语义提取及检测精度。ResNet101中的第5层卷积层conv5_x被替换为可变形卷积网络DCN(Deformable Convolution Net),用来增强对长条状等不规则瑕疵的特征提取。

(3)候选区域推荐网络RPN(Region Proposal Network):从特征图中提取候选区域。RPN生成的候选区域是可变形感兴趣区域池化(Deformable RoI Pooling)模块的输入,同时还将生成的候选区域进行RoI对齐。最后将2条分支生成的特征图进行拼接与叠加。

(4)头部(Head)网络:采用与Faster R-CNN[14]类似的结构,包含了感兴趣区域RoI对齐和可变形感兴趣区域池化模块。RoI对齐取消了量化操作,使用双线性内插的方法获得坐标为浮点数的图像数值,从而将整个特征聚集过程转化为一个连续的操作。RoI对齐流程如下所示:

①遍历每一个候选区域,保持浮点数边界不进行量化。

②将候选区域分割成k×k个单元,每个单元的边界也不进行量化。

③在每个单元中计算固定4个坐标的位置,用双线性内插的方法计算出这4个位置的值,然后进行最大池化操作。

RoI对齐反向传播的公式如式(1)所示:

(1)

head网络中的可变形感兴趣区域池化模块对RPN的输出进行处理,增强对长条状目标的检测精度。最后将输出的特征图送入第2阶段的分支网络,分别用来进行分类、回归和掩码。

模型的损失函数定义如式(2)所示:

L=Lcls+Lreg+Lmask

(2)

其中,Lcls表示分类误差,Lreg表示检测误差,Lmask表示分割误差。对于每个RoI,Mask分支定义一个K×m×2维的矩阵,表示K个不同的分类对应每一个m×m的区域。对于每个像素,都是用Sigmoid函数求相对熵,得到平均相对熵误差Lmask。对于每个RoI,如果检测出RoI属于哪个分类,就只使用那个分支的相对熵误差作为差值进行计算。最后通过与阈值(0.5)进行比较,输出二值掩码(Mask),二值掩码的交叉熵定义如式(3)所示:

crossentropy(t,o)=

-(t·log(o)+(I-t)·log(I-o))

(3)

其中,t表示目标张量,o表示输出张量,I表示各个元素均为1的标准张量,·表示点乘操作。

2.2 注意力机制实现

ADC-Mask R-CNN模型引入了注意力模块CBAM(Convolutional Block Attention Module)[15],如图2所示,将注意力同时运用在通道和空间2个维度上,在不显著增加计算量的前提下提升了网络模型的特征提取能力。注意力不仅能告诉网络模型该注意什么,同时也能增强特定区域的表征。

Figure 2 CBAM图2 注意力模块CBAM

对于一个中间的特征图,模块从通道和空间2个维度计算注意力图,然后将输出的注意力图与输入的特征图相乘,以自适应方式对特征进行改进。由于CBAM是轻量级的,融合在CNN架构中时,其开销可忽略不计。图3是将CBAM嵌入到ResBlock(Residual Block)中的示意图。

Figure 3 ResBlock+CBAM图3 ResBlock+CBAM

特征的每个通道都对应一个专门的检测器,因此,通道注意力(Channel Attention)模块被用于关注什么样的特征是有价值的。为了汇总空间特征,模型采用了全局平均池化和最大池化2种方式来分别利用不同的信息,计算方式如式(4)所示:

Mc(F)=σ(MLP(AvgPool(F))+

(4)

模块的输入是一个H×W×C的特征F,先分别进行一个空间的全局平均池化和最大池化,得到2个 1×1×C的通道描述;接着,再将它们分别送入一个2层的神经网络,第1层神经元个数为C/r,激活函数为 ReLU,第2层神经元个数为C。第1层神经网络的权重矩阵为W0,第2层神经网络的权重矩阵为W1。这2层神经网络的参数是共享的;然后,再将得到的2个特征相加后经过一个 Sigmoid 激活函数σ(·)得到权重系数;最后,将权重系数和原来的特征F相乘,即可得到缩放后的新特征F′。

在通道注意力模块之后,又引入空间注意力(Spatial Attention)模块来关注什么位置的特征是有价值的,空间注意力的计算方式如式(5)所示:

Ms(F)=σ(f7×7([AvgPool(F),MaxPool(F)]))=

(5)

给定一个H×W×C的特征F′,先分别进行一个通道维度的平均池化和最大池化,得到2个H×W×1 的通道描述,并将这2个描述按照通道拼接在一起;然后,经过一个 7×7 的卷积层,f7×7表示对通道进行7×7的卷积操作,激活函数为 Sigmoid,得到权重系数Ms;最后,将权重系数和特征F′ 相乘,即可得到缩放后的新特征F″。

2.3 特征金字塔实现多尺度特征融合

在FPN中,自底向上得到的是每个阶段的最后一层特征,即表达能力最强的特征。FPN使用的骨干网络是ResNet,自输入(Input)开始逐级上采样,各级生成特征C2,C3,C4,C5,分别对应于conv2_x,conv3_x,conv4_x,DCN的输出,与原图相比的步长分别是4,8,16,32。由于上采样操作降低了特征的分辨率,因而自底向上的特征C2~C5的语义信息逐渐减少,但位置信息逐渐增多。

在ResNet中将进行下采样,先在C5上进行1×1卷积,以减少通道数,并与上采样结果C4相加后,再进行3×3卷积处理后得到P5,以减小前面上采样所带来的混淆影响。同样,对C2,C3,C4分别进行1×1卷积,和上采样结果相加后,再进行3×3卷积处理,分别得到P2,P3,P4。

因为金字塔所有级(Level)使用相同的分类/回归器,所以固定了特征图上的通道数d都为256,即每个阶段或每个级别的特征图的通道数都是d=256。

2.4 可变形卷积的实现

由于CNNs模块固有的几何结构,CNNs对大型、未知形状变换的建模存在固有缺陷:卷积单元对输入特征图的固定位置进行采样,池化层以固定的比例进行池化;即使是RoI 池化也是将RoI分割到固定的单元中去。这些特性造成了在同一层卷积层中,激活单元的感受野需要根据不同位置可能出现的不同尺度或变形的物体,进行自适应调整以达到精确定位。本文采用了可变形卷积和可变形感兴趣区域池化来提高对形变物体的建模能力。这2个技术都是基于一个平行网络来学习偏移,使得卷积核在输入特征图的采样点发生偏移,从而集中于感兴趣的区域。为了削弱标准卷积中的规则格点采样所导致的网络难以适应的限制,卷积核中每个采样点的位置都增加了一个偏移变量,以实现在当前位置附近随意采样而不是仅局限于固定的规则格点。与标准卷积相比,可变形卷积的采样位置更符合物体本身的形状和尺寸。

可变形卷积的结构如图4所示。根据输入图像,利用传统卷积核提取特征图。对得到的特征图再施加一个卷积层,目的是得到可变形卷积的变形偏移量。可得到H×W×2N的输出偏移,其中2N是指需得到x和y2个方向的偏移。在训练的时候,用于生成输出特征图的卷积核和用于生成偏移量的卷积核是同步学习的。偏移量是利用插值算法,通过反向传播进行学习得到的。

Figure 4 Diagram of 3×3 deformable convolution图4 3×3可变形卷积示意图

可变形感兴趣区域池化是对普通感兴趣区域池化的拓展,池化针对所有的候选区域。将任意大小的矩形调整为固定尺寸的特征。给定输入特征图x和一个大小为w×h的区域R0,RoI 池化将会把这个RoI(即R0)划分为k×k个单元,同时输出一个尺寸为k×k的特征图y。其计算如式(6)所示:

(6)

其中,nuv表示单元中像素的数量,p0表示采样点,即特征图的中心位置,p表示网格中的点,bin(u,v)表示特征图上的坐标集合。

可变形RoI 池化计算如式(7)所示。相比于普通RoI 池化,可变形RoI池化增加了一个偏移Δpuv,其余计算与普通RoI 池化类似。ADC-Mask R-CNN中替换了骨干网络ResNet最后一层的卷积层,对输入的特征图进行卷积得到变形偏移量,之后将该层输出的特征图与其他层输出的特征图送入特征金字塔。

(7)

2.5 级联R-CNN实现

在Faster R-CNN中,整个网络可以分为Training与Inference 2个阶段。在Training阶段,RPN网络提出2 000个区域提案,网络会先计算每个候选区域和Ground Truth(人工标注框)之间的交并比IoU,通过预先设定的一个IoU阈值(通常为0.5),对所有的候选区域进行二分类(分为正样本和负样本,负样本为背景),并对这些分类之后的样本进行采样,之后这些候选区域被送入RoI 池化,最后进行分类和回归。在Inference阶段,RPN会提出300个左右的候选区域,与Training阶段不同的是,此处不会对这些候选区域进行采样,所以它们会直接进入RoI 池化,随后进行分类和回归。在整个过程中,有2次用到IoU阈值,分别是训练阶段进行二分类时和Inference阶段计算平均准确率mAP时。

然而,在2个阶段边界框回归器的输入分布是不一样的,Training阶段输入的候选区域质量更高(IoU>threshold),Inference阶段输入的候选区域质量相对较差(可能存在IoU

在ADC-Mask R-CNN模型中,将Mask R-CNN与Cascade R-CNN进行融合,如图5所示。

Figure 5 Fusion of Mask R-CNN and Cascade R-CNN图5 Mask R-CNN融合Cascade R-CNN

在Cascade R-CNN的每一个阶段添加Mask R-CNN的Mask分支,其计算如式(8)和式(9)所示。

(8)

(9)

3 实验结果与分析

实验使用的金属表面损伤数据集来源于阿里天池大数据竞赛的数据集,共有带标注的图像2 091幅。整个数据集共包含9个类别,分别是角位漏底(cornerexposure)、喷流(jet)、漆泡(lacquerbubble)、不导电(nonconducting)、桔皮(orangepeel)、脏点(dirtypoint)、擦花(scratch)、漏底(undercase)和杂色(variegated)。整个数据集为COCO格式,每幅图像对应的标注存放在对应的.Json文件中,并且需要使用Labelme根据对应的.Json文件生成COCO格式的数据集文件夹,文件夹中包含cv2_mask、pic、labelme_json和json 4个子文件夹。cv2_mask用来存放对应的掩码文件,pic中存放原图,json中存放对应的Json标注,labelme_json中存放yaml文件。部分图像中存在多种类型的损伤。图像分辨率均为1920×2560,对于多类别样本数据而言,其目标可能存在重叠区域,因此需要将此类样本的掩码分离出来。

将测试图像输入训练好的模型,模型识别出测试数据集中的脏点目标,不同的目标使用不同颜色的检测框进行标记,并给出每个目标所属的类别及对应的置信度。

在训练过程中,RPN的anchor_scales为(32,64,128,256,512),anchor_ratios为[0.5,1,1],过滤RPN候选区域的NMS_THREAD被设置为0.7。检测过程中候选区域采样数量的最大数设置为100,检测最小置信度设为0.8,检测的非极大值抑制阈值设置为0.3。

金属表面损伤数据集以8∶1∶1的比例划分为训练集、验证集和测试集。测试后挑选一部分测试样本进行可视化。对ADC-Mask R-CNN的训练过程进行分析,整个训练过程中,loss的全局最低值出现在第29轮,此时loss值约为0.8。因此,在测试阶段选用第29轮的权重模型来测试。测试集包含不同类别但数量分布均匀的样本。

图6为使用原始Mask R-CNN模型对部分数据检测的结果图,图6a、图6b、图6c和图6d中对应的标签类别分别为脏点、脏点、不导电和脏点。图6a中对脏点类别的瑕疵存在漏检的情况,图6d中无法检测脏点。对于长条状的损伤,如图6c中的不导电损伤,模型检测出不导电与角位漏底2种损伤,说明传统的正方形卷积对于此类长条状的损伤检测效果不甚理想。相对于其它类别而言,脏点类别检测难度最高,因为样本数据集图像分辨率均为1920×2560,而脏点所占像素可能不足100,在卷积过程中可能会丢失特征,使用特征金字塔FPN实现了对小目标检测精度的提升。

Figure 6 Detection results of Mask R-CNN图6 Mask R-CNN检测结果

图7是9种不同类别的样本在ADC-Mask R-CNN模型上的检测结果,输出结果绘制出了边界框,并标出对应目标的类别标签和置信度。模型能准确识别出长条状损伤的类别并定位损伤的位置。

Figure 7 Detection results of ADC-Mask R-CNN on nine categories of samples图7 ADC-Mask R-CNN 对9种类别样本的检测结果

图8为训练过程中记录的各类损失与训练轮数之间的折线图(loss-epoch折线图),loss指总的损失,rpn_class_loss,rpn_bbox_loss,mrcnn_class_loss,mrcnn_bbox_loss,mrcnn_mask_loss为5种单项损失,loss的初始值设定为5,而每种单项损失的初始值均设为1。训练过程包含对验证集的验证,并记录每一轮验证的6种损失,且每一批次的迭代中取后50轮进行验证。通过图8可知,随着训练轮次的增加,ADC-Mask R-CNN模型在训练集和验证集上的损失总体呈减小的趋势,说明模型在迭代训练的过程中逐渐收敛。训练过程中最优权重模型出现在第29轮,此时验证集的整体损失达到最小值,约为0.8。训练过程中每一个批次迭代的轮数为100轮,且每一个轮次都会保存一个模型,方便后续实验使用。

Figure 8 Loss-epoch diagram of ADC-Mask R-CNN图8 ADC-Mask R-CNN 的loss-epoch图

在训练阶段,如果RoI区域和Ground Truth框的IoU>0.5,则RoI是正样本,否则为负样本。损失函数中的Lmask只在正样本上定义,具体训练时采用以图像为中心(image-centric)的方式训练,将图像的宽高中较小的一边缩放到1 920像素,GPU的mini-batch设置为2,GPU的显存为12 GB,初始学习率设置为0.001。

在测试阶段,采用的候选区域的数量分别为300(Faster-RCNN)和1 000(FPN)。在这些候选区域中,使用边界框预测分支配合后处理非极大值抑制来预测边界框。然后使用 Mask 预测分支对分数最高的100个检测框进行处理,与训练时Mask预测并行处理的方式不同,这里主要是为了加速推断效率。随后,Mask 网络分支对每个RoI预测K个掩码图像,只需要使用其中类别概率最大的那个掩码图像即可,然后将这个掩码图像重塑(resize)回 RoI 大小,并以0.5的阈值进行二值化处理。

图9为ADC-Mask R-CNN在测试集上测试后得到的精准度-召回率PR(Precision-Recall)图,测试集包含200多幅图像,对每一幅测试图像使用第29轮所生成的权重模型进行测试,测试过程中记录每幅图像的损失,而后生成所有类别的AP,AP值为PR曲线与坐标轴围成的面积大小,大约为0.8。

Figure 9 PR diagram of ADC-Mask R-CNN图9 ADC-Mask R-CNN 的PR图

实验中的对比基准模型选取较为常见的目标检测模型,分别是Faster R-CNN、Mask R-CNN、YOLOv4[16]、Cascade R-CNN。其中Mask R-CNN采用了2种不同的骨干网络来进行对比实验。表1给出了4种模型的对比结果。评估指标有精准度(Precision)、召回率(Recall)、F2分数和平均准确率(mAP)。相比之下,YOLOv4在该任务上表现不理想。传统的二阶段检测器Faster R-CNN与多阶段检测器Cascade R-CNN的表现接近于Mask R-CNN的,两者的mAP接近80%。对于Mask R-CNN基准模型而言,使用ResNet50与ResNet101作为骨干网络在检测性能上存在一定差异,因为网络深度加深能给模型带来一定程度上的精度提升。相比于4种基准模型,Mask R-CNN在该类任务的检测上表现最好。

Table 1 Detection results of benchmark models

ADC-Mask R-CNN模型主要研究注意力机制、可变形卷积和级联R-CNN给金属表面损伤检测任务带来的精度提升,因此本文针对不同的诀窍(tricks)还进行了模型的消融实验。主体网络选用Mask R-CNN,骨干网络分别选取ResNet50与ResNet101。在Mask R-CNN中,分别对单独加入注意力机制、可变形卷积、Cascade R-CNN级联,以及同时加入这些诀窍进行了实验。表2给出了它们的检测结果。对于主干网络ResNet50与ResNet101而言,在引入相同模块的前提下,ResNet101的表现均优于ResNet50的,说明网络越深结果越好。其次在只加入注意力机制或可变形卷积时,Mask R-CNN模型的检测性能均会有一定程度的提升,说明这2种手段对模型精度的提升带来的是正面的影响。再次,同时将注意力与可变形卷积嵌入Mask R-CNN中可以给模型带来2%~4%左右的平均准确率(mAP)提升。最后,在此基础上将Mask分支级联并再次实验,结果表明使用骨干网络ResNet101的级联网络模型,即ADC-Mask R-CNN,可以达到该检测任务上最好的结果,即mAP可以达到84.19%,说明级联R-CNN可以进一步有效提升模型的检测精度。

Table 2 Ablation experiment of ADC-Mask R-CNN model

4 结束语

基于注意力机制、可变形卷积和级联R-CNN的ADC-Mask R-CNN模型,在Mask R-CNN的基础上引入了注意力机制和可变形卷积的思想。采用ResNet101作为主干网络,并且在ResNet卷积层之间嵌入注意力模块和特征金字塔,以此来增强对小目标的语义提取和检测精度。其中注意力模块采用先加入通道域注意力再加入空间域注意力的方式,在卷积层的每一层网络之间都嵌入一个封装好的注意力模块。ResNet101中的第5层卷积层conv5_x被替换为可变形卷积网络,并在头部网络使用可变形感兴趣区域池化来增强对金属表面长条状等不规则损伤的特征提取。同时将注意力与可变形卷积嵌入Mask R-CNN中,给ADC-Mask R-CNN模型带来了2%~4%左右的检测平均准确率提升。再将Mask R-CNN的Mask分支级联,进一步提升了ADC-Mask R-CNN模型对金属表面细微不规则损伤检测的精度。

猜你喜欢

池化注意力卷积
基于高斯函数的池化算法
让注意力“飞”回来
卷积神经网络中的自适应加权池化
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
从滤波器理解卷积
基于卷积神经网络和池化算法的表情识别研究
用于手写汉字识别的文本分割方法
基于傅里叶域卷积表示的目标跟踪算法
“扬眼”APP:让注意力“变现”