{"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-hant","path":"/content/papers/zh-hant/object-detection/yolo26.d18cbd56db3d.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-hant","path":"/content/papers/zh-hant/object-detection/yolov10.f7c8787f1a99.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-hant","path":"/content/papers/zh-hant/object-detection/gfl.72de69e29ffb.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-hant","path":"/content/papers/zh-hant/object-detection/tood.b1822ad5c2cd.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}}}
