当前位置: 首页 > article >正文

RCNN系列算法

文章目录

  • 一、简介
  • 二、R-CNN
  • 三、Fast R-CNN
  • 四、Faster R-CNN
  • 五、Mask R-CNN

一、简介

目标检测算法的发展史如下:

在这里插入图片描述
R-CNN系列算法:其中’R’ 表示 region proposal,表示使用卷积神经网络CNN 寻找候选框。作为 two stage算法,和 one stage 的区别:
单阶段:直接对一组预定义的锚框(Anchor Boxes)进行分类和调整边界框
两阶段:通过专门模块生成候选框(RPN)寻找前景和调整边界框、
基于之前生成的侯选框进行更精细的分类和调整边界框

二、R-CNN

R-CNN 是利用深度学习进行目标检测的开山之作。作者Ross Girshick多次 在PASCAL VOC的目标检测竞赛中折桂,曾在2010年带领团队获得终身成就奖。

在这里插入图片描述
算法流程:

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

优点:

  • 引入了深度学习方法,显著提高了目标检测的精度。

缺点:

  • 计算效率低:选择性搜索生成大量候选区域,且每个区域都需要单独通过 CNN 提取特征。
  • 管道复杂:需要多个步骤和不同的模型(SVM 和回归器)。
    应用场景:
  • 不适合实时应用,适用于对精度要求较高但对速度要求不高的场景

三、Fast R-CNN

Fast R-CNN是作者Ross Girshick继R-CNN后的又一力作。同样使用VGG16作为网络 的backbone,与R-CNN相比训练时间快9倍,测试推理时间快213倍,准确率从 62%提升至66%(再在ascal VOC数据集上)。

在这里插入图片描述

算法流程:

  • 一张图像生成1K~2K个候选区域(使用Selective Search方法)
  • 将图像输入网络得到相应的特征图,将SS算法生成的候选框投影到 特征图上获得相应的特征矩阵
  • 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将 特征图展平通过一系列全连接层得到预测结果。

优点:

  • 共享卷积特征: 整张图像只通过一次 CNN 提取特征,而不是每个候选区域单独提取。
  • ROI Pooling 层: 将不同大小的候选区域统一到固定大小的特征图,ROI池化是SPP的一个特例
  • 显著提高了计算效率,比 R-CNN 快得多。
  • 结构更简单,更容易训练。

缺点:

  • 仍然依赖于选择性搜索来生成候选区域,这一步骤较慢。

应用场景:

  • 适用于对精度有一定要求但对速度也有一定要求的场景。

四、Faster R-CNN

Faster R-CNN是作者Ross Girshick继Fast R-CNN后的又一力作。同样使用VGG16作 为网络的backbone,推理速度在GPU上达到5fps(包括候选区域的生成),准确率 也有进一步的提升。在2015年的ILSVRC以及COCO竞赛中获得多个项目的第一名。

在这里插入图片描述

算法流程:

  • 将图像输入网络得到相应的特征图
  • 使用RPN结构生成候选框,将RPN生成的候选框投影到 特征图上获得相应的特征矩阵
  • 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图, 接着将特征图展平通过一系列全连接层得到预测结果

优点:

  • 引入了区域建议网络(Region Proposal Network, RPN),替代了选择性搜索。
  • RPN 在共享的特征图上生成候选区域,大大减少了候选区域的数量和生成时间。
  • RPN 和 Fast R-CNN 的检测网络共享相同的卷积层,进一步提高效率。
  • 大大提高了检测速度,同时保持高精度。
  • 结构更加紧凑,端到端可训练。

缺点:

  • 相对于单阶段检测器(如 YOLO 和 SSD),仍然较慢。

应用场景:

  • 适用于对精度和速度都有较高要求的场景,广泛应用于各种实际应用中

五、Mask R-CNN

基于 Faster R-CNN 架构,增加了实例分割功能。
backbone:ResNet50/vgg16 + FPN
使用FPN分别预测的特征层合并输出一个预测特征层。
在 Faster R-CNN 的基础上增加了并行的 mask 分支,预测box内每一个像素点属于前景还是背景。

把ROI Pooling 改善成ROI Align:

ROI Pooling
ROI Pooling 是 Fast R-CNN 中提出的一种方法,用于将任意大小的候选区域转换为固定大小的特征图。
过程:
确定边界框: 给定一个候选区域,确定其在特征图上的边界框。
划分网格: 将候选区域划分为固定数量的子区域(通常是 2x2 或 7x7 的网格)。
最大池化: 对每个子区域进行最大池化,得到固定大小的特征图。
缺点:
不精确: 确定边界框时可能会导致特征图上的像素位置与原始图像中的位置不完全对齐,特别是在边界处。论文中提到第一次quantization取整操作造成 misalignment。`
划分网格时:第二次quantization 特征图尺寸和7x7尺寸不是整数关系导致划分不均匀。
信息丢失: 最大池化可能会丢失一些细节信息。

ROI Align (RoIAlign)
定义: ROI Align 是在 Mask R-CNN 中提出的一种改进方法,目的是解决 ROI Pooling 的不精确问题。
过程:
确定边界框: 同样给定一个候选区域,确定其在特征图上的边界框。
划分网格: 将候选区域划分为固定数量的子区域。
双线性插值: 在每个子区域内使用双线性插值来采样固定数量的点(通常是 4 个点),从而得到更精确的特征图。
优点:
精确: 通过双线性插值,RoIAlign 可以更精确地保留候选区域的特征信息,特别是在边界处。
信息保留: 双线性插值相比最大池化更能保留细节信息。

因为是像素级别的分类,为了预测准确性,不和Faster R-CNN ROI Align,特征图大小使用更大的14x14尺寸。论文中结构对比如下图:
在这里插入图片描述

训练网络时输入mask分支的目标由RPN提供,因为RPN候选区域的不是特别准确一定程度可以增加数据的多样性,而预测时输入mask分支由Fast R-CNN提供,因为此时经过NMS操作,框位置及分类信息更精确,同时也可以减少计算量。


http://www.kler.cn/a/370929.html

相关文章:

  • Rust 强制类型转换和动态指针类型的转换
  • SpringBoot+Lombok项目实体属性名xXxx格式,前端接收不到
  • 如何发布自己的第一个Chrome扩展程序
  • mac 安装docker
  • 怎么实现Redis的高可用?
  • 如何独立SDK模块到源码目录?
  • ES、BOM 和 DOM
  • java-web-day6-下-知识点小结
  • Android性能优化之2个帧率和卡顿监控方案(附实现代码)
  • 【网页内嵌PDF下载】PDF.js妙用
  • MFC tcpclient
  • STM32主从定时器输出个数、频率可调的脉冲
  • 知名数字中国战略布局与新质生产力培训师讲师培训讲师唐兴通数字经济数字化转型专家教授学者大数据AIGC大模型智能化战略数字时代商业模式创新
  • Hana 到 PostgreSQL 数据迁移同步
  • QT 从ttf文件中读取图标
  • 使用命令行自动生成markdown文档目录
  • 针对初学者的PyTorch项目推荐
  • 【论文阅读】Real-ESRGAN
  • 拥塞控制与TCP子问题(粘包问题,异常情况等)
  • OpenHarmony4.0配置应用开机自启
  • 软件工程之软件系统设计与软件开发方法
  • Pandas库学习Day20
  • 操作系统--进程
  • 大文件秒传,分片上传,断点续传
  • LeetCode 热题 100之子串
  • QT实时显示日志内容