文章目录
CNN存在的问题
CNN定义了非常强大的分类模型,但是仍然受到缺乏在计算和参数效率上对输入数据空间不变性能力的限制。即,当输入图像因随机平移、缩放、旋转、混乱而失真时,CNN模型的分类准确率将会下降。
Spatial Transformer
它是对CNN的改进, 增加了一个Spatial Transformer 模块, 可以对网络内的数据进行空间操作(spatial manipulation). 这个模块可以插入到现有的CNN模块中, 使得网络能够主动的空间变换feature maps, 通过训练确定特定输入对应的空间变换
使用空间变换器的结果是模型能够学习到了对平移、缩放、旋转和更多通用的warping的不变性,得到最先进的性能.
它在这几个方面可以受益:
- 图像分类
- co-localisation(共同定位?), 给定一个包含相同但未知的类的不同实例的图像, 它可以被用于localise, … 不太理解这个地方2333
- spatial attention: spatial transformer可以用于需要注意力机制的任务
方法
The spatial transformer被分成3个部分, 第一个是localisation network, 它把feature map作为输入, 通过一系列隐层, 输出一些应该被用于spatial transformation的参数,
在第二部分 grid generator中, 这些被预测的参数被用于创造sampling grid, 这是一组点, 输入的map应该被这些点采样成transformed output
最后feature map和 sampling grid 作为sampler的输入, 产生在grid points从输入采样的输出map
总结来说:
它完成的是一个将输入特征图进行一定的变换的过程,而具体如何变换,是通过在训练过程中学习来的,更通俗地将,该模块在训练阶段学习如何对输入数据进行变换更有益于模型的分类,然后在测试阶段应用已经训练好的网络对输入数据进行执行相应的变换,从而提高模型的识别率。

Localisation Network
U ∈ R H ∗ W ∗ C U\text∈ R^{H*W*C} U∈RH∗W∗C: 输入特征图
θ \theta θ: 被用在feature map上的 transformation T θ T_{\theta} Tθ 的参数, θ = f l o c ( U ) \theta \text= f_{loc}(U) θ=floc(U), t h e t a theta theta的大小依赖于transformation的类型, 比如对于二维仿射变换是6维度
对于仿射变换的相关知识参照附录
localisation network function f l o c ( ) f_{loc}() floc() 可以是任何形式, fc 或者CNN都行, 但是最后应该有个regression layer来产生 θ \theta θ
Parameterised Sampling Grid
该层利用Localisation 层输出的变换参数 θ \theta θ,将输入的特征图进行变换
例如输出特征图上某一位置 ( x i t , y i t ) (x^t_i, y^t_i) (xit,

本文介绍了CNN在处理变换输入时存在的问题,提出了一种名为Spatial Transformer的方法,通过Localisation Network预测参数,Parameterised Sampling Grid生成采样网格,Differentiable Image Sampling进行图像采样,从而使模型能学习到空间变换的不变性。Spatial Transformer在图像分类、共同定位和注意力机制任务中表现出优势。在PyTorch中,可以使用F.affine_grid和F.grid_sample实现Spatial Transformer。
最低0.47元/天 解锁文章
4106

被折叠的 条评论
为什么被折叠?



