通过空间变换器网络 (spatial transformer networks,STN) 修改动态空间信息,模型可以处理后续任务的缩放和旋转等变换。它们使模型能够专注于重要的视觉区域,同时最大限度地减少对池化层的依赖,从而提高识别准确性。尽管 STN 在多项研究中被广泛报道,但本博客仍深入探讨了 STN 的功能优势和劣势。我们还研究了 P-STN,这是 2020 年的潜在升级,包括增强的变换和更高的效率。构建更具适应性和精确性的机器学习模型依赖于对 STN 及其进步的理解。
免责声明:本节的大部分内容受到空间变换网络原始论文的启发 [2,3]
空间变换网络(STN):
Max Jaderberg 等人开发的 STN(空间变换网络)模块可以学习调整模型中的空间信息,使其更能抵抗扭曲等变化。在 STN 出现之前,实现这一点需要多层最大池化。与池化层不同,池化层检查的区域固定且较小,空间变换器可以通过对每个输入应用不同的变换来动态更改图像或特征图。这些变换会影响整个特征图,包括缩放、裁剪、旋转和弯曲。
此功能使网络能够专注于图像的重要部分(这一过程称为注意力),并将这些部分调整到标准位置,从而更容易在后续层中识别它们。STN 通过处理空间变换扩展了注意力模块的概念。它们可以使用常规反向传播进行训练,这意味着可以一次性训练整个模型。STN 可用于各种任务,包括图像分类、定位对象和管理空间注意力。
图 1:STN(来源:https ://arxiv.org/pdf/1612.03897.pdf )
STN 由以下 3 个部分组成:
本地化网络
网格生成器
采样器
1. 本地化网络:
它以特征图 U ∈ RH∗W∗C 作为输入,输出变换参数 (θ = floc(U))。它可以采用任何形式,但应包含最终的回归层以生成变换参数 θ
2.参数化网格采样:
通过应用以输入特征图的每个位置为中心的采样核来计算输出像素。唯一的限制是变换应该与参数不同,以允许反向传播。一个好的启发式方法是预测以低维方式参数化的变换,以便降低分配给定位网络的任务的复杂性,并且它还可以了解目标网格表示。例如,如果τ_θ = M_θB,其中B是目标表示。因此,也可以学习θ和B。
在我们的例子中,我们分析二维变换,下面的方程可以概括:
3.可区分图像采样:
可微分图像采样 要对输入特征图执行空间变换,采样器必须获取一组采样点 Tθ(G) 以及输入特征图 U,并生成采样输出特征图 V。τθ(G) 中的每个 (xsi , ys i ) 坐标定义了输入中的空间位置,在此位置应用采样核以获取输出 V 中特定像素的值。这可以写成:
其中 Φₓ 和 Φᵧ 是通用采样核 k() 的参数,它定义图像插值(例如双线性),U^c_{nm} 是输入通道 c 中位置 (n, m) 处的值,V^c_i 是通道 c 中位置 (x^t_i , y^t_i ) 处像素 i 的输出值。请注意,对输入的每个通道进行相同的采样,因此每个通道都进行相同的变换(这保持了通道之间的空间一致性)。
理论上,只要能够根据 x^s_i 和 y^s_i 定义(子)梯度,就可以使用任何采样核。例如,使用整数采样核可将上式简化为:
其中 [x+ 0.5] 将 x 四舍五入为最接近的整数,δ() 是克罗内克 delta 函数。此采样内核相当于将 (xsi, ys i) 最接近像素的值复制到输出位置 (xti, yt i)。或者,可以使用双线性采样内核,给出
为了允许通过这种采样机制反向传播损失,我们可以定义关于 U 和 G 的梯度。对于上述方程的双线性采样,偏导数为
这为我们提供了一种(次)可微采样机制,允许损失梯度不仅流回输入特征图,还可以流回采样网格坐标,从而流回变换参数 θ 和定位网络,因为 ∂x^{s}_i / ∂θ 和 ∂y^{s}_{i}/ ∂θ 可以轻松推导出来。由于采样函数不连续,必须使用次梯度。这种采样机制可以在 GPU 上非常有效地实现,方法是忽略所有输入位置的总和,而只查看每个输出像素的内核支持区域。
为了更好地进行扭曲,可以通过将一个 STN 的输出传递到下一个 STN(如 [2] 中所示)并将附加输入传递到条件(如 [1] 中所示)来级联 STN
STN 的优点和缺点:
STN 的总体优点是:
STN 非常快,并且应用程序不需要对下游模型进行太多修改
它们还可用于对特征图进行下采样或过采样(使用固定的小支持进行下采样可能会导致混叠效应)
可以使用多个 STN。组合可以是串联的(用于更复杂的特征学习,一个 STN 的输入进入另一个 STN,带或不带未扭曲的条件输入)。
当图像中有多个部分需要关注时,并行组合是有效的(事实证明,在 CUB-200-2011 鸟类分类数据集上使用的 2 个 STN 中,一个成为头部检测器,另一个成为身体检测器)
然而,众所周知,STN 存在以下两个缺陷:
1. 边界效应是在图像传播时产生的,而不是几何信息(例如,如果图像旋转,STN 可以修复旋转,但不能修复切角等退化的边界效应)。这可以通过边界感知采样来解决:
2. 单一 STN 应用不足以学习复杂的转换 这可以通过具有多尺度转换的层次级联 STN(即串联 STN)来解决。
3. 训练难度:由于对转换参数的小错误预测很敏感,训练起来很困难——在 P-STN 中已解决(见下文)
4. 对错误的敏感性:错误预测的变换可能导致定位不佳,从而对下游任务产生不利影响 - 在 P-STN 中得到解决(如下)
P-STN:STN 的改进版本
Schwöbel 等人提出的概率空间变换网络 (P-STN)通过在变换过程中引入概率框架解决了限制 3 和 4。P-STN 不是预测单个确定性变换,而是估计可能变换的分布(概率变换)。
图 2:P-STN 管道。从观察到的图像 I 中,估计变换的分布。来自该分布的样本被应用于观察到的图像以产生增强样本,这些样本被馈送到对样本进行平均的分类器。在确定性 STN 情况下,定位器仅计算一个变换 θ(I),这可以被认为是最大似然解。在这种情况下,我们获得单个 T_{θ}^{I},而不是多个变换样本
这种概率方法提供了几个关键的改进:
1.通过边缘化实现稳健性:
多重变换:通过从估计分布中抽样多个变换,P-STN 可以有效地从各个角度“查看”输入。这种对变换的边缘化可以减轻任何单个错误预测变换的影响。
更平滑的损失景观:通过多次转换的整合可以产生更稳定、更平滑的损失景观,从而实现更轻松、更可靠的训练。
2.增强数据增强:
学习增强:随机变换作为学习数据增强的一种形式,自动生成多样化的训练样本,以提高模型的泛化能力。
改进的下游性能:这种增强可以提高分类准确性、增强稳健性并改进模型校准。
3.适用于不同领域:
虽然 P-STN 最初是为图像数据设计的,但其概率特性使其能够有效地推广到非视觉领域,例如时间序列数据,进一步证明了其多功能性。
这些变化的数学方程如下:
优势举例:
降低对转换误差的敏感度:
STN 损失∝单次变换的负对数似然
P-STN 损失∝多个变换的平均负对数似然
通过对多个转换取平均,P-STN 减少了任何单一错误转换的影响,从而实现了更加稳定和可靠的训练过程。
改进校准:
校准误差_STN > 校准误差_P-STN
P-STN 考虑多种转换的方法可以得到校准更好的概率,与 STN 相比,校准误差更低就是明证。
概率空间变换网络通过引入可能的空间变换分布来增强原始 STN 框架。这种概率方法可以实现更稳健的训练、有效的数据增强、更好的分类性能和更精确的模型。P-STN 中变分推理和蒙特卡洛采样的集成提供了一种处理变换不确定性的原则性方法,这使其比传统 STN 有了显著的进步。
参考
Paper: IC-STN: https://arxiv.org/pdf/1612.03897.pdf
STN: https://paperswithcode.com/method/stn
Video: https://www.youtube.com/watch?v=6NOQC_fl1hQ&t=162s (with slides, CV reading group resources)
Paper: Lenc and A. Vedaldi. Understanding image representations by measuring their equivariance and equivalence. CVPR, 2015 (defines affine invariance, equivariance, and equivalence criterion)
STN — PyTorch Implementation: https://pytorch.org/tutorials/ intermediate/spatial_transformer_tutorial.html
Scatter Nets: https://paperswithcode.com/paper/ invariant-scattering-convolution-networks#code
P-STN: https://backend.orbit.dtu.dk/ws/portalfiles/portal/280953750/2004.03637.pdf