论文阅读: R-CNN

版权声明:转载请注明出处 https://blog.csdn.net/JNingWei/article/details/80189868

Introduction

R-CNN提出于2013年11月。

R-CNN不是第一个提出“将检测任务转换为分类任务”,但却是第一个真正实现了该思想的算法:

其本质上主要解决了两大问题:

  • 如何location;
  • 如何在缺少检测专用数据集的情况下实现检测任务。

R-CNN对此提出了解决方案:

  1. 对于第一个问题,R-CNN中指出,Detection中最大的难关在于location。之前已经有人将location定义为regression问题了,但是效果并不好。如果要是采用在滑窗中进行location regression,技术难度又大。那咋办呢?别急,R-CNN就给出了解决方法:改成 对region proposal进行location regression 即可。但是直接计算offset不妥,因此设计了 encode/decode机制

Note

  • 这便是检测算法中encode/decode的鼻祖。到了 Faster R-CNN 中,encode/decode机制被进一步改进,成为了通用的标准设计;YOLOv2也提出了自己的一套encode/decode设计,但是无人问津。
  • encode/decode机制的作用:对offset的目标进行 “归一化”使回归变得简单
  • train阶段只有encode,且在train之前进行encode;
  • inference阶段只有decode,且在inference之后进行decode;
  • encode输入的是ground_truths和all_anchors,输出的是targets;
  • decode输入的是all_anchors和targets,输出的是实际bbox;
  • train阶段是不生成实际bbox的,所以全程都是targets(encode后得到的一根根t向量)在跑在计算;
  • inference阶段,由于要生成实际的bbox,就将targets和all_anchors(穷举生成的anchor)做一个计算,得出实际的bbox。
  • 算法回归的目标 不是offset,而是 encode offset 所得的target
    1. 对于第二个问题,在train阶段,R-CNN先于ILSVRC2012数据集上预训练好,并直接在VOC2007或ILSVRC2013数据集上进行fine-tune;在test阶段,使用Selective Search进行RP生成,随后在resize成统一大小的RP上进行测试。该设计把train阶段和test阶段完美地统一了起来,很好地缓解了由于检测专用数据集缺少数据量的问题。

R-CNN思路如下: 1. R-CNN首先采用Selective Search来生成RP (每张生成约2k个) ; 2. 并很自然地想到了将所有RP resize成统一大小 (227×227):

3. 将resize后的RP分别喂入分类网络 (论文中用的是简化版的AlexNet,即去掉了AlexNet倒二的fc层) ; 4. 后面接着k+1k+1k+1(前景+背景)个二分类的SVM,等着对卷积网络输出的特征tensor进行分类; 5. 对分类结果采用NMS进行一波“去重运动”; 6. 把所分tag归属为非背景的所有RP送入kkk(前景)个location regressor,这时候只需要单独对RP区域进行location regression即可。

论文4.2节对于RP (Region Proposal) 的介绍中,最后一句讲到,RP生成环节的设计还有着很大的改进空间。这也为R-CNN的孙辈——Faster R-CNN提出RPN埋下了伏笔。

Innonvation

整套检测思路的设计,使得神经网络进行Detection任务变为了现实 (尽管之前也有了类似的OverFeat)。

检测算法的繁荣兴盛,自R-CNN始。

Result

R-CNN一文既出天下惊。

效果更不要说了,在当年的ILSVRC2013数据集上的mAP测评一骑绝尘:

RBG大神还饶有兴致地深入探究了一下R-CNN在ILSVRC2013上每个细类别的AP值:

在VOC2007上没有最好,只有更好:

R-CNN的一些实图检测效果:

Thinking

尽管R-CNN是划时代的,但是在它身上也能看到很多前人 (OverFeat等) 的智慧。


[1] Rich feature hierarchies for accurate object detection and semantic segmentation

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杂七杂八

Doc2vec预测IMDB评论情感

本文内容源自于国外2015年的一篇博客,中文翻译可以在伯乐在线看到。可以整体了解一些word2vec和doc2vec的使用方法,但是由于时间过去很久了,gens...

1K90
来自专栏用户2442861的专栏

如何识别图像边缘?

文字识别、车牌识别、人脸识别都是它的应用。但是,这些都算初级应用,现在的技术已经发展到了这样一种地步:计算机可以识别出,这是一张狗的照片,那是一张猫的照片。

17320
来自专栏图形学与OpenGL

实验三 区域四连通填充算法

28510
来自专栏AI科技大本营的专栏

朴素贝叶斯分类器详解及中文文本舆情分析(附代码实践)

作者 | 杨秀璋(笔名:Eastmount),贵州财经大学信息学院老师,硕士毕业于北京理工大学,主要研究方向是Web数据挖掘、知识图谱、Python数据分析、图...

62430
来自专栏机器之心

教程 | 如何通过牛顿法解决Logistic回归问题

选自TLP 机器之心编译 参与:Nurhachu Null、黄小天 本文介绍了牛顿法(Newton's Method),以及如何用它来解决 logistic 回...

43150
来自专栏机器之心

斯坦福博士韩松毕业论文:面向深度学习的高效方法与硬件

44090
来自专栏专知

150页Slides深度学习革命:基础,优化,正则——CMU&斯坦福JSM 2018教程

【导读】近年来,人们对深度学习 - 广义上讲,一类基于多层神经网络的方法 - 的兴趣大增。它在计算机视觉、自然语言处理、机器人和控制以及许多其他领域都非常有效。...

10830
来自专栏AI研习社

Quora Question Pairs 竞赛冠军经验分享:采用 4 层堆叠,经典模型比较给力

AI 研习社按:今天要介绍的比赛是 Quora Question Pairs,该比赛的目的是将具有相同意图的问题正确配对。最近本次竞赛的冠军在 Kaggle 社...

489110
来自专栏机器之心

教程 | TF官方博客:基于TensorFlow.js框架的浏览器实时姿态估计

28060
来自专栏人工智能头条

深入浅出LSTM神经网络

17350

扫码关注云+社区

领取腾讯云代金券