目标检测与识别的开篇之作-R-CNN

title:Rich feature hierarchies for accurate object detection and semantic segmentation
arxiv: http://arxiv.org/abs/1311.2524 
github:https://github.com/rbgirshick/rcnn 
slides:http://www.image-net.org/challenges/LSVRC/2013/slides/r-cnn-ilsvrc2013-workshop.pdf 
slides::http://www.cs.berkeley.edu/~rbg/slides/rcnn-cvpr14-slides.pdf 

1、整体思路

  • 在图像中确定约1000-2000个候选框(使用选择性搜索)
  • 每个候选框内图像块缩放至相同大小,并输入CNN内进行特征提取
  • 对候选框提取的特征,使用分类器判别是否属于一个特定类
  • 对于某一特征的候选框,用回归进一步调整其位置

2、具体步骤

步骤一:训练(或者下载)一个分类模型(比如AlexNet)

 步骤二:对该模型做fine-tuning

  • 将类别数从1000改为20
  • 去掉最后一个全连接层

 步骤三:特征提取

  • 提取图像的所有候选框
  • 对于每一个区域:修正区域大小以 适合CNN的输入,做一次前向运算,将第五个池化层的输出存到硬盘

 步骤四:训练一个SVM分类器(二分类)来判断这个候选框里物体的类别

  • 每一个类别对应一个SVM,判断是否属于这个类别
  • 是就是positive,反之nagative,比如下图就是狗分类的SVM

 步骤五:使用回归器精细修正候选框位置

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

 3、创新点

  • 经典的目标检测算法使用滑动窗一次判断所有可能的区域,R-CNN则提取预先提取一系列较可能是物体的候选区域,之后尽在这些区域上进行特征提取、判断,大大加快的速度
  • 经典的目标检测算法在区域中提取人工设定的特征(Haar,HOG),RCNN则通过深度网络提取特征,可供使用的有两个数据库:
    一个较大的识别库(ImageNet ILSVC 2012):标定每张图片的中物体的类别,1000w张,1000类
    一个较小的检测库(PASCAL VOC 2007):标定每张图片中,物体的类别和位置,1w张,20类
    本文使用识别库进行预训练,而后用检测库调优参数

4、不足

  • 即使使用了selective search等预处理步骤来提取潜在的bounding box作为输入,仍然会有严重的速度瓶颈,因为计算机对所有region进行特征提取时会有重复计算
  • 一般CNN后接全连接层或分类器,他们都需要固定的输入尺寸,因此不得不对输入数据进行crop或者wrap,这些预处理会造成数据的丢失或几何的失真

5、实践

作为一个技术控,是不会那么满足的,总想着自己动手实现一下,于是就决定跑一下RCNN的模型,在搭建环境的时候真的差不多把所有的问题都过了一遍,虽然花费了一些时间,不过,结果是好的,总算把模型成功的跑了起来。这里给和我一样想要实践一下的博友们一些建议,希望能有所帮助:

6、参考文献

7、期待你的关注

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值