阅读一篇论文,学习一个稠密的可优化的用于稠密视觉SLAM的表达。
在3D感知系统中,几何表达仍然是一个关键研究课题。稠密的map能够捕获完整的曲面形状,而且能够用语义标签增强,但是它们的高纬度特性使得存储和计算变得非常庞大,而且不适合严格的概率推理。基于稀疏特征的表达能够避免这些问题,但是只能采集部分场景信息,而且仅仅主要用来定位。
作者提出了一个稠密(compact but dense)的场景几何表达,输入一个强度图。方法适用于一个基于关键帧单目稠密SLAM系统。尽管每个带有code的关键帧能够产生一个密度图,code能够有效的联合位姿变量和重叠的关键帧产生的code联合优化。
1 介绍
之前的论文CodeMapping就是这个文章的改进,所以网络结构都特别像,这里就看看思路,不具体分析了。
作者的目标是通过在深度图像上训练自动编码器来实现密集场景几何体的更通用的紧凑表示。虽然一个简单的自动编码器可能会过度简化自然场景的重建,但关键创新点是在强度图像上调整训练条件。作者方法计划来适用于通用且高度可伸缩的基于关键帧的SLAM范式,其中场景地图由一组选定和估计的历史摄影机pose以及相应的图像和补充局部信息(如深度估计)组成。
创新点有两点:
- 通过在强度图像上调节depth auto-encoder,得到一个紧凑和可优化的稠密几何的推到。
- 第一个实时目标单目系统的实现,实现了运动和密集几何体的紧密联合优化。
2 通过强度调节的深度自动编码
网络结构与UNet很像,网络先用图像预测出每个像素的不确定性 b b b,之后在下层网络预测出一个均值 μ \mu μ,然后推出一个根据输入depth的对应cost。
其实这个loss的来源可以理解为正态分布,预测的不确定性就是方差,越不确定方差就越大,均值就是最终输出的depth,这个值越大,说明预测出的depth越贴近输入的depth。
这个cost的负对数就是loss,下面这个loss已经去除了常数项。
论文给出的是学习一个深度编码器,所以在训练期间,网络前面用的是稠密的,用来编码。作者也论文了,当输入的code(其实就是下层网络最小的那块)为0的时候,也就是单图预测depth,同样有效。
3 网络推断——N帧SFM
提出的深度网络同样可以用于构建一个来自于S发M的稠密的N帧结构。最开始code和pose都被初始化为0。对于两个具有重叠视角的图像,可以算出深度图,并得到光度和几何误差,就是将图像warp后,图像误差和深度误差。然后优化这个误差,更新code和pose。
4 实验
当code为0时候,从一个输入图像也能算出loss,经过优化后,精度能高一些。
重建的一些效果。
5 总结
其实这个论文已经不算是最新的了,之前的CodeMapping就是他的改进,主要就是想办法训练出一个深度编码器,输入是一个图像和一个几何编码,这个编码也可以由深度学习得到。然后再预测出深度信息。
实际上,我并不确定换一个深度学习对输入的depth进行编码能否对这个有影响。如果最后还是要整体再训练的话,那也不能完全把编码器这部分单独拎出来,毕竟输入的code都只是一种潜在的描述。