曹维东,解 翠,韩 冰,董军宇
(中国海洋大学 信息科学与工程学院,山东 青岛 266000)
海洋锋是指性质明显不同的两种或两种以上水体之间的狭窄过渡带,是海洋环境参数的跃变带,可用海水温度、盐度、密度、速度、颜色、叶绿素等要素来描述。锋区中存在的强烈的湍流混合交换、水平辐合(辐散)和垂直运动,不仅对航运和渔业影响很大,而且对水下声传播、舰船航行安全、海上搜救等活动也均有重要影响。作为重要的中尺度现象之一,海洋锋的研究受到人们的关注和重视。而在海洋锋的研究中,海洋锋识别是其主要工作,因此,对海洋锋识别算法的改进十分重要。
梯度阈值法是一种传统的海洋锋识别方法,广泛应用于海洋锋的识别研究中。但由于不同海域中海洋锋的强度不一致,不同海域下的海洋锋识别所需要的梯度阈值也不相同。在梯度阈值法中,确定合理的阈值比较困难,主要体现在不同的参数(如温度、盐度、叶绿素等)有不同的标准,即使参数相同,不同的海域和不同的季节,划分和定义的标准也不相同。
基于深度学习的海洋锋识别方法是目前较新的海洋锋识别方法,图像是海洋锋识别研究的常见数据载体,得益于深度学习在图像识别领域的快速发展,基于深度学习方法进行海洋锋识别可以避开传统方法标准不统一问题,但是目前该类方法只能对目标海域中是否存在海洋锋做出判断,无法对海洋锋的形态细节进行识别。
本文提出基于深度学习的海洋锋自适应梯度阈值识别方法。将Mask R-CNN算法应用到海洋锋识别问题中,并参考传统梯度阈值法的思想,通过自适应的阈值计算和锋面调整过程,获得精细的海洋锋识别结果。
自20世纪70年代以来,识别海洋锋的主流算法有梯度法(灰度梯度法)、灰度直方图法和信息熵法。文献[1]设计了新的滤波器,使用温度梯度法检测小尺度海面温度锋和叶绿素浓度锋。文献[2]利用Canny算子对噪声的抑制作用,使用温度梯度算法提取出了不同尺度的海洋锋信息。文献[3]通过形态学梯度理论对海面锋进行了各尺度信息的提取。文献[4]使用Canny算子计算温度梯度,利用形态学对经Canny算子检测出来的海洋锋进行连接、细化。文献[5]将图像中的锋面视为图像边缘,视图通过图像边缘检测算法进行海洋锋识别。文献[6]提出基于万有引力模型的海洋锋信息提取方法。文献[7]提出一种基于Canny和数学形态学的海洋锋检测方法,基于数学形态学二值重构及击中击不中算法,对检测出来的海洋锋进行再处理,确保了海洋锋的连续性及定位准确性。文献[8]改进了海洋锋检测的灰度梯度法,在基于温度梯度检测海洋锋的方法中引入形态学灰度重构算法对温度梯度计算结果进行处理。文献[9]阐述了利用遥感数据检测海洋锋的主要方法,理论分析了基于合成孔径雷达(SAR)图像的海洋锋检测方法的可行性。文献[10]提出先将研究海域进行合理划分,再对不同分区采取不同的判别标准进行锋面识别。文献[11]从实测水文资料分析、遥感资料分析和数值模拟等方面总结了中国近海海域海洋锋的研究进展。文献[12]提出一种利用遥感海温数据探测海洋锋的方法。
目前改进的海洋锋识别方法能够改善对局部海域的海洋锋识别精度,但是非局部海域识别标准不统一的问题仍然存在。事先划分海域的方法,需要总结大量的经验为海域划分提供参考,且针对不同的海域,此工作不可重复利用,因此该方法不具有普适性。
近几年深度学习快速发展,在图像识别、语音识别、物体识别的等各种场景上取得了巨大的成功。卷积神经网络(CNN)在目前人工智能的发展中有着非常重要的地位。R-CNN是一种着重于解决图像识别问题的卷积神经网络,文献[13]提出的改进版本Mask R-CNN将解决的问题从图像领域中的目标检测逐步过渡到像素级的实例分割。文献[14]利用Mask R-CNN算法对RGB图像上的目标进行识别与分割,并通过传感器将二维图像坐标转换成三维空间坐标,对目标物体进行三维建模,达到空间定位的目的。文献[15]提出一种基于Mask R-CNN的地面标识检测方法,通过训练Mask RCNN神经网络学习地面标识特征。文献[16]将深度学习应用于多尺度SAR舰船目标检测,取得了很好的效果。文献[17]将FC-LSTM(a Fully Connected-Long Short Term Memory)与CNN相结合提出CFCC-LSTM方法来预测海温,成功提高了海温预测的精度。文献[18]提出一种基于CNN的涡旋检测方法,将传统的涡旋检测问题转化为一种二分类问题,能够快速地从流场中识别出涡旋。文献[19]将CNN应用到海洋锋识别过程中,可以识别出目标海域中是否存在海洋锋。文献[20]提出海洋锋检测和细粒度位置的多尺度检测框架。
基于深度学习的方法识别海洋锋,即将人为经验用在单张海温梯度图像的锋区标注上。虽然标注图片的工作耗费时间,但是该工作可以重复利用并且可以很容易地应用到其他海洋参数和研究海域中。目前在海洋锋识别领域,与深度学习相结合的工作所能得到的最好的识别效果,是可以通过海域的海表温度图像判断海域中是否存在海洋锋,但该识别结果无法准确描述海洋锋的形态。
本文使用了2014年至2016年3年中共1 011份逐日海表温度(SST)数据作为原始数据。原始数据的地理范围为(118°E~131°E,23°N~40°N),精度为0.08°。原始数据的来源是全球海洋环流模式(Hybrid Coordinate Ocean Model)。原始数据以NetCDF格式存储。借助python3.6的Pandas等数据处理包,将原始数据转化为CSV表格数据,表格数据的存储内容主要为经纬度坐标和对应坐标下的海表温度值。
海洋锋区中存在剧烈的海水参数跃变,而海水参数的梯度可以描述其变化的剧烈程度。因此,需要对海表温度数据进行梯度计算,从而将对应经纬坐标下的温度数据转为梯度值数据,以更好地表征海洋锋。
2.2.1 梯度计算公式
梯度计算在每个数据点的3×3邻域中进行。对每一个数据点分别计算其垂直方向和水平方向的梯度值,再根据其水平和垂直梯度值求其总梯度值。
梯度G计算公式为:
(1)
其中:
(2)
(3)
其中,ΔX、ΔY分别是X、Y方向上的像元大小,Dx、Dy分别是水平、垂直方向的梯度大小。
2.2.2 海陆交界线处的特殊处理
梯度计算在每个数据点的3×3邻域中进行,在海陆交界部分的数据点的邻域内可能同时包含陆地与海洋,为避免梯度计算时交界处海水数据点受到陆地数据点的影响,需要事先制定策略:在遍历数据点过程中,首先对当前数据点归属海水还是陆地进行判断,若是陆地数据点则直接标记,不再进行梯度计算;若是海水数据点且其邻域的3×3网格内包含数据陆地点,则将陆地数据点替换为当前海水数据点,该策略的应用效果如图1所示。图1(a)给出了早期渲染的梯度值图像,由于没有判断陆地数据点,海洋点像素渲染范围过大使其颜色侵蚀到了陆地像素点内部;图1(b)加入了陆地数据点的判断,但由于没有设定邻域内包含陆地点的海水数据点的处理规则,导致陆地像素边界有轻微外扩;图1(c)应用海陆交界线处的特殊处理策略,得到了最好的海陆交界线效果。
图1 海陆交界像素细化过程Fig.1 Process of pixel refinement at the sea-land boundary
梯度数据需要被处理为图像,才可以被进一步标注并用于深度学习的模型训练。
在Python3.6环境下,利用Matplotlib和PIL图像处理包,将对应经纬度下的梯度值按实际经纬关系映射为颜色,从而得到梯度值图片。颜色映射规则为“jet”颜色图,输出图像大小统一为340像素×260像素。部分梯度值网格数据可视化的结果图像如图2所示。海水部分的颜色是通过映射其对应点位的梯度值而来,海水越高亮表示其对应梯度值越高。
图2 经纬范围为(118°E~131°E,23°N~40°N)的梯度数据渲染图像Fig.2 Rendered image of gradient data in the range of latitude and longitude (118°E~131°E,23°N~40°N)
Mask R-CNN是在Faster R-CNN的基础上,添加了一个与现有目标检测框并行的用于预测目标掩码的分支来扩展Faster R-CNN。Mask R-CNN拥有简洁明了的思想,对于Faster R-CNN来说,每个目标对象有2个输出:一个是类标签(class label),另一个是边界框的抵消值(bounding-box offset)。在此基础上,Mask R-CNN方法增加了第3个分支的输出:目标掩码。目标掩码与已有的class和box输出的不同在于它需要对目标的空间布局有一个更精细的提取。
此外,Mask R-CNN将Faster R-CNN中的RoIPool改进为RoIAlign以消除前者的粗糙量化,同时将提取的特征和像素精准对齐。选取每个RoI分块中的4个常规位置,使用双线性插值计算每个位置的精确值,然后对结果进行汇总。Mask R-CNN网络模型架构如图3所示[13]。
图3 Mask R-CNN网络模型架构Fig.3 Network model architecture of Mask R-CNN
本文使用基于Python的Tensorflow和Keras构建完整的Mask R-CNN结构,其结构示意图如图4所示。其中,backbone部分由Resnet101和FPN(Feature Pyramid Network)组成。
图4 Mask R-CNN总体网络结构Fig.4 Overall network structure of Mask R-CNN
本文用于训练的样本是通过2014年—2016年3年中共1 011天的海表温度数据计算和渲染得到的梯度图片。
由于梯度图片上海洋锋形态的多变性和形状不固定性,海洋锋图片样本的标注需要标注者始终遵循一致且合理的标注标准,存在较大困难。为简化标注工作,本文将训练样本中研究范围海域为(118°E~131°E,23°N~40°N)的海洋锋预先划分为9类,分别定义名字为front1~front9,标注时需要分别标注。front1~front9划分的参考依据分别是:front1参考浙闽沿岸锋;front2参考黑潮锋;front3参考东海北部陆架锋;front4参考江浙沿岸锋;front5参考山东半岛锋;front6参考渤海沿岸锋;front7参考朝鲜半岛西锋;front8参考朝鲜海峡锋;front9参考朝鲜半岛东部锋。
在样本标注的过程中,需要以标注参考图(见图5(a))为参考依据,对连续的锋区尽量划分为一体,锋区之间存在混合现象的要以参考图为依据进行截断,没有出现的锋区则不标注。标注工作必须要在统一标准下进行(见图5(b))。
图5 标注参考图和标注图示例Fig.5 Annotated reference map and annotated map examples
在训练过程中,主要针对epoch、学习率和学习冲量进行了消融实验。最后选定训练时所使用的参数设置为:RPN锚点框尺寸为(16,32,64,128,256),RPN锚点比例为(0.5,1,2),RPN锚点步长为1,RPN的非极大值抑制阈值为0.7;此外,Epoch = 20,step_per_epoch=10,即针对本文使用的数据量batch_size为100左右,learning_rate=0.001,learning_momentum=0.9。
在观察大量连续时间上的海温梯度图之后,可知中国东部逐日海温梯度图片可大致分为3类:第1类是海洋锋都比较活跃且各类锋比较独立,表现为梯度图片上各锋区位置相对明显,如图6(a所示,这种情况常出现在每年的12月与1月前后;第2类是海洋锋活跃且发生聚集,表现为梯度图片上的部分锋区连为一体难以准确区分,如图6(b)所示,这种情况常见于每年的2月与3月;第3类情况是海洋锋强度较低,大部分锋面消亡,表现为梯度图片上高梯度区域大幅减少,如图6(c) 所示,这种情况在每年夏季较为常见。其中第2类梯度图片的误检和漏检情况出现较多,且第2类图片本身在人工标注时就存在困难。
图6 3类海温梯度示意图Fig.6 Schematic diagram of three types of sea temperature gradient
本文选取2017年、2018年共计100张日海表温度数据的梯度图片,使用深度学习模型进行测试。部分测试结果展示如图7所示,在测试结果中将检测出的锋面以掩膜进行覆盖,不同方框的掩膜表示不同的海洋锋识别结果。
图7 部分海洋锋识别结果Fig.7 Recognition results of partly ocean fronts
本文分别统计9种锋的识别准确率,结果如表1所示。
表1 front1~front9识别准确率统计结果Table 1 Statistical results of recognition accuracy of front1~front9
检测结果存在部分海域漏检、误检以及检测结果边缘不细致等问题,问题示例图如图8所示,图中粗线框部位表现为高梯度值像素的漏检,虚线框部位表现为检测结果边缘不细致。造成该问题的主要原因有:训练数据不充足,但是增加训练数据量需要耗费大量时间;海洋锋面边缘十分不规则,即使在训练数据量充足的情况下,锋面边缘识别的情况也不可能十分完美。由于单纯的深度学习方法识别海洋锋的效果受限,因此有必要将深度学习处理出的海洋锋识别结果进行进一步调整。
图8 深度学习模型识别结果Fig.8 Recognition results of deep learning model
深度学习模型识别出的海洋锋存在锋面漏检、误检以及边缘不细致等问题,但是该结果中海洋锋的主体位置和范围是合理的,因此可以在此基础上将锋面进行调整就能达到更理想的效果。根据传统梯度阈值法的思路,局部海域可以找到一个合理阈值作为海洋锋的划分标准。同样,在目前识别结果的每一条锋面周围也应该存在这样一个阈值,找到该阈值,然后根据这个阈值对当前锋面进行收缩和扩展就可以调整当前锋面的形态使其更加合理。通过此调整过程得出的锋面由于在扩展时无法越过低梯度区域,因此具有较好的独立性和整体性,而单纯地对局部海域使用梯度阈值法得到的锋面无法保证这一点。为实现自适应地计算阈值,需要预先对不同的阈值计算方法进行比较,这部分内容在4.3.2节进行阐述。只要确定了阈值计算方法并且得到了深度学习训练出的识别模型,基于深度学习的自适应梯度阈值识别方法就可以自动地在新的梯度图片上完成海洋锋精细化识别的全过程。
基于深度学习的自适应梯度阈值判别方法主要由2个部分操作构成:第1部分是通过深度学习模型对海洋锋进行识别;第2部分是在第1部分的基础上对海洋锋进行形态调整,此部分主要包含锋面轮廓提取和锋面阈值计算两部分,图9给出了锋面轮廓提取结果的示例。
图9 识别结果图和原始梯度图上的锋面轮廓Fig.9 Front profile on recognition result map and original gradient map
完成这个过程需要的输入是梯度图、阈值计算方法和训练好的深度学习识别模型,其中阈值计算方法的确定在4.3.2节中通过实验得出。
算法步骤如下:
输入梯度图,阈值计算方法
输出最终识别结果图
步骤1读入梯度图像,使用深度学习模型进行识别。
步骤2遍历深度学习识别结果图的像素。
步骤2.1根据颜色找到每一类锋面的所有锋点。
步骤2.2遍历每个锋点的3×3邻域,若邻域内包含非锋点,则当前锋点标记为锋面边缘点并记录其位置。
步骤3根据深度学习识别结果图中锋面边缘点的位置,将原梯度图中的对应点标记为锋点。
步骤4遍历深度学习识别结果图中的同一类锋的所有锋点的梯度值,根据计算阈值方法得到该类锋的阈值。
步骤5遍历梯度图中的锋点。
步骤5.1遍历锋点的3×3邻域。
步骤5.2邻域内的点对应的梯度值若大于该类锋阈值,则将该点标记为该类锋锋点。
步骤6将每一类锋点渲染为不同颜色,输出最终识别结果。
自适应梯度阈值识别算法流程如图10所示。
图10 自适应梯度阈值识别算法流程Fig.10 Procedure of adaptive gradient threshold recognition algorithm
4.3.1 识别精度的量化
由于海洋锋识别工作中缺乏标准的对照结果,因此其识别的结果难以量化,导致各种识别方法之间的结果比较存在困难。为解决该问题,将人为标注的梯度图作为基准图,同时,将算法处理结果图进行背景虚化以突出锋面,然后把多余的轮廓线去除得到标准结果图,最后以基准图和标准结果图之间的交并比(IOU)值作为该识别方的量化精度,量化过程如图11所示。本文将这种精度量化方式应用到一些识别结果上,把精度量化的数字与锋面识别效果的人为评价相比较,发现两者符合度较高,可以证明这种精度的量化方式是合理的。
图11 海洋锋识别精度量化过程Fig.11 Process of quantification of ocean front recognition accuracy
4.3.2 阈值计算方法的比较
首先以每一类锋包含的所有锋点的梯度值的均值作为阈值计算方法进行测试,获得的最终识别结果如图12(a)所示,其量化精度为92%左右。但该结果图中锋面过于狭窄,对高量区域的覆盖效果不够好,说明该阈值过大。因此,本文以均值的1/20为步长减少该阈值,依次取每一类锋包含的所有锋点的梯度值均值的9/10(18/20)、17/20、4/5(16/20)、3/4(15/20)、7/10(14/20)作为锋的阈值计算比例,得到的识别结果如图12(b)~图12(f)所示,其量化精度变化曲线如图13所示,在实验中使用3/4阈值时量化精度最高,可达到96.07%左右。
图12 不同标准下的阈值锋面调整结果Fig.12 Threshold front adjustment results under different standards
图13 不同阈值计算方式下识别结果量化精度变化曲线Fig.13 Variation curve of quantification accuracy of recognition results under different threshold calculation methods
在以3/4均值作为阈值标准时(图12(e)),在视觉效果上七号锋会与四号、五号锋发生覆盖,说明在该阈值下,部分锋区已经难以区分彼此,该阈值过小。结合图13中量化精度变化的规律,最合适的阈值应该在均值的3/4左右。
这种自动进行的自适应阈值计算方式,没有与当前使用的海洋锋参数绑定(本文使用的海洋参数是海表温度,通过其他海洋参数如盐度和浮游生物聚集度等同样可以计算梯度),因此可以不加改动直接应用于使用其他海洋参数的海洋锋识别工作。本例中阈值计算方法的比较结果可能不具有普适性(即梯度值4/5均值可能并不总是最好的阈值标准),但自适应梯度阈值识别方法可以在场景转换时,依据同样的过程,在深度学习模型得出的初步识别结果的基础上,根据不同阈值计算标准下锋面调整结果的量化精度,自动选取量化精度达到最大值时的阈值计算标准,以适应新的海域情况。
4.3.3 与深度学习模型直接识别结果的对比
调整后的锋面图与单纯用Mask R-CNN模型识别的锋面图比较如图14所示。图14(a)是中粗线框部分有明显的漏检现象,虚线框部分的锋面形态不理想,在图14(b)中,调整后的锋面对漏检误检现象有明显的改善,锋面边缘与梯度高亮区域的贴合效果也更好,这证明该调整策略是可行的。由于本文方法中的锋面调整基于深度学习识别出的锋面的轮廓,在合理的阈值下,不连通的高亮梯度区域不会被连接为同一锋面,这保证了识别出的锋面的独立性,图14(b)框中的高亮梯度区域未被划分为七号或者八号锋,说明该高亮梯度区域不与周围其他高亮梯度区域相连通,应该考虑在训练识别模型时作为独立的锋面进行标注。
图14 调整后锋面图与单纯用Mask R-CNN模型识别的锋面图结果比较Fig.14 Comparison of the results of adjusted front map and front map of simply using the Mask R-CNN model to identify
此外,将批量的单独的深度学习结果图通过4.3.1节中量化精度方式测量其精度,得出的精度值只有78%左右,与调整后量化精度96%相比相差较远,这种精度差距也主要是由于深度学习直接输出的识别结果中较多的漏检和误检现象造成的。
由于深度学习的识别结果包含锋区的初始位置和形态,因此不必划分海区,后续的自适应阈值计算和锋面形态调整过程可以自动进行。而先划分海区,在分海区内使用独立阈值进行海洋锋识别的方法,难点在于海区划分和每个海区内的阈值确定,且这种方法一旦应用在新的海域,所有的工作就要重新进行。
本文提出的海洋锋识别方法,难点主要集中在图片标注的过程,但是标注工作的可重复利用性高。此方法在迁移使用于其他不同海域时,只需要训练新的深度学习模型,其他部分不必做任何修改。此外,如果借助已训练好的模型进行迁移学习,可以大幅减少所需要的新的标注图片数量。因此,在将本文方法应用在其他海域的海洋锋识别时,需要重做的工作只是标注新的图片帮助深度学习的模型进行训练。
4.3.4 与传统单一阈值方法识别结果的对比
基于深度学习的自适应梯度阈值判别方法,可以针对front1~front9分别得到对应的阈值,自动地将对应阈值应用于不同的局部海域。如果将该方法中得出的front1~front9的8个不同阈值(图中不含三号锋)以传统梯度阈值法分别作用于全图,效果如图15所示。较低的阈值会造成较近的锋区之间相互交叉见(图15(b)、图15 (c)、图15 (e)中虚线框区域),较高的阈值会造成锋区破碎化严重(见图15(a)、图15 (d)、图15 (f)、图15 (g)、图15 (h)中粗线框区域)。从该结果可以看出单一阈值难以对全局进行统一划分。
图15 8个不同阈值以传统梯度阈值法分别作用于全图的结果Fig.15 Results of eight different threshold acting on whole figure by traditional gradient threshold method
此外,传统阈值法的量化精度变化曲线如图16所示。最高精度在94%左右,但是精度曲线变化没有明显规律,无法找到最合适的阈值。
图16 传统阈值法的精度变化曲线Fig.16 Accuracy change curve of traditional threshold method
本文提出基于深度学习的海洋锋自适应梯度阈值识别方法,该方法将Mask R-CNN算法应用到海洋锋识别研究中,以此获得像素级的海洋锋识别结果,并利用自适应的梯度阈值对识别结果进行自动的二次精细化调整。实验结果表明,该方法可以在一个自动化的过程下实现精细的海洋锋识别,识别出的锋面具有较好的独立性和完整性。此外,该自动化过程可以应用于任意海洋参数和任意海域下的海洋锋识别。本文方法深度学习部分的数据集不够完整,导致Mask R-CNN模型识别结果精度不高,下一步将通过调整深度学习的模型结构来提升其性能。