王敏 周晓春
关键词:云检测;HRNet V2 ;JPU
遥感是获取地面信息的重要手段,对地理国情普查、污染防治、抗震救灾、农作物长势分析等方面都起到了重要作用[1]。然而,根据国际卫星云气候学项目通量数据(ISCCP-FD) 显示,全球云的覆盖面积超过地面面积的一半,尤其是热带雨林地区云的覆盖更为严重,基本很难获取无云的影像[2]。
云检测是遥感影像处理首要且关键的一步,只有将云检测出来后,替换为无云的影像,才可以开展下一步的工作,后续的分析解译具有重要意义。最初且最原始的云检测手段是人工勾取云矢量,直至现在还有很多公司采取这种方式进行云检测,其缺点如下,首先人工勾取云矢量效率太低;第二,人工对于薄云边界的判断不清晰,很难勾绘出准确的薄云边界;第三,对于大幅影像很容易漏掉小块且单独的云朵。从而对后续影像分析解译带来影响。云检测的第二类方法为基于波段阈值及纹理信息的云检测。Zhu等人提出的FMask 算法,其是基于波段阈值的云检测方法,可以很好地检测Landsat系列遥感影像[3-4]。2015 年,Zhu对原始的FMask算法进行改进,改进的FMask 算法对于卷云及薄云的检测效果更好[5]。这些方法基本都是依赖光谱的反射特性进行区分出云及非云的物体,但是地面上有很多云的光谱反射特性相类似的物体不可避免,如海边的沙地、荒野中的裸地以及雪等,它们会极大干扰检测的结果,从而被误判为云。2020年,Xiong等基于NDVI、白度及 HOT三个指标设计了动态光谱阈值算法,将原云检测的精度提高到90%以上[6]。第三类方法为基于机器学习与深度学习的方法[7-10]。SVM的出现开始了机器学习在云检测领域的应用,Li等基于灰度共现矩阵的亮像素比、平均梯度和角二阶矩作为分类特征设计了SVM,从而进行云检测,结果来看,可以用于工程应用[11]。Ji S等通过级联卷积神经网络集成了云检测及云去除的框架,从而实现高精度云检测及云去除[12]。并且很多学者对其精度进行了精进,如ZiqiangYao提出的MCNet,模型类似于U型,加入金字塔卷积聚合多尺度特征,注入注意力机制提取到更多的特征,可以较好地检测云[13]。Yao J结合Unet与SegNet模型进行训练,测试时使用TTA(test time augmentation) 提高云检测的准确性,对高分7卫星的快视图影像有较好的检测结果[14]。云检测属于深度学习领域中的语义分割任务,Zhi?yong Xu基于HRNet分析了HRNet的缺点,并向其中加入轻量级双注意力机制,并设计BA模块,提高了边界信息的检测精度[15]。
本文的主要贡献:
1) 目前的深度学习算法大多数是输出分辨率的特征图,然而HRNet V2可以尽可能保留原始影像的信息的特点。比如,原始为云的地方,不一定会被还原出来,所以这里使用HRNet V2作为骨干网络,使用级联的上采样方式,层层递进还原原始影像的像素類别。
2) 由于原始的HRNet V2的训练效率较低,这里基于贡献1的HRNet V2的后面加入JPU结构,即将基于贡献1的HRNet V2输出的4个大小一致的特征图进行拼接,再将其分别进入空洞率不同的可分离卷积中,最后再进行特征图相加。其中可分离卷积可以明显减少训练时间,并且进行并联的空洞卷积。
1 改进HRNet V2 的云检测算法
本文在原始的HRNet V2结构的基础上,加入JPU 结构以提高网络模型的精度。
1.1 HRNet V2结构
HRNet V2 结构如图1所示。首先,经过原始的HRNet v2 结构[16],HRNet v2 结构首先经过一个stem 结构,然后再进入到4个下采样的阶段。
其中,stem 结构为首先将原始的3 通道特征图经过一个卷积核大小为3,步长为2的卷积,Stem 结构将3 通道特征图升高为64 后,增加了感受野。
第1阶段:先将经过stem block 后的特征图,进入一个bottleneck 结构,bottleneck 结构如图2 所示,先经过一个1×1的卷积,但是通道数不变,然后经过3×3的卷积结构,最后经过1×1 的卷积结构将特征图的通道数变为256,另一部分,经过一个1×1卷积直接将原始的特征图的通道数变为256,将两个分支的特征图进行相加操作,得到通道数为256 的特征图。然后将通道数为256的特征图经过一个1×1的卷积,将通道数减小为64,然后经过卷积核大小为3的卷积,提高非线性,之后再经过1×1的卷积结构还原原始256 大小的通道数,最后将得到的特征图与原始的256大小的特征图进行相加操作,然后输出最终结果。
第2阶段:上一阶段得到了一个通道数为32,大小为64的特征图和一个大小为32通道数为64的特征图,分别经过Basic Block 结构,Basic Block 结构为经过两个卷积核大小为3的卷积,通道数大小不变。如图3所示。
第3阶段:同第2阶段相类似,只不过其特征图的分支更多了,可以用到的多尺度特征更多了。
第4阶段:同第3阶段相类似,只不过最后输出4 个特征图而不是进行上采样或下采样,其中4个特征图的大小分别为64×64、32×32、16×16、8×8,特征图的通道数依次为32、64、128、256。
1.2 JPU 结构
JPU(Joint Pyramid Upsampling) 模块最早是由Hui?kai Wu在FastFCN中提出,为了将给定的低分辨率目标图像生成带有高分辨率的引导图像,通过从高分辨率引导图像中传递细节与结构信息,从而生成一个高分辨率的特征图像[17]。同时减小网络的计算量,提升网络模型性能。
JPU是将多尺度特征进行变换成统一尺度,首先进行卷积操作,将其4层特征图中后面3层的特征图都统一将其通道数变为与第1层的特征图通道数一致,第1层的特征图不变,这样4层的特征图的通道数都一样,然后进行上采样操作,同样,第1层的特征图尺寸不变,后面三层的特征图都进行上采样将其特征图的尺寸变为和第一层的特征图一致。然后将其四层的特征图拼接起来,形成了1个4倍第一层特征图通道数的融合后特征图,将拼接起来的特征图分别进入空洞率为1、2、4、8 的可分离空洞卷积中,将4个输出结果进行拼接操作,形成了一个新的128 通道的特征图,最后进行卷积操作,将128通道的特征图减少通道数为64。JPU 可以联合多尺度特征并且增加感受野的大小。具体结构见图4所示。
JPU 模块中最重要的部分就是并联的4个空洞率分别为1、2、4、8 的可分离卷积,如图5 所示。
其中,空洞率为1的卷积主要针对ym0和ym的其余部分,空洞率为2的卷积主要针对ym0和ys在图5中,红色虚线框中的空洞率为1的卷积核的作用为获取ym0与ym中其余部分的关联信息。从图5 中的绿色实线框中表示的是空洞率为2 的卷积核通过映射关系h(·)将ym0生成ys的过程,从而提高了分辨率。空洞率为4、8 的卷积核作用与空洞率为2 的卷积核作用类似。由于ASPP 只从最后一个特征图提取特征,而JPU结合了多尺度的上下文信息,所以JPU 与ASPP 结构具有显著的不同。ym0可以通过映射关系变换到ys,而ym0与ym中除ym0外的其余部分通过空洞率为1 的空洞卷积进行关联。因此,在将4个并联的可分离空洞卷积[18]提取出特征之后,还要连接一个常规的卷积用来将特征转换到最后的预测。
2 实验与分析
2.1 实验数据
本次实验所用的数据来自公开数据集,其中用于云检测的优秀数据集为38cloud数据集,该数据集中,18景用于训练,20景用于测试使用,影像来源于Land?Sat8的影像数据。
2.2 损失函数与评价指标
本文使用的损失函数为BCE损失使用以下3个评价指标:交并比(Iou) 、召回率(recall) 以及精确率(precision) 。其计算方式如下:
在公式(1) (2) (3) 中,TP(True Positive) 为真阳性,表示原本为云预测为云的数量,TN(True Negative) 为真阴性,表示原本为非云预测为非云的数量,FP(FalsePositive) 为假阳性,表示原本为非云错误预测为云的数量,FN(FalseNegative) 为假阴性,表示原本为云错误预测为非云的数量,其中3个指标越高表示精度越高。
2.3 云检测结果分析
首先通过定量指标评价该方法与常用的深度学习算法进行对比,可以发现,该方法的精度要高于常用的方法(见表1) 。
如图6所示,图中(c) 和(d) 表示SegNet及UNet算法的预测结果,两个算法的预测效果较差;图中(e) 表示DLinkNet算法的预测结果,其中红框中未正确预测出来;图中(g) 表示HRNet V2算法的预测结果,其中黄色框中云的范围被正确预测,绿色框中云的范围未被预測出来,红色框中的同样角点处未被正确预测;最后图中(g) 表示I-HRNet v2算法的预测结果,其中框中均被正确预测。
3 结论
本文针对现有的云检测算法精度差的问题,在原始的HRNet V2的基础上加入了JPU结构,保留了更多的云细节,提高了云检测精度。
1) 使用HRNet V2结构提高了原始特征图的信息利用率。
2) 在原始的HRNet V2结构后加入JPU结构,提高了模型的训练速度,另外,保留了原始的高分辨率信息,增加了感受野。