把r-cnn系列总结下,让整个流程更清晰。

整个系列是从r-cnn至spp-net到fast r-cnn再到faster r-cnn。

 RCNN

输入图像,使用selective search来构造proposals(大小不一,需归一化),输入到CNN网络来提取特征,

并根据特征来判断是什么物体(分类器,将背景也当做一类物体),最后是对物体的区域(画的框)进行微调(回归器)。

由下面的图可看出,RCNN分为四部分,ss(proposals),CNN,分类器,回归器,这四部分是相对独立的。改进的思路就是

把分类器和回归器放在一起训练,称为joint learning(fast r-cnn),更近一步,把ss也加入其中,成为一个更大的网络(faster)。

SPP

在之后的fast和faster中,SPP都非常重要,其主要解决网络输入的尺寸固定这个问题。主要思想就是在全连接层之前,用不同尺度

的pooling来pooling出固定尺度大小的feature map,再送入全连接层。

SPP真正重要的是在检测中的应用。RCNN提取2K个proposals再去计算特征,这些proposals有大量的重复,因此计算很耗时。SPP

只提取整张图像特征一次,再在特征图对应的候选窗口上应用spatial pyramid pooling构造出固定长度的,这就大大节省了计算量。

现在的问题是,对何将某个proposals对应到相应的特征图上去呢(这部分我没看明白,下面为博友的看法)?

通过增加pad,使得卷积后得到的区域与原区域是一一对应的。如果增加stride的话,就相当与原图先进行卷积再sampling,还是

一一对应的,就这样原图的某个区域就可以通过除以网络的所有stride来映射到conv5后去区域。

FAST RCNN

提出了RoI层:SPP是将特征pooling成多个固定尺度(eg,16+4+1=21),而RoI固定到一个尺度(6*6)。网络结构中,将poolings5

替换成RoI。

将softmax换成两个分支:一个是对分类的softmax,一个是对bounding-box的regression。输入有两个,一个是整张图片,一个是proposals。

并且采用的是联合训练。

训练方式:一个batch训练两张图片,每张图片有64个RoIs。

SVD加速:检测时花在全连接上的时间很多,通过SVD分解变为两个全连接层,减少计算量。

FASTER RCNN

将selective search这样的算法整合到深度网络中,共享卷积计算,解决其速度慢的问题,因此论文的关键在RPN的设计和训练。

RPN的网络结构如图所示,和SPP类似,在特征图上进行滑窗。如何训练出一个网络,来替代selective search的功能呢?

先通过SPP根据一一对应的点从conv5映射回原图,根据设计不同的固定初始尺度训练一个网络,就是给它大小不同(但设计固定)的region图,

然后根据与ground truth的覆盖率给它正负标签,让它学习里面是否有object即可。这个网络大致判断是否有物体及位置,剩下的部分交给其余的

网络。在这期间,卷积特征是共享的,因此可以省时。

这是大致流程,实际上整个框架很复杂,有很多细节需要学习,这也在以后的代码学习中去完善。

参考:http://blog.csdn.net/xyy19920105/article/details/50817725

http://closure11.com/rcnn-fast-rcnn-faster-rcnn%E7%9A%84%E4%B8%80%E4%BA%9B%E4%BA%8B/

r-cnn学习系列(三):从r-cnn到faster r-cnn的更多相关文章

  1. DocX开源WORD操作组件的学习系列三

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  2. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

  3. scrapy爬虫学习系列三:scrapy部署到scrapyhub上

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  4. RabbitMQ学习系列三-C#代码接收处理消息

    RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理 http://www.80iter.com/blog/1438251320680361 http://www. ...

  5. .net reactor 学习系列(三)---.net reactor代码自动操作相关保护功能

    原文:.net reactor 学习系列(三)---.net reactor代码自动操作相关保护功能         接上篇,上篇已经学习了界面的各种功能以及各种配置,这篇准备学习下代码控制许可证. ...

  6. Identity Server4学习系列三

    1.简介 在Identity Server4学习系列一和Identity Server4学习系列二之令牌(Token)的概念的基础上,了解了Identity Server4的由来,以及令牌的相关知识, ...

  7. RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理

    上一篇已经讲了Rabbitmq如何在Windows平台安装 不懂请移步: RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列 一.理论 .net环境下,C#代码订阅 ...

  8. C# Redis学习系列三:Redis配置主从

    Redis配置主从 主IP :端口      192.168.0.103 6666 从IP:端口       192.168.0.108 3333 配置从库 (1)安装服务: redis-server ...

  9. 【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络Vgg

    上周我们讲了经典CNN网络AlexNet对图像分类的效果,2014年,在AlexNet出来的两年后,牛津大学提出了Vgg网络,并在ILSVRC 2014中的classification项目的比赛中取得 ...

  10. 【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络AlexNet

    上周我们用PaddlePaddle和Tensorflow实现了图像分类,分别用自己手写的一个简单的CNN网络simple_cnn和LeNet-5的CNN网络识别cifar-10数据集.在上周的实验表现 ...

随机推荐

  1. JQuery------.load()从服务器获取数据并加载到某个类的方法

    注意:需要在../Content/asf.txt路径下加入文件 html <button class="Btn">按钮</button> js 参数意义: ...

  2. wamp环境PHP安装mongodb扩展

    特别注意 :本地的下载的mongo 为线性TS *86 而不是64   按照apache的版本来定.

  3. js 实现动态key value(JSON字符串注意事项:key和value都要用双引号,官网指定用双引号)

    1.JSON字符串注意事项:key和value都要用双引号,官网指定用双引号,如下: var mapStr='{"a":"a","b":&q ...

  4. Java——标签组件:JLabel

    使用一个标签 import java.awt.Color; import java.awt.Dimension; import java.awt.Point; import javax.swing.J ...

  5. svn 强制用户添加注释 和 允许用户修改注释

    当我们用TortoiseSVN提交代码时,有很多人不喜欢写注释,导致以后代码版本多,也不清楚哪个版本到底改了什么东西.所以在提交的时候,我会强制要求添加注释.这是如何实现的?这个话题就涉及到了svn的 ...

  6. C++ typedef用法小结 (※不能不看※)

    C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不 ...

  7. CodeLite的姿势

    在Mac上安装cscope 1.下载cscope的Zip压缩包 2.解压 3.打开终端,进入解压目录,运行 ./configure make make install 4.在CodeLite中,在Pl ...

  8. web前端工程师校园招聘要求

    小燕子对紫薇说:“这辈子也别想着进皇宫了”.可后来她们不但进了宫,还都当上了格格.你在想什么?走呗! 1.去哪了网 前端开发工程师 工作地点:北京 工作职责: 负责去哪儿网各产品线Web前端研发: 负 ...

  9. SSDB 数据库

    SSDB数据库 SSDB是一套基于LevelDB存储引擎的非关系型数据库(NOSQL),可用于取代Redis,更适合海量数据的存储. 另外,rocksdb是FB在LevelDB的二次开发版本,因此也存 ...

  10. Thinkphp 连接查询的使用

    方法一:使用table()方法 $tables = 'b_order ordert, b_busbid busbid'; $map['busbid.buscompanyid'] = 1; $map[' ...