What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?

Abstract

        神经网络的研究重点从算法的研究过度到合适(suitable)且大量训练数据的创建。传统的计算机视觉任务通过人工标注的网络数据来获得训练集。对于光流和场景流问题,由于无法人为进入每个像素精确光流场的限制,所以通过人工标注数据集的方法不可行。此论文提倡使用合成数据集来训练神经网络,并以此实现光流以及场景流的计算。此论文利用不同的合成训练集来训练神经网络,并评估了不同合成训练集对于网络泛化能力的影响。最后证明了在训练的不同阶段,使用不同类型的合成数据集,能够增强网络的泛化能力。

Introduction

        近期对人工智能研究的不断加深,研究的重点开始由针对特殊场景的设计方法转向更加通用的方法。传统的计算机视觉问题不需要任何训练集,属于无监督学习。现在主流的监督学习法则更依赖于训练集的数量以及质量。

        众多学者通过创建例如ImageNet,MS COCO ,CityScapes 来完成目标检测以及分类任务。NYU 数据集包含RGB-D 图片,并以此训练神经网络,使得从一张单一图片中估计出深度信息成为可能。

        本文发现:

        1.训练集不需要和现实场景相同,

        2.训练的不同阶段使用不同的训练集得到的效果   大于   单纯使用单一数据集,以及混合数据集。

        3.增强数据集的现实性,比如复杂的光照条件,不会显著的提高神经网络的性能,即使测试集中有光照条件。

        4.模拟相机在拍摄训练集中存在的缺陷,会提高网络对于此相机拍出照片的泛化效果。

3 Synthetic Data

        合成图片的关键在于我们可以控制虚拟世界,并以此得到光流真实值。
        第一种合成图片的方式为:挑选一张简单的场景,在此场景之上,添加一个动态元素。动态元素取决于学习的任务,例如,光流基于物体的旋转。
        第二种合成图片的方式为:通过图片建模来产生(可以通过渲染Sintel以及Monkaa数据集)。
        结合这两种方法也是可行的,例如Virtual KITTI (汽车可以在图中随意改变)

3.1 Randomized modeling of data


3.1.1 2D image pairs for optical flow: FlyingChairs

        What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?

        由于模拟相机运动的影响,背景也需要随机变换,因为运动的参数确定,所以光流真实值也随之确定

3.1.2 Synthetic 3D data for optical flow, disparity and scene flow: FlyingThings3D

        FlyingChairs只包含简单得2D仿射运动,无法包含来自场景中得深度信息,比如3D旋转,空间平移,以及相机运动。我们建立了FlyingThings3D来满足此。

3.2 Manual modeling

        使用人为建模获得合成图片(3D模型渲染法)

3.2.1 Monkaa

        和椅子数据集不同的是,通过此方式,训练数据直接由电影本身以一种确定的方式产生。此方式产生2部分数据集:
  1. 第一种为原始数据集(由3D艺术家建模完成),
  2. 第二种为自定义数据集,对原始数据集中的目标(object)进行收集,组合,animate操作,然后为object提供全新的环境以及运动信息。

        Monkaa数据集中包含非刚性运动以及复杂的动物皮毛。和Sintel数据集一样,也遇到了很多问题,例如焦距等。这些问题限制了可用场景的数量,使得这种方法不能随意放缩以产生更多数据。

3.2.2 Driving

        通过车载摄像头拍出的照片数据集和其他数据集由明显的不同。使用广角镜头以包含更多数据,场景运动受到车载前置摄像头的控制。大多数场景都是静止的,每张照片中的布置也都差不多。通过创建类似于KITTI的数据集,使神经网络在此数据集上进行微调,可以给此神经网络先验知识,大幅度提高在KITTI上的表现。

3.3 Data augmentation

        通过对原始数据进行细微的变换。它是建立在学习算法不能察觉出图中的细微变化,并把变换得到的图当成全新的图并提供全新信息。增强方式分为:颜色增强(改变颜色亮度,对比度,增加颜色噪声)以及几何增强(平移,旋转,缩放)。几何增强可以同时应用于输入的两张图片,也可以只应用于其中的一张图片。所有几何增强的光流可以通过组合 原始图片中的光流以及增强后的光流来获得。对于视差估计,两台摄像机的变换已经被固定,所以只有少数增强操作可以使用。

4 Learning Tasks

4.1 Optical Flow Estimation 
        光流预测网络分为FlowNetC和FlowNetS
  1. FlowNetS的输入为两站图片在通道上的叠加,拥有收缩层,压缩图片收缩信息,使得图片分辨率变低,但是特征通道数量变多。随后为扩张层,使用反卷积操作使得图片分辨率提高。跳跃连接的作用为转移高分辨率信息,把收缩层以及扩张层中分辨率相同的块,在通道上进行叠加。
  2. FlowNetC的输入为两张图片,经过共享权重的神经网络层进行组合。
    在Ilg et al (2017) 中,FlowNetC的效果总是超过FlowNetC,所以本文使用FlowNetC结果。训练策略为,通道数缩减为原来的\[\frac{{\text{3}}}{{\text{8}}}\],600k的mini-batch,每一个batch为4,使用\[{{\text{S}}_{short}}\]训练策略,即:初始学习速率为1e-4,在300k降为5.0e-5,400k降为2.5e-5,500k降为1.25e-5。预训练使用\[{{\text{S}}_{long}}\],微调使用\[{S_{fine}}\]

5 Experiments

5.1 Testing environments

        使用Sintel数据集测试使用合成图片训练的神经网络,使用KITTI测试受限驾驶环境下的泛化能力。使用平均端点误差来测试(EPE)

5.2 What makes a good training dataset?

        在Dosovitskiy et al (2015) 中证明,神经网络的训练集不需要和测试集匹配,在Sintel中没有椅子,但是使用椅子数据集训练的神经网络在SIntel数据上表现良好。
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        由表可看出利用FlyingChairs训练的神经网络比其他的网络效果都好。虽然FlyingThings3D和Monkaa比FlyingChairs更复杂,但是利用此训练的网络效果并不好。
        以此,我们研究
  1. FlyingChairs数据集中的什么属性使得 以此训练的神经网络效果如此成功
  2. 如何更近一步的提高训练集的质量

5.2.1 Object shape and motion

        探索目标形状以及他们移动方式对于网络的影响。一般操作和上文一致
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        只是使用多边形和椭圆来代替椅子。并且不使用所有的仿射变化,而是选择它的子集加上非刚性变形。和FlyingChairs 数据集相同,使用Flickr images 中的图片作为背景以及目标(Object)。
        训练集从简单到复杂,例如从目标为简单的长方形,运动为平移,到目标为复杂细微的小目标以及非凸物体,运动为非刚性运动。
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        使用此数据集测试得
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        由此看出随着训练集得复杂度提高,误差在下降。加上非刚性运动大大提高在Sintel和KITTI上得效果,但是没有降低刚性数据集椅子上得误差。如下图,
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        对目标加上针孔,会使误差升高
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        除了增加针孔操作,增加其他复杂操作都可以稍稍降低误差。只加旋转操作,Sintel上误差无明显得降低,KITTI的误差反而升高。增加缩放运动(scaling motions )操作可以降低误差,对目标和背景进行非刚性变形使得误差的降低效果最明显。

        总结:
  1. 椅子数据集中存在大量的旋转,所以在训练集中增加旋转操作可以降低在此训练集上的误差。
  2. KITTI中存在大量的缩放运动,由场景朝着摄像头移动而产生。所以增加缩放运动操作可以降低误差。
  3. 测试集中没有针孔,所以增加针孔会使误差升高
        可以针对目标域中存在的运动来选择训练集,没有通用的测试集。


5.2.2 Textures

        除了上文使用的Flickr数据集作为填充,还用了额外两种纹理填充,Plasma和Clouds。如下图

What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        使用FlowNet进行测试
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        结论:
  1. 训练集中纹理的多样性对最后网络的性能有极大的影响。
  2. 解释了在Monkaa数据集上训练效果差的原因。Monkaa中存在大量复杂的目标和运动,然而纹理却大都重复和单调。
  3. 使用从真实世界中随机抽取的纹理(Flickr),比从程序随机生成的纹理(Plasma和Clouds)效果要好。

5.2.3 Displacement statistics

        光流对运动幅度很敏感,变分法对处理小位移有优势,但处理大位移,需要使用组合的方法。
实验操作部分:通过两倍化/三倍化 椅子数据集中背景以及目标 运动分布参数(高斯分布:标准差,均匀分布:最大值和最小值)来实现数据集中所有位移量的 两倍化/三倍化
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?

        横坐标为像素移动的距离,纵坐标为统计像素占总数据集的比重 ,例如FlyingChairs像素移动为0的占总像素点的1/10。

可以看出FlyingChairs的运动统计和Sintel的运动统计及其类似,所以可以写成Sintel-Like。

What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?

        可以看到训练集分布和测试集分布类似,那么取得得效果会好。发现这种情况同样令人失望,因为我们想要一种通用的网络,可以同时处理多种位移分布情况。通过使用学习策略,以及特殊网络的堆叠,可以减轻  训练集分布对测试集的影响。

5.2.4 Lighting

        在现实世界中(Sintel中也一样),光线和表面得相互运动会造成反射,加亮区,以及阴影。这会给视觉算法挑战,因为违反了照片一致性假设。加亮和阴影可以看作为移动得物体,但是人们还是想消除这些效果得影响。

        实验部分:渲染了3种不同的设置,无阴影(shadeless),静态(static),动态(dymamic)

  1. 无阴影代表没有光照影响,有些目标有纹理,但是大多数目标只拥有单一的平整的颜色。评估这些目标的光流很困难,因为唯一有用的特征是目标轮廓的形状。
  2. 静态照亮的物体表示被环境光线所遮挡,环境光线在所有方向都是均匀的,并且目标没有考虑自己的阴影以及其他物体对于它的阴影。
  3. 动态照亮场景使用光线追踪(raytracing)和光源(台灯),从随机方向照射场景。在这种情况下,目标会投射出真实的阴影,假如目标旋转的话,那么目标表面的阴影会随之变换。椅子数据集也会进行镜面反射。这会使得神经网络学习光照的影响,但是这也会更加困难,因为神经网络必须区分各种反射之间的不同,例如镜面反射中,加亮(highlight)部分位置的移动不应该引起光流。

        测试结果

What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?

        实验表明神经网络能够发现训练集中复杂的光照情况 来使得在测试集上表现良好。光照的影响,不过是在目标表明增加特征点。动态数据对于结果影响较小,因为在图片中的加亮部分是稀疏的。实验还发现在动态数据上训练的网络无法分辨 无阴影以及静态数据,以至于在对应测试集上表型糟糕,所以使用动态数据训练的神经网络在Sintel上表现糟糕,Sintel中大多数是静态的目标。

5.2.5 Data augmentation

        几乎所有类型的数据增强都对性能有所改进,除了额外对于第二张图片进行几何变换(光流的改变)会升高误差,因为原始数据已经拥有了足够多样的位移。
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?

5.2.6 Amount of training data

        数据增强的缺点:无法创建新的纹理,以及 无法改变一组对象之间的相对位置。
进行评估的实验采用完全不进行数据增强的数据以及采用数据增强的数据(对应表9,上表的第一行以及最后一行)
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        可以看出进行数据增强在训练数据减少100倍的时候也能取得很好的效果。
  1. 数据增强在没有改变训练集的域的同时,增加了有效训练集的数量。
  2. 数据增强可以获得 与输入训练集互补的训练集,使得神经网络能够处理更大范围的输入。

        然而针对数据增强的缺点,最好的方法还是获得尽量多的训练集以及使用数据增强。

5.3 Learning schedules with multiple datasets

        FlyingThings3D只有少量的小位移,从下表可以看出位移分布不能作为 FlyingThings比FlyingChairs效果差的唯一原因,可以看出尽管FlyingThings的位移量大多数存在于40~160,但是在此区间的效果还是比不过FlyingChairs。
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        学习策略
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        下面为使用不同训练集的影响。
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        可以看出先用FlyingChairs训练然后使用FlyingThings3D进行微调效果最好,这相当于curriculum learning 。在训练早期引入过于复杂的数据集对效果是不利的,但在后面阶段确实有对网络有所帮助。其中的一个原因可能是:简单的FlyingChairs数据集帮助网络学习到寻找对应关系的一般概念,没有过早的引入可能会造成困扰的3D运动的先验知识。

5.4 Synthesizing the defects of real imaging

        使用Klein and Murray (2010) 文中的思想,设计一个渲染管道(rendering pipeline ),用来把人为痕迹应用到渲染目标上,这些人为痕迹是由真实相机产生的。这样使得增强现实(augmented-reality )的图片更好的融入现实图片中。没有经过增强现实的话,那么图片看起来会非自然的清晰和干净。
        我们使用这一思想来操作训练集,因为训练集不是由真实的相机拍摄的,并且带有真实值的真实图片很难大范围的获得,或者根本无法获得。本文测试对训练集添加相机拍摄中的缺陷会发生什么。
        添加缺点会造成两种影响。
  1. 由于blur(blur产生的原因可能为目标移动过快),真实值标签和图片像素之间的关系会变得模糊。网络原本就要处理图片中的固有的离散化构件(inherent discretization artifacts of raster images ),在加入复杂元素(缺陷)会导致效果变差。
  2. 神经网络应该学习到这些人工痕迹以及相机缺陷是没有意义的,然后学习忽略这些影响。假如网络能够把学到的这种知识应用在现实中,那么精度会上升。

5.4.1 Lens distortion and blur

        
What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?
        a,d来源于Bumblebee 场景相机,带着明显的radial blur和其他的blur。把radial blur等相机缺陷加入训练集e,可以产生更加精确的视差估计,尤其是叶子那边明显带着radial blur,视差效果明显改进了。在本例中,神经网络学会处理训练集中的缺陷,并把学到的应对方法带入测试集。
        神经网络更加学会了对遮挡区域做出更明智的猜测,因为神经网络似乎学习到了目标的边界可能是模糊的。从带有清晰边界的训练集中不可能学到。

5.4.2 Bayer-interpolation artifacts

        图像传感器通常只能感受到光亮强度,不能感知到颜色。要感知颜色的话,常见做法是为传感器附加上带有颜色滤波器的重复模式(a repeating pattern of color filters ),这样每个像素就对特定部分的颜色光谱敏感。这就是Bayer pattern 的定义。
为了重建一张全色彩的图片,每一个像素点的颜色通道必须从一个邻域中推测。
        下图中第一行通过简单的拜尔模式插值(Bayer-pattern interpolation)得到的图片会出现彩色编纹(Color fringing),使用degraded FlyingThings3D数据集可以使网络应对这种影响。
  What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?

        通过比较两幅视差图的差异,可以看到使用degraded FlyingThings3D数据训练的网络能够有效处理拜尔器件的影响,这些影响主要集中在轮廓。

What Makes Good Synthetic Training Data for Learning Disparity and Optical Flow Estimation?

6 Conclusion

        
  1. 多样性是重要的。在指定数据上训练的神经网络的泛化能力比训练于多样性数据的神经网络要差。
  2. 图片的真实性被高估。大多数学习任务可以通过简单的图片并上数据增强来完成。现实性效果(复杂的光照条件)对于学习基础光流来说,不是最重要的。仅仅引起了了细微的改变。
  3. 学习策略有影响。分阶段训练,特别是简单数据集和复杂数据集结合训练有提升性能的一种重要手段。
  4. 照相机的知识会帮助。对照相机的变形进行建模,并应用于训练集,能够极大限度的提高在此照相机下的效果。

这对 高等级的任务,例如目标识别可能不适用。有必要联合处理高等级任务以及低等级任务,以后有必要创建一种数据集,可以同时处理高等级任务以及低等级任务。并且寻找一种学习过程,能够有效的组合真实世界图片与合成图片的优势。