徐风,苗哲,业巧林
(1. 南京林业大学计算机教学实验中心,南京 210037;2. 南京林业大学信息科学技术学院,南京 210037)
在实际生产生活中,遥感图像有着广泛的应用。其中,在林业相关领域的作用尤为突出,如湿地保护、林业制图、森林火灾监测等[1-3]。受到采集设备的影响,分辨率会有所不同。低分辨率的遥感图像包含了较大范围的地物信息,通常只适用于大面积的地面信息调查与研究。高分辨率的遥感图像地物纹理信息与空间语义信息更加丰富,在环境监测、军事辅助识别等领域中应用更为广泛。
对大量的遥感图像进行快速准确地分类,是遥感图像信息处理系统中重要的组成部分[4-5]。有区别于自然图像的分类任务,遥感图像由于其自身的特点,各类图像中的特征较难区分。早期的研究工作主要使用手工提取图像特征的方法对遥感图像进行分类,但随着图像采集技术与设备的发展,高分辨率的遥感图开始在生产实践中成为主流。与此同时,对传统的遥感图像分类方法提出了挑战。由于人工提取的图像特征表达能力有限,难以拟合高分辨率遥感图像中复杂的纹理语义信息。随着相关研究的开展,有研究者开始尝试将不同的人工特征进行融合,以此来提高相应分类算法的精度。其中,常用的图像特征有SIFT(scale invariant feature transform)、HOG(histogram of oriented gradient)、LBP(local binary patterns)、SURF(speeded up robust features)[6]等。在融合手工图像特征的过程中,往往需要算法设计者定义各种图像特征的权值大小。特定的权值参数,对部分遥感图像得到较好效果,但难以在大规模测试集中取得较高的精度。
目前,基于卷积神经网络的图像算法框架在计算机视觉的各个领域中都取得了重大突破[7-10],图像分类任务(尤其是自然图像)就是其中之一。2012年由Hinton和Alex设计的AlexNet卷积神经网络框架[7],在ImageNet[8]图像挑战赛中,取得了当年的最佳效果。AlexNet仅由5层卷积层和2层全连接层组成,采用GPU加速训练过程。此后,在ImageNet挑战赛的图像分类任务中,VggNet[9]、ResNet[10]等基于卷积神经网络的图像分类框架被提出,并都取得了当时的最好分类效果。这些网络框架包含了大量的待训练参数,需要较多的数据用于网络的训练。目前,由各式图像采集设备收集的大量遥感图像,正好适用于大规模参数神经网络的训练。
遥感图像分类算法的研究已有较长的历史,早期的研究主要试图融合各类的手工图像特征拟合图像。在进一步的研究中,基于机器学习的方法也取得了一定效果[11-13],如支持向量机(support vector machine,SVM)、决策树(decision tree,DT)等。其中,业巧林等[11]使用深度学习特征结合支持向量机的方法分类遥感图像;李爽等[12]提出了基于决策树的遥感图像分类方法,与传统统计分类方法相比较,该方法相对简单,分类结构直观、明确;宋相法等[13]则结合稀疏表示及光谱信息,提出了一种高光谱遥感图像分类方法,该方法根据稀疏表示特征和光谱信息分别构造随机森林,最终通过投票机制得到分类结果。
2012年以来,基于卷积神经网络的方法逐渐成为遥感图像分类的主流研究方向。但早在2001年毛建旭等[14]就将模糊技术与神经网络相结合,利用神经网络实现模糊推理,以此达到调整模糊隶属函数和模糊规则的目的。张德园等[15]针对低分辨率的遥感图像,提出了一种被称为SAT-CNN的卷积神经网络遥感图像分类框架。该框架包含了4个构件,其中两个用于提取遥感图像局部区域的底层特征,剩余两个用于提取遥感图像局部区域间的空间位置关系。最终,在SAT-4和SAT-6两个数据集中,分别可以达到99.98%和99.97%的分类精度。
为了进一步提高遥感图像的分类精度,本研究提出了一种基于卷积注意力模块(convolutional block attention module,CBAM)[16]的遥感图像分类框架。在主干网络ResNet101框架中嵌入卷积注意力模块,使用NWPU-RESISC45数据集中20%的数据训练所提出的框架,剩余数据用于框架效果的验证。在训练的过程中,采用深度学习开源框架Pytorch[17]对训练数据进行在线数据增广,增广方式为对训练图像进行随机角度的旋转。最终实验结果表明,与目前的遥感图像分类算法比较,笔者提出的方法在分类精度上有明显提高,并且能够以实时的速度进行分类,兼顾了分类精度与速度。
鉴于卷积神经网络的算法在计算机信息处理的各个领域中都取得了突破性进展,本研究基于目前图像分类性能优秀的残差网络(residual networks,ResNets)[10],结合卷积注意力模块[16],提出了一种端到端遥感图像分类框架。受益于卷积注意力模块,所提出的模型能够关注于图像中最具有辨别力的区域,从而进一步提高遥感图像的分类精度。
卷积注意力模块(CBAM)由Woo等[16]在2018年的ECCV会议中提出。在此之前,有众多研究工作指出,在神经网络模型中增加注意力机制可以提升网络模型的表征能力。其中,Hu等[18]提出了一种被称为SENet(squeeze-and-excitation networks)的模型。SENet通过训练自动学习网络中每个通道的重要程度,然后依据这个重要程度去提升重要特征并抑制其他不太重要的特征。CBAM相比SENet,从空间(spatial)与通道(channel)两个维度计算对应的特征图(feature map)。CBAM是一个较为轻量级的模块,可以简单地融入其他卷积神经网络模型中,优化网络提取的特征,引导模型更多关注于图像中最具有辨别力的区域,提升任务的精度。CBAM同样支持端到端的学习。
对于给定网络的特征图F:
F∈RC×H×W
(1)
式中:C、H、W为特征图各通道的维度,R为实数域空间。首先通过CBAM模块的通道注意力模块Mc:
Mc∈RC×1×1
(2)
生成通道优化后的特征图为:
F′=Mc(F)⊗F
(3)
而后,经过通道优化后的特征图F′进一步输入空间注意力模块Ms:
Ms∈R1×H×W
(4)
得到空间优化后的特征图为:
F″=Ms(F′)⊗F′
(5)
因此,CBAM模块的过程可表达为:
F″=Ms[Mc(F)⊗F]⊗[Mc(F)⊗F]
(6)
式中:F″为 CBAM模块计算后得到的特征图;公式(3)、(5)、(6)中的“⊗”为逐元素相乘操作。
采用目前在遥感图像研究领域广泛使用的NWPU-RESISC45[19]和PatternNet[20]数据集。其中,NWPU-RESISC45数据集中共包含31 500张遥感图像,覆盖遥感图像中常用的45类场景,每一类场景包含700张遥感图像,每张图像分辨率为256×256。这些场景包括机场、桥梁、湖泊、草地、河流等。NWPU-RESISC45数据集包含的部分图像数据见图1。
PatternNet则包含38个类别的遥感图像,其中每个类别对应800张图像。这些图像从高分辨率遥感图像中收集,并经过38种遥感图像检索算法验证,包含更多细节信息且数据量庞大,更适用于深度网络框架的训练学习。PatternNet中部分样本图像见图2。
图1 NWPU-RESISC45数据集中5种场景图像Fig. 1 The images of five scenes in NWPU-RESISC45 dataset
图2 PatternNet数据集中的场景图像Fig. 2 The images of three scenes in PatternNet dataset
由于两个数据集中场景的类别存在差异(NWPU-RESISC45为45种,PatternNet为38种)。所以,在网络训练和测试阶段,两个数据集分别单独用于网络的训练和测试。对于每个数据集,选取20%的数据用于训练,80%的数据用于验证分类精度的计算。
目前,在深度网络训练过程中进行数据增广(data augmentation,DA)有助于模型性能的改善已经被很多研究证实[21]。常用的数据增广方式有两种,分别是离线增广和在线增广。离线增广会对训练数据进行直接处理,适用于训练数据较少的情况。而在线增广是在训练过程中,获取数据批次后,对每个训练批次的数据进行增广操作。在线增广适用于训练数据较多的情况,目前主流的深度学习开源框架都支持在线增广,可以方便训练过程中进行数据增广操作。在本研究训练框架的过程中,采用在线数据增广对训练数据批次进行随机角度的旋转。
本研究提出了一种基于卷积注意力模块的遥感图像分类框架,框架结构如图3所示。其中,框架的主干部分由ResNet101构成,其部分参数采用在ImageNet中预训练好的参数进行初始化,并在训练过程中进行微调。该设置方法使框架能够利用ImageNet中丰富的图像特征,提升框架的分类精度。ResNet101由一系列残差模块组成,残差网络模块如图4所示。其中,参数层的数量在ResNet101网络不同层中有所变化。框架的参数配置见表1,与普通ResNet101的区别为,在ResNet101的中间层中插入了4个CBAM模块,且最后全连接层根据数据集场景类别的不同会发生变化(NWPU-RESISC45为45,PatternNet为38)。
图3 基于卷积注意力模块的端到端遥感图像分类框架Fig. 3 End-to-end remote sensing image classification framework based on convolutional block attention module
图4 残差模块结构Fig. 4 Structural sketch of residual module
表1 基于卷积注意力模块的遥感图像分类框架的参数配置Table 1 Parameter configuration of framework for remote sensing image classification based on convolutional block attention module
在训练阶段,采用交叉熵(CrossEntropy)计算网络的损失。可定义为:
(7)
式中:x为模型预测的分类概率,向量x的第j维,即x[j],是输入图像预测为类j的概率;k为输入图像的真实分类。
本研究所提出的框架在实验过程中主要可分为两个步骤:1)以对应数据集的训练数据为输入,对框架进行学习训练;2)使用训练好的参数对相应测试图像进行分类。
本研究所有实验均在以下硬件环境中完成:英特尔 I7 7700K CPU,32 GB内存,单个英伟达1080 ti GPU。软件使用Pytorch1.1.0深度学习开源框架,CUDA通用并行计算架构(10.0版本)和cuDNN深度神经网络GPU加速库(v7.5.0版本)。在训练和测试过程中,采用的输入图像分辨率大小均为256×256。此外,在训练过程中,每个训练批次(BatchSize)的大小为40。最终实验结果选取训练周期(epoch)为50的模型进行测试。
2.2.1 框架精度测试
本研究提出的框架使用NWPU-RESISC45数据集中20%的数据进行训练,然后再使用80%的数据进行精度测试。为了进一步验证本研究提出框架的有效性与优越性,将在测试中与目前已有的框架模型进行对比,分别是LeNet[22]、AlexNet[7]、CaffeNet[23]。此外,增加了消融实验(ablation experiment)对比,验证在模型中增加卷积注意力模块是否有助于提升分类精度。消融实验最初起源于实验心理学领域,用来验证大脑对于行为的影响,后来被广泛地应用于机器学习和深度学习领域,以此来验证一些复杂的模型框架中不同模块对于实验结果的影响。本研究具体做法为,在其他条件一致的情况下,删除模型中卷积注意力模块部分,直接测试分类精度进行对比。
分类精度结果见表2,由表可知,本研究提出的框架相比目前几种较为流行的方法,得到了最高的分类精度(92.5%),且支持端到端对遥感图像进行分类,不需要进行其余操作。而对比单独使用ResNet101模型进行分类的消融实验(91.5%),本研究提出的加入了卷积注意力模块的模型能够得到更高的分类精度(提升1%)。
表2 与不同模型分类精度的比较结果Table 2 Comparison of classification accuracies with different models
为了进一步验证该框架的有效性,使用PatternNet数据集中的遥感图像进行分类精度测试,同样使用20%的图像作为训练数据,80%的图像作为测试数据。最终分类精度为99.6%,达到了极高的分类准确率,且明显高于现有其他基于卷积神经网络的算法(比文献[24]中提出的算法精度高了2.3%)。
2.2.2 框架速度测试
最后进行框架运行速度测试,在基于GPU加速的实验环境中,测试了25 200张图像,一共用时283.01 s,平均每秒钟分类89张图像。能够以实时的速度(高于60帧/s)对遥感图像进行分类,达到了实际应用中的速度需求。
本研究提出了一种基于卷积注意力模块的端到端遥感图像分类框架。该框架主要由两部分组成:第1部分为采用ResNet101进行搭建的主干网络部分;第2部分为在ResNet不同大层之间插入了卷积注意力模块。为更好地利用已有遥感图像数据和验证框架的有效性,采用目前已有的两个公开数据集进行实验,分别是NMPU-RESISC45和PatternNet。在训练过程中,本框架使用数据集中20%的数据进行训练,80%的数据进行分类精度测试。为进一步提高分类精度,对于每个批次的训练数据,采用深度学习开源框架Pytorch中内置的在线数据增广方法,进行随机角度旋转。最终实验结果表明,本研究所提出的框架相比已有方法,在分类精度上有明显提升,最高分类精度为92.5%。
目前,遥感图像分类任务中,还面临着一些挑战。例如,在遥感图像采集的过程中,由于各种原因的干扰,采集到的图像出现伪影、失真、局部破损、模糊等。目前已有的方法难以处理这一类遥感图像,因此,在今后的研究工作中,考虑结合图网络进行关系推理克服上述图像分类困难的问题。