前期阅读博客 详细解读Spatial Transformer Networks
卷积神经网络结构变化——Spatial Transformer Networks
STN只要结构就是三个:localisation net、grid generator、sampler
总述一下工作流程:先是用localisation net回归出仿射矩阵的6个参数,注意这个仿射矩阵是计算坐标的不是计算像素值的。
接着从目标图像 像 原图像映射。此时也是坐标映射。比方说选定目标图像的一个坐标a,需要知道这个坐标 的像素值是什么。那么就用localisation 学到的仿射矩阵,计算出坐标a在原图像中的对应坐标是哪个,这里设 为坐标b。如果这个坐标b是整数,比方说[2,3],那么就意味着坐标a就是与坐标b相对应,则目标图像中坐标a 的像素值就是原图像中坐标b的像素值。
如果,计算出所有的坐标b都是整数的话,其实就不需要grid generator和sampler做什么了。可现实偏偏很骨 感,计算出坐标b是小数居多。比方说是[1.6, 2.4]
就是说,LayerL中a22的坐标进行仿射计算,结果得到了[1.6, 2.4]那这个时候就不清楚这个a22到底是对应layerL-1中的哪个点的像素值了。
所以,引入了grid generator和sampler。就拿这个Layer L中的a22举例。仿射表换后计算出是[1.6, 2.4],这时候grid generator计算出与[1.6, 2.4]最近的四个点,那就是在Layer L-1层中的a12、a13、a22、a23四个点。之后用双线性插值计算出Layer L中a22对应的像素值。也就是说,双线性插值是拿像素值来进行计算的,得到的自然也就是像素值。
所以,就是sampler采样,grid generator生成网格,双线性插值计算出对应的像素。
个人理解,如有错误,欢迎指正。