目标检测系列模型发展历程

常见数据集:

VOC-->COCO

模型发展:

RCNN-->Fast RCNN-->Faster RCNN-->Mask RCNN

这一系列的模型(RCNN、Fast RCNN、Faster RCNN、Mask RCNN)代表了计算机视觉特别是在物体检测和分割领域的一系列重大进展。下面,我会概述每个模型的特点、网络结构、优缺点,以及它们的发展历史。

1. RCNN(Regions with CNN features)

- 特点与网络结构:RCNN(Regions with Convolutional Neural Networks)通过结合区域提取(Region Proposal)技术和卷积神经网络(CNN)来检测图片中的物体。首先,使用选择性搜索(Selective Search)算法从图片中提取约2000个候选区域,然后将这些区域调整到固定大小,并用CNN提取特征,最后通过SVM(支持向量机)分类器对每个区域进行分类
- 优点:提出了使用深度学习进行物体检测的新范式,大幅提升了检测精度。
- 缺点:速度慢,因为对每个候选区域独立运行CNN是非常耗时的;训练过程繁琐,包括预训练CNN、训练SVM分类器和边界框回归器。

RCNN(Regions with CNN features)算法是一种结合了区域提案(Region Proposal)卷积神经网络(CNN)的物体检测方法。其核心步骤可以总结如下:

  1. 区域提案:首先,使用选择性搜索(Selective Search)算法在输入图像上生成大约2000个候选区域(也称为区域提案)。这些区域是图像中可能包含物体的部分。

  2. 特征提取:对于每个区域提案,将其缩放到固定大小(通常是227x227像素),然后通过预训练的卷积神经网络(如AlexNet、VGG等)运行,以提取该区域的特征。这一步骤是独立对每个区域进行的,因此是计算密集型的。

  3. 分类:提取的特征被送入一系列的支持向量机(SVM)分类器中,每个SVM分类器负责判断区域是否属于某个特定的类别(例如人、车等)。因此,对于每个类别,都有一个单独的SVM模型。

  4. 边界框回归:对于被分类器认为含有物体的区域,使用线性回归模型对其边界框(bounding box)的位置进行微调,以更精确地定位物体。这一步骤有助于改进最终的检测精度。

  5. 非极大值抑制(NMS):对于每个类别,可能有多个区域提案被识别为包含该类别的物体,这些区域之间可能高度重叠。非极大值抑制是一种技术,用于在每个类别中只保留最佳的区域提案,即抑制(删除)所有与最高得分的区域提案重叠度较高的其他区域提案,从而减少重复检测。

RCNN通过这些步骤实现了当时领先的检测性能,但也因为需要对每个区域提案独立运行CNN,导致其处理速度较慢,不适合实时应用。此外,其训练过程相对复杂,需要分别训练CNN、SVM和边界框回归模型。

2. Fast RCNN

- 特点与网络结构:为了解决RCNN速度慢的问题,Fast RCNN在整张图片上运行CNN,一次性提取特征图,然后对于每个候选区域从这个共享的特征图上裁剪出特征(使用ROI池化层),之后再通过一系列的全连接层进行分类和边界框回归。
- 优点:相比于RCNN,大大提升了速度和效率,因为它在整张图上只运行一次CNN。
- 缺点:仍依赖于慢速的选择性搜索算法来生成区域提案。

Fast RCNN是对RCNN的一种改进,旨在解决RCNN处理速度慢和训练过程复杂的问题。它通过共享卷积计算和使用多任务损失函数来同时进行分类和边界框回归,显著提高了处理速度和训练效率。下面是Fast RCNN的核心步骤:

  1. 整图卷积特征提取:与RCNN不同,Fast RCNN首先对整张输入图像运行一次卷积神经网络,生成整个图像的卷积特征图。这一步骤大大减少了重复的计算,因为它避免了对每个区域提案分别提取特征。

  2. 区域提案:与RCNN类似,Fast RCNN仍然使用选择性搜索或其他方法来生成区域提案,但这些区域提案是直接在卷积特征图上操作,而不是原始图像上。

  3. RoI(Region of Interest)池化:对于每个区域提案,Fast RCNN从卷积特征图上裁剪对应的特征区域,并使用RoI池化层将这些特征区域调整为固定大小(例如7x7),以便进行进一步处理。这一步是通过在卷积特征图上操作实现的,从而保持了计算效率。

  4. 分类与边界框回归:RoI池化后的特征被送入一系列全连接层,最后分叉成两个输出层:一个用于物体分类,另一个用于边界框回归。这里使用的是多任务损失,即同时优化分类损失和边界框回归损失。

  5. 非极大值抑制(NMS):和RCNN一样,Fast RCNN也使用非极大值抑制来处理每个类别的多个检测,保留最佳的检测结果,从而减少重复检测。

Fast RCNN的这些改进大幅提高了物体检测的速度和训练效率,同时简化了训练过程,因为整个模型可以通过反向传播算法端到端地训练。然而,虽然Fast RCNN在处理速度上有显著改进,但它仍依赖于传统的区域提案方法(如选择性搜索),这部分仍是速度的瓶颈。

3. Faster RCNN

- 特点与网络结构:为了克服依赖慢速选择性搜索算法的缺点,Faster RCNN引入了区域提案网络(RPN),它是一个全卷积网络,可以在CNN特征图上实时生成区域提案。这些提案随后用于ROI池化和后续的分类及边界框回归。
- 优点:实现了端到端的训练和显著的速度提升,同时保持了高精度。
- 缺点:虽然速度有所提升,但在处理非常高分辨率的图像时,速度和效率仍有限。

Faster RCNN进一步改进了Fast RCNN,引入了区域提案网络(RPN,Region Proposal Network),以解决依赖慢速选择性搜索生成区域提案的问题,实现了几乎实时的物体检测。以下是Faster RCNN算法的核心步骤:

  1. 共享卷积层:与Fast RCNN类似,Faster RCNN首先对整张图像使用卷积神经网络(CNN)生成特征图。这一步骤不仅用于后续的物体检测,也为区域提案网络(RPN)提供了输入特征。

  2. 区域提案网络(RPN)

    • RPN是Faster RCNN的核心创新之一。它在特征图上滑动一个小网络,该网络在每个位置同时预测多个区域提案及其“对象得分”(objectness score)。
    • RPN使用一组预定义大小和比例的锚点框(anchor boxes)作为参考,通过学习调整这些锚点框的位置和大小,生成精确的区域提案。
    • 对于每个锚点框,RPN预测两类得分(是对象还是非对象)和四个调整值(用于精确定位边界框)。
  3. RoI池化

    • 使用RPN生成的区域提案,Faster RCNN从共享的卷积特征图中裁剪出对应的特征区域。
    • 通过RoI池化层将这些特征区域调整为固定大小,以便进一步处理。
  4. 分类与边界框回归

    • 和Fast RCNN一样,Faster RCNN将RoI池化后的特征送入一系列全连接层,这些层分叉成两个输出:一个用于物体分类,另一个用于边界框回归。
    • 通过多任务损失同时优化分类和边界框定位,实现更精确的检测。
  5. 非极大值抑制(NMS)

    • 对于每个类别,可能会有多个重叠的检测框。通过非极大值抑制,Faster RCNN去除重叠度较高的检测框,只保留得分最高的框,从而减少重复检测。

Faster RCNN的这些改进显著提升了检测的速度和精度,使其成为深度学习物体检测领域的一个里程碑。RPN的引入使得模型可以端到端地进行训练,同时生成高质量的区域提案,大大减少了对外部区域提案方法的依赖。

4. Mask RCNN

- 特点与网络结构:Mask RCNN在Faster RCNN的基础上增加了一个分支,用于生成物体的像素级掩码,实现了物体检测和实例分割的同时进行。它使用ROIAlign代替了ROIPooling,解决了ROI池化因为量化而造成的精度损失问题。
- 优点:能够同时进行高精度的物体检测和实例分割;ROIAlign改进提高了分割精度。
- 缺点:相比于仅进行物体检测的模型,计算成本更高,速度更慢。

Mask RCNN是在Faster RCNN的基础上发展起来的,它不仅能进行物体检测,还能进行实例分割,即对每个检测到的物体,Mask RCNN能够生成一个精确的像素级掩码,用以区分物体的具体轮廓。以下是Mask RCNN算法的主要步骤:

  1. 卷积特征提取:Mask RCNN首先使用卷积神经网络(通常是ResNet加上FPN,Feature Pyramid Network)处理整张图像,生成多尺度的特征图。这些特征图既用于后续的区域提案,也用于生成掩码。

  2. 区域提案网络(RPN):通过在特征图上运行RPN生成区域提案。RPN通过学习在每个位置预测物体边界框和对象得分,产生高质量的区域提案。

  3. RoIAlign:与Faster RCNN中的RoIPooling不同,Mask RCNN使用RoIAlign来从特征图上精确裁剪和调整每个提案区域到固定大小,解决了RoIPooling因量化而引入的轻微位置偏差,提高了掩码预测的精度。

  4. 分类、边界框回归与掩码预测

    • 对于每个RoIAlign后的区域,Mask RCNN使用全连接层进行分类和边界框回归。
    • 同时,对每个区域使用一个小的全卷积网络(FCN)生成对应的物体掩码。不同于分类和边界框回归,掩码预测是在每个类别上独立进行的,意味着每个类别都会有一个掩码预测,最后根据分类结果选择相应的掩码。
  5. 非极大值抑制(NMS):和Faster RCNN一样,Mask RCNN也应用NMS来去除同一类别中重叠度较高的检测,确保每个实例只被检测一次。

  6. 多任务损失:Mask RCNN通过一个多任务损失函数来同时优化分类、边界框回归和掩码预测。这个损失函数包括分类损失、边界框损失和掩码损失,它们共同指导模型的训练。

Mask RCNN通过这些步骤,能够实现同时对物体进行高精度的检测和像素级的实例分割,显著提升了实例分割的准确度和效率。其引入的RoIAlign技术特别解决了实例分割中的对齐问题,是其能够成功应用于实例分割的关键所在。

SSD-->FSSD-->DSSD

YOLO系列:YOLO发展史

指标评估:

目标检测评估指标

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

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

相关文章

神经网络:梯度下降法更新模型参数

作者:CSDN _养乐多_ 在神经网络领域,梯度下降是一种核心的优化算法,本文将介绍神经网络中梯度下降法更新参数的公式,并通过实例演示其在模型训练中的应用。通过本博客,读者将能够更好地理解深度学习中的优化算法和损…

【LeetCode】20. 有效的括号(Java自用版)

栈 首先,我们定义一个isValid方法,该方法接受一个字符串s作为参数,并返回一个布尔值来表示该字符串是否有效。 public boolean isValid(String s) {// 如果字符串为空,则自然是有效的if (s.isEmpty())return true;// 创建一个栈…

帆软报表在arm架构的linux

有朋友遇到一个问题在部署帆软报表时遇到报错。 问 我在 arm架构的linux服务器上部署帆软报表遇到了一个棘手的问题,你有空帮忙看下嘛。 我看后台日志报的错是 需要升级 gcc、libmawt.so ,是系统中缺少Tomcat需要的依赖库,你之前处理过类似…

超级会员卡积分收银系统源码:积分+收银+商城三合一小程序 带完整的安装代码包以及搭建教程

信息技术的迅猛发展,移动支付和线上购物已经成为现代人生活的常态。在这样的背景下,商家对于能够整合收银、积分管理和在线商城的综合性系统的需求日益强烈。下面,罗峰给大家分享一款超级会员卡积分收银系统源码,它集积分、收银、…

机器学习(复试)

学习分类 其学习形式主要分为:有监督学习、无监督学习、半监督学习 有监督 有监督学习(supervised learning),需要你事先需要准备好要输入数据(训练样本)与真实的输出结果(参考答案) 预测结…

vector类(一)

文章目录 vector介绍和使用1.vector的介绍2.vector的使用2.1 vector的定义2.2 vector iterator的使用2.3 vector空间增长问题2.4 vector增删查改2.5 vector迭代器失效问题 3.vector 在OJ中的使用 vector介绍和使用 1.vector的介绍 vector是表示 可变大小数组的 序列容器。 就…

四、harmonyos实操一个toDoItem待办列表

官方讲的很大概&#xff0c;有些细节得去看源码才能知道&#xff0c;不过还是撸出来一个简易版的的item了 import image from ohos.multimedia.image;Entry // 表示入口 Component struct Index {State isComplete:boolean false;private totalTasks: Array<string> […

《数据结构学习笔记---第五篇》---链表OJ练习上

目录 CM11链表分割 OR36 链表的回文结构 160.相交链表 141&142环形链表 CM11链表分割 step1:思路分析 1.首先可以想到&#xff0c;我们可以将原链表的元素划分到两个新的链表之中&#xff0c;由于必须保持顺序&#xff0c;所以新链表我们要用尾插。 2.为了方便进行尾插我…

自动化与智能化并行:数字化运维体系助力企业腾飞

文章目录 文章目录 文章目录 一、引言二、数字化运维体系的核心要素三、构建数字化运维体系的策略四、数字化运维体系的实施与挑战主要内容读者对象 一、引言 随着信息技术的迅猛发展&#xff0c;数字化转型已成为企业提升竞争力、实现可持续发展的必由之路。在数字化转型的过…

JSP – 支持WORD上传的富文本编辑器

1.下载示例 https://gitee.com/xproer/zyoffice-tinymce5 2.引入组件 3.配置转换接口 效果 泽优Office文档转换服务(zyOffice) 功能&#xff1a;一键导入Word转HTML&#xff0c;不装控件&#xff0c;不装Office&#xff0c;任意平台兼容(Windows,macOS,Linux,安卓Android,苹果…

Java文件基本操作入门指南

Java文件基本操作入门指南 文章目录 Java文件基本操作入门指南前言一、文件的基本操作1、文件的创建2、文件的写入3、文件的读取4、文件的删除 二、进阶操作与技巧1、文件的复制与移动2、文件内容的追加3、随机访问文件4、文件路径与名称操作 三、最佳实践与注意事项1、异常处理…

flutter boost 如何从native跳转到flutter页面

Flutter Boost 是一个 Flutter 插件&#xff0c;它可以帮助开发者在原生应用和 Flutter 应用之间无缝跳转。以下是一些基本步骤&#xff0c;展示了如何使用 Flutter Boost 从原生&#xff08;Native&#xff09;页面跳转到 Flutter 页面。 ### 1. 配置 Flutter Boost 在你的 …

【GPU系列】选择最适合的 CUDA 版本以提高系统性能

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

什么是数据仓库

数据仓库定义 数据仓库,按照传统的定义,数据仓库是一个面向主题的、集成的、持久的(非易失的)、反映历史变化(随时间变化),用来支持管理人员决策的数据集合。 通俗讲,企业希望能够更快得处理比较多的数据,数据仓库由此诞生。 就像是企业的财务系统。各个部门(面向主…

nvm安装以后,node -v npm 等命令提示不是内部或外部命令

因为有vue2和vue3项目多种&#xff0c;所以为了适应各类版本node,使用nvm管理多种node版本&#xff0c;但是当我按教程安装nvm以后&#xff0c;nvm安装以后&#xff0c;node -v npm 等命令提示不是内部或外部命令 首先nvm官网网址&#xff1a;https://github.com/coreybutler/…

数据结构——栈(C语言版)

前言&#xff1a; 在学习完数据结构顺序表和链表之后&#xff0c;其实我们就可以做很多事情了&#xff0c;后面的栈和队列&#xff0c;其实就是对前面的顺序表和链表的灵活运用&#xff0c;今天我们就来学习一下栈的原理和应用。 准备工作&#xff1a;本人习惯将文件放在test.c…

[C++]深入解析:如何计算C++类或结构体的大小

目录 什么是内存对齐 类的成员的存储规则 怎么进行内存对齐&#xff08;介绍规则与例子讲解&#xff09; 什么是内存对齐 内存对齐是指将数据存储在内存中时&#xff0c;按照一定的规则让数据排列在规定的地址上&#xff0c;以提高数据访问的效率和速度。在C中&#xff0c;结…

维修贝加莱工业电脑触摸屏BR 5PP320.0571-39 Power Panel 300工控屏

维修贝加莱工业电脑触摸屏B&R 5PP320.0571-39 Power Panel 300工控屏 贝加莱工业电脑4P3040.01-490 描述 贝加莱电源面板4P3040.01-490 扩展产品类型&#xff1a;HMI/触摸屏 产品编号&#xff1a;4P3040.01-490 B&R 类型名称&#xff1a;HMI/触摸屏 描述 Power…

鸿蒙OS开发问题:(ArkTS)【 RSA加解密,解决中文乱码等现象】

RSA加解密开始构建工具类就是举步维艰&#xff0c;官方文档虽然很全&#xff0c;但是还是有很多小瑕疵&#xff0c;在自己经过几天的时间&#xff0c;彻底解决了中文乱码的问题、分段加密的问题。 首先看官方示例代码(以RSA非对称加解密&#xff08;多次调用doFinal实现分段&a…

TikTok养号怎么做?打破0播放的前提是做好这些

TikTok养号的重要性不必多少&#xff0c;不仅可以在创号初期保障账号安全&#xff0c;后期的账号流量也需要以前期养好账号为前提。下面就给大家分享如何养号的真实操作攻略&#xff01; 一、为什么要养号 &#xff08;1&#xff09;提高系统推荐精准度 系统不了解新账户人设…