超越YOLOv8,飛槳推出精度最高的實時檢測器RT-DETR!

衆所周知,實時目標檢測( Real-Time Object Detection )一直由 YOLO 系列模型主導。

飛槳在去年 3 月份推出了高精度通用目標檢測模型 PP-YOLOE ,同年在 PP-YOLOE 的基礎上提出了 PP-YOLOE+ 。後者在訓練收斂速度、下游任務泛化能力以及高性能部署能力方面均達到了很好的效果。而繼 PP-YOLOE 提出後,MT-YOLOv6、YOLOv7、DAMO-YOLO、RTMDet 等模型先後被提出,一直迭代到今年開年的 YOLOv8。

而我們一直在思考,實時目標檢測器除了 YOLO 是否還有其他技術路線可以探索呢?

YOLO 檢測器有個較大的待改進點是需要 NMS 後處理,其通常難以優化且不夠魯棒,因此檢測器的速度存在延遲。爲避免該問題,我們將目光移向了不需要 NMS 後處理的 DETR,一種基於 Transformer 的端到端目標檢測器。然而,相比於 YOLO 系列檢測器,DETR 系列檢測器的速度要慢的多,這使得"無需 NMS "並未在速度上體現出優勢。上述問題促使我們針對實時的端到端檢測器進行探索,旨在基於 DETR 的優秀架構設計一個全新的實時檢測器,從根源上解決 NMS 對實時檢測器帶來的速度延遲問題。

由此,我們正式推出了——RT-DETR (Real-Time DEtection TRansformer) ,一種基於 DETR 架構的實時端到端檢測器,其在速度和精度上取得了 SOTA 性能。

  • 點擊文末閱讀原文快速體驗 RT-DETR

https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rtdetr

  • 論文地址:

https://arxiv.org/abs/2304.08069

關於 PaddleDetection 的技術問題歡迎大家入羣討論,也歡迎大家在 GitHub 點 star 支持我們的工作!

NMS 分析

書接上文,具體分析 NMS 。

NMS 是目標檢測領域常用的後處理技術,用於去除檢測器產生的重疊較多的檢測框,其包含兩個超參數:置信度閾值和 IoU 閾值。具體來說,低於置信度閾值的框被直接過濾,並且如果兩個檢測框的交併比大於 IoU 閾值,那麼其中置信度低的框會被濾除。該過程迭代執行,直到所有類別都被處理完畢。因此,NMS 算法的執行時間取決於預測框數量和上述兩個閾值。爲了更好地說明這一點,我們使用 YOLOv5 (anchor-based) 和 YOLOv8 (anchor-free)  進行了統計和實測,測量指標包括不同置信度閾值下剩餘的檢測框的數量,以及在不同的超參數組合下檢測器在 COCO 驗證集上的精度和 NMS 的執行時間。實驗結果表明,NMS 不僅會延遲推理速度,並且不夠魯棒,需要挑選合適的超參數才能達到最優精度。這一實驗結果有力證明設計一種實時的端到端檢測器是具有重要意義的。

RT-DETR結構設計

近年來,得益於研究者們在加速訓練收斂和降低優化難度上做出的努力, DETR 系列模型已經獲得了優秀的性能。然而,DETR 與現有實時檢測器在速度上存在巨大差距,因此,將其推向實時化面臨巨大的挑戰。我們在分析了 DETR 變體模型的架構中各組件對速度和精度的影響後,將主要優化目標定在編碼器部分。現有的多尺度 Transformer 編碼器在多個尺度的特徵之間進行注意力運算,同時進行尺度內和尺度間特徵交互,計算消耗較大。爲了減少計算消耗,一個簡單的辦法是直接削減編碼器層數。但是我們認爲這並不能從根本上解決問題並且勢必會對精度造成較大影響,更本質的方法應該是要解耦這種尺度內和尺度間的同時交互,縮短輸入編碼器的序列長度。

爲此,我們設計了一系列編碼器變體來驗證解耦尺度內和尺度間特徵交互的可行性並最終演化爲我們提出的 HybridEncoder ,其包括兩部分:Attention-based Intra-scale Feature Interaction (AIFI) 和 CNN-based Cross-scale Feature-fusion Module (CCFM) 。最後的實驗結果證明了這一思路是可行的,並且可以同時在速度和精度上帶來正向收益。

爲了進一步提高 RT-DETR 的精度,我們又將目光移向了 DETR 架構的另外兩個關鍵組件:Query Selection 和 Decoder 。Query Selection 的作用是從 Encoder 輸出的特徵序列中選擇固定數量的特徵作爲 object queries ,其經過 Decoder 後由預測頭映射爲置信度和邊界框。現有的 DETR 變體都是利用這些特徵的分類分數直接選擇 top-K 特徵。然而,由於分類分數和 IoU 分數的分佈存在不一致,分類得分高的預測框並不一定是和 GT 最接近的框,這導致高分類分數低 IoU 的框會被選中,而低分類分數高 IoU 的框會被丟棄,這將會損害檢測器的性能。

爲解決這一問題,我們提出了 IoU-aware Query Selection ,通過在訓練期間約束檢測器對高 IoU 的特徵產生高分類分數,對低 IoU 的特徵產生低分類分數。從而使得模型根據分類分數選擇的 top-K 特徵對應的預測框同時具有高分類分數和高 IoU 分數。我們通過可視化這些編碼器特徵的置信度分數以及與 GT 之間的 IoU 分數後發現,IoU-aware Query Selection(藍色點)明顯提高了被選中特徵的質量(集中於右上角)。對於 Decoder ,我們並沒有對其結構進行調整,目的是爲了方便使用高精度的 DETR 的大檢測模型對輕量級 DETR 檢測器進行蒸餾,我們認爲這是未來可探索的一個方向。

最終我們的 RT-DETR 整體結構如下圖所示:

對於 backbone 部分,我們採用了經典的 ResNet 和可縮放的 HGNetv2 兩種,我們本次使用兩種 backbone 各訓練了兩個版本的 RT-DETR ,以 HGNetv2 爲 backbone 的 RT-DETR 包括 L 和 X 版本,以 ResNet 爲 backbone 的 RT-DETR 則包括 RT-DETR-R50 和 RT-DETR-R101 。RT-DETR-R50 / 101 方便和現有的 DETR 變體進行對比,而 RT-DETR-L / X 則用來和現有的實時檢測器( YOLO 系列模型)進行對比。

對於數據增強和訓練策略部分,我們的數據增強採用的是基礎的隨機顏色抖動、隨機翻轉、裁剪和 Resize ,並且在驗證和推理時圖像的輸入尺寸統一爲 640 ,與 DETR 系列的處理方式有較大的不同,主要是爲了滿足實時性的要求。我們的訓練策略則是和 DETR 系列基本相同,優化器同樣採用 AdamW ,默認在 COCO train2017 上訓練 6x ,即 72 個 epoch 。

另外,考慮到多樣化的應用場景,實時檢測器通常會提供多個不同尺度的模型,RT-DETR 同樣可以進行縮放,我們通過調整 CCFM 中 RepBlock 的數量和 Encoder 的編碼維度分別控制 Hybrid Encoder 的深度和寬度,同時對 backbone 進行相應的調整即可實現檢測器的縮放。

實驗結果

和實時檢測器對比

RT-DETR-L 在 COCO val2017 上的精度爲 53.0% AP ,在 T4 GPU 上的 FPS 爲 114,RT-DETR-X 的精度爲 54.8% AP,FPS 爲 74。相同尺度的版本下,RT-DETR 比 YOLO 系列檢測器的精度都更高一些,端到端速度都更快一些。

和端到端檢測器對比

RT-DETR-R50 在 COCO val2017 上的精度爲 53.1% AP,在 T4 GPU 上的 FPS 爲 108,RT-DETR-R101 的精度爲 54.3% AP,FPS 爲 74。總結來說,RT-DETR 比具有相同 backbone 的 DETR 系列檢測器有比較顯著的精度提升和速度提升。詳細的實驗數據見下表:

Decoder 消融實驗

我們還對 Decoder 不同層的輸出評估了精度,並測試了對應的檢測器推理時間。RT-DETR 通過在推理時使用不同層數的 Decoder ,可以靈活的調整推理速度而不需要重新訓練。我們發現減少少數的層( 1~2 )對精度產生的影響很小,而且可以顯著提高推理速度,這爲提供更輕量級的 RT-DETR(S or M) 提供了可行方案。

總結

在本文中,我們提出了一個實時的端到端檢測器 RT-DETR ,克服了 NMS 對實時檢測器推理速度的延遲和對精度的影響,對 DETR 的實時化進行了初步的探索和嘗試,並提供了一種可行的解決方案。我們認爲 RT-DETR 還有很多可以改進的地方,例如在小目標上的性能指標尚不如 YOLO 系列的部分檢測器。在今後的研究中還可以繼續優化,從而爲實時目標檢測這一領域提供更優的解決方案,爲實際應用帶來更好的體驗。預訓練模型、部署等使用教程已全面發佈,歡迎大家試用!詳細鏈接可點擊文末閱讀原文快速體驗!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章