《论文阅读》Generalizing to the Open World: Deep Visual Odometry with Online Adaptation

留个笔记自用

Generalizing to the Open World: Deep Visual Odometry with Online Adaptation

做什么

Monocular Visual Odometry单目视觉里程计
在这里插入图片描述
相机在运动过程中连续两帧之间会存在overlap,即会同时观测到三维世界中的某些场景以及特征点。而这些场景特征点会投射到2D图片上,通过图片的对齐或者特征的匹配,可以找到前后图片上特点或patch的对应关系。利用相机的成像几何模型(包括相机参数)以及约束,可以求出两帧之间的运动信息(旋转矩阵R和平移t)。这样我们就可以得到一系列的相机相对变化矩阵,从而可以推出相机的姿态信息。

做了什么

《论文阅读》Generalizing to the Open World: Deep Visual Odometry with Online Adaptation_第1张图片
由于不同数据集之间存在域的差异性,这里推出一个场景无关的视觉里程计结构,方法从光流和深度来解决位姿,而单视图深度估计通过在线学习的不确定性随着新的观察而不断改进

怎么做

《论文阅读》Generalizing to the Open World: Deep Visual Odometry with Online Adaptation_第2张图片
整体结构分为三个部分,FlowNet光流部分,DepthNet深度部分,Refine强化部分
整体流程是这样的,首先输入是两帧图像,关键帧Ik和当前帧It,FlowNet初始化两帧光流图,并预测一张Photometric uncertainty光流不确定图,也就是一个光流置信mask,然后利用FlowNet得到的光流图来初始化两帧图像之间的对应关系,得到相对位姿转换T。
DepthNet也一样,估计关键帧的深度图和深度不确定图,利用贝叶斯框架更新这张深度图,这里需要用到FlowNet提供的信息,是这个Densified depth Patch,后面会解释,这个是一个三角形三角剖分模块。
最后,使用优化的深度D和光流F作为伪label来进行两个Net网络的监督
接下来是具体细节部分
首先是第一部分FlowNet部分
《论文阅读》Generalizing to the Open World: Deep Visual Odometry with Online Adaptation_第3张图片
这里用的baseline是《RAFT: Recurrent All-Pairs Field Transforms for Optical Flow》论文中的结构,一篇光流的best paper,太顶了
《论文阅读》Generalizing to the Open World: Deep Visual Odometry with Online Adaptation_第4张图片
这里就用这个结构来计算两帧图像的光流图,但由于这里的光流误差会直接大程度影响位姿初始化,比如存在一些运动较小的情况,所以这里加了一层限制
在这里插入图片描述
这里的F就是Flownet生成的光流图,这里是一个计算新关键帧的方案,也就是为了防止遇到前面那种运动较小的情况,如果满足这两个阈值限制,就将新的帧转换为关键帧
然后就是利用光流得到图像上点的对应关系,通过RANSAC求解得到相对位姿转换T
在这里插入图片描述
这里的K是相机内参,然后再解决一种可能存在的非常小的平移或者纯旋转情况,这里采用了最小化重投影误差
在这里插入图片描述
这里的Dk是深度图
至此,通过对齐得到了尺度合理的初始位姿转换T,这也就是里程计任务目标,接下来是对这个进行强化
第二部分,DepthNet部分
这里在统一的贝叶斯框架下对深度估计和更新进行建模,初始化深度图的方法很简单,首先对单帧来说,每个点的深度视为其像素值的倒数
在这里插入图片描述
将好的逆深度测量值建模为围绕真值的高斯分布,而不好的逆深度视为观测噪声,然后初始化这个点的内联概率
在这里插入图片描述
这里的T2就是好测量的方差
为了寻找每帧的Zi的最大后验概率,这里是用Beta分布和高斯分布进行近似
在这里插入图片描述
这里的ai是bi是beta分布的参数,u和σ是好观测的高斯分布的均值和方差
最后,得到深度图
《论文阅读》Generalizing to the Open World: Deep Visual Odometry with Online Adaptation_第5张图片
关键帧的深度通过单张图像估计和逆深度的不确定度来进行初始化
至此,得到深度图
然后是强化部分,前面得到了相对位姿转换T和2D图的对应关系,后续就可以使用这两者来优化深度图
在这里插入图片描述
dis是距离函数,表示di和相机光线L的距离,这个相机光线是由2D对应得到的,这里的d就是深度值,光线就是前面图中的对应线
《论文阅读》Generalizing to the Open World: Deep Visual Odometry with Online Adaptation_第6张图片
这里的Triangulated depth patches是对每个深度点做3×3patch的局部统一结果
最后是对这些进行误差优化,也就是损失定义
在这里插入图片描述
首先是光流误差,这里的Γt是光流不确定图,可以理解作为一个正则项,It是当前帧的图像,It^是对原图进行改变的结果
在这里插入图片描述
可以理解成通过位姿转换T深度D相机内参K来进行转换,理论上如果光度完全相同的话,转换结果应大程度上接近,所以设定了这个LOSS,配合光度不确定图来进行光度检测,然后用高斯-牛顿层来进行优化
《论文阅读》Generalizing to the Open World: Deep Visual Odometry with Online Adaptation_第7张图片
这里就是计算逐点的光度损失
在这里插入图片描述
然后计算D和T的一阶导数
在这里插入图片描述
估算增量
然后是正则损失Lsmooth
《论文阅读》Generalizing to the Open World: Deep Visual Odometry with Online Adaptation_第8张图片
这里的G可以指代深度图,也可以指代光流图
然后是深度损失Ld
在这里插入图片描述
这里的σ是深度不确定图,µi是更新后的深度值z’
最后是光流损失Lflow
在这里插入图片描述
这里的F就是光流图
最后将所有LOSS相加,优化depthNet和FlowNet
在这里插入图片描述

效果

《论文阅读》Generalizing to the Open World: Deep Visual Odometry with Online Adaptation_第9张图片
这里是用Cityscapes数据集进行训练,然后再KITTI Odometry数据集进行测试,可见的是保持了相当高的鲁棒性

总结

1.可以理解成一个域适应的VO框架,现在感觉这个领域非常缺少feature+regression的做法,可能是这种做法要求的精度特别高而不适用,光流的这种借鉴做法值得学习

你可能感兴趣的:(深度学习,计算机视觉,自动驾驶,深度学习,机器学习)