{"notes":[{"id":"object-detection/yolo26","category":"object-detection","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"YOLO26","subtitle":"两个头都留着","author":"Z. Yuan","paperDate":"2026-06-02","publishedOn":"2026-10-07","paperTitle":"Ultralytics YOLO26: Unified Real-Time End-to-End Vision Models","paperUrl":"https://arxiv.org/abs/2606.03748","bibliography":{"title":"Ultralytics YOLO26: Unified Real-Time End-to-End Vision Models","authors":["Glenn Jocher","Jing Qiu","Mengyu Liu","Shuai Lyu","Fatih Cagatay Akyon","Muhammet Esat Kalfaoglu"],"url":"https://arxiv.org/abs/2606.03748","pdfUrl":"https://arxiv.org/pdf/2606.03748v1","codeUrl":"https://github.com/ultralytics/ultralytics","preprint":{"id":"2606.03748","submittedOn":"2026-06-02","url":"https://arxiv.org/abs/2606.03748"},"publication":null,"citation":"@misc{objectdetectionyolo262026,\n  title = {{Ultralytics YOLO26: Unified Real-Time End-to-End Vision Models}},\n  author = {Glenn Jocher and Jing Qiu and Mengyu Liu and Shuai Lyu and Fatih Cagatay Akyon and Muhammet Esat Kalfaoglu},\n  year = {2026},\n  eprint = {2606.03748},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2606.03748}\n}\n","citationPath":"/content/papers/citations/object-detection/yolo26.d5782368677d.bib"},"thumbnail":{"src":"/content/papers/assets/81b8a4e821bdb84f6040563add1c1f2341963826d993348c64cab2715e5d6e93.png","width":1494,"height":367},"locale":"zh-hans","path":"/content/papers/zh-hans/object-detection/yolo26.d84100d00d04.md","headings":[{"id":"定义问题","text":"定义问题","depth":2},{"id":"解决问题","text":"解决问题","depth":2},{"id":"训练流程","text":"训练流程","depth":3},{"id":"两个头各挑各的正样本","text":"两个头，各挑各的正样本","depth":3},{"id":"渐进式损失","text":"渐进式损失","depth":3},{"id":"去掉-dfl","text":"去掉 DFL","depth":3},{"id":"stal","text":"STAL","depth":3},{"id":"musgd","text":"MuSGD","depth":3},{"id":"讨论","text":"讨论","depth":2},{"id":"从-yolo11s-一步一步走到-yolo26s","text":"从 YOLO11s 一步一步走到 YOLO26s","depth":3},{"id":"权重的安排","text":"权重的安排","depth":3},{"id":"另外三组消融","text":"另外三组消融","depth":3},{"id":"两个头差多少","text":"两个头差多少","depth":3},{"id":"头条数字来自两个头","text":"头条数字来自两个头","depth":3},{"id":"结论","text":"结论","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"object-detection/yolov10","relation":"referenced","topic":""},{"id":"object-detection/gfl","relation":"referenced","topic":""},{"id":"object-detection/tood","relation":"referenced","topic":""}]},{"id":"object-detection/yolov10","category":"object-detection","legacyPath":"object-detection/2405-yolov10","legacySlug":"2405-yolov10","legacyPaths":[],"title":"YOLOv10","subtitle":"NMS，再见","author":"Z. Yuan","paperDate":"2024-05-23","publishedOn":"2025-07-19","paperTitle":"YOLOv10: Real-Time End-to-End Object Detection","paperUrl":"https://proceedings.neurips.cc/paper_files/paper/2024/hash/c34ddd05eb089991f06f3c5dc36836e0-Abstract-Conference.html","bibliography":{"title":"YOLOv10: Real-Time End-to-End Object Detection","authors":["Ao Wang","Hui Chen","Lihao Liu","Kai Chen","Zijia Lin","Jungong Han","Guiguang Ding"],"url":"https://proceedings.neurips.cc/paper_files/paper/2024/hash/c34ddd05eb089991f06f3c5dc36836e0-Abstract-Conference.html","pdfUrl":"https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf","codeUrl":"https://github.com/THU-MIG/yolov10","preprint":{"id":"2405.14458","submittedOn":"2024-05-23","url":"https://arxiv.org/abs/2405.14458"},"publication":{"venue":"NeurIPS","year":2024,"kind":"conference","url":"https://proceedings.neurips.cc/paper_files/paper/2024/hash/c34ddd05eb089991f06f3c5dc36836e0-Abstract-Conference.html"},"citation":"@misc{objectdetectionyolov102024,\n  title = {{YOLOv10: Real-Time End-to-End Object Detection}},\n  author = {Ao Wang and Hui Chen and Lihao Liu and Kai Chen and Zijia Lin and Jungong Han and Guiguang Ding},\n  year = {2024},\n  eprint = {2405.14458},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2405.14458}\n}\n","citationPath":"/content/papers/citations/object-detection/yolov10.f624ec9e20b6.bib"},"thumbnail":{"src":"/content/papers/assets/43843817d1e6667933eb36b7b588db3ca318fe74e00d2d47095426923f3a5b44.jpg","width":1614,"height":536},"locale":"zh-hans","path":"/content/papers/zh-hans/object-detection/yolov10.ba77eced71b7.md","headings":[{"id":"定义问题","text":"定义问题","depth":2},{"id":"解决问题","text":"解决问题","depth":2},{"id":"双重标注架构","text":"双重标注架构","depth":3},{"id":"效率与精度优化","text":"效率与精度优化","depth":3},{"id":"精度导向强化","text":"精度导向强化","depth":3},{"id":"实现细节","text":"实现细节","depth":3},{"id":"讨论","text":"讨论","depth":2},{"id":"与-sota-方法比较","text":"与 SOTA 方法比较","depth":3},{"id":"消融实验","text":"消融实验","depth":3},{"id":"nms-free-真的能完全取代传统做法吗","text":"NMS-free 真的能完全取代传统做法吗？","depth":3},{"id":"为什么精简不会拖垮性能","text":"为什么精简不会拖垮性能？","depth":3},{"id":"精度提升延迟却几乎不变","text":"精度提升，延迟却几乎不变？","depth":3},{"id":"结论","text":"结论","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"object-detection/yolov11","relation":"comparison","topic":"实时检测的近期架构设计"},{"id":"object-detection/yolo-tiny","relation":"comparison","topic":"实时检测的近期架构设计"}]},{"id":"object-detection/gfl","category":"object-detection","legacyPath":"object-detection/2006-gfl","legacySlug":"2006-gfl","legacyPaths":[],"title":"GFL","subtitle":"融合的焦点","author":"Z. Yuan","paperDate":"2020-06-08","publishedOn":"2025-08-23","paperTitle":"Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection","paperUrl":"https://arxiv.org/abs/2006.04388","bibliography":{"title":"Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection","authors":["Xiang Li","Wenhai Wang","Lijun Wu","Shuo Chen","Xiaolin Hu","Jun Li","Jinhui Tang","Jian Yang"],"url":"https://arxiv.org/abs/2006.04388","pdfUrl":"https://proceedings.neurips.cc/paper_files/paper/2020/file/f0bda020d2470f2e74990a07a607ebd9-Paper.pdf","codeUrl":"https://github.com/implus/GFocal","preprint":{"id":"2006.04388","submittedOn":"2020-06-08","url":"https://arxiv.org/abs/2006.04388"},"publication":{"venue":"NeurIPS","year":2020,"kind":"conference","url":"https://papers.nips.cc/paper_files/paper/2020/hash/f0bda020d2470f2e74990a07a607ebd9-Abstract.html"},"citation":"@misc{objectdetectiongfl2020,\n  title = {{Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection}},\n  author = {Xiang Li and Wenhai Wang and Lijun Wu and Shuo Chen and Xiaolin Hu and Jun Li and Jinhui Tang and Jian Yang},\n  year = {2020},\n  eprint = {2006.04388},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2006.04388}\n}\n","citationPath":"/content/papers/citations/object-detection/gfl.71fabce4b963.bib"},"thumbnail":{"src":"/content/papers/assets/b23270560323cea28f3b1fe736d861dd3365d20c4fb99278dcc3ce306df890dc.jpg","width":1224,"height":380},"locale":"zh-hans","path":"/content/papers/zh-hans/object-detection/gfl.a7fc90129a05.md","headings":[{"id":"定义问题","text":"定义问题","depth":2},{"id":"解决问题","text":"解决问题","depth":2},{"id":"focal-loss","text":"Focal Loss","depth":3},{"id":"quality-focal-loss","text":"Quality Focal Loss","depth":3},{"id":"distribution-focal-loss","text":"Distribution Focal Loss","depth":3},{"id":"generalized-focal-loss","text":"Generalized Focal Loss","depth":3},{"id":"讨论","text":"讨论","depth":2},{"id":"qfl-是否有用","text":"QFL 是否有用？","depth":3},{"id":"dfl-是否有用","text":"DFL 是否有用？","depth":3},{"id":"结论","text":"结论","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"object-detection/fcos","relation":"comparison","topic":"分类分数与定位质量的对齐"},{"id":"object-detection/tood","relation":"comparison","topic":"分类分数与定位质量的对齐"}]},{"id":"object-detection/tood","category":"object-detection","legacyPath":"object-detection/2108-tood","legacySlug":"2108-tood","legacyPaths":[],"title":"TOOD","subtitle":"错位的终结","author":"Z. Yuan","paperDate":"2021-08-17","publishedOn":"2025-08-30","paperTitle":"TOOD: Task-aligned One-stage Object Detection","paperUrl":"https://arxiv.org/abs/2108.07755","bibliography":{"title":"TOOD: Task-aligned One-stage Object Detection","authors":["Chengjian Feng","Yujie Zhong","Yu Gao","Matthew R. Scott","Weilin Huang"],"url":"https://arxiv.org/abs/2108.07755","pdfUrl":"https://openaccess.thecvf.com/content/ICCV2021/papers/Feng_TOOD_Task-Aligned_One-Stage_Object_Detection_ICCV_2021_paper.pdf","codeUrl":"https://github.com/fcjian/TOOD","preprint":{"id":"2108.07755","submittedOn":"2021-08-17","url":"https://arxiv.org/abs/2108.07755"},"publication":{"venue":"ICCV","year":2021,"kind":"conference","url":"https://openaccess.thecvf.com/content/ICCV2021/html/Feng_TOOD_Task-Aligned_One-Stage_Object_Detection_ICCV_2021_paper.html"},"citation":"@misc{objectdetectiontood2021,\n  title = {{TOOD: Task-aligned One-stage Object Detection}},\n  author = {Chengjian Feng and Yujie Zhong and Yu Gao and Matthew R. Scott and Weilin Huang},\n  year = {2021},\n  eprint = {2108.07755},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2108.07755}\n}\n","citationPath":"/content/papers/citations/object-detection/tood.4de53d61811e.bib"},"thumbnail":{"src":"/content/papers/assets/d5560386911d14104af5e1609a50f0af6db4f571f764de0e5f60f48ff30f4584.jpg","width":904,"height":772},"locale":"zh-hans","path":"/content/papers/zh-hans/object-detection/tood.21658b52e041.md","headings":[{"id":"定义问题","text":"定义问题","depth":2},{"id":"解决问题","text":"解决问题","depth":2},{"id":"任务互动特征","text":"任务互动特征","depth":3},{"id":"tap-的层级注意力","text":"TAP 的层级注意力","depth":3},{"id":"显式对齐m-与-o","text":"显式对齐：M 与 O","depth":3},{"id":"任务对齐的样本指派","text":"任务对齐的样本指派","depth":3},{"id":"损失设计","text":"损失设计","depth":3},{"id":"讨论","text":"讨论","depth":2},{"id":"t-head-值不值得换","text":"T-head 值不值得换？","depth":3},{"id":"tal-效果测试","text":"TAL 效果测试","depth":3},{"id":"完整体-tood","text":"完整体 TOOD","depth":3},{"id":"和-sota-比较","text":"和 SOTA 比较","depth":3},{"id":"对齐真的发生了吗","text":"「对齐」真的发生了吗？","depth":3},{"id":"错位如何被改善","text":"错位如何被改善？","depth":3},{"id":"结论","text":"结论","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"object-detection/fcos","relation":"comparison","topic":"分类分数与定位质量的对齐"},{"id":"object-detection/gfl","relation":"comparison","topic":"分类分数与定位质量的对齐"}]}],"text":"YOLO26 是 Ultralytics 推出的实时目标检测模型。Ultralytics 是维护 `ultralytics` 开源库的公司，YOLOv5、YOLOv8、YOLO11 都出自他们之手。给 YOLO26 一张照片，它返回一串框，每个框附带类别和置信度分数；同一套骨干网络也用来做实例分割、姿态估计、旋转框检测和图像分类。模型分成 n、s、m、l、x 五种尺寸，最小的 n 版只有 240 万个参数，主打手机、嵌入式开发板这类算力有限的边缘设备。\n\n它在 2025 年 9 月 25 日 Ultralytics 于伦敦举办的 YOLO Vision 2025 上首次亮相，2026 年 1 月 14 日随 `ultralytics` 8.4.0 正式发布。发布说明的第一个重点是原生的端到端设计，推理完全不需要 NMS 后处理；后面跟着 CPU 推理快 43%、新的 MuSGD 优化器，以及去掉 DFL。[Ultralytics 博客，2025-09-29](https://www.ultralytics.com/blog/ultralytics-key-highlights-from-yolo-vision-2025)、[Ultralytics v8.4.0](https://github.com/ultralytics/ultralytics/releases/tag/v8.4.0)\n\n论文到 2026 年 6 月才上 arXiv。Ultralytics 之前的几代 YOLO 都只有代码和在线文档，这篇论文引用 YOLOv8 和 YOLO11 时，还在参考文献后面注明「no formal paper」。这次总算能看到每项设计背后的理由和消融实验。\n\n2024 年的 YOLOv10 已经让两个输出头一起训练，推理时把一对多的头丢掉，只用一对一的头。YOLO26 把两个头都留在同一份权重里；论文里的默认选择是不接 NMS 的一对一头，最在意准确率时，也可以改走一对多的头再接 NMS。\n\n两个头一起练，训练时的力气该怎么分？部署用的那个头，准确率又会差多少？这篇论文的方法和实验，大多围绕着这两个问题。\n\n\n> [!NOTE]\n> \n> 如果你对 NMS 和一对一匹配还不熟，先补一点背景。YOLO 在每个位置都会猜一个框，训练时又让一个物体附近好几个位置都当正样本（一对多），所以推理时同一个物体会冒出好几个框，要靠 NMS 按分数排序、把重叠太多的同类框删掉。一对一的匹配方式让每个物体只对应一个正样本，模型学会每个物体只报一次，推理时就不需要 NMS。YOLOv10 的双头设计，可以参考我们的笔记：\n> \n> - **[[24.05] YOLOv10：NMS，再见](/blog/papers/object-detection/yolov10)**\n\n\n## 定义问题\n\n作者认为，YOLO 能一直是业界最普及的实时检测器，有两个原因。一是只用标准的卷积运算，可以直接导出到 TensorRT、ONNX、CoreML、TFLite、OpenVINO、NCNN、ExecuTorch 等推理环境；二是同一套骨干网络与 neck 可以同时支持检测、分割、姿态等任务。RT-DETR、D-FINE、DEIM、RF-DETR 这些 DETR 系列的实时模型，准确率已经追上来，但作者认为它们常依赖大型预训练骨干网络、可变形注意力这类自定义算子，或固定的输入分辨率，部署到各种硬件时比较麻烦。这是 Ultralytics 自己的立场，后面读比较表时要记得。\n\n接着，作者列出现有 YOLO 检测器的四个局限：\n\n1. **NMS 与双头训练**。多数 CNN 检测器推理时仍要靠 NMS 删重复框。YOLOv10 用双头去掉了 NMS，但两个头从头到尾用相同的损失权重；作者认为，推理时唯一会用到的一对一头，因此没有练到它能达到的水平。\n2. **DFL 的参数与范围**。YOLOv8 以来的 DFL，把每个位置的框从 4 个数字扩展成 4K 个 logits（通常 K=16），头部参数随之膨胀。YOLO11n 去掉 DFL，参数从 2.6M 降到 2.3M，GFLOPs 从 6.5 降到 5.2。DFL 也限制了框最多能画多大。\n3. **训练太长**。标准的 SGD 配方大约要 600 个 epoch，才能在 COCO 上拿到有竞争力的准确率，想快速验证新想法的成本很高。\n4. **最小的物体分不到正样本**。TAL 这类标签分配只考虑中心点落在标注框里的位置；物体比最小的 stride 还小时，框里可能一个位置都没有，它在整个训练过程中都不贡献梯度。\n\nYOLO26 以 YOLO11 为基础，针对这四点，依次用双头加上渐进式损失（Progressive Loss，Ultralytics 的博客写成 ProgLoss）、直接回归取代 DFL、MuSGD 优化器，以及 STAL（Small-Target-Aware Label Assignment）。\n\n## 解决问题\n\n### 训练流程\n\n论文 Figure 2 画出了整个训练流程，从左往右看。\n\n[![YOLO26 训练流程图：最左边是 Backbone + Neck，分出两条线，上面是 One-to-Many Branch（TAL topk = 10），下面是 One-to-One Branch（TAL topk = 7, topk2 = 1）；两条线都进入 Task-Aligned Assignment，再分别算 One-to-Many Loss 与 One-to-One Loss，交给 Progressive Loss Weighting（一对多权重从 0.8 降到 0.1），最后接到 MuSGD Optimizer](/content/papers/assets/81b8a4e821bdb84f6040563add1c1f2341963826d993348c64cab2715e5d6e93.png)](/content/papers/assets/81b8a4e821bdb84f6040563add1c1f2341963826d993348c64cab2715e5d6e93.png)\n\n*Jocher 等人，原论文 Figure 2，取自 [**v1 PDF 第 6 页**](https://arxiv.org/pdf/2606.03748v1#page=6)，CC BY 4.0。YOLO26 的训练流程。*\n\n骨干网络与 neck 抽取多尺度特征，同时交给两个检测头。两个头都用 TAL（Task-Aligned Assignment）挑正样本，一对多的头标着 topk = 10，一对一的头标着 topk = 7、topk2 = 1。两边各自算出框与类别的损失，交给渐进式损失加权相加，最后由 MuSGD 更新参数。图上没画 STAL，它藏在 TAL 挑候选的那一步。\n\n论文 Table 1 列出这些组件在 ultralytics 库里的名字。双头写在 `Detect`，直接回归对应 `reg_max=1`，STAL 在 `TaskAlignedAssigner` 里，渐进式损失是 `E2ELoss`，优化器就叫 `MuSGD`。下面提到的实现细节，以 8.4.0 版的代码为准。\n\n### 两个头，各挑各的正样本\n\n一张 640×640 的照片，经过 stride 8、16、32 三层特征图，大小分别是 80×80、40×40、20×20，加起来共 8,400 个位置。两个头在每个位置都输出一组类别分数和一个框，差别只在训练时哪些位置算正样本。\n\nTAL 为每个位置对每个标注物体打一个分数，分类和定位都准，分数才高。Ultralytics 的实现写成 $s^{0.5}\\cdot u^{6}$，$s$ 是该位置对标注类别的分数，$u$ 是预测框和标注框的 IoU；YOLOv10 让两个头共用的一致匹配指标，用的也是这组指数。打分之前，只有中心点落在标注框内的位置，才能当候选。\n\n- **一对多的头**：每个物体最多取分数前 10 名当正样本。推理时输出形状 `(N, nc+4, 8400)`，`N` 是批次大小，`nc` 是类别数，之后要接 NMS。\n- **一对一的头**：先取前 7 名当候选，处理完同一个位置被好几个物体争抢的情况，每个物体只留第 1 名。推理时从 8,400 个位置挑分数最高的 300 个，输出 `(N, 300, 6)`，每一行是框的四个坐标、分数和类别，不做任何 IoU 抑制。\n\n两个头交出来的东西差很多。以 COCO 的 80 类来说，一对多的头每张图输出 84×8,400 = 705,600 个数字，NMS 得从 8,400 个候选里筛选；一对一的头只有 300×6 = 1,800 个。\n\n\n> [!NOTE]\n> \n> 训练时，一对一的头接收 `detach()` 过的特征，它的梯度不会回流到骨干网络与 neck；共用的特征只由一对多头的损失塑造。这个细节论文没写，目前 main 分支在这行加了注释「detach keeps one2one out of the backbone」。YOLOv10 的官方实现也是这样接的。\n\n\n### 渐进式损失\n\n渐进式损失决定两个头的损失怎么相加。论文的式 (2)、(3) 是：\n\n$$\n\\mathcal{L}_{\\text{total}} = \\alpha(t)\\,\\mathcal{L}_{\\text{one2many}} + \\bigl(1-\\alpha(t)\\bigr)\\,\\mathcal{L}_{\\text{one2one}}\n$$\n\n$$\n\\alpha(t) = \\max\\!\\left(1-\\frac{t}{\\max(E-1,\\,1)},\\ 0\\right)\\bigl(\\alpha_{\\text{init}}-\\alpha_{\\text{final}}\\bigr)+\\alpha_{\\text{final}}\n$$\n\n$t$ 是当前的 epoch（从 0 数起），$E$ 是总 epoch 数。实现中 $\\alpha_{\\text{init}}=0.8$、$\\alpha_{\\text{final}}=0.1$，每个 epoch 结束更新一次（§4.1）。换句话说，一对多和一对一的权重从 0.8 比 0.2 出发，沿直线走到 0.1 比 0.9。\n\n作者的理由是，一对多的头正样本多，前期好练，能先把特征稳住；一对一的头条件严格，最后却是它决定部署时的输出。像 YOLOv10 那样从头到尾用固定权重，部署用的头就分不到足够的力气。\n\n我们拿一个 100 个 epoch 的训练算一次：\n\n```python\ndef o2m_weight(t, E, a_init=0.8, a_final=0.1):\n    # 论文式 (3)：t 是当前的 epoch（从 0 数起），每个 epoch 结束更新一次\n    return max(1 - t / max(E - 1, 1), 0) * (a_init - a_final) + a_final\n\nE = 100\nfor t in (0, 25, 42, 43, 75, 99):\n    a = o2m_weight(t, E)\n    print(f\"epoch {t:>2}：一对多 {a:.3f}，一对一 {1 - a:.3f}\")\n```\n\n```text\nepoch  0：一对多 0.800，一对一 0.200\nepoch 25：一对多 0.623，一对一 0.377\nepoch 42：一对多 0.503，一对一 0.497\nepoch 43：一对多 0.496，一对一 0.504\nepoch 75：一对多 0.270，一对一 0.730\nepoch 99：一对多 0.100，一对一 0.900\n```\n\n第 42 和第 43 个 epoch 之间，两边的权重交叉。一般来说，$\\alpha(t)=0.5$ 落在 $t/(E-1)=3/7$，也就是训练进行到大约 43% 时，一对一的头开始分到比较多的权重。\n\n再接回刚才的 `detach()`。骨干网络与 neck 的梯度只来自一对多的损失，系数是 $\\alpha(t)$，从 0.8 降到 0.1；一对一的头只更新自己那组卷积，系数从 0.2 升到 0.9。每一步实际更新多少，还要看优化器；MuSGD 里 Muon 那部分会先把更新矩阵正交化，幅度几乎不受梯度倍率影响。\n\n### 去掉 DFL\n\nDFL（Distribution Focal Loss）出自 GFL。框的每条边离中心点多远，它不直接回归一个数字，而是在 K 个格子上预测一个概率分布，再取期望值：\n\n$$\nd=\\sum_{i=0}^{K-1} i\\cdot\\operatorname{softmax}(z)_i,\\qquad z\\in\\mathbb{R}^{K}\n$$\n\nYOLOv8 到 YOLO11 都用 K=16，这带来两笔成本。\n\n第一笔是输出量。每个位置的框，从 4 个数字变成 64 个 logits；8,400 个位置算下来，是 537,600 个对 33,600 个。\n\n第二笔是范围。期望值 $d$ 最大只到 $K-1=15$，再乘上 stride，每条边最远 15 个 stride。在 stride 32 那层，一条边最远 480 像素，框宽上限约 960 像素。输入放大到 1280 时，大物体就可能超出范围。\n\n参数省在哪里，要看 Ultralytics 检测头的写法。框分支的通道宽度是 `max(16, ch // 4, 4 * reg_max)`，`ch` 是最浅那层特征（stride 8）的通道数。YOLO11n 的 `ch` 是 64，有 DFL 时 `reg_max=16`，宽度是 max(16, 16, 64) = 64；去掉 DFL 后 `reg_max=1`，宽度降到 16。按这个公式数三层框分支的参数，有 DFL 约 38.2 万，没有 DFL 约 7.2 万，差 31 万，和论文说的 2.6M 降到 2.3M 对得上。同样的算法套到 m 版，`ch // 4` 本来就是 64，两边宽度一样，只差约 1.2 万个参数。DFL 的参数成本，主要压在 n 和 s 两个小模型上。\n\nYOLO26 改成直接预测四个距离（`reg_max=1`），另外加上 L1 损失。如果你读 YOLO26 的训练配置，会发现 `dfl` 这个字段还在；它在 YOLO26 里改成了 L1 回归损失的权重（附录 S3），数值非零时，开启的也是 L1 损失。\n\n\n> [!TIP]\n> \n> DFL 的来历，可以参考我们的笔记：\n> \n> - **[[20.06] GFL：融合的焦点](/blog/papers/object-detection/gfl)**\n\n\n### STAL\n\n前面提过，TAL 只在中心点落在标注框里的位置挑候选。一个 6×6 像素的物体，如果刚好夹在 stride 8 那层两排中心点之间，就一个候选都没有。STAL 只改挑候选这一步，把宽或高小于最小 stride（8 像素）的边，撑成下一层的 stride（16 像素）；之后的打分、匹配和框回归，用的仍是原来的框。\n\n我们放一个中心在 (96, 96) 的 6×6 物体试试看：\n\n```python\ndef centers(stride, size=640):\n    # 每个网格的中心坐标（像素），例如 stride 8 是 4, 12, 20, ...\n    return [(i + 0.5) * stride for i in range(size // stride)]\n\ndef n_candidates(cx, cy, w, h, stride):\n    x1, x2, y1, y2 = cx - w / 2, cx + w / 2, cy - h / 2, cy + h / 2\n    xs = [c for c in centers(stride) if x1 < c < x2]\n    ys = [c for c in centers(stride) if y1 < c < y2]\n    return len(xs) * len(ys)\n\ndef stal(w, h, s_min=8, s_ref=16):\n    # 只在挑候选时，把小于最小 stride 的边撑到 s_ref\n    return (s_ref if w < s_min else w), (s_ref if h < s_min else h)\n\ncx, cy, w, h = 96, 96, 6, 6\nfor name, (bw, bh) in [(\"原来的框\", (w, h)), (\"STAL 撑开后\", stal(w, h))]:\n    counts = {s: n_candidates(cx, cy, bw, bh, s) for s in (8, 16, 32)}\n    print(f\"{name} {bw}×{bh}：\", counts, \"合计\", sum(counts.values()))\n```\n\n```text\n原来的框 6×6： {8: 0, 16: 0, 32: 0} 合计 0\nSTAL 撑开后 16×16： {8: 4, 16: 0, 32: 0} 合计 4\n```\n\n原来的框从 93 到 99，stride 8 的中心点在 92 和 100，刚好都落在框外；另外两层更稀，也没有。撑成 16×16 后，框从 88 到 104，stride 8 那层的 92 和 100 都进来了，两个方向各两个，共 4 个候选。\n\n这个位置是特意挑的。我们另外把物体随机摆在整张图上，各试两万次。2×2、4×4、6×6 的物体，分别有约 92%、67%、34% 的摆法一个候选都没有；撑开之后，每一次都至少有一个候选。这只算挑候选这一步，最后谁当正样本，还要看 TAL 的分数。\n\n\n> [!TIP]\n> \n> TAL 的打分方式出自 TOOD，可以参考我们的笔记：\n> \n> - **[[21.08] TOOD：错位的终结](/blog/papers/object-detection/tood)**\n\n\n### MuSGD\n\nMuSGD 混合了两种优化器。Muon 先照常累积动量，再用几步 Newton–Schulz 迭代把这个更新矩阵正交化；论文引用 Moonshot AI 的研究，说它在大型语言模型训练上，计算效率约为 AdamW 的两倍。MuSGD 对卷积核、线性层这类多维参数，把 Muon 和 SGD 的更新按比例相加；偏置、归一化层的缩放这类一维参数，只用 SGD。发布说明提到，这个想法来自 Moonshot AI 的 Kimi K2。\n\n论文还为分割、姿态、旋转框各自设计了头和损失，也把开放词汇的 YOLOE 换上 YOLO26 的检测器，做成 YOLOE-26。这篇笔记只看目标检测。\n\n## 讨论\n\n### 从 YOLO11s 一步一步走到 YOLO26s\n\n论文 Table 2 从 YOLO11s 出发，一次加一项改动。表中的 E2E 指一对一的头、不接 NMS；非 E2E 指一对多的头接 NMS。\n\n| 步骤 | AP（E2E） | AP（非 E2E） | 参数（M） | GFLOPs | 延迟（ms） |\n| --- | ---: | ---: | ---: | ---: | ---: |\n| YOLO11s 基线 | – | 47.0 | 9.4 | 21.5 | 2.5 |\n| 去掉 DFL | – | 46.4 | 9.1 | 20.1 | 2.3 |\n| 加上 L1 损失 | – | 46.6 | 9.1 | 20.1 | 2.3 |\n| 加上 STAL | – | 46.8 | 9.1 | 20.1 | 2.3 |\n| 微调骨干网络与 neck | – | 47.0 | 9.5 | 20.7 | 2.5 |\n| 加上一对一的头 | 46.4 | 47.0 | 9.5 | 20.7 | 2.5 |\n| 渐进式损失 | 46.7 | 47.2 | 9.5 | 20.7 | 2.5 |\n| MuSGD | 47.1 | 47.6 | 9.5 | 20.7 | 2.5 |\n| Objects365 预训练 | 47.4 | 48.0 | 9.5 | 20.7 | 2.5 |\n| 超参数搜索 | 47.8 | 48.6 | 9.5 | 20.7 | 2.5 |\n\n*表：原论文 Table 2。*\n\n1. **去掉 DFL 先掉 0.6 AP**，L1 损失、STAL、骨干网络与 neck 的微调（在 neck 多插一层注意力）各补回 0.2。四步走完，AP 回到 47.0，GFLOPs 从 21.5 降到 20.7，延迟持平。\n2. **加上一对一的头，一对多那条路没有变差**，仍是 47.0；一对一的头是 46.4，差 0.6。\n3. **渐进式损失让一对一的头多了 0.3**，一对多的头也多了 0.2。\n4. **最后两行和架构无关**。一对多的头从 47.0 走到 48.6，这 1.6 AP 里有 1.0 来自 Objects365 预训练和超参数搜索。\n\n这组消融没有写训练了几个 epoch，每行也只有一次结果。论文没有报告多次训练的波动，0.2 到 0.4 AP 的差距要保守看待。\n\n### 权重的安排\n\nTable 5 在同一个 YOLO11s 设置上比较了六种安排，数字是一对一的头不接 NMS 的 AP：\n\n| 起点（一对多, 一对一） | 终点（一对多, 一对一） | AP（E2E） |\n| --- | --- | ---: |\n| (0.5, 0.5) | (0.5, 0.5) | 46.4 |\n| (1.0, 0.0) | (0.1, 0.9) | 46.4 |\n| (1.0, 0.0) | (0.2, 0.8) | 46.4 |\n| (1.0, 0.0) | (0.3, 0.7) | 46.3 |\n| (0.8, 0.2) | (0.1, 0.9) | 46.7 |\n| (0.9, 0.1) | (0.1, 0.9) | 46.3 |\n\n*表：原论文 Table 5，以 YOLO11s 为基础。*\n\n固定 0.5 比 0.5 是 46.4，默认的 0.8 比 0.2 走到 0.1 比 0.9 是 46.7，这两格正好对上 Table 2 里「加上一对一的头」和「渐进式损失」那两行。一对一的权重从 0 起跑的三种安排，落在 46.3 到 46.4，没有比固定权重好。作者据此认为，一对一的头要从一开始就有一点监督，再慢慢加重。\n\n不过表上 0.9 比 0.1 起跑的结果是 46.3，和从 0 起跑的安排不相上下，「从一开始给一点」也还谈不上是规律。保守一点看，在这个设置下，默认安排比固定权重多 0.3 AP，其他安排和固定权重的差距都在 0.1 以内。\n\n### 另外三组消融\n\n1. **DFL**。Table 3 用 YOLO26s 的设置从头训练，只差有没有 DFL。640 分辨率下，去掉 DFL 的 AP 从 46.0 升到 46.3，大目标的 $\\text{AP}_L$ 从 62.8 升到 63.8；1280 分辨率下，AP 从 49.8 升到 51.1，$\\text{AP}_L$ 从 61.8 升到 64.0，小、中目标则略降。和 Table 2 在 YOLO11s 上掉 0.6 对照，去掉 DFL 的得失要看其他设置；作者把高分辨率下的大目标增益，归因于 DFL 的范围上限。表上没有注明是哪个头的 AP。\n2. **MuSGD**。Table 4 从头训练 COCO，SGD 练 600 个 epoch 得 47.0，MuSGD 练 500 个 epoch 得 47.4。论文没有注明模型尺寸，也没有报告实际训练时间；Newton–Schulz 迭代每一步都要多算，epoch 少了 16.7%，省下的时间未必有这么多。ImageNet 分类的对照（附录 Table S1）里，五种尺寸的 top-1 都提高了 0.4 到 1.4。\n3. **STAL**。Table 6 以 YOLO11s 为基础，原来的 TAL 是 46.6，小目标 $\\text{AP}_S$ 是 29.0；撑到 16 像素时是 46.8，$\\text{AP}_S$ 29.6。撑到 8 像素，$\\text{AP}_S$ 反而掉到 27.7；撑到 32 像素，整体掉到 46.5。默认的 16 像素，整体多 0.2 AP。\n\n### 两个头差多少\n\nTable 7 是发布模型在 COCO 上的成绩，两个头的准确率都列了：\n\n| 模型 | mAP（一对多＋NMS） | mAP（一对一） | 差距 | T4 TensorRT（ms） | CPU ONNX（ms） | 参数（M） |\n| --- | ---: | ---: | ---: | ---: | ---: | ---: |\n| YOLO26n | 40.9 | 40.1 | 0.8 | 1.7 | 38.9 | 2.4 |\n| YOLO26s | 48.6 | 47.8 | 0.8 | 2.5 | 87.2 | 9.5 |\n| YOLO26m | 53.1 | 52.5 | 0.6 | 4.7 | 220.0 | 20.4 |\n| YOLO26l | 55.0 | 54.4 | 0.6 | 6.2 | 286.2 | 24.8 |\n| YOLO26x | 57.5 | 56.9 | 0.6 | 11.8 | 525.8 | 55.7 |\n\n*表：原论文 Table 7，COCO val2017、输入 640×640；「差距」一列为本文计算。CPU 是 Intel Xeon @ 2.00 GHz 运行 ONNX。*\n\n五种尺寸，一对一的头都比一对多加 NMS 少 0.6 到 0.8 AP。作者在 §4.4 写道，如果目标平台能高效地运行 NMS、又最在意 AP，仍然可以优先用一对多的头；部署的简洁、集成方便或不接 NMS 比较重要时，再走默认的一对一头。\n\n和 YOLOv10 比一下差距。YOLOv10 论文写的差距是 N 版 1.0、S 版 0.5，M、B、L 版 0.2，X 版 0。不过 YOLOv10 用另一个只做一对多训练、再接 NMS 的模型来对照；YOLO26 则直接比较同一份权重里的两个头。两组数字测的东西不一样，没法说哪一边的一对一头练得更好。YOLO26 的差距在大模型上也没有消失，x 版仍有 0.6。\n\n一对一的头也不保证没有重复框。2026 年 7 月有人报告 YOLO26n-obb 的预测里有几乎重叠的重复框，Ultralytics 的协作者回复说 YOLO26n 偶尔会这样，需要时可以再接 NMS，框不多，应该很快。[ultralytics #25304](https://github.com/ultralytics/ultralytics/issues/25304)\n\n论文 §3.5 也写到，有些 runtime 不支持端到端解码需要的 top-K 运算，导出时会自动退回一对多的头。Ultralytics 的端到端指南列出 NCNN、RKNN、Edge TPU、Qualcomm QNN 等格式，在算子撑不起端到端输出时都会这样退回。[Ultralytics 端到端检测指南](https://docs.ultralytics.com/guides/end2end-detection/)\n\n### 头条数字来自两个头\n\n论文摘要写 YOLO26 在 COCO 上有 40.9–57.5 mAP、T4 TensorRT 延迟 1.7–11.8 ms。准确率这一段，是 Table 7 里一对多加 NMS 的成绩；Ultralytics 文档的脚注则写着，延迟用不接 NMS 的一对一头（`nms=False`）来测。部署时不接 NMS，对应的准确率是 40.1 到 56.9；走一对多的头，延迟要再加上表里没有的 NMS 时间。[YOLO26 文档](https://docs.ultralytics.com/models/yolo26/)\n\n分割模型的附录 Table S9 把两个头的延迟分开列，两边都不含 NMS。n 版在 T4 上，一对一的头 2.1 ms，一对多的头 2.0 ms；x 版是 16.4 ms 对 16.8 ms。只看模型本身，两条路差不多快，一对一的头省下 NMS 那一步。\n\nCPU 快 43% 也有条件。论文写明，这是 YOLO26n 对 YOLO11n、在 Intel Xeon CPU 上运行 ONNX 的比较。根据两份官方文档的表格，YOLO11n 是 56.1 ms，YOLO26n 是 38.9 ms，按吞吐量算是 1.44 倍，换成延迟是少了约 31%。其他尺寸逐一对照，s 版从 90.0 ms 到 87.2 ms，差不多；m、l、x 版的 YOLO26 反而比 YOLO11 慢 14% 到 20%。T4 上，n 版是 1.5 ms 对 1.7 ms，YOLO26 稍慢。YOLO11 的文档没有说明延迟含不含 NMS。[YOLO11 文档](https://docs.ultralytics.com/models/yolo11/)\n\n再看论文的主图。纵轴是 COCO 的 mAP，横轴是 T4、TensorRT10、FP16 的延迟：\n\n[![COCO val2017 上的准确率与延迟散点图：横轴是 T4 TensorRT10 FP16 延迟（0 到 16 毫秒），纵轴是 COCO mAP 50-95（37.5 到 57.5）。深蓝色的 YOLO26 曲线从 26n（约 1.7 毫秒、40.9）连到 26x（约 11.8 毫秒、57.5），位于其他曲线上方；其他曲线是 YOLO11、YOLOv10、YOLOv9、YOLOv8、YOLOv7、YOLOv6-3.0、YOLOv5、PP-YOLOE+、DAMO-YOLO 与 RTMDet](/content/papers/assets/ab67bb3bd246062be0c7a56a363c356177cca42c6e7349343402535b7b723f2c.png)](/content/papers/assets/ab67bb3bd246062be0c7a56a363c356177cca42c6e7349343402535b7b723f2c.png)\n\n*Jocher 等人，原论文 Figure 1，取自 [**v1 PDF 第 1 页**](https://arxiv.org/pdf/2606.03748v1#page=1)，CC BY 4.0。COCO val2017 上的准确率与延迟。*\n\n深蓝色那条是 YOLO26，它的点沿用上面那组数字，一对多加 NMS 的 mAP，配上一对一头的延迟。其他线全是 YOLO 系列，外加 PP-YOLOE+、DAMO-YOLO、RTMDet 三个 CNN 检测器。\n\n论文登上 Hacker News 时，一位自称 Roboflow 联合创始人的用户质疑，论文主图只放了一个 2022 年的 DETR，却宣称有最好的 AP–延迟权衡。Roboflow 开发了 RF-DETR，是 Ultralytics 的直接竞争者。[Hacker News，2026-06-23](https://news.ycombinator.com/item?id=48639434) 实际看图，里面一个 DETR 系列的模型都没有。DETR 系列的实时模型只出现在附录 Table S8，有 RT-DETRv2、D-FINE、DEIM；论文引言提到的 RF-DETR，没有放进比较。\n\nTable S8 的 x 档里，YOLO26x 是 57.5 AP、11.8 ms，DEIM-X 是 56.5 AP、12.9 ms，D-FINE-X 是 55.8 AP、12.9 ms。这里 YOLO26 的 AP 同样来自一对多加 NMS，延迟来自一对一的头；YOLO26 也先在 Objects365 上预训练过，D-FINE 和 DEIM 那几行却是只用 COCO 训练的版本。D-FINE 自己公布的 Objects365 预训练版本，X 是 59.3 AP。[D-FINE](https://github.com/Peterande/D-FINE) DETR 这边怎么测延迟、怎么看 NMS 的时间，可以对照 [RF-DETR](/blog/papers/object-detection/rf-detr) 那篇笔记。\n\n## 结论\n\nYOLO26 留着两个头，用渐进式损失把训练的重心从一对多慢慢移到一对一，再去掉 DFL、换上 MuSGD、补上 STAL。论文给出的证据，整理起来大概是这几件：\n\n1. **一对一的头在五种尺寸上都少 0.6 到 0.8 AP**，换来不接 NMS、最多 300 个框的固定输出。\n2. **渐进式损失的直接证据是一组消融**。在 YOLO11s 上，默认安排比固定权重多 0.3 AP；从 0 起跑的安排没有比固定权重好。\n3. **去掉 DFL 省下的参数集中在 n、s**，高分辨率下对大目标比较有利。STAL 让小于 8 像素的物体一定有候选，整体多 0.2 AP。\n4. **和 YOLO11 的差距里，有一部分来自训练配方**。s 版的 1.6 AP 里，1.0 来自 Objects365 预训练与超参数搜索。\n\n论文写成时，默认还是一对一的头。2026 年 9 月 5 日发布的 `ultralytics` 8.4.142，把 YOLO26 预测与验证的默认改成一对多的头加 NMS，理由是它通常比不接 NMS 的一对一头准确；想走不接 NMS 的头，得自己设 `nms=False`。两个头仍然都会训练，只是验证、挑选检查点和早停，改为跟着选定的头走。[Ultralytics v8.4.142](https://github.com/ultralytics/ultralytics/releases/tag/v8.4.142)\n\n所以拿 YOLO26 和其他检测器比较之前，先决定部署走哪一个头，再拿同一个头的准确率和延迟去比，Ultralytics 的端到端指南也是这样建议的。要跑在 CPU 上，n 版的加速最明显，m 以上在官方表格里比 YOLO11 慢。HN 上也有人说，在自家的足球视频任务上，YOLO26 的表现不如 v9 和 v11，只是没附数字；换到自己的数据上，还是要自己测一次。另外，`ultralytics` 库采用 AGPL-3.0，拿去做产品前，许可证也要一起确认。\n","imageSizes":{"/content/papers/assets/81b8a4e821bdb84f6040563add1c1f2341963826d993348c64cab2715e5d6e93.png":{"width":1494,"height":367},"/content/papers/assets/ab67bb3bd246062be0c7a56a363c356177cca42c6e7349343402535b7b723f2c.png":{"width":1362,"height":633}}}
