【配准】空间变换网络Spatial Transformer Networks原理分析

 

说明:此文只分析STN层的原理。

STN由三个部分组成:

【配准】空间变换网络Spatial Transformer Networks原理分析_第1张图片

1、定位网络

生成空间变换参数,如二维仿射变换参数:a11,a12,a21,a22,t1,t2。

可以是任意的回归网络,如卷积网络,全连接网络等

2、栅格生成器  

由变换参数获取在输入特征图上面的采样位置。下面详细解释。

设U的shape为(H,W,C),对应于高、宽、通道数,我们想要变换之后的特征图为V,

V的shape为(H’,W’,C)。

首先我们根据V的尺寸定义一个H’*W’的栅格G,栅格上的每一个节点Gi就对应着变换后特征图V上对应像素的坐标(xit,yit)。

接下来我们要做的就是找到栅格上每一节点在输入特征图U上对应的坐标点(xis,yis),换句话说,就是对于输出特征图上的每个像素坐标(xit,yit),找到与之对应的输入特征图上的像素坐标(xis,yis),这个由矩阵乘法实现。

 

这样,栅格上每一个节点的位置就发生了扭曲生成了新的栅格,如下图。

            【配准】空间变换网络Spatial Transformer Networks原理分析_第2张图片

3、采样器

按理说,对于每一个输出特征图的位置(xit,yit),已经找到了在输入特征图上对应位置(xis,yis),只需要将(xis,yis)上的像素值复制到(xit,yit)位置上就可以生成输出特征图了。但是呢,(xis,yis)大多数情况算出来都是小数,所以用插值算法进行重采样就无法避免了。

插值算法由很多,下面以双线性插值算法为例。

 

Vi代表输出特征图V上面坐标为(xit,yit)的像素灰度值,Ui代表输入特征图U上面坐标为(xis,yis)的像素灰度值。

当(xis,yis)为整数,最后两个max函数要么为0要么为1,因此Vi=Ui。

当(xis,yis)为小数,那么Vi就是(xis,yis)四邻域的加权和。

 

 

总结:

空间变换网络的原理并不复杂,简单来说就是生成变换参数,生成扭曲后栅格,插值得到输出图像。我认为容易弄错的地方在于栅格的生成,是栅格和插值算法决定了生成特征图的每个点是由输入特征图的哪些点插值得来的。

你可能感兴趣的:(配准)