特征提取模型系列之spp-net原理介绍
来源:互联网 发布:mac对应pin码查询网 编辑:程序博客网 时间:2024/06/05 15:31
论文的链接:https://arxiv.org/pdf/1406.4729.pdf
背景介绍
spp-net的提出主要是基于这么一个问题,如下图(图片来自论文):
我们一般用CNN时,输入都是固定大小的(比如224x224),当遇到不同大小的图片一般解决方法有两种:一种是取图片的几个子区域(crop)然后分别输入网络中,然后将得到的结果投票取多数的那个类别(个人感觉,crop时最好将图片固定在一定的规模,比如最小那个边是224,这样crop的时候才更有可能得到想要的区域);另一种是直接将原图resize到输入图片的大小。前者容易只取到目标物体的部分区域,后者则容易使得目标物体变形,不管哪个效果都容易让最后的分类结果变差。能不能让网络结构适应不同size的图片,这就是spp-net的目的。
模型介绍
作者的分析思路是这样子的:卷积层其实是可以适应不同size的图片,只不过输入图片size不同,输出的结果size也不同,而真正限制CNN要固定输入图片size的是全链接层,所以如果能在卷积层之后,全连接层之前加入某种层使得全连接获得的输入都是固定的大小的,那么就解决这个问题了。于是作者提出了SPP-pooling层,结构如下图(图片来自原论文):
从卷积层获得的feature map,将其分成1x1,2x2,4x4…的小块,再在每个小块上做max pooling,这样最后得到的结果也就是固定大小的一个向量了。比如说feature map是32x32x256,然后把每一个32x32的feature map都分成1x1,2x2,4x4的小块,这样一个32x32的feature map就得到了长度为21(1+4+16)的一维向量,256个feature map最终串联在一起就得到了就得到了长度为21x256的一维向量,对于24x24x256的feature map,经过同样的结果,也是得到一个长度为21x256的一维向量,这样就实现了全连接层的固定大小输入了,也就让cnn能够适应不同size的图片输入。
实验
训练
single-size training:训练的过程与之前的CNN训练过程一样,输入都是固定的图片大小,只不过将最后一个卷积层和第一个全连接层之间加入spp-pooling层,关于spp-pooling层的参数设置,如下图(图片来自原论文):
注意训练的时候也用到了crop,只不过这里crop的作用是为了增强数据集(data augmentation)。测试的时候可以用crop也可以不用crop(论文中为了公平比较用了crop,而后面的实验中也有不用crop的情况)。multi-size training:与single-size training不同的是,输入的照片规模会有所不同,作者使用了180x180和224x224两种规模的图片,采用迭代式的方法(第一个epoch全部用180x180的图片,第二个epoch全部用224x224的图片,第三个epoch又是180x180的图片……)训练。
效果
作者做了几个实验,具体的内容请看论文,这里就不详述了,最后得到的结果就是:
spp-pooling层能提升准确率
multi-size training能提升准确率
整张照片(不管size多少)比单个照片中的一个crop作为输入能提升准确率
小结
- spp-pooling层能够让模型适应不同size的图片
- 特征提取模型系列之spp-net原理介绍
- 特征提取模型系列之CNN设计
- 图像特征提取系列之PCA
- SPP-Net中的特征映射关系
- SIFT特征提取原理
- HOG特征提取原理
- Object Detection系列(二) SPP-Net
- Object Detection系列(二) SPP-Net
- 图像算法之二:特征提取算法系列之Harris
- 特征提取之Haar特征
- 特征提取之LBP
- 特征提取之PCA
- 【原理】目标检测的图像特征提取之(一)HOG特征
- 文本特征提取基本概念介绍----文档模型、相似度计算、潜在语义分析(LSA)
- R-CNN系列阅读笔记(2): SPP-Net
- 【R-CNN系列目标检测】(2)SPP-Net算法
- 特征提取之——Haar特征
- 图像特征提取之(三) --- HOG特征
- RSS——语法
- Linux 进程管理
- POJ2139 Six Degrees of Cowvin Bacon (Floyd 最短路径)
- 用递归解决oj上的导弹防御系统问题
- 组态王与阿里云mysql连接——pc组态王配置
- 特征提取模型系列之spp-net原理介绍
- HOG特征统计
- HDU1283 最简单的计算机【模拟】
- HDU 1285-确定比赛名次(拓扑排序)
- Unity_脚本和光照系统的结合使用_010
- Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
- 【Go】Go语言初学
- scala基础语法
- 面向对象和静态方法与非静态方法的变量调用问题