NIPS2019:曠視提出DetNAS:首個搜索物體檢測Backbone的方法

在這裏插入圖片描述
論文名稱:DetNAS: Backbone Search for Object Detection
論文鏈接https://arxiv.org/abs/1903.10979
開源代碼: https://github.com/megvii-model/DetNAS

物體檢測器通常使用圖像分類網絡的Backbone,由於和檢測任務存在一定差異,這些Backbone往往不是最優的。本文中,曠視研究院提出DetNAS,這是首個用於設計更好的物體檢測器Backbone的神經網絡搜索方法;由DetNAS搜索出的框架在COCO上的性能超越了ResNet-50與ResNet-101,且模型計算量更低。本文已收錄於神經信息處理系統大會NeurIPS 2019。

目錄

  • 導語
  • 簡介
  • 方法
    • DetNAS Pipeline
    • 空間搜索設計
    • 搜索算法
  • 實驗
    • 實驗結果
    • DetNAS架構
  • 結論
  • 參考文獻
導語

在目標檢測器中,Backbone起着非常重要的作用,目標檢測器的性能高度依賴於Backbone所提取的特徵。大多數目標檢測器直接使用爲圖像分類而設計的網絡來作爲Backbone,但這種方法往往不是最優的,因爲圖像分類僅關注的是圖中主要物體是什麼,而目標檢測試圖在圖像中找到每個目標的位置和類別。

雖然目前依靠手工設計的網絡能夠實現部分性能的提升,但手工設計需要研究人員非常精通領域知識,同時還需要進行反覆漫長的調試才能完成。對此,NAS技術可以提供幫助。

近年來,NAS技術取得了巨大突破。在圖像分類任務上,通過搜索得到的網絡能夠匹敵甚至是超越傳統手工設計的網絡。然而,在目標檢測領域使用NAS搜索Backbone仍然具有挑戰。

簡介

簡單將之前的NAS方法用於搜索目標檢測器的Backbone並不能解決問題。通常來說,檢測器訓練需要將Backbone網絡先在ImageNet上預訓練。但是這會對搜索目標檢測器的Backbone造成兩個困難:

難以優化:NAS不能用預訓練的精度來作爲監督信號,需要是最終在目標任務上的效果作爲反饋信息。
效率低:在搜索過程中,將每個結構都先預訓練,再在檢測數據集上進行微調(fine-tuning),這種方法成本太高。

另外,雖然不進行預訓練(train from scratch)也是一種選擇,但它需要更多的訓練時間以補償沒有進行預訓練的問題。

有鑑於此,曠視研究院提出了第一個用於搜索目標檢測器Backbone的方法。在曠視原創技術one-shot NAS的啓發之下,研究員通過將權重訓練和結構搜索解耦來進行檢測器Backbone的搜索。
在這裏插入圖片描述
圖1:DetNAS Pipeline

大部分之前的NAS方法都以一種嵌套的方式來同時優化權重與結構,然而,只有通過將其拆解爲兩步,預訓練才能更加高效。該框架避免了預訓練帶來的低效問題,使搜索Backbone得以可行。

方法
  • DetNAS Pipeline

如圖1所示,DetNAS由三步組成,1)在ImageNet上預訓練Supernet,2)在檢測數據集上微調Supernet以及,3)在訓練好的Supernet上進行結構搜索。

第一步:預訓練Supernet。在ImageNet上進行預訓練對於後續微調步驟而言至關重要。在一些one-shot方法中,它們將實際上離散的搜索空間變換爲一個連續空間,這樣會導致搜索空間中各個網絡的權重耦合嚴重。相反,在Supernet的預訓練過程中,曠視研究院採用逐路徑方案,從而確保了預訓練的Supernet能夠反映候選網絡的相關性能。具體而言,在每次迭代過程中,只有單個路徑會被採樣進行前饋與反饋傳播,該過程中Supernet圖上的其他路徑或節點的梯度與權重都不會進行更新。

第二步:微調Supernet。這一過程也是以逐個路徑方式進行。將預訓練好的Supernet上加上檢測器的head,並在目標檢測數據集下進行訓練。另一個需要強調的細節是批歸一化(BN)過程。BN是優化中常用的歸一化方法。通常情況下,在微調過程中BN的參數固定爲預訓練時的參數。然而,在DetNAS中不能沿用此法,因爲在不同路徑上要歸一化的特徵並不相等。另外,與圖像分類不同,由於目標檢測器使用高分辨率的圖像進行訓練,所以受到顯存的限制,批大小會較小,這嚴重降低了BN的精度。爲此,研究人員在Supernet訓練過程中使用同步批歸一化(SyncBN)作爲替代。SyncBN可以在多個GPU上計算批統計量,相當於變相“增加”了批大小(batch size)。

第三步:用進化算法在Supernet上進行搜索。在該步驟中,系統會在已訓練好的Supernet上用進化算法進行結構搜索。在這步中一個需要注意的環節依然是BN。在搜索過程中,不同的子網絡會在Supernet中逐路徑進行採樣。然而其中的問題是,各個路徑上的批統計量需要彼此相對獨立。因此,在評估每條支路前,需要重新統計每條路徑上的批統計量。對於DetNAS而言,該過程必不可少,研究員從訓練集抽取出一個小子集來重新計算待被評估的那條路徑的批數據。此步驟僅爲BN累計適量的running mean與running variance,不涉及梯度反傳。

  • 空間搜索設計

表1介紹了搜索空間的具體細節。本方法使用的搜索空間基於ShuffleNetv2的塊(block)。ShuffleNetv2是一種高效輕量級的卷積網絡架構,包含channel split與channel shuffle操作。研究員設計了兩個不同大小的搜索空間,大的用於得到主要結果的網絡搜索,小的用於消融實驗。
在這裏插入圖片描述
表 1:DetNAS 搜索空間

大空間(40個塊)主要用於搜索與手工Backbone相比較的網絡。其中,每個stage的通道與塊用c_1、n_1表示。對每個stage來說,第一個塊會以stride爲2進行降採樣。另外,除了首個stage,其餘4個stage共包含8+8+16+8個塊用於搜索。對每個被搜索的塊來說,都有4個來自ShuffleNetv2的塊以供選擇:改變核大小{3×3,5×5,7×7};或者將該分支用Xception 塊(三個重複、分離的 depthwise3×3 卷積)代替。因此,很容易可以算出大搜索空間候選架構有440≈1.2×1024之多。其中,大部分網絡的計算量大於1G FLOPs。小空間(20個塊)與大空間相似,每個stage的通道與塊用c_2、n_2表示。

  • 搜索算法

框架搜索步驟基於進化算法。首先,對一個種羣的網絡P進行初始化,每個網絡P由其架構P.θ以及其適應度P.f組成。任何違反約束η的架構將會被移除,並且系統會選擇一個新架構進行替代。在初始化以後,系統對有適應度P.f的網絡P.θ在驗證集V_Det上進行評估。然後,研究員會在經評估的網絡中選取最佳的 |P|個結構作爲父本,以其生成子代網絡。

進一步,第二代網絡由父本在約束η下變異(mutation)和組合交叉(crossover)所得到。通過在迭代過程中重複此操作,可以找到一條驗證集上精度最高的路徑。

與基於RL和梯度的NAS方法相比,進化搜索能夠很好地滿足限制因素(如FLOPs或速度)。爲了優化FLOPs或速度,基於RL的方法需要對反饋函數仔細調參。而基於梯度的方法則需要對損失函數仔細調參。雖然如此,它們的輸出結果仍然很難全部滿足限制要求。爲此,DetNAS選擇使用進化搜索算法。

實驗
  • 實驗結果

基於FPN檢測器,按照本文方法在上述提到的大空間中進行搜索,得到了DetNASNet結構,結構具體信息參見原論文。表6展示了主要結果。研究員選取了4個手工設計的網絡作爲對比,包括ResNet-50,ResNet-101,ShuffleNetv2-40和ShuffleNetv2-40 (3.8)。DetNASNet以40.2%mmAP,大小1.3G FLOPs的優勢超越了ResNet-50,與ResNet-101性能相當。
在這裏插入圖片描述
表2:兩種設置下的DetNASNet與手工設計網絡的性能對比

爲了消除來自搜索空間的影響,研究員專門對比了ShuffleNetv2-40,它是搜索空間的Baseline。其包含40個塊,大小爲1.3G FLOPs,與DetNASNet相同。結果顯示,ShuffleNetv2-40在COCO上比DetNAS的mAP分數低了1.0個百分點。這證明DetNAS的效果不僅來自於搜索空間。

進一步,研究人員引入搜索空間的影響,將DetNASNet的通道數提升了1.8倍,讓網絡大小達到了3.8G FLOPs,即DetNASNet (3.8),這等價於ResNet-50的FLOPs。實驗結果顯示,它以42.0%mmAP分數超越了ResNet-50 4.7個百分點,超越ResNet-101 2.0個百分點。

  • DetNAS架構

相比於圖像分類框架搜索給出的結果,本文提出的目標檢測框架搜索展示出了其價值所在。圖2展示了在20個塊的小空間中搜索出的3個神經網絡架構,最上面爲在ImageNet分類數據上搜索得到的ClsNASNet,下面兩個分別爲用FPN、RetinaNet搜索得到的Backbone。圖像展示了其中每個塊的情況,黃色與橙色代表5×5、7×7的ShuffleNetv2 塊,藍色的塊的核大小爲3。稍大一些的藍色塊代表Xception ShuffleNetv2塊。
在這裏插入圖片描述
圖4:在小空間(20塊)搜索的框架之間模式的對比

從圖4可以發現,在DetNAS中,藍色塊幾乎都聚集在stage3、4;而在ClsNASNet中,只有一個Xception ShuffleNetv2塊出現在高層級中。該規律在同樣爲圖像分類搜索框架ProxylessNAS於ImageNet數據集上得出的結果相符。以上這些區別滿足本文的假設,即用於圖像分類的Backbone網絡對於物體檢測來說不是最優的。

結論

本文提出DetNAS方法,這是第一個用於搜索物體檢測任務Backbone的框架。它由三個步驟組成:在ImageNet上預訓練Supernet;在檢測測數據集上微調Supernet;用遺傳算法在訓練好的Supernet上搜索。表4給出了每一步所消耗的GPU和時間。DetNAS的計算消耗(在COCO上爲44GPU days)僅爲訓練一個常用物體檢測器的兩倍。實驗結果顯示,DetNAS的主要搜索結果的性能在COCO上超越了ShuffleNet和ResNet等傳統手工網絡結構。
在這裏插入圖片描述
表4:COCO每一步的消耗對比

另外,爲了展示DetNAS的有效性,曠視研究院團隊在DetNAS上測試了多個物體檢測器(FPN和RetinaNet),並且也使用了不同的數據集(COCO與VOC)進行驗證。進一步討論顯示,在結構層面,圖像分類與物體檢測任務之間存在不同的規律,這可能會爲手工模型設計提供新的靈感。

參考文獻

  • Gabriel Bender, Pieter-Jan Kindermans, Barret Zoph, Vijay Vasudevan, and Quoc V. Le. Understandingand simplifying one-shot architecture search. In ICML, 2018.
  • Andrew Brock, Theodore Lim, James M. Ritchie, and Nick Weston. SMASH: one-shot model architecture search through hypernetworks. CoRR, abs/1708.05344, 2017.
  • Han Cai, Ligeng Zhu, and Song Han. Proxylessnas: Direct neural architecture search on target task and hardware. ICLR, 2019.
  • Golnaz Ghiasi, Tsung-Yi Lin, Ruoming Pang, and Quoc V. Le. NAS-FPN: learning scalable feature pyramid architecture for object detection. CVPR, 2019.
  • Ross Girshick, Ilija Radosavovic, Georgia Gkioxari, Piotr Dollár, and Kaiming He. Detectron, 2018.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章