Dynamic Filter Networks
《Dynamic Filter Networks》NIPS 2016
论文链接:https://arxiv.org/abs/1605.09673
一、目的
卷积核参数训练完就是固定的,不够灵活,作者希望得到一个根据输入动态生成的过滤器。
提出dynamic filter module(filter-generating network 、dynamic filtering layer).
根据一个视角图预测其他视角(旋转人脸)、预测视频下一帧、2D变3D等等常用到类似方法。
二、Dynamic Filter Networks
动态过滤模块包括:过滤器生成网络、动态过滤层
2.1 Filter-Generating Network
2.1.1 过滤器生成网络输入和输出?
输入:
I
A
∈
R
h
∗
w
∗
c
A
I_A \in R^{h * w * c_A}
IA∈Rh∗w∗cA,
h
,
w
,
c
A
h,w,c_A
h,w,cA分别是高、宽、输入通道数;
输出:
θ
∈
R
s
∗
s
∗
c
B
∗
n
∗
d
\theta \in R^{s * s * c_B * n *d}
θ∈Rs∗s∗cB∗n∗d,
s
s
s 是过滤器大小,
c
B
c_B
cB是输入特征B的通道数目,
n
n
n 是过滤器数目,d是过滤核的个数,对于动态卷积
d
=
1
d=1
d=1,对于动态局部过滤
d
=
h
∗
w
d=h * w
d=h∗w ,
s
s
s 是过滤器的感受野
s s s可以自由设置取得更感受野,也可以堆叠多个提升感受野(可以用于包含大的局部位移的情况)。
2.1.2 怎么使用过滤器?
G
=
F
(
I
B
)
G=F(I_B)
G=F(IB)
其中:
I
B
∈
R
h
∗
w
∗
c
B
I_B \in R^{h * w * c_B}
IB∈Rh∗w∗cB是过滤器输入;
G
∈
R
h
∗
w
∗
n
G \in R^{h * w * n}
G∈Rh∗w∗n是经过过滤器后的输出。
2.1.3 怎么实现过滤器生成网络?
多层感知机、卷积神经网络(适合图像任务)
2.2 Dynamic Filtering Layer
动态过滤层有两种形式:动态卷积、动态局部过滤
图1和图2都是过滤器数目为1,feature map的channel为1的情况:
图1是
5
∗
5
5 * 5
5∗5的卷积核作为过滤器,在B上以次过滤器作为卷积核滑动,是不同位置共享的;
图2虽然是个立方体,但也是一个过滤器,只不过每个位置一个核,保存的时候拉成一列(也为
5
∗
5
5 * 5
5∗5),用的时候每个位置一个卷积核恢复成原来形状使用即可【图里只是个例子,每个位置的核怎设置为1*1也可以,看自己怎么用,关键是每个位置的过滤核不同】。
2.2.1 动态卷积层
图2的a,和普通卷积一样计算,唯一不同就是卷积核参数是根据输入生成的(样本变卷积核变)
G ( i , j ) = F θ ( I B ( i , j ) ) G(i,j)=F_{\theta}(I_B(i,j)) G(i,j)=Fθ(IB(i,j))
2.2.2 动态局部过滤层
属于动态卷积层的一个扩展,不再是平移不变的卷积核,每个位置都有单独的一个过滤器。
G ( i , j ) = F θ ( i , j ) ( I B ( i , j ) ) G(i,j)=F_{\theta}^{(i,j)}(I_B(i,j)) G(i,j)=Fθ(i,j)(IB(i,j))
从公式中 F F F 的上标 ( i , j ) (i,j) (i,j) 也可以看出每个位置都有一个单独的局部卷积核,整个过滤器有 h ∗ w h * w h∗w卷积核;
如果每个滤波器都用softmax约束,可以让每个位置的过滤核只选择一个最大的作为非0元素,这样局部过滤层就可以把每个位置元素替换为它邻域元素,可以用输入 I A I_A IA 来作为条件建模 I B I_B IB的局部空间形变。
三、用处
可以用在光流估计、视频预测、深度估计、2D转3D、图像旋转扭曲;
共性就是用一张图或者多张图 预测另一张或多张图。