Faster R-CNN解读

引言

论文:《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》
详细内容可以参看博客,我只记录一些我自己的理解。

摘要

1.提出使用RPN网络替代R-CNN和Fast R-CNN中的区域提取Selective Search
2.采用RPN和Fast R-CNN交替训练的方式

RPN网络

网络结构大致如下,就是传统的CNN网络进行multi-task。可以采用ZFnet或者是VGG16net两种架构。
这里写图片描述

Anchor

主要记录一下anchor的概念。
Anchor是设置在原图上的一些矩形框。RPN进行ROI提取的大致思路就是:对CNN最后一层的feature map进行3*3的滑窗,feature map的每一个节点可以对应原图上的一个感知区,逐个判断Anchor是否包含ROI。
论文为了解决多尺度的问题,设置了9种不同的Anchor。9的来源是:ratio [1:1,1:2,2:1]和scale [128,256,512]的全排列。
Feature Map的每一个节点都对应一个Anchor的中心点,因此,对于ZFnet网络的Feature Map最后一层输出是40*60,因此会对应40*60*9=21600个Anchors。需要对每一个anchor判断是否包含ROI。为了解决Anchors太多的问题,论文提出使用如下两个方式进行解决:
1.忽略cross boundary的Anchor。意思就是,如果某一个Anchor与边缘交叉了,那么就将这个anchor去掉。这样的做法是可以理解的,不想将某一个cross boundary的anchor删除的一个原因是可能这里出现了obj,但是由于各种scale的anchor遍布整个原图,完全会有其他更合适的非cross-boundary的anchor标注该obj,因此删除。
通过这样的方式可以将Anchor下降到6000个左右
2.通过非极大抑制算法NMS可以将Anchor 下降到约2000个左右
NMS算法介绍

损失函数

RPN网络的损失函数介绍如下:

L ( p i , t i ) = 1 N c l s i L c l s ( p i , p i ) + λ 1 N r e g i p i L r e g ( t i , t i )

由分类的损失函数和回归的损失函数组成(PS: 分类的损失函数指的是判断anchor内部)
下面分别进行介绍

分类损失函数

1 N c l s i L c l s ( p i , p i )

其中,
{ p i 预测概率 p i { 1 正例 0 反例 N c l s 1个minibatch中的anchor数量

L c l s 函数是Softmax 函数

回归损失函数

λ 1 N r e g i p i L r e g ( t i , t i )

其中
{ p i { 1 正例 0 反例 目的是计算正例anchor N r e g anchor的总数量

L r e g = s m o o t h L 1 ( t i , t i )

其中
s m o o t h L 1 ( x ) = { 0.5 x 2 当|x|<1 | x | 0.5

猜你喜欢

转载自blog.csdn.net/qq_33297776/article/details/79790531