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

news2024/11/17 22:35:05

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.coloradmin.cn/o/1283560.html

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

相关文章

C++作业5

完成沙发床的多继承&#xff08;有指针成员&#xff09; 代码&#xff1a; #include <iostream>using namespace std;class Bed { private:double *money; public:Bed(){cout << "Bed::无参构造函数" << endl;}Bed(double money):money(new doub…

http代理如何设置手机上网?http代理起到了哪些作用

本文将详细介绍如何设置手机上网使用HTTP代理&#xff0c;以及HTTP代理所起到的作用。 一、HTTP代理是什么&#xff1f; HTTP代理是一种网络协议&#xff0c;它允许客户端与服务器之间进行数据传输。它是一种常用的代理服务&#xff0c;可以帮助用户通过HTTP协议访问被封锁的网…

帆软报表不能增加SAP连接方式 通过插件一致性检测 同步至本地解决

帆软报表开发人员需要增加一个SAP数据连接方式&#xff1a;SAP_ECC_600环境 在服务器端不能直接增加&#xff0c;而在帆软报表设计器切换到远程模式时&#xff0c;又不能显示SAP连接&#xff0c;导致不能增加。 解决&#xff1a;重新进入帆软报表报计器时报以下错误&#xff0c…

Spring Cloud + Vue前后端分离-第2章 使用Maven搭建SpringCloud项目

第2章 使用Maven搭建SpringCloud项目 Maven两大核心功能&#xff1a; 依赖管理&#xff08;Jar包管理&#xff09; 构建项目&#xff08;项目打包&#xff09; 使用Eureka搭建注册中心 使用spring initializr创建spring cloud项目 SpringCloud和Maven简介 SpringBoot和Spr…

FacetWP Relevanssi Integration相关性集成插件

点击阅读FacetWP Relevanssi Integration相关性集成插件原文 FacetWP Relevanssi Integration相关性集成插件是FacetWP与用于高级搜索的 Relevanssi 插件的集成显着增强了您网站的搜索功能。这个强大的工具使您的用户能够轻松找到他们寻求的特定内容&#xff0c;无论他们的查询…

craco + webpack 4 升 5

craco webpack 4 升 5 更新包版本尝试build升级其他依赖库使用process插件打印进度信息到底需要多少内存分析构建产出添加 splitChunk总结记录一些好文章&#xff1a; 我的项目使用 craco react 开发 我的 package.json {// ......"dependencies": {"ant-desi…

如何在 Chrome 上调试文件打断点

1. 控制台进入 Source 2. CtrlP 输入文件名称 3. 在需要的位置手动打断点 4. 重新触发代码运行&#xff0c;触发断点

【android开发-14】android中fragment用法详细介绍

1&#xff0c;fragment是什么&#xff1f; Fragment是Android中的一种组件&#xff0c;它在Android 3.0&#xff08;API级别11&#xff09;及以后的版本中引入。Fragment可以用来在Activity中添加一个或多个具有自己的用户界面的片段。它们可以与Activity进行交互&#xff0c;并…

查找一维向量中大于或小于某一值的所有连续片段

文章目录 经常会遇到一种场景&#xff0c;那就是有一个一维向量&#xff0c;我们要找到其中所有大于设定阈值的片段。就好比电路中有高代电平&#xff0c;我们要找连续的高电平段或低电平&#xff1a; 如上图&#xff0c;我们只要标红的高电平&#xff0c;对应代码&#xff1…

【原神游戏开发日志1】缘起

【原神游戏开发日志1】缘起 版权声明 本文为“优梦创客”原创文章&#xff0c;您可以自由转载&#xff0c;但必须加入完整的版权声明 文章内容不得删减、修改、演绎 相关学习资源见文末 大家好&#xff0c;最近看到原神在TGA上频频获奖&#xff0c;作为一个14年经验的游戏开…

智能优化算法应用:基于社会群体算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于社会群体算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于社会群体算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.社会群体算法4.实验参数设定5.算法结果6.参考…

医院信息化专业人员必备医院业务运作及管理流程知识(详细)

业务流程是一家医院运作的基础,医院所有业务都需要流程加以驱动。熟知医院各项业务,了解医院管理流程,有利于医院工作人员更好地投入自身岗位,提高工作效率。本文整理了常见医院业务运作及管理流程,仅供参考! 【门诊业务】 一、门诊业务的特点: 1.接诊病人多,就诊时…

Sui生态DeFi将参加Builder DAO举办的活动,为期三天畅谈如何Build on Sui

LeadUp the Night是一个定期举办的MeetUp活动&#xff0c;由Builder DAO邀请区块链各方项目开发者、VC担任本活动的讲师。这个活动旨在促进区块链技术的发展和应用&#xff0c;让参与者有机会开发创新的区块链应用&#xff0c;探索区块链技术的潜力。 ​​​12月4日-6日受Buil…

使用Serv-U FTP服务器共享文件,实现无公网IP环境下远程访问

文章目录 1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装 3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 科技日益发展的今天&#xff0c;移动电子设备似乎成了我们生活的主角&#xff0c;智能…

网盘系统设计:万亿 GB 网盘如何实现秒传与限速?

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 网盘&#xff0c;又称云盘&#xff0c;是提供文件托管和文件上传、下载服务的网站&#xff08;File hostingservice&#xff09;。人们通过网盘保管自己拍摄的照片、视频&#xff0c;通过网盘和他人共享文件&#xff…

Kubeadm构建K8S集群指南:从环境准备到Dashboard部署的详细步骤与常见问题解决方案

文章目录 一、环境准备1、准备1主2从2、设置主机名与时区3、添加hosts网络主机配置4、关闭防火墙5、验证是否配置正确 二、安装Kubeadm1、在每个Centos上安装Docker2、确保从cgroups均在同一个从groupfs3、安装kubeadm集群部署工具4、关闭交换区5、配置网桥6、通过镜像安装k8s7…

【PCB知识】

PCB知识 1. PCB知识1.1 扩展名1.21.31.4 2.3.4.5. 1. PCB知识 1.1 扩展名 扩展名为 *.opj 的文件可以使用 Origin Project 应用程序打开。 扩展名为*.DSN文件&#xff0c;一般为isis或OrCAD电路图文件&#xff0c; OrCAD为Cadence软件组件&#xff1b; isis为Proteus软件的sc…

整数和浮点数在内存中的存储

文章目录 每日一言整数在内存中的存储方式浮点数在内存中的存储结语 每日一言 You just can’t beat the person who never gives up. 你无法打败那位永不放弃的人。 整数在内存中的存储方式 整数在内存中的存储方式通常采用二进制形式&#xff0c;即将整数的数值转化为二进制…

根据源码梳理Redisson的可重入、锁重试以及看门狗机制原理

Redisson可重入的原理 在上篇文章中我们已经知道了除了需要存储线程标识外&#xff0c;会额外存储一个锁重入次数。那么接下来我们查看使用Redisson时&#xff0c;Redisson的加锁与释放锁流程图。 当开始获取锁时&#xff0c;会先判断锁是否存在&#xff0c;如果存在再进行判断…

拒绝废话,直接开画!Python零基础教程之画图

引文 很多教程&#xff0c;开始教python&#xff0c;就是语法呀&#xff0c;字符类型这些基础的&#xff0c;虽说是基础&#xff0c;你也不能说没用。 但是&#xff0c;对于前期要快速成长的我们来说&#xff0c;属实不够看。 我们是新手&#xff0c;我们是菜鸟&#xff0c;但…