論文:《DETRs Beat YOLOs on Real-time Object Detection》 2023.4
DETRs Beat YOLOs on Real-time Object Detection:https://arxiv.org/pdf/2304.08069.pdf
源碼地址:https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rtdetr
本文是RT0-DETR的論文解析,詳細(xì)部署請查看DETR系列:RT-DETR實戰(zhàn)部署
1.目標(biāo)檢測算法發(fā)展
第一行是YOLO系列算法的發(fā)展過程,第二行是DETR系列算法的發(fā)展過程。
2.概述
實時目標(biāo)檢測(Real-Time Object Detection )過去一直由 YOLO 系列模型主導(dǎo)。YOLO 檢測器有個較大的待改進(jìn)點是需要 NMS 后處理,其通常難以優(yōu)化且不夠魯棒,因此檢測器的速度存在延遲。
2020年DETR算法誕生,Detr是第一個基于transformer的端到端算法,沒有anchor前處理和NMS后處理,但是Detr收斂慢,訓(xùn)練慢,推理也慢,盡管后續(xù)的優(yōu)化算法不斷加快收斂速度,提升推理速度,但仍然無法實現(xiàn)實時要求。
RT-DETR基于DINO檢測模型進(jìn)行改進(jìn),首次實現(xiàn)實時端到端檢測。
本文的主要貢獻(xiàn)總結(jié)如下:
本文的主要貢獻(xiàn)總結(jié)如下
- 提出了第一個實時端到端對象檢測器,它不僅在精度和速度方面優(yōu)于當(dāng)前的實時檢測器,也不需要后期處理,因此它的推理速度沒有延遲并且能夠保持穩(wěn)定。
- 本文詳細(xì)分析了NMS對實時檢測器的影響,并從后處理的角度得出了基于CNN的實時檢測器的結(jié)論(即同等精度情況下,anchor-based算法速度比anchor-free的算法慢)。
- 本文提出的IoU-Aware query選擇在我們的模型中顯示出優(yōu)越的性能改進(jìn),這為改進(jìn)目標(biāo)查詢的初始化方案提供了新的思路。
- 本文的工作為端到端檢測器的實時實現(xiàn)提供了一個可行的解決方案,并且所提出的檢測器可以通過使用不同的解碼器層來靈活地調(diào)整模型大小和推理速度,而不需要重新訓(xùn)練。
3.NMS分析
NMS在目標(biāo)檢測后處理中應(yīng)用廣泛,主要用來去除重疊的冗余框。NMS有2個超參數(shù):分?jǐn)?shù)閾值和IOU閾值,尤其是,分?jǐn)?shù)低于閾值的檢測框不論IOU閾值多大,都會被過濾,因此NMS的執(zhí)行事件取決于輸入的預(yù)測框數(shù)量,以及2個超參數(shù)的值。
本文利用YOLOv5和YOLOv8進(jìn)行實驗。首先輸入相同圖像,計算不同得分閾值過濾后剩余的預(yù)測框數(shù)量。分?jǐn)?shù)閾值采樣區(qū)間是0.001到0.25,對兩個檢測器的剩余預(yù)測框進(jìn)行計數(shù),并將其繪制成直方圖,直觀地反映了NMS易受其超參數(shù)的影響。此外,本文以YOLOv8為例,在COCO val2017數(shù)據(jù)集上評估不同NMS超參數(shù)下的模型準(zhǔn)確性和NMS操作的執(zhí)行時間,運行設(shè)備是GPU T4
從上面圖2可以看出,隨著分?jǐn)?shù)閾值增大,剩余預(yù)測框的數(shù)量減少,對于同一個分?jǐn)?shù)閾值,YOLOv5 (anchorbased)剩余框的數(shù)量大于YOLOv8 (anchor-free)。從表1可以看出,不同的閾值下推理時間和AP均會變化,超參數(shù)會影響算法性能,導(dǎo)致算法不夠魯棒。
4.RT-DETR模型結(jié)構(gòu)
1)Backbone: 采用了經(jīng)典的ResNet(便于和detr系列算法對比)和百度的HGNet-v2(速度精度由于前者)兩種,backbone是可以Scaled,論文只公布ResNet-50和ResNet-101,HGNetv2-l和HGNetv2-x。不同于DINO等DETR類檢測器使用最后4個stage輸出,RT-DETR為了提速只需要最后3個,下面介紹一下HGNet網(wǎng)絡(luò)。
PP-HGNet 針對 GPU 設(shè)備,對目前 GPU 友好的網(wǎng)絡(luò)做了分析和歸納,盡可能多的使用 3x3 標(biāo)準(zhǔn)卷積(計算密度最高)。將主要的有利于 GPU 推理的改進(jìn)點進(jìn)行融合,從而得到一個有利于 GPU 推理的骨干網(wǎng)絡(luò),同樣速度下,精度大幅超越其他 CNN 或者 VisionTransformer 模型。
PP-HGNet 骨干網(wǎng)絡(luò)的整體結(jié)構(gòu)如下:
PP-HGNet是由多個HG-Block組成,HG-Block的細(xì)節(jié)如下:
PP-HGNet的整體結(jié)構(gòu)由一個Stem模塊+四個HG Stage構(gòu)成,PP-HGNet 的第一層由channel為96的Stem模塊構(gòu)成,目的是為了減少參數(shù)量和計算量。stem由一系列ConvBNAct(Conv+BN+Act,添加了use_lab結(jié)構(gòu),類似于resnet的分支殘差),第二層到第五層由HG Stage構(gòu)成,每個HG Stage主要由包含大量標(biāo)準(zhǔn)卷積的HG Block,其中PP-HGNet的第三到第五層使用了使用了可學(xué)習(xí)的下采樣層(LDS Layer)。其中,可學(xué)習(xí)的下采樣層(Learnable Down-Sampling Layer)是指通過學(xué)習(xí)參數(shù)來進(jìn)行下采樣的一種層次結(jié)構(gòu)。在傳統(tǒng)的下采樣方法中(如最大池Max Pooling),下采樣的過程是固定的,沒有可學(xué)習(xí)的參數(shù)。而可學(xué)習(xí)的下采樣層則可以根據(jù)輸入數(shù)據(jù)的特征進(jìn)行動態(tài)的下采樣,從而提高網(wǎng)絡(luò)的性能和準(zhǔn)確率。PP-HGNet的激活函數(shù)為Relu,常數(shù)級操作可保證該模型在硬件上的推理速度。
2)Neck:如上圖所示,本文提出HybridEncoder,包括兩部分:Attention-based Intra-scale Feature Interaction (AIFI) 和 CNN-based Cross-scale Feature-fusion Module (CCFM) 。AIFI只采用了一層普通的Transformer的Encoder,包含標(biāo)準(zhǔn)的MHSA(或者Deformable Attention)和FFN,將二維的s5 特征拉成向量,然后交給AIFI模塊處理,隨后,再將輸出調(diào)整回二維,記作 f5 ,以便去完成后續(xù)的跨尺度特征融合CCFM。AIFI由幾個通道維度區(qū)分L和X兩個版本,配合CCFM中RepBlock數(shù)量一起調(diào)節(jié)寬度深度實現(xiàn)Scaled RT-DETR。
本文通過一系列實驗得出HybridEncoder的設(shè)計思路,具體如下圖
(a) : 將s3 、 s4 和 s5拼接在一起,不包含Encoder的,即沒有自注意力機制,在Backbone之后直接接Decoder去做處理,得到最終的輸出。注意,這里的拼接是先將二維的 H×W 拉平成 HW ,然后再去拼接: H1W1+ H2W2+ H3W3 。表3中(a)取得43.0 AP的結(jié)果。
(b) :在(a)基礎(chǔ)上,加入了單尺度的Transformer Encoder(SSE),僅包含一層Encoder層,分別處理三個尺度的輸出,這里三個尺度共享一個SSE,而不是為每一個尺度都設(shè)計一個獨立的SSE,理論上共享SSE優(yōu)于獨立SSE,因為通過這一共享的操作,三個尺度的信息是可以實現(xiàn)一定程度的信息交互。最后將處理結(jié)果拼接在一起,交給后續(xù)的網(wǎng)絡(luò)去處理,得到最終的輸出。表3中(b)從43.0提升至44.9,表明使用共享的SSE是可以提升性能的。
? : 使用多尺度的Transformer Encoder(MSE),將三個尺度的特征拼接在一起后,交由MSE來做處理,使得三個尺度的特征同時完成“尺度內(nèi)”和“跨尺度”的信息交互和融合,最后將處理結(jié)果,交給后續(xù)的網(wǎng)絡(luò)去處理,得到最終的輸出。C使用MSE來同步完成“尺度內(nèi)”和“跨尺度”的特征融合,這一做法可以讓不同尺度的特征之間得到更好的交互和融合, 表3中?AP指標(biāo)提升至45.6,這表明MSE的做法是有效的,即“尺度內(nèi)”和“跨尺度”的特征融合是必要的。但是,從速度的角度來看,Latency從7.2增加值13.3 ms,要高于B組的11.1 ms;
(d) : 先用共享的SSE分別處理每個尺度的特征,然后再使用PAN-like的特征金字塔網(wǎng)絡(luò)去融合三個尺度的特征,最后將融合后的多尺度特征拼接在一起,交給后續(xù)的網(wǎng)絡(luò)去處理,得到最終的輸出。d是相當(dāng)于解耦了c中的MSE:先使用共享的SSE分別去處理每個尺度的特征,完成“尺度內(nèi)”的信息交互,然后再用一個PAN風(fēng)格的跨尺度融合網(wǎng)絡(luò)去融合不同尺度之間的特征,完成“跨尺度”的信息融合。這種做法可以有效地避免MSE中因輸入的序列過長而導(dǎo)致的計算量增加的問題。相較于c,表3中(d)的Latency從13.3 ms降低至12.2 ms,性能也從45.6 AP提升至46.4 AP,這表明MSE的做法并不是最優(yōu)的,先處理“尺度內(nèi)”,再完成“跨尺度”,性能會更好;
(DS5) :用一個SSE只處理 s5 特征,隨后的跨尺度特征融合和D保持一致。DS5的做法必然會提高推理速度, 表3中(DS5)Latency從12.2 ms降低至7.9 ms,同時,性能從46.4提升至46.8。由此可見,Transformer的Encoder只需要處理 s5 特征即可,不需要再加入淺層特征的信息。
(e) :使用一個SSE處理 s5 特征,即所謂的AIFI模塊,隨后再使用CCFM模塊去完成跨尺度的特征融合,最后將融合后的多尺度特征拼接在一起,交給后續(xù)的網(wǎng)絡(luò)去處理,得到最終的輸出。CCFM其實還是PaFPN,其中的Fusion模塊就是一個CSPBlock風(fēng)格的模塊,如下圖所示
上述實驗可以看出:1)以往的DETR,如Deformable DETR是將多尺度的特征都拉平成拼接在其中,構(gòu)成一個序列很長的向量,盡管這可以使得多尺度之間的特征進(jìn)行充分的交互,但也會造成極大的計算量和計算耗時。并且相較于較淺的s3特征和s4 特征,s5 特征擁有更深、更高級、更豐富的語義特征,這些語義特征是Transformer更加感興趣的和需要的,對于區(qū)分不同物體的特征是更加有用的,而淺層特征因缺少較好的語義特征而起不到什么作用。實驗結(jié)果也證明,Transformer的Encoder部分只需要處理s5的特征,既能大幅度削減計算量、提升計算速度,同時也不會降低性能,甚至還有所提升;2)對于多尺度特征的交互和融合,我們?nèi)钥梢圆捎肅NN架構(gòu)常用的PAN網(wǎng)絡(luò)來搭建,只需要一些細(xì)節(jié)上的調(diào)整即可。
3)Transformer: 起名為RTDETRTransformer,基于DINO Transformer中的decoder改動的不多;
4)Head和Loss: 和DINOHead基本一樣,使用到了DINO的“去噪思想”來提升匹配的樣本質(zhì)量,加快訓(xùn)練的收斂速度。不過,有一個細(xì)節(jié)上的調(diào)整,那就是在assignment階段和計算loss的階段,classification的標(biāo)簽都換成了IoU-Aware查詢選擇,將IoU分?jǐn)?shù)引入分類分支的目標(biāo)函數(shù),以實現(xiàn)對正樣本分類和定位的一致性約束。因為按照以往情況,有可能出現(xiàn)“當(dāng)定位還不夠準(zhǔn)確的時候,類別就已經(jīng)先學(xué)好了”的“未對齊”的情況,畢竟類別的標(biāo)簽非0即1。但如果將預(yù)測框與GT的IoU作為類別預(yù)測的標(biāo)簽,那么類別的學(xué)習(xí)就要受到回歸的調(diào)制,只有當(dāng)回歸學(xué)得也足夠好的時候,類別才會學(xué)得足夠好,否則,類別不會過快地先學(xué)得比回歸好,因此后者顯式地制約著前者。
5)Reader和訓(xùn)練策略:
訓(xùn)練測試數(shù)據(jù):本文在COCO train2017數(shù)據(jù)集上訓(xùn)練,在COCO val2017數(shù)據(jù)集驗證,使用單尺度圖像在COCO AP矩陣驗證。Reader采用的是YOLO常用的640尺度,沒有DETR類檢測器復(fù)雜的多尺度resize。
網(wǎng)絡(luò):使用ImageNet上預(yù)訓(xùn)練的ResNet和HGNetv2系列作為骨干網(wǎng)絡(luò)。AIFI由1層transformer 構(gòu)成,CCMF由3個RepBlocks構(gòu)成。在IoU-aware查詢選擇中,使用encoder的top 300特征來初始化decoder的query。訓(xùn)練的策略和decoder的超參數(shù)與DINO一致。用AdamW優(yōu)化器訓(xùn)練,其他參數(shù)配置為base learning rate = 0:0001,weight decay = 0:0001, global gradient clip norm =0:0001, and linear warmup steps = 2000. ema decay = 0:9999.骨干網(wǎng)絡(luò)學(xué)習(xí)率同detr。數(shù)據(jù)增強采用的是基礎(chǔ)的隨機顏色抖動、隨機翻轉(zhuǎn)、裁剪和 Resize,0均值1方差的NormalizeImage大概是為了節(jié)省部署時圖片前處理的耗時,沒有用mosaic等trick。默認(rèn)在 COCO train2017 上訓(xùn)練 6x ,即72個epoch。
6)模型詳情:
如上圖所示,本文提供ResNet、HGNetv2系列2個版本。使用depth multiplier和width multiplier將Backbone和混合編碼器一起縮放。因此,得到了具有不同數(shù)量的參數(shù)和FPS的RT-DETR的兩個版本。對于混合編碼器,通過分別調(diào)整CCFM中RepBlock的數(shù)量和編碼器的嵌入維度來控制depth multiplier和width multiplier。值得注意的是,提出的不同規(guī)模的RT-DETR保持了同質(zhì)解碼器,這有助于使用高精度大型DETR模型對光檢測器進(jìn)行蒸餾。
5.性能對比
-
yolo系列精度對比
相同尺度的版本下,RT-DETR速度和精度都超過yolo系列,在 COCO val2017 上的精度為 53.0% AP ,在 T4 GPU 上的 FPS 為 114,RT-DETR-X 的精度為 54.8% AP,F(xiàn)PS 為 74。
并且RT-DETR只訓(xùn)練72個epoch,而先前精度最高的YOLOv8需要訓(xùn)練500個epoch,其他YOLO也基本都需要訓(xùn)300epoch。此外RT-DETR的HGNET版本參數(shù)量FLOPs也低于yolo系列。 -
對比DETR系列
RT-DETR-R50 在 COCO val2017 上的精度為 53.1% AP,在 T4 GPU 上的 FPS 為 108,RT-DETR-R101 的精度為 54.3% AP,F(xiàn)PS 為 74??偨Y(jié)來說,RT-DETR 比具有相同 backbone 的 DETR 系列檢測器有比較顯著的精度提升和速度提升。DETR類在COCO上常用的尺度都是800x1333,而RT-DETR采用640x640尺度,精度也能高于之前的DETR系列模型。
6.參考資料
https://blog.csdn.net/PaddlePaddle/article/details/130355297文章來源:http://www.zghlxwxcb.cn/news/detail-753083.html
https://zhuanlan.zhihu.com/p/626659049文章來源地址http://www.zghlxwxcb.cn/news/detail-753083.html
到了這里,關(guān)于DETR系列:RT-DETR(一) 論文解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!