论文笔记-Fast R-CNN

1 介绍

本文基于《Fast R-CNN》翻译总结,作者是Ross Girshick(Microsoft Research)。
Fast Region-based Convolutional Network method (Fast R-CNN) 用来进行物体识别。相比于图片分类,物体识别更具挑战,需要更加复杂的方法来解决。

R-CNN

R-CNN有以下三个缺点:
1.训练是多步骤的:R-CNN首先微调一个卷积网络,使用log loss 进行物体检测;然后适配SVM到卷积特征。这些SVM作为物体检测者,代替softmax分类器。最后一步,训练学习bounding-box 回归。
2.训练花费很多存储与时间:SVM和bounding-box 回归的训练,需要提取每张图片的每个物体的特征,并且写到磁盘。例如用VGG16这样深度网络,5k 张图片的处理需要花费2.5 GPU-days。
3.物体识别慢:测试时,需要提取每张图片的每个物体的特征。基于VDD16的识别每张图片需要47秒(在一个GPU上)。

R-CNN比较慢是因为对于每个物体检测的卷积,没有共享计算。SPPnet采用了共享计算,比R-CNN测试时间提高了10到100倍。但SSPnet也有显著的缺点,就像R-CNN一样,训练是多步骤的,包括特征提取、用log loss 微调网络、训练SVMs、最后完成bounding-box 回归,同时特征也是被写到磁盘的。

Fast R-CNN优点

相比R-CNN、SPPnet有较高的检测质量(mAP);
训练是单步的,使用multi-task loss。
训练可以更新所有网络层(SPPnet 不能更新空间金字塔池化层之前的卷积层)。
不需要磁盘存储来进行特征缓存。

2.Fast R-CNN 结构

在这里插入图片描述

如上图,输入是整个图片和每个图片中物体定位集合set。对于整个图片,网络采用一些卷积和最大池化(max pooling)层来产生一个卷积特征map(conv feature map)。对于set中每个物体定位,RoI pooling layer 从上一步的feature map 提取固定长度的feature vector。接着,每一个feature vector被输入到一系列全连接层(FC),最终形成两个姊妹输出层,一个是 K个物体分类的softmax 概率估计,一个是K个物体分类的每一个的bounding-box(每个bound ing-box含有4个值)。

2.1RoI pooling layer

RoI pooling layer使用最大池化将每一个有效的interest region内的特征转化为一个小的feature map,该feature map为固定大小H*W(比如7 * 7)。这里H、W是超参数,独立于任何RoI(region of interest)。本文,一个RoI 是一个矩形 window作用于conv feature map。每个RoI是4维数组(r,c,h,w),分别代表左上角(r,c),和高、宽。

RoI pooling layer将h * w 的RoI 通过h/H * w/W的小窗口池化,转化成H * W的固定大小feature map。比如14 * 14 的RoI 转化成7 * 7的feature map。

2.2已训练网络的初始化

将VGG16等网络应用于Fast R-CNN,需要进行下面3步处理:
首先,最后的最大池化层被RoI pooling layer替换。设置H*W,以变适配于Fast R-CNN的第一个全连接层。对于VGG16,H=W=7.

接着,网络的最后全连接层和softmax被替换成两个姊妹输出层(K+1类别的全连接和softmax,类别bounding-box 回归)。

第三步,网络修改成两个输入:图片和这些图片的RoIs。

2.3检测微调

采用反向传播训练所有网络权重是Fast R-CNN的一个重要能力。

在Fast R-CNN训练中,随机梯度下降最新批处理是谱系采样的,首先采样N个图片,接着采样每个图片的R/N个RoIs。关键的是,相同图片上的RoIs在前向和后向传输中共享计算和存储。使N小可以减少mini-batch计算量。例如,采用N=2,R=128,训练比“采样一个RoI从128张不同的图片的方法(R-CNN和SPPnet采用的该方法)”快了64倍.

这种方法可能导致回归训练变慢,因为一个图片中的RoIs相关程度较高。但我们实验中没有出现。

除了上面的采样方法,Fast R-CNN使用一个流线型训练过程,用一个微调的阶段结合softmax classifier 和bounding-box回归。而不是训练softmax classifier、SVMs、回归这个三个独立的阶段。

2.4Multi-task loss

Fast R-CNN有两个姊妹输出层。第一个层输出一个离散的概率分布(per RoI),p=(p0,…pK),在K+1个分类上。通常,p是通过一个全连接层进行softmax(K+1个输出)获得。

在这里插入图片描述
每一个训练的RoI被用一个ground-truth class u 和一个 ground-truth bounding-box regression target v 进行标签。我们使用每个标签的RoI上的multi-task loss L 联合训练分类和bounding-box。
在这里插入图片描述

[u>=1]表示当u>=1时,该表达式等于1,否则等于0.
λ控制两个损失之间的权衡。我们将ground-truth regression targets v规格化为0均值,单位方差。所有实验采用λ=1.

第二个loss Lioc是采用的L1损失,它不是敏感的对于轮廓。而R-CNN和SPPnet采用的L2损失。
在这里插入图片描述

2.5Mini-batch 采样

每个SGD mini-batch采用N=2 个图片,R=128,这样每张图片采用64个RoIs。有25%的RoIs,其与ground truth bounding box的IoU(intersection over union)至少为0.5,这些RoIs构成了标有foregroud物体分类的样例,使得u>=1。剩下采样的RoIs和ground truth的最大IoU在[0.1,0.5]范围内,这些是backgroud样例,是被标记为u=0。还有一些IoU小于0.1的,是一些hard example。

2.6Back-propagation through RoI pooling layers

在这里插入图片描述

3 实验结果

Fast R-CNN在速度和质量上都高于R-CNN和SPPnet。另外,稀疏的物体定位(RoIs)可以改善检测质量。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zephyr_wang/article/details/106024086