DDP:微軟提出動態detection head選擇,適配計算資源有限場景 | CVPR 2022
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間處理元件 p
( NMS
操作或proposal之間的的自注意機制)。
-
Complexity of unequally treated proposals
在之前的檢測器中,所有的proposal都由同一個運算元 h
處理:
其中,和分別是 h
和 p
的 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選擇不同複雜度的運算元,加速整體推理過程。從實驗結果來看,效果非常不錯。
如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】
- DDP:微軟提出動態detection head選擇,適配計算資源有限場景 | CVPR 2022
- DVT:華為提出動態級聯Vision Transformer,效能槓槓的 | NeurIPS 2021
- PVT:特徵金字塔在Vision Transormer的首次應用,又快又好 | ICCV 2021
- DeiT:訓練ImageNet僅用4卡不到3天的平民ViT | ICML 2021
- OREPA:阿里提出訓練也很快的重引數策略,記憶體減半,速度加倍 | CVPR 2022
- GIT:斯坦福大學提出應對複雜變換的不變性提升方法 | ICLR 2022
- Dynamic ATSS:預測結果才是正負樣本區分的最佳準則 | 2022 arxiv
- 看看谷歌如何在目標檢測任務使用預訓練權值 | CVPR 2022
- DW:優化目標檢測訓練過程,更全面的正負權重計算 | CVPR 2022
- PLC:自動糾正資料集噪聲,來洗洗資料集吧 | ICLR 2021 Spotlight
- ResNet-RS:谷歌領銜調優ResNet,效能全面超越EfficientNet系列 | 2021 arxiv
- GID:曠視提出全方位的檢測模型知識蒸餾 | CVPR 2021
- GWD:基於高斯Wasserstein距離的旋轉目標檢測 | ICML 2021
- NF-ResNet:去掉BN歸一化,值得細讀的網路訊號分析 | ICLR 2021
- MobileNext:打破常規,依圖逆向改造inverted residual block | ECCV 2020
- RepVGG:VGG,永遠的神! | CVPR 2021
- 為什麼SOTA網路在你的資料集上不行?來看看Imagnet結果的遷移能力研究 | arxiv新文
- OREPA:阿里提出訓練也很快的重引數策略,記憶體減半,速度加倍 | CVPR 2022
- FSAF:嵌入anchor-free分支來指導acnhor-based演算法訓練 | CVPR2019
- DW:優化目標檢測訓練過程,更全面的正負權重計算 | CVPR 2022