【目标检测】对YOLO系列发展的简单理解

news2025/4/23 6:07:40

目录

  • 1.YOLOv1
  • 2.YOLOv2
  • 3.YOLOv3
  • 4.YOLOv4
  • 5.YOLOv6
  • 6.YOLOv7
  • 7.YOLOv9

YOLO系列文章汇总:
【论文#目标检测】You Only Look Once: Unified, Real-Time Object Detection
【论文#目标检测】YOLO9000: Better, Faster, Stronger
【论文#目标检测】YOLOv3: An Incremental Improvement
【论文#目标检测】YOLOv4: Optimal Speed and Accuracy of Object Detection
【论文#目标检测】YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications
【论文#目标检测】YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

在阅读了YOLO系列的文章之后,简单梳理一下其发展的路径和规划。从深度图像处理的基本思想看,目标检测大致的流程是:输入图像–>提取图像特征–>预测图像中物体的类别–>根据标签计算损失–>更新网络参数,循环若干个轮回,最终获得一个好的输出结果。与传统的图像处理对比,深度图像处理将处理图像的公式展开,分成了很多的层级,逐层处理输入的信息,然后获得计算的结果。

1.YOLOv1

在YOLOv1之前,目标检测通常需要两步:(1)生成候选区域;(2)对候选区域进行分类和回归;YOLO 的突破在于将整个检测任务简化为一个统一的回归问题​​,通过单次前向传播直接输出所有检测结果。

YOLO突破的一个重要思想在于,在图像输入的初期就被划分成为不同的区域,文中将输入图像划分为7x7的区域,如果某个物体的中心点位于该区域内,这个区域就去检测这个物体,这实际上也是候选区域划分的一个思想,只不过是先硬性划分区域,再检测物体。这种划分的一个好处在于,固定划分很快速,比之前的R-CNN生成候选区域要快很多。

每个区域会去预测2个检测框,这2个检测框的初始值(长宽和坐标)是随机的,根据与真实框的差异进行计算损失值,并在网络训练的过程中不断更新,最终获得不错的初始检测框。

从网络结构上看,YOLO的设计参考了GoogleNet,没有很复杂的结构,先进行区域的划分,然后通过多层卷积来实现特征提取,后续接上全连接层,这也是YOLO实现速度非常快的主要原因。

2.YOLOv2

YOLOv2在YOLOv1的基础之上,进行了很多的修改,包括:
(1)修改主干网络为Darknet-19
(2)增加了很多细节,包括多分辨率图像训练、Anchor框、BN层的使用、WordTree数据集处理。其中,多分辨率图像训练能够帮助网络学习到更多的特征;使用anchor框时,预测的是位置坐标而不是偏移量,提升了recall;BN层通过将数据进行归一化,有助于稳定输入数据,反向传播梯度更平滑,降低了网络对初始化权重的敏感性;WordTree的提出使得网络能够同时在分类和检测两个任务上进行训练,这种分层的树状结构,将数据集中不同的标签进行归纳,也使得混合多个数据集成为可能。

在选择anchor框时,还使用了K-means的方式,最终确定选择数量为5的anchor框。在训练多分辨率时,先使用小分辨率(224x224)数据集进行训练,后续使用大分辨率(448x448)进行训练,这样网络就能够处理高分辨率的细节。

使用WordTree思想,使得网络能够识别9000个类别的物体,而不是YOLOv1中的几十个

3.YOLOv3

YOLOv3在特征提取时,使用的主干网络是Darknet-53(YOLOv2是Darknet-19),提升了对复杂场景的特征提取能力。在进行推理输出时,使用了特征金字塔网络(FPN),从不同的尺度获取特征,进行推理,有效的提升了小目标检测的效果。

使用了多标签类别来进行训练,例如标签为“消防员”和“人”,其实是同一个物体。边界框的训练使用了与YOLOv2相同的方式,即预测位置坐标

4.YOLOv4

在YOLOv4中,网络设计分为3个部分:主干网络,颈部网络和头部网络,其中主干网络用于提取特征,颈部网络用于处理或融合特征,头部网络根据特征进行推理输出
(1)主干网络:CSPDarknet53
(2)颈部网络:空间金字塔池化(SPP)[25]、路径聚合网络(PAN)
(3)头部网络:YOLOv3

主干网络使用的是CSPDarknet53,分为5个阶段,每个阶段都会使用卷积层和CSPBlock。CSPBlock将特征分为不同支路,部分支路进行深度特征提取,部分支路直接传递特征,最后融合。通过多个阶段的特征提取和融合,获得了图像的特征。

颈部网络使用了SPP和PAN,SPP的作用是增加感受野,提取不同尺度的特征,然后将这些不同尺度的特征进行融合。PAN网络通过自顶向下和自下向上的方式,提升了不同层级网络的特征融合。

头部网络使用的是与YOLOv3相同的检测头,分为多个尺度,接收颈部网络的输出特征,从3个尺度进行预测,输出预测框,对小目标的预测提升比较明显

另外,在一些训练技巧上面,提出了MixUp、CutMix、Mosaic、模糊(Bluring)数据增强以及标签平滑正则化方法,并进行实验,取得了一定效果的提升

5.YOLOv6

YOLOv6当中一个比较突出的思想是RepBlock的应用,在之前的网络设计当中,CSPBlock使用了不同的分支,整个模块的推理速度受限于最长的那个分支。为了提升推理速度,RepBlock在推理时将不同的分支进行融合,将多条分支的参数融合成为一条卷积线路,显著提升了推理的速度。Rep的含义是参数重卷积(re-parameterize)。rep模块在主干网络、颈部网络都有应用。

6.YOLOv7

YOLOv7提出了E-ELAN模块,作为RepBlock的改进版本,通过分层卷积和跨层连接,增强特征多样性,与RepBlock相同的是,在训练时E-ELAN分为多支路,推理时融合成为单支路。E-ELAN和RepBlock的主要区别是,RepBlock分为多个支路时,有部分支路直接传递,速度比较快,而E-ELAN会将特征分层卷积,后续将这些特征进行concat,所以是跨层连接。

另外,YOLOv7还使用了,统一损失函数​​:联合优化分类(BCE)、回归(CIoU)、置信度(DFL);梯度均衡​​:通过梯度归一化(GradNorm)自动平衡多任务权重;标签分配优化:​​粗匹配阶段​​:用IoU初筛候选框(减少计算量);​​精匹配阶段​​:对候选框联合优化分类+定位损失。

7.YOLOv9

YOLOv9中提出了可编程梯度的思想,通过使用一些辅助分支,来调控主干分支的训练过程。具体来说,使用了辅助可逆分支和多级辅助信息两条分支。辅助可逆分支通过新建一条训练分支,在特征提取过程中将较低层级的特征融合到较高层级的主干特征之中,希望通过加入辅助可逆分支保留比较好的梯度信息;多级辅助信息,在辅助监督的特征金字塔层次与主分支之间插入一个集成网络,利用它来合并来自不同预测头返回的梯度,这样相当于加入了一个缓冲器,避免主干网络当中的金字塔参数被一些特定对象影响。

另外,网络中还提出了GELAN架构,结合了CSPNet和ELAN架构

总体上看,前两代YOLO版本与后续更新的YOLO版本结构上有较大的出入,YOLOv1的思想具有突破性,后续的版本中,逐渐使用了一些当时先进的网络模块,例如Darkent,CSPNet,FPN,RepBlock等等

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

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

相关文章

深度学习训练中的显存溢出问题分析与优化:以UNet图像去噪为例

最近在训练一个基于 Tiny-UNet 的图像去噪模型时,我遇到了经典但棘手的错误: RuntimeError: CUDA out of memory。本文记录了我如何从复现、分析,到逐步优化并成功解决该问题的全过程,希望对深度学习开发者有所借鉴。 训练数据&am…

如何修复WordPress中“您所关注的链接已过期”的错误

几乎每个管理WordPress网站的人都可能遇到过“您关注的链接已过期”的错误,尤其是在上传插件或者主题的时候。本文将详细解释该错误出现的原因以及如何修复,帮助您更好地管理WordPress网站。 为什么会出现“您关注的链接已过期”的错误 为了防止资源被滥…

从零开始搭建Django博客①--正式开始前的准备工作

本文主要在Ubuntu环境上搭建,为便于研究理解,采用SSH连接在虚拟机里的ubuntu-24.04.2-desktop系统搭建的可视化桌面,涉及一些文件操作部分便于通过桌面化进行理解,最后的目标是在本地搭建好系统后,迁移至云服务器并通过…

健身房管理系统(springboot+ssm+vue+mysql)含运行文档

健身房管理系统(springbootssmvuemysql)含运行文档 健身房管理系统是一个全面的解决方案,旨在帮助健身房高效管理其运营。系统提供多种功能模块,包括会员管理、员工管理、会员卡管理、教练信息管理、解聘管理、健身项目管理、指导项目管理、健身器材管理…

Java从入门到“放弃”(精通)之旅——继承与多态⑧

Java从入门到“放弃”(精通)之旅🚀——继承与多态⑧ 一、继承:代码复用的利器 1.1 为什么需要继承? 想象一下我们要描述狗和猫这两种动物。如果不使用继承,代码可能会是这样: // Dog.java pu…

DeepSeek开源引爆AI Agent革命:应用生态迎来“安卓时刻”

开源低成本:AI应用开发进入“全民时代” 2025年初,中国AI领域迎来里程碑事件——DeepSeek开源模型的横空出世,迅速在全球开发者社区掀起热潮。其R1和V3模型以超低API成本(仅为GPT-4o的2%-10%)和本地化部署能力&#x…

使用 LangChain + Higress + Elasticsearch 构建 RAG 应用

RAG(Retrieval Augmented Generation,检索增强生成) 是一种结合了信息检索与生成式大语言模型(LLM)的技术。它的核心思想是:在生成模型输出内容之前,先从外部知识库或数据源中检索相关信息&…

Self-Ask:LLM Agent架构的思考模式 | 智能体推理框架与工具调用实践

作为程序员,我们习惯将复杂问题分解为可管理的子任务,这正是递归和分治算法的核心思想。那么,如何让AI模型也具备这种结构化思考能力?本文深入剖析Self-Ask推理模式的工作原理、实现方法与最佳实践,帮助你构建具有清晰…

安装 vmtools

第2章 安装 vmtools 1.安装 vmtools 的准备工作 1)现在查看是否安装了 gcc ​ 查看是否安装gcc 打开终端 输入 gcc - v 安装 gcc 链接:https://blog.csdn.net/qq_45316173/article/details/122018354?ops_request_misc&request_id&biz_id10…

【论文阅读20】-CNN-Attention-BiGRU-滑坡预测(2025-03)

这篇论文主要探讨了基于深度学习的滑坡位移预测模型,结合了MT-InSAR(多时相合成孔径雷达干涉测量)观测数据,提出了一种具有可解释性的滑坡位移预测方法。 [1] Zhou C, Ye M, Xia Z, et al. An interpretable attention-based deep…

滑动窗口学习

2090. 半径为 k 的子数组平均值 题目 问题分析 给定一个数组 nums 和一个整数 k,需要构建一个新的数组 avgs,其中 avgs[i] 表示以 nums[i] 为中心且半径为 k 的子数组的平均值。如果在 i 前或后不足 k 个元素,则 avgs[i] 的值为 -1。 思路…

# 基于PyTorch的食品图像分类系统:从训练到部署全流程指南

基于PyTorch的食品图像分类系统:从训练到部署全流程指南 本文将详细介绍如何使用PyTorch框架构建一个完整的食品图像分类系统,涵盖数据预处理、模型构建、训练优化以及模型保存与加载的全过程。 1. 系统概述 本系统实现了一个基于卷积神经网络(CNN)的…

v-html 显示富文本内容

返回数据格式&#xff1a; 只有图片名称 显示不出完整路径 解决方法&#xff1a;在接收数据后手动给img格式的拼接vite.config中的服务器地址 页面&#xff1a; <el-button click"">获取信息<el-button><!-- 弹出层 --> <el-dialog v-model&…

【数学建模】孤立森林算法:异常检测的高效利器

孤立森林算法&#xff1a;异常检测的高效利器 文章目录 孤立森林算法&#xff1a;异常检测的高效利器1 引言2 孤立森林算法原理2.1 核心思想2.2 算法流程步骤一&#xff1a;构建孤立树(iTree)步骤二&#xff1a;构建孤立森林(iForest)步骤三&#xff1a;计算异常分数 3 代码实现…

<项目代码>YOLO小船识别<目标检测>

项目代码下载链接 YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0…

Crawl4AI:打破数据孤岛,开启大语言模型的实时智能新时代

当大语言模型遇见数据饥渴症 在人工智能的竞技场上&#xff0c;大语言模型&#xff08;LLMs&#xff09;正以惊人的速度进化&#xff0c;但其认知能力的跃升始终面临一个根本性挑战——如何持续获取新鲜、结构化、高相关性的数据。传统数据供给方式如同输血式营养支持&#xff…

【Spring Boot】MyBatis多表查询的操作:注解和XML实现SQL语句

1.准备工作 1.1创建数据库 &#xff08;1&#xff09;创建数据库&#xff1a; CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;&#xff08;2&#xff09;使用数据库 -- 使⽤数据数据 USE mybatis_test;1.2 创建用户表和实体类 创建用户表 -- 创建表[⽤⼾表…

[Android]豆包爱学v4.5.0小学到研究生 题目Ai解析

拍照解析答案 【应用名称】豆包爱学 【应用版本】4.5.0 【软件大小】95mb 【适用平台】安卓 【应用简介】豆包爱学&#xff0c;一般又称河马爱学教育平台app,河马爱学。 关于学习&#xff0c;你可能也需要一个“豆包爱学”这样的AI伙伴&#xff0c;它将为你提供全方位的学习帮助…

Qt开发:软件崩溃时,如何生成dump文件

文章目录 一、程序崩溃时如何自动生成 Dump 文件二、支持多线程中的异常捕获三、在 DLL 中使用 Dump 捕获四、封装成可复用类五、MiniDumpWriteDump函数详解 一、程序崩溃时如何自动生成 Dump 文件 步骤一&#xff1a;包含必要的头文件 #include <Windows.h> #include …

普罗米修斯Prometheus监控安装(mac)

普罗米修斯是后端数据监控平台&#xff0c;通过Node_exporter/mysql_exporter等收集数据&#xff0c;Grafana将数据用图形的方式展示出来 官网各平台下载 Prometheus安装&#xff08;mac&#xff09; &#xff08;1&#xff09;通过brew安装 brew install prometheus &…