目录

一、常见指标

1、IoU

2、Confidence置信度

3、精准度和召回率

4、mAP

5、NMS方法

6、检测速度

前传耗时

FPS

7、FLOPs

二、YOLOv1

检测流程

1、图像网格划分

2、类别预测

3、输出张量

损失函数

优点

缺点


如题,这篇介绍一下目标检测中常见的一些指标以及简单分析一下 yolov1 的模型结构。

首先得知道什么是目标检测:目标检测(Object Detection)是计算机视觉领域的核心任务之一,旨在识别图像或视频中感兴趣的物体,并确定它们的位置和类别。与图像分类(仅识别物体类别)不同,目标检测需要同时解决分类(whats)和定位(where)两个问题。

一、常见指标

1、IoU

I 代表【交集】Intersection ,U 代表【并集】Union,IoU全称是 Intersection over Union,也就是交并比,举个例子:

 IoU 值越大代表两个框的重叠度就越高

2、Confidence置信度

在 YOLO 中,每个预测框都有一个 置信度分数,表示该框包含目标的概率以及预测框的定位准确性,公式如下:

 因此,一个框的置信度越高说明:模型认为该框中高概率存在目标,以及预测框和真实框的位置高度吻合。

3、精准度和召回率

首先要了解混淆矩阵:

  • TP(真正例):模型正确预测为正类(如“是猫”且真是猫)。

  • FN(假反例):模型错误预测为负类(真实是猫但预测“非猫”)。

  • FP(假正例):模型错误预测为正类(真实非猫但预测“是猫”)。

  • TN(真反例):模型正确预测为负类(真实非猫且预测“非猫”)。

混淆矩阵可以直观展示分类模型的预测结果与真实标签的对比,而由混淆矩阵又衍生出精准度(Precision )和召回率(Recall )。

精准度(Precision )定义:模型预测为正类的样本中,有多少是真正的正类,一句话:检查误检的情况。

公式:
 

召回率(Recall )定义:真正为正类的样本中,有多少被模型正确地预测,一句话:检查漏检的情况。

公式:

4、mAP

首先要知道 AP是什么,AP 是针对单个类别的检测质量评估,综合考量不同置信度阈值下的精准率(Precision)和召回率(Recall),而 mAP(Mean Average Precision) 就是所有类别的AP的平均值,综合评估模型在所有类别上的整体性能。先计算AP才能得到 mAP,举个小例子:

现在假设有8个目标,但是检测出来有20个目标框,目标框的置信度以及正负样本预测结果如下(IoU阈值假设为0.5):

IDConfidenceTPFPIoULabel
10.23010.10
20.76100.81
30.01010.20
40.91100.91
50.13010.20
60.45010.30
70.12100.81
80.03010.20
90.38100.91
100.11010.10
110.03010.20
120.09010.40
130.65010.30
140.07010.20
150.12010.10
160.24100.81
170.10010.10
180.23010.10
190.46010.10
200.08100.91

计算AP步骤:首先将所有目标框按置信度从高到低排序(这里严格来讲是要再重新标记TP 和FP的,但是因为表格的 TP/FP 列严格基于 IoU≥0.5 和 Label 匹配规则所以可以直接使用,然后我直接用 label 为1 表示 TP,为0 表示 FP ):

IDConfidenceLabel
40.911
20.761
130.650
190.460
60.450
90.381
160.241
10.230
180.230
50.130
70.121
150.120
100.110
170.100
120.090
200.081
140.070
80.030
110.030
30.010

然后对前 N 个框计算 Precision 和 Recall,N取 1-20:例如 N 为5时,前五行的 TP=2,FP=3,目标一共有8个,则 Precision = 2/5 = 40%,Recall = 2/8 = 25%,计算表格如下:

前N行ConfidenceLabelRecallPrecision
10.9111/8(0.125)1/1
20.7612/8(0.25)2/2
30.6502/8(0.25)2/3
40.4602/8(0.25)2/4
50.4502/8(0.25)2/5
60.3813/8(0.375)3/6
70.2414/8(0.5)4/7
80.2304/8(0.5)4/8
90.2304/8(0.5)4/9
100.1304/8(0.5)4/10
110.1215/8(0.625)5/11
120.1205/8(0.625)5/12
130.1105/8(0.625)5/13
140.1005/8(0.625)5/14
150.0905/8(0.625)5/15
160.0816/8(0.75)6/16
170.0706/8(0.75)6/17
180.0306/8(0.75)6/18
190.0306/8(0.75)6/19
200.0106/8(0.75)6/20

最后再由11点插值法计算 AP,公式如下:

比如当 Recall=0.1时,精度值为 Recall=0.1-0.2 (当前阈值和下一级阈值都能取到)之间的最大值,即1,当Recall=0.2时, 精度值为 Recall=0.2-0.3 之间的最大值,也为1,依次计算得到:

R00.10.20.30.40.50.60.70.80.91.0
P1.01.01.00.50.5710.5710.4550.375000

所以 AP 为:

这里因为只有一个类别,所以 mAP = AP = 49.75%,若再多一个类别 label = 2,则再重复上面的操作,假设得到 label = 2的 AP 为70.25%,则整个 mAP 为 (0.4975+0.7025)/2 = 0.6,即 60%

5、NMS方法

NMS 非极大值抑制(Non-maximum suppression)不是一个指标,而是一个目标检测的后处理方法,当检测目标有多个目标框时就需要 NMS来确定最终的一个框,主要用于优化检测结果,计算步骤如下:

  1. 设定目标框置信度阈值,常用阈值0.5,小于该值的框(质量不太好)会被过滤掉

  2. 根据置信度降序排列候选框;

  3. 选取置信度最高的框A 将其添加到输出列表,并从候选框列表中删除;

  4. 候选框列表中所有框依次与 框A 计算 loU,删除大于IoU阈值(高度重叠)的框(可以检测同一个类别的多个目标,比如一张图中不会只有一个人,如果光找置信度最高的框,只会选出一个的框,因为置信度包含某一个大类别的概率)

  5. 重复上述过程,直到候选框列表为空;

  6. 输出列表就是最后留下的目标框,在保留多个目标的同时,去掉对同一个目标的重复预测框。

但是缺点也比较明显,就是一个框只能预测一个结果,如果有两个及其以上的目标重叠在一起,则可能会丢失目标,所以后续会优化

6、检测速度

前传耗时

单位 ms,从输入图像到输出最终结果所消耗的时间,包括前处理耗时(如图像归一化)、网络前传耗时、后处理耗时(如非极大值抑制)。

FPS

Frames Per Second,每秒钟能处理的图像数量,一般每秒处理36帧才能处理实时数据。

7、FLOPs

浮点运算量,处理一张图像所需要的浮点运算数量,跟具体软硬件没有关系,可以公平地比较不同算法之间的检测速,计算公式为:

例如,一张64x64x128的特征图用 3x3 的卷积核卷完后,最终输出的通道数为256,则这个过程中的浮点运算量为 (64x64) x128x (3x3) x256 .

二、YOLOv1

YOLOv1(You Only Look Once version 1)是2016年由Joseph Redmon等人提出的首个基于单阶段(one-stage)目标检测算法,其核心思想是将目标检测任务转化为单一的回归问题,通过一次前向传播即可直接预测目标的类别和位置,下面具体讲解一下检测流程(网络结构这些苯人就不说了):

检测流程

1、图像网格划分

 将输入图像划分为 SxS 个网格(论文中S=7),每个格子预测 B 个 Bounding Box(论文中B=2),其中每个框包括中心点坐标(x, y)、宽w、高h、置信度conf

2、类别预测

每个格子预测 20 个类别的概率(当时VOC数据集是20分类 )

3、输出张量

最终输出维度为 7x7x30:

这里的 7x7 代表格子数,30 = 2x5+20,2x5 表示两个框内的中心坐标、宽高以及置信度,20表示每个格子代表的20个类别概率,最终会选择置信度较大的框作为预测结果。

损失函数

整个YOLOv1的损失函数由五部分组成:

合并后的公式如下:

这里就不详细介绍了,可以自己研究研究,那个 1{}^{}{}^{obj}(下标为ij) 代表的意思是如果第i个格子第j个框有物体时则值为1,反之为0.

优点

  • 速度快:单阶段检测,实时性强(45 FPS,快速版达150 FPS)。

  • 全局推理:直接处理整张图像,减少背景误检(相比R-CNN系列)。

  • 端到端训练:简化流程,无需区域提议。

缺点

  • 定位精度较低:尤其对小目标和密集目标检测效果差(网格划分限制)。

  • 每个网格仅预测一类:难以处理重叠目标。

  • 边界框形状受限:预设的Anchor机制未引入(YOLOv2改进)

这篇就到此为止,下一篇可能是YOLOv2 ~ (๑•̀ㅂ•́)و✧

以上有问题可以指出。

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

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

相关文章

31. 伪类和伪元素区别

总结 选择对象不同内容说明伪类作用对象元素的状态或位置伪元素作用对象元素的一部分内容或虚拟内容是否新增节点均不新增节点常用符号:(伪类)、::(伪元素)推荐场景伪类用于交互与状态控制;伪元素用于样式修饰与内容插…

ChatGPT、Playground手动模拟Agent摘要缓冲混合记忆功能

01. 摘要缓冲混合记忆 摘要缓冲混合记忆中,所需的模块有: chat_message_history:存储历史消息列表。moving_summary_buffer:移除消息的汇总字符串。summary_llm:生成摘要的 LLM,接收 summary(…

全国青少年信息素养大赛(无人飞行器主题赛(星际迷航)游记)

作者 FHD_WOLF 发布时间 2025-07-30 21:31 分类 生活游记 骑你的 白马啊 行你欲行的路 风吹来 花落涂 点一欉香祈求 ---------万千花蕊慈母悲哀从考场出来,剩下的只有无尽极乐 考前准备: 1.电脑充电。 (这个赛项需要自带设备&#x…

Kubernetes (K8s) 部署资源的完整配置OceanBase

Kubernetes Deployment 配置(oceanbase-deployment.yaml) # oceanbase-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata:name: oceanbase-deployment spec:replicas: 1selector:matchLabels:app: oceanbasetemplate:metadata:labels:app…

ACS-电机控制Buffer-任意路径规划(PVSPLINE绘制圆形)

该程序是一个双轴运动,绘制圆形 原始程序(可以直接使用) GLOBAL INT X1,Y1,ii GLOBAL REAL MY_ARRAY(4)(12) GLOBAL REAL piX1 0; Y1 1 ! Axis assignment pi ACOS(-1) ! Shortcut for generating piii 0 LOOP 12MY_ARRAY(0)(ii) COS(…

MongoDB Change Streams 实时数据变更流处理实战指南

MongoDB Change Streams 实时数据变更流处理实战指南 业务场景描述 在大型电商平台或高并发的在线系统中,业务数据的变更(如订单状态、库存变动、用户行为日志)需要实时通知下游系统,以便做流式分析、缓存更新或消息推送。传统的轮…

TIME WEAVER: A Conditional Time Series Generation Model论文阅读笔记

TIME WEAVER: A Conditional Time Series Generation Model 摘要 想象一下,根据天气、电动汽车的存在和位置生成一个城市的电力需求模式,这可以用于在冬季冻结期间进行容量规划。这样的真实世界的时间序列通常包含配对的异构上下文元数据(天气…

Day 4-2: PyTorch基础入门 - 从NumPy到深度学习的桥梁

Day 4-2: PyTorch基础入门 - 从NumPy到深度学习的桥梁 📚 核心概念(5分钟理解) 一句话定义 PyTorch是Facebook开发的深度学习框架,将NumPy的数组计算能力扩展到GPU,并加入了自动微分功能,让构建和训练神经网络变得简单直观。 为什么重要 GPU加速:比CPU快10-100倍的矩…

法式基因音响品牌SK(SINGKING AUDIO)如何以硬核科技重塑专业音频版图

在专业音响的竞技场,当多数品牌还在功率参数上缠斗时,一个流淌着法兰西血液的品牌——SK(SINGKING AUDIO),早已构建起令人仰望的技术巅峰。它完美诠释了真正的声学艺术:不是技术的炫耀,而是让尖…

ZooKeeper学习专栏(五):Java客户端开发(原生API)详解

文章目录前言一、核心类解析1.1 ZooKeeper类 - 连接管理核心1.2 Watcher接口 - 事件处理核心二、原生API实践2.1 创建会话(连接管理)2.2 创建节点(支持多种类型)2.3 获取节点数据和状态信息2.4 修改节点数据(版本控制&…

卸油管链接检测误报率↓76%:陌讯多模态融合算法实战解析

原创声明本文为原创技术解析,核心技术参数与架构设计引用自《陌讯技术白皮书》,禁止未经授权的转载与商用。一、行业痛点:卸油管链接检测的三大技术瓶颈在石化仓储与运输场景中,卸油管链接的密封性检测是保障安全生产的关键环节。…

MongoDB用户认证authSource

文章目录authSource遇到的问题authSource MongoDB用户认证逻辑与以往我认知的关系型数据库逻辑不太一样,多了一层用户与数据库关系的绑定。 在建立用户时,需要先指定数据库,则存在一个概念:用户归属于数据库。额外,依…

插件升级:Chat/Builder 合并,支持自定义 Agent、MCP、Rules

TRAE 插件全新升级,Chat、Builder 合并,支持自定义智能体、MCP 及自定义规则,体验对齐 IDE,现已上线 JetBrains 和 VSCode。 1. Chat/Builder 合并,一个对话框即可智能协作 在 TRAE 插件的 Chat 对话框中&#xff0…

【历史人物】【王安石】简历与生平

目录 一、王安石个人简历 二、个人主要经历 三、个人成就及影响 1、散文 2、诗歌 3、词 四、经典评价摘录 一、王安石个人简历 基本信息‌ 姓名:王安石,字介甫,号半山。小名獾郎 性别:男 年龄:1021年-1086年…

Codeforces Round 1040 (Div. 2) A - D题详细题解

本文为Codeforces Round 1040 (Div. 2) A - D题的详细题解, 觉得有帮助或者写的不错可以点个赞! 目录 题目A: 题目大意: 解题思路: 代码(C): 题目B: 题目大意: 解题思路: 代码(C): 题目C: 题目大意: 解题思路: 代码(C): 题目D: 题目大意: 解题思路:…

数据结构 之 【排序】(计数排序)

目录 1.计数排序的思想 2.计数排序图解 3.计数排序代码逻辑 3.1求原数组最大最小值及计数数组的创建 3.2计数 3.3覆盖写 3.4释放资源 4.计数排序的注意事项 5.计数排序的时间复杂度与空间复杂度 以升序为例 1.计数排序的思想 前面我们学习的快排、归并排序、希尔排序.…

Ascend CANN/ACL API 模型部署加速最佳实践

1. 模型输入相关问题 图像尺寸信息 模型输入尺寸由原始模型决定,在转换时固定 图像尺寸信息是模型固有属性,不是转换时添加的 对于使用动态尺寸,可以在推理时自动根据当前的输入尺寸推导输出尺寸。 输入格式(NCHW/NHWC) --input_format 不同框架默认格式不同: Caffe: 支持…

QT信号和槽怎么传输自己定义的数据结构

在 Qt 中,信号(Signal)和槽(Slot)机制默认支持许多内置类型(如 int、QString、QList 等),但如果要传输 自定义数据结构(如结构体、类对象),需要额…

借助于llm将pdf转化为md文本

pdf转化为md格式后,意味着非结构化文本转为结构化文本,能清晰定位大标题、子标题,图表。 方便后续处理,因为llamaindex和langchain能更有效切分md类文本,避免信息丢失。 1)读取pdf为txt 读取pdf&#xf…

设计模式:中介者模式 Mediator

目录前言问题解决方案结构代码前言 中介者是一种行为设计模式,能让你减少对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互,迫使它们通过一个中介者对象进行合作。 问题 假如你有一个创建和修改客户资料的对话框, 它由各种控件…