专栏中心

EEPW首页 > 专栏 > 目标检测的 Anchor-Free 和 NMS 到底是什么?

目标检测的 Anchor-Free 和 NMS 到底是什么?

发布人:地平线开发者 时间:2026-04-16 来源:工程师 发布文章

目标检测这几年有两个非常容易混淆的概念:

  • Anchor-Free

  • 无需 NMS**(End-to-End)**

很多人会误以为:

既然 Anchor-Free 直接回归框,那是不是就不需要 NMS 了?

答案是:不一定。

本文将系统讲清楚:

  1. Anchor-Free 到底解决了什么问题

  2. 为什么 YOLOv8 还是需要 NMS

  3. YOLOv10 为什么可以去掉 NMS

  4. DETR 和 YOLOv10 的本质区别

  5. 三种范式的核心思想差异

一、Anchor-Based vs Anchor-Free
1.Anchor-Based(以 YOLOv5 为例)

在 Anchor-Based 方法中:

  • 每个特征点对应多个预定义宽高比的 anchor

  • 模型学习的是:在某个 anchor 基础上做偏移回归

本质是:

先给一个“初始框模板”,再在这个模板上微调。

2.Anchor-Free(以 YOLOv8 为例)

在 YOLOv8 中:

  • 不再使用预定义 anchor

  • 每个特征点直接回归 bbox(如 l, t, r, b)

  • 不依赖 anchor 的形状

看起来像是:

直接预测框 → 应该不会重复 → 不需要 NMS?

但事实并非如此。

二、为什么 Anchor-Free 仍然需要 NMS?

关键在于一个概念:

Dense Prediction(密集预测)

YOLO 系列本质是:

  • 每个特征点都会预测一个候选框

  • 多尺度特征图(P3 / P4 / P5)都会输出

假设一个目标覆盖 3×3 个特征点:

  • 这 9 个位置都可能成为正样本

  • 都会回归出一个高质量框

结果:

  • 同一个目标 → 多个高分框

  • 推理阶段必须用 NMS 去重

核心结论

Anchor-Free 解决的是:

框的定义方式

NMS 解决的是:

多个预测指向同一个目标的问题

两者不是同一个问题。

三、YOLOv8:One-to-Many 训练机制

YOLOv8 采用:

One-to-Many Label Assignment

意思是:

  • 一个 GT 可以匹配多个预测

  • 多个位置都会学习这个目标

  • 推理阶段会产生多个高分框

  • 必须使用 NMS

总结:

YOLOv8 = Anchor-Free + Dense Prediction + One-to-Many + NMS

四、YOLOv10:为什么可以去掉 NMS?

YOLOv10 的核心创新是:

引入 One-to-One 分配机制

但它不是简单替换,而是采用 **Dual Assignment Strategy(双分配机制)**。

训练阶段
  • 一个分支使用 One-to-Many(保证精度与收敛稳定)

  • 一个分支使用 One-to-One(学习唯一匹配)

两个分支同时训练。

推理阶段
  • 只保留 One-to-One 分支

  • 每个目标只输出一个框

  • 自然不需要 NMS

总结:

YOLOv10 = Dense 结构 + One-to-One 输出 + 无 NMS

五、DETR

DETR 不是密集网格预测。

DETR 的核心机制
  • 固定数量 object queries(例如 100 个)

  • 每个 query 输出一个 bbox

  • 使用 Hungarian Matching 做全局一对一匹配

训练时:

每个 GT 只匹配一个 query

未匹配的 query 被监督为背景。

因此:

  • 一个目标只会有一个预测

  • 不需要 NMS

六、DETR vs YOLOv10 本质区别

虽然两者都不需要 NMS,但实现方式完全不同。

核心区别:

  • DETR 是 结构上避免重复

  • YOLOv10 是 训练策略上避免重复

七、三种范式演进总结
第一阶段:Anchor-Based
  • Anchor-Based

  • One-to-Many

  • 需要 NMS

第二阶段:Anchor-Free(YOLOv8)
  • Anchor-Free

  • 仍然 One-to-Many

  • 仍然需要 NMS

第三阶段:End-to-End(YOLOv10 / DETR)
  • One-to-One

  • 不需要 NMS

区别在于:

  • YOLOv10:密集检测 + One-to-One 分配

  • DETR:Query-Based 集合预测

八、最终理解框架

判断是否需要 NMS 的核心问题是:

训练阶段是否允许多个预测同时学习同一个 GT?

  • 允许 → 必须 NMS

  • 不允许 → 不需要 NMS

Anchor-Free 与是否需要 NMS 没有直接因果关系。

九、总结

Anchor-Free 解决的是“框怎么定义”,One-to-One 解决的是“是否重复预测”,DETR 重构的是“检测问题本身”。


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: 算法 自动驾驶 算法工具链 地平线 征程5

相关推荐

曲面显示屏取代传统汽车挡风玻璃

自动驾驶正推动汽车行业加速布局人形机器人

数字PID控制算法之一

资源下载 2007-12-28

实时训练驾驶人工智能

加密算法之MD5算法

Ouster推出 Rev8 OS 激光雷达系列 原生彩色激光雷达正式落地

加快实现自动驾驶(完整小组讨论)

视频 2020-06-12

简单实用的单片机CRC 快速算法

资源下载 2007-02-16

面向算法硬件加速的FPGA实现方法

地平线征程 6 系列集成 Cadence Tensilica Vision DSP,实现规模化量产,合作加速智能驾驶解决方案部署

PID算法

资源下载 2007-02-16

2035年自动驾驶出租车市场规模将达1680亿美元

汽车电子 2026-04-21

76-81GHz自动驾驶CMOS RADAR

视频 2018-05-31

ADI:传感技术助力未来自动驾驶的发展

视频 2020-03-16

特斯拉监督版FSD加入中国市场

2026-05-22

CRC算法原理及C语言实现

资源下载 2007-02-16

掘金自动驾驶,不要把大坑当机会

汽车电子 2026-04-17

携手ADI赢得未来

视频 2019-11-08

高阶智驾要落地,线控底盘为什么必须执行得准

自动驾驶的现状与未来(节选)

视频 2020-03-16
更多 培训课堂
更多 焦点
更多 视频

技术专区