【论文阅读】- 目标检测 - RCNN

R-CNN流程

  1. 利用选择性搜索Selective Search算法在图像中从下到上提取2000个左右的可能包含物体的候选区域Region Proposal
  2. 因为取出的区域大小各自不同,所以需要将每个Region Proposal缩放(warp)成统一的227x227的大小并输入到CNN,将CNN的fc7层的输出作为特征
  3. 将每个Region Proposal提取到的CNN特征输入到SVM进行分类,每一类有个SVM,判断是否属于该类
  4. 使用回归器精细修正候选框的位置

【论文阅读】- 目标检测 - RCNN_第1张图片

【论文阅读】- 目标检测 - RCNN_第2张图片

步骤一:Selective Search算法选取Region Proposal

【论文阅读】- 目标检测 - RCNN_第3张图片

 

Selective Search在一张图片上提取出来大概2000个侯选区域,需要注意的是这些候选区域的长宽不固定。而在下一层使用CNN提取特征向量时,需要接受固定长度的输入,故我们需要对候选区域做一些长度上的修改。

论文对图片做了两种方法的比较:

  • 各向异性缩放,即直接缩放到指定大小,这可能会造成不必要的图像失真
  • 各向同性缩放,在原图上出裁剪侯选区域,在边界用固定的背景颜色(采用侯选区域的像素颜色均值)填充到指定大小

【论文阅读】- 目标检测 - RCNN_第4张图片

经过一系列的实验,作者发现采用各向异性缩放的实验精度最高,就采用这个方法了。

步骤二:使用CNN提取候选区域的特征

用CNN的作用是在候选区域的基础上提取出更高级、更抽象的特征,高级特征的作用是为下一步的分类器作为输入数据,分类器依据高级特征回归出物品的位置和种类。

在讲到CNN用作分类问题时,CNN的多个卷积层可以宽泛的认为是对原图像的特征提取,并且这样的特征提取具有平移不变性。我们把CNN当作特征特区的模板时,把需要提取特征的图片塞给它,训练好我们需要的CNN,就可以获取到特征向量。

1.训练(或者下载)一个分类模型(比如AlexNet)

【论文阅读】- 目标检测 - RCNN_第5张图片

2.对该模型做fine-tuning

  • 将分类数从1000改为20,比如20个物体类别 + 1个背景
  • 去掉最后一个全连接层

【论文阅读】- 目标检测 - RCNN_第6张图片

R-CNN 将候选区域与 GroundTrue 中的 box 标签相比较,如果 IoU > 0.5,说明两个对象重叠的位置比较多,于是就可以认为这个候选区域是 Positive,否则就是 Negetive.(选择0.5的原因是:CNN模型容量大,需要的数据多,故放宽限制,获取到更多的数据,防止模型过拟合)

训练策略是:采用 SGD 训练,初始学习率为 0.001,mini-batch 大小为 128.

【论文阅读】- 目标检测 - RCNN_第7张图片

需要注意的是,我们在训练CNN的时候会在网络的后面加上一个分类层,在训练完毕后,我们会移除最后的分类层,直接提取到前面的FC层,AlexNet的FC层为4096维。

3.特征提取

  • 提取图像的所有候选框(选择性搜索Selective Search)
  •  对于每一个区域:修正区域大小以适合CNN的输入,做一次前向运算,将第五个池化层的输出(就是对候选框提取到的特征)存到硬盘
  • 硬盘容量要大:PASCAL数据集提取的特征≈200GB

【论文阅读】- 目标检测 - RCNN_第8张图片

步骤三:在候选区域的特征向量上训练分类器

  • 训练一个SVM分类器(二分类)来判断这个候选框内物体的类别
  • 每个类别对应一个SVM,比如有N类,则训练N个SVM分类器,第i个分类器判断特征向量是否属于这个类别(是:Positive,否:Negative)

       2000个侯选区域,那么提取出来的就是2000*4096这样的特征向量(AlexNet的第一个FC层维度为4096,故pool5的输出为4096)。用这些特征向量训练同时训练N个二分类的SVM,SVM的权重矩阵为4096xN(N为分类种类)

Q:为什么要使用SVM?而不是CNN过FC层直接softmax出来得了?

这是因为我们在训练CNN的时候选的数据比较宽泛(选择样本不够准确),直接使用softmax输出的效果不是很好,而这里在特征向量的基础上,再训练一组SVM效果会比较棒。但是需要注意的是,在训练SVM的时候,我们使用的样本是有变换的。

训练SVM时使用的样本:

【论文阅读】- 目标检测 - RCNN_第9张图片

这个0.7的阈值是做实验得出来的经验值。

 步骤四:使用回归器精细修正候选框的位置(bbox regression)

  • 对于每一个类,训练一个线性回归模型去判定这个框是否框得完美。

【论文阅读】- 目标检测 - RCNN_第10张图片

bbox regression讲解


学习/参考链接

https://blog.csdn.net/u011974639/article/details/78053203

https://blog.csdn.net/v_JULY_v/article/details/80170182

你可能感兴趣的:(论文笔记,目标检测,R-CNN)