SPP Net(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)论文理解
论文地址:https://arxiv.org/pdf/1406.4729.pdf
论文翻译请移步:http://www.dengfanxin.cn/?p=403
一、背景:
传统的CNN要求输入图像尺寸是固定的(因为全连接网络要求输入大小是固定的)
- crop处理,可能不包含整个物体,还会丢失上下文信息
- warping处理,会导致图像变形
- 以上都会导致CNN对不同scale/size泛化能力不强


优点
- 不管输入尺寸为多少,SPP都能生成固定尺寸的输出,这使得CNN无需固定输入图片尺寸
- CNN使用多尺度图片输入进行训练,增加了scale-invariance,减少了过拟合
- SPP运用了多尺度的信息,空间信息更加丰富,使得CNN对物体的形变更加robust
- SPP可以广泛运用在任何CNN架构上,提高performance
二、SPP对R-CNN的改进:
1、使用了SPP灵活改变网络输入尺寸
2、将整张图片一次性输入CNN提取特征,将提取出的region proposal的坐标映射到feature map上,共享了计算
改进细节:
1、SPP

- 将feature map(假设有K个channel)划分为固定数量的bin(见上图的网格,假设bin的数目为
),在每个bin里使用Max Pooling(或者AvgPooling)
- 最终每个金字塔得到
-dimension的特征向量,然后拼接起来
- 值得注意的是,最粗粒度的金字塔级别,只是用了一个bin,这等同于Global Average Pooling
2、Mapping a Window to Feature Maps


更多映射推理细节详见:https://blog.csdn.net/ibunny/article/details/79397399
3、训练方式
三、SPP-Net网络结构:

左边是训练流程,右边是测试流程,注意SPP-Net是直接用SPP池化层的输出特征作Bounding Box的回归,不像R-CNN是用Conv5的特征。

测试过程:
输入任意尺寸大小的图像,类似R-CNN,利用SS得到近2K推荐区域
通过卷积网络进行一次特征提取,得到特征图
通过ROI映射计算得到推荐区域映射到特征图的特征
输入SPP得到固定尺寸的特征
然后类似R-CNN,通过全连接层,再输入SVM得到分类概率
NMS处理
对处理后的结果,结合SPP输出特征进行边框回归
训练过程:
1、依旧是预训练好的网络,以及2K推荐区域,得到每个区域的SPP pooling层的一维特征
2、fine-tune(最大不同)
- 只fine-tune全连接网络
- FC6,FC7,FC8
- FC8被换成了21-way(20个类+背景)
- 初始化为Guassian(0, 0.01)
- learning rate从1e-4到1e-5
- 250K个batch使用1e-4
- 50k个batch使用1e-5
- 正负例平衡
- 每个batch中25%是正例,75%为负例
- IOU threshold
- 正例为0.5-1
- 负例为0.1-0.5
3、SVM
- IOU threshold为0.3
- 负例互相之间IOU超过70%则去除一个
- 使用了hard negtive mining的策略来训练SVM
4、Bbox Regression
- 使用了和R-CNN里一样的边框回归来refine坐标
- IOU阈值为0.5
四、SPP-Net缺点
SPP-Net只解决了R-CNN卷积层计算共享的问题,但是依然存在着其他问题:
(1) 训练分为多个阶段,步骤繁琐: fine-tune+训练SVM+训练Bounding Box
(2) SPP-Net在fine-tune网络的时候固定了卷积层,只对全连接层进行微调,而对于一个新的任务,有必要对卷积层也进行fine-tune。(分类的模型提取的特征更注重高层语义,而目标检测任务除了语义信息还需要目标的位置信息)
参考资料:
https://blog.csdn.net/bryant_meng/article/details/78615353
https://www.jianshu.com/p/b2fa1df5e982
https://blog.csdn.net/ibunny/article/details/79397399
SPP Net(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)论文理解的更多相关文章
- SPP NET (Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)
1. https://www.cnblogs.com/gongxijun/p/7172134.html (SPP 原理) 2.https://www.cnblogs.com/chaofn/p/9305 ...
- 目标检测--Spatial pyramid pooling in deep convolutional networks for visual recognition(PAMI, 2015)
Spatial pyramid pooling in deep convolutional networks for visual recognition 作者: Kaiming He, Xiangy ...
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Kaiming He, Xiangyu Zh ...
- 深度学习论文翻译解析(九):Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
论文标题:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 标题翻译:用于视觉识别的深度卷积神 ...
- SPPNet论文翻译-空间金字塔池化Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
http://www.dengfanxin.cn/?p=403 原文地址 我对物体检测的一篇重要著作SPPNet的论文的主要部分进行了翻译工作.SPPNet的初衷非常明晰,就是希望网络对输入的尺寸更加 ...
- 论文阅读笔记二十五:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPPNet CVPR2014)
论文源址:https://arxiv.org/abs/1406.4729 tensorflow相关代码:https://github.com/peace195/sppnet 摘要 深度卷积网络需要输入 ...
- 论文解读2——Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
背景 用ConvNet方法解决图像分类.检测问题成为热潮,但这些方法都需要先把图片resize到固定的w*h,再丢进网络里,图片经过resize可能会丢失一些信息.论文作者发明了SPP pooling ...
- 目标检测(二)SSPnet--Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognotion
作者:Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun 以前的CNNs都要求输入图像尺寸固定,这种硬性要求也许会降低识别任意尺寸图像的准确度. ...
- Paper Reading - Long-term Recurrent Convolutional Networks for Visual Recognition and Description ( CVPR 2015 )
Link of the Paper: https://arxiv.org/abs/1411.4389 Main Points: A novel Recurrent Convolutional Arch ...
随机推荐
- svn回滚到某一版本
svn回滚到某一版本 (1)在代码文件夹或vs中show log,查看历史,记住想要回滚到的版本号如1000 (2)新建文件夹,右击svn checkout,在revision中输入版本号1000
- mysql日志详解
日志分类: 一.错误日志. 1.在配置文件中的配置是:log-error="DESKTOP-igoodful.err",查看参数的键值对:show variables like ' ...
- Trove系列(二)—Trove 的架构和流程介绍
Trove主要逻辑目前Trove支持用户创建一个数据库服务实例,在实例里可以创建多个数据库并进行管理.数据库服务实例目前通过Nova API来创建,然后同样通过Nova API创建一个Volume(未 ...
- Linux命令: 查找文件中的字符串
①cat filename | grep 'string' ②编辑模式查找,/string, 依次敲入下面的命令 vim filename e i ESC /string 从光标位置开始往后查找第一个 ...
- outlook还原初始设置
找到outlook的安装地址: C:\Program Files\Microsoft Office\Office15 进入命令行界面 WIN+R ->cmd cd C:\Program File ...
- IEEE发布2017年编程语言排行榜:Python高居首位,java第三,php第八
2017年7月18日,IEEE Spectrum 发布了第四届顶级编程语言交互排行榜.因为有各种不同语言的排行,所以 IEEE Spectrum 依据不同的变量对流行度进行了排行.据 IEEE Spe ...
- 【Python】【Flask】前端调用后端方法
后端代码: @app.route("/test",methods=['POST','GET']) def test(): return "我是测试的" 前端代码 ...
- Python入门之os.walk()方法
os.walk方法,主要用来遍历一个目录内各个子目录和子文件. os.walk(top, topdown=True, onerror=None, followlinks=False) 可以得到一个三元 ...
- pythoy的configparser模块
生成配置文件的模块 DEFAULT块,在以块为单位取块的值时,都会出现 import configparser config = configparser.ConfigParser() #相当于生成了 ...
- Django popup示例
urls.py urlpatterns = [ url('popup_test1',views.popup_test1), url('popup_test2',views.popup_test2), ...