《Dynamic Filter Networks》NIPS 2016
论文链接:https://arxiv.org/abs/1605.09673
卷积核参数训练完就是固定的,不够灵活,作者希望得到一个根据输入动态生成的过滤器。
提出dynamic filter module(filter-generating network 、dynamic filtering layer).
根据一个视角图预测其他视角(旋转人脸)、预测视频下一帧、2D变3D等等常用到类似方法。
动态过滤模块包括:过滤器生成网络、动态过滤层
输入: 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 = 1 d=1 d=1,对于动态局部过滤 d = h ∗ w d=h * w d=h∗w , s s s 是过滤器的感受野
s s s可以自由设置取得更感受野,也可以堆叠多个提升感受野(可以用于包含大的局部位移的情况)。
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是经过过滤器后的输出。
多层感知机、卷积神经网络(适合图像任务)
动态过滤层有两种形式:动态卷积、动态局部过滤
图1和图2都是过滤器数目为1的情况:
图1是 5 ∗ 5 5 * 5 5∗5的卷积核作为过滤器,在B上以次过滤器作为卷积核滑动,是不同位置共享的;
图2虽然是个立方体,但也是一个过滤器,只不过每个位置一个核,保存的时候拉成一列(也为 5 ∗ 5 5 * 5 5∗5),用的时候每个位置一个卷积核恢复成原来形状使用即可。
图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))
属于动态卷积层的一个扩展,不再是平移不变的卷积核,每个位置都有单独的一个过滤器。
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、图像旋转扭曲;
共性就是用一张图或者多张图 预测另一张或多张图。