Faster RCNN论文解析
Faster R-CNN由一个推荐区域的全卷积网络和Fast R-CNN组成, Fast R-CNN使用推荐区域。整个网络的结构如下:
1.1 区域推荐网络
输入是一张图片(任意大小), 输出是目标推荐矩形框的集合,以及相应的目标打分。网络的前面使用了一个基本的卷积层集合来提取特征(ZF或VGG-16)。这个基本层同时被RPN网络和Fast R-CNN使用。
在基本层之后,文中使用一个n*n的滑动窗口在最后一层特征图卷积,在每一个窗口位置,得到一个256维或512维的特征。这个特征随后被送进两个全连接层,分别是box-regression layer和box-classification layer。
上段中的迷你网络如下图所示。由于迷你网络是通过滑动窗口的方式,所以得到的特征是共享位置信息的,于是box-regression和box-classification层的全连是通过1×1的卷积实现。
1.1.1 Anchors
在滑动窗口的每个位置,会预测多个推荐区域,数量记为K(文中为9)。reg层有4K个输出(编码K个方框的坐标),cls层有2K个输出(预测目标或非目标的概率)。 这K个推荐区域被称为anchors。每个anchor都在滑动窗口的中心,并有相应的尺度大小和长宽比例。文中采用了三种尺度和三种长宽比,因此K为9。在这层卷积中,padding为1, stride为1, 所以总共会产生W*H(特征图的大小)个anchors。
1.1.2 Anchors的变换不变性(ranslation-Invariant)
变换不变性是说,anchors和根据anchors计算推荐区域的函数是对图像的变换不变的。就是说,如果变换了图像中的一个对象,那么推荐的区域也是相应变换的,同样的函数可以预测任何位置的一个推荐区域。我的理解是针对图像的平移缩放,anchors照样能检出对应的区域。这个性质是与文中提到的MultiBox方法使用k-means生成anchors相对的,因为k-means聚类方法是依赖于初始点的选取的,所以没有变换不变性。
1.1.3 多尺度Anchors 作为回归引用(Regression References)
有两种多尺度预测方式。一种是图像/特征金字塔,图像在多个尺度进行resize,卷积特征在每个尺度的图像上进行计算,比较耗费时间。另一种在特征图上使用多尺度的滑动窗口,这种方法更为高效。
1.1.4 损失函数
为了训练RPN,文中 对每个anchor赋予二值(是目标或非目标)类标签。对两种anchors赋予正标签:1)和真值框有最高交并比的anchor/anchors;2)和任何真值框的IoU高于0.7。对和所有真值框IoU都低于0.3的anchor赋予负标签。其他的anchors不作为训练目标。损失函数如下:
i是一个mini-batch中anchor的序号,pi是anchor i被预测为目标的概率。真值标签pi*是1, 如果anchor赋予了正标签,pi*是0, 如果anchor赋予了负标签。ti是预测的bounding box的4个参数坐标向量,ti*是正anchor的ground-truth box。Lcls是两类的log损失。Lreg(ti, ti*) = R(ti - ti*),R是smooth L1函数(在(2)式中定义)。pi*Lreg只针对正anchors(pi*=1)。cls和reg层分别输出{pi}和{ti}。Ncls(=256)是mini-batch的大小, Nreg是anchor位置的数目(Nreg~2400),默认设置λ=10,来使两项损失权重大致相等。
上式中x,y,w,h表示box的中心坐标和宽度、高度。变量x, xa, x*分别表示预测框、anchor框、真值框。
1.1.5 训练RPN网络
每个mini-batch从单个图像中的正负anchors产生。文中正负anchor的比例为1:1。如果正样本数少于128,则用负样本填充。
1.2 RPN和Fast R-CNN共享特征
RPN和Fast R-CNN单独训练会以不同方式修改卷积层。文中介绍了三种方式共享卷积层。
(i)交替训练。首先训练RPN,使用proposals训练Fast R-CNN。网络使用Fast R-CNN微调,然后用来初始化RPN,迭代这个过程。
(ii) 近似联合训练。在每次SGD迭代时,前馈计算生成区域推荐,看作训练Fast R-CNN检测器的预计算推荐。反馈传播中共享层传播RPN和Fast R-CNN结合的损失。这种方式忽略了关于推荐框坐标的导数。
(iii) 非近似联合训练。Fast R-CNN中的 RoI pooling层接收卷积特征和预测的bounding boxes作为输入,这时反向传播会涉及到box corrdinates.这时需要RoI poling层关于box coordinates是可微的。
1.2.1 4-步交替训练
第一步,训练RPN,用预训练的ImageNet模型初始化,端到端微调区域推荐任务。第二步,通过Fast R-CNN训练一个单独的检测网络,从第一步的模型中产生推荐框。这个网络也用ImageNet模型初始化。这时候两个网络不共享卷积层。第三步,使用检测网络初始化RPN训练,固定了共享卷积层,只微调独属于RPN的层。现在两个网络共享卷积层。第四步,使卷积层固定,微调独属于Fast R-CNN的层。这样,两个网络共享了卷基层,形成了一个统一网络。
1.3 实现细节
训练时,会将与边界有交叉的anchors删除,否则会难以收敛。测试时,仅仅将与边界交叉的anchors切到边界即可。
Faster RCNN论文解析的更多相关文章
- [原创]Faster R-CNN论文翻译
Faster R-CNN论文翻译 Faster R-CNN是互怼完了的好基友一起合作出来的巅峰之作,本文翻译的比例比较小,主要因为本paper是前述paper的一个简单改进,方法清晰,想法自然.什 ...
- k[原创]Faster R-CNN论文翻译
物体检测论文翻译系列: 建议从前往后看,这些论文之间具有明显的延续性和递进性. R-CNN SPP-net Fast R-CNN Faster R-CNN Faster R-CNN论文翻译 原文地 ...
- [Network Architecture]Mask R-CNN论文解析(转)
前言 最近有一个idea需要去验证,比较忙,看完Mask R-CNN论文了,最近会去研究Mask R-CNN的代码,论文解析转载网上的两篇博客 技术挖掘者 remanented 文章1 论文题目:Ma ...
- Faster R-CNN论文详解 - CSDN博客
废话不多说,上车吧,少年 paper链接:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks ...
- 【目标检测】Cascade R-CNN 论文解析
目录 0. 论文链接 1. 概述 2. 网络结构的合理性 3. 网络结构 4. 参考链接 @ 0. 论文链接 Cascade R-CNN 1. 概述 这是CVPR 2018的一篇文章,这篇文章也为 ...
- Faster RCNN论文学习
Faster R-CNN在Fast R-CNN的基础上的改进就是不再使用选择性搜索方法来提取框,效率慢,而是使用RPN网络来取代选择性搜索方法,不仅提高了速度,精确度也更高了 Faster R-CNN ...
- Faster R-CNN论文阅读摘要
论文链接: https://arxiv.org/pdf/1506.01497.pdf 代码下载: https://github.com/ShaoqingRen/faster_rcnn (MATLAB) ...
- Faster RCNN代码解析
1.faster_rcnn_end2end训练 1.1训练入口及配置 def train(): cfg.GPU_ID = 0 cfg_file = "../experiments/cfgs/ ...
- faster rcnn算法及源码及论文解析相关博客
1. 通过代码理解faster-RCNN中的RPN http://blog.csdn.net/happyflyy/article/details/54917514 2. faster rcnn详解 R ...
随机推荐
- flask模板语言,装饰器,路由及配置
1.模板语言jinja2 Flask中默认的模板语言是Jinja2 1.0 模板传参 from flask import Flask,render_template app = Flask(__nam ...
- AFNetworking 打印错误信息(二进制信息)
AFNetworking 打印错误信息(二进制信息) NSError *underError = error.userInfo[@"NSUnderlyingError"]; NSD ...
- 复习宝典之Maven项目管理
查看更多宝典,请点击<金三银四,你的专属面试宝典> 第二章:Maven项目管理 Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配 ...
- linux 安装 node 环境
本篇学习的分享主要说在linux 安装 node 环境,个人也是在腾讯云的实验室课程学习的,这里只是个人的一个学习记录, 大家也可以去腾讯的实验室来体验一下,教程十分详细易学. 1 .安装 Node. ...
- Kaggle比赛总结
做完 Kaggle 比赛已经快五个月了,今天来总结一下,为秋招做个准备. 题目要求:根据主办方提供的超过 4 天约 2 亿次的点击数据,建立预测模型预测用户是否会在点击移动应用广告后下载应用程序. 数 ...
- Eclipse易卡死
在用eclipse编辑项目的时候,经常卡死,经过查询知道原来是我的JDK和eclipse版本对应的不好,我们都知道,eclipse的环境需要配置. 当时情况是这样的 2.容易出现卡死或者如图所示的情况 ...
- js实现99乘法表的编写(双层for循环与递归方法)
双层for循环实现方法: function nine (num) { ; i <= num; i++){ var str = ''; ; k <= num; k++){ if(i > ...
- Apache httpd Server Notes
1. httpd启动.停止以及重启 启动: apachectl –f $PATH_TO_CONF/httpd.conf 停止及重启 apachectl –k stop/restart/graceful ...
- QQ空间运营 怎么做一个QQ人气号?
QQ空间,用户太年轻,他们渐渐长大. 空间,用户消费水准偏低,貌似很难开发,除非玩灰链,否则同等人气,和微信比起来,一个地下,一个天上. 然而,他们快要长大,即将成为消费主力军,难免会转移微信,但情怀 ...
- Scala 语法(一)
(1)基本语法 变量 val var(可变变量): 数据类型 Byte,Char,Int,Short,Long,String(字符),Float,Double,Boolean(true,flase). ...