Fast R-CNN是R-CNN的改良版,同时也吸取了SPP-net中的方法。在此做一下总结。

  论文中讲到在训练阶段,训练一个深度目标检测网络(VGG16),训练速度要比R-CNN快9倍左右,比SPP-net快3倍左右。在测试阶段,处理一张图片需要0.3s。在PASCAL VOC 2012数据库上的mAP也达到了66%,比R-CNN高两个百分点。

  

  提出背景

  这个方法提出的背景是,R-CNN和SPP-net在目标检测方面还有一些不足。不足表现在一下几点:

  1、训练分为多个阶段,首先要微调ConvNet,用来提取特征,然后处理proposal,计算得到的ConvNet特征,使用线性SVM进行分类,最后用bounding box进行回归;

  2、训练时间和空间开销大。每一张图像上有大量proposal,还要对每个proposal提取特征,并存到磁盘中;

  3、测试阶段速度太慢。要对每张图片上的大量proposal提取特征,然后根据提取的特征进行检测。

  创新点

  Fast R-CNN的创新点在于:

  1、相较于R-CNN和SPP-net,检测结果精确度更高;

  2、训练只有一个阶段,将多任务的loss结合在一起;

  3、在训练时,可更新所有的层;

  4、不需要在硬盘中存储特征。

  Fast R-CNN的框架

  1、我们还是需要使用selective search算法在图像中提取2k个左右的候选框;

  2、然后将图像和候选框(即RoIs)信息输入网络中,并在最后的卷积层上对每个RoI求映射关系,并使用RoI pooling layer来将对应的特征统一到相同的大小;

  3、最终网络有两个输出,也对应两个loss,一个使用softmax进行分类,另一个进行bounding box回归。

  

  其中的RoI pooling layer是借鉴了SPP-net的方法,只是只有一级“金字塔”,将特征划分为H×W的网格,对每个网格进行max-pooling,提取特征。论文中H=W=7。

  

  Fast R-CNN的训练

  我们要对网络进行修改,使用RoI pooling layer替换最后的pooling层(即全连接层之前的pooling层),使用 两个姊妹层替代最后的全连接层和softmax层。两个姊妹层,其中一个是全连接+softmax,用作分类任务;另一个是用于bounding box回归的任务。

  在训练阶段,每一个mini-batch中首先加入N张完整图片,而后加入从N张图片中选取的R个候选框。这R个候选框可以复用N张图片前5个阶段的网络特征。实际选择N=2, R=128。N张完整的图像以50%的概率进行水平翻转,R个候选框的构成如下:

类别 比例 方式
前景 25% 与某个真值重叠在[0.5,1]的候选框
背景 75% 与真值重叠的最大值在[0.1,0.5)的候选框

  

  多任务loss

  每个RoI都对应着一个ground-truth class 和一个ground-truth bounding box regression target 

  表示K+1个类别各自对应的概率,p由softmax层计算得到。我们将分类任务的loss定义为:

  ground-truth bounding box regression target ,bounding box任务的预测结果对应正确的类别。因为我们进行bounding box回归时,不考虑背景,所以时,bounding box回归没有对应的loss,而当时,对应的loss为:

其中

 所以,最终的loss为:

  RoI pooling层的反向传播

  是RoI pooling层输入中的一个节点(可以理解为一个像素),是对应第r个RoI的第j个输出(也可以理解为一个像素),那么RoI pooling层所做的操作为
,其中是池化得到的小网格区域,由于不同的RoI会可能会包含同样的像素,所以一个可能对应多个最终loss关于 的偏导数为:

Fast R-CNN学习总结的更多相关文章

  1. R基础学习

    R基础学习 The Art of R Programming 1.seq 产生等差数列:seq(from,to,by) seq(from,to,length) for(i in 1:length(x) ...

  2. 卷积神经网络(CNN)学习笔记1:基础入门

    卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01   |   In Machine Learning  |   9 Comments  |   14935  Vie ...

  3. R语言学习 第四篇:函数和流程控制

    变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...

  4. CNN学习笔记:批标准化

    CNN学习笔记:批标准化 Batch Normalization Batch Normalization, 批标准化, 是将分散的数据统一的一种做法, 也是优化神经网络的一种方法. 在神经网络的训练过 ...

  5. CNN学习笔记:目标函数

    CNN学习笔记:目标函数 分类任务中的目标函数 目标函数,亦称损失函数或代价函数,是整个网络模型的指挥棒,通过样本的预测结果与真实标记产生的误差来反向传播指导网络参数学习和表示学习. 假设某分类任务共 ...

  6. CNN学习笔记:卷积神经网络

    CNN学习笔记:卷积神经网络 卷积神经网络 基本结构 卷积神经网络是一种层次模型,其输入是原始数据,如RGB图像.音频等.卷积神经网络通过卷积(convolution)操作.汇合(pooling)操作 ...

  7. CNN学习笔记:全连接层

    CNN学习笔记:全连接层 全连接层 全连接层在整个网络卷积神经网络中起到“分类器”的作用.如果说卷积层.池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的特征表示映射到样 ...

  8. CNN学习笔记:池化层

    CNN学习笔记:池化层 池化 池化(Pooling)是卷积神经网络中另一个重要的概念,它实际上是一种形式的降采样.有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见 ...

  9. CNN学习笔记:卷积运算

    CNN学习笔记:卷积运算 边缘检测 卷积 卷积是一种有效提取图片特征的方法.一般用一个正方形卷积核,遍历图片上的每一个像素点.图片与卷积核重合区域内相对应的每一个像素值乘卷积核 .内相对应点的权重,然 ...

  10. CNN学习笔记:激活函数

    CNN学习笔记:激活函数 激活函数 激活函数又称非线性映射,顾名思义,激活函数的引入是为了增加整个网络的表达能力(即非线性).若干线性操作层的堆叠仍然只能起到线性映射的作用,无法形成复杂的函数.常用的 ...

随机推荐

  1. cocos2d-x开发:服务端基础库封装

    元旦前面几天都在忙着面试,随后的几天也就一直在做服务端基础库开发方面的工作.对于服务端开发,是很久之前的事情了.那时候我还在大学读书,一直都是在倒腾服务端开发方面的东西,毕业后参加公司工作就是一直从事 ...

  2. 怎样卸载wineQQ?

    好久没实用ubuntu系统的wineqq了.今天用的时候,提示无法使用,要求官网又一次下载新版本号,  感觉挺麻烦的,准备卸载,半天卸载不了. 经过努力,终于还是卸载了. 卸载命令: sudo dpk ...

  3. 12c数据库重启后自动启动pdb

    由于最近管理12c数据库,创建了9个新的pdb.相对于以前11g版本每天一个一个的环境检查,方便了很多. 但是因为一次意外宕机,数据库重启.虽然数据库重启,但是管理的pdb确不能自动重启,所以需要手动 ...

  4. 批量kill杀死某些会话session的PL/SQL

    原文:http://blog.itpub.net/9240380/viewspace-666622/ SQL> declare 2 v_sid v$session.sid%type; --定义如 ...

  5. Oracle 11g DataGuard搭建(一) - 单节点到单节点

    (一)DataGuard概要 DataGuard中文称为”数据卫士“,提供了数据库高可用性.数据保护和灾难恢复的功能.DataGuard通过建立primary数据库和standby数据库来确立参照关系 ...

  6. mongodb分组函数的使用(spring-data-mongodb)

    这两天要做mongodb日志的模块,下面记录一下. 一. 首先要导入一批数据,使用springboot来完成. 配置mongodb的复制集:在application.yml文件中配置uri来完成 格式 ...

  7. Extjs6 组件浅谈

    一.Component组件 一个 Ext JS 应用的界面由一个或多个叫做 组件的控件组成. 所有的组件都是 Ext.Component 类的子类,这个类可以允许参与包含实例化.渲染.自动大小和位置以 ...

  8. solr 服务器搭建(Linux版)

    1.下载访问linux工具  securcrt   链接:https://pan.baidu.com/s/1zTwzmnzUmnwbKUCNHCLN1g 密码:kpyg 2.下载所需的 jdk  so ...

  9. Redis的特性以及优势(附官网)

    NoSQL:一类新出现的数据库(not only sql) 泛指非关系型的数据库 不支持SQL语法 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式 NoSQL的世 ...

  10. Qt界面编程基本操作

    Qt界面编程基本操作 了解基本代码构成 类widget的头文件widget.h如下: #ifndef WIDGET_H #define WIDGET_H #include <QWidget> ...