1. 概述
2. Spatial Pyramid Network
2.1 Spatial Sampling
设 d ( ⋅ ) d(\cdot) d(⋅)为降采样函数,它将一个 m × n m×n m×n图像 I I I抽取到大小为 m 2 × n 2 \frac{m}{2}×\frac{n}{2} 2m×2n的相应图像d(I)。设 u ( ⋅ ) u(\cdot) u(⋅)是对图像进行上采样的反向操作。这些操作符还用于对光流场 V V V的水平和垂直分量进行下采样和上采样。我们还定义了一个warping operator w ( I , V ) w(I,V) w(I,V),它根据流场V,使用双线性插值处理输入图像 I I I。
2.2 Inference
设
G
0
,
.
.
.
,
G
K
{G_0,...,G_K}
G0,...,GK表示一组训练过的卷积神经网络(convnet)模型,每个模型都计算残差流,
v
k
v_k
vk:
v
k
=
G
k
(
I
k
1
,
w
(
I
k
2
,
u
(
V
k
−
1
)
)
,
u
(
V
k
−
1
)
)
(1)
v_k=G_k(I_k^1,w(I^2_k,u(V_{k-1})),u(V_{k-1})) \tag 1
vk=Gk(Ik1,w(Ik2,u(Vk−1)),u(Vk−1))(1)
在第
k
k
k个金字塔层。卷积网络
G
k
G_k
Gk使用来自前一个金字塔级的上采样流
V
k
−
1
V_{k−1}
Vk−1和在k级的帧
{
I
k
1
,
I
k
2
}
\{I_k^1,I_k^2\}
{Ik1,Ik2}来计算残差流
v
k
v_k
vk。第二帧
I
k
2
I_k^2
Ik2依据光流进行处理:
w
(
I
k
2
,
u
(
V
k
−
1
)
)
w(I_k^2,u(V_{k−1}))
w(Ik2,u(Vk−1))。在第
k
k
k层金字塔层的
V
k
V_k
Vk是:
V
k
=
u
(
V
k
−
1
)
+
v
k
(2)
V_k=u(V_{k-1})+v_k \tag 2
Vk=u(Vk−1)+vk(2)
我们从降采样图像 { I 0 1 , I 0 2 } \{I_0^1,I_0^2\} {I01,I02}和一个处处为零的初始流估计开始。将网络 G 1 G_1 G1和 { I 1 1 、 w ( I 1 2 、 u ( V 0 ) ) } \{I_1^1、w(I_1^2、u(V_0))\} {I11、w(I12、u(V0))}一起计算剩余流量 v 1 v_1 v1。在每个金字塔层级上,我们使用方程(2)计算流 V k V_k Vk。流 V k V_k Vk也类似地传播到更高分辨率的金字塔层,直到我们获得全分辨率的流 V K V_K VK。
3. Traning and network architecture
我们根据给定输入
{
I
k
1
,
w
(
I
k
2
,
u
(
V
k
−
1
)
)
、
u
(
V
k
−
1
)
}
\{I_k^1,w(I_k^2,u(V_{k−1}))、u(V_{k−1})\}
{Ik1,w(Ik2,u(Vk−1))、u(Vk−1)}独立地、顺序地训练每个
{
G
0
,
.
.
.
,
G
K
)
}
\{G_0,...,G_K)\}
{G0,...,GK)}。我们将目标残差流
v
^
k
\hat{v}_k
v^k作为目标流Vk在第k个金字塔水平的值与由训练得到的上采样流
u
(
V
k
−
1
)
u(V_{k−1})
u(Vk−1)的差值.
v
^
k
=
V
^
k
−
u
(
V
k
−
1
)
(3)
\hat{v}_k=\hat{V}_k-u(V_{k-1}) \tag 3
v^k=V^k−u(Vk−1)(3)
我们训练每个网络 G k G_k Gk,以最小化残差流 v k v_k vk的平均端点误差(EPE)损失.
w ( I k 2 , u ( V k − 1 ) ) w(I^2_k,u(V_{k-1})) w(Ik2,u(Vk−1))的输出是3 channel, u ( V k − 1 ) u(V_{k-1}) u(Vk−1)的输出是2 channel。所以,最后是将 G k G_k Gk的输入全部拼接成为一个8 channel的输入。该文训练了5个网络{G0,…,G4},这样每个网络 G k G_k Gk都使用之前的网络 G k − 1 G_{k−1} Gk−1作为初始化。
4. 结果
Reference:Optical Flow Estimation using a Spatial Pyramid Network