融合双注意力机制和U-Net网络的锈蚀图像分割

2021-12-03 03:16陈法法成孟腾杨蕴鹏陈保家肖文荣肖能齐
西安交通大学学报 2021年12期
关键词:卷积注意力深度

陈法法,成孟腾,杨蕴鹏,陈保家,肖文荣,肖能齐

(三峡大学水电机械设备设计与维护湖北省重点实验室,443002,湖北宜昌)

金属锈蚀是指金属材料在周围介质(水、空气、化学溶剂等)作用下产生物理体积与化学性质的损耗与破坏的过程。在工程上,锈蚀会直接引起金属构件断面面积减少、截面应力提高,由此导致构件承载能力、刚度和稳定性下降。金属锈蚀不仅会缩短金属构件的使用寿命,甚至会造成严重的灾难性事故。例如:我国广州海印桥在使用6.5年后、济南黄河公路大桥使用13年后,均因拉索锈蚀严重,不得不全部更换[1];美国加利福尼亚州Folsom坝溢洪道弧形钢闸门由于锈蚀严重,支臂不能有效承载扭曲弯矩,闸门在关闭时突然发生垮塌[2]。在已发生的事故警示下,各主管部门已经充分认识到锈蚀检测、评估和防护加固的重要性。

金属构件产生锈蚀后,其表面呈现出凹凸不平、锈皮泛起等特征形貌,这些特征是进行锈蚀等级评测的重要数据来源。目前工程界对金属构件局部锈蚀特征的检测主要依赖于人工目测,然而由于金属构件表面在锈蚀形成初期特征微弱,在锈蚀动态发展过程中锈蚀分布不规则,利用人工目测很难对其锈蚀程度、锈蚀面积及锈蚀颜色等特征信息进行定量描述,检测结果的可靠性不易保证。

随着机器视觉和图像处理技术的快速发展,图像作为一种记录和描述信息的载体在金属锈蚀检测领域展现出强大的应用潜力[3]。锈蚀区域检测可以理解为图像前景分割问题,通过图像采集设备获取金属表面的锈蚀图像,结合锈蚀区域的颜色和纹理特征建立像素分类准则,利用图像处理算法提取锈蚀区域特征,进而实现对金属构件锈蚀等级的定量评测。例如:郭建斌等通过对腐蚀图像进行灰度及二值化处理,对水工结构钢表面锈蚀特征及分布状况进行了定量描述[4];卢树杰等根据锈蚀区域HSV空间的颜色特征,并结合单目视差原理对钢结构表面的锈蚀区域进行了检测与分割[5];文献[6]融合机器视觉和数据挖掘方法,从金属表面提取出锈蚀区域数字特征。基于数字图像处理的锈蚀分割方法对于理想场景、简单背景、规则构件下的锈蚀图像分割具有一定的适用性。在实际工程应用中,不规则金属构件往往受限于复杂背景干扰、遮挡等特殊工作场景,传统数字图像处理方法难以客观准确的获取锈蚀分割特征。

近年来,深度学习的迅速发展为锈蚀区域分割提供了一种新的思路,它具备准确可靠地检测并提取复杂背景下锈蚀特征的潜质,能够为锈蚀特征量化评估提供理论数据支撑[7]。Liu等研究了海洋钢结构涂层破损与锈蚀检测问题,使用VGG19和Faster R-CNN对边缘锈蚀、表面锈蚀和未锈蚀3种类型的区域进行分类[8];Papamarkou等使用ResNets深度学习网络对核燃料的不锈钢罐中的腐蚀进行检测,能够快速推断出图像中的目标是否存在腐蚀迹象[9]。但是上述方法只能对锈蚀状况定性分析,却无法准确识别并提取锈蚀区域。Ortiz等通过飞行器采集被检金属表面图像,采用FFNN构建CBC检测模型,能够从图像中识别并提取出锈蚀区域[10];王达磊等基于U-Net架构设计了深度神经网络,对自制的苏通大桥锈蚀图像进行语义分割,并对提取到的锈蚀区域进行了定量分析[11];普渡大学Qian Cheng采用RefineNet、PSPNet、U-Net等深度网络对金属表面锈蚀图像进行语义分割,实验表明在小样本数据中PSPNet和U-Net均能够有效识别并提取锈蚀区域,而其中U-Net识别准确率较高且识别速度较快[12]。

上述基于深度学习的锈蚀区域分割模型针对典型的金属构件锈蚀缺陷取得了一定的分割效果,但对于锈蚀程度较轻或是金属构件局部小区域的锈蚀特征,其分割精度往往偏离真实的锈蚀场景。同时,传统的深度学习方法在小样本数据集中也很难完整的聚焦于全部锈蚀特征像素,存在锈蚀特征误判的情形。

U-Net深度学习网络作为经典的深度学习模型,它具备训练样本少、分割精度高等优势[13]。在U-Net网络中嵌入注意力机制能够对锈蚀图像语义分割进行有效监督[14-16],使网络模型聚焦于学习局部锈蚀语义特征,精确辨识伪锈蚀特征,从而进一步优化网络的图像分割效果,增强U-Net网络的鲁棒性和泛化推广能力。基于此,本文在U-Net深度学习网络中嵌入双注意力机制,构建集成的锈蚀图像分割模型,以实现复杂背景下锈蚀区域特征的定量检测和精确分割。

1 基础理论

基于深度学习语义分割的锈蚀区域检测方法,本质是一个像素级别的辨识问题[17],基本原理如下:首先将锈蚀图像输入到全卷积神经网络,进行前向传播,输出与原图尺寸一致的概率图;再将其与手工标注的二值化标签图像进行比对,分别对每一个像素进行损失值计算,并据此进行反向传播,指导网络更新权重,如此迭代更新,直到网络模型学习到最优权重参数。训练好的模型能够区分图像上的锈蚀像素或非锈蚀像素,对锈蚀像素和非锈蚀像素分别涂上不同颜色,即可得到精准的锈蚀区域分割图。

1.1 传统U-Net模型

U-Net网络是基于FCN优化改进得到的一种轻量级全卷积神经网络,其网络结构主要包括编码器和解码器两部分,分别对应于图像的下采样操作和上采样操作[18-19]。编码器由4个相同的编码块组成,每组编码块包含2个卷积核为3×3的卷积层和1个2×2的最大池化层(下采样),激活函数采用ReLU,每经过一次下采样操作,特征图尺寸减半,通道数翻倍;解码器由4个相同的解码块组成,每组解码块包含2个卷积核为3×3的卷积层和1个2×2的反卷积层(上采样),将反卷积之后的结果与来自对应下采样的特征图进行拼接,之后采用2次3×3卷积进行卷积运算,激活函数同样采用ReLU,每经过一次上采样操作,特征图尺寸翻倍,通道数减半;在上采样的最后一层中,采用1个卷积核为1×1的卷积层将特征向量映射到网络的输出层。传统U-Net模型结构[20-21]如图1所示。

图1 U-Net网络结构图

1.2 双注意力机制

在锈蚀区域检测中,为了在复杂背景下实现对局部微小锈蚀区域、伪锈蚀区域进行准确区分,设计了双注意力特征融合模块,将其运用在下采样和上采样之间同尺度的跨层连接中,使网络聚焦于局部锈蚀特征的识别,改善分割效果。

双注意力特征融合模块如图2所示。首先来自上采样的深层特征图H包含丰富的分类信息,来自下采样的浅层特征图L包含丰富的位置信息,令前者通过通道注意力模块CAM,后者通过空间注意力模块SAM,实现特征重标定;然后将二者相加进行融合,送入通道注意力模块CAM,形成结合位置和分类信息的注意力权重,将该权重与浅层特征图L进行相乘,增强对锈蚀特征的学习;最后将得到的特征图与深层特征图H相加,得到输出特征图O。

图2 双注意力特征融合模块

在DAFFM模块中,设计了两种注意力子模块,即通道注意力模块(CAM)和空间注意力模块(SAM)[22-23],分别如图3、图4所示。在通道注意力模块CAM中,首先对输入特征图X做全局平均池化(global average pooling, GAP)操作,得到每一个通道特征图的全局信息特征值,然后进行1×1卷积,最后通过ReLU激活和Sigmoid操作对特征进行非线性转换,将数值压缩到0到1之间,生成注意力权重。利用该权重与输入特征图X进行相乘得到输出特征图Y,从而实现通道方向上特征重标定。

图3 通道注意力模块

图4 空间注意力模块

在空间注意力模块SAM中,利用1×1卷积核,将通道数降至1,此时特征图中每一个像素都是该像素在全部通道方向上的一个特征值,对该特征值进行Sigmoid操作,生成注意力权重,再与输入特征图X相乘,即可得到宽和高方向上重标定的特征图Y。

1.3 深度可分离残差卷积

为了提升语义分割模型的运行速度,需要在保证识别精度的同时,尽可能地减小模型尺寸、降低计算复杂度[24]。为此,本文借鉴MobileNet和ResNet设计了一种深度可分离残差卷积模块(DSRCM),将其运用在上采样阶段,同时引入残差结构,对浅层和深层特征进行融合,提高特征提取能力。此外,该模块中还使用了组归一化(group normalization, GN),来适应小批量数据的训练。深度可分离残差卷积模块如图5所示。

图5 深度可分离残差卷积模块

2 锈蚀图像分割模型与流程

2.1 锈蚀图像分割模型构架

本文基于U-Net设计了一种用于锈蚀区域检测的语义分割模型,其基本架构如图6所示。为了便于理解,将各层特征图的尺寸(记为a)和通道数(记为b)以a2×b的形式标注,各特征图所在的层数在侧边使用圆圈序号进行了标注,各符号的含义在图例中给出。

图6 锈蚀图像语义分割网络结构

网络整体分为下采样、上采样两大部分。在下采样过程中,使用去掉全连接层的VGG16作为前端特征提取器。第1层使用由两组3×3卷积(步长为1,填充边距为1)、批归一化(batch normalization, BN)、ReLU激活组成的标准卷积模块提取特征。第2层使用最大池化进行下采样后,执行前述标准卷积操作。第3层到第5层中,为了加强网络的特征提取能力,使用了3组上文中的卷积池化操作。在下采样过程中,每增加一层,特征图尺寸减半,通道数翻倍(其中第5层通道数不变)。

在上采样过程中,为了防止过拟合,首先将第5层以0.5的概率进行Dropout操作;再经过双线性插值上采样后,与来自下采样阶段第4层的同尺度特征图一并送入注意力模块中,输出加强语义信息的特征图。为了进一步提取特征,将特征图继续送入深度可分离残差卷积模块。在第6层到第9层均采取了上述操作,每增加一层,特征图尺寸翻倍,通道数减半。对第9层的特征图,使用1×1卷积,将特征图通道数降至1,然后进行Sigmoid操作,从而得到预测概率图。在预测时,使用第9层的输出概率图,以0.5作为阈值生成二值化分割图像。

2.2 锈蚀图像分割流程

本文模型中的模型训练与测试流程如图7所示。首先对锈蚀图像数据集进行预处理,划分为训练集、测试集和验证集;然后使用VGG16预训练权重对模型进行初始化,并结合训练集和验证集使用动态学习率衰减策略对模型进行迭代更新;最后将测试集输入到训练好的锈蚀图像分割模型上进行测试,从而实现锈蚀图像的区域分割。

图7 本文模型的训练与测试流程

2.3 损失函数

锈蚀图像语义分割本质上是一个像素级别的二分类任务,通常采用二进制交叉熵损失函数(binary cross entropy loss, BCE Loss)计算误差。然而,在锈蚀图像中,锈蚀像素数远少于非锈蚀像素数,存在类不平衡问题,使用二进制交叉熵会导致所预测结果被非锈蚀像素所主导,造成识别能力下降。同时,在锈蚀图像中,锈蚀区域往往比非锈蚀区域更难识别,存在难易不均衡问题。因此,为了克服这些问题,本文采用焦点损失函数,其计算公式[25]如下

FL(pt)=-αt(1-pt)γlog(pt)

(1)

(2)

式中:p为模型输出的类别概率,p∈[0,1];αt为第t类样本的损失权重,所有类别的损失权重之和为1;γ控制难易样本损失的大小,且γ≥0。当γ增大时,模型会更加关注难以区分的样本;当γ=0时,焦点损失函数退化成带αt的普通交叉熵损失函数。

2.4 评价指标

为了定量评价本文所构建的网络模型在锈蚀图像语义分割中的性能,采用准确率(Acc)、精确率(Pre)、召回率(Rec)、Dice系数(Dice)和交并比(Iiu)等作为评价指标,计算公式如下

(3)

(4)

(5)

(6)

(7)

式中:TP为实际是锈蚀且被准确识别为锈蚀的像素点数量;FN为实际是锈蚀却被识别为非锈蚀的像素点数量;TN为实际是非锈蚀且被准确识别为非锈蚀的像素点数量;FP为实际是非锈蚀却被识别为锈蚀的像素点数量。上述指标的取值范围均在0到1之间,数值越大,则表明模型性能越好。

3 实验与验证实例

3.1 数据集

由于目前没有公开的锈蚀图像数据集,本文所采用的数据集来源于网上搜索的500张不同尺寸的锈蚀图像。本文数据集图像涵盖了多种应用场景下的锈蚀特征,从带有局部锈蚀的钢架桥到整体发生锈蚀的钢制管道等,锈蚀大小与锈蚀程度覆盖范围较广。

锈蚀通常伴随着钢材表面的涂层破损,锈蚀部位往往会呈现红棕色,严重时甚至变为黑红色,而且锈蚀表面较为粗糙。因此,在对原始数据集制作标签时,按照以上经验对图像中的锈蚀区域进行判定并标注,标注工具采用Photoshop CS6。原始数据集中每一例数据都包括标签图像,图像标注如图8所示,其中图8a为原始的锈蚀图像,图8b为最终的标签图像,锈蚀区域用白色标注,其像素值设为255,背景区域用黑色标注,其像素值设为0。在完成所有图像数据的标注工作后,按照8∶1∶1的比例将数据集划分为训练集(400张)、验证集(50张)、测试集(50张)。

(a)原始锈蚀图像

3.2 数据预处理

为了增加数据的多样性,避免过拟合发生,采用水平翻转、垂直翻转、放大1.4倍、旋转45°并放大1.4倍、亮度增强至1.2倍、亮度降低至0.8倍以及高斯模糊等操作对训练集和验证集进行离线增强。以上增强操作可将训练集数据扩充至3 200张,验证集扩充至400张。对于测试集,则不采取增强操作,直接用于模型评估从而保证测试集数据的真实性。

3.3 模型训练

为了对所提方法进行合理评估,所有模型均在Windows10+Python3.6+Pytorch1.0环境下训练和测试,使用内存为24 GB的GeForce RTX 3090显卡进行加速。

通过预训练权重来改善模型的性能,使用在大规模数据集ImageNet上训练得到的VGG16模型参数初始化所提模型的编码部分,然后与解码部分结合进一步训练和微调,将VGG16强大的特征提取能力迁移到锈蚀图像的锈蚀区域分割中。

通过选择自适应矩估计优化器(Adam)来进行网络优化更新,设置一阶矩估计的指数衰减率为0.9,二阶矩估计的指数衰减率为0.999,权重衰减系数为0.000 01。设置批大小为4,训练轮数为50个epoch,初始学习率为0.001,使用ReduceLROnPlateau动态学习率调整策略,完成学习率自动衰减。即在每个epoch训练完成后,就在验证集上进行测试,记录其损失值。当检测到2个epoch下验证集的损失值未发生下降时,将学习率调整为原来的50%。学习率最小值设置为0.000 001。

3.4 实例验证

3.4.1 不同算法效果对比 为了验证本文所提方法在锈蚀语义分割中的有效性,选择传统图像分割模糊C均值法(FCM)、传统的深度语义分割模型FCN、SegNet、U-Net、DeepLab V3+作对比测试,对同一组测试图像进行锈蚀分割,其检测结果如图9所示。

(a)铁板 (b)护栏(c)金属支柱(d)铁架 (e)铁片

图9中每一列分别由锈蚀图像原图、人工标注的真实图像以及不同模型的输出图像组成。通过对比图9可以发现:当图像中前景与背景差异较大、纹理较简单时,传统FCM图像分割模型借助人工筛选结果,能够粗略分割出锈蚀区域(如图9a所示),但在复杂背景下,几乎无法辨识出锈蚀区域(如图9d、图9e所示);深度学习模型总体上比传统图像分割效果更好;SegNet、U-Net对非锈蚀区域的区分能力较差,分割出的锈蚀区域出现孔洞、轮廓断开的情况较多,边缘不够平滑(如图9b、图9d所示);FCNs在总体轮廓的识别上效果较好,但细节上无法聚焦,因此出现了一些误判(如图9d、图9e所示);DeepLab V3+整体上识别效果较好,但是部分图像中出现较多孔洞(如图9b、9c);本文模型所设计的注意力机制以及预训练策略,使得模型更加聚焦于锈蚀区域与非锈蚀区域的细节区分,得到的锈蚀区域轮廓连续,且对于面积小的局部锈蚀区域也能准确识别(如图9b所示)。

采用3.1节中的评价指标基于测试集分别对不同深度学习模型进行定量分析,采用单张图片的测试时间t分析模型时间复杂度,各算法在50张测试集图像上评价指标的平均值如表1所示。从表1可以看出:本文模型在准确率、召回率、Dice系数和IoU系数上性能明显优于传统深度学习方法,在精确率上也较传统方法有较大优势;单张图片的平均测试时间中,相较于FCNs等经典网络,本文模型由于结构更为复杂,因此测试时间略有增加,而语义分割常用网络DeepLab V3+由于骨干网络层数更深导致测试时间相对较长。

表1 不同深度学习模型的锈蚀图像分割性能对比

3.4.2 各模块效果验证 为了分析本文所构建的网络中各个模块的作用,训练了4个不同的网络用于对比分析。第1个模型为原始的UNet;第2个模型为VGG-UNet,在第1个模型的基础上,前端特征提取部分采用了去掉全连接层的VGG16结构,上采样采用了深度可分离残差卷积;第3个模型为VGG-UNet-Att,在第2个模型的基础上加上了注意力机制;第4个模型为P-VGG-UNet-Att,在第3个模型上加上了预训练权重,这也是本文所采用的最终模型。以上4个模型均采用同一套数据集,使用相同的损失函数和训练策略,并保证相关参数一致,分别训练以上模型,其结果如表2所示。

从表2中可以看出,当逐步引入所改进的模块时,模型在准确率、召回率、Dice系数和交并比系数上均得到了不同程度的提升。在原始UNet上使用VGG作为前端特征提取,并采用深度可分离残差卷积后,模型的交并比上升了2.6%;引入注意力机制后,上升了1.6%;进一步使用预训练权重后,交并比上升了5%。

表2 各模型效果的定量评价表

此外,对比分析一些复杂场景下的锈蚀图像,分别测试这4种模型的锈蚀分割效果,如图10所示。从图10可以看出,引入注意力机制以及预训练权重后,能够加强模型对锈蚀区域的辨识能力,所得到的锈蚀分割图像具有更清晰的边缘轮廓,并且对不同锈蚀程度下的同一锈蚀区域具有好的包容性,几乎没有出现孔洞和不连续的情况。

(a)铁架 (b)链条 (c)铁环 (d)齿轮 (e)扶手

不同深度学习网络模型在训练集中50个epoch的准确率和损失函数值变化如图11所示。从图11a可以看出,FCNs模型的收敛速度较慢,其在30个训练周期后才接近收敛,其他模型在20个训练周期即已接近收敛,由此可知本文模型收敛速度快且波动幅度小;从图11b可以看出,SegNet模型的准确率最低,而U-Net和DeepLab V3+模型的较为接近,本文模型的准确率经过50个训练周期后在训练集中达到97.8%,相比其他模型有较大优势。

(a)训练集损失函数值

3.4.3 工程测试验证 为了验证本文网络结构的鲁棒性和有效性,对实地复杂场景采集到带有锈蚀的图像进行分割,如图12所示。由图12a可以看出,对于几种不同尺寸和形状的锈蚀钢材图像,本文模型能够精准识别出锈蚀区域;由图12b可以看出,钢材在不同部位出现了不同程度的锈蚀,在左下角还存在零散的小面积点蚀,对于这种锈蚀图像,本文模型也能够定位到锈蚀区域,给出准确的锈蚀轮廓;由图12c可以看出,即使钢材出现了十分微弱的粉状锈蚀,模型也能识别出主要的锈蚀区域,包容性较强;由图12d可以看出,圆桶内壁的锈蚀区域处于不同的光照条件下,一部分被阳光直射,另一部分则处于阴影之中,对于这种情况,模型也能兼容,将二者同样识别为同一锈蚀区域;由图12e可以看出,钢材处于复杂的山地环境,而枯黄的叶子等由于与锈蚀颜色较为接近通常会对传统网络模型的识别造成较大干扰,但在图12e中其对本文模型干扰较小,模型仍能准确识别该锈蚀钢材的主体轮廓;由图12f可以看出,当拍摄的锈蚀图像存在景深效果时,不会对模型造成严重干扰,说明模型已经学习到锈蚀的高级语义信息,具有较强的抗干扰能力。

(a)金属制品 (b)铁栅栏 (c)门把手 (d)铁桶 (e)水管 (f)消防栓

综上所述,本文所提模型能处理各种复杂环境下的锈蚀图像,具有较强的鲁棒性和实用性。

4 结 论

本文针对复杂多变背景图像中锈蚀区域难以精确分割的问题,提出一种融合双注意力机制和U-Net网络的锈蚀图像区域分割方法,得出如下结论:

(1)采用VGG16预训练权重对U-Net模型进行初始化,并采用深度可分离残差卷积模块减少模型尺寸,不仅能够有效降低小样本导致的网络过拟合问题,而且可以提高网络特征学习能力,加快收敛速度;

(2)在改进的网络结构中引入双注意力机制并使用动态学习率衰减策略对模型进行迭代更新,加强对于锈蚀目标特征的学习,抑制复杂多变背景的干扰,实现了在复杂多变背景中的锈蚀特征检测,提高了锈蚀区域分割的精度和效率;

(3)分别从不同算法效果对比、各模块效果验证和工程测试验证多个角度,从实例上对本文算法进行验证,准确率达到95.5%,交并比指标为81.4%,单张图片的测试时间为0.596 s,多个评价指标均显示出所提方法在图像锈蚀区域分割中整体性能更优,具备一定的有效性和实用性。

猜你喜欢
卷积注意力深度
基于全卷积神经网络的猪背膘厚快速准确测定
四增四减 深度推进
深度思考之不等式
让注意力“飞”回来
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
简约教学 深度学习
A Beautiful Way Of Looking At Things
阅读理解两则