YOLO V1 推理阶段与非极大值抑制 (NMS)

【YOLO 模型进阶】(2)YOLO v1 超详解:从网络架构到优缺点剖析 整体损失 = 位置误差 + 置信度误差 + 类别误差通过权重 λ_coord=5、λ_noobj=0.5 的设计,YOLO v1 优先保证 “位置精度” 和 “有目标网格的置信度精度”,同时避免无目标网格的误差干扰训练。速度极快:标准版本(24 层卷积)每秒可处理 45 帧图像(45 FPS),精简版(9 层卷积)甚至可达 150 FPS,完全满足视频实时检测需求(通常要求≥30 FPS);假阳性率低。 阅读详情

一、总体概述

YOLO V1 的推理阶段 (Inference Phase) 和 非极大值抑制 (Non-Maximum Suppression, NMS) 算法,以及解决核心问题:如何从 7×7×30 的输出中获得最终的边界框和类别概率。

二、主要内容分段总结

1. 推理阶段 - 置信度分数计算 (Inference Phase)

核心公式

在推理时,YOLO 将条件类别概率与各边界框的置信度预测相乘:

Pr(Classᵢ | Object) × Pr(Object) × IOU_pred^truth
= Pr(Classᵢ) × IOU_pred^truth

公式含义

组件含义说明
Pr(Classᵢ | Object)条件类别概率给定存在目标的前提下,属于第 i 类的概率
Pr(Object)目标存在概率该边界框是否包含目标
IOU_pred^truth交并比预测框与真实框的重叠程度

结果解读: 这个乘积给出了每个边界框的类别特定置信度分数,同时编码了:

  • 该类别出现在框中的概率
  • 预测框与目标的拟合程度

推理流程可视化

视频通过四幅图展示了完整的推理流程:

阶段图示说明
1. 边界框置信度密集黑色边界框覆盖图像网格中每个单元的边界框预测
2. 类别概率图7×7 彩色网格空间类别概率分布
3. 原始检测结果多色密集重叠边界框NMS 前的候选检测
4. 最终输出干净的标注边界框NMS 后的最终检测结果

2. 预测张量结构回顾

每个网格单元的输出向量 (30维)

| Box1 (5维) | Box2 (5维) | Class Probabilities (20维) |
  • Box1: (x, y, w, h, confidence) — 第一个边界框
  • Box2: (x, y, w, h, confidence) — 第二个边界框
  • Class Probabilities: 20个类别的条件概率 (PASCAL VOC)

总输出: 7×7 网格 × 30维 = 49个网格单元,每个预测 2个边界框,共 98个边界框

3. 非极大值抑制 (NMS) 详解 (约2:00 - 8:12)

为什么需要 NMS?

YOLO V1 的 7×7 网格产生 98个边界框预测 (49个网格 × 2个框/网格)。多个网格单元可能对同一个目标产生重叠的边界框预测,需要 NMS 来去除冗余检测。

NMS 算法步骤

视频通过具体的"Dog"类别示例,详细展示了 NMS 的完整过程:

步骤1: 置信度阈值过滤
对于每个类别(如 Dog):
  - 提取所有98个边界框的类别特定置信度分数
  - 将分数 < 阈值(如 0.2)的边界框分数设为 0
  - 按分数降序排序

示例:

边界框原始分数阈值过滤后
bb70.50.5 (保留)
bb460.30.3 (保留)
bb400.20.2 (保留)
bb230.10 (过滤)
bb840.050 (过滤)
步骤2: 迭代式 NMS 抑制
1. 选取分数最高的边界框作为 bbox_max(如 bb7, 分数 0.5)
2. 遍历其余边界框 bbox_cur:
   - 计算 IoU(bbox_max, bbox_cur)
   - 如果 IoU > 0.5,则将 bbox_cur 的分数设为 0
3. 选取下一个分数最高的边界框,重复步骤2
4. 直到所有边界框处理完毕

具体示例 (Dog 类别):

迭代bbox_maxbbox_curIoU操作结果
第1轮bb7 (0.5)bb46 (0.3)> 0.5抑制bb46 → 0
第1轮bb7 (0.5)bb40 (0.2)> 0.5抑制bb40 → 0
第2轮(下一个非零框)…………

可视化说明:

  • 红色边界框 (bb7): 分数最高 (0.5),紧密贴合狗 → 保留
  • 黄色边界框 (bb46): 分数较低 (0.3),与 bb7 重叠度高 → 抑制
  • 蓝色边界框 (bb40): 分数更低 (0.2),也与 bb7 重叠 → 抑制
步骤3: 最终结果

经过 NMS 后,对于"Dog"类别,可能只保留一个最高置信度的边界框。对于整幅图像中的所有类别分别执行 NMS 后,最终得到干净的检测结果。

NMS 对每个类别独立执行:

  • Dog 类别 → 保留最佳狗的检测框
  • Bicycle 类别 → 保留最佳自行车的检测框
  • Person 类别 → 保留最佳人的检测框
  • …

三、NMS 关键参数

参数值说明
置信度阈值 (thresh1)0.2低于此分数的边界框被直接过滤
IoU 阈值 (thresh2)0.5重叠度超过此值的边界框被抑制
总边界框数987×7 网格 × 2 个框/网格
类别数20PASCAL VOC 数据集

四、核心要点总结

  1. 类别特定置信度: 推理时将条件类别概率与边界框置信度相乘,得到最终的检测分数

  2. 98个候选框: YOLO V1 产生 98 个边界框预测 (7×7×2),需要后处理

  3. 两步过滤: 先用置信度阈值 (0.2) 过滤低分框,再用 NMS 去除重叠框

  4. NMS 核心逻辑: 选取最高分框 → 计算与其他框的 IoU → 抑制 IoU > 0.5 的框 → 重复

  5. 逐类别执行: NMS 对每个类别独立运行,确保不同类别的检测互不干扰

  6. 从混乱到清晰: NMS 将 98 个密集重叠的候选框精简为少量精确的最终检测结果

C++实现YOLO目标检测中的NMS算法:从原理到工程优化 在计算机视觉的目标检测任务中,非极大值抑制(NMS)是一种关键的后处理算法,用于消除冗余的检测框,确保每个目标只保留一个最优预测。其核心原理基于交并比(IoU)计算和贪心策略,通过排序和迭代抑制来提升检测结果的准确性。这一技术对于模型部署和工程实践至关重要,尤其在资源受限的边缘设备上,高效的C++实现能显著提升推理性能。针对YOLO系列模型,NMS需要处理特定的输出格式,并支持多类别处理。通过优化数据结构和避免频繁的内存操作,可以实现高性能的NMS模块,满足实时检测的需求。本文聚焦于NMS在YOLO中的应用 阅读详情

相关推荐

YOLOv11【第四章:巅峰前沿与融合篇·第26节】3D NMS 与非极大值抑制扩展实战!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 1702

YOLO系列目标检测后处理-非极大值抑制

非极大值抑制(NMS)经常应用于各种目标检测模型中,使用NMS可以有效地剔除目标检测结果中多余的检测框,保留最合适的检测框。 以YOLOv5为例,模型输入为640*640时,推理输出结果在20*20,40*40,80*80三个尺度上的预测框总和为20*20*3+,40*40*3+80*80*3=25200,每个预测框包含检测框中心xy坐标,预测框宽高wh,预测框置信度,每个分类对应的置信度。要从这上万个预测框中取出正确的检测结果就需要用到非极大值抑制。 ...

jameschen9051的博客 4029

iOS Certificates, Identifiers & Profiles简介

1. Certificates Certificates是生成开发和生产所需的证书。 2.1 certSigningRequest文件 生成证书前,需要先生成certSigningRequest文件,certSigningRequest文件由【钥匙串访问】生成。 选择菜单【钥匙串访问】,【证书助理】下的【从证书颁发机构请求证书…】 填写【用户电子邮件地址: 】,将【请求是:】的选项改为【储存到磁盘】 输入certSigningRequest文件的文件名,并指定保存位置。 保存certSignin

假装你是大灰狼的专栏 7058

YOLO模型输出结果的非极大值抑制(NMS)代码

首先,YOLO模型会生成一系列边界框,每个边界框都会伴随一个置信度分数,表示该边界框内可能存在目标的置信度。在NMS处理之前,首先通过设定一个置信度阈值,过滤掉低置信度的边界框,只保留高置信度的边界框。通过这种方式,YOLO模型可以保证在目标检测中生成的边界框具有一定的独立性,不会出现过多的重叠情况,从而提高检测的准确性和可靠性。:最终,输出的边界框列表中仅包含经过非极大值抑制处理后的边界框,它们彼此之间不会有过多重叠。:将剩余的边界框按照其置信度进行降序排列,以确保先处理置信度最高的边界框。

Littro Innovations 1935

【GESP】C++四级考试大纲知识点梳理, (10) 文件读写和重定向

其实,由于本人也是边学、边实验、边总结,且对考纲深度和广度的把握属于个人理解。因此本文更多的不是一个教程,而是个人知识梳理,如有遗漏、疏忽,欢迎指正、交流。孩子放假,出游一周,没有更新。刚刚归来,继续学习。GESP C++四级官方考试大纲中,共有11条考点,本文针对第10条考点进行分析介绍。(10)掌握文件操作中的重定向,实现文件读写操作,了解文本文件的分类,掌握写操作、读操作、读写操作。GESP C++四级官方考试大纲中,共有11条考点,本文针对第10条考点进行分析介绍。孩子放假,出游一周,没有更新。

CoderCoding的博客 525

机器学习中正则化项L1和L2的直观理解

正则化(Regularization) 机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1ℓ1\ell_1-norm和ℓ2ℓ2\ell_2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数。 L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用L1正则化的模型建叫做...

小平子的专栏 43万+

YOLO等目标检测模型的非极大值抑制NMS和评价指标(Acc, Precision, Recall, AP, mAP, RoI)、YOLOv5中mAP@0.5与mAP@0.5:0.95的含义

YOLO等目标检测模型的非极大值抑制NMS和评价指标(Acc, Precision, Recall, AP, mAP, RoI)、YOLOv5中mAP@0.5与mAP@0.5:0.95的含义

悠悠小船长的博客 5497

EtherCAT同步模式实战:如何用TwinCAT配置DC-Synchronous模式(附时序图详解)

本文详细解析了如何在TwinCAT环境中配置EtherCAT的DC-Synchronous同步模式,实现纳秒级同步精度。通过硬件准备、参数配置和高级调优步骤,帮助工程师解决工业自动化中的同步挑战,提升运动控制性能。

gold的博客 1571

Yolo算法检测之NMS(非极大值抑制)原理详解

刚开始学习算法的时候,nms非极大值一直学不明白,今天终于搞明白了,大致总结一下。 按照yolo目标检测算法的初步思想来说,把图片分成19*19网格之后,理论上这个19*19个网格里面包含汽车一部分的都会检测到汽车的存在,那么带来的问题就是,很多个网格都能检测到汽车如下图所示,显然这并不是我们想要的效果,我们只想一个网格里检测到车(一辆车),图像上两辆车应该是两个网格。因为我们在检测的时候,可能对一个目标做重复多次检测,这个时候NMS的使用,就是为了删除那些无用的目标检测框,留下一个最佳的目标检测框。

爱吃橘子的小翟 5190

AGI 之 【Dify】 之 Dify 在 Windows 端本地部署调用 Ollama 本地下载的大模型, API 形式 Python 调用 进行简单聊天接口测试

AGI,即通用人工智能(Artificial General Intelligence),是一种具备人类智能水平的人工智能系统。它不仅能够执行特定的任务,而且能够理解、学习和应用知识于广泛的问题解决中,具有较高的自主性和适应性。AGI的能力包括但不限于自我学习、自我改进、自我调整,并能在没有人为干预的情况下解决各种复杂问题。本节将介绍如何使用 Dify 平台调用 Ollama 部署的本地模型来创建一个聊天应用。通过 API 的方式发起聊天,可以让前端自由布置所需的聊天形式。

仙魁XAN 1万+

告别手动转换!用腾讯云轻量服务器+QMT插件,5分钟搞定聚宽策略实盘(附完整源码)

本文详细介绍如何利用腾讯云轻量服务器和QMT插件快速实现聚宽策略的自动化实盘部署。通过云端信号中转站解决协议转换、信号缓存等核心问题,5分钟完成服务器配置,并附完整源码实现零改造实盘方案,显著提升量化交易效率。

weixin_28707739的博客 659

【YOLO v4 相关理论】常见的非极大值抑制方法:(Hard) NMS、Soft NMS、DIoU NMS

一、NMS 1.1、IoU IoU(Intersection over Union),也就是我们常说的交并比。简单来说IOU就是用来度量目标检测中预测框与真实框的重叠程度。 IoU公式:IoU=∣A⋂B∣∣A⋃B∣IoU = {|A\bigcap B|\over |A\bigcup B|}IoU=∣A⋃B∣∣A⋂B∣​ 显而易见,IOU的值越高也说明A框与B框重合程度越高,代表模型预测越准确。反之,IOU越低模型性能越差。 1.2、NMS算法流程 1. 先对网络预测出的所有边界框按分数(属于某个种类的概率

qq_38253797的博客 9738

MATLAB基础应用精讲-【数模应用】数字预失真(DPD)(附MATLAB代码实现)

近年来,随着无线通信技术的发展,高功率放大器 (PA) 在提高信号传输功率的同时,也带来了非线性失真问题。PA的非线性失真会造成信号频谱扩展、功率下降、邻道干扰等问题,严重影响系统性能。为了克服PA的非线性失真,数字预失真 (DPD) 技术应运而生。DPD技术通过在发射机中引入一个非线性模块,对信号进行预失真处理,从而补偿PA的非线性失真。

qq_36130719的博客 896

YOLO网络设计学习记录

本文章是 YOLO V1 系列教程的续集,专注于深入讲解 YOLO V1 的网络架构设计。展示了从输入图像到最终预测输出的完整数据流,并提出了训练阶段和推理阶段两个核心问题,为后续更深入的内容做铺垫。

Yihanging的博客 268

YOLOv8魔改系列:将CIoU替换成Wise-IoU,飞速涨点

将YOLOv8中CIoU替换成Wise-IoU,实现飞速涨点

qq_66386046的博客 2679

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

一文搞懂YOLO原理:从“看多次“到“看一次“的革命性突破

YOLO的核心思想非常直接,它的名字You Only Look Once(你只看一次)就完美地概括了其精髓。在YOLO之前的主流目标检测算法(如R-CNN系列)是"两阶段"的:第一步找候选区,第二步对每个区域分别进行卷积运算判断物体类别。这种方法准确但速度慢。YOLO则采用了"单阶段"方法:把目标检测任务重构为一个单一的回归问题,只对图像进行一次全局扫描,就能直接预测出所有物体的位置和类别。

w2026314的博客 64

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

YOLO目标检测原理实战指南:从小白到入门

YOLO(You Only Look Once)是目标检测领域的革命性算法,对图像只看一次,同时输出所有物体的位置和类别。传统R-CNN系列需要两步:先找候选区,再逐个分类,速度慢。YOLO把检测变成回归问题,一次扫描直接出结果。

2501_91695322的博客 176

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

YOLOv11检测框后处理:NMS非极大值抑制PyTorch实现

深入解析目标检测中非极大值抑制(NMS)的核心原理与PyTorch实现,结合CUDA加速环境提升推理效率。涵盖NMS算法逻辑、IoU阈值选择、类别独立处理及多种优化变体,并演示如何利用PyTorch-CUDA镜像构建端到端GPU推理流程,适用于工业级部署与实时检测场景。

weixin_42601608的博客 1104

【YOLO系列】YOLO V1 论文精读与学习总结

目录0. 前言1.YOLO V1 大体思路2. YOLO V1的训练过程2.1 YOLO V1网络结构2.2 具体训练过程2.2.1 把主干结构在ImageNet上进行预训练2.2.2 真正开始训练2.3 输出的7x7x30维张量代表含义2.3 损失函数设置3.YOLO V1推断过程(NMS后处理)4. YOLOV1 与其他模型的比较5. YOLOV1的优势与不足5.1 YOLOV1的优势5.2 YOLOV1的不足6. 总结 0. 前言 最近一段时间在读YOLO系列的论文,目前跟着同济子豪兄读完了YOLO

syh的技术记录 6100

YOLOv3 中的 NMS 非极大值抑制详解:论文 + Darknet 双视角

特点说明✅ 按类别执行 NMS不同类别的框不会相互干扰✅ 使用 confidence × class_prob 排序更合理的排序方式✅ 支持 Soft-NMS可通过配置启用(非论文原生)✅ 多尺度预测适配对小目标更鲁棒✅ Anchor Boxes 支持anchor 是通过 K-Means 聚类获得的预设框模块内容✅ NMS 作用去除重复预测框,提高检测结果质量✅ YOLOv3 NMS 实现按类别执行,使用 confidence × class_prob 排序。

guoguozgw的博客 1226

YOLO26模型优化:非极大值抑制改进方案

本文介绍了基于星图GPU平台自动化部署最新 YOLO26 官方版训练与推理镜像的实践方案,重点优化非极大值抑制(NMS)算法以提升目标检测精度。通过集成自适应NMS、Soft-NMS等策略,显著改善密集场景下的模型表现,适用于智能监控、工业质检等AI应用开发场景,实现高效、稳定的图像识别与分析。

weixin_35755640的博客 452

YOLO26 ONNX Runtime 部署实战:告别NMS后处理,边缘推理新标杆

摘要: YOLO26通过架构革新实现边缘设备高效推理,核心改进包括移除NMS后处理、简化DFL模块等,显著提升推理速度。本文提供基于ONNX Runtime的完整部署方案,包含模型导出、预处理、推理及结果可视化代码。YOLO26在CPU上的推理延迟降低43%,支持端到端输出检测结果,无需额外后处理,特别适合嵌入式设备应用。代码示例展示了如何加载ONNX模型、处理输入图像、执行推理并绘制检测框,为开发者提供开箱即用的部署解决方案。(149字)

m0_61749394的博客 1371

YOLO V1目标检测模型

YOLO(You Only Look Once)算法是一种目标检测算法,是经典的one-stage方法。YOLO v1 开创了单阶段目标检测的先河,其简洁的架构和高效的推理为后续版本(YOLOv2-v8)奠定了基础。尽管存在小目标检测和定位精度的局限性,但其“端到端”的设计思想深刻影响了目标检测领域的发展。YOLO-v1通过回归思想革新了目标检测流程,以速度和全局信息优势成为实时检测的里程碑。

jdjhcn的博客 871

yolov5 nms 源码理解

直接放入nms yolov5源码,以一个二分类的模型举例说明,对nms的理解 def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=None, agnostic=False, multi_label=False, labels=(), max_det=100000,return_index = False): """Runs Non-Maximum Su

zhuguiqin1的专栏 9131

yolo 推理 nms

另外一个说明cv2绘制不了中文,但可以用其他包实现。

qq_27172615的博客 632

YOLO V8-Detection 【单张图片推理】 推理详解及部署实现

该代码对YOLO V8 中 Detection 中推理代码进行拆解,对里面单独的模块给单独提取出来,方便进行后续的修改,并且该代码是一个每次对一张图片进行推理。

牧子川的博客 1万+
上一篇: YOLO训练阶段与损失函数
下一篇: YOLO V1 全面总结
YandY15
博客等级 码龄4年 140粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值