【论文笔记(2)】3D Graph Neural Networks for RGBD Semantic Segmentation
3D Graph Neural Networks for RGBD Semantic Segmentation
3DGNN的RGBD语义分割
论文地址
https://ieeexplore.ieee.org/document/8237818
代码地址
https://github.com/yanx27/3DGNN_pytorch
摘要
RGBD语义分割需要2D外观和3D几何信息联合进行推理,文章中提出了三维图神经网络(3DGNN),对3D点云使用KNN构建K近邻图。图中的每个节点对应一组点,设计一个一元CNN来从2D图像提取外观特征作为其节点的隐藏表示向量。每个节点根据递归函数,根据当前自身状态和邻居传入的消息动态的更新隐藏表示。迭代一定的时间步长后,,每个节点被用于预测每个像素的语义类别,得到最终的语义分割结果。
出发点
传统的RGB语义分割由于二维图像设置,没有利用到真实世界的几何信息,RGBD语义分割可以通过利用深度信息来利用真实世界的几何信息。
在图1(A)中,在2D图像中,位于桌子上的红点局部邻域会包括微波和计数器像素。在3D点云中,加入了深度信息之后没有这样的混淆,如图1(B)所示。
实现细节
整体框架
图构建
通过2D像素图和深度图的结合,构造出一个有向图,[X,Y,Z]作为3D坐标,作为图中的结点,边的构造由KNN来完成,实验中K选取64,产生的图为不对称结构。
传播模型
每一个像素的初始隐藏值(CNN提取到的特征),更新模型为:
消息聚合函数G为多层感知机模型(MLP),使用ReLU作为**函数。
对于更新函数,文中提出了两种选择:
Vanilla RNN Update: 将隐藏消息h和聚合到的边信息连接后送入MLP中:
LSTM Updata : 另一个选择就是使用LSTM进行更新。
预测模型
预测模型为:S是所有节点共享的SoftMax做**函数的MLP,在进行MLP操作之前,将最终的隐藏状态与初始隐藏状态连接(提取特征CNN的输出)用以捕获2D外观信息。损失函数为Softmax交叉熵损失函数,并使用时间反向传播(BPTT)算法对模型进行训练。
实验结果
在 NYUD2数据集实验结果如下图所示:
个人总结
这篇文章是我大概半年前看过的,当时觉得没有什么可以采用的地方,在看了一些相关的图网络文献后,回过头来看,还是觉得有一些值得采纳的地方的。
1.首先区别于传统的RGB语义分割,文章加入了深度信息用来捕获真实世界中的几何信息。
2.在图像这些欧几里得数据中,想要应用图网络是一个挑战,文章中提出的图构建方案也可以当做一个参考点。
3.还是应该多读论文,有时候当你觉得一篇相关方向的论文的创新点不怎么吸引你的时候,很有可能是你论文文献读的不够多,导致你对他的创新点没有感觉。