DDP:微軟提出動態detection head選擇,適配計算資源有限場景 | CVPR 2022

語言: CN / TW / HK

DPP能夠對目標檢測proposal進行非統一處理,根據proposal選擇不同複雜度的運算元,加速整體推理過程。從實驗結果來看,效果非常不錯

來源:曉飛的演算法工程筆記 公眾號

論文: Should All Proposals be Treated Equally in Object Detection?

  • 論文地址:http://arxiv.org/abs/2207.03520

  • 論文程式碼:http://github.com/liyunsheng13/dpp

Introduction

在目標檢測中,影響速度的核心主要是密集的proposal設計。所以,Faster RCNN → Cascade RCNN → DETR → Sparse RCNN的演變都是為了稀疏化proposal密度。雖然Sparse R-CNN成功地將proposal數量從幾千個減少到幾百個,但更復雜deation head導致減少proposal數量帶來的整體計算收益有限。

複雜的deation head結構雖然能帶來準確率的提升,但會抹殺輕量級設計帶來的計算增益。對於僅有300個proposal的Sparse RCNN,deation head的計算量是主幹網路MobileNetV2的4倍(25 GFLOPS 與 5.5 GFLOPS)。

為此,作者研究是否有可能在降低deation head計算成本的同時保留精度增益和proposal稀疏性。現有檢測演算法採用相同複雜度的操作處理所有proposal,在高質量proposal上花費大量的計算是合適的,但將相同的資源分配給低質量的proposal則是一種浪費。由於每個proposal的IoU在訓練期間是已知的,所以可以讓檢測器學習為不同的proposal分配不同的計算量。

由於在推理時沒有IoU,網路需要學習如何根據proposal本身進行資源分配。為此,作者提出了dynamic proposal processing(DPP),將detection head使用的單一運算元替換為一個包含不同複雜度運算元的運算元集,允許檢測器在複雜度-精度之間進行權衡。運算元的選擇通過增加一個輕量級選擇模型來實現,該模型在網路的每個階段選擇適用於每個proposal的最佳運算元。

Complexity and Precision of Proposals

假設主幹網路產生了一組proposal,計算消耗主要來源於detection head而主幹的計算消耗可忽略,並且將deation head的計算進一步分解為per-proposal的運算元 h (網路結構)以及對應的proposal間處理元件 pNMS 操作或proposal之間的的自注意機制)。

  • Complexity of unequally treated proposals

在之前的檢測器中,所有的proposal都由同一個運算元 h 處理:

其中,和分別是 hp 的 per-proposal 複雜度。

  • Complexity of unequally treated proposals

與其將相同的運算元 h 應用於所有proposal,作者建議使用包含 J 個具有不同複雜度運算元的運算元集,由動態選擇器 s 選擇具體的運算元分配給proposal:

其中,表示來自的運算元,由選擇器 s 分配給的proposal,,為整個per-proposal操作的計算複雜度。為簡單起見, p 的複雜度仍然視為常數。

  • Precision over proposals

當deation head對proposal非統一處理時,給定複雜性約束 C 的最佳檢測器精度可以通過優化運算元對proposal的分配來提升:

其中是分配的特定運算子的精度。隨著 C 的變化,構建了複雜度-精度(C-P)曲線,該曲線表示了可使用實現的目標檢測器在成本和精度之間trade-off的最佳效能。

Dynamic Proposal Processing

基於上面的背景,作者提出了一個動態proposal處理(DPP)。假設detection head由多個階段()依次處理proposal,每個階段由選擇器 s 從中選擇的運算子實現。為了最小化複雜性,選擇器每次只應用於階段子集,其餘階段使用上一次處理選擇的運算子,即。

Operator Set

作者提出了由三個計算成本差異較大的運算元組成的算子集合:

  • 是高複雜度的運算元,由一個引數與proposal相關的動態卷積層(DyConv)和一個前饋網路(FFN)來實現,類似於Sparse R-CNN採用的動態Head結構。

  • 是一箇中等複雜度的運算元,由FFN實現。

  • 是一個由identity block構建的輕量級運算元,只是簡單地傳遞proposal而無需進一步提取特徵。

Selector

在DPP中,通過控制操作符對proposal的分配,選擇器是控制精度和複雜性之間權衡的關鍵元件。定義是proposal在階段的輸入特徵,選擇器由3層MLP實現,輸出與關聯的3維向量:

其中是中的選擇變數,代表將操作分配給proposal的權重:

  • 在訓練期間,選擇向量是包含三個變數one hot編碼,將Gumble-Softmax函式作為MLP的啟用函式,用於生成選擇向量。

  • 在推理中,選擇向量包含三個連續值,選擇值最大的變數對應的操作。

分配過程如圖2所示,整體開銷非常小(100個proposal僅需4e-3 GFLOPS),與detection head相比可以忽略不計。

從公式4可以看出,不同的proposal和階段選擇的運算元都有變化,從而能夠進行動態處理。此外,雖然僅有三個候選項,但潛在的detection head網路結構有種。最後,由於選擇器是可訓練的,所以整體結構可以端到端學習。

Loss Functions

為了確保在給定複雜度的情況下,DPP能為每個proposal選擇最優的操作序列,作者增加了選擇器損失,包含兩個目標:

  • 首先,應該將複雜的運算元(和)分配給高質量的proposal(高IoU):其中是第 i 個proposal在第 k 階段的 IoU。當IoU小於0.5時,推動選擇器將和變為0,反之則變為1,鼓勵在階段 k 中使用更復雜的運算元來獲得高質量的proposal。此外,損失的大小是由IoU值決定的,為高IoU proposal選擇簡單結構或為低IoU proposal選擇複雜結構均會產生大梯度值。

  • 其次,選擇器應該知道每張影象中的例項總數,並根據總數調整整體複雜度,在例項密集時選擇更復雜的運算元:其中 T 是特定影象選擇運算元目標次數,定義為,即影象中 M 個例項的倍數。此外,需通過根據預先指定的下限和由總體proposal數 N 給出的上限對進行裁剪。下界防止對高複雜度運算元進行過於稀疏的選擇,然後則是根據例項數調整選擇器。

最終的整體選擇器損失為:

選擇器損失是一種即插即用損失,可以應用於不同的物件檢測器。在實現時,與應用DPP的原始檢測器的所有損失相結合,包括交叉熵損失和邊界框迴歸損失。

Experiments

DPP的主幹網路使用MobileNet V2或ResNet-50,使用特徵金字塔網路(FPN)生成多維特徵,在其之上使用Sparse R-CNN的策略學習初始proposal。為簡單起見,選擇器僅應用於階段。

對於損失函式,設定,,,。

Proposal processing by DPP

  • Contribution of Each Operator

不同候選運算元對效能的貢獻。

  • Performance of Each Stage in DPP

階段1∼6的AP分別為,精度在前 4 個階段迅速增加,然後達到飽和。較後的階段,複雜運算元佔比越少,這說明 DPP 如何在複雜性與精度之間取得相當成功。

  • Visualization

階段4和階段6中,的預測結果。

Main Results

  • ResNet

基於ResNet50與SOTA演算法對比。

  • MobileNetV2

基於MobileNetV2與SOTA演算法對比。

  • Inference speed

推理速度對比。

Ablation Study

  • Selection loss

選擇器損失的作用。

  • Target number of heavy operators

複雜運算元預期數量的作用。

Conclusion

DPP能夠對目標檢測proposal進行非統一處理,根據proposal選擇不同複雜度的運算元,加速整體推理過程。從實驗結果來看,效果非常不錯。

如果本文對你有幫助,麻煩點個贊或在看唄~

更多內容請關注 微信公眾號【曉飛的演算法工程筆記】

work-life balance.
「其他文章」