淦智权
(1. 中国船舶集团有限公司第七一〇研究所,湖北 宜昌 443003;2. 清江创新中心,湖北 武汉 430076)
水下目标的声呐图像分割近年来成为图像分割的热门领域,应用十分广泛,包括海底油气资源勘探、海底地形地貌测绘、鱼群探测等等,在军事方面也可以用于水下目标如水雷、潜艇、UUV等的识别和探测[1],具有十分重要的战略意义。随着海洋开发的日益拓展和声呐技术的不断进步,声呐图像分割技术受到越来越多研究人员的重视。
水下目标的声呐图像一般可以分为目标高亮区、阴影区、海底混响区3个主要部分。通过对声呐图像进行准确的区域语义分割,将水下目标区域像素信息从原始图像中分割标注出来。目标轮廓的标注是声呐图像分割技术的关键,形成清晰的边缘分割信息后,经过后续的差异化处理,最后可以用于水下各种目标的识别和跟踪。当前光学图像分割技术的应用已经十分成熟,然而在声呐图像处理领域,由于声呐技术的特殊性和声呐图像的复杂性,研究人员对于声呐图像分割的研究成果相对较少。传统的声呐图像分割算法有:基于马尔科夫随机场(MRF)[2]、聚类理论[3]、边缘检测理论[4]、阈值理论[5]等的分割算法,这些算法大多是基于特定理论的讨论。在理论融合的研究方向上,罗进华等人[6]结合数学形态学的方法,通过对声呐图像完成阈值处理之后,再使用结构元素对目标区域进行填充同时消除噪声影响。然而在这种方法中,由于声呐图像的目标尺寸大小不尽相同,需要不断地手动修正结构元素,自动化程度不高,效率差。霍冠英等人[7]结合快速模糊C–means聚类与MRF对声呐图像进行分割操作,对产生的结果中的噪声点采用形态学原理进行去除。此种方法虽然分割效果较好,但是局限于噪声强度较低的声呐图像的分割,鲁棒性较弱。
近年来,随着卷积神经网络(CNN)[8]的特征提取能力不断被挖掘,越来越多的深度学习方法被研究人员应用于图像分割任务,并且取得了比传统分割方法更好的实验结果,性能得到极大提升。但是,受限于声呐成像质量,有监督神经网络模型的训练需要大规模标注的目标数据集,其采集周期长,人工标注耗时耗力,因此极大增加了试验成本和难度。综合以上研究背景,本文提出一种改进的基于无监督学习全卷积神经网络结构用于声呐图像分割任务。在无监督学习的场景中,不需要事先给出训练声呐图像数据集或像素的ground truth标签和特征,输入目标声呐图像之后,本算法将像素标签和特征进行联合优化,并且通过梯度下降更新像素标签的参数,达到收敛后得到推理结果,为图像分割任务的高效率进行创造了更好的条件。
卷积神经网络(CNN)是计算机视觉领域内的一类重要的理论方法,在图像和视频处理的各种任务中得到广泛应用。基本的卷积网络结构主要由卷积层(Convolutional Layer)、池化层(Pooling Layer)和全连接层(Fully Connected Layer)互相堆叠构成,如图1所示。在卷积层中,通过若干一定大小的卷积核对输入的数据进行卷积操作,提取输入数据的各方面特征信息。之后,池化层对得到的卷积计算结果执行下采样,实现邻域内主要特征的整合。最后,全连接层对经过上述操作的一系列特征进行组合和分类,得到最终的图像处理结果。目前,卷积网络的整体结构趋向于使用更小的卷积核(比如1×1和3×3),以及更深的结构(比如大于50层)。此外,由于卷积的操作性越来越灵活(比如不同步长),池化层的作用也变得越来越小,因此目前比较流行的卷积网络中,池化层的比例正在逐渐降低,趋向于全卷积网络[9]。在工程上,目前所进行的大量工作都表明,使用CNN学习到的特征表达较之传统的人工设计特征有着更显著的判别能力,并且具有十分优秀的泛化过程。
图1 典型的卷积神经网络结构Fig. 1 Typical convolutional neural network structure
在经典的卷积神经网络结构中,在卷积层之后连接全连接层来获取特征向量从而实现分类。与CNN不同,全卷积神经网络(FCN)在卷积层之后连接的是一个反卷积层替代经典网络的全连接层对上一层特征图结果进行上采样,使输出与输入声呐图像尺寸相同,使得 FCN能够对每个像素都进行推理,原始输入图像中包含的空间信息能够保持不变。
在全卷积神经网络模型中,最后连接卷积层替换全连接层的过程叫卷积化,全连接层和卷积层的区别之处是卷积层中的神经元只连接输入数据中的若干局部区域,同时处于卷积层中的神经元具有参数共享机制。除此之外,2种连接方式的神经元都是以点积进行计算,它们的表示方式是完全相同的。在这种转化之中,应用卷积层代替全连接层能够更加有效地解决实际问题。
在预分割图像处理阶段,采用SLIC算法对目标声呐图像做预分类处理。SLIC算法[10]采用 CIELab颜色空间的l、a、b值和像素坐标x、y组成特征空间,在此特征空间进行局部聚类的操作。采用新的距离度量准则进行聚类,并且通过此度量准则约束超像素生成的规则性和联系。算法步骤如下。
1)初始化种子点。根据设定S=sqrt(N/K)将聚类中心向量Ck=[lk,ak,bk,xk,yk],k=1,2,…,K均匀分布于网格点。其中,N为图像像素总数,K为超像素总数的预设值。
2)优化聚类中心分布。依次计算各聚类中心及其八步长邻域内的全部像素点的颜色梯度,比较邻域内所有像素颜色梯度和聚类中心颜色梯度,移动聚类中心到最小梯度位置。
3)计算度量D大小。在聚类中心2S×2S像素邻域内,计算各像素点与聚类中心间的距离度量D:式中:dc和ds分别为亮度距离度量和空间距离度量;Ns为最大类内空间距离,并且Ns=S;Nc为最大颜色距离,随图像不同而不同,一般是一个既定常数。
4)分配类标。根据最小距离准则,将每一个像素都分配到距离度量最小的聚类中,然后重新计算和更新聚类中心,反复迭代这一过程,直至聚类中心不发生改变后停止迭代。
5)优化像素聚类。基于连通性原理,合并处理多连通以及面积过小的区域聚类。到此为止,图像被分割多个像素聚类,每个聚类结果为一个超像素集。
基于卷积神经网络的优秀的特征提取性能,采用无监督学习,设计了本文的全卷积神经网络结构,网络由3层卷积网络组成,最后一层使用卷积层代替全连接层。
基本算法结构设计为
1)初始化神经网络,保持每层的方差与均值:
2)对图片进行初步聚类,采用 SLIC算法进行预分割:
3)迭代T次,使用卷积网络得到特征图,根据特征图,取数值最大者为对应像素的标签:
4)对于经典语义分割聚类结果,统计每个聚类中,出现次数最多的类别,将这个聚类中的所有像素,都记录为这个类别:
5)计算损失函数(归一化指数):
6)使用随机梯度下降更新参数:
上述神经网络的主干网络参数如表1所示。
表1 主干网络参数表Table 1 Parameters of backbone networks
网络的具体结构如图2所示。
图2 全卷积模型Fig. 2 Full convolution neutral networks model
本文将卷积模块的批归一化层(Batch Normalization)放在激活函数(ReLU)之前,构成Conv2D+BN+ReLU的组合结构。在算法的主体部分中,PreSeg()函数使用了经典机器学习库的算法对输入的图片进行预分类,可供选取的算法有Slic算法和 Felzenszwalb算法等等。本算法采用SLIC预分割算法,通过对分区参数n_segments进行设置,得到输入图片的不同预分割效果,如图3所示。
图3 Slic算法不同参数值预分割效果Fig. 3 Pre-segmentation effects of different parameter values by SLIC algorithm
如图3所示,具有相同语义的像素一般在一张图像的连续区域中存在,所以位置相近的像素很大概率具有相同语义信息,那么本算法就在预分割中将相邻的像素初步归属到相同的语义标签内。
试验输入的单幅单帧声呐图像,其具体尺寸没有固定的要求,设计的网络模型可以处理任何尺寸大小的声呐图像。算法的基本流程设计:首先对输入的图像使用经典机器学习算法,进行预分类,调整相关的算法参数值,将语义信息(颜色,纹理,位置)明显相近的邻域范围像素分配相同的语义标签;然后运用深度学习结合自动编码器的结构,对声呐图像进行精分类,使输出的语义分割结果,趋向于预分类的分割结果,直至训练收敛;最终在预分割小块的训练收敛结果的基础上,具备相同语义标签的小领域合并得到大区块的分割结果。流程图如图4所示。
图4 算法流程图Fig. 4 Algorithm flow chart
本实验的原始数据为某水库水下侧扫声呐采集到的多幅单帧声呐图像。
1)预分割实验结果。
在预分割实验中,需要进行细粒度的分类,以分出适当数量的不同区域,从而保证本实验的目标声呐图片在预分类中尽可能地分割出正确的像素区域。在算法中,预分类的类别越多,则算法需要迭代的次数也越多。对数据集内的多幅单帧声呐图片进行预分割实验,得到以下结果,如图5所示。
从图5的两帧预分割实验结果中可以看出,预分割算法可以较好地分类出主要目标区域,且适应性较好,处理速度较快。对于变化幅度较小的声呐图像,本预分割算法可以很好地处理细节,对于变化幅度较大的声呐图像,也能忽略掉一些次要细节,保留下来较重要的特征。
图5 Slic算法目标声呐图像预分割效果Fig. 5 Pre-segmentation effects of target sonar images by SLIC algorithm
2)无监督声呐图像分割实验结果。
通过预分割实验,可以对声呐目标图像粗分类,随后通过本文设计的无监督模型进行自动分割实验。将采集到的数据集的原始目标声呐图像输入模型,设置输入批量的大小为 10,执行实验。本实验使用的硬件为NVIDIA 2080显卡,软件环境版本为Python 3.6和CUDA 9.0,神经网络的构建架构选择Pytorch,如图6为部分自动分割的实验结果展示。
图6 自动分割结果示例图Fig. 6 Automatic segmentation effects of sonar images
从生成的分割图像可以观察到,本文设计的算法能将声呐目标图像中的目标区域进行有效的分割,海底地形和目标参考物准确分割且边缘较为清晰,在单帧声呐图像的数据集上运行较为准确,有效地提高后续的目标识别效率。
本实验中使用Kappa系数、分类精度和分类误差等指标来定量评价图像分割试验的性能水平,Kappa系数和分类精度大小越接近1,分类误差越接近0则性能越好。本算法的各项性能指标值如表2所示。
表2 分割算法试验结果指标Table 2 Test results of segmentation algorithm
为了验证所提算法的高效性,本文引入2种传统分割方法在相同的声呐数据集下进行分割试验,并定量得到他们的性能结果,比较明细如表 3所示。从表中可以看出,本文方法明显优于2种传统方法的分割精度和准确度,且改善效果显著,展现了本文模型的优异性。
表3 不同分割算法试验结果指标对比Table 3 Comparison of test results of sonar images by different segmentation algorithms
本文通过提出一种基于全卷积神经网络(FCN)的无监督学习模型,解决了在数据集缺少有效标注情况下分割网络模型的训练问题,显著改善了声呐图像的分割精度,为后续的水下目标探测识别创造了有利条件。将基于全卷积神经网络的无监督学习模型用于声呐图像的分割,并且采用经典预分割算法对单帧图像进行预处理。试验结果证明该方法比传统的特征提取方法更高效,使得目标语义分割后的轮廓更加准确。实验表明这样可以提高图像的分割精度。本算法不仅可以满足民事上的运用,也可以在军事上运用于水雷和UUV等相似形状的目标识别中,拥有广泛的应用范围。