经典论文重读---目标检测篇(一):RCNN


核心思想

Since we combine region proposals with CNNs, we call our method R-CNN: Regions with CNN features.

即将生成proposal的方法与cnn提取特征进行结合

引言部分

首先,作者提出,在深度学习之前,过去十多年在各种识别与检测的任务都是基于SIFT和HOG特征,SIFT与HOG特征都是通过基于块的直方图提取的,虽然可以提取很多特征,然而在实际中这些特征数量仍然不够。因为识别(recognition)是一个层次性的多阶段的计算特征的过程,它需要更多的信息。

紧接着作者回顾了2012年ImageNet Large Scale Visual Recognition Challenge (ILSVRC)的冠军团队Krizhevsky的CNN模型,也就是我们所说的Alexnet.然后提出了一个疑问:对于较小的数据集PASCAL VOC,基于CNN的分类模型是否也可以取得很好的效果呢,因为Imagenet的数据集相当庞大,可以训练很好的模型,但是对于小型数据集怎么解决呢?

当然可以,作者在接下来几段回答了这个问题,作者首先说了如何解决localization的问题,通过框回归(bounding box regression)的方法进行localization。在过去,通常都采用滑动窗口策略(sliding-window approach),但是由于CNN网络的卷积层的感受野太大,因此使得滑动窗口比较耗时。

因此作者采用基于proposal的策略(本文核心之一),即预先产生若干个候选框(原文中说产生2000个proposal),然后用CNN提取每个proposal的特征,再采用SVM进行分类。

之后作者如何用稀疏的数据训练一个好的CNN模型(本文核心之二):

supervised pre-training on a large auxiliary dataset (ILSVRC), followed by domain-specific fine-tuning on a small dataset (PASCAL), is an effective paradigm for learning high-capacity CNNs when data is scarce.

最后作者关于模型的效率问题做了些解释与描述,模型的主要计算在于矩阵向量乘积的运算(CNN卷积层、全连接层运算)以及NMS(非极大值抑制)两部分。

RCNN细节

整个pipline如下

这里写图片描述
检测系统的大致流程如下:

  1. 对于一副输入的图像,通过一些region proposal方法(原文采用的是selective search)产生2000个proposal.

  2. 用CNN提取每一个proposal的特征

  3. 将这些特征送入SVM进行分类

细节一:特征提取

对于所有的proposal,作者都将它们warp到227x227的大小(由于输入到网络中的图片大小必须一致),其中warp有一些小的技巧可以减少warp造成图像信息的丢失(例如对于比较扁的图像):

Regardless of the size or aspect ratio of the candidate region, we warp all pixels in a tight bounding box around it to the required size. Prior to warping, we dilate the tight bounding box so that at the warped size there are exactly p pixels of warped image context around the original box (we use p = 16)

在warp之前,先对bounding box里的图像进行膨胀扩大,先向外扩展p=16个像素, 得到一个比较方的Region后,在进行放缩。得到标准的227x228 RGB图后送入5个卷积层接两个全连接层的网络提取特征,最终提取到一个维度为4096的向量。
这里写图片描述

细节二:检测测试

将提取到的特征用SVM进行训练,利用训练好的SVM对产生的2000个候选框进行打分,然后使用NMS非极大值抑制,NMS原理如下

这里写图片描述

就像上面的图片一样,定位一个车辆,最后算法就找出了一堆的方框,我们需要判别哪些矩形框是没用的。非极大值抑制的方法是:先假设有6个矩形框,根据分类器的类别分类概率做排序,假设从小到大属于车辆的概率 分别为A、B、C、D、E、F。

  • 从最大概率矩形框F开始,分别判断A~E与F的重叠度IOU是否大于某个设定的阈值;
  • 假设B、D与F的重叠度超过阈值(IoU),那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。
  • 从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。

就这样一直重复,找到所有被保留下来的矩形框。

细节三:运行时间分析

RCNN有两个特性使得检测非常有效:

  • CNN 的参数对于所有要检测的物体种类是共享的
  • 提取到的特征向量比起其他模型提取到的特征向量维度较低

因此与其他模型相比,计算速度较快

训练

真实的RCNN实际上是由三个模型组合在一起的:

Our object detection system consists of three modules. The first generates category-independent region proposals. These proposals define the set of candidate detections available to our detector. The second module is a large convolutional neural network that extracts a fixed-length feature vector from each region. The third module is a set of class- specific linear SVMs

训练步骤一:Supervised pre-training,利用caffee在imagenet的数据集上预训练

训练步骤二:在VOC数据集上训练(依旧采用随机梯度下降法),fine-tuning。只不过将原先的1000类分类的网络层换为21类分类的网络层。

猜你喜欢

转载自blog.csdn.net/weixin_37762749/article/details/81325089