一个大数据集来训练卷积网络的视差,光流和场景流量估计
相关资源下载:https://download.csdn.net/download/qq_38906523/10297512
摘要
最近的工作表明,光流估计可以被制定为监督学习任务,并且可以用卷积网络成功解决。所谓的FlowNet的培训是由一个大型的综合生成的数据集启用的。 本文将光学流量估计的概念通过卷积网络扩展到视差和场景流估计。为此,我们提出了三个具有足够的真实性,变化性和尺寸的合成立体视频数据集,以成功训练大型网络。 我们的数据集是第一个能够训练和评估场景流方法的大型数据集。 除了数据集以外,我们提供了一个实时视差估计的卷积网络,提供了最先进的结果。通过结合流和视差估计网络并联合训练,我们展示了第一个基于卷积网络的场景流估计。
1、介绍
估计场景流意味着提供立体视频中所有可见点的深度和3D运动矢量。 在重建和运动估算方面,这是“皇家联盟”的任务,并为高级驾驶员辅助和自主系统等众多更高级别的挑战提供了重要依据。 近几十年来的研究集中在它的子任务上,即视差估计和光流估计上,取得了相当大的成功。全景流的问题还没有探索到同样的程度。 尽管可以从子任务结果中简单地组合部分场景流,但是在效率和准确性方面,预期所有组件的联合估计将是有利的。 场景流研究的比其子任务少的一个原因似乎是缺乏充分注释的地面实况数据。
在卷积网络时代,这种数据的可用性变得更加重要。 Dosovitskiy等人 [4]表明,光流估计可以作为一个监督学习问题,可以用大网络解决。为了训练他们的网络,他们创建了一个简单的合成2D飞行椅数据集,这被证明足以预测一般视频中的精确光流。 这些结果表明,还可以通过卷积网络,理想地联合,有效地和实时地估计视差和场景流。实施这个想法缺少的是一个庞大的数据集,具有足够的真实性和可变性来训练这样的网络并评估其性能。
表1.可用数据集的比较:我们的新数据集提供了比现有数据集更多的注释数据和更多的数据类型。我们所有的数据具有完全连续,密集,准确的基本事实。
在本文中,我们提供了三个这样的数据集的集合,使用定制版本的开源3D创建套件Blender。 我们的努力在精神上与Sintel基准相似[2]。 与Sintel相比,我们的数据集足够大以便于卷积网络的训练,并且为场景流提供了基本事实。具体包括双向视差,双向光流和视差变化,运动边界和对象分割的立体彩色图像和基本事实。 此外,完整的相机校准和三维点位置是可用的,即我们的数据集还涵盖了RGBD数据。
我们不能在一篇论文中充分利用这个数据集的全部潜力,但是我们已经展示了与卷积网络训练相结合的各种使用实例。我们训练了一个视差估计网络,在以前的基准测试中,尤其是在那些实时运行的方法中,也能产生有竞争力的表现。 最后,我们还提出了一个用于场景流量估计的网络,并在足够大小的测试集上提供了全场流量的第一个定量数字。
2、相关工作
数据集:
创建标准数据集的第一个重要努力和成果是用于立体差异估计的Middlebury数据集[22]和光流估计[1]。 当立体数据集由真实场景组成时,光流数据集是真实场景和渲染场景的混合物。 目前这两个数据集都非常小。 特别是小的测试集导致了严重的手动过拟合。立体数据集的优势在于相关真实场景的可用性,尤其是2014年的最新高分辨率版本[21]。
MPI Sintel [2]是一个完全合成的数据集,源自一个开源的动画3D短电影。它为光流提供了密集的基本事实。 自最近以来,视差的beta测试版本可用于培训。 Sintel数据集有1064个训练帧,是目前可用的最大的数据集。 它包含足够逼真的场景,包括自然的图像退化,如雾和运动模糊。作者对所有帧和像素的基本事实的正确性做了很多努力。 这使得数据集成为方法比较的非常可靠的测试集。 但是,对于训练卷积网络,数据集仍然太小。
KITTI数据集于2012年制作[8],并于2015年进行了扩充[17]。 它包含安装在汽车上的一对校准摄像机的道路场景立体视频。从三维激光扫描仪结合汽车的运动数据可以获得光流和视差的基本事实。 当数据集包含实际数据时,采集方法将地面实况限制在场景的静态部分。 而且,激光只能提供一定距离和高度的稀疏数据。对于最新版本,汽车的3D模型被安装到点云以获得更密集的标签,并且还包括移动的物体。 但是,这些地区的事实依然是一个近似。
Dosovitskiy等人[4]在移动2D椅子图像叠加在自然背景图像的合成数据集上训练卷积网络进行光学流量估计合。这个数据集很大,但仅限于单视点光流。它不包含三维运动,并且尚未公开。
最新的Sintel数据集和KITTI数据集都可以用于场景流研究,但有一些限制。 在遮挡区域(在一帧中可见但在另一帧中不可见),场景流的基本事实不可用。在KITTI中,场景流的最有趣的部分,即点的三维运动,通过CAD的合适模型近似或是缺失的。表1给出了最重要的可比数据集及其特征的综合概述。
卷积网络:
卷积网络[16]已被证明是非常成功的各种识别任务,如图像分类[15]。 卷积网络的最新应用还包括基于单个图像的深度估计[6],立体匹配[28]和光流估计[4]。
Dosovitskiy等人的FlowNet [4]与我们的工作最相关。 它采用编码器 - 解码器架构,在收缩和扩展网络部分之间增加了交叉连接,编码器从增加尺寸的接收区域计算抽象特征,解码器通过扩展的上卷积架构重新建立原始分辨率[5]。 我们采用这种方法进行视差估计。
Zbontar等人的视差估计方法 [28]使用连体网络来计算图像块之间的匹配距离。为了实际估计差距,作者进行了基于交叉的成本聚合[29]和半全局匹配(SGM)[11]。 与我们的工作相反,Zbontar et al。 在视差估计任务上没有端到端的卷积网络训练,对计算效率和优雅性有相应的影响。
场景流:
虽然有数百篇关于视差估计和光流估计的论文,但关于场景流的很少。他们都没有使用学习方法。
Vedula等人的工作首次推广了场景流量估计。 [23]并分析了不同的可能问题设置。后来的作品主要是变分方法。 Huguet和Devernay [12]用联合变分方法制定了场景流量估计。 Wedel等人[26]遵循变分框架,但解耦了视差估计更大的效率和准确性。 Vogel等人 [25]把场景流估计的任务与使用分段刚性模型正则化的超像素分割结合起来。 Quiroga等人 [19]将正规化进一步扩展到了一个平滑的运动领域。 像Wedel等人。 他们将视差估计解耦,并用RGBD视频的深度值代替。
KITTI现场流程最快的方法是从Cech et al。 [3]运行时间为2.4秒。 该方法将种子生长算法同时用于视差和光流估计的。
3、场景流的定义
光流是世界三维运动在图像平面上的投影。通常,场景流被认为是可以计算的底层3D运动场从立体声视频或RGBD视频。假定立体图像对的两个连续的时间帧t和t + 1,产生四个图像(ItL,ItR,It + 1L,It + 1R)。 场景流为这四个图像中的每一个的每个可见点提供点的三维位置和三维运动矢量[24]。
这些3D数量只能在已知相机内在和外在的情况下计算。场景流的独立于摄像机的定义是通过单独的组件光流,视差和视差变化来获得的[12]。图2.这种表示是完整的,从可见的3D点及其3D运动矢量可以从相机的组件计算参数是已知的。
图2.时间t-1,t和t + 1的给定立体图像,箭头表示它们之间的差异和流动关系。 红色分量通常用于估计场景流。 在我们的数据集中,我们提供所有的关系,包括蓝色箭头。
鉴于t和t + 1的差距,差距变化几乎是多余的。 因此,在KITTI 2015现场流量基准[17]中,只评估了光学流量和差异。 在这种情况下,只能在左右两侧均可见的表面点重建场景流。特别是在卷积网络的情况下,估计部分遮挡区域的深度和运动特别有趣。 而且,由于流动和差异对3D运动的重建对噪声更为敏感,因为光流中的小误差会导致3D运动矢量中的大误差。
4、三个渲染数据集
我们创建了一个由三个子集组成的综合数据集套件,提供了前后方向上完整的地面真实场景流(包括视差变化)。为此,我们使用了开源的3D创建套件Blender来为大量复杂运动的对象设置动画,并将结果渲染成数万帧。我们修改了Blender内部渲染引擎的流水线,除了立体RGB图像之外,还产生了每帧和每个视图三个额外的数据传递。这些提供所有可见表面点的3D位置,以及它们的未来和过去的3D位置。给定相机视图的两个这样的数据传递之间的像素差异导致3D运动矢量的“图像” - 如本相机所看到的完整场景流地面真实性。请注意,即使在遮挡区域,信息也是完整的,因为渲染引擎总是对所有(可见和不可见)场景点有完整的了解。所有非透明材料 - 特别是大多数车窗 - 都被渲染为完全透明的,以避免3D数据中的一致性问题。
给定摄像机固有参数(焦距,主点)和渲染设置(图像大小,虚拟传感器大小和格式),我们将每个像素的3D运动矢量投影到与成像平面共面的2D像素运动矢量中:光流。 直接从像素的3D位置检索深度,并使用虚拟立体设备的已知配置将其转换为视差。 我们从3D运动矢量的深度分量计算视差变化。结果的一个例子如图1所示。
另外,我们提供了对象分割掩码,其中每个像素的值对应于其对象的唯一索引。对象可以由多个子部分组成,每个子部分可以有一个单独的材质(具有自己的外观属性,如纹理)。 我们利用这个和渲染额外的分割掩模,其中每个像素编码其材料的索引。 Sintel公司最近推出的beta版本也包含了这些数据。
类似于Sintel数据集,如果以下情况成立,我们还提供了在至少两个移动对象之间突出显示像素的运动边界:两帧之间的运动差异至少为1.5像素,并且边界线段至少覆盖一个区域的 10个像素。阈值被选择为与Sintel的分类结果相匹配。
对于所有的帧和视图,我们提供完整的摄像机ntrinsics和extrinsics矩阵。 这些可以用于从运动构建或其他需要摄像机跟踪的任务中。我们在32mm宽的模拟传感器上的35mm的虚拟焦距渲染所有图像数据。对于Driving数据集,我们添加了一个广角版本,使用15mm的焦距,与现有KITTI数据集视觉上更接近。
像Sintel数据集一样,我们的数据集也包括每个图像的两个不同的版本:clean pass显示颜色,纹理和场景照明,但没有图像退化,而finalpass还包括后处理效果,如模拟景深模糊,运动模糊,阳光眩光和伽玛曲线操作。
为了处理大量的数据(2.5TB),我们将所有的RGB图像数据压缩成有损耗但高质量的WebP4格式。 非RGB数据使用LZO5进行无损压缩。
4.1 FlyingThings3D
新数据收集的主要部分包括沿随机3D轨迹飞行的日常物体。 我们用地面实况数据生成了约25000个立体画面。 我们不是专注于某个特定的任务(如KITTI),也不是执行严格的自然主义(如Sintel),而是依赖随机性和大量的渲染能力来产生比现有选项更多数量的数据,而不会有重复或饱和。 数据生成速度快,完全自动化,并为完整的现场流程任务提供密集的准确基本事实。创建这个数据集的动机是促进大型卷积网络的训练,这将受益于大的变化。
图3. FlyingThings3D数据集中的场景示例。第3行:光流图像,第4行:视差图像,第5行:视差变化图像。在高分辨率的彩色屏幕上进行最佳观看(图像标准化显示)。
每个场景的基础是一个大的纹理地平面。我们生成了200个静态背景对象,其形状是从长方体和圆柱体中随机选取的。 每个物体随机缩放,旋转,纹理,然后放置在地平面上。
为了填充场景,我们从斯坦福的ShapeNet [20] 6数据库下载了35 927个详细的3D模型。 从这些我们组装了32 872个模型的训练集和一个3 055的测试集。模型类也被拆分了。
我们从这个对象集合中抽取了5到20个随机对象,并随机地构造每个对象的每个材质。 每个ShapeNet对象被转换并沿着平滑的三维轨迹旋转,使得摄像机可以看到物体,但是具有随机位移。 相机也是动画的。
纹理集合是使用ImageMagick7创建的程序图像,来自Flickr8的风景和城市风景照片以及来自Image * After9的纹理风格的照片。 像3D模型一样,纹理也被分割成不相交的训练和测试部分。
对于finalpass图像,场景在运动模糊和散焦模糊的存在和强度上有所不同。
4.2. Monkaa
我们的数据集的第二部分是由动画短片Monkaa的开源Blender资产制作的。 在这方面,它类似于MPI Sintel数据集。 Monkaa包含非刚性和柔和的关节运动,以及视觉上具有挑战性的皮毛。除此之外,与Sintel几乎没有视觉相似之处; Monkaa电影并不追求同等的自然主义。
我们选择了许多合适的电影场景,并使用Monkaa的零件创建了全新的场景。 为了增加数据量,我们将自制场景渲染为多个版本,每个版本都对摄影机的平移和旋转关键帧进行随机增量更改。
4.3. Driving
从驾驶汽车的角度来看,驾驶场景是一个自然主义的,动态的街景,与KITTI数据集相似。 它使用同样来自FlyingThings3D数据集池中的汽车模型,并使用3D Warehouse和简单路灯的高度详细的树模型。 在图4中,我们展示了来自KITTI 2015驾驶和相似框架的选定框架。
我们的立体基线设置为1个Blender单元,加上典型的车型宽度约为2个单位,与KITTI的设置相当(54厘米的基线,186厘米的车宽度[8])。
图4. 2015版KITTI基准测试套件的示例框架[17]和我们新的驾驶数据集。 两者都显示了许多静态和动态汽车从各种现实的观点,薄物体,复杂的阴影,质感的地面和具有挑战性的镜面反射。
5、网络Networks
为了证明我们新的合成数据集适用于现场流量估计,我们用它来训练卷积网络。一般来说,我们遵循FlowNet的架构[4]。 也就是说,每个网络由一个收缩部分和一个扩展部分组成,它们之间有远距离连接。收缩部分包含卷积层,偶尔步幅为2,导致总降采样因子为64.这使得网络能够估计大的位移。 然后网络的扩展部分逐渐地,非线性地对特征图进行上采样,并考虑到收缩部分的特征。这是通过一系列上卷积和卷积层完成的。 请注意,网络中没有数据瓶颈,因为信息也可以通过收缩层和扩展层之间的长距离传递。 为了说明整体架构,我们参考了Dosovitskiy等人的图[4]。
对于视差估计,我们提出了表2中描述的基本架构DispNet。我们发现扩展部分的附加卷积比FlowNet架构产生更平滑的视差图; 见图6。
我们还测试了一个使用显式相关层的架构[4],我们称之为DispNetCorr。 在这个网络中,两个图像被分别处理到图层conv2,然后水平地关联所得到的特征。 我们考虑最大位移40像素,这相当于输入图像中的160像素。相比于Dosovitskiy等人的2D相关性, [4],一维相关性在计算上要方便得多,并且允许我们用更精细的采样来覆盖比FlowNet更大的位移,其使用步幅2于相关性。
我们通过结合和微调视差和光流的预训练网络来训练联合网络来进行场景流估计。如图5所示。我们使用FlowNet的实现来预测左右图像的光流和两个DispNets来预测t和t + 1处的视差。然后,我们调整这个庞大的联合网络来估计流量,视差以及视差变化。
训练:
所有的网络都是端对端的训练,给定输入图像和基本事实(光流,视差或场景流)作为输出。我们使用一个自定义版本Caffe [13]并使用Adam优化器[14]。 如Kingma等人设置beta1= 0.9和beta2 = 0.999[14]。 由于我们使用的学习速度lamda = 1e-4,从第400 000迭代开始每迭代200000次学习速率除以2。
由于网络的深度以及收缩和扩展层之间的直接联系(见表2),如果所有6个损失都是有效的,则较低层会得到混合梯度。我们发现,使用损失权重计划可能是有益的:我们开始进行训练,将损失权重1分配给最低分辨率损失loss6,对于所有其他损失(即所有其他损失均被关闭),权重为0。 训练期间,我们逐步提高分辨率的损失权重,并解除低分辨率损失。 这使得网络能够首先学习一个粗糙的表示,然后继续更精细的分辨率而不使损失限制中间特征。
表3.视差错误。 所有测量都是端点错误,除了KITTI-2015测试的D1-all测量(请参阅解释文本)。 这个结果来自一个在KITTI 2012上进行微调的网络。
表2. DispNet体系结构的规范。 收缩部分由卷积conv1到conv6b组成。 在扩展部分,上卷积(upconvN),卷积(iconvN,prN)和损失层是交替出现。较低层的特征与较高层特征连接。 预测的视差图像由pr1输出。
图5.将FlowNet(绿色)和两个DispNets(红色和蓝色)的权重交错到SceneFlowNet。 对于每一层,通过取一个网络的权重(左),并将其他网络的权重分别设置为零(中)来创建过滤器掩码。然后将每个网络的输出连接起来,形成一个三倍于输入和输出数量的大网络(右)。
图6.上卷积之间没有(左)和(右)卷积的预测视差图的特写。 注意右边的预测是如何更平滑的。
表4.在所提供的数据集上评估我们的SceneFlowNet的端点错误。驾驶数据集包含最大的差异,流量和差异变化,导致较大的错误。 FlyingThings3D数据集包含较大的流量,而Monkaa包含较小的流量和较大的差异。
数据增强:
尽管有大量的训练集,我们选择进行数据增强,以几乎不增加成本的方式将更多的多样性引入训练数据(计算的瓶颈在于从磁盘读取训练样本,而增强数据是动态执行的)。我们执行空间变换(旋转,平移,裁剪,缩放)和彩色变换(颜色,对比度,亮度),并对所有2或4个输入图像使用相同的变换。
对于视差,引入任何旋转或垂直移动将打破极线约束。水平移位将导致负视差或移位无穷朝向照相机。。
6、实验
现有方法的评估:
我们在新的数据集上评估了几种现有的视差和光流估计方法。就视差而言,我们评估了Zbontar和LeCun的最新方法[28]以及流行的半全局匹配[11]从OpenCV13块匹配实现。 结果与表3中的DispNets一起显示。在大多数情况下,我们使用终点误差(EPE)作为误差测量,唯一的例外是KITTI 2015测试集,其中仅KITTI报告了D1-all误差测量评估服务器。 估计误差大于3px且大于该像素的地面真实差异的5%的像素的百分比。。
DispNet.
我们在FlyingThings3D数据集上训练DispNets,然后可以在KITTI上进行微调。 微调的网络在表中由“-K”后缀表示。 DispNetCorr在KITTI 2015上进行了微调,目前是KITTI 2015最佳成绩表中的第二好,稍微落后于MCCNN-acrt [28],大概快了1000倍。 在KITTI分辨率下,它在NvidiaGTX TitanX GPU上以每秒15帧的速度运行。 对于前景像素(属于汽车模型),其误差大约是[28]误差的一半。 网络实现的误差比表中所列的最佳实时方法(多块匹配[7])低约30%。 同样在其他数据集上,DispNet表现良好,并且胜过SGM和MC-CNN。
虽然在KITTI上的微调改善了这个数据集的结果,但是增加了其他数据集的错误。 我们解释这个显着的性能下降,由于KITTI 2015只包含相对较小的视差,约150个像素,而其他数据集包含一些500像素或更多的视差。 在对KITTI进行微调时,网络似乎失去了预测大位移的能力,因此造成了巨大的误差。
与FlowNet [4]相比,我们引入了对网络架构的一些修改。 首先,我们在网络扩展部分的上卷积层之间添加了卷积层。 正如预期的那样,这可以使网络更好地调整视差图并预测更平滑的结果,如图6所示。从数量上看,这导致KITTI-2015相对EPE降低了大约15%。
其次,我们用1D相关层训练了一个我们的网络版本。与Dosovitskiy相比[4],我们发现具有相关性网络系统更好(见表3)。 一个可能的合理解释是,视差估计问题的一维特性使我们能够在比FlowNet更精细的网格上计算相关性。
SceneFlowNet.
我们提出了卷积网络的全景流估计的早期结果。图8显示了一个FlyingThings场景的网络结果。 网络能够很好地预测视差变化,即使在被遮挡的区域也是如此。由于场景流训练需要处理大量的数据,网络训练相对较慢(网络正向传输时间为0.28s,比DispNet网络长5倍),尚未收敛。 我们预计,随着网络训练时间的延长,结果会进一步改善。表4列出了我们的数据集的定量评估。
7、结论
我们引入了一个包含超过35000个立体图像对的综合数据集,其中包含地面真实视差,光流和场景流。 虽然我们的动机是创建一个适合于训练卷积网络来估计这些量的足够大的数据集,但是该数据集也可以用于其他方法的评估。对于缺乏具有真实性的数据集的场景流来研究来说,这是非常有趣的地方。
我们已经证明,数据集确实可以用来成功训练大型卷积网络:我们训练的用于视差估计的网络与现有技术水平相当,运行速度提高了1000倍。 第一种使用标准网络架构来训练网络以进行场景流估计的方法也显示出有希望的结果。 我们相信,我们的数据集将有助于提高深度学习研究像立体匹配,光流和场景流估计这样的具有挑战性的视觉任务。
8、致谢
这项工作部分由ERC Start Grant VideoLearn,ERC ConsolidatorGrant 3D Reloaded以及DFG Grants BR 3815 / 7-1和CR 250 / 13-1资助。
图7.视差结果 行从上到下:KITTI2012,KITTI 2015,FlyingThings3D,Monkaa,Sintel。 请注意DispNet预测如何基本无噪音。
图8.由FlowNet和DispNets预编译创建的SceneFlowNet的结果。 增加了视差变化,并在FlyingThings3D上对网络进行了微调,重复次数为80000次。 经过这几次训练迭代后,视差变化预测已经相当不错了
一个大数据集来训练卷积网络的视差,光流和场景流估计:补充材料
图1.驾驶场景的鸟瞰图 摄像机在街道上沿着复杂的道路行驶,遇到许多转弯,过路,其他车辆和不同的照明条件。
1. Introduction
由于篇幅限制,本补充材料包含数据集生成过程(第2节)的更详细描述,以及DispNet的更多细节和更多定性结果(第3节)。
2. 数据集创建细节
我们修改了Blender内部渲染引擎的流水线,除了立体声RGB图像之外,还产生了每帧三个额外的数据流和立体视图。图2给出了这些数据的可视分解:
--在基本通道(3DPost)中,每个像素存储投影到该像素的场景点的真实3D位置(3D位置在相机坐标系中给出)。
--对于第二遍(3DPost-1),我们将时间恢复到前一帧t-1并保存所有顶点的3D位置。 然后,我们返回到当前帧t,并在时间t使用顶点三维位置将时间t-1的三维顶点投影到图像空间中。因此,我们再次存储每个像素的3D位置,但是这次是使用时间t处的投影从时间t-1开始的3D位置。
--第三遍(3DPost + 1)类似于第二遍,除了这次我们使用后面的帧t + 1而不是前面的帧t-1。
图2.帧t的中间渲染数据:X / Y / Z通道对帧t(中心列)上所有可见点的3D位置(相对于摄像机)进行编码,以及它们各自的3D位置将会 上一个/下一个帧(左/右列)。 前一帧和下一帧的3D位置被存储在与帧t中相同的图像位置处。 因此,从帧t分析位置给出关于相应3D点的过去,当前和未来3D位置的信息。 所有的场景流量数据可以从这个信息中导出。 例如:向右移动的汽车改变其X值(注意:透视投影将远处的天空的强度梯度压缩到X = 0处的明显的步骤)。 没有什么是垂直移动的,所以所有的Y值都是随时间变化的。摄 像机向前移动,所有Z值均匀变化(请注意,右侧的物体如何变得可见)。
这三个数据结构包含了从当前观点看的关于场景的三维结构和三维运动的所有信息。从3DPos数据中我们生成场景流数据。 图3描述了从搅拌器输出到结果数据集的数据转换步骤。请注意,彩色图像和分割蒙版是由Blender直接生成的,不需要任何后期处理。 连同相机内在和外在因素,可以生成各种数据,包括校准的RGBD图像
图4显示了来自我们的数据集之一的帧的示例分割掩码。材质可以跨对象共享,但是对象索引和材质索引的组合产生了一个独特的场景过度(在场景的所有帧中保持一致)。尽管我们的实验不使用这些数据,但对于其他应用程序,我们还在数据集中包含对象和材质ID。
图3.帧时间t的单个视图的数据生成概述:Blender直接输出Final pass和Clean pass图像,以及对象级别和材料级别的分割蒙版。 如图2(b为立体基线,f表示焦距)所示,由当前3DPos地图的Z通道给出的深度直接获得视差。 从未来/过去的视差图中减去当前的视差图导致未来/过去方向上的视差变化。 使用相机固有矩阵K将原始3DPos图像从相机空间投影到像素空间中。从未来/过去像素位置图像中减去当前像素位置图像产生进入未来/过去的光流。
通过这些补充材料,我们还提供了一个视频,演示我们创建的数据集和流水线的最终结果,即光流,视差,视差变化以及对象和材料索引的基本事实。
图4.分割数据:对象索引是每个场景唯一的。 物质指标可以跨物体共享,但可以与物体指标组合,以产生零件的超分量
3. DispNetCorr
直观上,简单的DispNet视差估计架构(如在主要论文中所述)必须学习从头开始整理立体图像中的不同图像的部分匹配的概念。 由于问题的结构是众所周知的(对应关系只能根据对极几何[9]找到),所以我们引入了另一种结构 - DispNetCorr,其中我们明确地关联沿水平扫描线的特征。
DispNet使用两个堆叠的RGB图像作为单个输入(即一个六通道输入块),DispNetCorr体系结构首先分别处理输入图像,然后关联两个图像之间的特征并进一步处理结果。 这种行为类似于Dosovitskiy方法,构建了每个图像中具有有限邻域大小和不同跨度的2D相关层。对于视差估计,我们可以使用一个更简单的方法,没有跨越和较大的邻域尺寸,因为沿着一个维度的相关性在计算上要求不高。另外还可以通过将搜索限制为仅一个方向来减少比较量。例如,如果我们给出一个左侧的摄像机图像,并右侧摄像机图像内查找对应关系,则所有的视差位移都在左侧。
给定具有多个通道和相同大小的两个特征块a和b,我们计算具有相同宽度和高度的相关图,但是具有D通道,其中D是可能的差异值的数目。 对于第一特征块a中位置(x, y)处的一个像素,通道 处所得到的相关项是两个特征向量a(x,y)和b(x-d,y)的标量积。
4.定性的例子
我们展示了我们的网络视差估计的定性评估,并将其与图5至图10中的其他方法进行比较。
图5. Sintel数据集上的视差:与其他方法相比,DispNet和DispNetCorr1D以更合理的方式填充遮挡区域。
图6. Sintel数据集上的视差:DispNetCorr1D提供更清晰的估计值,龙头上的平滑区域估计比DispNet更好。
图7. Sintel数据集上的视差:在KITTI2015数据集上调整的网络无法估计大的差异(KITTI中没有大的差异)。 另外MC-CNN-FST具有大视差导致的问题。
图8. Sintel数据集上的视差:DispNet和DispNetCorr1D可以很好地处理被遮挡的区域。 在KITTI 2015上进行微调之后,网络在天空地区失败了(KITTI没有天空和其他小差距的实际情况)。
图9. KITTI 2015数据集上的视差:KITTI 2015数据集的稀疏性导致在用这样的基本事实微调网络时非常顺利的预测。 虽然非微调DispNet和DispNetCorr1D准确估计细节,但在KITTI非常普遍的光滑路面和地面区域,它们不太准确。
图10. KITTI 2015数据集上的视差:基于KITTI数据集对网络进行微调会导致更加平滑的估计。 但是,DispNet-K和DispNetCorr1D-K仍然可以识别左下方的轮廓柱,DispNet和DispNetCorr1D完全忽略。 这表明微调的网络不会简单地过度平滑,但仍然能够找到小的结构和差异不连续性。