具体来说,R-CNN包括以下四个步骤:
- 对输入图像使用选择性搜索来选取多个高质量的提议区域。这些提议区域通常是在多个尺度下选取的,并具有不同的形状和大小。每个提议区域都将被标注类别和真实边界框;
- 选择一个预训练的卷积神经网络,并将其在输出层之前截断。将每个提议区域变形为网络需要的输入尺寸,并通过前向传播输出抽取的提议区域特征;
- 将每个提议区域的特征连同其标注的类别作为一个样本。训练多个支持向量机对目标分类,其中每个支持向量机用来判断样本是否属于某一个类别;
- 将每个提议区域的特征连同其标注的边界框作为一个样本,训练线性回归模型来预测真实边界框。
selective search
选择性搜索
之前选择候选框的方法是指定一个固定大小的矩形然后让它以一定步长像卷积核那样在图像上移动截取候选框,然后可以换一个大小的矩形再像前面那样截。这样做复杂度太高,产生了很多的冗余候选区域,而且我们预先不知道图像里的目标大小是怎样的所以大概率情况是框不能很好地贴合物体边缘。
-
使用《Efficient Graph-Based Image Segmentation基于图的高效图像分割》中的方法初始化出一个粒度较小的图像
-
计算各区域之间的相似度,(颜色相似度) (纹理相似度) (填充相似度)
尺度相似度:优先合并小的区域,也就是减少大区域合并小区域。
交叠相似度:要看一下两个区域是否爱挨着,如果距离太远证明这两个区域大概率不属于同一个目标,所以不合适合并他们。
-
选出相似度最大的区域
-
合并
-
迭代从第2步开始的步骤

-
图 b,我们可以用颜色来分开两只猫,却没法用纹理来区分;
-
图 c,我们可以用纹理来区分变色龙,却没法用颜色来区分
-
图 d,轮胎是车的一部分,不是因为它们颜色相近、纹理相近,而是因为轮胎包含在车上
CNN部分
预训练
使用一个CNN模型,比如AlexNet,因为它的参数太多了,我们可以做迁移学习,使用一个大的公开数据集(ImageNet ILSVC 2012),来训练AlexNet,得到一个1000分类的预训练模型,我们想要用RCNN识别的物体大概率也包含在这在1000个类别里,所以当预训练完AlexNet以后再把它迁移到RCNN来,预训练的参数已经可以很好的帮助我们从即将输入RCNN模型中的图像上提取正确的特征了。
微调
CNN模型针对ImageNet数据集且无变形的图像来提取特征,现在却是针对另外一个数据集且变形的图像来提取特征。所以,为了让我们的CNN适应新即检测任务(想要RCNN识别什么东西)和变形后的推荐窗口,需要对CNN的参数做微调,也就是使用resize后的“提议区域”再训练一下CNN,提议区域是新数据集中每张图片的通过选择性搜索裁出来的。要resize成227*227大小的,因为在AlexNet中,经过前面卷积池化的操作,输出结果的大小一定是固定的且不能改变,AlexNet的作者他使用的就是227大小的输入。

然后计算每个region proposal和ground truth 的IoU,对于IoU>0.5的region proposal被视为正样本,否则为负样本(即背景),对于一张图片的2k个提议区域来说负样本数量远大于正样本,将正样本进行过采样来保证样本分布均衡。因为大量的负样本参与训练时,即使调节了某些参数使得正样本损失变得更小,这些改进也不会对总的损失函数产生大影响,所以这种情况会淹没正样本的损失。
需要注意的是在微调的时候,需要原来预训练模型最后的1000-way的全连接层(分类层)换成21-way的分类层(20类物体+背景)。
SVM分类
训练SVM 时,IOU<0.3被作为负例,IOU>0.7作为正例,其余全部丢掉
这边作者把softmax换成SVM做分类,训练CNN的时候对正样本的定义比较宽松,IOU的阈值设为0.5,可能作者想一定程度上加大正例的数据量,防止网络的过拟合。svm训练的时候,因为svm适用于少样本训练,所以对于训练样本数据的IOU要求可以更严格些,这样输入SVM中的正样本质量会更高,预测结果就更精准。
Bounding Box Regression
绿色的是真实的物体框ground truth,红色的是经过SVM分类出来的 它觉得这个框可以表示出图像里某个物体的边界框,但是这个边界框往往还是与ground truth有不小的差距,因为红色框的大小和位置取决于第一步的选择性搜索算法是如何选取的,并且带有一定的随机性,即使SVM有再精准的分类能力也是基于SS算法的结果判断。因此需要在最后一步做边框回归。
边框回归这一步要做的也是训练一个线性回归模型,输入是提议区域对应的CNN特征向量和ground truth的位置信息,可以输出重新调整提议区域的位置的信息。
原文中作者使用的是上图公式,好处是,回归模型不管处理多大的图,如果他们的特征向量是一样的,那么移动的比例都是一样的, 所以x,y要除以宽和高。否则,由于CNN具有尺度不变性,同一图像经过平移缩放的新图像的特征向量一样,输入线性回归模型得到的移动距离也一样,但是实际上它们需要的移动距离是不相同的。
使用指数形式保证宽高的缩放比例始终为正数