Advertisement

twice论文-深度估计-DEEPV2D: VIDEO TO DEPTH WITH DIFFERENTIABLE STRUCTURE FROM MOTION

阅读量:

使用可微分的sfm求得视频中的深度

0 摘要:

探讨了深度学习与图像几何原理的融合,在整体学习过程中实现了端到端的学习方法。具体来说,则分为两步:一是运动估计技术的应用;二是深度估计模型的设计。

1 介绍:

可以说从视频中获取深度图。传统的途径通常采用结构光法(SfM)来进行优化计算以确定物体三维结构以及相机运动参数。这些参数随后被整合到多视图几何模型中以实现全面的深度估计。在3D重建任务方面表现出良好的效果。它们有哪些优势呢?它们能够通过单幅图像直接学习深度信息并且采用可解码层设计能够更加高效地提取特征。然而,在实际应用中直接基于多视图几何图像进行网络训练往往面临挑战(例如帧间关系难以捕捉)。因此建议将其多视图几何知识融入到网络架构或损失函数设计之中会是一个较为合理的选择

主要致力于将神经网络模型的强大力量与多视图几何信息相结合;为了估计深度

2 相关工作:

sfm:针对小图片集设计的一种方案,在低温环境下以及存在遮挡区域和不同光照条件下可能会导致图像中出现噪声并造成关键细节丢失。

在几何学与深度学习的结合中, 许多设计都源自于几何原理的有效应用. 具体涉及两大核心问题: 一是深度估计问题(即推断物体到相机的距离), 二是运动估计问题(即推断物体在场景中的运动轨迹).

最初是基于立体结合理论构建了一个端到端的系统:首先利用二维卷积神经网络提取出关键特征,并在此基础上构建了一个代价向量;随后将这一代价维度叠加至原有的二维特征中以形成三维空间,并实现其间的匹配与规范化处理;这个思想完全源自于立体几何学的核心理念。接着将其应用至多视图场景中的三维结构估计;然而这些系统仍需依赖相机姿态作为输入信息;但在实际视频数据中我们并不掌握相机的具体运动轨迹

近年来针对运动估计问题的研究比较多,常用的网络架构多采用最小二乘法进行优化。早期的方法通常基于单帧图像间的运动估计,在多帧图像序列分析方面有进一步提升的空间。

深度与运动:许多工作都是以几何信息作为自我监督的目标来进行训练的。估计深度与运动也可以很自然地被视为一个非线性最小二乘问题,在此之前已有诸多相关研究工作进行探讨。我们也是基于这一思路,在采用Flow-SE3架构将二维关系直接编码为六自由度相机参数的基础上进行研究

3 方法:

具体来说,我们将整个问题划分为两个独立的部分:深度估计模块和运动估计模块.其中,深度估计模块主要负责从相机的姿态信息中生成新的三维结构信息;而运动估计模块则通过已知的深度信息推导相机的姿态变化.在两者之间不断迭代计算以优化结果.

3.1 相机的几何:

Pi(X)负责将3D点映射到2D平面,并且这里所涉及的是相机的内参。通过内参能够实现世界坐标系下的点转换为图像坐标系下的位置。

该公式描述了两张图像间特征点之间的对应关系,并主要涉及相机的姿态参数G

3.2 深度模块

接收多帧图像序列I,并配合相应的姿态信息G生成密集深度图D*。该系统主要包括三个核心模块:首先进行2D特征提取;其次完成代价向量的投影计算;最后实现三维立体匹配过程。

2D特征提取:

使用的堆叠的沙漏型网络进行提取2维的特征,得到

Fi_{}

代价向量的投影

值得注意的是,在传统方法中计算的代价(两个匹配点之间的差值)并不适用于当前场景。这种特定类型的代价向量具有独特性,在已知一个关键帧I中像素的位置及深度信息后,并结合相机的外参数信息(Extrinsic parameters),能够计算得到该像素在帧J中的位置坐标即为此代价向量。实际上这部分的理解还需进一步验证。

z代表深度,在本研究中我们基于假设假设有D个不同的深度值可供选择。x代表像素的位置坐标,在此框架下GI和GJ属于外参参数组。F则是一个可微分的双线性采样算子,在特征图中通过投影位置来获取样本点的采样操作。经过分析我认为这个代价向量实际上反映了特征图中的特定特征信息。最终得到的代价向量维度为H×W×D×C的形式其中D指的是所选深度的数量这表明该向量包含了关键帧i生成的关键帧j所需的所有特征信息。随后我们将每个单独计算得到的代价向量与关键帧j本身的代价向量(即特征图)进行拼接形成一个更高维的空间结构H×W×D×2C这样就能够更全面地评估不同候选匹配的质量水平了这个过程的具体实现细节仍需进一步探讨。

3D匹配网络

本质上就是这个概念。具体来说,我们将前N-1帧产生的代价向量与关键帧I的代价向量进行组合,生成N-1个H×W×D×2C的代价张量。随后,我们采用三维卷积层完成这一系列数据的立体匹配过程:由于理论上这些特征应当是相同的,如果深度估计准确的话,匹配结果会更加可靠;而这里提供了D个可能的深度选项,对于每个像素而言,我们选择对应的最大概率值所对应的深度作为最优结果,从而提升整体精度;最后通过三维卷积操作得到一个H×W×D×C的整体特征图,再用此图进行一次三维卷积运算即可得到各个位置处的深度估计值;最后我们应用softmax函数对这些估计值进行概率分布建模,从而得到最终的深度图

3.2 运动模块

输入深度信息、相机的姿态信息、计算得到的扰动增量;用于更新姿态的状态;采用最小二乘法作为优化手段。

初始化:

通过引入一个网络模型来进行姿态初始化。随后,在该基准下计算视频中其余各帧相对于基准的关键位姿变化。选定其中一个帧作为基准关键帧,并令其位姿矩阵归一化。

特征提取:

特征提取过程将每帧图像映射到一个具有丰富特性的特征图上,并且这些特征提取器的权重在所有帧上共同作用。

误差项:

考虑两个连续帧Ii和Ij,并分别具有其对应 camera 的姿态矩阵Gi和Gj。假设从这些图像中提取出相应的 feature maps Fi 和 Fj,并已知第一个 frame Ii 中某一点 i 的深度信息,则可以通过 camera 的姿态矩阵 Gi 来确定第二个 frame Ij 中对应 feature Fj 的 feature point F_j^的位置关系。当摄像头正常工作时(即姿态估计正确),我们应有 F_j^ = Fi;若两者不一致,则说明 camera 的姿态估计存在偏差需进行优化。

我们通过连接Fj和Fj来构建一个较大的特征图,并将其输入到沙漏型的残差预测网络中。记为R(实际上这个残差应反映Fj与Fi之间的差异),由于相机姿态可能存在误差(即两者并不完全相等),因此我们需要计算此误差项并对其进行处理。具体而言,则是通过引入增量变量来描述这种扰动影响。随后的过程则旨在对这一差异进行建模或拟合,并利用这些模型参数来优化相机的姿态估计。补充说明:这里的残差流即为实际值Fi与估计值Fj之间的差异;随后的过程则旨在对这一差异进行建模或拟合(即建立两者之间关系的数学表达式)。为了实现这一目标,在每一步迭代中我们都需更新这些模型参数;最终的目标则是让这种拟合结果逐渐逼近真实差异(即差距越来越小),从而获得更为精确的姿态估计结果)。

rk是在像素位置xk预测出的残差流,在这一位置上预测出的深度值为zk。为了生成用于后续处理的对象检测结果,在网络训练过程中会根据误差信息动态调整各像素点对应的权重值。这些权重值通过sigmoid激活函数将权重值映射至(0,1)区间生成权重掩膜图,并用于确定每个像素点误差在目标损失中的重要性。

优化目标:

设定优化目标为对误差项进行优化,并以最小化误差为目标,在此基础上赋予每个误差项相应的权重系数。其数学表达式为:E = \sum w_i e_i^2

作者在确定帧对数时采用了两种方案来实现这一目标。其中一种方案是基于全局姿态下的优化方案;另一种方案则是基于关键帧的姿态优化。

全局的姿态优化:

在全局范围内进行姿态优化时,则是通过各帧间的相互作用来设定优化目标;在此基础上,在每一步迭代中我们关注的是相邻两帧之间的姿态调整;基于此,在处理连续的多帧序列时(其中包含N个连续帧),则会有N*(N-1)/2个独立的对比关系需要考虑;因此,在实际应用中,默认情况下会假定每一时刻都有一个深度相机或者对应的深度估计模型与之配合使用。

姿态优化的关键在于选择一个基准点作为关键框架I1,在这种情况下,在优化过程中仅考虑当前框架与其余N-1个框架之间的误差项。即固定该框架的姿态不变,在求解最优解的过程中无需考虑其变化带来的影响。

i _{1}

(这个相当于公式里的

i _{i}

),那么每个误差项就变成了

e_{k}^{ij}

,换句话说,仅涉及单一的帧j的姿态变化,因此我们仅需关注关键帧的深度信息

损失优化层:我们使用高斯-牛顿球求解目标函数的二阶最小来更新

i

,然后使用反向传播来更新权重。

3.3. 整体的体系

就是深度和运动姿态更替估计,使两个越来越准确

3.4 监督学习

深度监督和运动姿态的监督

4 实验

就具体来说,在sfm中采用的所有方法都无法获得绝对深度值,仅能获得相对深度信息。我们可以采用尺度匹配深度的方法来实现与其他方法之间的对比。

4.1 深度的实验

和单张图片和多视图视频的深度估计分别做了比较

4.2 跟踪的实验

继续改正

全部评论 (0)

还没有任何评论哟~