方法

DepthCrafter1

将视频深度估计定义为一个条件扩散生成问题,对条件分布 $p({d}|v)$ 进行建模

采用成对的真实与合成数据集对网络进行三阶段的训练

对长序列进行分段估计并无缝拼接

Stable video diffusion model

Diffusion model的具体实施

潜在空间变换

使用VAE转换到潜在空间

对深度视频序列复制为三通道

预测仿射不变相对深度,但是预测的深度序列共享相同的尺度和偏移,保证时间一致性。

条件生成

图像潜在表示与加噪的深度序列潜在表示链接输入UNet

用CLIP将视频帧以帧对帧的方式通过交叉注意力嵌入去噪器

训练

数据集构建

真实数据集从大规模双目视频中进行构建,应用先进的视频立体匹配方法生成时序一致的深度序列。获得了约200K个视频深度序列,序列长度为50-200帧。

合成数据集从DynamicReplica与MatrixCity数据集构建,包含约3K精细的深度图,序列长度为150帧。

长视频序列的预测挑战

长视频序列难以保证时间一致性

Stable video diffusion只能生成25帧的视频,对齐进行微调内存开销太大。

三阶段训练

第一阶段:用大规模真实数据集进行训练,使模型学习视频到深度的估计生成能力,序列的长度在[1,25]之间随机采样,使模型学习到不同视频长度生成深度的能力

第二阶段:只用大规模真实数据对时间层进行微调,同时序列长度在[1,110]之间采样。因为时间层对序列长度较为敏感。

第三阶段:对空间层使用合成数据集进行微调,固定序列长度为45帧。提高网络细节的预测能力

对极长视频进行推理

DepthCrafter2

首先将极长序列分割为重叠的子序列,对每个子序列进行深度的推理

对于重叠部分,用前一个子序列去噪后的潜在表示与噪声相加,对后一个子序列的重叠部分进行初始化,从而保证深度分布的尺度和偏移

然后将两个子序列进行无缝的拼接。在重叠的部分分别采用插值权重$w_i$和$1-w_i$ 对重叠帧的潜在表示进行插值,$w_i$ 从1到0线性减小。

最后通过解码器对序列进行解码。