Spatial Transformer Layer
我们知道cnn是无法识别到经过缩放和旋转的图片的,但是这个spatial transformer这个neutral network是可以做到的,可以被放到cnn里
接下来就是讲解一个空间变换层地例子:我们可以看到,layerl就是layerl-1经过平移得到的,其中,我们layerl中的每一个元素,是上一层每一个元素与权重相乘之后再相加得到的结果,这个权重是什么呢,是当i = n - 1, j = m时,w = 1, 不然w = 0,这就可以让我们上一个layer中的元素在这一个layer中往下一格,所以其实靠w来进行变换
重要的是找到相应的w
对于图像平移,我们调整图像,可以将每个像素pixel建系,然后通过坐标的移动来对图片移动,先对坐标进行放缩(也可以理解为对图片进行放缩),然后对坐标进行平移(也可以理解为对图片进行平移)
对于旋转图形,我们可以用三角函数
其实,它的工作原理是这样的,看起来好像这个index搞反了,但实际上没有,这是反向映射,我们根据l来找l-1
我们来举例说明一下,我们通过layer l 中的a22这个neuron来找到上一个layer中对应的neuron,可以看到,就是layer l-1中的a11
如果这个matrix里面是小数该怎么办呢,我们得到的index很可能也是小数,但是index应该是整数,难道我们四舍五入吗,但是这样子我们就无法进行gradient descent,因为这种round函数的gradient是0
我们就要引入interpolation ,也就是插值,我们要用到的是线性插值
接下来就是使用它的流程,可以将它放在很多地方
接下来就是一些例子
在辨识鸟中,我们设定四个数字,是他只能放缩,无法旋转