DepthCrafter
方法
将视频深度估计定义为一个条件扩散生成问题,对条件分布 $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帧。提高网络细节的预测能力
对极长视频进行推理
首先将极长序列分割为重叠的子序列,对每个子序列进行深度的推理
对于重叠部分,用前一个子序列去噪后的潜在表示与噪声相加,对后一个子序列的重叠部分进行初始化,从而保证深度分布的尺度和偏移
然后将两个子序列进行无缝的拼接。在重叠的部分分别采用插值权重$w_i$和$1-w_i$ 对重叠帧的潜在表示进行插值,$w_i$ 从1到0线性减小。
最后通过解码器对序列进行解码。