张博宇,王 晓*,杨敬华,朱邦彦
(1.江苏海洋大学 海洋技术与测绘学院,江苏 连云港 222000;2.南京市测绘勘察研究院股份有限公司,江苏 南京 210019)
中国拥有丰富的海洋资源,不仅包括大量的石油、可燃冰、天然气、矿物等战略资源,还有海洋渔场、海水养殖区、滩涂养殖区等经济资源。丰富的海洋资源使得油气开发、养殖、航运、旅游等行业发展迅速。然而,频繁的水域活动伴随着的是潜在的危险。一旦船只在海域发生事故,复杂的海洋环境、广袤的水域面积以及复杂的水下地形会使搜救工作变得极其困难。例如原油运输船或观光旅游船发生沉船事故后,若不能快速定位沉船的位置,轻则造成经济损失、环境污染,重则威胁民众的生命安全。
侧扫声呐最早由英国海洋科学研究所于20世纪60年代研制,其后该技术被广泛地应用于海道测量、飞机残骸、沉船、水雷和鱼群探测以及海底底质分类、海洋科学研究、海洋调查等多个领域[1]。使用侧扫声呐方法寻找沉船是水下搜救领域最重要的工作之一,目前,商业软件诸如Triton、Discovery在应用于水下沉船搜救时大都采用目视识别,该方法严重依赖操作人员的经验,精度和效率受人为因素影响显著。传统机器学习方法则是通过建模对沉船进行识别,分为数据集构建、特征提取、模型构建、模型应用几个步骤。该方法操作繁琐、效率较低,不能完全实现端到端快速识别,且特征提取流程难以获得典型特征,在一个海区建立的模型难以运用到其他海区,适用性差。卷积神经网络(Convolutional Neural Network,CNN)是目前流行的图像识别算法[2],这一算法通过大量的数据训练后,可以持续使用,减少冗余操作,具体流程如图1所示。相比于目视识别,卷积神经网络能消除人工判读的误差,有效提高识别精度;相较于传统机器学习,卷积神经网络不需要人工设置特征提取环节,端到端的运行模式可有效提高工作效率。卷积神经网络在图像识别应用中优势明显,通过侧扫声呐沉船影像数据集训练多种神经网络,寻找用于侧扫声呐沉船识别的最佳网络结构,具有一定的可行性和实用价值。
图1 卷积神经网络识别流程Fig.1 Convolutional neural network recognition flowchart
现阶段已有较多卷积神经网络用于识别声呐图像中各种物体的研究先例。例如,徐及等[3]设计了一个水下目标被动识别系统,其中用卷积神经网络代替了分类器,并达到了较好的效果;Yang等[4]将卷积神经网络用于识别海底纹理,为AUV(Autonomous Underwater Vehicle)自动导航提供路径匹配,可在水下无信号区域为AUV提供导航信息;Terayama等[5]利用卷积神经网络对十多种鱼类的声呐图片进行分类,在不捕捉和伤害鱼群的情况下,对渔场的鱼体卫生及鱼群数量进行监测;Williams[6]将卷积神经网络用于水下人造物识别,利用具有10层结构的卷积神经网络对水雷和水雷大小的石块进行分类识别,通过实验证明卷积神经网络可有效地分辨人眼难以分辨的声呐图像。这些研究的识别对象多是鱼类或其他海底目标物,极少涉及沉船;此外,不同网络结构经过相同数据集训练后的识别正确率也存在差异[7-9]。
因此,为了提高沉船影像识别速度和效率,高效、快速、准确地识别沉船,探究不同卷积神经网络在识别沉船方面的表现的相关研究尤为重要。基于此,本研究收集声呐影像图作为数据集,利用Python搭建现阶段较为成熟的6种11个卷积神经网络结构,使用数据集对网络进行训练,并从网络识别正确率、网络训练时间等方面对训练后的网络进行评估,以期筛选出其中最好的模型。
卷积神经网络包含输入层、隐藏层和全连接层。输入层的主要任务是负责数据输入,一维网络的输入层可处理一维或二维的数据,二维网络的输入层可处理二维或三维的数据。并且,输入层的大小是固定不变的,输入数据的大小要与网络结构一致。全连接层是网络的输出层,在卷积神经网络的隐藏层中,通过卷积层和池化层的计算,累积了大量的参数,全连接层将提取到的大量特征进行非线性组合,最后将结果输出。卷积神经网络的隐藏层由多个部分构成,是网络结构的主要计算部分,其主要结构又可分为2种:
1)卷积层
卷积层由卷积核和激励函数构成(图2)。卷积核主要用于提取特征,卷积核没有大小限制,多为规则矩形。一个卷积层内包含着多个卷积核,每个卷积核都提供一组参数,通过卷积运算将特征传递到下一层。激励函数的主要作用是辅助卷积核表达复杂的特征,常用的激励函数有RELU、Sigmoid、Dropout等,已有的大量研究表明,激励函数的存在能提高分类正确率[10]。
图2 卷积层示意图Fig.2 Schematic of convolutional layer
2)池化层
池化层的作用是对数据进行降维,并除去冗余信息,同时可扩大感受并实现不变性,包括平移不变性、旋转不变性和尺度不变性(图3)。除此之外,池化还具有简化网络复杂程度、减少计算量及减少内存消耗等作用。
图3 池化层示意图Fig.3 Schematic of pooling layer
卷积神经网络通过以上各层的计算,最终可实现对图像的分类。卷积神经网络结构众多,本文主要分析了6种类型:
1)LeNet-5
LeNet-5是由Lecun等[11]于1998年提出的用于手写数字识别的卷积神经网络。该神经网络被用于美国银行支票系统,对手写数字的识别准确率达到了99.8%,运行时间短,识别准确率高。LeNet-5总共5层,由2个卷积层和3个全连接层构成。LeNet-5是当代卷积神经网络结构的雏形,后续的网络多是在其基础上进行改进得到的。
2)Alex Net
2012年Hinton发布了Alex Net网络结构,开启了深度学习新篇章[10]。Alex Net网络相比于早期的LeNet-5,在激活函数以及网络结构上进行了大量的改进:使用Relu作为激活函数替换了Sigmoid;加入了Drop Out结构,随机失活某些神经元,以避免参数过多导致过拟合;使用最大池化替换平均池化,避免平均池化带来的模糊化效果。完整的Alex Net网络结构共有8层,其中前5层为卷积层,后3层为全连接层。
3)VGG
VGG是2014年ILSVRC(ImageNet Large Scale Visual Recognition Challenge)的第二名,因其简单、同质的拓扑结构和增加的深度而闻名[12]。在网络结构内部,VGG用大量的3×3卷积核代替了11×11和5×5的卷积核,这样做加深了网络层数,同时也导致参数暴增。VGG使用了大约1.4亿个参数,是迄今为止参数最多的卷积神经网络结构。
4)Goog LeNet
Goog Le Net是2014年ILSVRC的冠军,整个网络结构由22层构成,具有2个辅助输出模块和1个输出模块[13]。正常情况下,随着网络的加深,反向传播函数对浅层参数的影响力逐渐减弱,这一特点严重影响了网络向更深层发展。在Goog LeNet结构中,设计了2个辅助输出模块,协助反向传播函数对网络进行训练,解决了随着网络加深而梯度消失的情况,为进一步加深网络的深度打下了基础。
5)Res Net系列
当网络加深到一定程度后,模型的效果将会不升反降,即模型发生退化[14]。为了解决该问题,He等[15]提出了ResNet结构,该结构设计了2个残差块(Residual Block),假设输入为x,卷积层间的恒等映射则为H(x)=x。当网络加深到一定程度时,神经网络很难拟合潜在的恒等映射。但是把网络设计为H(x)=F(x)+x,就可以把问题转化为F(x)=H(x)-x。同时,F(x)相较于H(x)更容易拟合。根据残差块数量的不同,Res Net分为Res Net50、Res Net101和Res Net152三种不同深度的网络结构。
6)DenSeNet系列
Huang等[16]提出了DenSeNet网络结构。与Res Net相比,DenSe Net提出来更为激进的密集连接机制,将前面所有层都作为额外的输入传入到网络中。传统网络结构在l层的输出为x l=F l(x l-1);在DenSeNet中,则 为x l=F l([x0,x1,…,x l-1])。DenSeNet主 要 有DenSeNet121、DenSeNet169、DenSeNet201和DenSeNet264四种不同深度的结构。
上述网络各有特色,LeNet-5是当代卷积神经网络的雏形;Alex Net在LeNet-5的基础上,对结构进行改进,并取得了巨大成功;VGG通过修改卷积核大小,达到了加深网络的目的;Goog LeNet提出的辅助输出结构,为进一步加深网络提供了全新思路;ResNet通过设计残差结构,解决了网络退化问题;DenSeNet采用更激进的残差结构,进一步加深了网络结构。本文将分析这6种11个网络应用在沉船识别中的性能表现。
深度学习需要大量的数据样本,现阶段开源的公共数据集都拥有大量的样本。例如,MNIST数据集有十个类,每个类有7 000张图像,共计70 000张图片;Image Net数据集包含约2万个类,约1 400万张图片,是目前最大的图像数据集之一。本文使用的数据集原始样本来自于个人收集的110张声呐图像,其中55张为沉船影像,55张为海底背景。相比于公共数据集,数据量远远不足。在训练样本过少的情况下,难以对网络进行训练,且网络会出现过拟合,影响精确度。
为了高效训练网络,将原始数据集做以下处理:①将原始数据集做镜像操作;②处理后的数据以随机角度旋转10次,并保存每一次的结果;③将旋转后得到的新数据集随机打乱顺序,再随机删除一部分,最终得到一个包含1 000张沉船影像、1 000张海底背景影像共计2000张图片的随机排序数据集,并命名为SSS,样本如图4所示;④将SSS按照7∶3的比例,随机分为训练集SSS-train和测试集SSS-test。其中SSS-train用于训练网络,将SSS-test用于测试训练完成的网络的分类正确率。
图4 数据样本示意图Fig.4 Data sample diagram
评估模型主要使用混淆矩阵(误差矩阵),矩阵形式为N行N列,是精度评价的一种标准格式。其中,被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数为True Positives(TP);被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数为False Positives(FP);被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数为False Negatives(FN);被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数为True Negatives(TN)(表1)。根据TP、FP、FN和TN值,可以计算总体精度、制图精度、用户精度等精度评价指标,这些指标从不同的侧面反映了图像分类的精度。由于实验为二分类,所以仅选用了正确率来作为模型评价的指标。正确率(R)是常用的评价指标,正确率越高,模型效果越好,计算公式如下:
表1 混淆矩阵Table 1 Confusion matrix
由于同一数据集在不同的网络结构下,识别正确率、效率也存在差异,为了在众多模型中找到较适合水下沉船识别的卷积神经网络模型,在GPU型号为NVIDIA GeForce RTX 2080 Ti、开源软件为Py Torch 1.4.0和Python 3.7.6的条件下,设计了以下实验:
1)收集已有的沉船图片,对图片进行处理,制作一个沉船数据集。
2)部署深度学习框架,搭建相应的网络结构。
3)将SSS-train用于训练Le Net-5、Alex Net、VGG、Goog Le Net、Res Net系列和DenSeNet系列网络。
4)将SSS-test用于测试训练后的网络,并将正确率作为最终结果展出。
5)从训练时间和正确率两个角度对网络进行评估。
其中,步骤3)全部网络模型将学习率(Learning Rate)设置为0.000 1,最大迭代次数(Epoch)设置为100。
将SSS数 据集用于 训练LeNet-5、Alex Net、VGG、Goog LeNet、Res Net50、Res Net101、Res Net152、DenSeNet121、DenSeNet169、DenSeNet201和DenSeNet264十一种不同的卷积神经网络。其中,SSS-train用于训练网络,SSS-test用于测试训练后的网络,在所有网络结构上的训练、测试过程如图5所示。对网络的训练时间和测试精度进行统计,各网络性能如表2所示。
表2 网络性能统计Table 2 Network performance statistics
图5 训练过程Fig.5 Training process
由实验结果可知,不同网络在训练时间和正确率上存在较大差异:
1)从识别正确率上分析,LeNet-5和Alex Net性能明显低于其他测试网络,这是因为LeNet-5和Alex Net都属于早期的卷积神经网络,其中LeNet-5只有5层,而Alex Net只有8层,结构较为简单。
2)在较深网络结构中,Res Net152的正确率出现了小幅度的下降,这是由于网络层次过深,参数过多,出现了过拟合的现象。具体表现为网络在训练过程中性能良好,但是在测试的过程中,正确率有所下降。相比于DenSe Net264网络深度已达到264层的情况下,仍然没有出现过拟合的现象,Res Net系列在抗过拟合方面,性能表现较差。
3)从时间上分析,LeNet-5和Alex Net结构简单,耗时少。ResNet系列和DenSeNet系列网络,由于采用了1×1的卷积核降维,虽然网络较深,但是参数较少,训练耗时相对较少。VGG和Goog LeNet深度不是最深的,但是由于接受所有参数的策略,导致参数过多,反而训练时间较长。
4)识别正确率最低的LeNet-5网络和识别正确率最高的DenSeNet121网络的混淆矩阵如图6所示,从图中可知,DenSe Net121识别正确率明显优于LeNet-5。
图6 混淆矩阵Fig.6 Confusion Matrix
相比于目视识别法和传统机器学习的方法,卷积神经网络的沉船识别方法可快速、高效、准确地识别沉船。本文使用Python搭建 了LeNet-5、Alex Net、VGG、Goog LeNet、Res Net系列、DenseNet系列共11种卷积神经网络结构,以侧扫声呐沉船影像为数据集进行实验选择出适用于分析沉船声呐数据的网络。由实验结果可知:DenSeNet121训练时间短、测试正确率高、抗过拟合能力强,是6种11个网络结构中较适合用于沉船声呐图像识别的网络结构。在后续的工作中,将把DenSeNet121用于构建沉船实时探测算法中,以期实现侧扫声呐沉船图像高效、实时探测。