Spatial Transformer Networks

参考:https://zhuanlan.zhihu.com/p/37110107

            https://arxiv.org/abs/1506.02025

            https://arleyzhang.github.io/articles/7c7952f0/

局部最大池化层的引入使得CNN在特征位置变换上具有一定的空间不变性。但是最大池化层max-pooling的窗口通常很小2*2,因此这种空间不变形仅仅在比较深的网络层次结构上才会被体现出来,并且对于比较大的空间变换是无效的。CNNs对较大空间变换不具有空间不变性的原因是因为只有一个有限的、预先定义的池化机制来处理空间变换。

STN(spatial transformer network)可以包含在任意标准的神经网络中。与之前池化层不一样的地方是,空间变换模块可以对每一幅输入图像产生适当的形变。这些形变包含尺度变换、裁剪、旋转、以及非刚体形变。这使得包含STN的网络不仅仅能选中关注的区域,而且可以将这些区域转换成规范的、预期姿态,从而简化后续层的推理。值得注意的是,STN可以使用标准的反向传播进行训练,允许对注入的模型进行端到端的训练。

a)输入层;b)STN层;c)空间变换矫正后的层;d)输出的识别层。

STN整合在不同的CNNs网络,用来完成各种各样的任务:i)图像分类任务,STN可以将适当的区域裁剪并尺度归一化,可以简化后续的分类问题,并且使得分了性能更优。ii)共同定位,给定一些列未知对象的图,STN可以对他们进行统一定位。iii)空间关注,可以不通过强化训练,只通过反向传播实现注意力机制,只需要使用分辨率较低的输入就可以完成。

U是STN的输入特征图,localisation net是局部化网络。\theta是输入经过localisation net后退化的变换参数。G是生成的空间网格,\tau_{\theta } (G)是以\theta为参数,对所V中所有像素点G做采样操作。Sampler是一个差分图采样。V是输出的warp特征图

空间变换

spatial transformer是一个可微的模块,应在向前传播期间应用spatial transformation。如果是多通道的输入,则变换将应用于每一个通道。

localisation network:获取输入层,并通过多个隐藏层输出应被运用于特征图的空间遍布按参数\theta,即基于输入的转换网络。

Grid generator:用于预测的转换参数\theta创建的采样网格sampling grid  G,这些点集合将会被网格生成器grid generator采样到输出。

Sampler:将输入的特征图和采样网格输入到采样器,生成从输入点采样的输出映射。

3.1 Localisation Network

局部化网络localisation Network的输入是U\in R^{^{H\times W\times C}},其中W是宽width,H是高height,C是通道数channels,输出是\theta

\theta =f_{loc}(U),参数\theta的尺寸非常依赖于变换类型,例如仿射变换的参数就是6个维度。

localisation network函数f_{loc}()可以时任意的网络形式,既可以是全连接网络fully-connected network也可以是卷积网络convolutional network,但是应该包含一个最后的回归层final regression layer产生变换参数transformation parameters \theta

3.2 Parameterised Sampling Grid

为了warping输入特征图,每个输出的像素应该以输入图指定位置为中心的像素点应用采样核做计算。输出的像素位于规则的网格G=\{G_{i}\}其中G_{i} =(x_{i}^{t},y_{i}^{t}),形成的输出特征图V\in R^{^{​{H}'\times {W}'\times C}}{H}'{W}'分别是采样网格的高和宽,C采样网格的通道数,这与输入和输出的通道数是一致的。

a)图像U利用参数化采样网格\tau(G)产生输出V。采样网格是一个规则的G=\tau_I(G),其中I是一个恒等变换参数。b)warp的结果是采样网格在图像U上进行采样,仿射变换后产生图像V。

为了简化理解,假定\tau_{\theta }是2D仿射空间变换A_{\theta },则逐点仿射变换如下:

\left ( \begin{matrix} x_i^s \\ y_i^s \\ \end{matrix} \right )=\tau(G_i)=A_\theta \left(\begin{matrix} x_i^t \\ y_i^t \\ 1 \end{matrix} \right ) =\left[ \begin{matrix} \theta_{11} & \theta_{12} & \theta_{13} \\ \theta_{21} & \theta_{22} & \theta_{23} \end{matrix} \right]\left(\begin{matrix} x_i^t \\ y_i^t \\ 1 \end{matrix} \right )---------------------------(1)

\left(\begin{matrix} x_i^t \\ y_i^t \end{matrix} \right )是一个归约网格在输出特征图上的目标坐标。\left ( \begin{matrix} x_i^s \\ y_i^s \\ \end{matrix} \right )是原坐标。A_{\theta }是仿射变换矩阵,归一化输入图像的宽和高,-1\leqslant x_i^t,y_i^t\leqslant 1,同理输出图像-1\leqslant x_i^s,y_i^s\leqslant 1

公式(1)中可以进行裁剪、平移、旋转】放缩和倾斜操作,只需要A_{\theta }中的6个参数(localisation network计算)。

如果\tau_{\theta }被更强的约束,例如A_{\theta }的形式是

A_{\theta }=\left[ \begin{matrix} s &0 & t_x \\ 0 & s & t_y \end{matrix} \right]______________________(2)

公式(2)允许进行裁剪、平移、各向同性缩放,变量仅仅是st_xt_y

\tau_{\theta }也可以变成更通用的形式例如平面摄影变换、分段放射或者薄板样条。\tau_{\theta }可以转换为任何的参数化形式,它必须是可微的,可微的特性很重要,这样可以允许梯度的反向传播,从采样点\tau_\theta(G_i)到localisation network输出\theta。如果这种变换以一种结构化、低纬度的方式产生,这将降低分配给localisation network任务的复杂性。一个结构化可微变换的泛型类,它是注意力、仿射、投影、薄板样条变换的超集,\tau_\theta =M_\theta B,其中B是一个目标网格表示,B是一个在齐次坐标中的规范网格G,M_\theta是一个\theta参数化的矩阵。B\theta同时被学习。

3.3 differentiable Image Sampling可微图像采样

\tau_\theta(G)的坐标点\left ( \begin{matrix} x_i^s \\ y_i^s \\ \end{matrix} \right )定义了输入采样核的空间位置,以计算输出图像V中的指定位置。

V_i^c=\sum _n^H\sum_m^W{U_{nm}^ck(x_i^s-m;\phi _x)k(y_i^s-n;\phi_y )}\forall \in[1...H'W'] \forall_c\in[1...C]_________________(3)

\phi _x\phi_y是泛型采样核k()的参数,定义了图像插值的方式(双线性插值),U_{nm}^c是输入U在通道c位置(n,m)位置灰度值,V_i^c是输出V在通道c位置(x_i^t,y_i^t)像素i,所以可以看出每个通道都是以相同的方式进行变换的,这也保证了通道之间空间一致性。

理论上任何形式的采样核都可以使用,只要(子)梯度可以对x_i^sy_i^s进行求导。例如使用整形采样核减少公式(3)到(4)

V_i^c=\sum _n^H\sum_m^W{U_{nm}^c\delta(\left \lfloor x_i^s +0.5\right \rfloor -m)\delta(\left\lfloor y_i^s +0.5\right\rfloor-n)}_________________________________(4)

其中\left\lfloor x+0.5\right\rfloor是对x进行四舍五入,\delta()是一个克罗内克函数Krobecker delta function,该采样核等价于将输入位置(x_i^s,y_i^s)拷贝到输出位置(x_i^t,y_i^t),童谣的双线性采样核bilinear sampling kernel可以被使用。

V_i^c=\sum _n^H\sum_m^W{U_{nm}^cmax(0,1-|x_i^s-m|)max(0,1-|y_i^s-n|)}______________________________(5)

为了让损失通过这种采样机制反向传播,我们定义关于UG的梯度如下,对于双线性采样bilinear sampling (5)该这部分偏微分如下:

\frac{\partial V_i^c}{\partial U_{nm}^c} =\sum_n^H\sum_m^Wmax(0,1-|x_i^s-m|)max(0,1-|y_i^s-n|)_________________________________(6)

\frac{\partial V_i^c}{\partial x_i^s} =\sum_n^H\sum_m^WU_{nm}^smax(0,1-|y_i^s-n|)\{\begin {matrix} 0& if |m-x_i^s| \geqslant 1 \\ 1& if m\geqslant x_i^s \\ -1 & if m< x_i^s\end{matrix}________________________________(7)

类比公式(7)同样的,\frac{\partial V_i^c}{\partial y_i^s}

(偏)可微的采样机制被给定,允许损失梯度回流不仅到输入特征特征图(6)而且也回流到了采样网格坐标(7),并且传回到转换参数\theta和局部网络localisation network\frac{\partial x_i^s} {\partial \theta}\frac{\partial x_i^s} {\partial \theta}在公式(1)中很容易被计算。由于采样函数不连续性,因此必须使用子梯度。采样机制在GPU中实施起来非常有效,方法是忽略所有位置的和,而只查看每个输出像素的核支持区域。

3.4 spatial transformer network

从图2我们可以看到,spatial transformer由localisation network、grid generator和samper生成。这是一个自包含模块,可以放在CNN架构的任何位置,任何数量产生spatial transformer network。该模块计算速度非常快,几乎不消耗时间,如果有下采样操作甚至可以潜在的加速。

在CNN网络中放置空间变换网络,可以在训练期间最小化的减小代价函数。在训练过程中如何变换每个训练样本的知识,并且缓存在localisation network中,以及空间转换各层的权重。对于一些任务,也许有助于喂入localisation network输出,\theta,前向到剩余的网络,因为它显示的编码了平移、姿态、区域和对象。

它也可以使用空间变换去下采样或者上采样一张特征图,获取一个有别于输入H\times WH'\times W',然而对于固定的采样核,小空间支持(如双线性采样核),利用空间变换下采样可能导致混叠效果。

在CNN中可以有多个STN,允许对越来越抽象的信息进行转换,也可以为localisation network提供更有信息的表示,以便根据预测信息转换参数进行转换。也可以同时使用多个空间转换器,如果多个对象或者感兴趣的部分需要单独关注时就十分有效了。这种架构在前馈神经网络中的限制是,平行的空间变换个数限制了网络能够建模的对象数量。

 

 

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值