paper题目:Spatial Transformer Networks
paper是Google DeepMind发表在NIPS 2015的工作
paper地址:链接
卷积神经网络定义了一类异常强大的模型,但仍受限于缺乏以计算和参数有效的方式对输入数据保持空间不变的能力。在这项工作中,我们引入了一个新的可学习模块,即 Spatial Transformer,它明确允许对网络内的数据进行空间操作。这个可微分模块可以插入到现有的卷积架构中,使神经网络能够根据特征图本身对特征图进行主动空间变换,而无需任何额外的训练监督或对优化过程的修改。我们展示了空间变换器的使用导致模型学习平移、缩放、旋转和更通用的变形的不变性,从而在多个基准测试和许多类别的变换中产生最先进的性能。
近年来,通过采用快速、可扩展、端到端的学习框架卷积神经网络(CNN)[18],计算机视觉的格局发生了巨大的变化和推动。尽管不是最近的发明,但我们现在看到大量基于 CNN 的模型在分类、定位、语义分割和动作识别任务等方面取得了最先进的结果。
能够对图像进行推理的系统的一个理想属性是从纹理和形状中解开目标姿势和部分变形。在 CNN 中引入局部最大池化层有助于满足这一特性,因为它允许网络在一定程度上对特征位置具有空间不变性。然而,由于对最大池化(例如 2 × 2 像素)的空间支持通常很小,这种空间不变性仅在最大池化和卷积的深层层次结构以及 CNN 中的中间特征图(卷积层激活)上实现对输入数据的大转换实际上不是不变的 [5, 19]。 CNN 的这种限制是由于只有一个有限的、预定义的池化机制来处理数据空间排列的变化。
在这项工作中,我们引入了 Spatial Transformer 模块,该模块可以包含在标准神经网络架构中以提供空间转换功能。空间变换器的动作取决于单个数据样本,并在针对相关任务的训练期间学习适当的行为(无需额外监督)。与池化层不同,池化层的感受野是固定的和局部的,空间变换器模块是一种动态机制,可以通过为每个输入样本生成适当的变换来主动地空间变换图像(或特征图)。然后在整个特征图(非局部)上执行转换,可以包括缩放、裁剪、旋转以及非刚性变形。这使得包含空间变换器的网络不仅可以选择图像中最相关(注意)的区域,还可以将这些区域转换为规范的、预期的姿势,以简化后续层中的推理。值得注意的是,空间转换器可以通过标准的反向传播进行训练,从而允许对它们注入的模型进行端到端的训练。
空间变换器可以整合到 CNN 中以有利于多种任务,例如:(i) 图像分类:假设 CNN 被训练为根据图像是否包含特定数字(其中图像的位置和大小)执行图像的多路分类。 数字可能随每个样本显著变化(并且与类别不相关);一个空间变换器可以裁剪出适当的区域并进行尺度归一化,可以简化后续的分类任务,并带来出色的分类性能,见图 1; (ii) 共定位:给定一组包含相同(但未知)类的不同实例的图像,可以使用空间变换器在每个图像中定位它们; (iii) 空间注意:空间变换器可用于需要注意力机制的任务,例如在 [11, 29] 中,但更灵活,可以纯粹通过反向传播进行训练,无需强化学习。使用注意力的一个关键好处是,可以使用转换后的(并因此参与)较低分辨率的输入来支持更高分辨率的原始输入,从而提高计算效率。
图 1:使用空间变换器作为全连接网络的第一层的结果,该网络针对扭曲的 MNIST 数字分类进行了训练。 (a) 空间变换器网络的输入是 MNIST 数字的图像,该图像因随机平移、缩放、旋转和杂波而失真。 (b) 空间变换器的定位网络预测要应用于输入图像的变换。 © 应用变换后的空间变换器的输出。(d) 后续全连接网络对空间变换器输出的分类预测。空间变换器网络(一个包含空间变换器模块的 CNN)仅使用类标签进行端到端训练——系统没有提供ground truth变换的知识。
在本节中,我们将讨论与本文相关的先前工作,涵盖使用神经网络建模转换的中心思想 [12、13、27]、学习和分析转换不变表示 [3、5、8、17、19、25 ],以及特征选择的注意力和检测机制[1、6、9、11、23]。
Hinton [12] 的早期工作着眼于为目标部分分配规范的参考框架,这一主题在 [13] 中反复出现,其中对 2D 仿射变换进行建模以创建由变换部分组成的生成模型。生成训练方案的目标是转换后的输入图像,输入图像和目标之间的转换作为网络的附加输入。结果是一个生成模型,它可以学习通过组合部分来生成目标的变换图像。 Tieleman [27] 进一步提出了变换部分组合的概念,其中学习的部分被明确地仿射变换,变换由网络预测。这种生成胶囊模型能够从转换监督中学习用于分类的判别特征。
在 [19] 中,通过估计原始图像和变换图像的表示之间的线性关系,研究了 CNN 表示对输入图像转换的不变性和等变性。 Cohen & Welling [5] 分析了这种与对称群相关的行为,这也在 Gens & Domingos [8] 提出的架构中得到了利用,从而产生了对对称群更加不变的特征图。设计变换不变表示的其他尝试是散射网络 [3],以及构建变换滤波器的滤波器组的 CNN [17、25]。斯托伦加等人。 [26] 使用基于网络激活的策略来控制网络过滤器对同一图像的后续前向传递的响应,因此可以关注特定特征。在这项工作中,我们的目标是通过操纵数据而不是特征提取器来实现不变表示,这是在 [7] 中为聚类所做的。
具有选择性注意的神经网络通过裁剪来操纵数据,因此能够学习翻译不变性。诸如 [1, 23] 的工作通过强化学习进行训练,以避免需要可微分注意力机制,而 [11] 通过在生成模型中利用高斯核来使用可微分注意机制。 Girshick 等人的工作。 [9] 使用区域提议算法作为注意力的一种形式,[6] 表明可以使用 CNN 回归显著区域。我们在本文中提出的框架可以看作是对任何空间变换的可微注意力的概括。
在本节中,我们将描述空间变换器的公式。这是一个可微分模块,它在单次前向传递期间将空间变换应用于特征图,其中变换以特定输入为条件,产生单个输出特征图。对于多通道输入,对每个通道应用相同的变形。为简单起见,在本节中,我们考虑单个变换和每个变换器的单个输出,但是我们可以推广到多个变换,如实验所示。
空间变换机制分为三个部分,如图 2 所示。为了计算,首先一个定位网络(第 3.1 节)获取输入特征图,并通过多个隐藏层输出空间变换的参数这应该应用于特征图——这给出了一个以输入为条件的转换。然后,预测的变换参数用于创建一个采样网格,它是一组点,应该对输入图进行采样以产生变换后的输出。这是由网格生成器完成的,在第 3.2 节中描述。最后,将特征图和采样网格作为采样器的输入,生成从网格点处的输入采样的输出图(第 3.3 节)。
图 2:空间变换器模块的架构。输入特征图 U U U被传递到一个定位网络,该网络对变换参数 θ \theta θ进行回归。 V V V上的规则空间网格 G G G被转换为采样网格 T θ ( G ) \mathcal{T}_{\theta}(G) Tθ(G),如 Sect 3.3中所述,将其应用于 U U U。产生扭曲的输出特征图 V V V。定位网络和采样机制的结合定义了空间变换器。
这三个组件的组合形成了一个空间变换器,现在将在以下部分中更详细地描述。
定位网络采用宽度为 W W W、高度为 H H H和 C C C个通道的输入特征图 U ∈ R H × W × C U \in \mathbb{R}^{H \times W \times C} U∈RH×W×C并输出 θ \theta θ,要应用于特征图的变换 T θ \mathcal{T}_{\theta} Tθ的参数: θ = f loc ( U ) \theta=f_{\text {loc }}(U) θ=floc (U)。 θ \theta θ的大小可以根据参数化的变换类型而变化,例如对于仿射变换, θ \theta θ是 6 维的,如 (1) 中所示。
定位网络函数 f loc ( ) f_{\text {loc }}() floc ()可以采用任何形式,例如全连接网络或卷积网络,但应包括最终回归层以产生转换参数 θ \theta θ。
为了执行输入特征图的变形,每个输出像素是通过应用以输入特征图中特定位置为中心的采样内核来计算的(这将在下一节中完整描述)。通过像素,我们指的是通用特征图的元素,不一定是图像。通常,输出像素被定义为位于像素 G i = ( x i t , y i t ) G_{i}=\left(x_{i}^{t}, y_{i}^{t}\right) Gi=(xit,yit)的规则网格 G = { G i } G=\left\{G_{i}\right\} G={Gi}上,形成输出特征图 V ∈ R H ′ × W ′ × C V \in \mathbb{R}^{H^{\prime} \times W^{\prime} \times C} V∈RH′×W′×C,其中 H ′ H^{\prime} H′和 W ′ W^{\prime} W′是网格的高度和宽度, C C C是通道数,在输入和输出中是一样的。
为了清楚说明,暂时假设
T
θ
\mathcal{T}_{\theta}
Tθ是 2D 仿射变换
A
θ
\mathrm{A}_{\theta}
Aθ。我们将在下面讨论其他转换。在这种仿射情况下,逐点变换是
(
x
i
s
y
i
s
)
=
T
θ
(
G
i
)
=
A
θ
(
x
i
t
y
i
t
1
)
=
[
θ
11
θ
12
θ
13
θ
21
θ
22
θ
23
]
(
x
i
t
y
i
t
1
)
(
1
)
\left(xsiysi
其中
(
x
i
t
,
y
i
t
)
\left(x_{i}^{t}, y_{i}^{t}\right)
(xit,yit)是输出特征图中规则网格的目标坐标,
(
x
i
s
,
y
i
s
)
\left(x_{i}^{s}, y_{i}^{s}\right)
(xis,yis)是输入特征图中定义样本点的源坐标,
A
θ
\mathrm{A}_{\theta}
Aθ是仿射变换矩阵。我们使用高度和宽度归一化坐标,使得
−
1
≤
x
i
t
,
y
i
t
≤
1
-1 \leq x_{i}^{t}, y_{i}^{t} \leq 1
−1≤xit,yit≤1当在输出的空间范围内时,并且
−
1
≤
x
i
s
,
y
i
s
≤
1
-1 \leq x_{i}^{s}, y_{i}^{s} \leq 1
−1≤xis,yis≤1当在输入的空间范围内时(对于
y
y
y坐标)。源/目标变换和采样等价于图形中使用的标准纹理映射和坐标。
(1) 中定义的变换允许对输入特征图应用裁剪、平移、旋转、缩放和倾斜,并且只需要定位网络产生 6 个参数( A θ A_{\theta} Aθ的 6 个元素)。它允许裁剪,因为如果变换是收缩(即左侧 2 × 2 子矩阵的行列式的幅度小于单位),则映射的规则网格将位于面积小于 x i s , y i s x_{i}^{s}, y_{i}^{s} xis,yis范围的平行四边形中。与恒等变换相比,这种变换对网格的影响如图 3 所示。
图 3:将参数化采样网格应用于生成输出 V V V的图像 U U U的两个示例。(a) 采样网格是规则网格 G = T I ( G ) G=\mathcal{T}_{I}(G) G=TI(G),其中 I I I是恒等变换参数。 (b) 采样网格是用仿射变换 T θ ( G ) \mathcal{T}_{\theta}(G) Tθ(G)扭曲规则网格的结果。
转换类
T
θ
\mathcal{T}_{\theta}
Tθ可能受到更多限制,例如用于注意力的转换
A
θ
=
[
s
0
t
x
0
s
t
y
]
\mathrm{A}_{\theta}=\left[s0tx0sty
允许通过改变
s
,
t
x
s, t_{x}
s,tx和
t
y
t_{y}
ty进行裁剪、平移和各向同性缩放。变换
T
θ
\mathcal{T}_{\theta}
Tθ也可以更一般化,例如具有 8 个参数的平面投影变换、分段仿射或薄板样条。实际上,转换可以具有任何参数化形式,只要它在参数方面是可微的——这至关重要地允许梯度从样本点
T
θ
(
G
i
)
\mathcal{T}_{\theta}\left(G_{i}\right)
Tθ(Gi)反向传播到定位网络输出
θ
\theta
θ。如果转换以结构化的低维方式进行参数化,则可以降低分配给定位网络的任务的复杂性。例如,一类结构化和可微分变换是注意力、仿射、投影和薄板样条变换的超集,是
T
θ
=
M
θ
B
\mathcal{T}_{\theta}=M_{\theta} B
Tθ=MθB,其中
B
B
B是目标网格表示(例如,在(1)中,
B
B
B是齐次坐标中的规则网格
G
G
G),并且
M
θ
M_{\theta}
Mθ是由
θ
\theta
θ参数化的矩阵。在这种情况下,不仅可以学习如何预测样本的
θ
\theta
θ,还可以学习手头任务的
B
B
B。
为了对输入特征图执行空间变换,采样器必须获取一组采样点 T θ ( G ) \mathcal{T}_{\theta}(G) Tθ(G),以及输入特征图 U U U,并生成采样的输出特征图 V V V。
T
θ
(
G
)
\mathcal{T}_{\theta}(G)
Tθ(G)中的每个
(
x
i
s
,
y
i
s
)
\left(x_{i}^{s}, y_{i}^{s}\right)
(xis,yis)坐标定义了输入中的空间位置,其中应用采样内核来获取输出
V
V
V中特定像素的值。这可以写成
V
i
c
=
∑
n
H
∑
m
W
U
n
m
c
k
(
x
i
s
−
m
;
Φ
x
)
k
(
y
i
s
−
n
;
Φ
y
)
∀
i
∈
[
1
…
H
′
W
′
]
∀
c
∈
[
1
…
C
]
(
3
)
V_{i}^{c}=\sum_{n}^{H} \sum_{m}^{W} U_{n m}^{c} k\left(x_{i}^{s}-m ; \Phi_{x}\right) k\left(y_{i}^{s}-n ; \Phi_{y}\right) \forall i \in\left[1 \ldots H^{\prime} W^{\prime}\right] \quad \forall c \in[1 \ldots C]\quad(3)
Vic=n∑Hm∑WUnmck(xis−m;Φx)k(yis−n;Φy)∀i∈[1…H′W′]∀c∈[1…C](3)
其中
Φ
x
\Phi_{x}
Φx和
Φ
y
\Phi_{y}
Φy是定义图像插值(例如双线性)的通用采样内核
k
(
)
k()
k()的参数,
U
n
m
c
U_{n m}^{c}
Unmc是输入通道
c
c
c中位置
(
n
,
m
)
(n, m)
(n,m)处的值,
V
i
c
V_{i}^{c}
Vic是输出值对于通道
c
c
c中位置
(
x
i
t
,
y
i
t
)
\left(x_{i}^{t}, y_{i}^{t}\right)
(xit,yit)处的像素
i
i
i。请注意,输入的每个通道的采样都是相同的,因此每个通道都以相同的方式进行转换(这保持了通道之间的空间一致性)。
理论上,可以使用任何采样内核,只要可以针对
x
i
s
x_{i}^{s}
xis和
y
i
s
y_{i}^{s}
yis定义(子)梯度。例如,使用整数采样内核将 (3) 简化为
V
i
c
=
∑
n
H
∑
m
W
U
n
m
c
δ
(
⌊
x
i
s
+
0.5
⌋
−
m
)
δ
(
⌊
y
i
s
+
0.5
⌋
−
n
)
V_{i}^{c}=\sum_{n}^{H} \sum_{m}^{W} U_{n m}^{c} \delta\left(\left\lfloor x_{i}^{s}+0.5\right\rfloor-m\right) \delta\left(\left\lfloor y_{i}^{s}+0.5\right\rfloor-n\right)
Vic=n∑Hm∑WUnmcδ(⌊xis+0.5⌋−m)δ(⌊yis+0.5⌋−n)
其中
⌊
x
+
0.5
⌋
\lfloor x+0.5\rfloor
⌊x+0.5⌋将
x
x
x舍入为最接近的整数,而
δ
(
)
\delta()
δ()是 Kronecker delta 函数。该采样内核等同于仅将距离
(
x
i
s
,
y
i
s
)
\left(x_{i}^{s}, y_{i}^{s}\right)
(xis,yis)的最近像素处的值复制到输出位置
(
x
i
t
,
y
i
t
)
\left(x_{i}^{t}, y_{i}^{t}\right)
(xit,yit).。或者,可以使用双线性采样内核,给出
V
i
c
=
∑
n
H
∑
m
W
U
n
m
c
max
(
0
,
1
−
∣
x
i
s
−
m
∣
)
max
(
0
,
1
−
∣
y
i
s
−
n
∣
)
V_{i}^{c}=\sum_{n}^{H} \sum_{m}^{W} U_{n m}^{c} \max \left(0,1-\left|x_{i}^{s}-m\right|\right) \max \left(0,1-\left|y_{i}^{s}-n\right|\right)
Vic=n∑Hm∑WUnmcmax(0,1−∣xis−m∣)max(0,1−∣yis−n∣)
为了允许通过这种采样机制反向传播损失,我们可以定义关于
U
U
U和
G
G
G的梯度。对于双线性采样 (5),偏导数是
∂
V
i
c
∂
U
n
m
c
=
∑
n
H
∑
m
W
max
(
0
,
1
−
∣
x
i
s
−
m
∣
)
max
(
0
,
1
−
∣
y
i
s
−
n
∣
)
∂
V
i
c
∂
x
i
s
=
∑
n
H
∑
m
W
U
n
m
c
max
(
0
,
1
−
∣
y
i
s
−
n
∣
)
{
0
if
∣
m
−
x
i
s
∣
≥
1
1
if
m
≥
x
i
s
−
1
if
m
<
x
i
s
(
7
)
∂Vci∂Ucnm=H∑nW∑mmax(0,1−|xsi−m|)max(0,1−|ysi−n|)∂Vci∂xsi=H∑nW∑mUcnmmax(0,1−|ysi−n|){0 if |m−xsi|≥11 if m≥xsi−1 if m<xsi
对于
∂
V
i
c
∂
y
i
s
\frac{\partial V_{i}^{c}}{\partial y_{i}^{s}}
∂yis∂Vic,与 (7) 类似。
这为我们提供了一个(子)可微分采样机制,允许损失梯度不仅流回输入特征图(6),而且流回采样网格坐标(7),因此返回变换参数 θ \theta θ和定位网络因为 ∂ x i s ∂ θ \frac{\partial x_{i}^{s}}{\partial \theta} ∂θ∂xis和 ∂ x i s ∂ θ \frac{\partial x_{i}^{s}}{\partial \theta} ∂θ∂xis可以很容易地从(1)推导出来。由于采样函数的不连续性,必须使用子梯度。这种采样机制可以在 GPU 上非常有效地实现,方法是忽略所有输入位置的总和,而只查看每个输出像素的内核支持区域。
定位网络、网格生成器和采样器的组合形成了空间变换器(图 2)。这是一个独立的模块,可以在任何时候以任意数量放入 CNN 架构中,从而产生空间变换器网络。该模块的计算速度非常快,并且不会影响训练速度,在使用时会导致非常少的时间开销,甚至由于可以应用于转换器输出的后续下采样,可能会在注意力模型中加速。
在 CNN 中放置空间转换器可以让网络学习如何主动转换特征图,以帮助在训练期间最小化网络的整体成本函数。在训练期间,如何转换每个训练样本的知识被压缩并缓存在定位网络的权重(以及空间变换器之前的层的权重)中。对于某些任务,将定位网络的输出 θ \theta θ转发给网络的其余部分也可能很有用,因为它显式地编码了区域或目标的变换,因此也编码了位姿。
也可以使用空间变换器对特征图进行下采样或过采样,因为可以将输出维度 H ′ H^{\prime} H′和 W ′ W^{\prime} W′定义为与输入维度 H H H和 W W W不同。但是,对于具有固定的小空间支持的采样内核(例如双线性内核),使用空间变换器进行下采样会导致混叠效应。
最后,在一个 CNN 中可以有多个空间转换器。将多个空间变换器放置在网络的不断增加的深度允许对越来越抽象的表示进行转换,并且还为定位网络提供了潜在的更多信息表示,以作为预测转换参数的基础。还可以并行使用多个空间变换器——如果特征图中有多个目标或感兴趣的部分应该单独关注,这将很有用。这种架构在纯前馈网络中的一个限制是并行空间转换器的数量限制了网络可以建模的目标数量。