吴奇文,王建华,郑翔,冯居,姜洪岩,王昱博
(航运技术与控制工程交通运输行业重点实验室(上海海事大学),上海 201306)
定期水质监测是护好绿水青山的一个重要环节。水面无人艇(Unmanned Surface Vehicle,USV)作为一种广泛应用于江河湖海的水上机器人,可搭载相应的传感器完成水质检测及水面环境监测,为环境保护提供了一条安全、高效、客观的技术途径。水草包括藻类水生植物、藓类水生植物以及蕨类水生植物等,一般以片状或块状集群式呈丝状错综复杂的生长在水下6 cm 左右、水面以及岸边。水草具有一定韧性,会随水流方向而摆动,常会缠绕无人艇推进器,导致无人艇两侧推力不对称,影响自主航行性能,甚至导致推进电机被烧坏,无人艇彻底失去动力,需要救援打捞。因此,水草是无人艇航行过程中的一种潜在威胁。
目前解决水草缠绕问题主要有两类方法:安装水草切断装置和人工干预避让。水草切断装置需要考虑推进器的结构,需要提供动力,对于小型推进器难以安装。人工干预避让是指:远程遥控通过无人艇传回的图像来观察水草,进行人工识别规避。但由于网络延时,无人艇在没收到规避指令前就有可能已经驶入水草区域了,从而导致被水草缠绕。如果无人艇能够自主识别水草并及时规避,就可以避免网络延时带来的不利影响。
在人工智能技术的推动下,有关水面物体识别的研究也在逐渐增加。罗艾娜等[1]通过增加卷积核数和引入HIS(Hue-Intensity-Saturation)颜色空间,实现了在复杂光照下蓝藻图像的语义分割;杨朔等[2]提出了一种基于深度神经网络(Deep Neural Network,DNN)和生成对抗网络(Generative Adversarial Network,GAN)思想的网络结构用于蓝藻图像语义分割,对蓝藻的分割效果具有一定的提高;李国进等[3]提出了一种改进的 Faster R-CNN(Fast Region-based Convolutional Neural Network)水面漂浮物的识别和定位方法,该方法在Faster R-CNN 基础上添加了定位模块以实现对水面漂浮物的准确定位;Zhao等[4]将深度迁移学习应用到海事图像分类中,提出了合并数据集网络和骨干网络组成的双重传输方法,在海事图像分类起到了一定效果;邹宜洋[5]将神经网络应用到船舶的识别定位中,实现了有效的船舶跟踪;涂昊等[6]利用改进的YOLOv3(You Only Look Once version 3)网络提出了一种可应用于实际集装箱站场的实时集装箱箱号识别方法用于集装箱箱号识别。
以上研究启发本研究将神经网络应用到水草的识别,基于神经网络的图像识别方法有图像分类网络、目标检测网络和目标分割网络。考虑到一般无人艇在作业过程中缠绕推进器的水草大多为藓类和蕨类,具有更强流动性和不规则性。相较于图像分类网络和目标检测网络对整幅图像按一定的类别进行分类和按图像中出现的目标种类进行分类的方式,语义分割网络对整幅图像的全部像素做分类的方式更适合用来对水草的识别。
FCN(Fully Convolutional Network)[7]为语义分割网络的开山之作,将卷积神经网络(Convolutional Neural Network,CNN)中的全连接层换成了卷积层来获得图像中每个像素分类结果,对比传统语义分割方法在分割准确率上有很大提高。Ronneberger等[8]随后提出了另一经典语义分割网络U-Net(U-Network),该网络包含一个编码器模块、一个解码器模块和从编码器中的层到解码器中的相应层的跳跃连接,编码器模块压缩特征图以获取更高的语义信息,解码器模块负责恢复该空间信息,通过对图像特征的编码与解码,并融合网络高低层语义特征,可以实现较好的分割效果。与FCN相比,U-Net 能将浅层特征提取后和高层特征进行拼接,特征融合更加充分,达到较好的分割效果。但是,水草图像具有边缘模糊且不规则、纹理细微和外形发散等特点。仅用单尺度输入的U-Net 对水草图像分割,存在不能很好地聚合不同区域的上下文信息、特征信息丢失较多、特征利用率低、轮廓分割不够清晰、小目标分割性能差、特征提取不够充分等问题。
因此针对以上不足,本文提出了一种改进的U-Net 水草分割方法,该方法在网络中引入了多尺度图像输入,让网络在不同层都能提取到图像原始特征信息,减少图像信息特征丢失的同时提高网络特征利用率;增加由通道注意力机制[9-11]和空洞卷积[12-14]组合而成的混合注意力模块,结合上下文特征将局部特征与全局特征较好地融合,使图像特征提取更加充分,改进边缘特征提取效果,改善网络对小目标分割的性能;在损失函数中同时引进三种上采样图像的损失函数来平衡三个尺度输入图像带来的整体损失。对比其他语义分割网络,本文提出的改进的语义分割网络在水草图像分割性能上具有明显提高。
本文所用的数据为由无人艇“海翔”号携带图像采集装置和智能手机拍摄,在上海海事大学的智慧湖、浦东新区南汇新城的滴水湖、江苏省苏州市吴中区的安全港、白马港等三十多条河道采集的视频数据,涵盖藻类、藓类、蕨类以及一些禾本科类水生草本植物,如图1 所示。
水草图像数据是在不同天气下,依次按早、中、晚三个时间段等比例采集的,初始数据集一共有6 867 张图像,经过筛选,最终选出了2 760 张图像。为防止过拟合现象,采用旋转(左旋转20°,右旋转10°)、左右互换和缩放(缩放为原始图像的0.85 倍)的方式对数据集进行数据增强,经过数据增强后生成了5 000 张图像。以8∶1∶1 的比例分别将数据集划分为训练集、验证集和测试集,三者之间采用的图像数据互不重叠。按二分类问题,将图像中的像素分为水草像素和非水草像素,其中水草部分的像素值设置为1,用红色(RGB(255,0,0))标注,非水草部分的像素值设置为0,用黑色(RGB(0,0,0))标注。使用labelme 标注软件进行手动标注生成的相应的水草轮廓标签,结果如图2 所示。
本文提出的改进U-Net 分割方法的网络结构如图3 所示。图3 中灰色框代表多通道特征图,白色框代表由双线性插值复制的特征图,框中的标注为特征图的尺度大小和通道数,格式为W×H×C,其中W和H表示特征图大小,C表示通道数。
总体结构以ResNet18 为基础网络,引入三个不同尺度图像作为不同层的输入加入到网络中,使网络尽可能多地保留图像原始特征信息;在下采样与上采样之间加入由通道注意力机制和空洞卷积组合而成的混合注意力模块,让上下文提取到全局信息和局部信息充分融合,并将融合后的信息输入到上采样网络;最后为了平衡三个尺度图像输入带来的整体损失,对经过上采样(双线性插值)后输出的三个尺度预测图均做了损失计算,并将三个损失都加入到了整体损失中。
卷积神经网络层数加深的过程,是从低层次到高层次的语义特征提取过程。水草图像具有较细致的纹理分布和复杂的轮廓形状等特点,网络在低层提取到的特征只是一些水草轮廓特征。随着网络的加深,更加细致的水草纹理信息会被加入特征图中,轮廓特征也会进一步被提取;但每层网络对图像特征提取都具有局限性,不能提取到完整的全局特征。图像每经过一层网络都会丢失一些纹理特征和轮廓特征信息,到最后一层就会丢掉比较多的纹理和轮廓信息。
Tao等[15]提出了基于多尺度输入的分层多尺度注意力网络,使用了不同分辨率的图像作为网络输入,并在街景图像分割的开源数据集上表现出较好的性能,本文吸收了其核心思想并结合水草图像特征,设计了多尺度图像网络输入结构,来解决以上问题,使网络能获得输入图像的更全面的特征,如图4 所示。
结合ResNet18 的网络结构特性,引入分辨率为224×224、112×112 和56×56 的三个不同尺度的图像作为输入,分别定义为输入1、输入2 和输入3。
图4 中Stage1 的输出提取了输入1 的特征,并从输入2 补充了原始图像特征信息。输入1 经过步长(stide)为2,卷积核为7×7 的卷积层的输出与输入2 经过卷积核为3×3 的卷积层的输出均为112×112 的特征图,通道数均为64,将两者进行通道特征融合后得到112×112,通道数为128 的特征图。
同理,在Stage2 的输出中补充了来自于输入3 的图像信息。Stage1 的输出经过卷积核为2×2 的池化下采样层,得到56×56,通道数为64 的特征图作为Stage2 的输入。输入3 经过一个卷积核为3×3 的卷积层后输出与Stage2 的输出均为56×56 的特征图,通道数均为64,将两个特征图进行通道特征融合得到56×56,通道数为128 的特征图。融合后的特征图经过卷积核为2×2 的池化下采样层后得到28×28,通道数为64 的特征图,作为Stage3 的输入。
通过上述在不同层引入与上一层的输出具有相同的尺度和通道数的图像作为这层的输入,就可以保留上一层的一些全局信息,减少整体信息丢失。将不同尺度的图像送入网络提取出不同尺度的特征做融合的方法使网络获得了不同的感受野,能够在不同尺度上捕捉信息,对整个网络性能有较大的提升。
注意力机制类似于人类的视觉感知中的选择性视觉,能够在快速扫描目标物体后准确地捕捉到想要关注的重点区域;注意力机制也可在遍历全局特征图后,定位需要重点关注的关键区域,并对这一区域的特征信息给以更多的重视以及一定比例的权重,从而获取更多关键区域特征图的细节信息,同时也会抑制其他无用信息。引入注意力机制可有效地解决水草分割问题中的长期依赖性问题,提高整体模型的准确性。
为此,本文提出一种混合注意力模块,如图5 所示。模块包含两条分支:空洞卷积分支和通道注意增强分支,其中空洞卷积分支可以在增强局部特征信息提取的同时增大全局感受野;通道注意力增强分支可以实现通道特征融合,获得全局关于水草的重要信息,对重要的特征增加权重,并使网络更多地关注水草这一至关重要的特征。
网络在经过编码模块提取特征后得到一个输出特征图X∈RW×H×C,其中W、H和C分别表示特征图的宽度、高度和通道数。应用两个卷积层来分别生成两个特征图和X2∈RW×H×C,其中C′是用于较小计算成本的局部特征的减少的通道数。由X1生成注意力特征图。
经过维度变换和矩阵转置后得到经过维度变换后得到矩阵转换为,其中两个维度分别是输入特征图的通道数和高度与宽度的乘积。通道关系X3∈RC′×C为:
如式(2)所示,X3等于X2*和的乘积,通过矩阵重建得到Y∈RW×H×C。
其中:Θ(g)表示重建矩阵函数。Y是通道关系从类别信息的角度捕获长期上下文信息,即显示了每个类别和输入特征矩阵的每个通道之间的关系。最后Y与X进行拼接并进行下采样得到与X尺寸一致的特征图,可以有效地提取类和通道的相关性并自适应地从类别视图中聚合全局上下文信息,最终输出相同大小的特征图Z∈RW×H×C。
由于改进的U-Net 引入了三种尺度的输入图像,所以在损失函数[16-17]上也同时引进三种采样图像的损失函数来平衡这些损失。整体损失函数等于加权多尺度损失函数和Dice[18]损失函数之和,整体损失Ltotal为:
其中:Lscale为多尺度加权损失;Ldice为Dice 损失,是一种用于评估两个样本的相似性的度量函数,取值范围在0 到1 之间,取值越大表示越相似。
Dice 损失的定义如下:
其中:|X∩Y|是X和Y之间的交集的元素的个数,|X|和|Y|分别表示X和Y元素的个数,等式右侧的减数的值在0 到1之间。
Lscale多尺度加权损失为:
其中:L1、L2和L3分别表示尺寸224、112 和56 的损失函数,采用的是二元交叉熵损失函数[19]:
其中:N表示像素点数;yc表示真实的标签值,在网络的训练过程中,使用独热编码来表示,值1 表示前景像素,值0 表示背景像素;pc表示网络对像素点的预测结果。在实验中发现λ1、λ2和λ3分别在0.8、0.15 和0.05 的值时,分割效果更好。在二元交叉熵的计算中,当真实值分布和预测值分布越接近时,其交叉熵值也就越小。
本文实验环境是基于PyTorch 框架和Python 语言搭建,在Ubuntu18.04 系统下以PyTorch 1.10 为基础编写,并使用NVIDIA RTX2080ti GPU 进行训练。
本文在神经网络训练实验中采用Adam 优化器进行优化,以多尺度混合损失函数作为目标函数,其中,一次放入网络训练的图像个数(batch-size)为4;学习率为1E-4;epoch 为100 次;从第20 个epoch 开始调整学习率,方法为学习率衰减,经过实验测试最终设置衰减值为0.92,间隔为2。
语义分割网络的性能评价指标常见的有准确率(Accuracy)、召回率、均交并比(mean Intersection over Union,mIoU)、像素精度(Pixel Accuracy,PA)和平均像素精度(mean Pixel Accuracy,mPA)等,其中,准确率、均交并比和平均像素精度最具有代表性,因此本文将以上3 个指标用于对不同网络水草图像分割性能做综合评价和对比分析,最终分割性能由各指标值大小判定,评价指标的值越大表示分割的效果越好,各评价指标定义依据,如表1 所示。
表1 评价指标依据Tab.1 Evaluation index basis
其中,准确率、均交并比和平均像素精度3 个指标定义如下:
3.3.1 不同水草分割方法及结果对比
为验证本文方法对水草分割效果的有效性,另选取了较为流行的5 种分割网络,分别为FCN(VGG16)[7]、SegNet[20]、U-Net(VGG16)[8]、U-Net(ResNet18)[8]以及DeepLabv3[13],与本文所提出的改进的U-Net 进行水草分割实验结果对比。按照上文的参数配置对网络参数进行设置,采用本文所建立的水草数据集对以上6 种网络进行训练,并利用测试集对训练好的模型性能进行测试。各网络分割结果的各项评价指标值如表2 所示。
从表2 可以看出,在本文的数据集上,本文方法在准确率指标上可以达到96.80%,相较于U-Net(VGG16),本文方法在准确率、mIoU 和mPA 值上分别提高了4.62、3.87 和3.12 个百分点。在mIoU 值和mPA 值方面,相较于其他几个网络,本文方法均具有较明显的提升,mIoU 值为91.22%,分别比U-Net(ResNet18)和DeepLabv3 提高了1.80 和1.26 个百分 点;mPA值为95.29%,分别比U-Net(ResNet18)和DeepLabv3 提高了1.02 和0.43 个百分点。
表2 不同方法的分割结果对比 单位:%Tab.2 Comparison of segmentation results of different methods unit:%
经过以上与不同网络的分割测试对比可以看出本文方法在水草分割上具有较好的性能。这是由于一方面改进后的网络通过多尺度图像输入更加充分地提取了图像的特征;另一方面加入了混合注意力机制模块,使得网络能够对局部关键区域具有更多的关注,让局部关键区域特征得到一定的权重,网络对关键区域的特征提取更加充分,并结合了空洞卷积保留了全局有用信息,进一步加强网络对特征的传递和利用,同时在损失函数上引进三种上采样图像的损失函数来平衡三种尺度的输入图像带来的网络总体损失。
随机选取4 张测试图像,使用6 种网络的分割结果的可视化如图6 所示。从测试图1 的结果可以看出:相较于SegNet 和U-Net(VGG16)这两个网络,FCN(VGG16),U-Net(ResNet18)以及DeepLabv3 这3 个网络对于小目标水草的分割表现出更好的效果,其中最好的是U-Net(ResNet18);相较于U-Net(ResNet18),本文方法对于小目标的分割效果表现出进一步的提高。从测试图2~4 的结果可以看出:FCN(VGG16)和SegNet 相较于其他几个网络来说,对水草轮廓边缘和纹理的分割表现得效果较差,分割效果较粗糙;而U-Net(VGG16)对比其他几个网络存在分割不充分、不全面、水草像素分类准确率不高等问题;相较于其他网络,本文方法能够有效地区分水草部分与非水草部分,对水草轮廓的预测更为精确,同时分割结果显示本文的方法对小目标水草的分割,水草边缘轮廓的准确分割表现出较好的效果。
综上所述,与其他分割网络相比,本文改进的U-Net 语义分割网络的分割效果有明显的提升,在针对边缘细节较为复杂的水面草本类水草或边界模糊的水下藻类、藓类和蕨类水草的图像分割中表现出良好的分割性能。
3.3.2 消融实验
为了验证改进部分对网络分割性能的影响,进行了消融实验对比,分析多尺度图像输入、混合注意力模块和损失函数这3 个模块对网络性能的作用。为了保证实验效果的同时减少实验的冗余,本文在“U-Net+混合注意力模块”“U-Net+多尺度图像输入”“U-Net+混合损失函数”“U-Net+混合注意力模块+多尺度图像输入”“U-Net+混合注意力模块+混合损失”“U-Net+多尺度图像输入+混合损失”这6 种组合情况中选取了“U-Net+混合注意力模块”“U-Net+多尺度图像输入”和“U-Net+多尺度图像输入+混合损失函数”这3 种情况展开实验并与本文方法进行对比。该实验是在本文所建立的水草数据集上进行的。实验结果对比如表3 所示。
表3 在水草数据集上的消融实验结果对比 单位:%Tab.3 Comparison of ablation experimental results on waterweed dataset unit:%
由表3 可以看出,相较于单个U-Net(ResNet18),加入混合注意力模块后,网络的整体性能具有明显的提高,其中在准确率的提高上表现得最为明显,提高了2.37 个百分点;对比单尺度输入的U-Net(ResNet18),加入多尺度图像输入后,网络准确率提高了2.27 个百分点;加入多尺度图像输入和混合损失函数后,网络在准确率、mIoU 值和mPA 值上均有提高,其中,准确率提高了2.61 个百分点,效果最为显著。仅加入多尺度图像输入的网络与加入多尺度图像输入+混合损失函数的网络相比,可以看出混合损失函数对各评价指标值也有一定提高效果。
本文方法相较于其他的模块组合的对比情况,在整体分割性能上表现最优,所得准确率相较于加入“混合注意力模块”“多尺度图像输入”和“多尺度图像输入+混合损失函数”的实验,分别提高了0.91、1.01 和0.67 个百分点,所得mIoU值相较于其他3 组实验分别提高了1.17、1.77 和0.56 个百分点,所得mPA 值相较于其他3 组实验提高了0.58、1.00 和0.62 个百分点。
接着将“多尺度图像输入+混合损失函数”和本文方法即“多尺度图像输入+混合损失函数+混合注意力模块”进行了对比,分析有无混合注意力模块对网络的性能影响。两种方法总体损失下降曲线如图7 所示,可以看出,加入混合注意力模块后的损失曲线比未加入前的损失曲线效果更好。在迭代初期,加了混合注意力模块的方法下降更快。同时,可以看出随着迭代次数的增加,加了混合注意力模块后的损失下降曲线比改进前的损失下降曲线更平稳,收敛更快。这也说明,加入混合注意力模块后对本文方法是有效的。
以上实验结果表明,在网络中同时加入混合注意力模块、混合损失函数和多尺度图像输入后,能够有效地提高网络对水草图像分割的准确率、均交并比和平均像素精度。在加入“多尺度图像输入+混合损失函数”的基础上,加入混合注意力模块后,整体损失下降速度也有明显的提升。本文方法将混合注意力模块、多尺度图像输入和混合损失函数三者结合,应用于U-Net(ResNet18)中,在网络整体分割性能提高上呈现出明显的效果,对水草图像的分割上展现出良好的性能。
有效的水草检测可提高无人艇等水上机器人在水面作业的安全性和效率。本文通过水面无人艇装置及相关图像采集设备采集并制作数据集,并提出了改进的U-Net 用于水草分割。与其他分割方法对比,该网络能够满足多尺度的特征融合,并使用混合注意力机制的双层分支令网络聚焦更重要的特征和全局信息的读取,最后加入了的混合损失函数帮助网络平衡引入的三种尺度的输入图像所带来的总体损失,以解决网络在训练过程中面临的类不平衡问题。相较于其他方法,识别的准确率和mIoU 等都有明显的提升,实验结果表明所提方法对水草轮廓分割更为精确,对小目标水草的分割表现出较好的效果。目前,实验室采集的数据集还在扩充,下一步将在数据集的完善、水草类别的细化和准确率的进一步提高等方面继续展开研究。