{"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":"ja","path":"/content/papers/ja/object-detection/yolo26.7b4b305d4182.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"学習の流れ","text":"学習の流れ","depth":3},{"id":"2つのヘッドがそれぞれ自分の正例を選ぶ","text":"2つのヘッドが、それぞれ自分の正例を選ぶ","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":"ほかの3つのアブレーション","text":"ほかの3つのアブレーション","depth":3},{"id":"2つのヘッドの差はどれくらいか","text":"2つのヘッドの差はどれくらいか","depth":3},{"id":"見出しの数字は2つのヘッドから来ている","text":"見出しの数字は2つのヘッドから来ている","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":"ja","path":"/content/papers/ja/object-detection/yolov10.1a0519be94bb.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":"ja","path":"/content/papers/ja/object-detection/gfl.13d38efa879e.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":{"解決問題":"問題の解決","qflクラススコアに品質を入れる":"quality-focal-loss","dfl一つの距離を分布へ":"distribution-focal-loss","一つの一般式二つの使い道":"generalized-focal-loss","実験結果と考察":"議論","qflスコアは順位付けに役立つか":"qfl-は有効か","dfl枠の分布は何を加えるか":"dfl-は有効か","qfl-と-dfl-を合わせる":"generalized-focal-loss"},"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":"ja","path":"/content/papers/ja/object-detection/tood.1b5665022e76.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 に写真を1枚渡すとボックスの列が返ってきて、各ボックスにはクラスと信頼度スコアが付いています。同じバックボーンは、インスタンスセグメンテーション、姿勢推定、回転ボックス検出、画像分類にも使われます。モデルは n、s、m、l、x の5サイズがあり、最小の n 版はパラメータがわずか240万個で、スマートフォンや組み込みボードのような計算資源の限られたエッジデバイスを主な対象にしています。\n\nYOLO26 は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論文が arXiv に載ったのは2026年6月になってからです。Ultralytics のこれまでの YOLO はどれもコードとオンラインドキュメントしかなく、この論文も YOLOv8 と YOLO11 を引用する際、参考文献の後ろに「no formal paper」（正式な論文なし）と注記しています。今回ようやく、各設計の背後にある理由とアブレーション実験を見ることができます。\n\n2024年の YOLOv10 は、すでに2つの出力ヘッドを一緒に学習させ、推論時には一対多のヘッドを捨てて一対一のヘッドだけを使っていました。YOLO26 は2つのヘッドをどちらも同じ重みの中に残します。論文でのデフォルトは NMS をつながない一対一のヘッドで、精度を最も重視するときは、一対多のヘッドに切り替えて NMS をつなぐこともできます。\n\n2つのヘッドを一緒に学習させるとき、学習の力をどう配分すべきか？ デプロイに使うヘッドの精度は、どれだけ落ちるのか？ この論文の手法と実験の大半は、この2つの問いを中心に回っています。\n\n\n> [!NOTE]\n> \n> NMS や一対一マッチングになじみがなければ、まず少し背景を補っておきます。YOLO はすべての位置でボックスを1つ推測し、学習時には1つの物体の近くにあるいくつもの位置を正例にする（一対多）ので、推論時には同じ物体にボックスがいくつも出てきます。そこで NMS がスコア順に並べ、重なりすぎる同じクラスのボックスを削除します。一対一の割り当てでは各物体に正例を1つだけ割り当てるので、モデルは各物体を1回だけ報告することを覚え、推論時に NMS は要りません。YOLOv10 の二重ヘッド設計については、私たちのノートを参照してください：\n> \n> - **[[24.05] YOLOv10：NMS、さようなら](/blog/papers/object-detection/yolov10)**\n\n\n## 問題の定義\n\n著者らは、YOLO が業界で最も普及したリアルタイム検出器であり続けてきた理由を2つ挙げています。1つは、標準的な畳み込み演算だけを使うので、TensorRT、ONNX、CoreML、TFLite、OpenVINO、NCNN、ExecuTorch などの推論環境に直接エクスポートできることです。もう1つは、同じバックボーンと neck で検出、セグメンテーション、姿勢推定などのタスクを同時にサポートできることです。RT-DETR、D-FINE、DEIM、RF-DETR といった DETR 系のリアルタイムモデルは精度ではすでに追いついていますが、大型の事前学習済みバックボーンや、deformable attention のようなカスタム演算子、固定の入力解像度に頼ることが多く、さまざまなハードウェアへのデプロイが面倒だと著者らは考えています。これは Ultralytics 自身の立場なので、後で比較表を読むときに覚えておく必要があります。\n\n続いて著者らは、既存の YOLO 検出器の4つの制約を挙げています：\n\n1. **NMS と二重ヘッドの学習**。多くの CNN 検出器は、推論時に今も NMS で重複ボックスを消しています。YOLOv10 は二重ヘッドで NMS を取り除きましたが、2つのヘッドには最初から最後まで同じ損失の重みを使っていました。そのため、推論時に唯一使われる一対一のヘッドが、到達できるはずの水準まで学習しきれていないと著者らは考えています。\n2. **DFL のパラメータと範囲**。YOLOv8 以来の DFL は、各位置のボックスを4つの数から4K 個の logits に広げるもの（通常 K=16）で、ヘッドのパラメータもそれだけ膨らみます。YOLO11n から DFL を取り除くと、パラメータは2.6M から2.3M に、GFLOPs は6.5から5.2に減ります。DFL はまた、ボックスの最大の大きさも制限します。\n3. **学習が長すぎる**。標準的な SGD のレシピでは、COCO で競争力のある精度に届くまで約600 epoch かかり、新しいアイデアを素早く試すコストが高くつきます。\n4. **最小の物体に正例が回ってこない**。TAL のようなラベル割り当ては、中心点が正解ボックスの中に入る位置しか考慮しません。物体が最小の stride より小さいと、ボックスの中に位置が1つもないことがあり、その物体は学習全体を通じて勾配に寄与しません。\n\nYOLO26 は YOLO11 をベースに、この4点に対して順に、二重ヘッドと漸進的損失（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 で、2本の線に分かれる。上が One-to-Many Branch（TAL topk = 10）、下が One-to-One Branch（TAL topk = 7, topk2 = 1）。2本の線はどちらも 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 がマルチスケールの特徴を抽出し、2つの検出ヘッドに同時に渡します。どちらのヘッドも 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### 2つのヘッドが、それぞれ自分の正例を選ぶ\n\n640×640 の写真は stride 8、16、32 の3層の特徴マップを通り、その大きさはそれぞれ 80×80、40×40、20×20 で、合わせて8,400個の位置になります。2つのヘッドはどの位置でもクラススコアの組とボックスを1つずつ出力し、違うのは学習時にどの位置を正例とするかだけです。\n\nTAL は、各位置に各正解物体に対するスコアを付けます。分類と位置決めの両方が正確なときだけ、スコアが高くなります。Ultralytics の実装では $s^{0.5}\\cdot u^{6}$ と書かれていて、$s$ はその位置の正解クラスに対するスコア、$u$ は予測ボックスと正解ボックスの IoU です。YOLOv10 が2つのヘッドで共有させた一貫マッチング指標も、この指数の組を使っています。スコアを付ける前の段階では、中心点が正解ボックスの中に入る位置だけが候補になれます。\n\n- **一対多のヘッド**：各物体についてスコア上位10個までを正例にします。推論時の出力形状は `(N, nc+4, 8400)` で、`N` はバッチサイズ、`nc` はクラス数です。この後に NMS をつなぎます。\n- **一対一のヘッド**：まず上位7個を候補にし、同じ位置が複数の物体に奪い合われる場合を処理したうえで、各物体の1位だけを残します。推論時は8,400個の位置からスコアの最も高い300個を選び、`(N, 300, 6)` を出力します。各行はボックスの4つの座標、スコア、クラスで、IoU による抑制は一切行いません。\n\n2つのヘッドが出すものは大きく違います。COCO の80クラスで言えば、一対多のヘッドは1枚あたり 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」（detach で one2one をバックボーンから切り離す）というコメントが付いています。YOLOv10 の公式実装も同じようにつないでいます。\n\n\n### 漸進的損失\n\n漸進的損失は、2つのヘッドの損失をどう足し合わせるかを決めます。論文の式 (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 が終わるたびに1回更新されます（§4.1）。言い換えると、一対多と一対一の重みは0.8対0.2から出発し、直線に沿って0.1対0.9まで進みます。\n\n著者らによれば、一対多のヘッドは正例が多いので前半に学習しやすく、まず特徴を安定させられます。一対一のヘッドは条件が厳しいものの、デプロイ時の出力を最終的に決めるのはこちらです。YOLOv10 のように最初から最後まで固定の重みを使うと、デプロイに使うヘッドに十分な力が配分されません。\n\n100 epoch の学習で一度計算してみます：\n\n```python\ndef o2m_weight(t, E, a_init=0.8, a_final=0.1):\n    # 論文の式 (3)：t は現在の epoch（0から数える）、epoch が終わるたびに1回更新\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 epoch と第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 に由来します。ボックスの各辺が中心点からどれだけ離れているかを1つの数として直接回帰する代わりに、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 を使っていて、これが2つのコストをもたらします。\n\n1つ目は出力の量です。各位置のボックスが4つの数から64個の logits になり、8,400個の位置で計算すると 537,600 個対 33,600 個です。\n\n2つ目は範囲です。期待値 $d$ は最大でも $K-1=15$ までで、stride を掛けると、各辺は最大で15 stride 分です。stride 32 の層では1辺が最大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に下がります。この式で3層のボックス分岐のパラメータを数えると、DFL ありで約38.2万、DFL なしで約7.2万、差は31万で、論文の言う2.6M から2.3M への減少と合います。同じ計算を m 版に当てはめると、`ch // 4` がもともと64なので両者の幅は同じで、差は約1.2万パラメータだけです。DFL のパラメータコストは、主に n と s の2つの小さなモデルにのしかかっています。\n\nYOLO26 は4つの距離を直接予測する方式（`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 の層の中心点の2列の間にちょうど挟まると、候補は1つもありません。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にあり、ちょうどどちらもボックスの外です。ほかの2層はさらに疎で、やはり入りません。16×16 に広げると、ボックスは88から104までになり、stride 8 の層の92と100がどちらも入ります。2方向にそれぞれ2つで、候補は計4つです。\n\nこの位置はわざと選んだものです。別途、物体を画像全体にランダムに置いて、それぞれ2万回試しました。2×2、4×4、6×6 の物体では、それぞれ約92%、67%、34% の置き方で候補が1つもありません。広げた後は、毎回少なくとも1つの候補があります。これは候補を選ぶ段階だけを数えたもので、最終的にどれが正例になるかは 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 は2種類のオプティマイザを混ぜたものです。Muon はまず通常どおりモーメンタムを蓄積し、それから数ステップの Newton–Schulz 反復でこの更新行列を直交化します。論文は Moonshot AI の研究を引いて、大規模言語モデルの学習では計算効率が AdamW の約2倍だとしています。MuSGD は、畳み込みカーネルや線形層のような多次元のパラメータには Muon と SGD の更新を比率に応じて足し合わせ、バイアスや正規化層のスケールのような1次元のパラメータには SGD だけを使います。リリースノートによると、このアイデアは Moonshot AI の Kimi K2 から来ています。\n\n論文はさらに、セグメンテーション、姿勢推定、回転ボックスのそれぞれにヘッドと損失を設計し、オープンボキャブラリの YOLOE に YOLO26 の検出器を載せて YOLOE-26 も作っています。このノートでは物体検出だけを扱います。\n\n## 考察\n\n### YOLO11s から一歩ずつ YOLO26s へ\n\n論文の Table 2 は YOLO11s から出発し、変更を1つずつ加えていきます。表の 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 に注意層を1つ追加）がそれぞれ0.2ずつ取り戻します。4ステップを終えると AP は47.0に戻り、GFLOPs は21.5から20.7に減り、レイテンシは変わりません。\n2. **一対一のヘッドを加えても、一対多の経路は悪化していません**。47.0のままです。一対一のヘッドは46.4で、差は0.6です。\n3. **漸進的損失で一対一のヘッドが0.3伸び**、一対多のヘッドも0.2伸びています。\n4. **最後の2行はアーキテクチャとは無関係です**。一対多のヘッドは47.0から48.6まで進み、この1.6 AP のうち1.0は Objects365 の事前学習とハイパーパラメータ探索によるものです。\n\nこのアブレーションには何 epoch 学習したかが書かれておらず、各行の結果も1回分だけです。論文は複数回の学習でのばらつきを報告していないので、0.2〜0.4 AP の差は控えめに受け取るべきです。\n\n### 重みのスケジュール\n\nTable 5 は同じ YOLO11s の設定で6種類のスケジュールを比べています。数字は一対一のヘッドを 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\n0.5対0.5の固定は46.4、デフォルトの0.8対0.2から0.1対0.9へ進むものは46.7で、この2つはちょうど Table 2 の「一対一のヘッドを追加」と「漸進的損失」の2行に対応します。一対一の重みを0から始める3種類は46.3〜46.4に収まり、固定の重みより良くはなっていません。著者らはこれをもとに、一対一のヘッドには最初から少し教師信号を与え、それから徐々に重くするべきだと考えています。\n\nただし表では、0.9対0.1から始めた結果は46.3で、0から始めたスケジュールと互角で、「最初から少し与える」が法則だとまでは言えません。控えめに読むと、この設定ではデフォルトのスケジュールが固定の重みより0.3 AP 高く、ほかのスケジュールと固定の重みの差はいずれも0.1以内です。\n\n### ほかの3つのアブレーション\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に上がり、小・中の物体はわずかに下がります。YOLO11s で0.6下がった Table 2 と対照すると、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）では、5サイズすべてで 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### 2つのヘッドの差はどれくらいか\n\nTable 7 は公開モデルの COCO での成績で、2つのヘッドの精度がどちらも載っています：\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\n5サイズすべてで、一対一のヘッドは一対多＋NMS より0.6〜0.8 AP 低くなっています。著者らは §4.4 で、対象のプラットフォームが NMS を効率よく実行でき、AP を最も重視するなら、一対多のヘッドを優先してもよく、デプロイの簡潔さや統合のしやすさ、NMS をつながないことのほうが重要なら、デフォルトの一対一のヘッドを使えばよいと書いています。\n\nYOLOv10 と差を比べてみます。YOLOv10 の論文に書かれた差は、N 版で1.0、S 版で0.5、M、B、L 版で0.2、X 版で0です。ただし YOLOv10 は、一対多だけで学習して NMS をつないだ別のモデルと対照しているのに対し、YOLO26 は同じ重みの中の2つのヘッドを直接比べています。2組の数字は測っているものが違うので、どちらの一対一のヘッドがよく学習されているかは言えません。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 にも、エンドツーエンドのデコードに必要な top-K 演算をサポートしない runtime があり、エクスポート時に自動で一対多のヘッドにフォールバックすると書かれています。Ultralytics のエンドツーエンドのガイドは NCNN、RKNN、Edge TPU、Qualcomm QNN などの形式を挙げていて、演算子がエンドツーエンドの出力に対応できない場合はどれもこのようにフォールバックします。[Ultralytics エンドツーエンド検出ガイド](https://docs.ultralytics.com/guides/end2end-detection/)\n\n### 見出しの数字は2つのヘッドから来ている\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 は2つのヘッドのレイテンシを分けて載せていて、どちらも NMS を含みません。n 版は T4 で、一対一のヘッドが2.1 ms、一対多のヘッドが2.0 ms、x 版は16.4 ms 対16.8 ms です。モデル本体だけを見れば2つの経路の速さはほぼ同じで、一対一のヘッドは NMS の段階を省けます。\n\n「CPU で43% 高速」にも条件があります。論文は、これが YOLO26n と YOLO11n を Intel Xeon CPU 上の ONNX で比べたものだと明記しています。2つの公式ドキュメントの表によると、YOLO11n は56.1 ms、YOLO26n は38.9 ms で、スループットでは1.44倍、レイテンシに直すと約31% の短縮です。ほかのサイズを1つずつ対照すると、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 の3つの CNN 検出器が加わります。\n\n論文が Hacker News に載ったとき、Roboflow の共同創業者を名乗るユーザーは、論文のメインの図には2022年の DETR が1つあるだけなのに、最良の AP–レイテンシのトレードオフをうたっていると疑問を呈しました。Roboflow は RF-DETR を開発していて、Ultralytics の直接の競合です。[Hacker News、2026-06-23](https://news.ycombinator.com/item?id=48639434) 実際に図を見ると、DETR 系のモデルは1つも入っていません。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 は2つのヘッドを残し、漸進的損失で学習の重心を一対多から一対一へ徐々に移し、さらに DFL を外し、MuSGD に替え、STAL を補いました。論文が示した証拠を整理すると、おおよそ次のとおりです：\n\n1. **一対一のヘッドは5サイズすべてで0.6〜0.8 AP 低い**。その代わりに、NMS をつながず、ボックスが最大300個の固定出力が得られます。\n2. **漸進的損失の直接の証拠は1組のアブレーション**。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` を設定する必要があります。2つのヘッドは今もどちらも学習されますが、検証、チェックポイントの選択、早期終了は、選んだヘッドに従うようになりました。[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}}}
