宝音图,刘 伟,牛朝阳,李润生,张浩波
(信息工程大学数据与目标工程学院,郑州 450001)
随着对地观测技术水平的提高,光学遥感图像的数量急剧增加,如何充分利用不断增多的光学遥感图像进行智能地球观测成为研究热点,科学高效地解析海量光学遥感图像显得尤为重要。场景分类通过给定的语义类别对不同的场景图像进行分类标识,是一种有效的光学遥感图像解析技术。近年来,光学遥感图像场景分类在城市规划、灾害检测、环境监测等领域得到广泛应用[1]。
与光学自然图像分类任务相比,光学遥感图像场景分类任务的图像特征类型复杂、分布范围广,有效提取语义特征以及理解语义内容难度更大[1]。根据应用需求的不同,光学遥感图像特征提取方法被分为三大类:一是初级特征提取方法,其针对光学遥感图像特点在局部或全局设计人类工程特征[1-2],初级特征提取方法主要包括尺度不变特征变换(Scale-Invariant Feature Transform,SIFT)[3]、局部二进制模式(Local Binary Patterns,LBP)[4]、定向梯度直方图(Histogram of Oriented Gradient,HOG)[5]等,这些方法只能针对特定目标,缺乏灵活性,泛化能力较弱且只有局部特性,不能直接表示整幅图像[6];二是中级特征提取方法,其先提取图像的局部特征,然后对多个局部特征进行编码以获得遥感图像的中级特征[2],中级特征提取方法主要包括视觉词袋模型(Bag of Visual Word,BoVW)[7]、稀疏编码(Sparse Coding)[8]等,其因为简单有效的特点而得到广泛应用,但是因为表达能力的限制,导致其分类精度不高;三是高级特征提取方法,该类方法基于深度学习提取光学遥感图像特征,与初级和中级方法不同,深度学习模型通过架构神经网络来学习更强大、更抽象和更深层次的特征,这极大地推动了深度学习在光学遥感图像中的应用。多数深度学习模型,尤其是卷积神经网络(Convolution Neural Network,CNN),包 括AlexNet[9]、VGGNet[10]、GoogLeNet[11]、ResNet[12]等,均适用于光学遥感图像场景分类,并已取得了较好的分类效果。
虽然基于深度学习的方法已大幅提高了分类准确性,但是光学遥感图像除了含有颜色、纹理、空间信息等浅层次的信息[13],还有很多深层次的信息,包括:遥感图像同类场景的多样性;遥感图像不同类场景的相似性;遥感图像场景的尺寸、方向的动态性。这些深层次的信息提升了场景分类的难度[14],导致难以实现精准分类[2]。
深度学习网络模型的深度和宽度对光学遥感图像分类精度影响较大[14-16]。然而,网络规模的扩大导致容易发生梯度消失或梯度爆炸现象,还会引起网络退化问题,导致训练误差增大[17]。同时,网络规模的扩大也会带来权重参数的大量冗余,导致训练周期过长、硬件要求过高,不适合末端应用部署,难以大范围普及[18]。随着深度学习技术的进一步发展,MobileNets[19]等易训练、易部署的轻量化网络模型逐渐成为研究重点,但是这些网络模型通常针对自然图像而提出,在光学遥感图像领域应用时还需有针对性地调整网络结构。
本文提出一种基于轻量化网络模型的光学遥感图像场景分类方法,该方法通过EfficientNet[18]网络模型提取图像特征,针对光学遥感图像场景容易误分类的情况,构建集成学习模块来提升网络模型的分类性能。
为使网络模型获得更好的精度,通常采取优化网络深度、网络宽度和图像分辨率的方式,如ResNet、DenseNet 等,但是这些网络模型往往只改变网络深度、网络宽度和图像分辨率3 个维度中的1 个,且需要繁琐的手动调整参数,并且仍然产生次优的精度和效率。Google Brain Team 通过复合比较网络深度、网络宽度以及图像分辨率对精度、参数量和浮点运算量的影响,提出一种EfficientNet[18]网络模型。EfficientNet 网络模型将网络深度、网络宽度、图像分辨率的不同组合转变为优化问题,如下:
其中:N为网络模型;d、w、r是缩放网络的深度、宽度和图像分辨率的系数;i是网络模型的组件;s是组件的总个数;是预设的网络层结构;是预设的层数;是预设的分辨率;是预设的通道数;X将参数按缩放系数调整;Memory(N)为网络的参数量;FLOPS(N)为网络的浮点运算量;⊙将每个组件设置为调整后的参数并搭建网络模型;target_memory 为参数量的阈值;target_flpos 为浮点运算量的阈值;max Accuracy 表示求网络模型的最大精度。
平衡网络深度、宽度和分辨率3 个维度可以获得更好的准确率和效率,EfficientNet 使用复合系数ϕ对3 个维度进行缩放,具体如下:
其中:α、β、γ是对应d、w、r运行维度的资源分配参数;ϕ是资源控制系数。在满足约束条件的情况下,通过神经架构搜索(Neural Architecture Search,NAS)对各参数进行优化调整。在参数量和运算量不增加的基础上,EfficientNet 模型通过不断调整网络深度、网络宽度和图像分辨率的系数达到最优的精度。
根据图像分辨率的不同,EfficientNet 网络构建了B0~B7共8个模型。其中,B7模型在自然图像ImageNet数据集上Top-1 和Top-5 的精度分别为84.4%和97.1%,已达到当时最优精度,并且在达到同等精度的网络中,B0~B7 模型的参数量和运算量均最少。ImageNet数据集上各模型性能对比结果如表1 所示。
表1 ImageNet 数据集上各模型性能对比结果Table 1 Performance comparison results of various models on ImageNet dataset
EfficientNet 网络模型在自然场景图像上达到了较高精度,但光学遥感图像场景包含更丰富的语义信息,场景的类内相异性、类间相似性以及场景的尺寸方向变换等情况影响了EfficientNet 网络模型的分类精度。为解决上述问题,本文通过EfficientNet 网络模型提取图像特征,利用多个子分类器构建集成学习模块提升分类效果,使用Dropout 算法防止发生过拟合,采用交叉熵损失函数辅助网络训练,从而提高网络模型对光学遥感图像场景的分类精度。
1.2.1 网络模型结构
集成学习通过构建多个子分类器来提升分类效果[6]。本文方法基于EfficientNet 网络提取图像特征(一级特征),将所有的一级特征按照预先设定的比率进行随机选取,然后进行融合产生新的特征(二级特征),特征提取比率过低会因为选取特征不够充分影响精度,特征提取比率过高会大幅增加模型的参数量。为在提升精度的同时不过多地增加模型的参数量,本文将特征提取比率设定为60%。给每个二级特征分配一个子分类器进行预分类,集成加权所有子分类器的预分类结果,从而产生最终的分类结果。每个子分类器选取的一级特征不完全一样,能够更充分地解析图像的语义信息,实现子分类器之间的优势互补,从而获得比单一分类器更好的分类效果。本文网络模型结构如图1 所示。
图1 本文网络模型结构Fig.1 Network model structure in this paper
1.2.2 Dropout 算法
在深度学习中,当参数较多而训练样本又较少时,网络模型容易产生过拟合现象。Dropout 算法能够缓解过拟合问题,起到正则化的效果[20]。Dropout算法表达式如下:
其中:r为以给定概率产生的0、1 序列;x为对应层的神经元;为经过Dropout算法保留下的神经元;w为权重;b为偏置;y为输出的神经元;l为神经元所在的层数。
在训练过程中,每个神经元以一定概率保留,每次向前传播保留下来的神经元都不同,这样可以使得模型不依赖于某些局部特征,泛化能力更强[20]。Dropout 算法结构如图2 所示,考虑到光学遥感图像数据集的训练样本偏少,为了防止过拟合发生,本文在每个子分类器中都添加了Dropout 算法。
图2 Dropout 算法效果Fig.2 Dropout algorithm effect
1.2.3 交叉熵损失函数
深度学习中用损失函数来度量网络模型得到的预测标签和数据真实标签之间的差距,损失函数可以衡量网络模型的泛化能力优劣[21],根据不同的应用需求,选择合适的损失函数可以使模型得到更好的训练效果。本文针对多场景分类问题,采用更适合的交叉熵损失函数[22],其表达式如下:
其中:y为样本真实标签;为样本通过网络模型得到的预测标签;N为样本数。通过交叉熵损失函数可以得到样本预测标签和真实标签之间的损失值,损失值越小,预测标签越接近真实标签;损失值越大,预测标签和真实标签差距越大。通过损失值可以判断预测结果的优劣,从而更有效地训练网络模型。
为验证本文网络模型的有效性,选用2 个公开的大规模遥感图像数据集AID[23]和NWPU-RESISC45[24]进行实验。
AID 数据集是由华中科技大学和武汉大学联合创建的大规模遥感图像数据集,该数据集共有10 000 张图像,分为机场、河流、草地等30 个场景类别,不同场景类型的图像数量从220~420 不等,每张图像尺寸为600 像素×600 像素,图像空间分辨率为0.5~8.0 m,该数据集从Google Earth 影像中收集,图像选取自不同国家、地区、时间、季节以及不同的成像条件[23],如图3 所示。
图3 AID 数据集部分场景示例Fig.3 Partial scenario examples of AID dataset
NWPU-RESISC45是由西北工业大学创建的大规模遥感图像数据集,其比AID 数据集更为复杂,共有31 500张遥感图像,分为飞机、湖、云等45个场景类别,每个类别有700张图像,每张图像尺寸为256像素×256像素,图像的空间分辨率为0.2~30.0 m,该数据集从Google Earth中提取,选自全球100多个国家和地区包含不同天气、季节的图像。为了增加难度,本文选取了含有遮挡、重叠等复杂因素的遥感图像[24],如图4所示。
图4 NWPU-RESISC45 数据集部分场景示例Fig.4 Partial scenario examples of NWPU-RESISC45 dataset
实验环境为PyTorch 1.5 框架,操作系统为Windows10 系统,CPU 为12 核的Intel Xeon Gold 6226,主频为2.70 GHz,内存为64 GB DDR4,GPU为NVIDIA公司的TITAN XP,显存为12 GB,CUDA 版本为10.2,cudnn 版本为7.6.5。本文实验选择EfficientNet-B3 网络模型。
为了保证实验的公平性、合理性,数据集的训练比率与文献[1-2]一致。对于AID 数据集,随机选取每类场景数据总量的20%、50%作为训练数据,余下的80%、50%作为测试数据。对于NWPU-RESISC45数据集,随机选取每类场景数据总量的10%、20%作为训练数据,余下的90%、80%作为测试数据。
迁移学习不仅能解决过拟合问题,同时也能缩减模型训练时间[15]。本文实验使用在ImageNet 数据集上训练好的权重进行迁移训练。为防止训练期间发生梯度消失或梯度爆炸现象,本次实验分2 个阶段进行训练:第一个阶段为预训练阶段,冻结除分类层以外的网络层权重,损失函数使用交叉熵损失函数,优化器使用随机梯度下降(Stochastic Gradient Descent,SGD)方法,初始学习率为1e−1,权重衰减为5e−3,动量为0.9,每2 个epoch 学习率下降一次,下降系数为0.9,共训练10 个epoch;第二个阶段在预训练的基础上继续训练,解冻所有网络层的权重,损失函数使用交叉熵损失函数,优化器使用SGD,初始学习率为1e−3,权重衰减为5e−3,动量为0.9,每5 个epoch 学习率下降一次,下降系数为0.95,共训练200 个epoch。为了增强网络模型的训练效果,实验中使用了PyTorch 框架下transforms 库中的水平翻转、垂直翻转、颜色亮度变换、角度旋转等方式进行数据增强,如图5 所示。为了确保实验的准确性,每种测试都重复10 次。图6 所示为本文模型训练过程中随循环次数变化的损失值和准确率曲线,从图6 可以看出,经过200 次循环,损失值和准确率逐渐收敛,说明网络模型较为稳定。图6(a)中180 次循环后损失值不再下降,保持在0.1 以下,图6(b)中180 次循环后准确率不再增加,最终达到97.52%。
图5 数据增强示例Fig.5 Examples of data enhancement
图6 模型训练过程中的损失值和准确率Fig.6 Loss values and accuracy in model training
将AID 数据集分为训练集和测试集,用本文网络模型进行训练测试,统计测试结果得到混淆矩阵,其中,20%训练比率的混淆矩阵如图7 所示,对角线元素为各场景分类的准确率。从图7 可以看出,30 类场景中有25 类场景的准确率达到90%以上,海滩、森林、高架桥等场景的准确率接近100%,但是,度假胜地和中心区2 个场景误分类较多,准确率不足80%,度假胜地场景的准确率最低为75%。为了比较模型性能,选取现阶段光学遥感图像场景分类中4 种典型网络模型进行比对:GoogLeNet 是2014 年提出的一种22 层的网络模型;D-CNNs[25]是2018 年提出的网络模型,其通过引入度量学习正则化来提升分类能力;CNN-CapsNet[2]是2019 年提出的网络模型,其通过胶囊网络捕获空间信息来增强特征提取能力。表2 为各网络模型在AID 数据集上的性能对比结果,可以看出,本文方法取得了较好的精度,与D-CNNs 和CNN-CapsNet 网络模型相比,本文方法在达到近似精度的情况下所需的参数量和浮点运算量大幅减少,与EfficientNet 网络模型相比,本文方法分类准确率有3%~4%的提升,参数量仅增加了2 ×106,浮点运算量没有改变,说明引入集成学习模块后的网络模型仅需较少的硬件消耗,就可在不影响运算时间的情况下获取明显的分类性能提升。
图7 AID 数据集训练比率为20%时的混淆矩阵Fig.7 Confusion matrix when the training ratio of AID dataset is 20%
表2 各模型在AID 数据集上的性能对比结果Table 2 Performance comparison results of each model on AID dataset
将NWPU-RESISC45 数据集分为训练集和测试集,用本文网络模型进行训练测试,统计测试结果得到混淆矩阵,其中,20%训练比率的分类结果如图8所示,对角线元素为各场景分类的准确率。通过混淆矩阵可以看出,45 种场景中有39 种场景的准确率在90%以上,灌木丛场景的准确率接近100%,但是教堂、中型住宅、宫殿3 个场景的准确率不足80%,宫殿场景的准确率最低为75.2%。表3 为本文方法与其他网络模型在NWPU-RESISC45数据集上的性能对比,可以看出,本文方法在NWPU-RESISC45 数据集上同样取得了较好的精度,且参数量和浮点运算量也最少。在2 个数据集上都取得较好结果,说明本文方法较为稳定且鲁棒性较强。
图8 NWPU-RESISC45 数据集训练比率为20%时的混淆矩阵Fig.8 Confusion matrix when the training ratio of NWPU-RESISC45 dataset is 20%
表3 各模型在NWPU-RESISC45数据集上的性能对比结果Table 3 Performance comparison results of each model on NWPU-RESISC45 dataset
为了更直观地比较网络模型对易误分类场景的辨识性能,选取准确率达不到90%的场景,绘制各场景在不同网络中准确率的对比情况,结果如图9 所示。从图9 可以看出,本文方法在大多数易误分类场景中取得了最好的分类效果,说明其在易误分类场景中也有一定优势。
图9 易误分类场景中各网络模型的性能对比结果Fig.9 Performance comparison results of each network model in error prone classification scenario
本文研究深度学习在光学遥感图像场景分类中的应用问题,联合集成学习和轻量化网络模型的优势,提出一种硬件要求低、运算时间短的光学遥感图像场景分类方法。采用EfficientNet 网络模型来减少参数量和浮点运算量,通过集成学习模块充分解析图像特征的语义信息。在2 个光学遥感图像数据集上的实验结果表明,该方法分类准确率较高,在多数易误分类场景中依然能够取得较好的分类效果,与其他网络模型相比,本文方法所需的参数量和浮点运算量大幅减少,更适合在末端部署并进行普及推广。然而,本文方法在个别场景上的分类精度仍有待进一步提高,解决该问题并探索如何在末端部署实现本文方法将是今后的研究方向。