张俊鑫,郭海京,3*,唐孝培,金诗程
(1.广东省国土资源测绘院,广东 广州 510500;2.中山大学地理科学与规划学院,广东 广州 510275;3.自然资源部华南热带亚热带自然资源监测重点实验室,广东 广州 510663)
深度学习是特殊的机器学习算法,其模型是深层的人工神经网络。深度学习最早由多伦多大学教授Hinton[1-2]提出,是指一种模拟人类大脑研究学习的人工神经网络算法。其主流算法包括受限波尔兹曼机(RBM)、深度信念网络(DBN)、卷积神经网络(CNN)以及自动编码器(AE)等,后3 种算法广泛应用于遥感影像分类与识别中,以CNN 模型最为典型[3]。然而,影像数据局限于单一视角,主要关注于目标的空间布局特征,忽略了剖面和层次特征,无法实现更细致的分类[4]。因实景照片多视角、高分辨率等特点,研究者开始关注基于照片的分类方法,通过深度学习CNN对照片进行识别[5-6],实现更加精细化的分类。
本文提出一种轻量化的神经网络模型,基于三调照片实现地表覆盖类型的精细化识别。实验中,以广东省部分县区为对象,利用8 037 张三调照片样本进行模型训练与分类实验研究,取得了较好的效果。研究结果表明,运用轻量化神经网络模型检测三调实地照片,可以识别地表上的柚子、香蕉、菠萝等作物,满足国土空间的精细化管理需求,同时为广东省地区的耕地恢复潜力分析提供数据支撑。
本文使用广东省部分县区的三调照片作为模型的验证与分析数据,对野外实地拍摄的照片进行人工标注,照片像素为1 920×1 080,共标记了8 037 张照片用于模型的训练与验证,其中菠萝照片4 073 张、柚子照片1 798 张、香蕉照片538 张、其他照片1 628张(如表1所示),样本照片如图1所示。
表1 样本类别及数量
图1 样本照片
卷积神经网络的参数量通常较多,在实际应用中受到计算能力的限制,为了使得本文的方法能够得到大范围推广应用,本文的核心目的是提出一个轻量化的神经网络模型,减少模型的计算量与参数量,具体的网络结构见图2。基础网络结构的灵感来自于EfficientNet[7],主要包含CSPMBConv 和CSPMBConvBlock等基础模块,各模块的详细结构见图3。同时考虑到三调数据的场景特征丰富,在网络中加入了多尺度特征融合,有效获取不同尺度的场景特征信息。基于此,本文提出了一个高效多尺度场景卷积神经网络(efficient multi-scale context network,EMCNet)。
图2 网络结构图
图3 网络模块细节图
神经网络通常是由许多卷积层构成,一个卷积网络层i可以定义为一个函数:Yi=Fi( )Xi,其中Fi是算子,Yi为输出张量,Xi为输入张量,张量形状为Hi,Wi,Ci,其中Hi和Wi为输入张量的空间分辨率大小,Ci为通道数量。卷积神经网络N可以由一系列卷积层来表示:
在实际应用中,卷积神经网络层通常被划分为多个阶段,每个阶段的所有层都具有相同的结构,例如ResNet[8]有5个阶段,除了第一层进行下采样外,其余每个阶段的卷积层都包含相同的卷积类型。因此,我们可以将卷积神经网络定义为:
式中,FLi i为卷积层Fi在第i阶段重复了Li次;Hi,Wi,Ci为第i层的输入张量X的大小。
与常规的卷积神经网络设计主要关注于寻找最佳的网络层结构Fi不同,模型缩放试图扩大网络深度(Li)、宽度(Ci)以及分辨率(Hi,Wi),而不改变基础网络中预定义的Fi。通过修正Fi,模型缩放简化了计算资源约束下的模型结构设计问题,但仍有很大的空间去探索网络每一层中不同的Li,Ci,Hi,Wi组合。为此,谷歌大脑团队提出了EffcientNet[7],可以将网络缩放表述为一个优化问题:
式中,w,d,r为网络缩放的宽度、深度和分辨率的系数;F^i,L^i,C^i,H^i,W^i为基础网络中预定义的参数。
网络缩放的主要难点在于最优的d,w,r存在相互依赖,且在不同的资源约束下取值也会发生变化。正是由于这个难点的存在,传统方法一般只考虑其中一个参数的变化。
缩放网络深度是许多卷积网络最常用的方法[8,10-11]。理想情况下,更深层的卷积神经网络可以捕捉到更丰富、更复杂的特征信息,并且同时可以保持良好的泛化能力。然而,梯度消失问题会导致更深的网络也更难以训练[12]。尽管近年来提出的跳跃连接(skip connections)[8]和批归一化(batch normalization)[13]缓解了训练问题,但更深的网络所带来的精度增益逐渐减小。例如ResNet-1000 虽然有更多的层,但精度与ResNet-101相似。
缩放网络宽度通常用于小尺寸模型[14-16]。在Zagoruyko[12]的研究中,更宽网络模型往往能够获取更细粒度的特征,也更容易训练。然而,极宽但较浅的网络往往难以捕捉更高层次的特征。
使用更高分辨率的输入图像,卷积神经网络可以获取更细粒度的特征。从早期VGG[21]、AlexNet[22]等网络的224 输入大小开始,现代卷积神经网络倾向于使用299×299[10]或331×331[17]的输入大小来获得更好的精度。Huang[18]等通过输入480×480的大小实现了最优的网络分类精度,分辨率为480×480。而更高的分辨率,如600×600,也被广泛应用于目标检测网络中[19-20]。
平衡网络深度、宽度和分辨率3 个维度获得更好的准确率和效率,EfficientNet 使用复合系数φ对3 个维度进行缩放,具体如下:
式中,α,β,γ为对应d,w,r运行维度的资源分配参数;φ为资源控制系数;在满足约束条件的情况下,通过神经架构搜索对各参数进行优化调整;在参数量和运算量不增加的基础上,EfficientNet 模型通过不断调整网络深度、网络宽度和图像分辨率的系数达到最优的精度。
网络缩放实现了最优的输入分辨率,网络深度以及网络宽度的组合,能够在减少网络参数量的同时保证网络的分类精度。而有效的网络结构也能够减少网络的参数量[23]。最近提出的跨阶段局部网络(CSPNet)[24]在减少计算量的同时可以实现更丰富的梯度组合。CSPNet 是通过将基础层的特征图划分为两部分,然后通过提出的跨阶段层次结构将其合并来实现的。其主要思想是通过分割梯度流,使梯度流通过不同的网络路径传播。现有的CNN 通过轻量化后,准确率大大下降,而CSPNet 能够加强CNN 的学习能力,使其在轻量化的同时保持足够的准确性。同时,过高的计算瓶颈会导致更多的循环来完成推理过程,或者一些算术单元会经常闲置。而CSPNet能够将计算量均匀的分布在CNN 的每一层,从而有效的提升每个计算单元的利用率,减少不必要的计算消耗。
本文所采用的实验流程如图4 所示,从三调数据筛选出部分样例照片,并对照片进行人工标注,然后根据样例照片制作数据集,将数据集按照7∶3的比例划分训练集与测试集。训练过程中对数据进行随机增强,包括水平翻转、镜像翻转、上下翻转、高斯噪声模糊、0~15°的随机旋转,然后将数据采样至512×512的大小并归一化输入进网络进行训练。训练结束后对模型进行测试,获取模型的测试精度,检验模型的鲁棒性。
图4 实验流程图
本文训练所使用的框架为pytorch,训练周期为100,优化器选择SGD,初始学习率为0.01,衰减系数为0.000 1,学习率采用WarmUp学习率调整策略,后续学习率每25 个周期衰减10 倍,训练过程中采用NVIDIA GTX 2080 ti GPU进行加速。
由于训练数据存在不均衡的现象,本文的损失函数并未使用普通的交叉熵损失函数,而是对交叉熵损失函数进行了加权,加权的交叉熵损失函数公式如下:
在对网络模型进行训练后,加载模型的训练权重,并利用预先划分的测试集对模型进行测试,测试的结果如图5 展示的混淆矩阵所示。可以看到各个类别的分类精度均达到了非常高的精度,整体误分情况较少,测试集的F1-score达到了0.988 3,这说明本文提出的网络模型能够有效捕获三调数据的场景特征,提升最终的分类精度。
图5 测试集混淆矩阵
为验证本文提出的模型的有效性,本文对比了Inceptionv3[11],ResNet101[7],DenseNet169[9],ResNeXt50[25]和WideResNet50[12]5 种模型,在实验参数上保持一致,得到的结果如表2 所示。根据结果可以看出,本文的网络模型在精度上均优于其余模型,并且参数量较少,其余模型参数量均在千万级别,本文的方法参数量在百万级别。在计算量方面,以输入512×512 大小为基准,统计了各个模型的计算量,其中WideResNet50的计算量最高,达到了119.4 BFLOPs,其余模型也均超过30 BFLOPs,可以看到主流网络模型的计算量均较高,不适合大规模推理预测,耗费时间的同时也需要消耗大量的计算资源。而本文提出的模型计算量仅为15.3 BFLOPs,在减少计算量的同时并没有降低模型的精度,由此可见,本文提出的模型无论在速度和精度方面均有所提高。
表2 EMCNet与主流网络模型的对比结果
本文提出了一种轻量化的神经网络模型,该模型利用了最新的网络缩放技巧,综合精度与效率,并对特征进行跨阶段融合,能够对特征进行有效利用。与目前主流的神经网络模型进行对比,本文提出的模型不仅在速度上具有较大的优势,且在精度上也表现更优,在实际的场景应用中能够达到较高的分类精度,可以实现利用该模型对三调数据进行自动筛选,有效提高筛选效率,减少人工参与,具有重要的推广意义。