【语义分割】3D Graph Neural Networks for RGBD Semantic Segmentation

3D Graph Neural Networks for RGBD Semantic Segmentation

image.png

原文章:https://www.yuque.com/lart/papers/wmu47agit

动机

主要针对的任务是RGBD语义分割, 不一样于往常的RGB图像的语义分割任务, 这里还能够更多的考虑来自D通道的深度信息. 因此对于这类任务须要联合2D外观和3D几何信息来进行联合推理.github

深度信息编码

关于将深度信息编码为图像的方法有如下几种:算法

  1. 经过HHA编码来将深度信息编码为三通道: horizontal disparity, height above ground and norm angle(水平视差、地面上方高度和范数角度).
  2. 直接将深度图像做为一个1通道图像输入.

以后FCN直接在编码图像上进行特征提取.编程

RGBD图像分割

关于如何进行RGBD图像的分割, 以往有的工做主要有如下的几种方法:网络

  1. 将深度图直接做为另外一个输入图像. 使用两个CNN结构来分别处理颜色与深度信息来提取特征. 这样形成须要双倍的计算和存储消耗. 并且这样的设定将2D图像像素与3D空间中的真实位置割裂开来, 可能会带来必定的错误. 由于单独考虑2D空间中的像素, 其得出的邻居关系, 在空间中可能并不能对应表示很好的邻近关系.
  2. 另外一种选择是使用3D CNN, 使用在 voxelized 3D space 中, 这类方法更好地利用了3D空间中的上下文信息, 然而因为3D体素网络的计算成本很高, 所以在高分辨率和复杂场景中进行扩展具备必定的挑战. 另外, 3D空间的量化也可能致使额外的偏差.
  3. 各向异性卷积提供了一个更好的对于形状分析学习非欧滤波器的方法. 然而它对于大尺度RGBD图像的密集语义分割任务的处理仍是有些困难, 由于点之间的关联很复杂, 它们一般依赖于定义明确的点关联, 例如网格, 这些网格不容易用于复杂的RGBD分割数据.

为了处理上述挑战, 文章提出了一个端到端的3D图神经网络, 这直接从3D点中学习表示.app

图神经网络

当前不少工做已经努力将神经网络推广到图数据上.dom

一个方向是将卷积神经网络(CNN)应用于图. 在谱方法中, CNN用于依赖于拉普拉斯矩阵的谱域. 然而[6]使用哈希函数, 所以能够将CNN应用于图. 另外一个方向是将神经网络循环应用于图的每一个节点, 产生了“图形神经网络”. 该模型包括一个传播过程, 它相似于图模型的消息传递. 这种模型的最终学习过程能够经过BPTT算法来实现.ide

这里使用的消息传播模型的图神经网络, 基础更新公式为:函数

image.png

其中h为隐藏状态, m对于当前节点的邻居信息的汇总后的结果, 具体如何汇聚, 看具体不一样的模型的设定, 文章是使用的均值. 函数M是计算消息的函数, 而F是用来更新隐藏状态的函数. 和循环卷积神经网络相似, M, F是不一样的时间步上是共享权值的. 简单的M和F可使用像素级加法和全链接层来分别表示 这些更新函数指定了图内信息的传播模型. 也可使用多个M来包含来自有着不一样类型的边的图的更多信息.性能

经过执行上述传播模型必定数量的步骤来执行推断, 最终预测能够在节点处或在图级别产生, 具体取决于任务. 例如, 能够将隐藏表示(或其聚合)提供给另外一个神经网络以执行节点(或图)分类.

图神经网络与许多现有模型密切相关, 例如条件随机场(CRF)和循环神经网络网络(RNN). 文章专一于成对CRF, 但请注意, 这里的链接扩展到了高阶模型上.GNN能够被看做是一个RNN从序列到图数据上的泛化.

  1. 当输入图是链式结构的时候, 邻居被从当前节点的单个父节点来生成;
  2. 当输入图是树时, GNN也与Tree-LSTM密切相关. 在这种状况下, 消息计算是全部子节点的隐藏表示的总和. 与常见图神经网络的主要区别在于每一个子节点会计算其本身的遗忘门输出副本-它们在其父单元内存更新中被聚合在一块儿.

贡献

  1. 首先基于深度信息将2D像素投射到3D空间中, 而且将每一个3D点与一元特征向量(即, 2D分割CNN的输出)相关联.
  2. 而后, 咱们构建一个图, 其节点是这些3D点, 并经过在3D空间中找到最近的邻居来构造边.
  3. 对于每一个节点, 将图像特征向量做为初始表示, 并使用循环函数迭代地更新它.

这种动态计算方案的关键思想是节点状态由其历史状态和其邻居发送的消息共同肯定, 同时将外观和3D信息同时考虑在内.

使用每一个节点的最终状态来执行每一个节点的分类任务. 采用BPTT算法计算图形神经网络的梯度. 此外, 经过传播梯度到一元CNN促进端到端的培训.

图构建

给定图像, 基于像素的2D位置和深度信息来构建有向图, 让[x, y, z]表示相机坐标系中的点的3D坐标, 而且让[u, v]表示其根据针孔相机模型投影到图像上的坐标. 根据透视投影几何产生式子:

image.png

这里的fx和fy表示沿着x和y的焦距长度(focal length), 而且cx和cy表示主点(the principal point). 为了造成图, 将每一个像素视为一个节点, 并经过有向边缘将其链接到3D空间中的K近邻(KNN), 在咱们的实验中K设置为64. 注意, 这个过程产生不对称结构, 即, 自A到B的边的存在不必定意味着自B到A的边的存在.

传播模型

在构造完图后, 使用CNN做为一元模型来计算每一个像素的特征, 这些特征做为对应节点的初始隐藏层表示, 从而编码外观信息. 给定已经编码好几何上下文信息的3D图, 图神经网络能够用来利用外观和几何信息.

信息传递过程以下:

image.png

这里的g是一个多层感知机, 文章是用的是ReLU做为对应的非线性激活函数. 每一个时间步, 每一个节点收集来自邻居节点的消息. 消息首先被汇聚平均后, 与节点原始隐藏状态进行融合更新.这里关于F的选择, 主要有两种:

  1. Vanilla RNN Update. 使用多层感知机做为更新函数.
  2. 表示为: image.png
  3. 这里将隐藏状态和消息拼接后传入MLP q.
  4. LSTM Update. 使用LSTM来进行更新. 它可以维持自身的记忆来帮助从接受的信息中提取更为有用的信息.

image.png

网络的大体状况如上.

预测模型

对于每一个节点v在得分图中对应的像素, 这里预测语义类别yv的几率pyv使用下面的公式计算:

image.png

这里的s是一个全部节点共享的有着softmax层MLP. 注意这里拼接了一元CNN输出的初始隐藏状态和T个时间步以后的迭代输出隐藏状态.

最终使用一个softmax交叉熵损失函数来对每一个节点进行损失计算, 使用BPTT进行训练.

效果

实验细节

We evaluate our method on two popular RGBD datasets: NYUD2 and SUN-RGBD.
NYUD2 contains a total of 1,449 RGBD image pairs from 464 different scenes. The dataset is divided into 795 images from 249 scenes for training and 654 images from 215 scenes for testing. We randomly split 49 scenes from the training set as the validation set, which contains 167 images. The remaining 654 images from 200 scenes are used as the training set.

划分比例: tr:val:te = 654:167:654 = 1:0.25 :1

SUN-RGBD consists of 10,335 images, which are divided into 5,285 RGBD image pairs for training and 5,050 for testing.

All our hyperparameter search and ablation studies are performed on the NYUD2 validation set.

For most of the ablation experiments, we use a modified VGG-16 network, i.e., deeplab-LargeFov with dilated convolutions as our unary CNN to extract the appearance features from the 2D images. We use the fc7 feature map. The output feature map is of size H×W×C where H, W and C are the height, width and the channel size respectively. Note that due to the stride and pooling of this network, H and W are 1/8 of the original input in terms of size.** 所以, 咱们的 3D 图形是创建在向下采样的特征图之上的.**

为了进一步合并上下文信息, 咱们使用全局池从特征图计算另外一个 C 维向量. 而后将向量附加到全部空间位置, 从而生成一个 H×W×2C 特征图.

In our experiment, C=1024 and a 1×1 convolution layer is used to further reduce the dimension to 512.

We also experimented by replacing the VGG-net with ResNet-101 or by combining it with the HHA encoding.

  1. We initialize the unary CNN from the pre-trained VGG network.
  2. We use SGD with momentum to optimize the network and** clip the norm of the gradients such that it is not larger than 10**.
  3. The initial learning rates of the pre-trained unary CNN and GNN are 0.001 and 0.01 respectively.
  4. Momentum is set to 0.9.
  5. We initialize RNN and LSTM update functions of the Graph Neural Network** using the MSRA method**.
  6. We randomly scale the image in scaling range [0.5, 2] and randomly crop 425×425 patches.
  7. For the multi-scale testing, we use three scales 0.8, 1.0 and 1.2.
  8. In the ResNet-101 experiment, we modified the network by reducing the overall stride to 8 and by adding dilated convolutions to enlarge the receptive field.
  9. We adopt two common metrics to evaluate our method: mean accuracy and mean intersection-over-union (IoU).

对比结果

image.png

image.png

image.png

消融实验

  • 传播时间步数: 当传播步长较大时, 振荡可能与优化过程有关. 咱们发现 3 到 6 个传播步会产生合理的良好结果.
  • 更新方程: 比较了描述的两个更新方程. 普通 RNN 的性能与 LSTM 类似. LSTM 更新的计算复杂度远远大于香草 RNN. 根据这个发现, 因而全部的实验使用普通 RNN 更新.
  • 2D VS.3D 图: 为了研究 3D 图的增长带来了多大的改进, 将其与基于二维像素位置的二维图进行了比较. 使用相同的图神经网络进行实验, 并在表 4 中显示不一样传播步骤的性能. 整个测试集的结果如表 5 所示. 代表, 使用 3DGNN, 能够捕获更多的三维几何上下文, 从而使预测更加准确. 另外一个有趣的观察是, 即便简单的 2DGNN 仍然优于采用普通 CNN 的方法.
  • 性能分析: 如今将3DGNN与一元CNN进行比较, 以便研究如何经过利用3D几何信息来加强GNN. 基于单尺度数据输入的结果列于表5中. 3DGNN模型优于一元和2DGNN模型, 这再次支持3D上下文信息在语义分割中很重要的事实.
    • 为了进一步理解3D信息带来的优点, 文章统计了对于各个类别带来的性能提高. 对于特定的类别, 因为在2D空间中很容易被误分类, 而结合空间信息后, 反而容易分类了.
    • 为了进一步理解什么致使了提高, 分析了不一样大小的物体的性能增益如何变化. 特别地, 对于每一个语义类, 首先将真实分割图划分为链接组件的集合, 其中每一个组件被从新构造为该类中对象的一个实例. 而后计算全部类的对象实例的大小. 就像素数而言, 对象大小的范围高达10,200个不一样的值. 咱们将它们分红34个bins, bin宽为3,000. 记录每一个bin中对象实例的预测精度的平均改进. 如图6所示, 3DGNN处理最好的是大中型对象而不是小对象. 这一结果证实3DGNN能够克服一元CNN的感觉域的有限大小, 并捕获图像中的长程依赖性.

image.png

  • 定性分析: 在图7中的SUN-RGBD数据集上显示了模型的示例结果, 并将其与一元CNN进行了比较. 能够看出, 3DGNN利用3D几何上下文信息, 而且与一元CNN相比, 学习到更好的分类表示.

image.png

  • 失败案例分析. 最后, 展现和分析了模型的表明性失败案例.
    • 首先, 当物体具备类似的深度时, 模型有时没法作出良好的预测, 特别是对于小物体. 在图8的第一行中, 因为这一事实, 灯被错误分类为百叶窗.
    • 第二种类型的失败案例是因为形状复杂的对象形成的. 不连续的深度可使3D邻域至关嘈杂. 如图8的第二行所示, 该表被识别为其余对象的片断.
    • 此外, 当两个对象的2D外观和3D上下文类似时, 咱们的方法不能很好地工做. 例如白板混淆成白墙, 如图8第三排所示.

总结

提出了一种用于RGBD语义分割的新型3D图神经网络. 图神经网络创建在从RGB图像中提取颜色和深度的点之上. 咱们的3DGNN利用2D外观信息和3D几何关系, 它可以捕捉图像中的长距离依赖, 这在传统方法中难以建模. 各类实证结果代表, 咱们的模型在标准RGBD语义分段基准上实现了良好的性能.

未来, 咱们计划调查反馈以调整构造图的结构.

思考

  • 如何编程实现梯度裁剪?
  • MSRA方法初始化如神经网络的更新函数有什么好处? 如何初始化?
  • Pytorch如何设置参数的初始化?

相关连接

相关文章
相关标签/搜索