作者丨左家星@知乎
来源丨https://zhuanlan.zhihu.com/p/382746788
编辑丨3D视觉工坊
大家好!在这篇文章里我将为大家简要介绍我们在ICRA2021上发表的论文"CodeVIO: Visual-Inertial Odometry with Learned Optimizable Dense Depth" ,很荣幸这个工作获得了同行评审专家的认可,获得了机器视觉最佳论文提名。
Demo 链接:https://www.bilibili.com/video/BV1Mf4y1e7c6
论文:https://arxiv.org/abs/2012.10133
Motivation首先,实时的单目重建在很多种场景中都是需要的,如 AR/VR,自主导航机器人等。但是,仅依赖于单目的系统无法重建出具有真实尺度的场景。CodeVIO希望通过使用单目相机和IMU进行实时的稠密重建。
图1. ARCore Depth Lab 中展示的稠密深度的应用场景
CodeVIO的主要贡献在于提出了将可优化的网络学出来的稠密深度与轻量的EKF-VIO共同估计的方式,并为提高系统的效率和精度提出了很多算法模块。CodeVIO中紧耦合了深度神经网络和VIO状态估计器,可进行有尺度的稠密重建。
需要明确的是稠密深度图的维度是很高的,逐点地调整稠密深度图是非常耗时的,如224*224的图像就有约5万个深度值需要调整。为了在轻量的EKF滤波器中,调整稠密的深度图,我们借鉴了CodeSLAM[1]的思想--将稠密的深度编码成低维度的潜变量Depth Code,并通过调整Depth Code来调整稠密深度图。
图2. CodeSLAM中将稠密深度表示为低维度的Depth code c
图3. CodeVIO 预测初始的稠密深度
CodeVIO主要包括CVAE和MSCKF VIO[2]两部分。CVAE的输入为单目图像和从VIO获得的Sparse Depth (由于IMU的使用,Sparse Depth是有尺度的,因此CVAE可预测出有尺度的稠密深度)。通过使用图像和Sparse depth中的信息,并使用Zero Depth Code可以预测出初始的稠密深度。
在 VIO 状态估计器中将对初始的稠密深度进行调整,这是通过调整Deth Code实现的。状态估计器中同时调整导航状态和Depth Code,并输出下一时刻的Sparse Depth, Updated Depth Code,以及准确的IMU Poses。将 Updated Depth Code 放到VAE中,可解码出更加准确的稠密深度。CVAE接收来自VIO的Sparse Depth 和 Updated Code, VIO 中使用CVAE预测出的稠密深度和深度不确定性,因此系统是一个紧耦合的闭环。

图4.CodeVIO在VIO状态估计器中调整Depth Code,并从调整后的Updated Depth Code中解码出调整后的稠密深度
Lightweight Estimator在状态估计器中,除了一般的导航状态(包括IMU State, Sliding window中的Poses, 相机内外参等)外,我们还会估计一些关键帧的Depth Code ,并仅仅使用稀疏的测量来有效地更新Depth Code,以调整稠密的深度。我们使用的稀疏测量进行状态更新,包括三种类型:特征点重投影误差更新,特征点的稀疏几何更新(网络预测出的稠密深度图中有特征点的深度值观测),深度图的一致性更新(不同帧中同一点的深度值应该一致)。使用稀疏的测量更新深度码之后,稠密深度的质量可以有大幅度提升(详情见论文的实验部分)。
图5. 使用稀疏测量更新Depth Code之后,解码出的稠密深度误差更小
Fast Network Jacobian上面提到的稀疏测量中的后两种,即特征点的稀疏几何更新与深度图的一致性更新,都需要调整Depth Code,因此需要稠密深度图对Depth Code的雅可比(即神经网络Decoder的雅可比)。现有的深度学习库中如Tensorflow, Pytorch并没有为计算雅可比矩阵而优化设计,而是依赖于Back propagation进行梯度反传来计算梯度训练网络(这里“梯度”表示单个像素对其他量的雅可比,用雅可比矩阵表示整幅图像对其他量的雅可比)。Back propagation经过链式法则计算,十分的慢,并不适合快速计算出神经网络的雅可比。因此,我们提出使用有限差分的方法计算出神经网络的雅可比,不需要Back propagation,仅需要Decoder网络的一次forward pass即可。下式中
CodeVIO 提出了一种新的范式,可以紧耦合地估计压缩后的稠密深度和EKF-VIO。来自于VIO的稀疏深度为CVAE神经网络提供了尺度,并大幅度提高深度预测质量。系统仅使用稀疏的测量即可更新稠密的深度图。此外,论文中还介绍了非常快速的基于有限差分的神经网络压雅可比矩阵计算方法。系统实时运行,可具有很强的泛化性(由于VIO的稀疏特征输入到网络,且在VIO状态估计器中调整优化网络预测的稠密深度图;我们仅在NYUV2数据集上进行网络的训练,而惊奇地发现系统可以在Euroc Mav 数据集上很好地工作)。当然CodeVIO 也有一些需要进一步完善的地方,比如我们只进行局部的dense mapping, 而 globally consistent dense mapping也值得探索。
图6. CodeVIO在神经网络完全未知的Euroc数据集上工作
1.M. Bloesch, J. Czarnowski, R. Clark, S. Leutenegger, and A. J. Davison. “CodeSLAM—learning a compact, optimisable representation for dense visual SLAM”. In: Proceedings of the IEEE conference on computer vision and pattern recognition. 2018, pp. 2560–2568.
2.A. I. Mourikis and S. I. Roumeliotis. “A multi-state constraint Kalman filter for vision-aided inertial navigation”. In: Proceedings 2007 IEEE International Conference on Robotics and Automation. IEEE. 2007, pp. 3565–3572.
3.^G. Huang, A. I. Mourikis, and S. I. Roumeliotis. “A First-Estimates Jacobian EKF for Improving SLAM
本文仅做学术分享,如有侵权,请联系删文。
下载1
在「3D视觉工坊」公众号后台回复:3D视觉,即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。
下载2
在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总,即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。
下载3
在「3D视觉工坊」公众号后台回复:相机标定,即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配,即可下载独家立体匹配学习课件与视频网址。
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~