【Paper Reading】:目标检测——RCNN

Rich feature hierarchies for accurate object detection and semantic segmentation

2014 CVPR
加州大学伯克利分校

前言

在卷积神经网络在图像分类任务中相比传统的方法取得了巨大成功后,人们也在思考如何将CNNs应用到目标检测领域,这篇文章是首次用深度学习CNN的方式进行目标检测的尝试。取得了性能、准确度均大幅高于传统提取特征方式的结果。该文是目标检测领域的里程碑论文,是fast-rcnn、faster-rcnn等系列的基础。

1 算法流程

在这里插入图片描述
RCNN的算法流程大致是,对于一张图片首先提取图片中的感兴趣区域,生成候选框,一张图像大约提取2000个ROI,通过CNN做特征的提取,由于CNN对于数据有特定的要求,提取的ROI的大小、长宽比都会不同,所以需要做变换,变换到227227的图像的大小。CNN会对每一个ROI提取出一个40961的特征向量,再用SVM对特征向量进行分类,通过非极大抑制,找出同一类中分数最大的候选框,通过候选框回归得到精确的目标的位置。

1.1 提取ROI

在目标检测时,为了定位到目标的具体位置,通常会把图像分成许多子块,然后把子块作为输入,送到目标识别的模型中。分子块的最直接方法叫滑动窗口法(Sliding Window Approach)。滑动窗口的方法就是按照子块的大小在整幅图像上穷举所有子图像块,但这样的化会特别耗时。
论文中使用的Selective Search方法是则是基于区域推荐的,目的是为了改善传统提取特征方法中机从左到右、从上到下穷举式带来的低效。R-CNN不关心特定的区域推荐算法,选择Selective Search只是为了与需要对比的前任论文保持一致。R-CNN一张图片选出约2000个候选区域。
相关链接:物体检测之选择性搜索(Selective Search)

1.2 CNN提取特征

R-CNN选用的是AlexNet做的特征的提取,AlexNet原本是为做图像分类任务,RCNN是为做目标检测任务,故替换掉了AlexNet的最后一层的全连接层(4096 * 1000)。故RCNN的结构实际是5个卷积层、2个全连接层。输入是Region Proposal计算的推荐区域的图像,由于该CNN网络输入限定为2000 * 227 * 227 * 3(RGB)的输入,故在RCNN中将Region Proposal的推荐区域仿射变形到227*227的格式上,具体的做法是,变形之前,我们现在候选框周围加上16的padding,再进行各向异性缩放。网络输出是2000 * 4096 * 1的特征向量。
相关链接:各向同性,各向异性缩放

在这里插入图片描述
在这里插入图片描述

1.3 SVM判别类别

使用训练过的对应类别的SVM给特征向量中的每个类进行打分,每个类别对应一个二分类SVM,CNN输出20004096,SVM输出2000N(N是数据集中目标的类别),然后为了减少重复的bounding box,使用了非极大值抑制法:如果一个区域的得分与大于它得分的区域有很大程度的交叉(intersection-overunion(IoU))根据score进行排序,把score最大的bounding box作为选定的框,计算其余bounding box与当前最大score与box的IoU,去除IoU大于设定的阈值的bounding box。然后重复上面的过程,直至候选bounding box为空,然后再将score小于一定阈值的选定框删除得到一类的结果。

1.4 Bounding Box Regression选定框回归

通过selective search得到的region proposal可能与ground truth相差较大,尽管这个region proposal可能有很高的分类评分,但对于检测来说,它依然是不合格的。
为了进一步提高定位的准确度,作者在对各个region proposal打分后,利用回归的方法重新预测了一个新的矩形框,借此来进一步修正bounding box的大小和位置。

2 模型训练

由于在实际检测中,训练的样本是比较少的。作者给出pre-training和fine-tuning结合的方法,来解决少的训练样本如何训练大型网络的问题。

  1. 使用imagenet数据集预训练AlexNet,按分类任务pre-training,得到模型

  2. fine-tune。将模型的最后一层修改类别数。使用pascal voc 数据集fine-tune: 输入为warped regionproposal,输出为21维类向量。(与pre-training网络的唯一改变是由输出1000类改为输出21类)。包括20类目标和背景。把与ground truth的IOU>0.5的region proposal作为正例,其余为负例,即背景。每个batch里包含32个正例,96个负例共128个。学习率为0.001,是pre-training的1/10,为了不破坏与训练的结果。

  3. 训练SVM: 训练某类别的SVM,与该类目标的groud-truth的IoU<0.3的region
    proposal的特征向量作为负例,ground-truth作为正例。为了减小内存使用,采用standard hard negative mining method。

  4. 训练bounding box regression: 受DPM (Object detection with discriminatively trained part based models)的灵感,训练一个线性回归模型,给定pool5层的特征预测一个新的检测窗口。

3 相关问题

3.1 为什么使用SVM进行分类,不使用CNN的softmax的输出进行分类?

作者说本是想通过CNN的softmax进行分类,但是由于ground-truth样本数比较少(2000个候选框可能只有一两个目标),为了防止过拟合。所想到了将IOU大于0.5的区域都作为正样本,但是这样导致CNN的mAP由54.2%下降到了50.9%,所以想通过训练SVM来提高分类精度。SVM适用于小样本训练,在数据不均衡时,也不会造成很大的过拟合。

4 小结:

R-CNN将CNN运用到了目标检测任务中,使得mAP有了很大的提高,在VOC 2012上达到53.3%。存在的问题是速度慢一张图片需要几十秒,训练过程繁琐,分四个步骤,速度太慢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值