YOLO系列论文综述(从YOLOv1到YOLOv11)【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】
目录
- 1 前言
- 2 YOLO在不同领域的应用
- 3 物体检测指标和NMS
- 3.1 mAP和IOU
- 3.2 mAP计算流程
- 3.2.1 VOC 数据集
- 3.2.2 微软 COCO 数据集
- 3.3 NMS
1 前言
最近在做目标检测模型相关的优化,重新看了一些新的论文,发现了几篇写得比较好的YOLO系列论文综述,所以写了这篇博文,总结一下YOLO从v1到v11的模型架构、优化、优势和局限性。(学术界太卷了,一年更新三版,到今年九月份就已经更新到v11了,印象中两年前还是YOLOv5的天下。)
参考论文:
- A COMPREHENSIVE REVIEW OF YOLO ARCHITECTURES IN COMPUTER VISION: FROM YOLOV1 TO YOLOV8 AND YOLO-NAS
- YOLOV1 TO YOLOV10: A COMPREHENSIVE REVIEW OF YOLO VARIANTS AND THEIR APPLICATION IN THE AGRICULTURAL
DOMAIN- YOLOV10 TO ITS GENESIS: A DECADAL AND COMPREHENSIVE REVIEW OF THE YOU ONLY LOOK ONCE (YOLO) SERIES
目标检测的发展经历了五个比较大的阶段:传统算法、Two-stage、One-stage、Anchor-free、Transformer。
在深度学习出现之前,主要是依赖于手工设计的特征与机器学习分类器的结合,包括相关滤波器、滑动窗口法和Viola-Jones检测器等,这些方法所涉及的特征提取技术包括Gabor特征、梯度方向直方图(Histogram of Oriented Gradients, HOG)、局部二值模式(Local Binary Patterns, LBP)和哈尔特征(Haar-like features)。这些检测器最常用的分类方法包括随机森林、支持向量机、统计分类器(例如贝叶斯分类器和Adaboost)以及多层感知器(MLP)等。
将卷积神经网络(Convolutional Neural Networks, CNN)引入物体检测之后,真正实现了自动化的特征提取和端到端的学习。
CNN的特点包括:
- 层次化的特征学习:CNN在最开始几层可以学习一些低维的特征(如边缘、纹理),在深层可以学习一些高维的特征(如物体部件、形状);
- 空间不变性:卷积层使得CNN能够识别图像中不论位置如何的对象,从而增强了检测的鲁棒性;
- 可扩展性和泛化能力:CNN易于扩展,便于处理更大的数据集和更复杂的模型,在广泛的任务和应用环境中提高性能和鲁棒性。
下图展示了物体检测算法的主要发展历史。
如果直接通过滑动窗口的方法将CNN应用到物体检测中,这种暴力搜索的方法计算成本非常高,并且效率很低,难以做到实时处理。
2013年,Ross Girshick等人提出了R-CNN (Region-based CNN) 架构来解决这些挑战。R-CNN利用选择性搜索算法生成大约2000个区域proposals,然后通过CNN处理这些区域来提取特征。Fast R-CNN改进了这一过程,通过在单次传递中集成区域proposals特征提取和分类来提高效率。Faster R-CNN进一步优化了这种方法,引入了Region Proposal Networks(RPNs)进行端到端训练,去掉了选择性搜索的方法。
“You Only Look Once”(YOLO)物体检测算法是由Joseph Redmon等人在2015年首次提出,用一个单一的神经网络将region proposal和分类结合起来,极大地减少了计算时间,使得实时物体检测开启了新的里程碑。YOLO将图像分割成很多个网格,每个网格直接预测边界框和类别概率,实现了端到端的学习。
2 YOLO在不同领域的应用
YOLO的实时物体检测能力在自动驾驶车辆系统中具有不可估量的价值,能够快速识别和跟踪各种物体,如车辆、行人、自行车和其他障碍物。这些功能已被应用于多个领域,包括用于监控、体育分析和视频动作识别。
在农业方面,YOLO被用来检测和分类作物、害虫和疾病,辅助精准农业技术并实现农作过程自动化。它们也被调整用于生物识别、安全以及面部识别系统中的人脸检测任务。
在医学领域,YOLO已被用于癌症检测、皮肤分割和药片识别,提高了诊断准确性和治疗过程的效率。
在遥感领域,它被用于卫星和航空影像中的物体检测与分类,支持土地利用制图、城市规划和环境监测。
安全系统整合了YOLO模型进行视频流的实时监控和分析,允许快速检测可疑活动、社交距离保持及口罩佩戴检测。这些模型还被应用于表面检查以检测缺陷和异常情况,从而加强制造和生产过程中的质量控制。
在交通应用中,YOLO被用于车牌检测和交通标志识别等任务,为智能交通系统和交通管理解决方案的发展做出了贡献。它们还被用于野生动物检测和监测,以识别濒危物种,促进生物多样性保护和生态系统管理。
最后,YOLO在机器人应用和无人机物体检测中得到了广泛应用。
下图展示了Scopus中标题含有“YOLO”一词的所有论文的文献计量网络可视化,并通过物体检测关键词进行了筛选。
3 物体检测指标和NMS
3.1 mAP和IOU
平均精度(Average Precision, AP),也称为平均平均精度(Mean Average Precision, mAP),衡量所有类别物体的平均精度,是评估物体检测模型性能的常用指标。COCO数据集对AP和mAP不做区分。下文中,我们提到的AP和mAP是等价的。
在YOLOv1和YOLOv2中,用于训练和基准测试的数据集是PASCAL VOC 2007和VOC 2012,但从YOLOv3开始,使用的是COCO(Common Objects in Context)数据集。
mAP指标是基于精确度-召回率指标,处理多个物体类别,并通过交并比(IoU)定义正预测。
精确度Precision:衡量模型正预测的准确性,简单理解就是模型输出的检测框里,检测正确的框的比例。
召回率Recall:衡量模型正确识别的正例的比例,换而言之,就是有多少正例被正常识别出来。
通常,精确度和召回率之间会互相影响,例如:增加检测到的对象数量(更高的召回率)可能导致更多的假阳性(更低的精确度)。为了综合考虑精确度和召回率,需要用mAP来衡量,mAP指标结合了不同置信度阈值下的精确度-召回率曲线,表示的是精确度-召回率曲线下的面积。
通常一个模型会检测多个类别,mAP指标通过分别计算每个类别的平均精度(AP),然后取所有类别AP的均值(这也是为什么它被称为平均平均精度的原因),这种方法能更全面地评估模型的整体性能。
交并比(Intersection over Union, IoU):物体检测旨在通过预测边界框准确地定位图像中的物体,mAP指标通过引入交并比(IoU)来评估预测边界框的质量。IoU是指预测边界框与真实边界框的交集面积与并集面积之比,表示了真实边界框与预测边界框之间的重叠程度。COCO基准采用多个IoU阈值来评估模型在不同定位精度水平上的表现。
3.2 mAP计算流程
在VOC和COCO数据集中,AP的计算方式有所不同。
3.2.1 VOC 数据集
该数据集包括20个物体类别,mAP计算步骤:
- 对于每个类别,通过改变模型预测的置信度阈值来计算精确度-召回率曲线。
- 使用精确度-召回率曲线上11点插值的方法来计算每个类别的平均精度(AP)。
- 通过取所有20个类别的AP均值来计算最终的平均精度(AP)。
3.2.2 微软 COCO 数据集
该数据集包含80个物体类别,并使用更复杂的方法来计算AP。与VOC使用11点插值不同,它使用101点插值,即从0到1以0.01为增量计算101个召回率阈值下的精确度。此外,AP是通过对多个IoU值而不是仅一个IoU值求平均得到的,除了一个常用的AP指标称为AP50,它是单个IoU阈值0.5时的AP。COCO中计算AP的步骤如下:
- 对于每个类别,通过改变模型预测的置信度阈值来计算精确度-召回率曲线。
- 使用101个召回率阈值来计算每个类别的平均精度(AP)。
- 在不同的交并比(IoU)阈值下计算AP,通常是从0.5到0.95,步长为0.05。较高的IoU阈值要求更准确的预测才能被视为TP。
- 对于每个IoU阈值,取所有80个类别的AP均值。
- 最后,通过对每个IoU阈值下计算出的AP值求平均来计算整体AP。
AP计算方法的不同使得直接比较两个数据集上的物体检测模型性能变得困难。目前的标准倾向于使用COCO AP,因为它对模型在不同IoU阈值下的表现进行了更细致的评估。
3.3 NMS
非极大值抑制(Non-Maximum Suppression, NMS)是一种在物体检测算法中使用的后处理技术,用于减少重叠边界框的数量并提高整体检测质量。物体检测算法通常会在同一个物体周围生成多个具有不同置信度分数的边界框,NMS通过过滤掉冗余和无关的边界框,只保留最准确的那些。
非极大值抑制(NMS)的工作原理:
- 初始化:首先获取所有预测的边界框及其对应的置信度分数。
- 排序:根据置信度分数对这些边界框进行降序排列。
选择最高分框:选取置信度最高的边界框作为当前处理的对象。 - 计算IoU:对于剩余的所有边界框,计算它们与当前最高分框之间的交并比(IoU)。
- 抑制重叠框:如果某个边界框与当前最高分框的IoU超过了预设阈值(例如0.5),则认为该边界框是冗余的,并将其从列表中移除。
- 重复步骤3-5:继续选取下一个置信度最高的边界框,并重复上述过程,直到所有边界框都被处理完毕。
通过这种方式,NMS能够有效地去除多余的重叠边界框,从而简化结果并提高检测准确性。这种方法对于确保每个物体只有一个最佳匹配的边界框特别有用,这对于后续的应用如跟踪或识别非常关键。
从下一篇博文开始,我们逐一介绍每一版本YOLO的模型架构、改进点、优势和局限性。
相关文章:
YOLO系列论文综述(从YOLOv1到YOLOv11)【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】
目录 1 前言2 YOLO在不同领域的应用3 物体检测指标和NMS3.1 mAP和IOU3.2 mAP计算流程3.2.1 VOC 数据集3.2.2 微软 COCO 数据集 3.3 NMS 1 前言 最近在做目标检测模型相关的优化,重新看了一些新的论文,发现了几篇写得比较好的YOLO系列论文综述࿰…...
数据结构--Map和Set
目录 一.二叉搜索树1.1 概念1.2 二叉搜索树的简单实现 二.Map2.1 概念2.2 Map常用方法2.3 Map使用注意点2.4 TreeMap和HashMap的区别2.5 HashMap底层知识点 三.Set3.1 概念3.2 Set常用方法3.3 Set使用注意点3.4 TreeSet与HashSet的区别 四.哈希表4.1 概念4.2 哈希冲突与避免4.3…...
计算机操作系统——进程控制(Linux)
进程控制 进程创建fork()函数fork() 的基本功能fork() 的基本语法fork() 的工作原理fork() 的典型使用示例fork() 的常见问题fork() 和 exec() 结合使用总结 进程终止与$进程终止的本质进程终止的情况正常退出(Exit)由于信号终止非…...
【前端】ES6基础
1.开发工具 vscode地址 :https://code.visualstudio.com/download, 下载对应系统的版本windows一般都是64位的 安装可以自选目录,也可以使用默认目录 插件: 输入 Chinese,中文插件 安装: open in browser,直接右键文件…...
【排序算法 python实现】
排序算法 python实现 / 默写 # 汉诺塔 import copy import randomdef hanuo(n, a, b, c):if n 1:print(f{a} --> {c})returnhanuo(n - 1, a, c, b)print(f{a} --> {c})hanuo(n - 1, b, a, c)hanuo(3, A, B, C)# 冒泡排序 def bubble_sort(arr):n len(arr)for i in ran…...
Java图书管理系统(简易保姆级)
前面学习了这么多知识,为了巩固之前的知识,我们就要写一个图书管理系统来帮助大家复习,让大家的知识融会贯通~~~ 话不多说,直接开始今天的内容~ 首先呢,我们要有一个大体的思路: 实现效果思路有两种情况&a…...
嵌入式硬件设计:从概念到实现的全流程
嵌入式硬件设计是现代电子技术中一个至关重要的领域,涉及从硬件架构设计到硬件调试的各个方面。它为我们日常生活中的各类智能设备、家电、工业控制系统等提供了强大的支持。本文将介绍嵌入式硬件设计的基本流程、关键技术、常用工具以及常见的挑战和解决方案&#…...
第 4 章 Java 并发包中原子操作类原理剖析
原子变量操作类 AtomicLong 是原子性递增或者递减类,其内部使用 Unsafe 来实现,AtomicLong类也是在 rt.jar 包下面的,AtomicLong 类就是通过 BootStarp 类加载器进行加载的。这里的原子操作类都使用 CAS 非阻塞算法 private static final lon…...
从 0 到 1 掌握部署第一个 Web 应用到 Kubernetes 中
文章目录 前言构建一个 hello world web 应用项目结构项目核心文件启动项目 检查项目是否构建成功 容器化我们的应用编写 Dockerfile构建 docker 镜像推送 docker 镜像仓库 使用 labs.play-with-k8s.com 构建 Kubernetes 集群并部署应用构建 Kubernetes 集群环境编写部署文件 总…...
政安晨【零基础玩转各类开源AI项目】探索Cursor-AI Coder的应用实例
目录 Cusor的主要特点 Cusor实操 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! Cursor 是 Visual Studio Code 的一个分支。这使我们能够…...
CentOS 7 安装部署 KVM
1.关闭虚拟机 打开相关选项 打开虚拟机centos7 连接xshell 测试网络,现在就是没问题的,因为我们要使用网络源 安装 GNOME 桌面环境 安装KVM 模块 安装KVM 调试工具 构建虚拟机的命令行工具 qemu 组件,创建磁盘、启动虚拟机等 输入这条命令,…...
ArcGIS 10.2软件安装包下载及安装教程!
今日资源:ArcGIS 适用系统:WINDOWS 软件介绍:ArcGIS是一款专业的电子地图信息编辑和开发软件,提供一种快速并且使用简单的方式浏览地理信息,无论是2D还是3D的信息。软件内置多种编辑工具,可以轻松的完成地…...
一个专为云原生环境设计的高性能分布式文件系统
大家好,今天给大家分享一款开源创新的分布式 POSIX 文件系统JuiceFS,旨在解决海量云存储与各类应用平台(如大数据、机器学习、人工智能等)之间高效对接的问题。 项目介绍 JuiceFS 是一款面向云原生设计的高性能分布式文件系统&am…...
基于深度学习CNN算法的花卉分类识别系统01--带数据集-pyqt5UI界面-全套源码
文章目录 基于深度学习算法的花卉分类识别系统一、项目摘要二、项目运行效果三、项目文件介绍四、项目环境配置1、项目环境库2、环境配置视频教程 五、项目系统架构六、项目构建流程1、数据集2、算法网络Mobilenet3、网络模型训练4、训练好的模型预测5、UI界面设计-pyqt56、项目…...
3174、清除数字
3174、[简单] 清除数字 1、题目描述 给你一个字符串 s 。你的任务是重复以下操作删除 所有 数字字符: 删除 第一个数字字符 以及它左边 最近 的 非数字 字符。 请你返回删除所有数字字符以后剩下的字符串。 2、解题思路 遍历字符串: 我们需要逐个遍…...
C++ 优先算法 —— 无重复字符的最长子串(滑动窗口)
目录 题目: 无重复字符的最长子串 1. 题目解析 2. 算法原理 Ⅰ. 暴力枚举 Ⅱ. 滑动窗口(同向双指针) 3. 代码实现 Ⅰ. 暴力枚举 Ⅱ. 滑动窗口 题目: 无重复字符的最长子串 1. 题目解析 题目截图: 此题所说的…...
ADS学习笔记 6. 射频发射机设计
基于ADS2023 update2 更多ADS学习笔记:ADS学习笔记 1. 功率放大器设计ADS学习笔记 2. 低噪声放大器设计ADS学习笔记 3. 功分器设计ADS学习笔记 4. 微带分支定向耦合器设计ADS学习笔记 5. 微带天线设计 -1、射频发射机性能指标 在射频电路和系统中,发送…...
上海乐鑫科技一级代理商飞睿科技,ESP32-C61高性价比WiFi6芯片高性能、大容量
在当今快速发展的物联网市场中,无线连接技术的不断进步对智能设备的性能和能效提出了更高要求。为了满足这一需求,乐鑫科技推出了ESP32-C61——一款高性价比的Wi-Fi 6芯片,旨在为用户设备提供更出色的物联网性能,并满足智能设备连…...
QT QRadioButton控件 全面详解
本系列文章全面的介绍了QT中的57种控件的使用方法以及示例,包括 Button(PushButton、toolButton、radioButton、checkBox、commandLinkButton、buttonBox)、Layouts(verticalLayout、horizontalLayout、gridLayout、formLayout)、Spacers(verticalSpacer、horizontalSpacer)、…...
51单片机从入门到精通:理论与实践指南(一)
单片机在智能控制领域的应用已非常普遍,发展也很迅猛,学习和使用单片机的人员越来越多。虽然新型微控制器在不断推出,但51单片机价格低廉、易学易用、性能成熟,在家电和工业控制中有一定的应用,而且学好了51单片机&…...
零基础3分钟快速掌握 ——Linux【终端操作】及【常用指令】Ubuntu
1.为啥使用Linux做嵌入式开发 能广泛支持硬件 内核比较高效稳定 原码开放、软件丰富 能够完善网络通信与文件管理机制 优秀的开发工具 2.什么是Ubuntu 是一个以桌面应用为主的Linux的操作系统, 内核是Linux操作系统, 具有Ubuntu特色的可视…...
C#中面试的常见问题007
1.在EF中实现一个实体对应多个表 1. 表拆分(Table Splitting) 表拆分是指将一个实体映射到两个或多个表中的行。这通常发生在实体的属性分布在不同的表中,但这些表通过外键关联到同一个主表。在EF Core中,可以通过Fluent API来配…...
人工智能——大语言模型
5. 大语言模型 5.1. 语言模型历史 20世纪90年代以前的语言模型都是基于语法分析这种方法,效果一直不佳。到了20世纪90年代,采用统计学方法分析语言,取得了重大进展。但是在庞大而复杂的语言信息上,基于传统统计的因为计算量巨大…...
nodejs第三方库sharp对图片的操作生成新图片、压缩、添加文字水印及图片水印等
Sharp是一个基于libvips的高性能Node.js图像处理库,它提供了广泛的功能,包括调整大小、裁剪、旋转、格式转换等。Sharp可以处理多种图像格式,并且能够高效地转换图像格式。 相关说明及用法看:https://sharp.nodejs.cn/ 安装&#…...
力扣第 67 题 “二进制求和”
题目描述 给你两个二进制字符串 a 和 b,以二进制字符串的形式返回它们的和。 示例 1: 输入: a "11", b "1" 输出: "100"示例 2: 输入: a "1010", b "1011" 输出: "10101"提示: 每个字符串仅由…...
Spring Boot优雅读取配置信息 @EnableConfigurationProperties
很多时候我们需要将一些常用的配置信息比如oss等相关配置信息放到配置文件中。常用的有以下几种,相信大家比较熟悉: 1、Value(“${property}”) 读取比较简单的配置信息: 2、ConfigurationProperties(prefix “property”)读取配置信息并与 …...
鸿蒙多线程开发——Sendable对象的序列化与冻结操作
1、Sendable对象的序列化与反序列化 Sendable对象的简单介绍参考文章:鸿蒙多线程开发——线程间数据通信对象03(sendable) 与JSON对象的序列化和反序列化类似,Sendable对象的序列化和反序列化是通过ArkTs提供的ASON工具来完成。 与JSON类似࿰…...
nodepad配置c/c++ cmd快速打开创建项目文件
前提:下载MinGw,并且配置环境变量 点击阅读次篇文章配置MinGw 无论是哪个编译器,执行c文件都是经历以下步骤: 编译文件生成exe文件执行该exe文件 我们先手动完成这两部 手动编译文件使用指令 gcc {你的c文件} -o {生成文件名}生成exe文件 第二步运行exe直接点击该文…...
【C++】读取数量不定的输入数据
读取数量不定的输入数据 似乎是一个很实用的东西? 问题: 我们如何对用户输入的一组数(事先不知道具体有多少个数)求和? 这需要不断读取数据直至没有新的输入为止。(所以我们的代码就是这样设计的&#x…...
ESC字符背后的故事(27 <> 033 | x1B ?)
ANSI不可见字符转义,正确的理解让记忆和书写变得丝滑惬意。 (笔记模板由python脚本于2024年11月26日 15:05:33创建,本篇笔记适合python 基础扎实的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free…...
武进网站建设信息/信息流优化师是什么
2019独角兽企业重金招聘Python工程师标准>>> 1) 同时运行多个应用 Android 终于正式地支持分屏模式,通过分屏模式可以同时打开两个应用,这个功能在平板上使用起来特别方便,当然在手机上也支持这个功能。 点击概览按钮(方形)打开多…...
电子商务网站软件建设的/手机百度下载免费安装
据说某些公司需要员工们不仅要写好程序,而且要写好API,对于一些编程大神来说,写API是一件麻烦的事情, 其实Eclipse能够轻松地生成API来忽悠人,尤其是你讨厌的根本不会写代码的上司。 当然,这些API根本就不…...
wordpress http https/网站关键词优化公司哪家好
题目链接 \(Description\) 求在\(2n\)个点的完全二分图(两边各有\(n\)个点)上确定两组匹配,使得两个匹配没有交集的方案数。\(n\leq10^7\)。 \(Solution\) 不考虑限制,令\(f_i\)表示在\(2i\)个点的二分图上任意确定一组匹配的方案…...
精品网站建/广州优化疫情防控举措
本节书摘来自异步社区《面向对象设计实践指南:Ruby语言描述》一书中的第1章,第1.2节设计工具,作者【美】Sandi Metz,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 设计工具面向对象设计实践指南:Ruby语言…...
通辽网站建设/友情链接怎么弄
通过ftp通道将数据传出来。上传1.xml <!DOCTYPE xmlrootname [<!ENTITY % aaa SYSTEM "http://192.168.172.128:1234/ext.dtd"><!ENTITY % bbb SYSTEM "file:///E:///1.txt">%aaa;%ccc;%ddd;]> ext.dtd内容如下 <!ENTITY % ccc "…...
国外wordpress cms主题/人民日报评网络暴力
1.计算机病毒的结构主要包括()模块。 A.传染 B.触发 C.破坏 D.复制 2.与专用会计核算软件相比较,通用会计核算软件的优点有()。 A.成本相对较低 B.维护量小且维护有保障 C.开发者决定系统的扩充与修改 D.软件开发水…...