对于一个大小为K=2k+1的正方形patch。请注意,Eq.1与神经网络中的卷积的一个步骤是相同的,但它不是用过滤器与数据进行卷积,而是将数据与其他数据进行卷积。由于这个原因,它没有可训练的参数。
计算c(x_1,x_2)涉及到c*K^2的乘法。比较所有的patch组合涉及到w^2*h^2这样的计算,产生一个大的结果,使有效的向前和向后的传递变得棘手。因此,出于计算原因,我们限制了比较的最大位移,并在两个特征图中引入了步长。
给定最大位移d,对于每一个位置x1,我们只在大小为D=2d+1的范围内计算相关性c(x_1,x_2),通过限制x_2的范围。我们使用步长s_1和s_2,在全局上量化x_1,并在围绕着以x_1为中心量化x 2。
从理论上讲,这种相关性产生的结果是四维的:对于两个二维位置的组合,我们得到了一个相关值,即两个向量的标量积,它们分别包含了剪裁的patches的值。在实践中,我们组织了通道中的相对位移。这意味着我们获得了一个大小为(w*h*d^2)输出。对于反向传播,我们对每个底部的块进行了相应的求导。
扩大的部分。扩展部分的主要组成部分是“upconvolutional”层,由unpooling(扩展特性图,和pooling相反)和一个卷积组成。这些层以前被使用过 [38, 37, 16, 28, 9]。为了进行改进,我们将“向上卷积”应用到特征图中,并将其与来自网络“contractive”部分的相应特征图连接起来,并使用一个向上采样的粗流预测(如果可用的话)。通过这种方式,我们既保留了较粗的特征图所传递的高级信息,也保留了底层特征图中提供的精细的局部信息。每一步都增加到2倍的分辨率。我们重复这个4次,结果是一个预测的光流,分辨率仍然比输入小4倍。总体架构如图3所示。我们发现,与计算成本较低的双线性向上采样相比,该分辨率的进一步改进并没有显著改善结果。
变分优化。在一个替代方案,在最后阶段不是双线性上采样,我们使用[6]中的变分方法,没有匹配的术语:我们从4倍的下采样分辨率开始,然后使用粗到细的计划进行20迭代,并将光流用到整个分辨率。最后,我们在完整的图像分辨率下运行了5个迭代。我们还用[26]的方法来计算图像边界,并通过用α = exp(−λb(x,y) κ ),代替平滑系数来计算检测到的边界,b(x,y)表示在各自的尺度和像素之间重新采样的细边界强度。这种向上扩展的方法比简单的双线性向上采样要复杂得多,但它增加了变分方法的优点,以获得平滑和像素精确的光流场。在下面,我们用一个“+v”后缀来表示这个变分改进所得到的结果。图4中可以看到一个变分改进的例子。
与传统方法不同的是,神经网络需要具有ground truth的数据,不仅要优化几个参数,还要从头开始学习执行任务。一般来说,获得这样的ground truth是很难的,因为真实世界场景的真实像素对应很难被确定。表1给出了可用数据集的概述。
4.1. 现存数据集Middlebury数据集2只包含[2]个用于训练的图像对,使用四种不同的技术生成 ground truth光流。位移非常小,通常低于10个像素。
KITTI数据集 [14]更大(194个训练图像对),包括大量的位移,但只包含一个非常特殊的运动类型。ground truth是通过一个照相机和一个3D激光扫描仪来记录的真实世界场景。这假设场景是刚性的,运动是由一个移动的观察者产生的。此外,遥远物体的运动,如天空,不能被捕捉,从而导致稀疏的光流场ground truth。
MPI Sintel[7]数据集从渲染的人工场景中获得 ground truth,并对现实的图像属性进行了特别的关注。提供了两个版本:最终版本包含了运动模糊和大气效果,比如雾,而干净的版本不包括这些效果。Sintel是最大的数据集(每个版本都有1041个训练图像对),并为小和大的位移大小提供了密集的ground truth。4.2. Flying Chairs
Sintel的数据集仍然太小,无法训练大型的CNN。为了提供足够的训练数据,我们创建了一个简单的合成数据集,我们将其命名为“Flying Chairs”,通过将仿射转换应用到从Flickr收集的图像,以及一组公开的3D椅子模型的渲染图。我们从Flickr中检索964张图片,分辨率为1024x768,来自“城市”(321)、“风景”(129)和“山”(514)。我们将图像切割成4个象限,并使用裁剪产生的512x384图像作为背景。我们从[1]中添加多个椅子图片到背景作为前景目标。从原来的数据集,我们去掉了非常相似的椅子,产生了809个椅子类型和每个椅子62个图片。示例如图5所示。