目标检测——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.hqwc.cn/news/247359.html

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

相关文章

如何将Java条码Dynamsoft Barcode Reader集成到命令行、GUI和Web应用程序中

Dynamsoft Barcode Reader SDK一款多功能的条码读取控件,只需要几行代码就可以将条码读取功能嵌入到Web或桌面应用程序。这可以节省数月的开发时间和成本。能支持多种图像文件格式以及从摄像机或扫描仪获取的DIB格式。使用Dynamsoft Barcode Reader SDK,…

自动化框架错误排查:本地全通过,pipline上大部分报错

现象: 最近经过一次切环境和验证码部分的代码重构,果不其然,我们的自动化框架就出错了 我在本地修改调试,并在堡垒机上全部跑过 但在pipline上则大部分报错 进一步排查 这么多case报错,而且报错log都一模一样,推断是底层出错 我在堡垒机上使用命令行来跑case,发现与…

Facebook引流怎么做?写个脚本就好!

在当今的数字化时代,流量对于任何一个网站或应用程序来说都至关重要,Facebook,作为全球最大的社交网络平台,无疑是一个获取流量的绝佳场所,但是,如何有效地从Facebook引流呢?写个脚本就好了! 在本文中&am…

封装Servlet使用自定义注解进行参数接收

文章目录 前言一、前后对比✨二、具体实现🎇三、效果展示🎏 前言 先说项目背景,本项目是本人在校期间老师布置的作业(就一个CRUD),课程是后端应用程序设计,其实就是servlet和jsp那一套&#xf…

(华为)网络工程师教程笔记(网工教程)网工入门——3、静态路由路由表的配置

参考文章:【全236集】网络工程师从基础入门到进阶必学教程!通俗易懂,2023最新版,学完即可就业!网工入门_华为认证_HCIA_HCIP_数据通信_网工学习路线 文章目录 13. 网工入门10-静态路由(路由表的配置&#x…

做一件荒谬的事:用AI推理下一次双色球结果 v0.1

做一件荒谬的事:用AI推理下一次双色球结果 v0.1 引言 事情的起因是父亲被亲戚安利,突然喜欢上了双色球,连规则和开奖结果怎么看都不懂的他,让我研究研究这个事,给他选个号。他还说老家有好几个人中了几百万&#xff…

异常处理 springboot

全局异常处理 RestcontrollerAdvice Exceptonhandler package com.it.Exception;import com.it.pojo.Result; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice;/*全局异常处理器…

Java中三种定时任务总结(schedule,quartz,xxl-job)

目录 1、Spring框架的定时任务 2、Quartz Quartz的用法 3、xxl-job 3.1 docker 安装xxl-job 3.2 xxl-job编程测试 补充:Java中自带的定时任务调度 1. java.util.Timer和java.util.TimerTask 2. java.util.concurrent.Executors和java.util.concurrent.Sche…

ai绘画Midjourney绘画提示词Prompt教程

一、Midjourney绘画工具 SparkAi【无需魔法使用】: SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!本系统使用NestjsVueTypescript框架技术,持续集成AI能力到…

MySQL笔记-第01章_数据库概述

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第01章_数据库概述1. 为什么要使用数据库2. 数据库与数据库管理系统2.1 数据库的相关概念2.2 数据库与数据库管理系统的关系2.3 常见的数据库…

IoT DC3 是一个基于 Spring Cloud 全开源物联网平台 linux docker部署傻瓜化步骤

如有不了解可先参考我的另一篇文章本地部署:IoT DC3 是一个基于 Spring Cloud 的开源的、分布式的物联网(IoT)平台本地部署步骤 如有不了解可先参考我的另一篇文章本地部署: 1 环境准备: JDK 8 以上 docker 安装好 下载docker-compose-dev.yml 文件 执行基础环境docker安装 …

EM32DX-E4【C#】

1外观: ecat总线,分布式io 2电源: 靠近SW拨码:24V 中间:0V 靠近面板:PE接地 3DI: 6000H DI输入寄存器 16-bit (16位输入) 00H U8 子索引总数 01H Unsigned16 IN1…