论文地址:https://arxiv.org/abs/2207.11075
开源代码:https://github.com/megvii-research/RealFlow
Introduction
近年来, 基于深度学习的光流算法实现了很高的性能和运算效率。实现这些深度学习方法的一个关键因素是其训练数据集。我们认为, 光流的数据集应具有以下四个关键特性:
1) 有标签数据对的数量多;
2) 光流标签的准确性高;
3) 图像的真实性高;
4) 运动的真实性高。
然而, 我们发现现有的光流数据集很难同时满足这四个特性。
图1. 本文的方法与现有光流数据集生成方法进行对比
如上图所示, 现有的数据集生成方法, 如: FlyingThings[1], AutoFlow[2], 主要使用生成的运动对前景进行裁剪粘贴以获取训练数据对。它们都能够生成大量的数据对同时能够保证光流标签的准确性。但是它们无法满足图像和运动的真实性: 图像不是真实存在的, 运动也不是真实场景中的运动。
近期, Depthstillation[3] 提出从单张图片生成光流数据集: 随机生成一个变换关系, 并根据深度和分割将图像变换成一个新的视角, 以此生成数据对。这样的方法能够一定程度上满足图像的真实性, 但其运动并不是真实的。
针对光流数据集真实性的问题, 本文提出了一个基于EM算法的方法, 从真实的视频数据生成包含真实运动的光流数据集。基于我们生成的数据集, 我们同时实现了强监督和无监督光流的 state-of-the-art 性能。
Method
图2. 本文方法的框架
我们的方法主要基于EM算法, 每次迭代中有两步:E-step和M-step。在 E-step 中, 我们使用光流估计网络和真实视频数据进行数据集生成。在 M-step 中, 我们使用生成的数据集训练光流网络. 经过训练的光流网络的性能能够得到提升, 因此, 我们将它用在下一次 E-step 中进行数据集生成。
经过不断迭代, 光流网络的效果能够得到提升, 同时生成的数据集质量也会更好。这个迭代算法的核心是数据生成的模块。为此, 本文设计了 Realistic Image Pair Rendering (RIPR) 方法来实现数据生成。
图3. 一个简单的 forward warping 样例
上图是一个简单的 forward warping 的例子,通过 forward warping 能够保证生成数据对中光流标签的准确性。但是这个生成过程中存在两个问题: 前景和背景重叠处的遮挡问题(图3中绿色区域), 前景移动后留下的空洞问题(图3中灰色区域)。
- 针对遮挡问题, 我们使用 splatting[4] 的方法来解决: 根据深度估计的结果在发生遮挡的时候计算融合权重——深度较近的前景像素权重较大而较远的背景像素则权重较小。
- 针对空洞问题, 我们采用的是双向填补的方法——使用的内容来对空洞区域进行填补。
下图为本文 RIPR 方法的细节实现过程。
下图为使用 splatting 和本文的双向空洞填充方法的结果。可以看到, 对于遮挡区域, 如果直接简单相加, 效果会很差; 使用 softmax 或者 max 融合会得到较好的结果。对于空洞区域,使用本文的填充方法能够很好地将大片的空洞区域填充完整。
图5. splatting和空洞填充的结果
Experiments
图6. 本文的方法生成的数据对
和现有的数据集生成方法进行对比
为了和 Depthstillation[3] (表中 dDAVIS 和 dKITTI 的方法)进行公平比较, 我们使用了同样的源视频数据 DAVIS 和 KITTI-test 生成数据集并训练相同的网络 RAFT, 在 KITTI 2012 和 2015 的验证集上进行验证,实验结果如上所示,本文的方法比Depthstillation的效果更好。
和无监督方法进行对比
在使用和无监督方法相同的源视频数据进行数据集生成的情况下, 将本文的方法和无监督方法进行对比。在 KITTI 2015 的验证集上, 本文的方法 EPE为2.16 比 SMURF 的 EPE=2.00 稍差。这是因为 SMURF 使用了多帧进行训练, 而我们只使用了两帧。SMURF 使用两帧训练的情况下 EPE 为 2.45, 这也能够证明本文方法的有效性。
和强监督方法进行对比
我们首先使用我们生成的 RF-Ktrain 数据集进行预训练, 然后在 KITTI 2015 训练集上进行 finetune, 再提交线上 benchmark 进行测试对比。结果发现, 我们的方法达到了比以前的方法更高的性能。
大数据集的对比实验
为了训练出具有较好泛化性的网络, 我们使用 ALOV 和 BDD100k 数据集中的视频数据生成了大量的光流训练数据, 即 RF-AB。和现有的大数据集相对比, 我们在真实数据集 KITTI 上的验证效果较好, 在渲染数据集 Sintel能得到比较均衡的结果。其中 C+T 表示 flying chairs 加 flying things 数据集,是常用的渲染数据集, 通常被用作光流网络的预训练。
训练不同的光流网络
我们使用所生成的数据集训练了不同的光流网络,包括 IRR-PWC, GMA 和 RAFT。为了证明本文方法的有效性, 我们也使用了 Sintel 的视频生成了数据集。从实验结果可以看出, 本文生成的数据集能够提升不同网络的性能。
消融实验
我们对生成数据集过程中的一些参数进行了消融: Render 表示是否使用 RIPR 生成新的图像; Depth 表示 splatting 过程中的权重 map 选择; Splatting 表示是否遮挡融合的方式; Hole Filling 表示空洞填充的方式; Range of a表示扰动系数的范围选择。
迭代次数
实验发现, 经过多次迭代, 效果能够得到逐渐提升。其中, Iter.1*4表示使用Iter.1的数据集训练4倍长的时间。
Conclusion
我们提出了一种基于 EM 算法的迭代框架, 其能够有效地从真实视频中生成大量的光流训练数据。针对数据生成过程中的遮挡和空洞问题, 我们设计了 RIPR 模块进行处理。基于生成的数据集, 我们达到了无监督和强监督的 state-of-the-art 性能。
来源:旷视研究院
作者:R
专栏文章推荐
- 提速还能不掉点!深度解析 MegEngine 4 bits 量化开源实现
- ECCV 2022 Oral | 自监督学习与量化协同互助
- 旷视天元 MegEngine 开源 CUDA INT4 量化源码实现
- 旷视研究院荣获 2022 ACM-Multimedia ViCo 比赛冠军
欢迎关注旷视研究院极术社区专栏,定期更新最新旷视研究院成果。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
加入旷视:career@megvii.com