给出了足够的标记数据,卷积神经网络被认为非常擅长学习输入——输出关系。因此,我们采用一种端到端的学习方法来预测光流:给定一个数据集包含图像对和ground truth flows,我们训练一个网络来直接从图像中预测x-y光流场。但是,为了达到这个目的,什么是好的架构呢?
为了使网络训练在计算上可行,而且更根本的是允许在输入图像的大范围内聚合信息,池化必要的。但是,池的导致分辨率降低,所以为了提供密集的像素预测,我们需要细化粗糙的池化表示。为了达到这个目的,我们的网络包含了一个扩展的部分,它可以智能地细化光流到高分辨率。包含收缩和扩展部分的网络,通过反向传播来进行整体训练。我们使用的架构在图2和图3中描述。现在,我们更详细地描述了网络的两个部分。
contractive部分。一个简单的选择是将两个输入图像叠加在一起,并将他们喂给一个相当通用的网络,从而允许网络自行决定如何处理图像对以提取运动信息。图2(上图)说明了这一点。我们称这个只包含卷积层的架构“FlowNetSimple”。
另一种方法是为这两个图像创建两个独立但相同的处理流,并在稍后的阶段将它们组合在一起,如图2(底部)所示。有了这个体系结构,网络就被限制首先获取这两个图像进行有意义的表示,然后在一个更高的层次上将它们组合。这与标准匹配方法类似,当第一次从两个图像的patches中提取特征,然后比较这些特征向量。然而,给定两个图像的特征表示,网络如何找到对应的信息?
为了在这个匹配的过程中帮助网络,我们引入了一个“关联层”,它在两个特性图之间执行乘法patch比较。图2(下图)显示了包含这一层的网络架构“FlowNetCorr”的说明。给定两个多通道特征映射f 1,f 2:R^2->R^c,其中w、h和c是它们的宽度、高度和通道数,我们的相关层让网络比较f 1和f 2的每个patch。
目前,我们只考虑对两个patch进行比较。在第一张图中,第一个映射的patch的中心x_1,第二个映射中patch的中心x_2,两个patch的“相关性”被定义为