{"notes":[{"id":"object-detection/deim","category":"object-detection","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"DEIM","subtitle":"つぎはぎの正例","author":"Z. Yuan","paperDate":"2024-12-05","publishedOn":"2026-06-26","world":"external/deim","paperTitle":"DEIM: DETR with Improved Matching for Fast Convergence","paperUrl":"https://arxiv.org/abs/2412.04234","bibliography":{"title":"DEIM: DETR with Improved Matching for Fast Convergence","authors":["Shihua Huang","Zhichao Lu","Xiaodong Cun","Yongjun Yu","Xiao Zhou","Xi Shen"],"url":"https://arxiv.org/abs/2412.04234","pdfUrl":"https://arxiv.org/pdf/2412.04234v3","codeUrl":"https://github.com/Intellindust-AI-Lab/DEIM","preprint":{"id":"2412.04234","submittedOn":"2024-12-05","url":"https://arxiv.org/abs/2412.04234"},"publication":{"venue":"CVPR","year":2025,"kind":"conference","url":"https://openaccess.thecvf.com/content/CVPR2025/html/Huang_DEIM_DETR_with_Improved_Matching_for_Fast_Convergence_CVPR_2025_paper.html"},"citation":"@misc{objectdetectiondeim2024,\n  title = {{DEIM: DETR with Improved Matching for Fast Convergence}},\n  author = {Shihua Huang and Zhichao Lu and Xiaodong Cun and Yongjun Yu and Xiao Zhou and Xi Shen},\n  year = {2024},\n  eprint = {2412.04234},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2412.04234}\n}\n","citationPath":"/content/papers/citations/object-detection/deim.6126444ef2d4.bib"},"thumbnail":{"src":"/content/papers/assets/728ebf51d648559c31fbbb0d0dafd4107b254df8b6016972cd881c555eb051ae.png","width":1280,"height":1720},"locale":"ja","path":"/content/papers/ja/object-detection/deim.f992e5ec044e.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"正例は物体の数しかない","text":"正例は物体の数しかない","depth":3},{"id":"マッチしたのにずれている","text":"マッチしたのに、ずれている","depth":3},{"id":"先行研究の補い方","text":"先行研究の補い方","depth":3},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"dense-o2o1枚の画像に物体を多めに置く","text":"Dense O2O：1枚の画像に物体を多めに置く","depth":3},{"id":"mal正例が増えるとずれたマッチも増える","text":"MAL：正例が増えると、ずれたマッチも増える","depth":3},{"id":"学習スケジュール慣らして貼り合わせて最後は手を引く","text":"学習スケジュール：慣らして、貼り合わせて、最後は手を引く","depth":3},{"id":"考察","text":"考察","depth":2},{"id":"実験設定","text":"実験設定","depth":3},{"id":"d-fineyolo-と比べる","text":"D-FINE、YOLO と比べる","depth":3},{"id":"アブレーションdense-o2o-と-mal-はそれぞれどれだけ効くか","text":"アブレーション：Dense O2O と MAL はそれぞれどれだけ効くか","depth":3},{"id":"物体が密集しているとき","text":"物体が密集しているとき","depth":3},{"id":"再現の報告","text":"再現の報告","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"object-detection/h-detr","relation":"referenced","topic":""},{"id":"object-detection/dino-detr","relation":"referenced","topic":""},{"id":"object-detection/rt-detr","relation":"referenced","topic":""}]},{"id":"object-detection/h-detr","category":"object-detection","legacyPath":"object-detection/2207-h-detr","legacySlug":"2207-h-detr","legacyPaths":[],"title":"H-DETR","subtitle":"サイレントクエリの反逆","author":"Z. Yuan","paperDate":"2022-07-26","publishedOn":"2025-07-06","paperTitle":"DETRs with Hybrid Matching","paperUrl":"https://arxiv.org/abs/2207.13080","bibliography":{"title":"DETRs with Hybrid Matching","authors":["Ding Jia","Yuhui Yuan","Haodi He","Xiaopei Wu","Haojun Yu","Weihong Lin","Lei Sun","Chao Zhang","Han Hu"],"url":"https://arxiv.org/abs/2207.13080","pdfUrl":"https://openaccess.thecvf.com/content/CVPR2023/papers/Jia_DETRs_With_Hybrid_Matching_CVPR_2023_paper.pdf","codeUrl":"https://github.com/HDETR/H-Deformable-DETR","preprint":{"id":"2207.13080","submittedOn":"2022-07-26","url":"https://arxiv.org/abs/2207.13080"},"publication":{"venue":"CVPR","year":2023,"kind":"conference","url":"https://openaccess.thecvf.com/content/CVPR2023/html/Jia_DETRs_With_Hybrid_Matching_CVPR_2023_paper.html"},"citation":"@misc{objectdetectionhdetr2022,\n  title = {{DETRs with Hybrid Matching}},\n  author = {Ding Jia and Yuhui Yuan and Haodi He and Xiaopei Wu and Haojun Yu and Weihong Lin and Lei Sun and Chao Zhang and Han Hu},\n  year = {2022},\n  eprint = {2207.13080},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2207.13080}\n}\n","citationPath":"/content/papers/citations/object-detection/h-detr.822184101757.bib"},"thumbnail":{"src":"/content/papers/assets/63f1bc60b92f58d360457c0e3bbef0a3d4b3bd2a07377983b2dc5f5591ce28c2.jpg","width":1784,"height":350},"locale":"ja","path":"/content/papers/ja/object-detection/h-detr.10f9c0ed3f06.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":"coco-ベンチマーク","text":"COCO ベンチマーク","depth":3},{"id":"lvis-ベンチマーク","text":"LVIS ベンチマーク","depth":3},{"id":"sota-ベンチマーク","text":"SOTA ベンチマーク","depth":3},{"id":"消融実験","text":"消融実験","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{"解決方法":"解決法","メインブランチ一対一の監督":"メインブランチ一対一監督","補助ブランチ正例の枠を増やす":"補助ブランチ一対多監督","一組のクエリでも監督する時期を変えられる":"他の混合監督形式","実験結果と考察":"議論","coco正例の機会を増やすと":"coco-ベンチマーク","lvis長尾データについて言える範囲":"lvis-ベンチマーク","システム比較594-ap-の条件":"sota-ベンチマーク","三方式の-ap訓練時間推論コスト":"消融実験"},"guide":null,"relatedReading":[{"id":"object-detection/deformable-detr","relation":"background","topic":"集合予測と Attention による検出"}]},{"id":"object-detection/dino-detr","category":"object-detection","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"DINO","subtitle":"近くても、まだ遠い","author":"Z. Yuan","paperDate":"2022-03-07","publishedOn":"2024-12-19","world":"external/dino-detector","paperTitle":"DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection","paperUrl":"https://arxiv.org/abs/2203.03605","bibliography":{"title":"DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection","authors":["Hao Zhang","Feng Li","Shilong Liu","Lei Zhang","Hang Su","Jun Zhu","Lionel M. Ni","Heung-Yeung Shum"],"url":"https://arxiv.org/abs/2203.03605","pdfUrl":"https://arxiv.org/pdf/2203.03605v4","codeUrl":"https://github.com/IDEA-Research/DINO","preprint":{"id":"2203.03605","submittedOn":"2022-03-07","url":"https://arxiv.org/abs/2203.03605"},"publication":{"venue":"ICLR","year":2023,"kind":"conference","url":"https://iclr.cc/virtual/2023/poster/11884"},"citation":"@misc{objectdetectiondinodetr2022,\n  title = {{DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection}},\n  author = {Hao Zhang and Feng Li and Shilong Liu and Lei Zhang and Hang Su and Jun Zhu and Lionel M. Ni and Heung-Yeung Shum},\n  year = {2022},\n  eprint = {2203.03605},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2203.03605}\n}\n","citationPath":"/content/papers/citations/object-detection/dino-detr.d8c8af775089.bib"},"thumbnail":{"src":"/content/papers/assets/6c328e7125d4762c3a4346a1c537cb4e917d47a640869bbf212de53f74ba64fc.png","width":942,"height":319},"locale":"ja","path":"/content/papers/ja/object-detection/dino-detr.f93ea7949119.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"全体の流れ","text":"全体の流れ","depth":3},{"id":"対比的デノイジング","text":"対比的デノイジング","depth":3},{"id":"混合クエリ選択","text":"混合クエリ選択","depth":3},{"id":"look-forward-twice","text":"Look forward twice","depth":3},{"id":"考察","text":"考察","depth":2},{"id":"12-epoch","text":"12 epoch","depth":3},{"id":"もう少し長く学習する","text":"もう少し長く学習する","depth":3},{"id":"リーダーボードのあの1枠","text":"リーダーボードのあの1枠","depth":3},{"id":"アブレーション494はどう積み上がったか","text":"アブレーション：49.4はどう積み上がったか","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"contrastive-learning/dino","relation":"referenced","topic":""},{"id":"object-detection/detr","relation":"referenced","topic":""},{"id":"object-detection/deformable-detr","relation":"referenced","topic":""}]},{"id":"object-detection/rt-detr","category":"object-detection","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"RT-DETR","subtitle":"NMS 込みで計る","author":"Z. Yuan","paperDate":"2023-04-17","publishedOn":"2025-01-29","world":"external/rt-detr","paperTitle":"DETRs Beat YOLOs on Real-time Object Detection","paperUrl":"https://arxiv.org/abs/2304.08069","bibliography":{"title":"DETRs Beat YOLOs on Real-time Object Detection","authors":["Yian Zhao","Wenyu Lv","Shangliang Xu","Jinman Wei","Guanzhong Wang","Qingqing Dang","Yi Liu","Jie Chen"],"url":"https://arxiv.org/abs/2304.08069","pdfUrl":"https://arxiv.org/pdf/2304.08069v3","codeUrl":"https://github.com/lyuwenyu/RT-DETR","preprint":{"id":"2304.08069","submittedOn":"2023-04-17","url":"https://arxiv.org/abs/2304.08069"},"publication":{"venue":"CVPR","year":2024,"kind":"conference","url":"https://openaccess.thecvf.com/content/CVPR2024/html/Zhao_DETRs_Beat_YOLOs_on_Real-time_Object_Detection_CVPR_2024_paper.html"},"citation":"@misc{objectdetectionrtdetr2023,\n  title = {{DETRs Beat YOLOs on Real-time Object Detection}},\n  author = {Yian Zhao and Wenyu Lv and Shangliang Xu and Jinman Wei and Guanzhong Wang and Qingqing Dang and Yi Liu and Jie Chen},\n  year = {2023},\n  eprint = {2304.08069},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2304.08069}\n}\n","citationPath":"/content/papers/citations/object-detection/rt-detr.cbe42f7a5b6c.bib"},"thumbnail":{"src":"/content/papers/assets/7e2de3c38daff439f51d86ec04a7bd391c3f708b817ae539f3c4df7c5546f4d6.png","width":1360,"height":332},"locale":"ja","path":"/content/papers/ja/object-detection/rt-detr.d3875f64569f.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"nms-にはどれだけ時間がかかるのか","text":"NMS にはどれだけ時間がかかるのか？","depth":3},{"id":"エンドツーエンドのストップウォッチ","text":"エンドツーエンドのストップウォッチ","depth":3},{"id":"detr-はどこが遅いのか","text":"DETR はどこが遅いのか？","depth":3},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"まず全体像を見る","text":"まず全体像を見る","depth":3},{"id":"encoder-の勘定","text":"Encoder の勘定","depth":3},{"id":"aifis5-だけで自己注意","text":"AIFI：S5 だけで自己注意","depth":3},{"id":"ccffスケール間の融合は畳み込みに任せる","text":"CCFF：スケール間の融合は畳み込みに任せる","depth":3},{"id":"300-個のクエリを選ぶ","text":"300 個のクエリを選ぶ","depth":3},{"id":"decoder後ろの数層を外す","text":"Decoder：後ろの数層を外す","depth":3},{"id":"考察","text":"考察","depth":2},{"id":"yolodino-と比べる","text":"YOLO、DINO と比べる","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/detr","relation":"referenced","topic":""},{"id":"object-detection/deformable-detr","relation":"referenced","topic":""},{"id":"feature-fusion/panet","relation":"referenced","topic":""}]}],"text":"1枚の写真に3つの物体がアノテーションされていて、RT-DETR は 300 個の query を用意しています。一対一のマッチングが終わると、ボックスをどこに描くべきかを学べるのは3つの query だけで、残りの 297 個の学習目標はすべて「物体なし」です。\n\nYOLO にはこの悩みがありません。一対多のラベル割り当てを使い、1つの物体が近くにある複数の予測を同時に受け持つので、教師信号がずっと密になります。その代わり、推論時には同じ物体にいくつものボックスが出てくるので、NMS で片づける必要があります。\n\nDETR の側でも正例を補おうとしてきましたが、ここ数年のやり方の多くは、モデルの横に何かを付け足すものでした。[H-DETR](/blog/papers/object-detection/h-detr) は一対多用の query を別に1組用意し、Group DETR は query を何組か増やしてそれぞれにマッチングさせ、[DINO](/blog/papers/object-detection/dino-detr) はデノイジングの練習問題をひとまとまり加えます。こうした追加の教師信号は推論時にすべて外されますが、学習時にはそのぶん余計に計算しなければなりません。\n\n2024年12月、Intellindust AI Lab と香港城市大学などの著者らが提案した DEIM は、データの側から手を入れます。マッチングの規則もモデルもそのままで、1枚の学習画像に含まれる物体を増やすだけです。そうすれば一対一マッチングでも自然に正例が増えます。使うのは、YOLO シリーズがずっと前から使ってきた Mosaic と Mixup という2つのデータ拡張です。論文はのちに CVPR 2025 で発表されました。\n\n## 問題の定義\n\n### 正例は物体の数しかない\n\nまず、2種類の割り当てを同じ式で書いてみます。1枚の画像に $N$ 個のアノテーション物体があり、$i$ 番目の物体が $M_i$ 個の予測とマッチするとき、学習ではそれぞれのペアの損失 $f$ を足し合わせます：\n\n$$\n\\text{loss} = \\sum_{i=1}^{N} \\sum_{j=1}^{M_i} f(\\hat{y}_{ij}, y_i)\n$$\n\n一対多の検出器では $M_i > 1$ です。DETR はハンガリアン法で一対一マッチングを行うので、すべての $M_i = 1$ と決めていることになり、このとき1枚の画像の正例の数は $N$、つまり写真にアノテーションされた物体の数と同じです。query を 300 個用意しても変わりません。\n\n著者らは RT-DETRv2（ResNet-50）を学習させながら、COCO の1エポックの間に各画像でいくつの正例がマッチしたかを数えました。一方はハンガリアン法、もう一方は YOLOX の SimOTA です（論文 Figure 3）。RT-DETRv2 は Baidu が 2024年7月に出した [RT-DETR](/blog/papers/object-detection/rt-detr) の改良版です。SimOTA は一対多の割り当ての一種で、まず各物体の周りにある予測ボックスの IoU から何個割り当てるかを見積もって $k$ とし、マッチングコストが最も低い $k$ 個の予測を正例にします。\n\n一対一の分布は、1枚あたり正例 10 個未満のところに鋭いピークを作ります。SimOTA の分布は大きく広がっていて、1枚で正例が 80 個を超える写真もあります。両者の比をとると、最も多いのは7倍前後で、極端な場合は約 10 倍です。\n\nFigure 3 が数えているのは、マッチングそのもので得られた正例だけです。RT-DETRv2 は学習時に [DN-DETR](/blog/papers/object-detection/dn-detr) 式のデノイジング query もひとまとまり使っていて、DEIM もそれを残しています。これは別枠の追加の教師信号です。\n\n### マッチしたのに、ずれている\n\n著者らは DETR の収束が遅い理由がもう1つあると考えていて、それを低品質マッチ（low-quality match）と呼んでいます。\n\nYOLO のような検出器は特徴マップ上に数千の予測位置を密に並べていて（論文によれば、密なアンカーはふつう 8,000 個を超えます）、どの物体の近くにも十分に近い位置がいくつかあります。DETR には 100 個か 300 個の query しかなく、最初は物体の位置とそろっていません。DINO や RT-DETR はのちに、encoder の出力からスコアの最も高い位置を選んで query を初期化するようになり、query は確かに物体に近づきましたが、目立つ物体のそばに偏って集まりがちです。\n\n目立たない物体の近くには query がないのに、一対一マッチングはどの物体にも必ず1つ割り当てるよう求めます。結局その物体に割り当てられた query は、ボックスと物体の IoU が低いのに、信頼度スコアは高いということが起こりえます。\n\n### 先行研究の補い方\n\nDEIM 以前の正例を補う方法は、どれも物体1つあたりの正例数を増やすものでした。Group DETR は学習時に K 組の query を用意し、各組が独立に一対一マッチングを行うので、物体ごとに K 個の正例が得られます。H-DETR のハイブリッドマッチングも似たやり方です。Co-DETR は encoder の後ろに Faster R-CNN や FCOS のような一対多の補助ヘッドをつなぎます。\n\n著者らはこれらの方法に2つの意見を述べています。1つは、decoder や補助ヘッドを何組か余分に走らせるため、学習コストが上がること。もう1つは、一対多の教師信号が増えると、モデルが同じ物体に高スコアのボックスをいくつも出すことを再び覚えてしまい、従来の検出器と同じ問題に戻りかねないことです。\n\n\n> [!TIP]\n> \n> H-DETR のハイブリッドマッチングと、2組の query をマスクでどう隔てるかは、本サイトのノートを参照してください：\n> \n> - **[[22.07] H-DETR：サイレントクエリの反逆](/blog/papers/object-detection/h-detr)**\n\n\nでは、query も補助ヘッドも増やさず、一対一マッチングにも手を触れずに、正例を増やすことはできるでしょうか？正例が増えたあと、ずれたマッチはどう扱えばよいのでしょうか？\n\n## 問題の解決\n\nDEIM の2つの構成要素が、この2つの問いにそれぞれ答えます。Dense O2O は正例を増やし、Matchability-Aware Loss（MAL）は増えたあとの低品質マッチを扱います。どちらも学習だけを変えるもので、推論時のモデル、query 数、出力の流れは元のままです。\n\n### Dense O2O：1枚の画像に物体を多めに置く\n\n先ほどの式に戻ります。一対多は $M_i$ を増やします。Dense O2O は $M_i$ を 1 のまま保ち、代わりに $N$ を増やします。\n\n論文の §3.2 は例を使って説明しています。犬が1匹だけ写った写真を縮小して 2×2 の4マスに複製し、元のサイズに並べ直すと、1匹の犬が4匹になり、一対一マッチングでも4つの正例が得られます。一対多が元の1匹の犬に割り当てる4つの正例と同じ数です。\n\n実際の学習では、同じ写真を4回複製してはいません。著者らは代わりに、YOLO シリーズでよく使われる2つのデータ拡張を使います。公式コードでの設定は次のとおりです：\n\n- **Mosaic**：学習画像ごとに 0.5 の確率で発動します。今の1枚に加えてデータセットからランダムに3枚を取り出し、それぞれ短辺 320 ピクセルに縮小して 2×2 の4マスに貼り込み、全体に1回ランダムなアフィン変換（回転 ±10°、平行移動 10%、拡大縮小 0.5 から 1.5 倍）をかけて、最後に 640×640 に縮小します。\n- **Mixup**：バッチごとに 0.5 の確率で発動します。バッチ内の各画像を1つ前の画像と 0.45 から 0.55 の比率で重ね合わせ、両方の画像のアノテーションボックスはすべて残します。\n\nこれにより、学習画像1枚あたりの平均物体数は約 10 個から約 25 個になります（付録 Table 12）。著者らは平均を約 50 個まで増やすことも試しましたが、24 エポック学習した AP はかえって 52.5 から 52.2 に下がりました。彼らはその原因を、正例と負例の比率の偏りと、物体が多すぎることによるデータ分布のずれに求めています。\n\nGitHub では、論文の図にある4倍の関係がマッチングのコードに書かれているのか、と尋ねた読者がいました。第一著者の回答によると、それは例にすぎず、実際の比率は4に固定されていません。負例の数は query 数から正例の数を引いたもので、たとえば query が 300 個で物体が5個なら負例は 295 個、Dense O2O で物体が 20 個になれば負例は 280 個です。[DEIM #126](https://github.com/Intellindust-AI-Lab/DEIM/issues/126)\n\n\n> [!TIP]\n> \n> 論文が引用している Mosaic は YOLOv4 に由来します。4枚の画像を1枚に貼り合わせる様子は、本サイトのノートを参照してください：\n> \n> - **[[20.04] YOLOv4：モデル設計アドバイザー](/blog/papers/object-detection/yolov4)**\n\n\nコストはどうでしょうか？マッチングの方法もモデルも変わらないので、GPU 上の計算量も変わりません。RTX 4090 1枚で、RT-DETRv2-R50 は1エポックに 1.181 GPU 時間かかり、DEIM を加えると 1.183 です（Table 7）。増えた負担はデータ読み込みにかかり、貼り合わせも重ね合わせも CPU で行います。公式リポジトリはのちに Mosaic にキャッシュを加え、README によるとデータ読み込みが 30% 近く速くなりました。\n\n### MAL：正例が増えると、ずれたマッチも増える\n\n著者らの指摘では、物体が増えると目立つ物体と目立たない物体の差が大きくなり、マッチの総数は増えても、低品質マッチもそれにつれて増えます。Mosaic は各写真の辺の長さを約半分に縮めるので、小物体も増えます。\n\nこうしたマッチは分類損失で扱う必要があります。RT-DETR と D-FINE はもともと VariFocal Loss（VFL）を使っていました。予測の信頼度スコアを $p$、予測ボックスとマッチした物体の IoU を $q$ とします：\n\n$$\n\\text{VFL}(p, q) =\n\\begin{cases}\n-q\\,\\big(q \\log p + (1-q) \\log(1-p)\\big) & q > 0 \\\\\n-\\alpha\\, p^{\\gamma} \\log(1-p) & q = 0\n\\end{cases}\n$$\n\n上の行は正例です。分類の目標スコアを IoU にして、信頼度スコアがボックスの正確さを反映するように学ばせます。さらに項全体に $q$ を掛けるので、ボックスが正確な正例ほど大きな重みを受けます。下の行は負例で、Focal Loss と同じく $p^\\gamma$ で大量の簡単な負例の比重を下げ、$\\alpha$ で正例と負例のバランスをとります。RT-DETRv2 の設定は $\\gamma = 2$、$\\alpha = 0.75$ です。\n\n問題は、掛けられたその $q$ にあります。IoU が 0.05 しかないマッチでは、損失全体にまず 0.05 が掛かるので、信頼度スコアがいくら高くても損失は小さいままです。DETR では query が少なく、マッチングも強制なので、著者らはこの種のマッチが従来の検出器より多いと考えていますが、VFL はそれらをほとんど気にかけません。さらに VFL は IoU が 0 より大きいかどうかで正例と負例を分けるので、マッチしたのにボックスがまったく物体に触れていない query は、負例として扱われます。\n\nMAL は式を次のように変えます：\n\n$$\n\\text{MAL}(p, q, y) =\n\\begin{cases}\n-q^{\\gamma} \\log p - (1-q^{\\gamma}) \\log(1-p) & y = 1 \\\\\n-p^{\\gamma} \\log(1-p) & y = 0\n\\end{cases}\n$$\n\n- 正例と負例の区別には $y$、つまりその query が物体にマッチしたかどうかを使います。\n- 正例の目標スコアを $q$ から $q^\\gamma$ に変え、前に $q$ を掛けるのをやめます。\n- 負例から $\\alpha$ を外します。\n- 2つの行で同じ $\\gamma$ を使い、論文では 1.5 です。\n\n2つのマッチで計算してみましょう。1つは IoU 0.05 の低品質マッチ、もう1つは IoU 0.95 の良いマッチです。信頼度スコアを 0.1 から 0.9 まで変え、正例の行だけを見ます：\n\n```python\nimport math\n\ndef vfl_pos(p, q):\n    # Eq. 3 の正例：目標スコアは q で、さらに項全体に q を掛ける\n    return -q * (q * math.log(p) + (1 - q) * math.log(1 - p))\n\ndef mal_pos(p, q, gamma=1.5):\n    # Eq. 4 の正例：目標スコアを q^γ に変え、重みは 1 に固定\n    t = q ** gamma\n    return -(t * math.log(p) + (1 - t) * math.log(1 - p))\n\nfor q in (0.05, 0.95):\n    print(f\"IoU = {q}、MAL の目標スコア q^1.5 = {q ** 1.5:.3f}\")\n    for p in (0.1, 0.3, 0.5, 0.7, 0.9):\n        print(f\"  信頼度 {p}：VFL {vfl_pos(p, q):.3f}　MAL {mal_pos(p, q):.3f}\")\n```\n\n```text\nIoU = 0.05、MAL の目標スコア q^1.5 = 0.011\n  信頼度 0.1：VFL 0.011　MAL 0.130\n  信頼度 0.3：VFL 0.020　MAL 0.366\n  信頼度 0.5：VFL 0.035　MAL 0.693\n  信頼度 0.7：VFL 0.058　MAL 1.194\n  信頼度 0.9：VFL 0.110　MAL 2.278\nIoU = 0.95、MAL の目標スコア q^1.5 = 0.926\n  信頼度 0.1：VFL 2.083　MAL 2.140\n  信頼度 0.3：VFL 1.104　MAL 1.141\n  信頼度 0.5：VFL 0.658　MAL 0.693\n  信頼度 0.7：VFL 0.379　MAL 0.419\n  信頼度 0.9：VFL 0.204　MAL 0.268\n```\n\nまず IoU 0.05 の組を見ます。MAL の目標スコアは 0.011 で、モデルはこのボックスにほとんど自信を持つべきでない、ということです。信頼度が 0.1 から 0.9 に上がると、MAL は 0.130 から 2.278 に増えますが、VFL は 0.011 から 0.110 にしか増えません。IoU 0.95 の組では、両者はほぼ同じです。\n\n信頼度スコアを 0.01 から 0.99 まで変え、同じ2つの IoU を曲線にしました。上段の青い線と、下段の2本の線の間隔に注目してください：\n\n![折れ線グラフ。上下2段に分かれ、横軸は信頼度スコア p で 0 から 1、縦軸は正例の損失で 0 から 5。上段は IoU 0.05 の低品質マッチで、青の VFL はほぼ 0 に張りつき、p が 1 に近づいてようやく 0.2 前後までわずかに上がる。オレンジの MAL は信頼度とともに上がり続け、右端では 4.5 を超える。p = 0.8 の位置に MAL 1.59、VFL 0.08 と記されている。下段は IoU 0.95 の良いマッチで、2本の線はほぼ重なり、左端の約 4.2 から右端の約 0.3 まで下がっていく。](/content/papers/assets/26ca0b864b2588a0b6bcd3712361f3c983ad521564dbfbc205a627b0b749983f.png)\n\n*図：本稿で作図。論文の Eq. 3、Eq. 4 の正例の項から計算し、γ = 1.5 としています。原論文は CC BY-NC-SA 4.0 のため、原図は転載していません。*\n\n上段の VFL はほぼ 0 に張りついたままで、信頼度がいくら高くても変わりません。MAL は信頼度につれて上がり続け、p = 0.8 では 1.59 ですが、VFL は 0.08 しかありません。下段の2本の線はほぼ重なっていて、信頼度が低いほど損失が大きくなります。良いマッチに対する2つの損失の要求は、ほぼ同じです。\n\n次に勾配を見ます。2つの損失を logit で微分すると、どちらも「重み ×（信頼度 − 目標スコア）」の形になります。先ほどの2つのケースから1点ずつ選びます：\n\n```python\n# 前のコードの続き。logit で微分すると、どちらの損失も「重み ×（信頼度 − 目標スコア）」の形になる\ndef grad_vfl(p, q):\n    return q * (p - q)\n\ndef grad_mal(p, q, gamma=1.5):\n    return p - q ** gamma\n\nfor q, p in ((0.05, 0.8), (0.95, 0.5)):\n    print(f\"IoU {q}、信頼度 {p}：VFL {grad_vfl(p, q):+.3f}、MAL {grad_mal(p, q):+.3f}\")\n```\n\n```text\nIoU 0.05、信頼度 0.8：VFL +0.038、MAL +0.789\nIoU 0.95、信頼度 0.5：VFL -0.427、MAL -0.426\n```\n\nIoU 0.05、信頼度 0.8 のボックスでは、MAL の勾配は VFL の約 21 倍で、信頼度を押し下げる方向です。IoU 0.95、信頼度 0.5 のボックスでは、どちらも約 −0.43 で、同じように信頼度を押し上げます。MAL が力を強めるのは低品質マッチだけで、良いマッチの扱いは変わりません。\n\nボックスがずれた query はあまり自信を持たないように教えられ、ボックスが正確な query は従来どおり信頼度が引き上げられます。評価時の AP は信頼度スコアの順に並べて計算するので、正確なボックスが上位に来て、高い IoU 閾値での成績が良くなります。これは本稿の解釈で、著者らは MAL を加えたことによる向上を、ボックスの品質が良くなったためとしています。後の Table 6 の数字も同じ方向を示していて、MAL を加えると AP75 は上がり、AP50 はほとんど変わりません。\n\n$\\gamma$ については、著者らが RT-DETRv2-R50 を 24 エポック学習して4つの値を試していて（Table 5）、1.3、1.5、1.8、2.0 でそれぞれ 52.2、52.4、52.1、51.9 AP となり、最終的に 1.5 を選びました。\n\n### 学習スケジュール：慣らして、貼り合わせて、最後は手を引く\n\nDense O2O は、学習の最初から最後まで使い続けることはしません。著者らはデータ拡張のスケジュールを別に設計し、RTMDet でも使われた FlatCosine 学習率と組み合わせました。学習率はまず一定に保ち、次に cosine で半分まで下げます。RT-DETRv2-R50 を 60 エポック学習する公式設定を例にとります（論文付録 Figure 5、Table 10）：\n\n| Epoch | データ拡張 | 学習率 |\n| --- | --- | --- |\n| 0–4 | 反転とリサイズだけ（DataAug Warmup） | 最初の 2,000 iteration でウォームアップし、その後は 2e-4 で一定 |\n| 4–34 | Dense O2O：Mosaic、Mixup に RT-DETR 元来の拡張を加える | 2e-4 で一定 |\n| 34–58 | RT-DETR 元来の拡張に戻す（カラージッター、zoom out、IoU クロップ、反転） | cosine で 2e-4 から 1e-4 へ下げる |\n| 58–60 | 再び反転とリサイズだけ | 1e-4 |\n\n*表：公式設定ファイル `deim_r50vd_60e_coco.yml` と付録 Figure 5 をもとに本稿で整理。*\n\n最初の4エポックでは、あえて高度なデータ拡張を使いません。付録の説明によると、DETR のアテンションには畳み込みのような帰納バイアスがなく、ゼロから学ばなければならないので、最初は簡単な画像を与えたほうが学びやすいからです。続いて Dense O2O を 30 エポック使い、これはちょうど全体の長さの半分です。GitHub での著者の説明によれば、全体が $E$ エポックのとき、最初の4エポックでウォームアップし、続く $E/2$ エポックで Dense O2O を使い、学習率も $4 + E/2$ エポック目まで一定に保ってから下げ始めます。[DEIM #9](https://github.com/Intellindust-AI-Lab/DEIM/issues/9)\n\nなぜ半分で止めるのでしょうか？論文は、エポックの半分を過ぎたところで Dense O2O を止めると結果が良くなると述べるだけで、比較表はついていません。貼り合わせた画像は物体が多くて小さく、検証時に見る写真とは違います。後半で普通の写真に戻すのは、モデルを実際の分布に慣れ直させるためかもしれません。Table 12 で物体を詰め込みすぎると成績が下がったことも、著者らは分布のずれのせいだとしています。この段落は本稿の推測です。\n\nD-FINE をベースにした設定には、もう1つ区間があります。D-FINE 自体が学習の最後に、高度な拡張を切ったエポックを8つ余分に回して EMA の減衰値を探索していて、DEIM もこのやり方を踏襲しています。そのため、論文 Table 1 にある 50 エポックは、公式設定では実際には 58 エポック回ります。同じ表で D-FINE に書かれている 72 エポックも、D-FINE 自身の設定では 80 エポック回ります。[DEIM #56](https://github.com/Intellindust-AI-Lab/DEIM/issues/56)\n\nこのスケジュールのせいで、検証曲線も少し奇妙に見えます。あるユーザーが自分の単一クラスのデータセットで D-FINE と DEIM-D-FINE を比べたところ、DEIM の検証 AP は前半ずっと後れをとっていました。第一著者は2点を挙げて答えています。Dense O2O はより強いデータ拡張なので、使っている間の検証成績はもともと低めになります。論文がいう収束の速さは、より少ないエポックで同じかそれ以上の成績に達することを指しています。また、学習率のウォームアップの 2,000 iteration は COCO に合わせて設定したもので、そのデータセットは小さいため、ウォームアップが 100 エポック目あたりまで長引いていました。ユーザーがウォームアップを 500 iteration に変えたところ、DEIM の最高 AP は 0.773、D-FINE は 0.768 でした。[DEIM #5](https://github.com/Intellindust-AI-Lab/DEIM/issues/5)\n\n## 考察\n\n### 実験設定\n\n主な実験はすべて COCO で、train2017 で学習し、val2017 で評価し、入力は 640×640 です。backbone はまず ImageNet-1k で事前学習し、Table 8 の Objects365 での微調整を除いて、追加のデータは使っていません。遅延は D-FINE が T4 GPU、TensorRT FP16 で測ったエンドツーエンドの数値をそのまま使っています。DEIM はアーキテクチャを変えないので、同じモデルなら DEIM の有無にかかわらず遅延は同じです。\n\nDEIM は2つのベースモデルに適用されています。1つは先ほど触れた RT-DETRv2、もう1つは [D-FINE](https://arxiv.org/abs/2410.13842v1) です。D-FINE は中国科学技術大学が 2024年10月に提案したリアルタイム DETR で、RT-DETR のアーキテクチャをベースに、ボックスの回帰を4つの座標の直接予測から、各辺の位置の確率分布を層ごとに修正する方式に変えています。\n\n### D-FINE、YOLO と比べる\n\n| モデル | Epoch | AP | AP<sub>S</sub> | 遅延（T4） |\n| --- | ---: | ---: | ---: | ---: |\n| D-FINE-L | 72 | 54.0 | 36.5 | 8.07 ms |\n| DEIM-D-FINE-L | 50 | 54.7 | 36.9 | 8.07 ms |\n| D-FINE-X | 72 | 55.8 | 37.3 | 12.89 ms |\n| DEIM-D-FINE-X | 50 | 56.5 | 38.8 | 12.89 ms |\n| YOLO11-X | 500 | 54.1 | 37.0 | 10.52 ms |\n| YOLOv9-E | 500 | 55.6 | 40.2 | 20.53 ms |\n\n*表：原論文 Table 1 から抜粋、COCO val2017。表の注によると、YOLO11-X の NMS は 0.01 の信頼度の閾値で調整されています。*\n\n同じ遅延のまま、DEIM は D-FINE-L と D-FINE-X の AP をそれぞれ 0.7 上げ、表上のエポック数は 72 から 50 へ約 30% 減りました。論文の本文もそう書いています。両者それぞれの8エポックの EMA 区間を含めると（58 対 80）、約 28% 減です。要旨にある「学習時間が半分」という表現は、後に出てくる RT-DETRv2 の 36 対 72 エポックの比較に対応しています。\n\nYOLO と比べると、DEIM-D-FINE-L は 54.7 AP、8.07 ms で、YOLO11-X の 54.1 AP、10.52 ms を上回ります。小物体はやはり DETR 側の弱点で、DEIM-D-FINE-X の AP<sub>S</sub> は 38.8、YOLOv9-E は 40.2 です。著者らも本文でこの差を認めています。エポック数は同じファミリーの中でだけ比べるのが適切で、DEIM の backbone はすでに ImageNet で事前学習されています。\n\n著者らはさらに、YOLOv10 は一対多と一対一のハイブリッドな割り当てを使っているのに、DEIM のモデルはそれをすべての面で上回っており、これは Dense O2O が有効である証拠だと書いています。この推論はやや飛躍しています。両者はアーキテクチャも事前学習も学習の長さも異なるので、表の差を Dense O2O だけに帰することはできず、YOLOv10 の2ヘッド設計を評価する材料にもなりません。Dense O2O そのものの効果を見るには、次のアブレーションを見る必要があります。\n\n\n> [!TIP]\n> \n> YOLOv10 が一対多のヘッドを学習の伴走役にし、推論では一対一のヘッドだけを使うやり方は、本サイトのノートを参照してください：\n> \n> - **[[24.05] YOLOv10：NMS、さようなら](/blog/papers/object-detection/yolov10)**\n\n\n### アブレーション：Dense O2O と MAL はそれぞれどれだけ効くか\n\n| ベースモデル | Epoch | Dense O2O | MAL | AP | AP<sub>50</sub> | AP<sub>75</sub> |\n| --- | ---: | :---: | :---: | ---: | ---: | ---: |\n| RT-DETRv2-R50 | 72 | | | 53.4 | 71.6 | 57.4 |\n| RT-DETRv2-R50 | 36 | ✓ | | 53.6 | 71.9 | 58.2 |\n| RT-DETRv2-R50 | 36 | ✓ | ✓ | 53.9 | 71.7 | 58.6 |\n| D-FINE-L | 72 | | | 54.0 | 71.6 | 58.4 |\n| D-FINE-L | 36 | ✓ | | 54.2 | 72.1 | 58.9 |\n| D-FINE-L | 36 | ✓ | ✓ | 54.6 | 72.2 | 59.5 |\n\n*表：原論文 Table 6。*\n\nDense O2O だけを使うと、36 エポックでベースモデルの 72 エポックの成績に追いつき、わずかに上回ります。さらに MAL を加えると、2つのベースモデルでそれぞれ 0.3 と 0.4 AP 上がります。GPU 時間に換算すると（Table 7）、RT-DETRv2-R50 は元の 72 エポックで約 85 時間かけて 53.4、DEIM は 60 エポックを約 71 時間で走らせて 54.3 です。\n\nこの表は 36 エポックの DEIM を 72 エポックの元のモデルと比べていて、同じ 36 エポックで Dense O2O を使わない対照はありません。付録と公式設定ファイルによると、DEIM の実験では著者らの学習レシピ一式にも置き換えられていて、新しい学習率とデータ拡張のスケジュール、backbone の BN の凍結解除、decoder の SiLU への変更が含まれます。公式設定ファイルでは、RT-DETRv2 のベース学習率も 1e-4 から 2e-4 に上がっています。\n\n付録では、著者らが D-FINE でこうした小さな変更だけを単独で試していて、36 エポック学習したとき、D-FINE-L は変化なし、D-FINE-X は 55.4 から 55.5 になりました。ついでに言うと、D-FINE-X は 36 エポック学習しただけで 55.4 あり、72 エポックの 55.8 とそれほど離れていません。\n\n同じエポック数での比較は Table 4 にあります。RT-DETRv2-R50 を 12 エポックと 24 エポックでそれぞれ学習し、Mosaic と Mixup の確率だけを変えています：\n\n| Mosaic | Mixup | AP（12 ep） | AP（24 ep） | AP<sub>S</sub>（24 ep） |\n| ---: | ---: | ---: | ---: | ---: |\n| 0 | 0 | 49.6 | 51.7 | 32.8 |\n| 0.5 | 0 | 50.4 | 51.9 | 34.9 |\n| 0 | 0.5 | 50.1 | 51.5 | 33.2 |\n| 0.5 | 0.5 | 50.4 | 52.5 | 34.9 |\n\n*表：原論文 Table 4 から抜粋。*\n\n両方を使うと、12 エポックでも 24 エポックでも AP が 0.8 上がり、24 エポックでは小物体の AP が 2.1 上がります。Mixup だけを使うと、24 エポックではかえってわずかに下がります。これは同じ条件での Dense O2O そのものの向上で、Table 6 のエポック数をまたいだ比較よりもきれいです。\n\n付録 Table 13 では学習セットでの AP も比べています。DEIM は学習セットではわずかに低く（64.8 対 65.1）、検証セットでは高い（54.3 対 53.4）ので、著者らは学習データに過学習しにくくなったと解釈しています。\n\n### 物体が密集しているとき\n\nCrowdHuman は混み合った群衆のデータセットです。著者らは D-FINE の設定に従って両方とも 120 エポック学習していて（Table 3）、今回 DEIM はエポックを節約していません：\n\n| 手法 | AP | AP<sub>75</sub> | AP<sub>S</sub> |\n| --- | ---: | ---: | ---: |\n| D-FINE-L | 56.0 | 59.4 | 29.0 |\n| DEIM-D-FINE-L | 57.5 | 62.9 | 33.2 |\n\n*表：原論文 Table 3 から抜粋。*\n\nAP は 1.5 上がり、そのうち AP<sub>75</sub> は 3.5、AP<sub>S</sub> は 4.2 上がっています。向上は、ボックスを正確に描く必要があり、物体も小さい場面に集中しています。\n\n付録の定性的な例も重複ボックスに関係しています。D-FINE-L は同じ凧に対して、互いに大きく重なり、どれも信頼度の高いボックスを4つ出力していますが、DEIM で学習した版は1つだけを残しています。これは1枚の画像の例にすぎず、統計的な数字はありません。\n\nまた、D-FINE を Objects365 で事前学習した重みから COCO で微調整すると、D-FINE-X は 32 エポックの微調整で 59.3 AP、DEIM を加えて 24 エポック微調整すると 59.5 になります（Table 8）。\n\n### 再現の報告\n\nGitHub では、あるユーザーが公式設定どおりに8枚の A100 で DEIM-D-FINE-X を学習しました。50 エポック目で 55.8 AP、58 エポックを走り終えて 56.16 で、論文の 56.5 より 0.3 低い結果です。ユーザー自身も、バッチサイズと学習率がそろっていなかったのではないかと疑っていました。第一著者は、公式設定の 50＋8 エポックを厳密に守る必要があり、同じ設定でのばらつきは約 ±0.1 AP だと回答しています。2026年3月、同じスレッドで別のユーザーが、DEIM-D-FINE-L はたいてい 54.4 までしか届かないと書き込みましたが、記録は添えていません。[DEIM #112](https://github.com/Intellindust-AI-Lab/DEIM/issues/112)\n\n## 結論\n\nDEIM は、DETR の収束が遅い2つの原因を分けて扱います。正例が少なすぎるなら、1枚の学習画像に物体を多めに入れれば、一対一マッチングでも自然に正例が増え、GPU の計算量は変わりません。増えた低品質マッチは、MAL でその信頼度を押し下げ、良いマッチはそのまま保ちます。学習スケジュールでは Dense O2O を中間に挟み、最初にウォームアップし、後半は普通の写真に戻します。\n\nCOCO では、RT-DETRv2-R50 が 36 エポックで 53.9 AP に達し、元のモデルの 72 エポックは 53.4 です。D-FINE-L と D-FINE-X は同じ遅延でそれぞれ 0.7 AP 上がります。これらの比較では学習レシピ一式も同時に変わっていて、同じエポック数での Dense O2O そのものの向上は、Table 4 の 0.8 AP を見る必要があります。\n\nRT-DETR や D-FINE で自分のデータを学習させるなら、DEIM の変更はすべて学習側にあり、モデルと推論の流れは変えなくて済みます。一方、スケジュールのパラメータは COCO の長さに合わせて設定されているので、ウォームアップの 2,000 iteration や Dense O2O の区間は、自分のデータ量に合わせて計算し直す必要があります。GitHub では、数千から1万枚程度の自前のデータで DEIM の成績が YOLO に及ばなかったという報告もあり（[#61](https://github.com/Intellindust-AI-Lab/DEIM/issues/61)、[#106](https://github.com/Intellindust-AI-Lab/DEIM/issues/106)）、これらの議論にはまだ結論が出ていません。\n\nその後、DEIM の著者らは 2025年9月に DEIMv2 を出し、S 以上の版では DINOv3 の特徴を使うようになりました。YOLO の側も似たことをしていて、[YOLO26](/blog/papers/object-detection/yolo26) は学習中に一対多の損失の重みを少しずつ一対一のヘッドに譲り、追加の教師信号はやはり学習の前半に集中しています。\n","imageSizes":{"/content/papers/assets/26ca0b864b2588a0b6bcd3712361f3c983ad521564dbfbc205a627b0b749983f.png":{"width":1280,"height":1720}}}
