Faster R-CNN

2020-01-19  本文已影响0人  crishawy

1. Abstract

Fast R-CNN已经实现了end-to-end结构的网络,但在提取RP阶段使用Selective Search时耗大的方法。本文使用基于CNN的RPN网络提取RP,使得提取RP和检测部分得以融合,大大加速了检测网络。

源码(Pytorch):https://github.com/jwyang/faster-rcnn.pytorch

2. Methods

2.1 Overall Framework


Faster RCNN主要包括三个过程:

2.2 RPN


Anchors:
在feature map使用的sliding window,选取sliding window的中心点映射回原图,并选取不同的scale(大小)和aspect ratio(anchor boxes的长宽比)形成个不同的anchors,总共得到个anchors,分别为feature map的宽和高。
根据CNN的Translation-Invariant(转换不变性),个anchors可作为回归参考box。

Loss Function:
RPN的loss包含分类损失和bbox回归损失,分类使用二分类损失即是否是目标物体,本文提出了两种分类标准:

选取anchor的过程如下:

回归使用L1 smooth loss:


smooth L1能够平滑离群点的作用,更有利于目标检测任务。

总体loss函数:


其中p_{i}^{*}=I(is \_object)t_{i}指预测box与anchor box的相对偏移量,t_{i}^{*}指gt box与anchor box的偏移量,学习目标是使得predict box接近于gt box。

注意:在计算回归损失时,RPN只计算正样本的损失。

Training:
RPN可使用BP + SGD训练,由于初始的anchors大部分都是negative samples,为了保证正样本与负样本的比例一致,随机采样256个anchors,并保持正负样本1:1的比例。

2.3 RPN生成ROI的过程

RPN在自身训练的同时,还会提供RoIs(region of interests)给Fast RCNN(RoIHead)作为训练样本。RPN生成RoIs的过程(ProposalCreator)如下:

2.4 RPN与Fast R-CNN共享权值训练

RPN用于提取region proposal,Fast R-CNN完成检测任务,接下来需要把两者放在同一网络结构中训练共享卷积的Multi-task网络模型,本文提出了三种训练方法:

结合上述分析,本文提出了一种4-Step Alternating Training

3. 补充

3.1 ROI

ROI pooling层用于将原始image上的RP映射到feature map上做max pooling操作,从而训练关注所有的RP,加速训练和测试速度,ROI具体的步骤如下:

Example:
考虑输入大小为 88的feature map,输出大小为22
(1). 输入固定大小的feature map


(2). region proposal投影

(3). 划分区域

(4). max pooling

3.2 ROI如何映射到feature map?

首先理解感受野的概念:CNN中某一层的输出结果中一个元素对应的输入层的区域大小为感受野receptive field。感受野的大小有kernel size,stride,padding和output size一起决定

一般地,取padding=\lfloor k_{i}/2 \rfloor,那么

部分来源于:https://blog.csdn.net/qq_38906523/article/details/80190807

上一篇 下一篇

猜你喜欢

热点阅读