目标检测——R-CNN系列检测算法总结

R-CNN系列算法详细解读文章:

  • R-CNN算法解读
  • SPPNet算法解读
  • Fast R-CNN算法解读
  • Faster R-CNN算法解读
  • Mask R-CNN算法解读

目录

  • 1、概述
    • 1.1 获取目标候选框
    • 1.2 候选框提取特征
    • 1.3 候选框分类及边框回归
  • 2、R-CNN系列算法概述
    • 2.1 R-CNN算法
    • 2.2 SPPNet算法
    • 2.3 Fast R-CNN算法
    • 2.4 Faster R-CNN算法
    • 2.5 Mask R-CNN算法
  • 3、R-CNN系列算法对比

1、概述

R-CNN系列检测算法是两阶段检测算法,可大体分为三步:第一步从待检测图片中获得若干目标候选框(Region Proposal);第二步对每个候选框提取特征;最后对利用该特征对候选框做分类和边框回归。

1.1 获取目标候选框

获取目标候选框方法有如下四种,可分为:滑动窗口、规则块、选择性搜索及自动学习。

  • 第一种滑动窗口,多见于传统检测算法,利用手工设计设计加adaboost分类器;滑动窗口本质上就是穷举法,利用不同尺度及不同宽高比的窗口尽量包含多的图像块试图包含图像中所有目标,力求把图像中目标“穷举”出来,最后应用分类器分类。常见做法有图像多尺度加固定窗口大小或多尺度窗口采样得到子图像块,很显然,这种做法很容易形成候选框冗余,减慢了整体检测时间。
  • 第二种规则块,在第一种滑动窗口的情况下,结合目标的特性比如大小及长宽比就行筛选,一定程度上减小了候选框冗余,但整体还是复杂度很高。
  • 第三种选择性搜索方式,前面两种方式形成的候选框都存在大量冗余情况,所以如何将冗余框去除并有效合并是一个重要问题,选择性搜索正是利用这一点,自底向上进行相邻框重叠区域合并,从而减少冗余。论文”Selective Search for Object Recognition”中提到选择性搜索算法首先对图像利用felzenszwalb分割算法进行区域分割,然后利用区域与区域之间的相似度进行合并(相似度量包含有颜色、纹理、大小及吻合度)。R-CNN、SPPNet、Fast R-CNN均采用这种方式。
  • 第四种自动学习方式,也是Faster R-CNN提出的利用RPN网络进行自动学习,RPN网络基于设置的anchor进行学习,最后通过RPN网络预测得到感兴趣区域,这种方式有点类似YOLO系列一阶段检测算法,只是RPN网络不会预测目标的具体类别,只会预测是否是“目标”(objectness)。

1.2 候选框提取特征

传统检测算法提取图像特征都是手工设计特征,比如:Haar、HOG,灰度共生矩阵、LBP、SIFT等等,这些特征在检测特定目标下可能有用,但扩大化到检测其他目标或许会失去效果,而且手工设计特征需要一定的专业性,要设计一个新的特征,需要的专业知识没有多年的经验是无法办到的。随着2012年AlexNet的出现,卷积神经网络的提取特征能力得到体现。R-CNN系列检测算法正是利用这一优势才得以在检测领域打败传统检测算法。

1.3 候选框分类及边框回归

图像检测算法怎么和图像分类算法联系起来,一个简单的思想就是将图像“穷举分块”,然后对每一个子图像块进行是否是目标的分类,是目标,则可算检测到目标。这无疑会造成目标会有很多重叠的检测框,所以后面用nms算法去重。为了让最后的检测框更准,所以R-CNN又提出边框回归,后续基于R-CNN算法的改进都加入了边框回归。分类算法,从R-CNN及SPPNet的单独SVM,到Fast/Faster/Mask R-CNN的softmax;不同是的前者是独立模块,后者将分类和回归融合在一个网络中作为两个分支用多任务损失一起参与训练。

2、R-CNN系列算法概述

2.1 R-CNN算法

在这里插入图片描述
R-CNN算法用Selective Search的候选区域选择方式替换了经典的滑窗方式,使得候选框“少而精”(推理阶段取了2000个候选框),然后用AlexNet对2000个候选框依次做提取特征操作,将特征保持在磁盘空间里,最后用SVMs分类器输入候选框特征进行分类,bounding-box回归也是利用这些特征。R-CNN算法是特点是这些操作都是独立的,特征提取操作相对于后面的算法非常冗余。

2.2 SPPNet算法

在这里插入图片描述
SPPNet作者发现卷积层可以接受任意大小的输入并输出任意尺寸的特征图,但分类器(SVM/softmax)或者全连接层只能接受固定尺寸的输入。为了让卷积神经网络能接受任意大小的输入图像,提出SPP Layer(空间金字塔池化层),它能将任意输入大小图像在全连接层之前保证是一个固定长度的向量。所以SPP Layer是能在分类网络、检测网络中通用的,主要处理流程如下:
在这里插入图片描述
SPPNet相对于R-CNN的改进就是通过加入SPP Layer后将2000次提取特征的操作合并为1次操作,大大减少了推理时间,另外通过多尺度训练也增加了模型的鲁棒性。但候选框生成、提取特征、分类、bounding-box回归还是独立模块,训练和推理效率依然很低。

2.3 Fast R-CNN算法

在这里插入图片描述
从算法框图可见,Fast R-CNN算法将特征提取、分类及bounding-box回归融合在一起了,采用多任务损失将分类和回归联合训练,训练和推理可以一步到位,不用存储特征占用额外的磁盘空间。另外Fast R-CNN也设计了RoI Pooling层(可视为单个级别的SPP层)应对不同大小的区域候选框用于生成固定大小的特征向量。针对候选框生成方面,依然采用SS算法(大部分的时间耗时在这里)。

2.4 Faster R-CNN算法

在这里插入图片描述
基于Fast R-CNN的劣势提出改进,提出了RPN网络用于替换SS算法让其自动生成目标区域候选框。RPN网络在特征图上利用在3x3大小的滑窗内设定9个anchor,在anchor的基础上预测出目标区域候选框(RoI),通过RPN与Fast R-CNN共享特征提取部分的参数,达到统一训练/推理的目的,相对于SS加上Fast R-CNN大大减少了检测时间。

2.5 Mask R-CNN算法

在这里插入图片描述
从算法框图可以看出,Mask R-CNN是 Faster R-CNN的基础上新增一个mask分支实现的,并且为了让RoI区域特征保持空间一致性,提出了RoIAlign替换了Faster R-CNN中的RoI Pooling,纠正了RoI Pooling在特征图上的取值偏移,使得检测分支和mask分支在特征图上的RoI区域和原图的RoI区域在空间位置上对齐,这也是Mask R-CNN在检测领域比Faster R-CNN更高的原因之一。

3、R-CNN系列算法对比

算法候选框生成特征提取分类回归特点
R-CNNSSAlexNetSVMsL2回归偏移量四个模块独立,需要额外的特征存储,特征提取重复操作
SPPNetSSZF-5SVMsL2回归偏移量提出SPP层,使得特征提取合并为一次操作,但四个模块依然独立,需要额外的特征存储
Fast R-CNNSSVGG-16SoftmaxsmoothL1回归偏移量将特征提取、分类、回归融合在一起,用多任务训练,提出RoI池化层,SS模型依然耗时严重
Faster R-CNNRPNZF-5/VGG-16SoftmaxsmoothL1回归偏移量提出RPN网络自动生成区域候选框,将RPN与Fast RCNN网络融合,形成端到端推理
Mask R-CNNRPNResNet50/101SoftmaxsmoothL1回归偏移量提出RoI Align层,减少RoI区域特征在空间位置上偏移,新增Mask分支,对目标定位有一定积极作用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024最新版软件测试八股文(文档)

前言 (第一个就刷掉一大批人) 有很多“会自动化”的同学来咨询技术问题,他总会问到我一些元素定位的问题。元素定位其实都不算自动化面试的问题。 一般我都会问:你是定位不到吗?通常结果都是说确实定位不到。 做自…

HarmonyOS开发上手

首先献出开发官网地址 (https://developer.harmonyos.com/cn/develop/) 本文内容 基础入门内容介绍安装DevEco StudioDevEco Studio常用功能介绍项目工程结构详解 1. 基础入门内容介绍 应用开发流程 在正式开始之前还需要了解一些有关的基础概念 方舟…

H5流媒体播放器EasyPlayer播放H.265新增倍速播放功能,具体如何实现?

目前我们TSINGSEE青犀视频所有的视频监控平台,集成的都是EasyPlayer.js版播放器,它属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,包括WebSocket-FLV、HTTP-FLV,HLS(m3u8&#x…

vivado分析-在 Versal 器件中执行 NoC 服务质量分析

AMD Vivado ™ 中的服务质量 (QoS) 用于将片上网络 (NoC) 编译器生成的当前 NoC 解决方案估算所得 QoS 与 AXI NoCIP 和 / 或 AXI4 ‑ Stream NoC IP 中指定的 QoS 要求进行对比。一旦 NoC 解决方案过时 , 就需要调用 NoC 编译器并生成新的 NoC 解决方案以…

论文投稿查询会议期刊及deadlines的网站

1. 这个是查近期CCF-ABC的ddl会议的网址 https://ccfddl.github.io/ https://ccfddl.top/ 2. 期刊选刊 https://ijournal.topeditsci.com/home https://journalsuggester.springer.com/ 3. IEEE出版物推荐 https://publication-recommender.ieee.org/home

Linux scatterlist 详解

源码基于:Linux 5.4 约定: 芯片架构:ARM64内存架构:UMACONFIG_ARM64_VA_BITS:39CONFIG_ARM64_PAGE_SHIFT:12CONFIG_PGTABLE_LEVELS :3 0. 前言 之前在《Linux DMA... 零拷贝》博文分享了DMA 技…

网络安全卫士:上海迅软DSE的员工上网管理策略大揭秘!

在日常办公中,企业员工可能会在互联网上有意或无意的将一些包含内部重要信息的内容发布出去,从而造成不必要的违规及泄密风险,因此对终端用户进行规范的上网行为管理,既能有效预防重要数据泄密,同时也能提高员工办公效…

连续性变量的组间差异分析

目录 正态分布 正态分布检测 1:图像法 2:计算法 Shapiro–Wilk W检验(小样本推荐) Lilliefors正态性检验 Anderson–Darling 或AD检验 DAgostino检验(大样本推荐) 独立样本t检验 1,方差齐性检验 …

JavaEE进阶学习:SpringBoot 的创建和使用

1.什么是Spring Boot Spring 的诞生是为了简化 Java 程序的开发的,而 Spring Boot 的诞生是为了简化 Spring 程序开发的。 Spring Boot 翻译一下就是 Spring 脚手架,它就是为了快速开发 Spring 框架而诞生的 2.Spring Boot 优点 起步依赖 (创建的时候…

如何用JS实现模糊查询功能

我是写的是JSON数据通过请求来获取,实现这个模糊查询功能我只用了indexOf返回数组下标这一种办法。方法不限,下面我只展示这一种方法喽! indexOf是什么 indexOf是返回指定内容在原字符串中的位置,该方法是从数组的start处或数组的…

按升序输出各个字符串。

编写程序,设计并实现如下功能:从键盘输入多个字符串,按升序输出各个字符串。

从零开始搭建博客网站-----框架页

实现效果如下 发布的功能还没有实现&#xff0c;仅仅实现了简单的页面显示 关键代码如下 <template><div class"layout"><el-header class"header"><div class"logo">EasyBlog</div></el-header><el-c…

Python标准库:copy模块【侯小啾python基础领航计划 系列(十五)】

Python标准库:copy模块【侯小啾python基础领航计划 系列(十五)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

YOLOv8改进有效涨点 | 2023 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv&#xff08;空间深度转换卷积&#xff09;技术。SPD-Conv是一种创新的空间编码技术&#xff0c;它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念&#xff1a;它是一种将图像空间信息转换为深度信息…

springboot的常用注解

声明解释这个对象&#xff08;类或者其他&#xff09;组件相关 名称作用Controller用于修饰MVC中controller层的组件SpringBoot中的组件扫描功能会识别到该注解&#xff0c;并为修饰的类实例化对象&#xff0c;通常与RequestMapping联用&#xff0c;当SpringMVC获取到请求时会…

国产API调试插件:Apipost-Helper

前言 Idea 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展&#xff0c;可以根据开发人员的需要进行定制和扩展&#xff0c;从而提高开发效率,今天我们就来介绍一款…

笔记-模拟角频率和数字角频率的关系理解

先建议阅读前人此文&#xff08;点击这里&#xff09;&#xff0c;有助于理解。 模拟频率&#xff1a;f 模拟角频率&#xff1a;Ω 数字角频率&#xff1a;ω 其中&#xff1a;在模拟信号中Ω 2πf 正弦波表示&#xff1a;sin(2πft) sin(Ωt) 数字信号就是离散的&#xff…

深度学习(五):pytorch迁移学习之resnet50

1.迁移学习 迁移学习是一种机器学习方法&#xff0c;它通过将已经在一个任务上学习到的知识应用到另一个相关任务上&#xff0c;来改善模型的性能。迁移学习可以解决数据不足或标注困难的问题&#xff0c;同时可以加快模型的训练速度。 迁移学习的核心思想是将源领域的知识迁…

出现数据库出现没有时间格式的错误,实体类Date类型不对导致时间报错

目录 报错现场解决办法java与mysql中的日期类型及二者的对应关系和使用场景 报错现场 数据库最早时间为2023年1月1日&#xff0c;前端查询后却出现2022年12月31日的数据 数据库时间类型为date swagger接口测试 解决办法 讲until的Date改成sql类的Date&#xff0c;就可以了…

[ 蓝桥杯Web真题 ]-视频弹幕

目录 介绍 准备 目标 效果 规定 思路 解答参考 扩展功能 介绍 弹幕指直接显现在视频上的评论&#xff0c;可以以滚动、停留甚至更多动作特效方式出现在视频上&#xff0c;是观看视频的人发送的简短评论。通过发送弹幕可以给观众一种“实时互动”的错觉&#xff0c;弹幕…