立山 发表于 7 天前

【深度学习—李宏毅教程条记】Spatial Transformer Layer

目次
一、什么是 Spatial Transformer
二、Spatial Transformer 框图
三、cnn 添加 Spatial Transformer Layer 的例子
1、对输入平移和空间上的干扰不影响输出
2、对输入旋转不影响输出
3、cnn识别鸟的种类的例子

一、什么是 Spatial Transformer

        Spatial Transformer Layer(空间变换器层)是深度学习网络中的一个模块,其焦点目的是使网络具备对输入数据进行空间变换(如平移、旋转、缩放、仿射变换等)的能力,从而进步模子对数据位置、尺度以及形状变化的稳定性。
        在传统的卷积神经网络(CNN)中,卷积操作具有局部平移稳定性,但对旋转、缩放、非线性形变等其他空间变换并不鲁棒。为了解决这个问题,Spatial Transformer Networks(STN)被提出,用于在网络内部对输入图像或特性图进办法态的空间变换,使得后续层能更容易捕获到关键信息,而不必依赖于数据预处置惩罚或扩充来应对这些变形。
二、Spatial Transformer 框图

        Spatial Transformer Layer 的作用是对输入进行空间上的缩放的旋转,而这正是矩阵乘法的功能,所以说中间的 Spatial Transformer Layer 层的作用就是对该层的输入进行一个矩阵变换(在加一个非线性变换),具体是怎么变换(即矩阵的参数)是训练过程学到的。
https://i-blog.csdnimg.cn/direct/f41747d754ba4dec8a16df95fd35db3b.png
        Spatial Transformer Layer 不只可以放在 cnn 网络的最前面,可以放在任何的 卷积层 之后,一层之后也不止仅可以放一个,可以放许多个,如下图:
https://i-blog.csdnimg.cn/direct/4244270f2c49448d92cb7a941338167e.png
三、cnn 添加 Spatial Transformer Layer 的例子

1、对输入平移和空间上的干扰不影响输出

即使对输入进行一些平移,也不影响输出,即参加 Spatial Transformer Layer 后邻近输出的几层识别到的特性几乎不受输入的平移或者其他空间中的噪声的干扰。即中间插入的 Spatial Transformer Layer 通过主动学习抵消了空间的平移。
https://i-blog.csdnimg.cn/direct/8965f95b05cf4faabe783b13a5fe38f8.png
2、对输入旋转不影响输出

https://i-blog.csdnimg.cn/direct/d870f3dbeb91448599f3979a81f43de4.png
上图可以看出,参加 Spatial Transformer Layer 后的 cnn ,即使对输入进行旋转,邻近输出的层识别到的特性也不受影响。即中间插入的 Spatial Transformer Layer 通过主动学习抵消了空间的旋转。

3、cnn识别鸟的种类的例子

这个实行中间插入了两个并行的 Spatial Transformer Layer 。
https://i-blog.csdnimg.cn/direct/276c8454910f4325b6d71125b81ba751.png
可见两个 Spatial Transformer Layer 分别截取了原图的差异位置的子图。下面是更多的实行结果:
https://i-blog.csdnimg.cn/direct/0285ea672cff41b2b1a512276a0aaa56.png



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【深度学习—李宏毅教程条记】Spatial Transformer Layer