目标检测(R-CNN、Fast R-CNN、Faster R-CNN)


1、目标检测(object detection)

图像识别是输入一张图像,输出该图像对应的类别。目标检测的输入同样是一张国像,但输出不单单是图像的类别,而是该图像中所含的所有目标物体以及它们的位置,通常使用矩形框来标识物体的位置。
大部分的目标检测方法流程是:生成区域候选框,对这些区域框提取特征(SIFT 特征 、HOG 特征、CNN),使用图像识别方法分类(SVM、CNN),得到所有分类成功的区域后,通过非极大值抑制( Non-maximum suppression )输出结果。


2、候选框(bounding boxes)

区域候选框的生成主要有两种方法,一种是穷举法、一种是选择性搜索。

  • 穷举法:也叫滑窗法。使用不同大小的窗口在图片上从左到右,从上到下滑动,每次滑动就是一个候选框,由于是全局搜索而且要考虑窗口的长宽比,计算量大、效率低下。
  • 选择搜索(Selective Search):首先,使用图像分割(边缘等特性)算法,分割出许多小区域;然后,根据这些小区域之间相似性(颜色、纹理等)进行区域合并,不断的进行区域迭代合并。每次迭代过程中对这些合并的子区域做 bounding boxes (外切矩形)就生成了候选框。

3、R-CNN:Region-CNN

R-CNN 算法原理:

  • Selective Search 生成候选框
  • 候选框区域缩放到统一大小,使用 CNN 对每个候选框提取特征
  • 提取出特征后使用 SVM 进行分类
  • 通过非极大值抑制输出结果

R-CNN 训练步骤:

  • 在数据集上训练CNN。R-CNN 论文中使用的 CNN 网络是AlexNet,数据集为ImageNet 。
  • 在目标检测的数据集上,对训练好的 CNN 做微调 。
  • 用 Selective Search 搜索候选区域,统一使用微调后的 CNN 对这些区域提取特征,并将提取到的特征存储起来。
  • 使用存储起来的特征,训练SVM 分类器。

R-CNN 训练步骤性能:
VOC 2007 数据集上,传统方法最高的平均精确度mAP ( mean Average Precision )为40%左右,而R-CNN 的mAP 达到了58.5%.
R-CNN 的缺点是计算量太大。在一张图片中,通过Selective Search 得到的有效区域往往在1000 个以上,这意昧着要重复计算1000 多次神经网络,非常耗时。另外,在训练、阶段,还需要把所高特征保存起来,再通过SVM进行训练,这也是非常耗时且麻烦的


4、Fast R-CNN

SPPNet:
SPPNet 的英文全称是Spatial Pyramid Pooling Convolutional Networks 中文是“空间金字塔池化卷积网络” 。
SPPNet 将 CNN 的输入从固定尺寸改进为任意尺寸。SPPNet 在普通的 CNN 结构中加入了 ROI 池化层( ROI Pooling ),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。

ROI 池化层:对输入的宽w、高h、通道数c的卷积特征进行划分。分别划分为4×4、2×2、1×1的网格,对每个网格中的每个通道进行最大值池化(取最大值),得到的特征是16c+4c+c = 21c 维的特征。很显然,这个输出特征的长度与w 、h 两个值是无关的,因此ROI 池化层可以把任意宽度、高度的卷积特征转换为固定长度的向量。

SPPNet 原理:先对图像进行一遍卷积计算,得到整个图像的卷积特征。接着, 对于原始图像中的各种候选框,只需要在卷积特征中找到对应的位置框,再使用 ROI 池化层对位置框中的卷积提取特征,就可以完成特征提取工作。在提取特征后,使用了SVM 进行分类。

R-CNN 要对每个区域(有重叠)计算卷积,而SPPNet 只需要对整张图片计算一次,因此 SPPNet 的效率比 R-CNN 高得多。

Fast R-CNN:
在SPPNet 中,实际上特征提取和区域分类两个步骤还是分离的,还是使用传统的 SVM 作为分类器。Fast R-CNN 相比 SPPNet 更进一步,不再使用 SVM 作为分类器,而是使用神经网络进行分类,这样就可以同时训练特征提取网络和分类网络,从而取得比SPPNet 更高的准确度。

Fast R-CNN 使用全连接层进行分类。全连接层有两个输出,一个输出负责分类(Softmax),另一个输出负责框回归(bbox regressor)。对于分类,假设要在图像中检测 K 类物体,那么最终的输出应该是 K+ I 个数(一类“背景类”),每个数都代表该区域为某个类别的概率。对于框回归,框回归是对原始的检测框进行某种程度的校准。因为使用 Selective Search 获得的框可能存在一定偏差。框的四个参数为(x,y,w,h),其中(x,y)表示框左上角的坐标位置,(w,h)表示框的宽度和高度。


5、Faster R-CNN

RPN( Region Proposal Network )网络:
RPN 需要先使用一个CNN 网络对原始图片提取特征,使图片变为 W×H×C 的网络。网络中的每一个格子负责该位置上 k 个不同的 anchor 是否存在一个物体。

使用一个 3x3 的滑动窗口,将每个位置转为一个统一维数的特征,这个恃征对应了两部分的输出。一部分表示该位置的 anchor 为物体的概率,总输出长度为2xk(一个 anchor 对应两个输出,是物体的概率+不是物体的概率)。另一部分为框回归,一个 anchor 对应4 个框回归参数,因此框回归部分的总输出的长度为4xk。

Faster R-CNN:
Faster R-CNN 使用 RPN 取代了 Selective Search 生成候选框后,剩下的网络结构和 Fast R -CNN 中的结构一模一样。在训练过程中,需要训练两个网络,一个是RPN 网络,一个是在得到框之后的分类网络。通常的做法是交替训练,即在一个 batch 内,先训练RPN 网络一次,再训练分类网络一次。


6、总结

项目 R-CNN Fast R-CNN Faster R-CNN
提取候选框 Selective Search Selective Search RPN网络
提取特征 CNN CNN+ROI池化 CNN+ROI池化
分类 SVM 全连接 全连接

从R-CNN,到Fast R-CNN ,再到Faster R-CNN ,不仅检测速度越来越快,而且检测的精确度也在不断提升。在出现R-CNN方法前,VOC 2007数据集上传统方法所能达到的最高平均精确度( mAP )为40% 左右, R-CNN 将该值提高到了58.5%,Fast R-CNN 为70%,Faster R-CNN 又将该值提高到了78.8% 。这几种方法既一脉相承,又不断改进,不断的 CNN 化。


GOOD LUCK!


目标检测(R-CNN、Fast R-CNN、Fater R-CNN)相关推荐

  1. 脉冲神经网络在目标检测的首次尝试,性能堪比CNN | AAAI 2020

    译者 |  VincentLee 来源 | 晓飞的算法工程笔记 脉冲神经网络(Spiking neural network, SNN)将脉冲神经元作为计算单元,能够模仿人类大脑的信息编码和处理过程.不 ...

  2. 《南溪的目标检测学习笔记》——夏侯南溪的CNN调参笔记,加油

    1 致谢 感谢赵老师的教导! 感谢张老师的指导! 2 调参目标 在COCO数据集上获得mAP>=10.0的模型,现在PaddleDetection上的Anchor-Free模型[TTFNet]的 ...

  3. 目标检测 RCNN, SPPNet, Fast RCNN, Faster RCNN 总结

    RCNN CVPR 2014 Rich feature hierarchies for accurate object detection and semantic segmentation http ...

  4. 【CV】通俗易懂的目标检测 | RCNN, SPPNet, Fast, Faster

    全文5500个字,22幅图,学习时长预计20分钟 目录 0 概述 1 RCNN 1.1 候选区Region Proposal 1.2 特征提取 1.3 SVM分类 1.4 线性回归 2 SPP Net ...

  5. tensorflow精进之路(二十三)——Object Detection API目标检测(上)(Fast R-CNN算法)

    1.概述 上一讲,我们使用slim库对图片进行检测,每个物品用同一种颜色标注,显得乱七八糟的.这一讲,我们来学习目标检测.目标检测就是,输入一张图片,输出是将该图片中所含的所有目标物体识别,并标记出他 ...

  6. 目标检测经典论文——Fast R-CNN论文翻译(中英文对照版):Fast R-CNN(Ross Girshick, Microsoft Research(微软研究院))

    目标检测经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为纯中文版,中英文对照版请稳步:[Fast R-CNN纯中文版] Fast R-CNN Ross Girshick Mic ...

  7. 目标检测经典论文——Fast R-CNN论文翻译(纯中文版):Fast R-CNN(微软研究院)

    目标检测经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为纯中文版,中英文对照版请稳步:[Fast R-CNN中英文对照版] Fast R-CNN Ross Girshick 微 ...

  8. 目标检测 -- R-CNN,Fast R-CNN,Faster R-CNN

    R-CNN,Fast R-CNN,Faster R-CNN这些是深度学习目标检测的鼻祖.看各种博客分析,东看看西看看,不系统.这里准备系统的记录一下深度学习目标检测的发展史.这里大部分摘录其他博客.参 ...

  9. 快速小目标检测--Feature-Fused SSD: Fast Detection for Small Objects

    Feature-Fused SSD: Fast Detection for Small Objects 本文针对小目标检测问题,对 SSD 模型进行了一个小的改进,将 contextual infor ...

  10. 动手学深度学习——目标检测 SSD R-CNN Fast R-CNN Faster R-CNN Mask R-CNN

    来源:13.4. 锚框 - 动手学深度学习 2.0.0-beta1 documentation 目标检测:锚框算法原理与实现.SSD.R-CNN_神洛华的博客 目录 目标检测简介 目标检测模型 ​编辑 ...

最新文章

  1. Spring Boot中使用自定义Annotation来实现接口自动幂等
  2. StoreFront 登陆页面的话持续时间
  3. ★自制社交网站等级称号
  4. HikariConfig配置详解
  5. the computational graph needed to compute the outputs报错解决
  6. 少儿编程100讲轻松学python(七)-pycharm怎么删除项目
  7. mysql 创建表字段长度范围_Mysql的建表规范与注意事项
  8. mysql中语句块当事务,MySQL事务与隔离级别
  9. 三星Galaxy S22首发!4nm旗舰芯Exynos 2200跑分出炉
  10. php判断是否存在http,php获取http-header来判断文件是否存在
  11. java 请求webservice_JAVA调用WebService实例
  12. Qt QTreeView 详解
  13. J2ME手机游戏开发流程
  14. 阿里内核月报2014年7月-8月
  15. C++刷题: 逆波兰表达式(力扣150题)
  16. SVN强制编写注释才能提交,提交中不允许删除文件操作。
  17. ASP.NET MVC里ModelState.IsValid总是true或者总是false
  18. 打通对账的最后一公里——对账管理平台
  19. 【JAVA今法修真】 第八章 仙道万维网 圣地元宇宙
  20. servlet批量上传图片

热门文章

  1. JS将数字转换为带有单位的中文表示
  2. 解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果
  3. Entity Framework-02
  4. Centos7 网络配置
  5. Django的视图层简介
  6. PAT 甲级 1027 Colors in Mars
  7. 《面向对象程序设计》第一次作业
  8. 数据结构录 之 单调队列单调栈。
  9. 表设计避免使用保留字
  10. 信息摘要算法之四:SHA512算法分析与实现