Fast R-CNN(RoI)简介

  Fast R-CNN是一个基于区域的目标检测算法。Fast R-CNN建立在先前的工作之上,并有效地使用卷积网络分类目标建议框。与先前的工作相比,使用几点创新改善了训练和测试时间并增加了检测准确率。

2. Fast R-CNN结构和训练

  图1展示了Fast R-CNN的结构。该网络输入一个完整的图像和一组目标建议框。首先用卷积和池化来产生一个特征图。然后,对每一个目标建议框使用RoI(Region of Interest)池化层从特征图提取一个固定长度的向量。每个特征向量送人两个兄弟般的全连接层,一个来输出类的概率,一个输出四个值。每组的四个值是边界框相关编码。

2.1 RoI池化层

  RoI池化层用最大值池化将RoI内的特征转化成固定空间大小$H×W$(例如,7×7)的特征图。RoI是一个矩形框,用(r,c,h,w)表示,(r,c)表示左上角,(h,w)表示高度和宽度。

RoI最大池化将$h×w$的RoI分割成$H×W$的格点,每个格点的尺寸大约为$h/H×w/W$,将每个格点最大池化格点的输出。池化独立应用到每个特征图通道,好像标准最大池化一样。RoI层SPPnets中使用的空间金字塔池化中的简单的特殊情况。

2.2 从预训练网络初始化

  尝试了3个预训练的ImageNet网络,每个都有5个最大池化层和5-13卷积层(4.1节有更多细节)。使用一个预训练的网路,有三个转换。

①最后一个最大池化层被RoI池化层取代,并且设置$H$和$W$与网络的第一个全连接层兼容。

②用两个兄弟般的层取代网络的最后全连接层和softmax。

③修改网络的输入:一组图像和这些图像的RoI

2.3 用于检测的微调

Multi-task loss. Fast R-CNN有两个输出层。第一个输出每个RoI在$K+1$个类上的离散概率分布。第二个输出是边框偏移。

  每个训练RoI用真值类别$u$和真值边框回归目标$v$标签。在每一个标签的RoI上用多任务损失$L$联合训练分类和边框回归:  

$L(p,u,t^u,v)=L_{cls}(p,u)+λ[u≥1]L_{loc}(t^u,v)$,  (1)

  这里$L_{cls}(p,u)=-rm{log}p_{u}$是真实类别$u$的log损失。

  第二个损失$L_{loc}$定义在真实边框回归目标的$(v_{x},v_{y},v_{w},v_{h})$和预测结果$t^u=(t^{u}_{x},t^{u}_{y},t^{u}_{w},t^{u}_{h})$上。当$u≥1$函数$[u≥1]$表示1,否则为0。按照惯例,将背景类标记为$u=0$。没有真值边框的背景RoI不参与损失计算。针对边框回归,使用下面损失:

$L_{loc}(t^{u},v)=\sum{i\in{\{x,y,w,h\}}}\rm{smooth}_{L_{1}}(t^{u}_{i}-v_{i})$,  (2)

  其中:

$\rm{smooth_{L_{1}}}(x) = \left\{
             \begin{array}{lcl}
             {0.5x^{2}} &\text{if} & |x|<1 \\
             { |x|-0.5} & otherwise
             \end{array}  
        \right.$  (3)

  $L_{1}$损失比R-CNN和SPPnet中的$L_{2}$更鲁棒。当回归目标没有没有边界时,$L_{2}$损失训练需要仔细调整学习率来防止梯度爆炸。公式(3)消除了这种敏感。

  公式(1)中的超参数λ控制了两个任务损失的平衡。将真值回归目标$v_{i}$归一化到0均值和单位方差。左右的实验使用λ=1。

Mini-batch sampling. 在微调过程中,SGD的批量数是$N=2$张图像,每张图像64RoI,共$R=128$个RoI。意思是每次训练只输入两张图像,64个RoI之间共享卷积特征。从与真值框重叠超过0.5的目标建议框中挑出25%的RoI,这些RoI只包含前景目标。其余RoI从目标建议与真值IoU在区间[0.1,0.5)的最大值中采样。除了数据镜像外,没有采用其它数据增强。

Back-propagation through RoI pooling layers. 为清楚起见,假设每个批量中只有一张图像($N=1$),这不影响结果。

设$x_{i}\in \mathbb{R}$是RoI池化层的第$i$激活输入,$y_{rj}$是第$r$个RoI层的第$j$个输出。RoI池化层计算$y_{rj}=x_{i*(r,j)}$,其中$i*(r,j)=argmax_{i‘\in{R(r,j)}}x_{i‘}$。$R(i,j)$是在输出单元$y_{rj}$最大池化的子窗口上的输入索引组。一个$x_{i}$可以被分配几个不同的输出$y_{rj}$。

RoI池化层的反向传播函数计算每个输入变量$x_{i}$损失函数的偏导数,如下所示:

$\frac{\partial L}{\partial x_{i}}=\sum_{r}\sum_{i}[i=i*(r,j)]\frac{\partial L}{\partial y_{rj}}$.  (4)

原文地址:https://www.cnblogs.com/majiale/p/9417011.html

时间: 2024-10-19 10:17:30

Fast R-CNN(RoI)简介的相关文章

Fast RCNN中RoI的映射关系

在Fast RCNN中,为了减少计算量,不是进行2k次运算,而是进行了1次运算,然后在从pool5中crop出SS图片所对应的Feature map,这里详细的介绍一下是如何实现的. 在CNN中下一层Feature map大小的计算

R语言ggplot2 简介

ggplot2是一个绘制可视化图形的R包,汲取了R语言基础绘图系统(graphics) 和l attice包的优点,摒弃了相关的缺点,创造出来的一套独立的绘图系统: ggplot2 有以下几个特点: 1) 图形映射, 自动化的将数据映射到图形上: 2) 图层叠加, 将不同形状的图表视为图层(layer),  可以方便的进行叠加 3)提供了范围控制(scale), 坐标系转换(coord), 分面(facet)等特性: 先看一个最简单的例子,用ggplot2 绘制一副散点图: 代码示例: libr

RCNN学习笔记(4):fast rcnn

reference link: http://zhangliliang.com/2015/05/17/paper-note-fast-rcnn/ http://blog.csdn.net/shenxiaolu1984/article/details/51036677 http://blog.csdn.net/qq_26898461/article/details/50906926 论文出处见:http://arxiv.org/abs/1504.08083 项目见:https://github.c

ROI的使用与批量存储

1. ROI简介 ROI(Region of Interest)是指图像中的一个矩形区域,可能你后续的程序需要单独处理这一个小区域,如图所示: 图1 ROI的解释 ROI在实际工作中有很重要的作用,在很多情况下,使用它们会提高计算机视觉代码的执行速度.这是因为它们允许对图像的某一小部分进行操作,而不是对整个图像进行运算.在OpenCV中,所有的对图像操作的函数都支持ROI,如果你想打开ROI,可以使用函数cvSetImageROI(),并给函数传递一个矩形子窗口.而cvResetImageROI

【CV论文阅读】 Fast RCNN

Fast RCNN的结构: 先从这幅图解释FAST RCNN的结构.首先,FAST RCNN的输入是包含两部分,image以及region proposal(在论文中叫做region of interest,ROI).Image经过深度网络(deep network)之后得到feature map,然后可以从feature map中找到ROI在其中的投射projection得到每个patch,但论文没有提及怎么在map中寻找对应的patch,估计可以通过位置关系找到(猜想,因为deep Conv

从B树、B+树、B*树谈到R 树

第一节.B树.B+树.B*树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B+-tree/ B*-tree(B~Tree).前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自然会提高查找效率. 但是咱们有面对这样一个实际问题:就是大规模数据存储中,实现索引查询这样一个实际背景下,树节

从B 树、B+ 树、B* 树谈到R 树

从B 树.B+ 树.B* 树谈到R 树 作者:July.weedge.Frankie.编程艺术室出品. 说明:本文从B树开始谈起,然后论述B+树.B*树,最后谈到R 树.其中B树.B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成. 出处:http://blog.csdn.net/v_JULY_v . 第一节.B树.B+树.B*树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced

从B 树、B+ 树、B* 树谈到R 树(转)

  作者:July.weedge.Frankie.编程艺术室出品. 说明:本文从B树开始谈起,然后论述B+树.B*树,最后谈到R 树.其中B树.B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成. 出处:http://blog.csdn.net/v_JULY_v . 第一节.B树.B+树.B*树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree

皮尔森相似度计算举例(R语言)

整理了一下最近对协同过滤推荐算法中的皮尔森相似度计算,顺带学习了下R语言的简单使用,也复习了概率统计知识. 一.概率论和统计学概念复习 1)期望值(Expected Value) 因为这里每个数都是等概率的,所以就当做是数组或向量中所有元素的平均数吧.可以使用R语言中函数mean(). 2)方差(Variance) 方差分为population variance总体方差和sample variance样本方差,区别是总体方差除以N,样本方差除以N-1. 数理统计中常用样本方差,R语言的var()