R-CNN
1、 R-CNN的主要内容
- Extract region proposal,使用selective search的方法提取2000个候选区域
- Compute CNN features,使用CNN网络计算每个proposal region的feature map
- Classify regions,将提取到的feature输入到SVM中进行分类
- Non-maximum suppression,用于去除掉重复的box
- Bounding box regression,位置精修,使用回归器精细修正候选框的位置
2、Extract region proposal
本文中使用了selective search这个方法来选择候选区域,输入一张图片,selective search根据以下的步骤生成region proposals:
- 使用一种过分割方法,将图片分割成比较小的区域
- 计算所有邻近区域之间的相似性,包括颜色、纹理、尺度等
- 将相似度比较高的区域合并到一起
- 计算合并区域和临近区域的相似度
- 重复3、4过程,直到整个图片变成一个区域
在每次迭代中,形成更大的区域并将其添加到区域提议列表中。这种自下而上的方式可以创建从小到大的不同scale的region proposal,如下图所示:
3、 Compute CNN features
3.1 Warped region
(1)各向异性缩放:这种方法比较简单,就是不管图片的尺寸,直接resize到固定的大小,如下图的第3列,这种方法会导致图片发生形变。
(2)各向同性缩放:主要包括两种方法:
- 先扩充后裁剪:在原始图片中把bounding box的边界进行扩展延伸成正方形,然后再进行裁剪,如上图第1列所示。
- 先裁剪后扩充:先把bounding box图片裁剪出来,然后用固定的背景颜色填充成正方形图片,如上图第2列所示。
经过实验,作者发现采用各向异性缩放的精度最高。
3.2 Training
本文中使用CNN网络来对每个region proposal提取特征,我们首先来看一下本文是如何训练CNN网络的,主要包括以下两步:
(1) Pre-training,由于目标检测的数据量相对较少,不足以训练一个好的CNN网络,因此文中首先使用一个大的数据集(ILSVRC2012数据集)来训练AlexNet,得到一个预训练的分类网络模型。
(2) Fine-tuning,然后再使用warped region proposals来微调AlexNet的参数,即微调AlexNet来对region proposal进行分类。因此需要将原来1000-way的分类层替换成了21-way的分类层(20类物体+背景)。
在训练的时候,计算每个region proposal和ground truth 的IoU,对于IoU>0.5的region proposal被视为正样本,否则为负样本(即背景)。在每次迭代的过程中,选取32个正样本和96个负样本组成一个mini-batch。我们使用0.001的学习率和SGD来进行训练。
4、Testing
虽然文中训练了CNN网络对region proposal进行分类,但是实际中这个CNN的作用只是提取每个region proposal的feature,因此,在testing的过程中,我们输入region proposal,然后AlexNet的FC7层会输出4096维的特征,然后我们将这些特征保存起来,以供后续的分类使用。
5、Classify regions
本文使用了SVM来进行分类,对于每一类都会训练一个SVM分类器,所以共有N(21)个分类器,该分类器的主要作用是判断我们同样来看一下是如何训练和使用SVM分类器的。
6、Training
如下图所示,在训练过程中,SVM的输入包括两部分:
(1) CNN feature:这个便是CNN网络为每个region proposal提取的feature,共2000*4096。
(2) Ground truth labels: 在训练时,会为每个region proposal附上一个label,在SVM分类过程中,当IoU<0.3时,为负样本,然后正样本便是ground truth box(个人理解应该是和ground truth box重合度最高的region proposal)。但是,对于label的形式没有详细说明,但是根据我个人理解,正负样本的label应该是以下的形式:
然后SVM分类器也会输出一个预测的labels,然后用labels和ground truth labels计算loss,然后训练SVM。
7、Testing
Testing的过程就是输入经过之前的步骤得到 test image 的 region proposal 的 feature,然后输出对2000个proposal的类别预测值。
8、Non-maximum suppression
经过SVM之后,我们会得到2000个region proposal的class probability,然后我们可以根据‘有无物体’这一类过滤掉一大批region proposal,然后如果某个候选框的最大class probability<阀值,那也可以过滤掉这些region proposal,那剩下的可能如下左图所示,就是有多个box相互重叠,但是我们目标检测的目标是一个物体有一个box即可,那这个时候就需要用到非极大值抑制(NMS)了,经过NMS之后,我们最终的检测结果如下右图所示:
9、 Bounding box regression
图中,绿色的框表示Ground Truth Box, 红色的框为我们预测得到的region proposal 。那么即便红色的框被分类器识别为飞机,但是由于红色的框定位不准(IoU<0.5), 那么这张图相当于没有正确的检测出飞机。所以我们需要对红色的框进行微调,使得经过微调后的窗口跟Ground Truth Box更接近,这样就可以更准确的定位了。