《Dynamic Filter Networks》动态过滤网络

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

《Dynamic Filter Networks》动态过滤网络

动态过滤模块包括:过滤器生成网络、动态过滤层

2.1 Filter-Generating Network

2.1.1 过滤器生成网络输入和输出?

输入: IARhwcAI_A \in R^{h * w * c_A}, h,w,cAh,w,c_A分别是高、宽、输入通道数;
输出:θRsscBnd\theta \in R^{s * s * c_B * n *d}, ss 是过滤器大小,cBc_B是输入特征B的通道数目,nn 是过滤器数目,对于动态卷积 d=1d=1,对于动态局部过滤 d=hwd=h * wss 是过滤器的感受野

ss可以自由设置取得更感受野,也可以堆叠多个提升感受野(可以用于包含大的局部位移的情况)。

2.1.2 怎么使用过滤器?

G=F(IB)G=F(I_B)
其中:
IBRhwcBI_B \in R^{h * w * c_B}是过滤器输入;
GRhwnG \in R^{h * w * n}是经过过滤器后的输出。

2.1.3 怎么实现过滤器生成网络?

多层感知机、卷积神经网络(适合图像任务)

2.2 Dynamic Filtering Layer

《Dynamic Filter Networks》动态过滤网络

动态过滤层有两种形式:动态卷积、动态局部过滤
图1和图2都是过滤器数目为1的情况:
图1是555 * 5的卷积核作为过滤器,在B上以次过滤器作为卷积核滑动,是不同位置共享的;
图2虽然是个立方体,但也是一个过滤器,只不过每个位置一个核,保存的时候拉成一列(也为555 * 5),用的时候每个位置一个卷积核恢复成原来形状使用即可。

2.2.1 动态卷积层

图2的a,和普通卷积一样计算,唯一不同就是卷积核参数是根据输入生成的(样本变卷积核变)

G(i,j)=Fθ(IB(i,j)) G(i,j)=F_{\theta}(I_B(i,j))

2.2.2 动态局部过滤层

属于动态卷积层的一个扩展,不再是平移不变的卷积核,每个位置都有单独的一个过滤器。

G(i,j)=Fθ(i,j)(IB(i,j)) G(i,j)=F_{\theta}^{(i,j)}(I_B(i,j))

从公式中 FF 的上标 (i,j)(i,j) 也可以看出每个位置都有一个单独的局部卷积核,整个过滤器有hwh * w卷积核;

如果每个滤波器都用softmax约束,则每个位置只包含一个非0元素,局部过滤层就可以把每个位置元素替换为它邻域元素,可以用输入IAI_A 来作为条件建模IBI_B的局部空间变形。

三、用处

可以用在光流估计、视频预测、深度估计、2D转3D、图像旋转扭曲;
共性就是用一张图或者多张图 预测另一张或多张图。