[论文笔记] SemanticFusion: Dense 3D Semantic Mapping with Convolutional Neural Networks

一、 主要内容

最近开始看语义SLAM的内容(叹。

主要贡献

1.融合的state of the art的SLAM系统ElasticFusion,使用CNN进行语义分割,加上条件随机场对分割结果的优化,设计了semantic mapping的系统。
2.使用的摄像头为RGB-D,系统帧率达到25Hz,保证了实时性。
3.提出(?)了语义地图中,每个点类别概率的更新方法。

额外收获

1.结合视频连续帧间的信息,可以优化CNN对单张图片的分割效果。
2.能够同步运行闭环检测,并保留语义信息的一致性。
3.提出了一个把RGB图像训练得到的分割模型,迁移用在RGB-D输入上的方法。

存在的不足

1.大概也是所有语义SLAM系统都存在的问题。CNN的预测并不是实时的,这篇文章选择每隔10帧预测一次,2.在帧率和运行CNN的间隔数中做了trade-off。
3.条件随机场500帧做一次, 看起来没什么提升,是以后可以挖掘的点(有论文使用几何方法fine-tune边缘
4.仅做了语义mapping,没有把语义信息用于tracking。
5.用的语义分割模型来自Learning Deconvolution Network for Semantic Segmentation
,是基于FCN的,可以改进成deeplab系的高精度模型/shuffleNet系的高效率模型/MaskRCNN系的结合物体识别模型?

相关资料
  • 主页
    semantic fusion
  • 视频
    YouTube-SemanticFusion: Dense 3D Semantic Mapping with Convolutional Neural Networks
  • 代码
    full codes

二、实现方法

整体流程分为三部分:

  1. ElasticFusion模块:实时计算帧间位姿关系,构建surfels表示的全局地图。
  2. CNN模块:输入RGBD图像,输出每个像素的类别概率。
  3. 贝叶斯更新模块(Bayesian update scheme):根据CNN的输出和SLAM提供的2D-3D点关联关系,更新全局地图中每个surfel的类别概率。
  4. CRF模块(CRF regularisation scheme):利用全局地图的几何信息,调整语义分割结果。

整个系统的流程是:RGBD相机接受输入,SLAM系统构建3D地图。每隔固定帧CNN运行一次,给地图更新语义信息。每隔另一个固定帧,CRF运行一次,调整语义分割结果。同时整个系统作用期间都运行闭环检测,若检测到闭环,就更新地图,同时保持语义信息的不变。

1. SLAM Mapping

ElasticFusion 主要完成了:

  1. 使用ICP进行位姿估计得到 T W C T_{WC} TWC,对RGB图像进行帧间匹配(?)。
  2. 每新来一帧,都优化map中的surfels。
  3. 同时运行闭环检测,若检测到闭环,则优化整个map。
    ElasticFusion里使用surfel来表示地图,surfel除了位置信息外,还包含了法向信息、颜色信息等。据说是比较适用于当前任务?对ElasticFusion不是很了解

2. CNN Architecture

网络由caffe实现,backbone是VGG-16,原模型接受RGB的三通道输入。
为了能使用RGBD的输入,作者把它做了改进,把Input的channel由3变为4。但由于现有的RGBD数据集很少,不能把第四个通道和前三个等程度的初始化。于是作者想了一个初始化的办法。
前三个通道的weights已经由大规模的RGB数据集训练好,第四个通道的weights 初始化为前三个的均值,然后把灰度图[0,255]的range对应到深度图的[0,8]。这里不是很明白,不知道这个convert具体是指什么,可能得看一看代码才行。
然后是输入图像的预处理,获取到的深度图和彩色图分辨率应该是不同的,所以先用双线性插值把RGB图像缩放到224x224,然后用最近邻获取每个点的深度。又用数据集NYUv2进行fine tune。NYUv2是一个珍贵的深度视频数据集,用它调整第四个channel的参数和网络的类别数。
最终输出的是640x480的概率图。

3. Incremental Semantic Label Fusion

这步用于更新地图中surfels的类别概率。
概率初始化为均匀分布,类别数已知,无先验。
根据SLAM中得到的位姿 T W C T_{WC} TWC,能够获得2D图像中点与3D map中surfel的对应关系。然后使用贝叶斯公式更新地图中surfel的类别概率:
P ( l i ∣ I 1 , . . . , k ) = 1 Z P ( l i − 1 ∣ I 1 , . . . , k ) [ ( O u ( s , k ) = l i ∣ I k ) P(l_i|I_{1,...,k})= \frac{1}{Z} P(l_{i-1}|I_{1,...,k})[(O_{u(s,k)}=l_i|I_k) P(liI1,...,k)=Z1P(li1I1,...,k)[(Ou(s,k)=liIk)
翻译过来就是,根据前k帧图像 I 1 , . . . , k I_{1,...,k} I1,...,k,这个surfel属于类别i P ( L S = l i ) P(L_S=l_i) P(LS=li)的概率是,前k-1帧的概率乘以当前第K帧,对应像素 O u ( s , k ) O_{u(s,k)} Ou(s,k)的是 l i l_i li的概率,再除以归一化常量 Z Z Z

4. Map Regularisation

使用条件随机场优化分割结果。作者给出的直觉是,通过已成地图的几何信息调整,几何上离得近的元素应该拥有相同的类别。
CRF增量式的更新概率分布(应该和上面的贝叶斯更新差不多?),最小化能量Gibbs energy E(x)
E ( x ) = ∑ s ϕ u ( X s ) + ∑ s < s   ′ ϕ p ( X s , X s ′ ) E(x)=\sum_s \phi_u(X_s) + \sum_{s<s~'} \phi _p(X_s,X_{s'}) E(x)=sϕu(Xs)+s<s ϕp(Xs,Xs)
E ( x ) E(x) E(x)是surfel类别 X X X的能量,由两项构成,这个类别 X X X是所有类别的集合吗?。第一项是前 k k k帧中,对于所有surfel,它类别为 X X X的概率的负对数的求和。第二项是平滑项,对于所有连接但类别不同的surfel,他们俩特征 f f f的某个函数。
然后最小化这个 E ( X ) E(X) E(X)
这里没太仔细看,说的很复杂但是在实验中没什么卵用。

你可能感兴趣的:(SLAM,论文笔记)