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
3.1 Randomized modeling of data
3.1.1 2D image pairs for optical flow: FlyingChairs
由于模拟相机运动的影响,背景也需要随机变换,因为运动的参数确定,所以光流真实值也随之确定
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
- 第一种为原始数据集(由3D艺术家建模完成),
- 第二种为自定义数据集,对原始数据集中的目标(object)进行收集,组合,animate操作,然后为object提供全新的环境以及运动信息。
Monkaa数据集中包含非刚性运动以及复杂的动物皮毛。和Sintel数据集一样,也遇到了很多问题,例如焦距等。这些问题限制了可用场景的数量,使得这种方法不能随意放缩以产生更多数据。
3.2.2 Driving
3.3 Data augmentation
4 Learning Tasks
- FlowNetS的输入为两站图片在通道上的叠加,拥有收缩层,压缩图片收缩信息,使得图片分辨率变低,但是特征通道数量变多。随后为扩张层,使用反卷积操作使得图片分辨率提高。跳跃连接的作用为转移高分辨率信息,把收缩层以及扩张层中分辨率相同的块,在通道上进行叠加。
- FlowNetC的输入为两张图片,经过共享权重的神经网络层进行组合。
5 Experiments
5.1 Testing environments
5.2 What makes a good training dataset?
- FlyingChairs数据集中的什么属性使得 以此训练的神经网络效果如此成功
- 如何更近一步的提高训练集的质量
5.2.1 Object shape and motion
训练集从简单到复杂,例如从目标为简单的长方形,运动为平移,到目标为复杂细微的小目标以及非凸物体,运动为非刚性运动。
总结:
- 椅子数据集中存在大量的旋转,所以在训练集中增加旋转操作可以降低在此训练集上的误差。
- KITTI中存在大量的缩放运动,由场景朝着摄像头移动而产生。所以增加缩放运动操作可以降低误差。
- 测试集中没有针孔,所以增加针孔会使误差升高
5.2.2 Textures
使用FlowNet进行测试
- 训练集中纹理的多样性对最后网络的性能有极大的影响。
- 解释了在Monkaa数据集上训练效果差的原因。Monkaa中存在大量复杂的目标和运动,然而纹理却大都重复和单调。
- 使用从真实世界中随机抽取的纹理(Flickr),比从程序随机生成的纹理(Plasma和Clouds)效果要好。
5.2.3 Displacement statistics
横坐标为像素移动的距离,纵坐标为统计像素占总数据集的比重 ,例如FlyingChairs像素移动为0的占总像素点的1/10。
可以看出FlyingChairs的运动统计和Sintel的运动统计及其类似,所以可以写成Sintel-Like。
可以看到训练集分布和测试集分布类似,那么取得得效果会好。发现这种情况同样令人失望,因为我们想要一种通用的网络,可以同时处理多种位移分布情况。通过使用学习策略,以及特殊网络的堆叠,可以减轻 训练集分布对测试集的影响。
5.2.4 Lighting
在现实世界中(Sintel中也一样),光线和表面得相互运动会造成反射,加亮区,以及阴影。这会给视觉算法挑战,因为违反了照片一致性假设。加亮和阴影可以看作为移动得物体,但是人们还是想消除这些效果得影响。 实验部分:渲染了3种不同的设置,无阴影(shadeless),静态(static),动态(dymamic)
- 无阴影代表没有光照影响,有些目标有纹理,但是大多数目标只拥有单一的平整的颜色。评估这些目标的光流很困难,因为唯一有用的特征是目标轮廓的形状。
- 静态照亮的物体表示被环境光线所遮挡,环境光线在所有方向都是均匀的,并且目标没有考虑自己的阴影以及其他物体对于它的阴影。
- 动态照亮场景使用光线追踪(raytracing)和光源(台灯),从随机方向照射场景。在这种情况下,目标会投射出真实的阴影,假如目标旋转的话,那么目标表面的阴影会随之变换。椅子数据集也会进行镜面反射。这会使得神经网络学习光照的影响,但是这也会更加困难,因为神经网络必须区分各种反射之间的不同,例如镜面反射中,加亮(highlight)部分位置的移动不应该引起光流。
测试结果
实验表明神经网络能够发现训练集中复杂的光照情况 来使得在测试集上表现良好。光照的影响,不过是在目标表明增加特征点。动态数据对于结果影响较小,因为在图片中的加亮部分是稀疏的。实验还发现在动态数据上训练的网络无法分辨 无阴影以及静态数据,以至于在对应测试集上表型糟糕,所以使用动态数据训练的神经网络在Sintel上表现糟糕,Sintel中大多数是静态的目标。
5.2.5 Data augmentation
5.2.6 Amount of training data
数据增强的缺点:无法创建新的纹理,以及 无法改变一组对象之间的相对位置。- 数据增强在没有改变训练集的域的同时,增加了有效训练集的数量。
- 数据增强可以获得 与输入训练集互补的训练集,使得神经网络能够处理更大范围的输入。
然而针对数据增强的缺点,最好的方法还是获得尽量多的训练集以及使用数据增强。
5.3 Learning schedules with multiple datasets
5.4 Synthesizing the defects of real imaging
- 由于blur(blur产生的原因可能为目标移动过快),真实值标签和图片像素之间的关系会变得模糊。网络原本就要处理图片中的固有的离散化构件(inherent discretization artifacts of raster images ),在加入复杂元素(缺陷)会导致效果变差。
- 神经网络应该学习到这些人工痕迹以及相机缺陷是没有意义的,然后学习忽略这些影响。假如网络能够把学到的这种知识应用在现实中,那么精度会上升。
5.4.1 Lens distortion and blur
5.4.2 Bayer-interpolation artifacts
通过比较两幅视差图的差异,可以看到使用degraded FlyingThings3D数据训练的网络能够有效处理拜尔器件的影响,这些影响主要集中在轮廓。
6 Conclusion
- 多样性是重要的。在指定数据上训练的神经网络的泛化能力比训练于多样性数据的神经网络要差。
- 图片的真实性被高估。大多数学习任务可以通过简单的图片并上数据增强来完成。现实性效果(复杂的光照条件)对于学习基础光流来说,不是最重要的。仅仅引起了了细微的改变。
- 学习策略有影响。分阶段训练,特别是简单数据集和复杂数据集结合训练有提升性能的一种重要手段。
- 照相机的知识会帮助。对照相机的变形进行建模,并应用于训练集,能够极大限度的提高在此照相机下的效果。
这对 高等级的任务,例如目标识别可能不适用。有必要联合处理高等级任务以及低等级任务,以后有必要创建一种数据集,可以同时处理高等级任务以及低等级任务。并且寻找一种学习过程,能够有效的组合真实世界图片与合成图片的优势。