主页:home page
1. 概述
导读:在光流监督训练网络中,其需要的真实光流数据是很难获取的,因而合成数据在基于CNN的光流估计任务中扮演了很重要的角色。但是在合成数据上进行训练就很大限制了其在其它类型数据场景的适应性(像FlyingChairs这样的数据本身就具有局限性),也就是泛化能力比较低(或由于预训练的原因未收敛到更优值)。对此文章将target domain的数据与光流训练数据的生成组合起来,在数据生成中使用可训练的参数(不同参数采样表示了不同的数据处理,如仿射变换/模糊等)来变化数据,再用变换之后的数据去预训练光流网络,这里数据生成的参数选择是在target domain上做度量(average end-point error,AEPE)来决定的。这样使得预训练的网络在其训练过程中就兼容了target domain中的数据特性,从而提升了网络在target domain数据集上的性能表现。文章的使用比较新颖的方式提出了数据增广的策略,目前(2021.07.12)代码还没有开源。
将文章提出的光流网络训练策略与传统方法(在FlyingChairs/FlyingThings等数据集上预训练,之后再在target domain数据上finetune)进行对比,见下图所示:
可以从图中看到文章是对预训练的数据部分进行了改动,通过一组可学习的参数(如仿射变换参数)去变换输入的sample从而产生预训练数据集,从而实现合成光流数据监督训练。那么怎么使得产生的数据去契合target domain呢?这里需要通过一个度量函数(average end-point error,AEPE)去判别那个可学习的数据变换参数是最好的,从而完成光流网络预训练任务。预训练完成之后在对应的数据集(Sintel/KITTIes)上进行finetune,将得到的结果与传统方法得到结果进行比较见下表所示:
2. 数据pipline
2.1 总体流程
文章提出的合成光流数据的流程见下图2所示:
在开始进行数据合成之前会先选择1张背景图片,以及 K K K个前景图片 I 1 k I_1^k I1k(后面会使用mask在其中进行扣取像素),那么接下来合成的步骤被描述为以下的几个步骤:
- 1)step1:在给定的图像 I 1 k I_1^k I1k上使用随机多边形或是instance mask的形式选择前景mask,得到的mask标记为 M 1 k M_1^k M1k;
- 2)step2:使用刚性变换/仿射变换/双线性网格变换方式去对上面一步中产生的mask区域进行扭曲得到对应的光流信息 W k W^k Wk,得到光流信息之后就可以将其变换到对应另一对图像中去
I 2 k = f ( I 1 k , W k ) I_2^k=f(I_1^k,W^k)