RCNN- 将CNN引入目标检测的开山之作

from:https://zhuanlan.zhihu.com/p/23006190

前面一直在写传统机器学习。从本篇开始写一写 深度学习的内容。 可能需要一定的神经网络基础(可以参考 Neural networks and deep learning 日后可能会在专栏发布自己的中文版笔记)。

RCNN (论文:Rich feature hierarchies for accurate object detection and semantic segmentation) 是将CNN方法引入目标检测领域, 大大提高了目标检测效果,可以说改变了目标检测领域的主要研究思路, 紧随其后的系列文章:( RCNN),Fast RCNN, Faster RCNN 代表该领域当前最高水准。

【论文主要特点】(相对传统方法的改进)

  • 速度: 经典的目标检测算法使用滑动窗法依次判断所有可能的区域。本文则(采用Selective Search方法)预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上(采用CNN)提取特征,进行判断。
  • 训练集: 经典的目标检测算法在区域中提取人工设定的特征。本文则采用深度网络进行特征提取。使用两个数据库: 一个较大的识别库(ImageNet ILSVC 2012):标定每张图片中物体的类别。一千万图像,1000类。 一个较小的检测库(PASCAL VOC 2007):标定每张图片中,物体的类别和位置,一万图像,20类。 本文使用识别库进行预训练得到CNN(有监督预训练),而后用检测库调优参数,最后在检测库上评测。

看到这里也许你已经对很多名词很困惑,下面会解释。先来看看它的基本流程:

【基本流程 ===================================】

RCNN算法分为4个步骤

  1. 候选区域生成: 一张图像生成1K~2K个候选区域 (采用Selective Search 方法)
  2. 特征提取: 对每个候选区域,使用深度卷积网络提取特征 (CNN)
  3. 类别判断: 特征送入每一类的SVM 分类器,判别是否属于该类
  4. 位置精修: 使用回归器精细修正候选框位置

【基础知识 ===================================】

Selective Search 主要思想:

  1. 使用一种过分割手段,将图像分割成小区域 (1k~2k 个)
  2. 查看现有小区域,按照合并规则合并可能性最高的相邻两个区域。重复直到整张图像合并成一个区域位置
  3. 输出所有曾经存在过的区域,所谓候选区域

其中合并规则如下: 优先合并以下四种区域:

  • 颜色(颜色直方图)相近的
  • 纹理(梯度直方图)相近的
  • 合并后总面积小的: 保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其他小区域 (例:设有区域a-b-c-d-e-f-g-h。较好的合并方式是:ab-cd-ef-gh -> abcd-efgh -> abcdefgh。 不好的合并方法是:ab-c-d-e-f-g-h ->abcd-e-f-g-h ->abcdef-gh -> abcdefgh)
  • 合并后,总面积在其BBOX中所占比例大的: 保证合并后形状规则。

上述四条规则只涉及区域的颜色直方图、梯度直方图、面积和位置。合并后的区域特征可以直接由子区域特征计算而来,速度较快。

有监督预训练与无监督预训练:

(1)无监督预训练(Unsupervised pre-training)

预训练阶段的样本不需要人工标注数据,所以就叫做无监督预训练。

(2)有监督预训练(Supervised pre-training)

所谓的有监督预训练也可以把它称之为迁移学习。比如你已经有一大堆标注好的人脸年龄分类的图片数据,训练了一个CNN,用于人脸的年龄识别。然后当你遇到新的项目任务时:人脸性别识别,那么这个时候你可以利用已经训练好的年龄识别CNN模型,去掉最后一层,然后其它的网络层参数就直接复制过来,继续进行训练,让它输出性别。这就是所谓的迁移学习,说的简单一点就是把一个任务训练好的参数,拿到另外一个任务,作为神经网络的初始参数值,这样相比于你直接采用随机初始化的方法,精度可以有很大的提高。

对于目标检测问题: 图片分类标注好的训练数据非常多,但是物体检测的标注数据却很少,如何用少量的标注数据,训练高质量的模型,这就是文献最大的特点,这篇论文采用了迁移学习的思想: 先用了ILSVRC2012这个训练数据库(这是一个图片分类训练数据库),先进行网络图片分类训练。这个数据库有大量的标注数据,共包含了1000种类别物体,因此预训练阶段CNN模型的输出是1000个神经元(当然也直接可以采用Alexnet训练好的模型参数)。

转载于:https://www.cnblogs.com/bonelee/p/10155531.html

RCNN 目标识别基本原理相关推荐

  1. 深度学习(十四)——Softmax详解, 目标检测, RCNN

    https://antkillerfarm.github.io/ Softmax详解 首先给出Softmax function的定义: yc=ζ(z)c=ezc∑Cd=1ezd for c=1,-,C ...

  2. 用于图像分割的卷积神经网络:从R-CNN到Mask R-CNN

    文章来源: 机器之心 选自Athelas作者:Dhruv Parthasarathy机器之心编译参与:王宇欣.hustcxy.黄小天 卷积神经网络(CNN)的作用远不止分类那么简单!在本文中,我们将看 ...

  3. 深度 | 用于图像分割的卷积神经网络:从R-CNN到Mark R-CNN

    卷积神经网络(CNN)的作用远不止分类那么简单!在本文中,我们将看到卷积神经网络(CNN)如何在图像实例分割任务中提升其结果. 自从 Alex Krizhevsky.Geoff Hinton 和 Il ...

  4. rcnn 回归_RCNN系列算法的发展

    一. RCNN系列的发展 1.1  R-CNN 根据以往进行目标检测的方法,在深度学习应用于目标检测时,同样首先尝试使用滑动窗口的想法,先对图片进行选取2000个候选区域,分别对这些区域进行提取特征以 ...

  5. slowfast解读:用于计算机视觉视频理解的双模CNN

    检测并归类图像中的物体是最广为人知的一个计算机视觉任务,随着ImageNet数据集挑战而更加流行.不过还有一个令人恼火的问题有待解决:视频理解.视频理解指的是对视频片段进行分析并进行解读.虽然有一些最 ...

  6. slowfast网络解读

    检测并归类图像中的物体是最广为人知的一个计算机视觉任务,随着ImageNet数据集挑战 而更加流行.不过还有一个令人恼火的问题有待解决:视频理解.视频理解指的是对视频片段进行分析并进行解读.虽然有一些 ...

  7. 【目标识别】Cascade RCNN论文解读

    摘要 在目标检测中,需要一个交并比(IOU)阈值来定义物体正负标签.使用低IOU阈值(例如0.5)训练的目标检测器通常会产生噪声检测.然而,随着IOU阈值的增加,检测性能趋于下降.影响这一结果的主要因 ...

  8. 目标识别的选择性搜索

    目标识别的选择性搜索 Selective Search for Object Recognition 论文地址: https://ivi.fnwi.uva.nl/isis/publications/b ...

  9. 基于CNN目标检测方法(RCNN,Fast-RCNN,Faster-RCNN,Mask-RCNN,YOLO,SSD)行人检测,目标追踪,卷积神经网络

    一.研究意义 卷积神经网络(CNN)由于其强大的特征提取能力,近年来被广泛用于计算机视觉领域.1998年Yann LeCun等提出的LeNet-5网络结构,该结构使得卷积神经网络可以端到端的训练,并应 ...

最新文章

  1. HDOJ2569 ( 彼岸 ) 【递推公式】
  2. codeforces708C
  3. C语言编译链接生成可执行文件四大步骤:预处理(-E)->编译(-S)->汇编(-c) ->链接
  4. 七、Go 语言面向对象编程
  5. [小功能]禁用模板默认CSS
  6. springboot通过各种不同类型参数获取容器中的bean工具类
  7. 范凯:对移动社交型app的一点思考
  8. sql2000下 分页存储过程(一)
  9. Android ListView之setEmptyView的问题
  10. Informatic学习总结_day02_增量抽取
  11. 微信小程序毕业设计(一)
  12. 十大管理之项目干系人管理知识点
  13. Harvard (name and date) 论文引用格式
  14. 格隆汇笔记-黄勇演讲
  15. Android一键锁屏的例子
  16. 安卓手机 模拟辅助显示设备
  17. 内核 入门_好消息:奔跑吧Linux内核入门酱香篇配套视频可以下载啦
  18. 图论基础(学习的笔记)
  19. Mac新手必看教程—让你离熟练操作mac只差十分钟
  20. 解决“无法停止‘通用卷’设备的方法

热门文章

  1. python基础知识笔记简书_Python学习笔记01——基础知识
  2. 把数据转换为在内存中Tree(树形结构)。_Linux的中断处理机制 [二] - 数据结构(2)...
  3. hive连接mysql的配置_Dbeaver连接Hive和Mysql的配置
  4. 简单android音乐播放器课程设计,android音乐播放器课程设计报告.doc
  5. java虚拟机改装_java虚拟机线上配置
  6. svm分类代码_当支持向量机遇上神经网络:SVM、GAN距离之间的关系
  7. android setlatesteventinfo 找不到,安卓通知的基本用法
  8. 【微信小程序企业级开发教程】界面刷新获取新更新数据
  9. 静态链表的插入和删除
  10. python编程基础知识体系_Python 编程核心知识体系-基础|数据类型|控制流(一)...