| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> NIPS15 - 神经网络中的空间转换模块STN《Spatial Transformer Network》(含代码复现) -> 正文阅读 |
|
[人工智能]NIPS15 - 神经网络中的空间转换模块STN《Spatial Transformer Network》(含代码复现) |
原文地址论文阅读方法初识CNN方法在计算机视觉领域大放异彩,在很多领域都已经代替了传统方法。然而卷积神经网络的架构缺乏空间不变性( 因此本文提出了一个空间转换模块,并以此构建了空间转换网络,能在一定程度增加CNN的空间不变性。并且这是一个即插即用的模块,能较方便地插入到各种架构中。 相知
基于矩阵操作的空间变换 熟悉传统图像处理的小伙伴肯定知道大多数空间转换就可以转换成基于矩阵的采样操作,假设输入图像(source)的像素点由( x i s , y i s x_i^s, y_i^s xis?,yis?)表示,输出图像(target)像素点由( x i t , y i t x_i^t, y_i^t xit?,yit?)表示,只要确定了一组变换参数θ就能确定一种空间变换。以2D放射变换矩阵为例:
这里贴上恒等映射(
θ
11
,
θ
22
θ_{11}, θ_{22}
θ11?,θ22?为1其他为0)和一种仿射变化的效果图:
既然可以将空间变换确定为矩阵操作,那么不妨让网络去学习生成矩阵参数,从而学会空间转换。 整体架构 其中 Localisation net 定位子网接受输入特征图,送到隐层中提取特征(可以是卷积层,也可以是全连接层),并根据预设的变换输出对应的参数(比如之前提到的仿射变换就是6个参数)。 Grid generator 其实就是根据参数构造转换矩阵,从而确定采样空间。
Image Sampling 想要通过梯度下降的方法来学习网络参数,那么就一定要注意操作的可导行。而采样操作本身并不是可导的,因为输入像素点是离散的,而空间转换会导致采样点并不是原图上的像素值。因此作者引入了插值操作,使得过程可导:
从而
部分实验 ① 对MNIST数据进行一些扰动,使得其对于正常CNN难以分辨,而引入了STN模块后,经过变换后能够正常识别。 回顾STN是15年的工作,但它的思想也影响了后面的一大批工作。其主要的亮点就是将空间变换变成一种参数的预测,然后通过插值的方式进行采样,从而能够嵌入到网络中进行端到端的训练。 但它的性能并不是想传说中的那么好,也无法替代随机增广的作用。因为没有对空间转换进行直接的约束,所以你无法期望它能达到你想要的变换形式。比如,在MNIST实验中,它之所以能学会将翻转的4变换复原,是因为整个类别大多数训练数据都是正向的,如果你整个类别都是翻转后的4,它是无法学会的,它的参数更新依赖于你整体的训练目标。 我在图像分类的比赛中用过这个模块,期望其能起到类似于 代码Pytorch将STN网络的 以下代码主要展示了STN模块,其中
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 15:46:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |