Rich feature hierarchies for accurate object detection and semantic segmentation Tech report(v5)

论文原文

0. 摘要

作者提出了一种简单并且可度量(scalable)的目标检测算法。提升了将近30%的精确度——在VOC2012数据集上的mAP的值为53.3%。主要的创新点有两点:

  1. 使用CNN模型**定位(localize)和切割(segment)**底层局部特征。
  2. 当训练样本标签不足时,通过有监督预训练的CNN模型经过微调后,能够较好的提升性能。

作者称该模型为R-CNN:Regions with CNN features.

1. Introduction

CNN在ImageNet上的分类结果在多大程度上可泛化为PASCAL VOC比赛的目标检测结果?

To what extent do the CNN classification results on ImageNet generalize to object detection results on the PASCAL VOC Challenge?

作者主要考虑了一下两点内容:

  1. 通过深度学习对目标进行定位
  2. 通过少量的标注数据去训练一个高性能的模型

1.1 对目标进行定位

目标检测的特点:需要标注对象的位置。对于位置的标注:有两种主要的方法:

  1. One approach frames localization as a regression problem
  2. .Analternativeistobuilda sliding-window detector
  1. 看成回归模型,但是在实际情况中效果并不好(they report a mAP of 30.5% on VOC 2007 compared to the 58.5% achieved by our method)
  2. 使用滑动窗口。本来我们想用这个方法来着,但是计算成本太高了,这要求我们的网络具有 195 × 195 195 \times 195 195×195感知野 32 × 32 32 \times 32 32×32stride

所以,我们采用的办法是:recognition using regions,这种方法在语义分析与目标检测中取得优良的性能。在模型测试阶段,输入的图片在模型中产生了2000个类别独立的区域,针对这些区域,我们首先使用CNN提取向量特征,然后使用SVM分类器对其进行分类。

我们忽略了区域的形状大小,在固定大小的CNN input到region的过程中,加入了affine image warping操作,如下图所示。

在这里插入图片描述

1.2 数据量小的问题

借助迁移学习的方法,先在大数据集(ILSVRC)上进行训练,然后在迁移到小数据集上(PASCAL),在实验中效果提升了8个点。

1.3 model总结

The only class-specific computations are a reasonably small matrix-vector product and greedy non-maximum suppression.This computational property follows from features that are shared across all categories and that are also two orders of magnitude lowerdimensional than previously used region features

在类别的识别中,使用了很小的矩阵点乘和greedy non-maximum suppression(这里的意思应该是使用小卷积核,并没有贪心的覆盖整个物体,

2. Object dectection with R-CNN

Object dectection system 由三个部分组成:

  1. generates category-independent region proposals:主要是为了定义需要检测的数据集范围。也就是生成框的过程:基于一些规则,图片的变化情况之类的
  2. large convolutional neural network:从每个区域提取固定长度的特征。
  3. linearSVM:用于分类

在这里插入图片描述

2.1 Module design

2.1.1 region proposal

selective search to enable a controlled comparison with prior detection work.也就是说,作者是针对物体进行分析的,说明可能框住物体的框形态大小都不一样

2.1.2 Feature extraction

从每个region中提取了4096个特征,特征提取的方式为:使用5个卷积层和2个全连接层,前向计算 227 × 227 227 \times 227 227×227的RGB图像,为了把图像变成CNN能够处理的大小,对其大小做了处理。

2.2 Test-time detection

  1. 把CNN的结果扔到SVM中进行评分和分类,如果区域A与区域B重叠了,如果区域B的得分高于阈值(0.3)那么就把区域A舍弃掉。
  2. 假设有2000个region,经过CNN之后得到的特征向量为2000* 4096,然后把这些向量扔到一个权重大小为4096*N的支持向量机中(N代表分类的数量)

2.3.Training

2.3.1 Supervised pre-training

自己模型的base是从caffe中的模型pertrain得来的。

2.3.2 Domain-specific fine-tuning

使用SGD去训练CNN部分,把ImageNet中指定的1000-way分类层换成了随机初始化的(N+1)-way 分类层(N是类别的数量,1是背景数量)。在VOC数据集中,N=20,;ILSVRC2013数据集中,N=200,We start SGD at a learning rate of 0.001。在每一批iteration中,batch_size 的大小为128,其中32个类别的窗口以及96个背景窗口

2.3.3 Object category classifiers

使用IoU overlap threshold来定义阈值。

3 流程总结

R-CNN首先选取若干提议区域,标注他们的类别边界框,然后用CNN抽取整个区域的特征,用每个提议区域的特征预测类别和边界框。具体步骤如下:

  1. 对输入图像进行选择搜索,得到多个提议区域(生成锚框也是一种方法)这些区域在多个尺度下选择,故而大小不一样。
  2. 选取一个预训练过的网络,将最后的输出层替换为指定的层,这个指定的层用于格式化输入尺寸。
  3. 将每个提议区的特征和标注的类别作为一个样本,训练多个支持向量机进行分类,每一个类别对应一个支持向量机
  4. 将每个提议区域和边界框作为一个样本,训练回归模型预测真实边界框

4 Appendix

A. Object proposal transformations

CNN中要求的图像大小为 227 × 227 227 \times 227 227×227,作者对比了两种方法。

tightest square with context

encloses each object proposal inside the tightest square:紧紧的把目标给框住,下图中A是目标,B是用 tightest square with context的结果。
在这里插入图片描述

tightest square without context

把缺少的部分padding补全了。C部分
在这里插入图片描述

warp

作者在论文中用的是该方法:也就是对应的D,把图片拉伸了。
在这里插入图片描述
在每个对比组中,shows p = 0 pixels in the top row of each example and p = 16 pixels in the bottom row.
实验结果证明,p=16的效果要好一些。

B.Positivevs. negative examples and softmax

作者在这里提出了一个问题: Why are positive and negative examples defined differently for fine-tuning the CNN versus training the object detection SVMs?
在CNN中,分类的阈值需要设置为0.5,如果使用SVM,则分类的阈值为0.3。为什么会这样呢?

在训练SVM的时候,仅仅使用了CNN的输出特征,并没有实时的考虑fine-tuning的结果。作者给出的假设是:定义类别的差异并不是十分重要,而是fine-tuning的数据限制了。在使用fine-tunning之后再使用SVM, It would be cleaner to simply apply the last layer of the fine-tuned network, which is a 21-way softmax regression classifier, as the object detector

C.Bounding-box regression

输入是N个pairs { ( P i , G i ) } i = 1 , . . , N \{(P^i, G^i)\}_{i=1,..,N} {(Pi,Gi)}i=1,..,N。其中, P i = ( P x i , P y i , P w i , P h i , ) P^i=(P^i_x,P^i_y,P^i_w,P^i_h,) Pi=(Pxi,Pyi,Pwi,Phi,)
其中 P x i , P y i P^i_x,P^i_y Pxi,Pyi代表锚框中心点的坐标, P w i , P h i P^i_w,P^i_h Pwi,Phi代表锚框的宽和高。
G = ( G x , G y , G w , G h ) G=(G_x,G_y,G_w,G_h) G=(Gx,Gy,Gw,Gh)。我们的目标是尽可能的让P去贴近G。

首先,使用4个函数去描述 P P P d x ( P ) , d y ( P ) , d w ( P ) , d h ( P ) d_x(P), d_y(P), d_w(P),d_h(P) dx(P),dy(P),dw(P)dh(P)使用的公式为:
在这里插入图片描述
然后 d ∗ ( P ) d_{*}(P) d(P)这里的 ∗ * 指代 ( x , y , h , w ) (x,y,h,w) (x,y,h,w)。计算公式为:
在这里插入图片描述
W ∗ W_* W又是一个可以学习的参数,它的表达式为:
在这里插入图片描述
其中 t ∗ t_* t被定义为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值