【论文笔记】R-CNN

来源:互联网 发布:java项目log4j冲突 编辑:程序博客网 时间:2024/04/28 01:06

论文简介

论文名字:Rich feature hierarchies for accurate object detection and semantic segmentation, CVPR 2014
论文作者:rbg
论文简述:
  • 首次成功的将深度学习应用到目标检测领域,相比于传统的方法,在性能上得到的很大的提升(60%)。
  • 首次引入区域推荐(Region Proposal),物体检测的框架,沿用至今。
不足之处在于:
  • 检测速度太慢(~40s 一张图片)
  • 训练的开销较大

论文思想

所谓的目标检测(object detection),实质上包含了两层含义:
  • 第一层含义是物体的定位(localization),即找出物体在图像中的哪一个位置
  • 第二层含义是物体的识别(classification),即识别出这是一个什么物体
深度学习(deep learning)在物体的识别上取得了很大的进展(ImageNet classification with deep convolutional neural networks. In NIPS, 2012),但是在物体的定位上,得到的结果一直不是很好。C. Szegedy等人尝试用深度学习去直接回归出物体的位置(Deep neural networks for object detection. In NIPS, 2013),但是效果不是很好,和传统的算法相比(DPM等),并没有体现出improvement.

在这篇深度学习目标检测的开山之作中,作者所argue的一个点就是:既然深度神经网络在物体分类上能够得到很漂亮的结果,而在物体定位上不是很准,那么为什么不把目标检测问题转化成一个物体分类问题呢

有了这个想法,后面的操作其实是水到渠成的事情。具体的框架见下图:



  • 首先,输入图像
  • 用某些算法产生出可能存在物体的区域(region proposal),对于每张图大约会有2000个这样的区域
  • 对于每个区域,crop出图像,缩放到一定的尺寸后(227x227),输入到神经网络中
  • 得到特征后,用SVM做物体的分类

操作细节

如何产生Region Proposal

有许多现有的算法可以用来产生Region Proposal(可能存在物体的区域),例如EdgeBox, Selective Search等等,在本篇paper中,作者使用的是selective search,对于每张图片,保留下了2000个region

网络结构

paper中采用了AlexNet来产生一个4096维的特征(feature)

怎么训练

对于神经网络,采用SGD+ mini batch的方式去训练。网络用Image-net pre-trained的网络初始化之后,将最后的分类层重新设置成21分类(VOC有20个类,加上bg)去fine-tune。为了平衡negative和positive的数量,取mini batch的时候保持了它们在一定的比例下。(因为每张图positive的数量特别少)

等AlexNet训练好了之后,用其输出结果进一步训练SVM分类器。(为什么要用SVM而不用Softmax layer?这里似乎没有明说)

选取哪一层做feature

作者对比了不同层的实验,最后得到的结果如下表:

FT表示fine-tune的意思,从结果中可以看出来,选择fc7层得到的效果是最佳的

更进一步:box regression

作者分析了在检测中出错的原因,发现很大程度上是因为region proposal框得不够准。
于是作者提出了一个方法,就是在原有框的基础上,增加了box regression的步骤,用于微调框的位置,使得框更加准。上图中的结果也反应了,加入了回归项之后(有BB标记的图),location的精度提高了很多。总体的mAP也上升了4个点。

论文结果


一图胜前言。在VOC2007的数据集上比传统的DPM方法的结果整整高了24个点!

这也开启了后续一大堆深度学习在目标检测上的应用。


0 0
原创粉丝点击