1. 簡(jiǎn)介
近幾年來(lái),目標(biāo)檢測(cè)模型,尤其是單階段目標(biāo)檢測(cè)模型在工業(yè)場(chǎng)景中已經(jīng)得到廣泛應(yīng)用。對(duì)于檢測(cè)算法來(lái)說(shuō),模型的精度以及運(yùn)行效率是實(shí)際使用時(shí)最受關(guān)注的指標(biāo)。因此,我們對(duì)目前的單階段目標(biāo)檢測(cè)器進(jìn)行了全面的改進(jìn):從增強(qiáng)模型的特征提取能力和對(duì)各個(gè)組件的計(jì)算量進(jìn)行均衡化,到使用動(dòng)態(tài)的軟標(biāo)簽來(lái)優(yōu)化訓(xùn)練策略,再到對(duì)數(shù)據(jù)增強(qiáng)的效率和性能進(jìn)行改進(jìn), 我們對(duì)算法的各個(gè)方面都提出了新的優(yōu)化方案。
通過(guò)這些改進(jìn),我們得到了從 tiny 到 extra-large 大小的一系列高性能檢測(cè)模型,我們將這套實(shí)時(shí)目標(biāo)檢測(cè)模型(R eal- T ime M odels for object Det ection)命名為 RTMDet。其中,RTMDet-x 取得了 52.8 mAP 的精度和 300+FPS 的運(yùn)行速度,同時(shí),RTMDet-tiny 在僅有 4M 參數(shù)量的情況下達(dá)到了 41.1 mAP 的精度,超越了同級(jí)別的所有模型。RTMDet 不僅僅在目標(biāo)檢測(cè)這一任務(wù)上性能優(yōu)異,在實(shí)時(shí)實(shí)例分割以及旋轉(zhuǎn)目標(biāo)檢測(cè)這兩個(gè)任務(wù)中也同樣達(dá)到了 SOTA 的水平!
除了擁有超高的精度,RTMDet 的工程優(yōu)化也非常全面:基于 MMDeploy,RTMDet 全系列已經(jīng)支持了 ONNXRuntime 以及 TensorRT 等推理框架的部署。同時(shí),為了節(jié)約廣大煉丹師的寶貴時(shí)間,RTMDet 的訓(xùn)練效率也同樣進(jìn)行了大幅的優(yōu)化,我們?cè)?MMYOLO 中提供了高效訓(xùn)練版本的代碼,RTMDet-s 訓(xùn)練 300 epoch 僅需 14 × 8 GPU 時(shí)!
檢測(cè)和實(shí)例分割模型代碼已開源至:
https://github.com/open-mmlab/mmdetection/tree/3.x/configs/rtmdet
基于 MMYOLO 的高效訓(xùn)練版本:
https://github.com/open-mmlab/mmyolo/tree/dev/configs/rtmdet
基于 MMRotate 的旋轉(zhuǎn)框檢測(cè)模型:
https://github.com/open-mmlab/mmrotate/tree/1.x/configs/rotated_rtmdet
技術(shù)報(bào)告鏈接:
https://arxiv.org/abs/2212.07784
話不多說(shuō),接下來(lái)就讓我們來(lái)詳細(xì)了解 RTMDet 在各方面的改進(jìn)吧~
2. 算法和工程優(yōu)化詳解
2.1 模型結(jié)構(gòu)設(shè)計(jì)
擁有一個(gè)高效的模型結(jié)構(gòu)是設(shè)計(jì)實(shí)時(shí)目標(biāo)檢測(cè)器最關(guān)鍵的問(wèn)題之一。自 YOLOv4 將 Cross Stage Partial Network 的結(jié)構(gòu)引入 DarkNet 之后,CSPDarkNet 因其簡(jiǎn)潔高效而被廣泛應(yīng)用于 YOLO 系列的各個(gè)改進(jìn)版中。
而 RTMDet 也將 CSPDarkNet 作為基線,并使用同樣構(gòu)建單元組成的 CSPPAFPN 進(jìn)行多尺度的特征融合,最后將特征輸入給不同的檢測(cè)頭,進(jìn)行目標(biāo)檢測(cè)、實(shí)例分割和旋轉(zhuǎn)框檢測(cè)等任務(wù)。整體的模型結(jié)構(gòu)如下圖所示:
圖 1. RTMDet 模型結(jié)構(gòu)圖
整體的宏觀架構(gòu)與 YOLO 系列并沒(méi)有太大區(qū)別,RTMDet 對(duì)模型的修改主要聚焦于兩點(diǎn):增加基本構(gòu)建單元的特征提取能力,以及探索模型不同組件間的計(jì)算效率和精度的平衡。
首先讓我們回顧一下 DarkNet 基本的構(gòu)建單元,如圖 2.(a) 所示,它由 1 個(gè) 1x1 的卷積和 1 個(gè) 3x3 的卷積組成,以及殘差連接組成。為了提升基本單元的特征提取能力,我們選擇引入更大的卷積核來(lái)增大感受野。在經(jīng)過(guò)對(duì)不同 kernel size 的消融實(shí)驗(yàn)(表 1)后我們發(fā)現(xiàn),在基本單元中加入一個(gè) 5x5 的深度可分離卷積,取得了最好的計(jì)算效率與精度的平衡。新的基礎(chǔ)單元結(jié)構(gòu)如 圖 2.(b) 所示。
表 1. 不同 kernel size 的精度與速度的對(duì)比實(shí)驗(yàn)
值得注意的是,最近提出的 YOLO 的不同改進(jìn)版,如 YOLOv6,v7,以及 PPYOLO-E,都選擇在基本單元中加入 RepVGG 的重參數(shù)化卷積模塊,如圖 2.?,圖 2.(d) 所示。
圖 2. CSPDarknet、RTMDet 、PPYOLOE、YOLOv6 的基本構(gòu)建單元
重參數(shù)化通過(guò)訓(xùn)練時(shí)使用多分支的結(jié)構(gòu),然后再在推理時(shí)融合成單分支的方式,在不增加推理計(jì)算量的情況下提升性能。
然而,重參數(shù)化也有其弊端,比如會(huì)明顯增加訓(xùn)練的顯存開銷,同時(shí)也會(huì)導(dǎo)致使用低精度對(duì)模型進(jìn)行量化時(shí)產(chǎn)生較大的性能下降。盡管可以通過(guò) QAT 等方式解決量化掉點(diǎn)的問(wèn)題,但這也使得從模型訓(xùn)練到部署的流程變得更為復(fù)雜。
因此,我們認(rèn)為引入大卷積核增加感受野的方式相比引入重參數(shù)化來(lái)說(shuō),不論是從訓(xùn)練還是部署都能夠提供更好的效果。
除了基本構(gòu)建單元的修改之外,RTMDet 還對(duì)整個(gè)模型的不同分辨率層級(jí)之間、以及 backbone 和 neck 之間的計(jì)算量分配上進(jìn)行了全面的調(diào)整。由于在基本單元中引入了深度可分離卷積,使得模型整體的層數(shù)相比于 CSPDarkNet 來(lái)說(shuō)變得更深,從而導(dǎo)致推理速度的減慢。
為了解決這一問(wèn)題,我們對(duì)模型不同分辨率層級(jí)的基本單元數(shù)量進(jìn)行了調(diào)整,從原本 C2~C5 分別為 3-9-9-3 個(gè) block,調(diào)整為了 3-6-6-3 個(gè) block
圖 3. Backbone 結(jié)構(gòu)改進(jìn)
同時(shí)為了保持模型的整體計(jì)算量不變,我們略微增大了模型的寬度,并且在每個(gè) stage 之后增加一個(gè) ChannelAttention 模塊來(lái)提供通道注意力(如圖 4)。
圖 4. 增加通道注意力前后的 C5 stage 特征對(duì)比
如表 2 所示,在經(jīng)過(guò)調(diào)整之后,模型的推理速度更快,并且能夠保持相似的精度。
表 2. Backbone 結(jié)構(gòu)對(duì)比實(shí)驗(yàn)
而對(duì)于用來(lái)進(jìn)行多尺度特征融合的 neck 模塊來(lái)說(shuō),以往的方法,如 EfficientDet、GiraffeDet 等,都是通過(guò)增加更多的特征融合次數(shù),也就是加入更多的連接來(lái)提升性能。
然而,過(guò)多的特征層之間的連接會(huì)顯著增加顯存的占用,也會(huì)因?yàn)樵L存問(wèn)題而增加推理耗時(shí)。因此,我們選擇僅通過(guò)增加 neck 模塊的計(jì)算量占比來(lái)提升其性能,當(dāng) backbone 與 neck 的參數(shù)量調(diào)整至相似時(shí),整個(gè)檢測(cè)器的推理速度更快,性能也更高:
表 3. Backbone neck 參數(shù)量分配對(duì)比實(shí)驗(yàn)
除了 backbone 和 neck 之外,我們對(duì)模型的檢測(cè)頭也進(jìn)行了調(diào)整。YOLO 系列往往在不同的特征層級(jí)上分別使用獨(dú)立的檢測(cè)頭,這就導(dǎo)致了模型參數(shù)的利用率低下。因?yàn)閷?duì)于不同的特征層級(jí)來(lái)說(shuō),其檢測(cè)出的物體的特征,在相對(duì)的尺度大小下應(yīng)當(dāng)是相近的,而學(xué)術(shù)界常用的檢測(cè)器(如 RetinaNet、FCOS)使用共享參數(shù)的檢測(cè)頭也正印證了這一點(diǎn)。
但是,由于不同層級(jí)之間特征的統(tǒng)計(jì)量仍存在差異,Normalization layer 依然是必須的,由于直接在共享參數(shù)的檢測(cè)頭中引入 BN 會(huì)導(dǎo)致其滑動(dòng)平均值產(chǎn)生誤差,而引入 GN 又會(huì)增加推理時(shí)的開銷,因此我們參考 NASFPN 的做法,讓檢測(cè)頭共享卷積層,而 BN 則分別獨(dú)立計(jì)算。
在使用共享的檢測(cè)頭后,模型的參數(shù)量得到了減少,而且性能非但沒(méi)有下降,反而還得到了略微的提升:
表 4. Head 結(jié)構(gòu)對(duì)比
通過(guò)采用以上這些策略,我們又對(duì)通道和深度的超參數(shù)進(jìn)行縮放,得到了 tiny、s、m、l、x 五種不同大小的模型,其參數(shù)量分別從 4M 到 90M 遞增,以提供給不同的應(yīng)用場(chǎng)景。
2.2 訓(xùn)練策略優(yōu)化
正負(fù)樣本的標(biāo)簽分配策略是目標(biāo)檢測(cè)訓(xùn)練過(guò)程中最重要的一環(huán),近幾年來(lái),標(biāo)簽分配策略從最初的基于 anchor IoU 的靜態(tài)匹配方式,逐漸演進(jìn)為使用代價(jià)函數(shù)進(jìn)行動(dòng)態(tài)標(biāo)簽分配。然而,目前主流的動(dòng)態(tài)標(biāo)簽分配策略,如匈牙利匹配、OTA 等均使用與損失函數(shù)一致的函數(shù)計(jì)算代價(jià)矩陣。
我們經(jīng)過(guò)實(shí)驗(yàn)發(fā)現(xiàn),與損失函數(shù)完全一致的代價(jià)矩陣計(jì)算方式并不是最優(yōu)的。因此,RTMDet 基于 YOLOX 的 SimOTA 進(jìn)行改進(jìn),使用了動(dòng)態(tài)的軟標(biāo)簽分配策略,其代價(jià)矩陣計(jì)算公式如下:
它由三個(gè)代價(jià)函數(shù)組成,首先是分類代價(jià)函數(shù),傳統(tǒng)的分類代價(jià)往往使用 0-1 分布的二值化標(biāo)簽進(jìn)行損失計(jì)算,這很容易導(dǎo)致,一個(gè)擁有很高分類置信度但是擁有錯(cuò)誤檢測(cè)框的低質(zhì)量預(yù)測(cè)結(jié)果得到一個(gè)很低的分類代價(jià),反之也是如此。
因此我們參考 GFL,將預(yù)測(cè)框與 Ground Truth 的 IoU 得分作為軟標(biāo)簽,并對(duì)不同得分的匹配進(jìn)行了重新加權(quán),使得分類代價(jià)的匹配結(jié)果更為準(zhǔn)確和穩(wěn)定,其公式如下:
而對(duì)于回歸代價(jià),使用與損失函數(shù)一致的 GIoU,很容易導(dǎo)致一個(gè)低質(zhì)量的匹配和一個(gè)高質(zhì)量的匹配區(qū)分度不夠高,這是因?yàn)閷?duì)于 GIoU 函數(shù)來(lái)說(shuō),一個(gè)完全正確的檢測(cè)框和一個(gè)完全錯(cuò)誤的檢測(cè)框,他們之間的 IoU 得分也只相差了 1 而已。因此,我們選擇取對(duì)數(shù)來(lái)增大低質(zhì)量與高質(zhì)量匹配之間的差異:
最后,我們還引入了一個(gè)“軟化”的中心先驗(yàn)代價(jià)。與之前的眾多方法使用固定的先驗(yàn)區(qū)域(如 ATSS,SimOTA)不同,中心先驗(yàn)代價(jià)將位置先驗(yàn)也引入代價(jià)矩陣的計(jì)算之中,一方面能夠穩(wěn)定收斂,另一方面也能夠使匹配的正樣本區(qū)域更為靈活。
為了公平比較,我們?cè)跇?biāo)準(zhǔn)的 ResNet-50 12 epoch 的 setting 下與其他標(biāo)簽分配策略進(jìn)行了對(duì)比,結(jié)果顯示我們的方法取得了最優(yōu)的精度:
表 5. R50 1x setting 下的標(biāo)簽分配策略性能對(duì)比
為了驗(yàn)證這套方法的通用性,我們也在 300 epoch 和強(qiáng)數(shù)據(jù)增強(qiáng)的情況下與 YOLOX 的 SimOTA 進(jìn)行了對(duì)比,結(jié)果顯示,我們的方法也同樣得到了更高的精度:
表 6. 使用 RTMDet-s 訓(xùn)練 300 epoch 的標(biāo)簽分配策略性能對(duì)比
我們使用 MMYOLO 中提供的 GradCAM++ 可視化工具(demo/boxam_vis_demo.py
)可視化了 neck 部分的特征圖,從下圖中可以看出,與 YOLOv6 相比,使用了動(dòng)態(tài)軟標(biāo)簽分配策略的 RTMDet 的檢測(cè)目標(biāo)的特征響應(yīng)非常集中,且沒(méi)有誤檢:
圖 5. 使用 GradCAM++ 對(duì) neck 部分特征響應(yīng)的可視化(左:RTMDet-l,右:YOLOv6-l)
2.3 數(shù)據(jù)增強(qiáng)改進(jìn)
數(shù)據(jù)增強(qiáng)不僅關(guān)乎模型的精度,也對(duì)訓(xùn)練的效率有著巨大的影響。隨著 GPU 計(jì)算性能的不斷增加,模型前向和反向傳播的速度在不斷提升。
然而,當(dāng)我們?cè)谟?xùn)練工業(yè)級(jí)的模型時(shí),由于引入大量的數(shù)據(jù)增強(qiáng),CPU 的計(jì)算能力以及存儲(chǔ)的 IO 往往成為了制約模型訓(xùn)練速度的瓶頸。尤其是當(dāng)使用了 YOLO 系列中廣泛使用的 Mosaic 和 MixUp 這樣涉及到多張圖片混合的數(shù)據(jù)增強(qiáng),由于需要讀取和處理的圖片數(shù)量成倍增加,數(shù)據(jù)增強(qiáng)的耗時(shí)也大幅增加。
圖 6. Mosaic MixUp 數(shù)據(jù)增強(qiáng)效果圖
為了解決多圖混合數(shù)據(jù)增強(qiáng)的耗時(shí)問(wèn)題,我們?cè)谶@些數(shù)據(jù)增強(qiáng)中引入了緩存機(jī)制。我們使用一個(gè)緩存隊(duì)列將歷史的圖片保存下來(lái),當(dāng)需要進(jìn)行圖片混合操作時(shí),不再通過(guò) dataset 重新加載圖片,而是從緩存隊(duì)列中隨機(jī)選取歷史的圖片進(jìn)行混合。通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)緩存隊(duì)列足夠大,且使用隨機(jī)出隊(duì)的方式時(shí),訓(xùn)練得到的模型精度與傳統(tǒng)的 Mosaic & MixUp 并無(wú)區(qū)別。由于引入了緩存機(jī)制,兩種數(shù)據(jù)增強(qiáng)的運(yùn)行效率得到了大幅提升。
通過(guò)使用 MMDetection 中的 benchmark 工具 tools/analysis_tools/benchmark.py
,我們將 RTMDet 與以高效訓(xùn)練著稱的 YOLOv5 的數(shù)據(jù)增強(qiáng)進(jìn)行了對(duì)比:
YOLOv5 的數(shù)據(jù)增強(qiáng)(MixUp 概率僅為 0.1)的吞吐量: Overall fps: 30.2 img/s, times per img: 33.1 ms/img;RTMDet 的數(shù)據(jù)增強(qiáng)(MixUp 全程開啟)的吞吐量:Overall fps: 52.4 img/s, times per img: 19.1 ms/img。
從 benchmark 的結(jié)果來(lái)看, RTMDet 在全程開啟圖像混合的數(shù)據(jù)增強(qiáng)的情況下,數(shù)據(jù)處理吞吐量依然顯著高于 YOLOv5,每秒處理的圖片數(shù)量達(dá)到了 YOLOv5 的 1.7 倍!使用緩存機(jī)制加速的 Mosaic 和 MixUp 已經(jīng)在 MMYOLO 中得到了全面的支持,不僅 RTMDet 可以使用,YOLOv5,v6,v7上都可以通過(guò) use_cached=True
開關(guān)直接開啟,真正做到了一鍵加速訓(xùn)練!
除了優(yōu)化數(shù)據(jù)增強(qiáng)的運(yùn)行效率,我們也對(duì)數(shù)據(jù)增強(qiáng)的邏輯進(jìn)行了優(yōu)化。我們分析了 YOLOX 的數(shù)據(jù)增強(qiáng)后發(fā)現(xiàn)了其中的問(wèn)題:YOLOX 使用強(qiáng)弱兩個(gè)階段的數(shù)據(jù)增強(qiáng),但其第一個(gè)訓(xùn)練階段引入了旋轉(zhuǎn)和切變等操作,導(dǎo)致標(biāo)注框產(chǎn)生了比較大的誤差,使其第二個(gè)訓(xùn)練階段需要對(duì)回歸分支額外增加一個(gè) L1 loss 來(lái)對(duì)回歸任務(wù)進(jìn)行修正。這就造成了數(shù)據(jù)增強(qiáng)與模型的損失函數(shù)設(shè)計(jì)產(chǎn)生了耦合。
為了使數(shù)據(jù)增強(qiáng)和模型解耦,得到更通用的增強(qiáng)策略,我們選擇在第一個(gè)訓(xùn)練階段不引入導(dǎo)致標(biāo)注誤差的數(shù)據(jù)增強(qiáng),而是通過(guò)增加 Mosaic MixUp 混合圖片的數(shù)量來(lái)提升強(qiáng)度,我們將總體混合的圖片數(shù)量從 YOLOX 使用的 5 張?jiān)黾又?8 張。
得益于上文提到的緩存機(jī)制,增加混合圖片的數(shù)量并不會(huì)導(dǎo)致訓(xùn)練速度變慢。在第二個(gè)訓(xùn)練階段,我們關(guān)閉 Mosaic 和 MixUp,轉(zhuǎn)而使用 Large Scale Jitter(LSJ),使模型在更符合原數(shù)據(jù)集特征分布的狀態(tài)下微調(diào)。通過(guò)對(duì)比實(shí)驗(yàn)可以看出,我們的數(shù)據(jù)增強(qiáng)顯著優(yōu)于之前的方法:
表 7. 數(shù)據(jù)增強(qiáng)訓(xùn)練精度對(duì)比
2.4 最終效果
通過(guò)上文的種種改進(jìn),我們最終得到了 RTMDet 系列模型,我們可以將實(shí)驗(yàn)拆解,并逐個(gè)應(yīng)用在我們的對(duì)照組模型 YOLOX 之上,來(lái)解析如何從 YOLOX 一步一步修改為 RTMDet:
表 8. 從 YOLOX 到 RTMDet step-by-step 對(duì)比
首先,為了解決 CosineLr 學(xué)習(xí)率衰減過(guò)快以及 SGD 收斂不穩(wěn)定的問(wèn)題,我們將優(yōu)化器以及學(xué)習(xí)率分別更換為了 AdamW 和 FlatCosineLR,得到了 0.4% 的提升。
然后我們使用新的基礎(chǔ)單元構(gòu)建而成的 backbone 和 neck 替換了原有的模型結(jié)構(gòu),這一改進(jìn)又提升了 1.2% 的 AP,并且推理速度只減慢了 0.02ms。在使用共享權(quán)重的檢測(cè)頭后,參數(shù)量過(guò)大的問(wèn)題得到了解決,而模型精度和推理速度都沒(méi)有下降。在此基礎(chǔ)之上,我們又增加了動(dòng)態(tài)軟標(biāo)簽分配策略以及改進(jìn)后的數(shù)據(jù)增強(qiáng),分別帶來(lái)了 1.1% 和 1.3% 的精度提升。
最后,錦上添花的一點(diǎn),我們又將 backbone 在 imagenet 上進(jìn)行了預(yù)訓(xùn)練,也使精度得到了略微的提升。不過(guò)預(yù)訓(xùn)練模型僅在 tiny 和 s 模型上有精度提升的效果,在更大的模型結(jié)構(gòu)上則體現(xiàn)不出優(yōu)勢(shì)。
綜合以上這些修改,RTMDet 相比于 YOLOX 在相似的模型大小以及推理速度上提升了 4.3% AP!
通過(guò)調(diào)整深度以及寬度的系數(shù)進(jìn)行模型縮放,我們最終得到了 tiny/s/m/l/x 五種不同大小的模型,在不同量級(jí)上均超越了同級(jí)別的模型:
表 9. RTMDet 與其他同級(jí)別模型的性能對(duì)比(推理測(cè)速使用 3090 GPU,TensorRT 8.4.3)
- 另外,我們還在工業(yè)界常用的 T4 GPU 上進(jìn)行了測(cè)速,效果如下表所示:
-
Model latency(ms) FPS RTMDet-tiny 2.34 427.35 RTMDet-s 2.96 337.84 RTMDet-m 6.41 156.01 RTMDet-l 10.32 96.90 RTMDet-x 18.80 53.19
表 10. RTMDet 在 T4 GPU 上的推理速度(測(cè)速使用 TensorRT 8.4,F(xiàn)P16,batchsize=1)
3. 多項(xiàng)任務(wù)取得 SOTA
為了驗(yàn)證 RTMDet 算法的通用性,我們通過(guò)僅增加任務(wù)頭的方式,對(duì)模型進(jìn)行了最小限度的修改,將其拓展至了實(shí)例分割以及旋轉(zhuǎn)目標(biāo)檢測(cè)任務(wù)上。在僅進(jìn)行 了 非常簡(jiǎn)單的修改的情況下,RTMDet 也依然取得了 SOTA 的效果!
圖 7. RTMDet 在三種不同任務(wù)上的可視化效果
3.1 實(shí)例分割
傳統(tǒng)的實(shí)例分割往往采用雙階段的方式來(lái)預(yù)測(cè) mask,但近兩年來(lái),基于 kernel 的方法正逐漸興起。為了保持單階段檢測(cè)器的簡(jiǎn)潔高效和易于部署的特性,我們參考 CondInst 為 RTMDet 增加了 mask head 以及 kernel head。
mask head 由 4 個(gè)卷積層組成,通過(guò) neck 輸出的多尺度特征預(yù)測(cè)出維度為 8 的 mask prototype feature。而 kernel head 則為每個(gè) instance 預(yù)測(cè) 169 維的向量,從而組成 3 個(gè)動(dòng)態(tài)卷積的卷積核,與 mask feature 進(jìn)行交互,最終得到每個(gè) instance 的 mask。
圖 8. RTMDet-Ins 實(shí)例分割分支示意圖
為了最大化利用 mask 的標(biāo)注信息,我們還將標(biāo)簽分配中的中心先驗(yàn)代價(jià)的檢測(cè)框中心修改為了 mask 的重心。為了與其他實(shí)例分割方法做公平對(duì)比,我們使用 ResNet50 FPN 12 epoch 的標(biāo)準(zhǔn) setting 進(jìn)行了實(shí)驗(yàn),同時(shí)參考 CondInst 加入了語(yǔ)義分割的輔助分支加快收斂。
實(shí)驗(yàn)結(jié)果表明,我們的方法在標(biāo)準(zhǔn) setting 下,不僅超越了 CondInst,SOLOv2 等單階段模型,也超越了 Cascade Mask R-CNN 這樣的多階段模型。在使用與 RTMDet 一致的模型結(jié)構(gòu)以及訓(xùn)練策略后,得到的 RTMDet-Ins 模型,精度不僅大幅超越 YOLOv5-seg,也超越了前幾天剛剛推出的 YOLOv8,取得了實(shí)時(shí)實(shí)例分割的 SOTA。
表 11. RTMDet-Ins 與其他實(shí)例分割算法的性能對(duì)比
3.2 旋轉(zhuǎn)目標(biāo)檢測(cè)
旋轉(zhuǎn)目標(biāo)檢測(cè)是遙感領(lǐng)域使用最廣泛的方法,而將 RTMDet 拓展至此任務(wù)也非常簡(jiǎn)單,得益于 MMDetection 3.0 版本,我們只需要增加回歸分支的輸出特征維度,增加角度分量,同時(shí)更換 box 的編解碼器, 便能讓 RTMDet 支持預(yù)測(cè)旋轉(zhuǎn)框。由于旋轉(zhuǎn)框與普通目標(biāo)檢測(cè)任務(wù)僅有回歸分支有差異,因此旋轉(zhuǎn)框的模型也能夠加載目標(biāo)檢測(cè)的預(yù)訓(xùn)練模型并從中受益。
我們?cè)谶b感領(lǐng)域最常用的 DOTA 數(shù)據(jù)集上驗(yàn)證了我們的方法,結(jié)果表明,我們的模型不僅超越了眾多的多階段方法,也超越了之前最優(yōu)的算法 PPYOLOE-R,成為了 SOTA。
圖 9. RTMDet-R 與其他旋轉(zhuǎn)目標(biāo)檢測(cè)方法在 DOTA 數(shù)據(jù)集上的對(duì)比
為了驗(yàn)證模型的泛化能力,我們還在 DOTA 1.5 以及 HRSC 兩個(gè)數(shù)據(jù)集上進(jìn)行了訓(xùn)練,也同樣取得了最優(yōu)的結(jié)果。
表 12. RTMDet-R 在 DOTA 1.5 上的性能
表 13. RTMDet-R 在 HRSC 上的性能,僅使用 tiny 模型就超越了之前的多階段算法
4. 總結(jié)
通過(guò)在模型結(jié)構(gòu)的基本單元引入大 kernel 深度可分離卷積增大感受野,并平衡不同分辨率層級(jí)間以及 backbone 和 neck 間的計(jì)算量、參數(shù)量平衡,改進(jìn)標(biāo)簽分配以及數(shù)據(jù)增強(qiáng)策略,RTMDet 不論是在目標(biāo)檢測(cè)任務(wù)上,還是在實(shí)例分割以及旋轉(zhuǎn)目標(biāo)檢測(cè)任務(wù)上,均取得了優(yōu)異的性能。我們希望我們探索出的這些改進(jìn)方案能夠?qū)υO(shè)計(jì)實(shí)時(shí)的目標(biāo)檢測(cè)模型有所啟發(fā),也希望我們?cè)诠こ碳八惴ㄉ系膬?yōu)化能夠在實(shí)際的工業(yè)場(chǎng)景中有所應(yīng)用。
最后,別忘了給 MMDetection、MMYOLO、MMRotate 點(diǎn)個(gè) Star 哦~
目標(biāo)檢測(cè)和實(shí)例分割項(xiàng)目地址:https://github.com/open-mmlab/mmdetection/tree/3.x/configs/rtmdet
MMYOLO 高效訓(xùn)練版本地址:https://github.com/open-mmlab/mmyolo/tree/dev/configs/rtmdet文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-609355.html
旋轉(zhuǎn)框檢測(cè)項(xiàng)目地址:https://github.com/open-mmlab/mmrotate/tree/1.x/configs/rotated_rtmdet文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-609355.html
到了這里,關(guān)于目標(biāo)檢測(cè)、實(shí)例分割、旋轉(zhuǎn)框樣樣精通!詳解高性能檢測(cè)算法 RTMDet的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!