{"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":"zh-hant","path":"/content/papers/zh-hant/object-detection/deim.bbce97420b74.md","headings":[{"id":"定義問題","text":"定義問題","depth":2},{"id":"正例只有物件那麼多","text":"正例只有物件那麼多","depth":3},{"id":"配到了卻配歪了","text":"配到了，卻配歪了","depth":3},{"id":"前人的補法","text":"前人的補法","depth":3},{"id":"解決問題","text":"解決問題","depth":2},{"id":"dense-o2o一張圖多放幾個物件","text":"Dense O2O：一張圖多放幾個物件","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":"zh-hant","path":"/content/papers/zh-hant/object-detection/h-detr.d66c2131bca7.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-benchmark","text":"COCO Benchmark","depth":3},{"id":"lvis-benchmark","text":"LVIS Benchmark","depth":3},{"id":"sota-benchmark","text":"SOTA Benchmark","depth":3},{"id":"消融實驗","text":"消融實驗","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"object-detection/deformable-detr","relation":"background","topic":"集合預測與注意力偵測器"}]},{"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":"zh-hant","path":"/content/papers/zh-hant/object-detection/dino-detr.667f5bcbb753.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":"排行榜上的那一格","text":"排行榜上的那一格","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":"zh-hant","path":"/content/papers/zh-hant/object-detection/rt-detr.39c167c6afdb.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":"aifi只在-s5-做自注意力","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":"一張照片標了 3 個物件，RT-DETR 準備了 300 個 query。一對一配對完，只有 3 個 query 學得到框該畫在哪裡，剩下 297 個的訓練目標都是「沒有物件」。\n\nYOLO 沒有這個煩惱。它用一對多的標籤分配，一個物件同時認領附近好幾個預測，監督密得多；代價是推論時同一個物件會冒出好幾個框，得靠 NMS 收拾。\n\nDETR 這邊想把正例補回來，這幾年的做法多半是在模型旁邊加東西。[H-DETR](/blog/papers/object-detection/h-detr) 另開一組一對多的 query，Group DETR 多開幾組 query 各自配對，[DINO](/blog/papers/object-detection/dino-detr) 加上一批去雜訊的練習題。這些額外的監督推論時都會拿掉，訓練時卻得多算一份。\n\n2024 年 12 月，Intellindust AI Lab 與香港城市大學等單位的作者提出 DEIM，改從資料下手。配對規則不動，模型也不動，只讓一張訓練圖裡多幾個物件，一對一配對自然就多出幾個正例。它借用 YOLO 系列早就在用的 Mosaic 和 Mixup 兩種資料增強。論文後來發表在 CVPR 2025。\n\n## 定義問題\n\n### 正例只有物件那麼多\n\n先把兩種分配寫成同一條式子。一張圖有 $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$，這時一張圖的正例數就是 $N$，照片裡標了幾個物件就有幾個。query 開到 300 個也一樣。\n\n作者訓練 RT-DETRv2（ResNet-50）時，在一個 COCO epoch 裡統計每張圖配出幾個正例，一邊用匈牙利演算法，一邊用 YOLOX 的 SimOTA（論文 Figure 3）。RT-DETRv2 是百度在 2024 年 7 月推出的 [RT-DETR](/blog/papers/object-detection/rt-detr) 改良版；SimOTA 是一種一對多分配，先依每個物件附近預測框的 IoU 估出要配幾個，記為 $k$，再取配對成本最低的 $k$ 個預測當正例。\n\n一對一的分布在每張圖不到 10 個正例處擠成一個尖峰。SimOTA 的分布攤得很開，有些照片一張就超過 80 個正例。把兩邊相除，比例最常落在 7 倍左右，極端情況約 10 倍。\n\nFigure 3 只數配對本身配出的正例。RT-DETRv2 訓練時還帶著一批 [DN-DETR](/blog/papers/object-detection/dn-detr) 式的去雜訊 query，DEIM 也保留了它們，那是另一份額外監督。\n\n### 配到了，卻配歪了\n\n作者認為 DETR 收斂慢還有第二個原因，叫低品質配對（low-quality match）。\n\nYOLO 這類偵測器在特徵圖上密密排了上千個預測位置（論文說密集的 anchor 通常超過 8,000 個），每個物件附近總有幾個位置靠得夠近。DETR 只有 100 或 300 個 query，一開始和物件的位置沒有對齊。DINO、RT-DETR 後來改從 encoder 的輸出挑分數最高的位置來初始化 query，query 確實離物件近了，卻容易擠在幾個顯眼的物件旁邊。\n\n不起眼的物件附近沒有 query，一對一配對又規定每個物件都得配到一個。最後配給它的 query，框和物件的 IoU 可能很低，信心分數卻很高。\n\n### 前人的補法\n\nDEIM 之前，補正例的方法都在增加每個物件的正例數。Group DETR 訓練時開 K 組 query，各組獨立做一對一配對，每個物件就有 K 個正例；H-DETR 的混合配對做法類似。Co-DETR 則在 encoder 後面接上 Faster R-CNN、FCOS 這類一對多的輔助頭。\n\n作者對這些方法有兩點意見。一是要多跑幾組 decoder 或輔助頭，訓練成本變高；二是一對多的監督多了，模型可能又學會對同一個物件輸出好幾個高分的框，回到傳統偵測器的老問題。\n\n\n> [!TIP]\n> \n> H-DETR 的混合配對，以及兩組 query 怎麼用遮罩隔開，可以參考我們的筆記：\n> \n> - **[[22.07] H-DETR：靜默查詢的反叛](/blog/papers/object-detection/h-detr)**\n\n\n那麼，能不能不加 query、不加輔助頭，也不碰一對一配對，就讓正例變多？正例變多以後，那些配歪的配對又該怎麼處理？\n\n## 解決問題\n\nDEIM 的兩個元件分別回答這兩個問題。Dense O2O 負責把正例變多，Matchability-Aware Loss（MAL）負責處理變多以後的低品質配對。兩者都只改訓練，推論時的模型、query 數和輸出流程都和原本一樣。\n\n### Dense O2O：一張圖多放幾個物件\n\n回到前面那條式子。一對多增加 $M_i$；Dense O2O 讓 $M_i$ 維持 1，改成增加 $N$。\n\n論文 §3.2 用一個例子說明。把一張只有一隻狗的照片縮小、複製成 2×2 的四格，拼回原本的尺寸，一隻狗就變成四隻，一對一配對也就配出 4 個正例，和一對多替原本那隻狗配出的 4 個正例一樣多。\n\n實際訓練沒有把同一張照片複製四次。作者改用兩個 YOLO 系列常見的資料增強，官方程式裡的設定如下：\n\n- **Mosaic**：每張訓練圖以 0.5 的機率觸發。拿目前這張，再從資料集隨機抽 3 張，各自縮到短邊 320 像素，貼進 2×2 的四格，整張做一次隨機仿射（旋轉 ±10°、平移 10%、縮放 0.5 到 1.5 倍），最後縮成 640×640。\n- **Mixup**：每個 batch 以 0.5 的機率觸發。batch 裡每張圖和前一張圖以 0.45 到 0.55 的比例疊在一起，兩張圖的標註框全部留下。\n\n這樣下來，每張訓練圖平均的物件數從約 10 個變成約 25 個（附錄 Table 12）。作者也試過把平均數推到約 50 個，訓練 24 個 epoch 的 AP 反而從 52.5 掉到 52.2；他們歸因於正負例比例失衡，以及物件太多造成的資料分布偏移。\n\n有讀者在 GitHub 上問過，論文圖上的四倍關係是不是寫在配對的程式裡。第一作者回覆，那只是舉例，實際比例不會固定是 4。負例數則是 query 數減掉正例數，例如 300 個 query、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，四張圖拼成一張的樣子，可以參考我們的筆記：\n> \n> - **[[20.04] YOLOv4：模型設計顧問](/blog/papers/object-detection/yolov4)**\n\n\n成本呢？配對方式和模型都沒變，GPU 上的計算量也就沒變。在單張 RTX 4090 上，RT-DETRv2-R50 跑一個 epoch 要 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$ 是預測的信心分數，$q$ 是預測框和配對物件的 IoU：\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- 兩行用同一個 $\\gamma$，論文取 1.5。\n\n我們拿兩個配對算算看。一個是 IoU 0.05 的低品質配對，一個是 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，同樣兩個 IoU 畫成曲線，看上半張的藍線，和下半張兩條線之間的距離：\n\n![折線圖，分上下兩張，橫軸是信心分數 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 的好配對，兩條線幾乎重疊，從左端約 4.2 一路降到右端約 0.3。](/content/papers/assets/728ebf51d648559c31fbbb0d0dafd4107b254df8b6016972cd881c555eb051ae.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。下半張兩條線幾乎重疊，信心越低損失越大，兩種損失對好配對的要求差不多。\n\n再看梯度。兩種損失對 logit 微分，形式都是「權重 ×（信心 − 目標分數）」，我們把剛才的兩個情況各挑一點：\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 個 epoch 掃過四個值（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 個 epoch 的官方設定為例（論文附錄 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 個 epoch 刻意不開進階的資料增強。依附錄的說明，DETR 的注意力沒有卷積那種歸納偏差，得從零學起，先給它簡單的圖比較好學。接著 Dense O2O 開 30 個 epoch，剛好是總長的一半。照作者在 GitHub 上的說明，總長 $E$ 個 epoch 時，前 4 個暖身，接下來 $E/2$ 個開 Dense O2O，學習率也持平到第 $4 + E/2$ 個 epoch 才開始下降。[DEIM #9](https://github.com/Intellindust-AI-Lab/DEIM/issues/9)\n\n為什麼開到一半就關？論文只說在一半的 epoch 後停掉 Dense O2O 結果比較好，沒有附上對照表。拼過的圖物件又多又小，和驗證時看到的照片不一樣；後半段回到正常照片，或許是讓模型重新適應真實的分布。Table 12 裡物件塞太多反而退步，作者也歸因於分布偏移。這段是本文的推測。\n\nD-FINE 為基礎的設定還多一段。D-FINE 本身在訓練最後多跑 8 個關掉進階增強的 epoch，用來搜尋 EMA 的衰減值，DEIM 沿用了這個做法。所以論文 Table 1 寫的 50 個 epoch，官方設定實際跑 58 個；同一張表裡 D-FINE 寫的 72 個 epoch，它自己的設定也是跑 80 個。[DEIM #56](https://github.com/Intellindust-AI-Lab/DEIM/issues/56)\n\n這套排程也讓驗證曲線看起來有點怪。有使用者在自己的單類別資料集上比較 D-FINE 和 DEIM-D-FINE，發現 DEIM 的驗證 AP 前期一直落後。第一作者回了兩點。Dense O2O 是更強的資料增強，開著的時候驗證成績本來就會比較低，論文說的收斂快，是指用更少的 epoch 達到相同或更好的成績。另外，學習率暖身的 2,000 個 iteration 是照 COCO 設的，那份資料集小，暖身拖到第 100 個 epoch 左右才結束。使用者把暖身改成 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 套在兩個基礎模型上。一個是前面提過的 RT-DETRv2，另一個是 [D-FINE](https://arxiv.org/abs/2410.13842v1)。D-FINE 是中國科學技術大學在 2024 年 10 月提出的即時 DETR，以 RT-DETR 的架構為基礎，把框的回歸從直接預測四個座標，改成逐層修正每條邊位置的機率分布。\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 各多了 0.7 AP，表上的 epoch 數從 72 降到 50，少了約 30%，論文正文也是這麼寫的。算上兩邊各自的 8 個 EMA epoch（58 對 80），約少 28%。摘要裡「訓練時間減半」的說法，對應後面 RT-DETRv2 那組 36 對 72 個 epoch 的比較。\n\n和 YOLO 比，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，作者在正文也承認這個差距。epoch 數則只適合在同一個家族裡比，DEIM 的 backbone 已經在 ImageNet 上預訓練過。\n\n作者還寫到，YOLOv10 用了一對多加一對一的混合分配，DEIM 的模型仍然全面勝過它，這證明 Dense O2O 有效。這個推論跳得有點遠。兩邊的架構、預訓練和訓練長度都不同，表上的差距沒辦法單獨歸給 Dense O2O，也沒辦法拿來評價 YOLOv10 的雙頭設計。要看 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\n只開 Dense O2O，36 個 epoch 就追上、略為超過基準模型 72 個 epoch 的成績；再加上 MAL，兩個基礎模型又各多 0.3 和 0.4 AP。換成 GPU 小時（Table 7），RT-DETRv2-R50 原版 72 個 epoch 約 85 小時拿到 53.4，DEIM 跑 60 個 epoch 約 71 小時拿到 54.3。\n\n這張表拿 36 個 epoch 的 DEIM 比 72 個 epoch 的原版，沒有同樣 36 個 epoch、不開 Dense O2O 的對照。依附錄與官方設定檔，DEIM 的實驗也都換上了作者整套訓練配方，包括新的學習率與資料增強排程、解凍 backbone 的 BN、decoder 改用 SiLU；依官方設定檔，RT-DETRv2 的基礎學習率也從 1e-4 提高到 2e-4。\n\n附錄裡，作者在 D-FINE 上單獨測過那些小改動，訓練 36 個 epoch 時，D-FINE-L 沒有變化，D-FINE-X 從 55.4 到 55.5。順帶一提，D-FINE-X 只訓練 36 個 epoch 就有 55.4，離 72 個 epoch 的 55.8 不遠。\n\n同樣 epoch 數的對照在 Table 4。RT-DETRv2-R50 分別訓練 12 和 24 個 epoch，只改 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 個 epoch 各多 0.8 AP，24 個 epoch 時小物件的 AP 多了 2.1。只開 Mixup 在 24 個 epoch 時反而略低。這是同條件下 Dense O2O 本身的增益，比 Table 6 的跨 epoch 比較乾淨。\n\n附錄 Table 13 還比了訓練集上的 AP。DEIM 在訓練集略低（64.8 對 65.1），驗證集較高（54.3 對 53.4），作者解讀為比較不會過度擬合訓練資料。\n\n### 物件很擠的時候\n\nCrowdHuman 是擁擠人群的資料集。作者照 D-FINE 的設定，兩邊都訓練 120 個 epoch（Table 3），這次 DEIM 沒有省 epoch：\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 對同一個風箏輸出四個高度重疊、信心都很高的框，DEIM 訓練的版本只留一個。這只是一張圖的例子，沒有統計數字。\n\n另外，從 D-FINE 在 Objects365 上預訓練的權重出發再微調 COCO，D-FINE-X 微調 32 個 epoch 是 59.3 AP，加上 DEIM 微調 24 個 epoch 是 59.5（Table 8）。\n\n### 重現的回報\n\nGitHub 上有使用者照官方設定，在 8 張 A100 上訓練 DEIM-D-FINE-X。第 50 個 epoch 是 55.8 AP，跑完 58 個 epoch 是 56.16，比論文的 56.5 低 0.3；使用者自己也懷疑批次大小和學習率沒有對齊。第一作者回覆，要嚴格照官方設定的 50 加 8 個 epoch，同設定下的波動約 ±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 收斂慢的兩個原因拆開處理。正例太少，就讓一張訓練圖多幾個物件，一對一配對自然多出正例，GPU 的計算量不變。多出來的低品質配對，就用 MAL 把它們的信心壓下去，好配對維持原樣。訓練排程把 Dense O2O 夾在中間，前面先暖身，後半段回到正常照片。\n\n在 COCO 上，RT-DETRv2-R50 用 36 個 epoch 拿到 53.9 AP，原版 72 個 epoch 是 53.4；D-FINE-L 和 D-FINE-X 在相同延遲下各多 0.7 AP。這些比較同時換了整套訓練配方，同樣 epoch 數下 Dense O2O 本身的增益，要看 Table 4 的 0.8 AP。\n\n如果你要拿 RT-DETR 或 D-FINE 訓練自己的資料，DEIM 的改動都在訓練端，模型和推論流程不用動。排程的參數則是按 COCO 的長度設的，暖身的 2,000 個 iteration、Dense O2O 的區間，都得照自己的資料量重算。GitHub 上也有使用者回報，在幾千到一萬張圖的自有資料上，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/728ebf51d648559c31fbbb0d0dafd4107b254df8b6016972cd881c555eb051ae.png":{"width":1280,"height":1720}}}
