引言

对比了R-CNN,Fast R-CNN,Faster R-CNN,Mask R-CNN目标检测算法的发展过程与优缺点。

R-CNN

R-CNN是第一个成功第将深度学习应用到目标检测的算法。后面的Fast R-CNN,Faster R-CNN都是建立在R-CNN的基础上的。

R-CNN的检测思路是采用提取矿,对每个提取矿提取特征,图像分类,非极大值一直的四个步骤进行的。
步骤:

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

这里可以看到这里的CNN主要是用来进行特征提取的,在替代了传统图像处理方法中特征提取,如SIFT, HOG等。

R-CNN的缺点是计算量大,在一张图片中,Selective Search得到的区域通常是1000个以上,也就是需要1000次CNN推理过程以及SVM的分类过程,还需要将候选区域的特征保存下来,也占用存储空间。

Fast R-CNN

Fast R-CNN是在R-CNN的基础上进行优化的,通过对整张图片进行卷积计算得到一张大的特征图,使用Selective Search的方式获得候选框,然后将候选框映射到特征图上,获取候选框区域的特征图。使用ROI池化将候选框的特征都映射到相同大小的特征量,然后继续卷积计算分两个分支输出类别和框回归。

步骤:

  • 图像输入CNN网络获取一张大的特征图
  • 使用Selective Search搜索候选区域,并截取特征图。
  • 截取的特征图使用ROI Pooling转换到固定大小的特征量
  • 使用特征量进行类别分类和框回归

Fast这个词的Fast在于,在R-CNN中每个候选区域都要计算特征,但是多个候选框是重复的,所以计算特征也是有很多重复。在Fast R-CNN中只需要对图像进行一次CNN获取一次特征图,然后在特征图中截取,用于表示候选框的特征图。

同时进行框回归的时候,还将Seletive Search的框进一步优化了。

ROI Pooling

ROI Pooling的作用是将不同大小的候选区域特征处理成相同的维度。
处理方式是将特征图划分成块,然后在块内进行全局最大池化得到的结果只与特征图的通道数相关,而和大小无关。

在Fast R-CNN中的ROI Pooling是空间金字塔池化(Spatial Pyramid Pooling, SPP)的形式做的优化结果。如输入的w×h×cw\times h \times cw×h×c的特征图,将特征图划分为4×44\times 44×4,2×22\times 22×2以及1×11\times 11×1的【块】。然后对每个【块】的每个通道取最大值(也就是在每个块进行全局最大池化),分别得到4×4×c4\times 4\times c4×4×c,2×2×c2\times 2\times c2×2×c和1×1×c1\times 1\times c1×1×c的特征。

然后将三个层次的特征展开后放到一起,就可以得到21c21c21c维的特征,其中21=4×4+2×2+121=4\times 4+ 2\times 2+121=4×4+2×2+1。就将任何尺寸大小的特征图处理称为了相同维度的大小。

Faster R-CNN

Faster R-CNN解决的问题是Fast RCNN还是需要使用到Seletive Search的方式获取候选框,然而这个过程是比较慢的,在Faster R-CNN中使用Region Proposal Network(RPN)取代了Seletive Search方法,不仅速度得到了大大提高,还获得了更佳精确的结果。RPN就是一个CNN结构,有两个输出分支,分别是是否有目标的分类,以及坐标的回归。

步骤:

  • 图像输入CNN网络获取一张大的特征图。
  • 使用RPN获取候选框
  • 截取的特征图使用ROI Pooling转换到固定大小的特征量。
  • 使用特征量进行类别分类和框回归。

Mask R-CNN

Mask RCNN并不是一个目标检测的算法,而是一个语义分割的算法。

  • 在Faster R-CNN的基础上添加一个mask分支,multi-task来实现实例分割
  • 使用ROI Align代替ROI Pooling,提升分割准确率

mask rcnn 采用和faster rcnn相似的两步法结构, 第一阶段RPN网络,提取出候选的目标边界框,第二阶段mask rcnn对于来自RPN的候选区域,利用ROI align提取特征并进行类别分类、边界框回归与二进制掩码生成。每一个候选区域上利用掩码分支预测一个二分类的mask。用来预测mask的掩码分支是一个在像素级别上对于每个ROI预测语义掩码的小全卷积网络。

ROIAlign的计算方式与ROIPooling的方式类似,在ROIPooling中,当下采样或者对齐的时候遇到小数,通常都是取整操作的。这个对目标检测问题不大,但是像素级的实例分割容易产生错位的问题。ROIAlign就是在处理这个小数的时候保留小数信息,然后在取预选区域特征图的时候进行插值计算。

总结

Item RCNN Fast RCNN Faster R-CNN Mask R-CNN
提取候选框 Selective Search Selective Search RPN RPN
提取特征 每个候选区域用CNN提取一次 CNN-ROIPooling只提取一次 同Fast RCNN 使用ROIAlign获取特征图
特征分类 SVM CNN进行分类和回归 同Fast RCNN 同Fast RCNN
分割 - - - 像素级掩码分类

欢迎关注微信号BusyWork了解更多。

参考

  1. 21个项目玩转tensorflow, 第五章
  2. https://zhuanlan.zhihu.com/p/161379603
  3. mask-rcnn解读

R-CNN系列目标检测算法对比相关推荐

  1. YOLO系列目标检测算法——YOLOR

    YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Sca ...

  2. YOLO系列目标检测算法——YOLOS

    YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Sca ...

  3. YOLO系列目标检测算法——PP-YOLO

    YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Sca ...

  4. YOLO系列目标检测算法-YOLOv7

    YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Sca ...

  5. YOLO系列目标检测算法-YOLOv6

    YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Sca ...

  6. 【百度飞浆】YOLO系列目标检测算法详解

    YOLO系列目标检测算法详解 1 YOLO发展史 2 YOLO v3目标检测原理 3 PaddleDetection中YOLO v3模型介绍 4 YOLO v3配置演练 1 YOLO发展史 2 YOL ...

  7. 【百度飞浆】RCNN系列目标检测算法详解

    RCNN系列目标检测算法详解 目录 两阶段目标检测算法发展历程 R-CNN R-CNN网络结构 R-CNN网络效果 Fast R-CNN Fast R-CNN网络效果 Faster R-CNN Fas ...

  8. 从0开始学习卷积神经网络与Yolo系列目标检测算法

    目录 (一)卷积神经网络初了解 一.卷积神经网络 1.1 计算机视觉 1.2 卷积运算 1.卷积运算介绍 2.卷积运算示例:边缘检测 3.对于一张RGB图像进行卷积 4.提取RGB图像的多个特征 1. ...

  9. Yolo系列目标检测算法知识点总结

    下面是YoloV4论文中给出的目标检测算法的整体架构: 主要包含以下几个部分: 输入层用来处理输入数据,如数据增强 Backbone主干网络用来提取特征 Neck层用来做多尺度特征融合,提升特征的表达 ...

最新文章

  1. RabbitMQ的消费限流
  2. 人的一生奋斗史Rational Rose 版
  3. 山西省能源产业发展动向及投资风险分析报告2021版
  4. CSS样式属性单词之Left
  5. QYResearch回顾:2017年中国汽车语音识别系统产量为1413万
  6. 程序员面试金典——9.4集合的子集
  7. php 调用永中云,永中优云:是时候给大家介绍真正的云端Office了
  8. 每天10道Crypto Day3
  9. 32位程序使用超过4G的内存
  10. Git删除提交历史记录
  11. linux下目录压缩,Linux下 目录 压缩 解压缩 打包
  12. oracle卸载步骤图解,Oracle完全卸载步骤
  13. beyondCompare this license key has been revoked密钥被撤销
  14. 二叉树--二叉平衡树
  15. 中介/代理,正/反向代理,直/间接代理,概念清晰解释
  16. 英特尔微软强强联手开发智能广告技术
  17. golang的timer的一些坑
  18. ActivityManager: Killing *pid + 包名*: excessive cpu 21890 during 300019 dur=45344791 limit=2
  19. cannot import name ‘_registerMatType‘ from ‘cv2.cv2‘
  20. google earth中显示点云

热门文章

  1. java web中的导出excel_JAVA语言之怎么在JavaWeb中导出Excel
  2. AndroidStudio之option menu菜单的使用,android游戏开发
  3. backup exec oracle agent无法验证数据库凭证,通过Backup Exec实施Oracle灾难恢复数据库 -电脑资料...
  4. docker中使用aspose word转pdf 乱码问题
  5. 【金万维】使用天联高级版登录用友U8+,进行凭证打印操作。
  6. 最新西游H5复仇者手游端系统源码+附带文本教程
  7. QuartusII仿真通过但上板验证不过
  8. 一个月的时间准备计算机三级数据库技术,够吗?
  9. 《概率论与数理统计》第四版 浙江大学第1-5章复习
  10. Hadoop作业提交分析(五)