| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Spatial Transformer Networks(空间转换器)及在MNIST中的应用 -> 正文阅读 |
|
[人工智能]Spatial Transformer Networks(空间转换器)及在MNIST中的应用 |
STN空间变换器在一些论文中会见到,而且因其简单有效、即插即用等特性,应用较多。为了充分理解论文和方便日后使用,这里记录一下STN以及应用在MNIST任务中。 1、Spatial Transformer Networks空间转换器,空间变换器网络(简称STN)允许神经网络学习如何对输入图像进行空间变换,以增强模型的几何不变性。例如,它可以裁剪感兴趣的区域,缩放和校正图像的方向。它可能是一种有用的机制,因为 CNN 对于旋转和缩放以及更一般的仿射变换不是不变的。 在了解STN之前,你需要先学习仿射变换基础,可以看看图像仿射变换。 2、结构
其代码如下:
2.1 Localization net注意,在代码中Localization net是包括 该部分完成从输入U中提取特征,拟合出变换矩阵参数θ,具体结构为: 2.2 Grid generator其实这部分就只有一行代码:
通过theta和希望变换后的尺寸s.size()来产生grid。关于这部分其实就是一个API的使用,可以百度一下就可。 2.3 Sampler这部分也只有一行代码:
通过的得到的grid来对原图x进行变换,最终得到变换后的图x。 2.2 和2.3 这一步其实opencv也提供了warpAffine这个API来进行仿射变换,但是因为模型训练时tensor最好在GPU上运算,所以直接使用pytorch提供的affine_grid和grid_sample来进行仿射变换。这两个已经不属于深度学习的范畴了,就是稍微复杂一点的普通运算,百度一下即可。 3、实验实验部分很简单,就是MNIST数字分类。只不过多加了STN模块。 实验 整体结构如下图所示,上面的STN负责将U变换掰正为V,下面的MNIST分类就是简单的CNN网络,这在很多关于MNIST入门教程中都能见到。 或者说就是在普通MNIST分类的CNN网络中,插入了STN模块,实现在使用CNN分类前先矫正MNIST图像数字的功能。 3.1 STNSTN部分将输入的图片U掰正并输出图片V,图片U和图片V的尺寸是一样的,都是
1
?
28
?
28
1*28*28
1?28?28,下图展示实验训练100epochs后,U(Dataset Images)和V(Transformed Images),可以看到此时STN已经起作用了。图中一些歪七倒八的数字已经被”掰正“了。 3.2 MNIST分类底下这部分就是卷积层+全连接层的简单分类网络,这不用多说了,MNIST就是深度学习的“Hello World!”。 3.3 效果展示Spatial Transformer Networks对MNIST的“纠正”效果(epoch=20时的效果) 4、代码整个项目放在thgpddl/SpatialTransformerNetworks这里。 5、思考在本实验中,MNIST中的一些样本通过STN被“掰正”,但是我们知道仿射变换还可以实现比如旋转、平移、缩放、裁剪等效果,那么是否在某些任务中,STN的作用可能时其他仿射效果呢?比如某任务中一些样本图像中目标很小,是否插入STN后的效果是将图像缩放至目标很大呢,这样不就相当于“注意力”了吗? 比如在论文阅读:Spatial Transformer Networks中,就有两个并行的STN,从效果来看,确实有放大的作用(从视觉上来看也可以是平移裁剪等实现),不就相当于一种注意力码? 6、引用 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/25 22:54:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |