深度学习基础--目标检测常见算法简介(R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN、SSD、YOLO)

news2025/5/10 8:40:17

在这里插入图片描述

博主简介:努力学习的22级本科生一枚 🌟​;探索AI算法,C++,go语言的世界;在迷茫中寻找光芒​🌸​
博客主页:羊小猪~~-CSDN博客
内容简介:常见目标检测算法简介​😕​​😕​​😕​​😕​​😕​​😕​​😕​​😕​​😕​
往期内容:深度学习基础–目标检测入门简介-CSDN博客

文章目录

  • 1、tow-stage
    • R-CNN
    • Fast R-CNN
    • Faster R-CNN
    • Mask R-CNN
  • 2、one-stage
    • 单发多宽检测(SSD)
    • YOLO
  • 3、参考资料

1、tow-stage

R-CNN

最早的目标检测模型。

在这里插入图片描述

📖 简介

传统目标检测的思路,采用提取框,对每个提取框进行特征提取、图像分类、非极大值抑制四个步骤进行检测。

对于一张图片来说,R-CNN首先会基于启发式搜索算法生成大约2000个候选区域,然后每个区域固定大小,并且传入一个CNN模型中,最后得到一个特征向量,这个向量会传到一个SVM模型中,进行类别计算,进行分类,并且,最后运用 了一个边界框回归模型,通过边框回归模型对框的准确位置进行修正。

📚 解释一些名词

  • 启发式搜索,这个算很难,也包含很多算法,简单理解他的作用是在图片上选取物体可能出现的区域框(锚框);
  • 非极大值抑制:是一种在目标检测中去除冗余边界框的后处理算法,通过保留局部得分最高的检测框并抑制与其重叠度(IoU)超过阈值的低得分框,实现检测结果的唯一性与精确性;这个在上一篇博客中已经简单介绍了(深度学习基础–目标检测入门简介-CSDN博客),就是去除多余的锚框;

🐾 算法步骤

  1. 使用启发式搜索来选择锚框;
  2. 使用预训练模型来对每个锚框抽取特征;
  3. 训练一个SVM来对类别进行分类;
  4. 训练一个线性回归模型来预测边缘框的偏移,这一步就是将锚框来预测他真实的位置(边缘框)偏移;

上面简介中提到每个区域固定大小,但是实际上用启发式算法进行搜索的时候,每次选择的锚框大小是不同的,将不同大小的锚框变成一个统一形状的算法就是Rol pooling;

💁‍♂ Rol pooling,也称感兴趣域池化层,作用是将大小不一的锚框统一形状。

📘 原理

给定一个锚框,先将其均匀地分割成 n * m 块,然后输出每块里的最大值,这样的话,不管锚框有多大,只要给定了 n 和 m 的值,总是输出 nm 个值,达到统一形状的作用。

在这里插入图片描述


缺点:虽然有效提取了特征,但是速度非常慢,因为在第二个步骤用训练好的模型对每个锚框进行特征提取的时候,计算非常大(因为启发式算法大约生成2000个框)。

Fast R-CNN

🐤R-CNN:

  • 对每个锚框分别进行特征提取;
  • R-CNN是前向传播的,而且比如说对一张图片划分了2000张锚框,那么在进行特征提取的时候通常会有重叠部分,故导致了从重复计算。Fast R-CNN就是解决这个问题的;

🥅 Fast R-CNN网络图

在这里插入图片描述

🚂 原理简介,与R-CNN对比着看:

  • 首先由两进行两部计算,分别是锚框生成、图片特征提取,对应着上图中两条分支:

    • 锚框生成:和R-CNN一样;

    • 特征提取(CNN):对于一张图片,首先使用CNN对整张图片进行特征提取;

  • Rol pooling这里有两步:

    • 1️⃣映射:锚框(selective search)按照一定比例映射到特征提取(CNN)的输出上;
    • 2️⃣ Rol pooing:这一步和R-CNN一样,统一锚框大小。
  • 之后采用一个全连接层进行分类(R-CNN用的是SVM),输出类别。


🚅比R-CNN快的原因:最核心的原因就是只需要对整体图片进行一次特征提取就行了,不需要分别对每个锚框进行特征提取。

Faster R-CNN

这个算法的改进是提出来RPN(区域建议网络)来代替selective search

在这里插入图片描述

🔖 RPN简介

这个网络学习的时候理解起来还是有难度的😢

🎡 作用:生成大量很差的锚框,然后进行预测,最终输出比较好的锚框供后面网络使用(预测效果好的会进入Rol Pooing);

😿 原理简介

  • CNN特征提取后,再次运用一次卷积操作,然后用启发式算法搜索来初始化锚框;

  • 然后判断锚框是否包含物体,这里分为两步:

    • 1️⃣ 分类:RPN对每个锚框进行分类,判断他是否包含目标物体,这里输出的是一个概率值;
    • 2️⃣ 回归:调整锚框位置和大小;
  • 最后采用NMS对锚框进行筛选。


🉐 特点:精度高,但是计算量巨大,慢。

Mask R-CNN

这个算法是对Faster R-CNN基础上修改而来,他的作用是:解决传统目标检测,即只输出边界框无法提供像素级分割信息的问题。

像素级分割:生成每个物体的精确轮廓掩码.

在这里插入图片描述

从图像看的话,对比Fast R-CNN,有两个不同:

  • 用Rol align代替Rol pooling;
  • 在Rol align上新增一个分支;

这个难度我学的时候也很蒙,感觉好难😢

在学这个网络前,先学一下什么叫做二值掩码

  • 二值掩码是一种由0和1(或255)组成的二值图像,用于标记原始图像中需要关注或操作的区域。上图的右下部分图。

🔬 难度大,梳理一下网络:

  1. 特征提取
    • 输入图像通过卷积神经网络生成特征图。
  2. 区域建议网络(RPN)
    • 在特征图上生成锚框,通过分类和回归生成候选区域,这部分和Fast R-CNN一样
  3. RoI Align
    • 将候选区域映射到特征图上,使用双线性插值提取固定大小的特征(如 7×77×7 或 14×1414×14),与Rol pooling不同的是映射算法不同。
  4. 分类与回归分支
    • 对每个 RoI 进行分类和边界框修正,这部分和Fast R-CNN一样
  5. 掩码分支
    • 对每个 RoI 生成二值掩码,最终通过阈值化得到像素级分割结果,先理解为对不同物体分别进行不同颜色可视化即可😭,由于是像素级别的,故大概轮廓也能显示出来。
  6. 全连接层
    • 进行图片分类。

2、one-stage

单发多宽检测(SSD)

👀 先看网络结构:

在这里插入图片描述

初看网络结构,可以观察到他也是前向传播的,而且在传播的时候一直进行预测。

👀再看

在这里插入图片描述

👓 特点

  • 对给定的锚框直接进行预测,不需要进行两个阶段,这也是为什么比Faster R-CNN快的原因;

  • SSD 通过做不同分辨率下的预测来提升最终的效果,越到底层的 feature map,就越大,越往上,feature map 越少,因此底层更加有利于小物体的检测,而上层更有利于大物体的检测

😢 缺点

  • 速度快,但是精度不好。

YOLO

用最多的模型

在这里插入图片描述

📚 解释

  • 尽量让锚框不重叠—–》将图片均匀分成S X S个锚框。

  • 每个锚框预测B个边缘框,这个意思是一个锚框可能有多个物体,故在他身边预测多个锚框进行特征提取、分类,如上图中的蓝色圆圈。

YOLO有很多版本,也非常值得学习的。

3、参考资料

  • 【44 物体检测算法:R-CNN,SSD,YOLO【动手学深度学习v2】】https://www.bilibili.com/video/BV1Db4y1C71g?vd_source=1fd424333dd77a7d3e2e741f7d6fd4ee
  • R-CNN_百度百科
  • 李沐动手学深度学习V2-目标检测SSD_深度学习与目标检测 第2版第二版-CSDN博客

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

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

相关文章

LINUX CFS算法解析

文章目录 1. Linux调度器的发展历程2. CFS设计思想3. CFS核心数据结构3.1 调度实体(sched_entity)3.2 CFS运行队列(cfs_rq)3.3 任务结构体中的调度相关字段 4. 优先级与权重4.1 优先级范围4.2 权重映射表 (prio_to_weight[])优先级计算4.3.1. static_prio (静态优先级)4.3.2. n…

软考-软件设计师中级备考 14、刷题 算法

一、考点归纳 1)排序 2、查找 3、复杂度 4、经典问题 0 - 1 背包动态规划0 - 1 背包问题具有最优子结构性质和重叠子问题性质。通过动态规划可以利用一个二维数组来记录子问题的解,避免重复计算,从而高效地求解出背包能装下的最大价值。分…

Baklib实战企业内容与中台管理差异解析

企业内容管理中台本质差异 企业内容管理系统(CMS)与内容中台的核心差异在于战略定位与技术路径的本质性区隔。传统CMS聚焦于内容存储与审批流程的线性管理,而内容中台则构建起全域数据服务中枢,通过API接口实现跨系统内容资产调用…

通用外设驱动模型(四步法)

举例:GPIO配置步骤 1、使能时钟 __HAL_RCC_GPIOx_CLK_ENABLE()2、设置工作模式 HAL_GPIO_Init()3、设置输出状态(可选) HAL_GPIO_WritePin() HAL_GPIO_TogglePin()4、读取输入状态(可选) HAL_GPIO_ReadPin()模块…

IoT无线组网模块,万物互联的底层通信基石

随着物联网(IoT)技术在“快车道”上持续飞驰,一场“交互革命”正在人们的日常出行与工作学习等生活场景中加速爆发。从智能家居到智慧城市,从智慧交通到工业自动化,物联网(IoT)技术凭借着万物互…

learning ray之ray强化学习/超参调优和数据处理

之前我们掌握了Ray Core的基本编程,我们已经学会了如何使用Ray API。现在,让我们将这些知识应用到一个更实际的场景中——构建一个强化学习项目,并且利用Ray来加速它。 我们的目标是,通过Ray的任务和Actor,将一个简单…

【Linux】深入拆解Ext文件系统:从磁盘物理结构到Linux文件管理

目录 1、理解硬件 (1)磁盘 (2)磁盘的物理结构 (3)磁盘的存储结构 (4)磁盘的逻辑结构 (5)CHS && LBA地址 2、引入文件系统 (1&…

基于 Ubuntu 24.04 部署 WebDAV

无域名,HTTP 1. 简介 WebDAV(Web Distributed Authoring and Versioning)是一种基于 HTTP 的协议,允许用户通过网络直接编辑和管理服务器上的文件。本教程介绍如何在 Ubuntu 24.04 上使用 Apache2 搭建 WebDAV 服务,无…

tauri-plugin-store 这个插件将数据存在本地电脑哪个位置

tauri-plugin-store 插件用于在 Tauri 应用中以键值对形式持久化存储数据。它将数据存储在用户本地电脑的一个 JSON 文件中,具体路径取决于操作系统,并且通常位于操作系统的应用数据目录中。 默认存储位置 以默认配置为例(使用 default sto…

一场陟遐自迩的 SwiftUI + CoreData 性能优化之旅(下)

概述 自从 SwiftUI 诞生那天起,我们秃头码农们就仿佛打开了一个全新的撸码世界,再辅以 CoreData 框架的鼎力相助,打造一款持久存储支持的 App 就像探囊取物般的 Easy。 话虽如此,不过 CoreData 虽好,稍不留神也可能会…

数字人驱动/动画方向最新顶会期刊论文收集整理 | AAAI 2025

会议官方论文列表:https://ojs.aaai.org/index.php/AAAI/issue/view/624 以下论文部分会开源代码,若开源,会在论文原文的摘要下方给出链接。 语音驱动头部动画/其他 EchoMimic: Lifelike Audio-Driven Portrait Animations through Editabl…

数据结构 集合类与复杂度

文章目录 📕1. 集合类📕2. 时间复杂度✏️2.1 时间复杂度✏️2.2 大O渐进表示法✏️2.3 常见的时间复杂度量级✏️2.4 常见时间复杂度计算举例 📕3. 空间复杂度 📕1. 集合类 Java 集合框架(Java Collection Framework…

Python学习笔记--Django的安装和简单使用(一)

一.简介 Django 是一个用于构建 Web 应用程序的高级 Python Web 框架。Django 提供了一套强大的工具和约定,使得开发者能够快速构建功能齐全且易于维护的网站。Django 遵守 BSD 版权,初次发布于 2005 年 7 月, 并于 2008 年 9 月发布了第一个正式版本 1…

SecureCRT网络穿透/代理

场景 公司的办公VPN软件只有Windows系统版本,没有Macos系统版本,而日常开发过程中需要先登录VPN后,然后才能登录应用服务器。 目的:Macos系统在使用SecureCRT时,登录服务器,需要走Parallels Desktop进行网络…

视频添加字幕脚本分享

脚本简介 这是一个给视频添加字幕的脚本,可以方便的在指定的位置给视频添加不同大小、字体、颜色的文本字幕,添加方式可以直接修改脚本中的文本信息,或者可以提前编辑好.srt字幕文件。脚本执行环境:windowsmingwffmpeg。本方法仅…

OrangePi Zero 3学习笔记(Android篇)4 - eudev编译(获取libudev.so)

目录 1. Ubuntu中编译 2. NDK环境配置 3. 编译 4. 安装 这部分主要是为了得到libudev(因为原来的libudev已经不更新了),eudev的下载地址如下: https://github.com/gentoo/eudev 相应的代码最好是在Ubuntu中先编译通过&#…

华为昇腾910B通过vllm部署InternVL3-8B教程

前言 本文主要借鉴:VLLM部署deepseek,结合自身进行整理 下载模型 from modelscope import snapshot_download model_dir snapshot_download(OpenGVLab/InternVL3-8B, local_dir"xxx/OpenGVLab/InternVL2_5-1B")环境配置 auto-dl上选择单卡…

upload-labs靶场通关详解:第三关

一、分析源代码 代码注释如下&#xff1a; <?php // 初始化上传状态和消息变量 $is_upload false; $msg null;// 检查是否通过POST方式提交了表单 if (isset($_POST[submit])) {// 检查上传目录是否存在if (file_exists(UPLOAD_PATH)) {// 定义禁止上传的文件扩展名列表…

星光云720全景VR系统升级版,720全景,360全景,vr全景,720vr全景

星光云720全景VR系统升级版&#xff0c;720全景&#xff0c;360全景&#xff0c;vr全景&#xff0c;720vr全景 星光云全景系统 系统体验地址 https://720.ailemon.cc 星光云全景新版体验地址 全景系统功能简介 基础设置&#xff1a;作品信息&#xff0c;加载样式&#xff…

第十六节:图像形态学操作-顶帽与黑帽变换

一、引言&#xff1a;形态学操作的视觉魔法 在数字图像处理领域&#xff0c;形态学操作犹如一柄精巧的解剖刀&#xff0c;能够精准地提取图像特征、消除噪声干扰&#xff0c;并增强关键细节。OpenCV作为计算机视觉的瑞士军刀&#xff0c;提供了一套完整的形态学处理工具。在掌…