MaskFusion: Real-Time Recognition, Tracking and Reconstruction of Multiple Moving Objects
Department of Computer Science University College London,2018
论文总结
实时的(30HZ),基于RGBD,动态追踪,实例级别的语义分割。
与recognition-based 的SLAM方法相比,不需要先验模型,能够充分利用语义信息进行目标识别
整个系统某种程度上更专注于三维重建。它对多物体的跟踪,不过是融合了icp和灰度的增加误差项的方式。
该系统在结果中在高动态环境下效果比较好,而在低动态环境下反而没有staticFusion效果好
一、介绍
目前SLAM仍需解决的两个问题:
- 设计能够处理任意动态和non-rigid场景的SLAM网络仍然具有挑战性
- 大部分slam系统输出纯几何地图。语义信息的添加大部分限制于少数已知物体的实例,需要提前建好它们的3D模型。或者将3D地图点聚类成固定的语义类别,而不区分实例。
本文提出了一种实时的SLAM,能够检测识别追踪多个运动目标,并提供物体级的场景描述。
本文方法的优势:
- 不要求是静态场景
- 相比其他动态SLAM,Mask FUsion能够实时的用语义信息去丰富动态地图。
二、相关工作
两个动态场景下的语义slam:
- co-fusion :不能实时,因此应用场景受到限制
- DynSLAM:不能实时,语义识别类别单一,只有自行车
值得关注的论文(转自知乎):
三、方法概述
对每一帧进行以下操作:
1. 追踪
基于Surfel的地图,最小化能量函数,该函数即前后帧的 ICP error和RGB error. 为了高效运算,仅跟踪非静态物体。用两个不同策略判断是否为静态:
- 根据运动一致性(类似于Co-fusion)
- 被人接触的物体标记为动态
2. 分割
这里不仅借助了Mask RCNN,考虑到mask RCNN 速度仅有5Hz,以及其分割出的目标边界不够清晰,本文方法还综合了几何信息来做分割
- 几何分割:基于深度不连续和法向量,倾向于过分割,可以实时,而且提供准确的物体边界。
对每一帧进行几何分割,而语义分割则尽量快的进行,最后结合的语义分割系统:
- 能够实时, 几何分割用于没有语义物体mask的帧,有语义mask的帧两者都用
- 获得了边界准确的语义mask
四、多目标SLAM
首先说明Surfel-based 模型:
(坐标,法向,颜色,权重,半径,两个时间戳)此外还有类别Cm,目标标签lm,状态指示Stm(静止或运动), 以及刚体位姿R和t
1.追踪
跟踪是一板一眼毫无创新地解决了,即融合已有的ElasticFusion面元, 结合surfel的表达和intensity构造优化。
帧间位姿跟踪纯粹基于Intensity以及ICP的几何深度点云匹配:
其中ICP误差:(基于深度图)
v应该是surfel模型中的v,对于每一个面尽量重叠,而重叠的方式则是让面间距离最小。因此该公式就比较直观了。
RGB误差:(基于RGB图)
即将上一帧对应位置的强度通过变换投影到当前帧,构造一个基于intensity的BA (貌似基于颜色的BA都是只考虑灰度信息)
2.融合
将当前帧的信息融合到之前建好的图中.
五、分割
这就是本文的重点了: 数据关联的构建 基于Co-Fusion,不是在3D完成数据关联,而是在2D下进行model-to-segment的关联。给定这些关联后,新的帧被分割结果masked,仅仅数据的subset被fused到已有的模型中 (这里的subset应该是处于mask中的面元吧?)无关数据不进行处理,提高处理速度
系统设计pipeline:
- 双线程实现, 由于分割平行于tracking和fusion线程,于是需要有同步机制。
- 设计了一个队列。 最终有一个400ms delay。 实现30fps
对于没有语义分割的帧,用mask-less 帧的边界与已有的模型做关联
实例语义分割
基于Mask-RCNN,使用resNet提特征,在特征图上加了一个语义分割分支
几何分割
基于几何的分割感觉也很有前景。对于人类来说大部分的分割实际是几何完成的。在人类知道该物体是独立的物体之前,并不需要该物体的语义信息。相反,语义信息是建立在分割的基础上的。
[13, 22, 42, 45, 47] 专门研究了 RGBD帧的几何分割问题。 基本上在2013-2015年的文章。该部分已经成熟。
即它与语义的结合才是现在比较好的方向,同时结合上动态过程。
基于大多数目标是凸的的假设,则边界一般在凹处或者深度不连续处
可以定义两个参数分别考虑深度的连通和凹的程度,定义一个阈值和它们两的权重:
示例分割结果提出的边界:
然后对其去除back-ground得到
融合二者的分割
当没有语义masks的时候,几何标签直接与存在的模型做关联
当有语义mask 时:
-
将几何标签投影到mask:
即判断二者重叠区域最高的作为关联。 在实验里设定 65%的重复度。
多个components可以被mapped到同一个mask,然而一个component只map到一个mask。
-
将mask 投影融合到模型中
将物体labels投影到相机视野中,如f图所示。然后将其与几何分割的components之间做1.中同样的重合度比较。上图通过OpenGL渲染所有模型来生成
对于没有成功匹配上的剩余的components,如1中直接与labels做overlap.
六、实验评估
建图和跟踪部分都基于 co-fusion和elasticfusion. 专门挑选了动态环境,使用AT[全局]、RP[忽略drift] RMSE来评估。
其实挑了三段 TUM数据集,用5个系统跑了一下,同时将其中部分人为拆成 slightly dynamic和highly dynamic
重建性能
YCB Object and Model Set [4]里面提供了常用物体的数据库,可以用来做重建的评估。
就找了个瓶子跑了一下试试,也没有跟其他的比 (哈哈哈博主观点相当犀利)
最终性能表现
2块GPU Titan X+cpu core i7 3.5GHz,1块做实时分割,一块做slam。 ( 实际测试的时候可以先分割好然后跑数据集)
最后论文总结了一下本文需要改进的三个地方:
- 限制于mask-rcnn识别物体的种类,训练集意外的物体无法识别。
- 限制于刚体的跟踪。
- 过小的物体提供不了足够的几何信息。
语义分割+几何分割的点子是很好的!几何分割是比较成熟的东西了,速度也快。将该信息融合到已有的静态地图中去,辅助机器人完成路径规划。
转自知乎 原野寻踪 大佬的专栏,很有启发意义:
引用
https://zhuanlan.zhihu.com/p/62059382