2019年数据融合大赛的单视图语义3D挑战赛将从单视图卫星图像预测城市场景的语义标签和归一化数字表面模型(nDSM)。我们提出了一种基于编码器-双解码器框架的新型金字塔网络(Pop-Net),用于端到端多任务学习。编码器是一个可变形(deformable)的ResNet-101 backbone。两个特征金字塔网络作为解码器,分别负责语义分割(Semantic segmentation)和高度估计(Height estimation)。语义信息对高度估计至关重要。因此,引入了语义金字塔后的回归金字塔来利用语义特征来帮助高度估计。为了处理高度异常值,我们利用基于锚的回归和平滑L1损失进行优化,以获得更稳健的高度估计。我们的模型在测试集上实现了77.78%的mIoU和53.40%的mIoU-3,在2019年IEEE GRSS数据融合竞赛的单视图语义3D挑战赛中排名第二。
单视图语义3D挑战是从单视图卫星图像预测城市场景的语义标签和归一化数字表面模型(nDSM)。它由两个子任务组成:语义分割和深度估计。语义分割任务是从卫星图像中生成像素级语义标签,深度估计是从单视点卫星图像中回归每个像素的高度(高程)。由于缺乏基准数据集,从单视图遥感图像估计高度的工作很少。Mou和Zhu提出了一个完全残差的CNN,只接受DSM高度数据的训练。Srivastava等人考虑到语义分割任务和高度回归的相关性,提出了一种多任务CNN架构,用于联合估计语义标签和归一化DSM高度。然而,现在依然存在很多问题:
为了克服这些问题,我们提出了一种基于编码器-双解码器框架的新型金字塔网络(Pop-Net)。有两个全卷积的神经网络作为解码器分别进行语义分割和高度回归。它保留了所有的空间细节,以帮助语义分割。同时,遵循U-Net和FPN,引入横向连接,将低层特征与更多细节相结合,高层特征与更强的语义信息相结合,有效利用CNN中的分层特征表示。
由于每个类别对象都有特定的高度分布,因此设计了特定于类别的高度回归来考虑该特征。受目标检测中anchor机制的启发,我们预定义了每个类别的高度分布。该网络仅对偏移量进行回归。在优化的视角下,用语义标签和高度关联模型,Pop Net在这两项任务上都取得了显著的性能。
编码器-双解码器框架由一个编码器和两个解码器组成,分别用于语义分割和高度估计。这两个检测器共享来自编码器的特征映射,通过多任务损失驱动,使共享的特征更加通用。从单视点卫星图像直接回归高度容易误导网络,导致模型训练发散。因此,我们利用语义驱动机制来构建“pyramid on pyramid”架构,即双解码器,如图1所示。由于其新颖的设计,我们称之为金字塔上的金字塔网络(Pop-Net,pyramid on pyramid)。
城市场景(urban scene)中的对象具有比例变化(如建筑物和树木)和复杂的几何变化(如地面和水)。因此,我们选择了一个功能强大的主干网络,DeformableResNet,作为该框架中的编码器。在标准ResNet的C3-C5阶段,可变形ResNet使用可变形卷积层而不是标准卷积层。可变形卷积学习一个额外的样本位置信息,以替换标准卷积中的规则网格,从而显式地建模几何变换,以解决尺度变化和复杂几何变化问题。为了保留边界以获得更精细的分割结果,我们提取了细节更丰富的低级别、高分辨率特征图C2和C3,以及语义信息更强的高级别、低分辨率特征图C4和C5。在本次挑战中,我们在实践中使用了可变形ResNet-101。
为了结合高分辨率特征图更丰富的细节和低分辨率特征图更强的语义信息,我们使用自顶向下的结构和横向连接在编码器上构建语义特征金字塔(decoder#1)。语义信息是高度估计的重要信息。因此,我们提出了一种新的“pyramid on pyramid”架构,在语义特征金字塔上建立另一个特征金字塔进行高度回归,命名为decoder#2。横向连接负责特征映射的聚合,其中我们使用双线性插值后的 3 × 3 3×3 3×3卷积层作为上采样操作,我们采用 1 × 1 1×1 1×1卷积层来减少底层特征映射的通道。最后,使用一个简单的concat操作作为最佳入口来聚合特性图。
高度的数值方差太大,无法通过卷积神经网络回归。然而,我们观察到每个类的高度分布有一个更稳定的方差。因此,受目标检测的启发,我们引入了锚机制来获得更稳健的高度回归。
类别 c c c的高度 H H H可以被计算为: H c = δ c ⋅ s + μ c H_{c}=\delta_{c}\cdot s+\mu_{c} Hc=δc⋅s+μc其中, δ c \delta_{c} δc和 μ c \mu_{c} μc代表类别 c c c的标准差和均值。 s s s为deoder#2预测的比例因子。
回归目标 t t t为: t = ( H c − μ c ) / δ c t=(H_{c}-\mu_{c})/\delta_{c} t=(Hc−μc)/δc其中,ground truth语义标签用于计算类特定的目标(class-specific target)。
Pop-Net有两种输出:像素级语义标签和nDSM,属于多任务问题。因此,我们利用多任务损失对网络进行端到端优化,公式为: L = L c l s + L r e g L=L_{cls}+L_{reg} L=Lcls+Lreg我们使用交叉熵作为语义分割损失。对于高度估计损失 L r e g L_{reg} Lreg,考虑到大量的异常值,我们使用平滑L1损失来处理异常值:
这是一个鲁棒的L1损失,比L2损失对异常值更不敏感。
在单视图语义3D挑战中,我们在NVIDIA Tesla P100 GPU上进行所有实验。所有的模型都是用Pytorch和SimpleCV框架实现的,可以加快管道的构建。我们通过5次交叉验证,在单视图语义3D挑战数据集上训练和评估我们的模型。这个挑战的度量是mIoU和mIoU-3,mIoU-3是最终的度量。
数据集
单视图语义3D挑战基于Urban semantic 3D (US3D)数据集。对于单视图语义3D挑战,训练集包含2783幅WorldView-3 RGB和多光谱图像,大小为1024×1024像素,以及相应的二维语义分割图像和nDSM图像。该验证集包括50个没有语义标签和没有nDSM GT的验证图像。所有实验都是在没有多光谱图像的情况下进行的,因为多光谱图像对这一挑战没有任何改善。
结果
基于可变形resnet-101的Pop-Net模型在测试集上实现了77.78%的mIoU和53.40%的mIoU-3,在2019年IEEE GRSS数据融合大赛单视图语义3D挑战赛中排名第二。