论文笔记:Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks
2016-01-29 11:34
841 查看
论文笔记:Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks
时间:2015-06-17 09:48:32 阅读:1729 评论:0 收藏:0[点我收藏+]
标签:deep-learning 论文笔记 cnn paper
文章: http://arxiv.org/abs/1506.01497
源码:坐等。。。。
目录:
Region Proposal Networks
Translation-Invariant Anchors
A Loss Function for Learning Region Proposals
Optimization
Sharing Convolutional Features for Region Proposal and Object Detection
Implementation Details
Experiments
Conclusion
首先,回顾下Fast R-CNN,与传统CNN不同的是,Fast R-CNN将图片送入网络时同时将multiple regions of interest (RoIs) 也送入网络,每一个RoI被pooled到一个固定大小的feature map,然后通过全连接将其映射到一个特征向量。每个RoI最终得到两个输出向量softmax probabilities 和 per-class bounding-box regression offsets。
Faster R-CNN 可以看做是对 Fast R-CNN 的进一步加速,最主要解决的如何快速获得 proposal,一般的做法都是利用显著性目标检测(如Selective search)过一遍待检测图,得到proposal。基于区域的深度卷积网络虽然使用了 GPU 进行加速,但是the region proposal methods 确却都是在 CPU上实现的,这就大大地拖慢了整个系统的速度。然后作者提出,卷积后的特征图同样也是可以用来生成 region proposals 的。通过增加两个卷积层来实现
Region Proposal Networks (RPNs) , 一个用来将每个特征图 的位置编码成一个向量,另一个则是对每一个位置输出一个 objectness score 和 regressed bounds for k region proposals。
RPNs 是一种 fully-convolutional network (FCN),为了与 Fast R-CNN 相结合,作者给出了一种简单的训练方法:固定 proposal, 为生成 proposal 和 目标检测 这两个task 交替微调网络 。
Region Proposal Networks
RPNs 从任意尺寸的图片中得到一系列的带有 objectness score 的 object proposals。具体流程是:使用一个小的网络在最后卷积得到的特征图上进行滑动扫描,这个滑动的网络每次与特征图上n*n的窗口全连接,然后映射到一个低维向量,例如256D或512D, 最后将这个低维向量送入到两个全连接层,即box回归层(box-regression layer (reg))和box分类层(box-regression layer (reg))。
Translation-Invariant Anchors
这里作者说的平移不变性,其实就是以窗口中心进行多个尺度、宽高比的采样。如上图右边,文中使用了3 scales and 3 aspect ratios (1:1,1:2,2:1), 就产生了 k = 9 anchors at each sliding position. Anchors 这个词不知道应该怎么翻译,原文写的是:The k proposals are parameterized relative to k reference boxes, called anchors。A Loss Function for Learning Region Proposals
作者将 anchors 分为两类:与 ground-truth box 有较高的 IoU 或 与任意一个 ground-truth box 的 IoU 大于0.7 的 anchor 都标为 positive label; 与 所有 ground-truth box 的IoU 都小于0.3的 anchor 都标为 negative label。其余非正非负的都被丢掉。对于每一个 anchor box
i, 其 loss function 定义为:
L(pi,ti)=Lcls(pi,p?i)+λp?iLreg(ti,t?i)
其中,pi
是预测其是一个 object 的 probability ,当其label 为 positive 时,p?i
为1,否则为0。 ti={tx,ty,tw,th}
是预测的 bounding box,t?i
是与这个 anchor 相对应的 ground-truth box 。 classification loss
Lcls
是一个二分类(是或者不是object)的 softmax loss 。regression loss
Lreg(ti,t?i)=R(ti?t?i),
R
是 Fast R-CNN 中定义的 robust loss function (smooth-L1) ,p?iLreg
表示只针对 positive anchors (p?i
= 1). 这里还有一个平衡因子 λ
, 文中设为10,表示更倾向于box location。
Optimization
使用 back-propagation and stochastic gradient descent (SGD) 对这个RPN进行训练,每张图片随机采样了256个 anchors , 这里作者认为如果使用所有的anchors来训练的话,this will bias towards negative samples as they are dominate。所以这里作者将采样的正负positive and negative anchors have a ratio of 1:1.新增的两层使用高斯来初始化,其余使用 ImageNet 的 model 初始化。详见论文。
Sharing Convolutional Features for Region Proposal and Object Detection**
通过交替优化来学习共享的特征,主要有4步:1. 使用前面的方法训练一个RPN。用 ImageNet 的 model 初始化,然后针对 region proposal task 进行微调。
2. 利用第一步得到的 proposals 使用 Fast R-CNN 来训练另一一个单独的 detection network, 到这里两个网络还是分开的,没有 share conv layers 。
3. 利用第二部训练好的 detection network 来初始化 RPN , 然后训练,这里训练的时候固定 conv layers ,只微调 RPN 那一部分的网络层。
4. 再固定 conv layers ,只微调 Fast R-CNN 的 fc 层。
Implementation Details
每个 anchor , 使用 3 scales with box areas of 1282,2562,
and 5122
pixels, and 3 aspect ratios of 1:1, 1:2, and 2:1. 忽略了所有的 cross-boundary anchors 。在 proposal regions 上根据 cls scores 进行了 nonmaximum suppression (NMS) 。其余详见论文。
Experiments
详见论文。Conclusion
主要是提出了使用 Region Proposal Networks (RPNs) 来生成 region proposals ,然后使用共享权值减少了网络参数, 使得region proposal step is nearly cost-free.相关文章推荐
- Objective-C MD5 And SHA And HMAC-SHA
- Object-C--->Swift之(九)延迟存储属性
- JSONObject.toBean(JSONObject jsonObject, Class beanClass)时,防止时间类型为系统默认时间
- Objective-C中的Block
- tableView视差滚动
- Swift项目兼容Objective-C问题汇总
- Objective-C语言编写(OC)打僵尸小游戏源码
- 在主线程中慎用WaitForSingleObject (WaitForMultipleObjects)
- Object-C--->Swift之(八)类和结构体
- 浅析Objective-C的copy
- Objective-C Runtime学习笔记
- Objective-C 协议最基本解释
- Objective-C与JavaScript交互的那些事
- Objective-C Runtime 运行时之六:拾遗(转载)
- Objective-C Runtime 运行时之五:协议与分类(转载)
- The Browser Object Model
- Objective-C Runtime 运行时之四:Method Swizzling(转载)
- Objective-C Runtime 运行时之三:方法与消息(转载)
- SQL Server中的sysobjects
- Object.observe() 观察对象