網絡結構搜索 (NAS: Network Architecture Search)

NAS Definition

  1. 基於搜索策略,並結合約束條件 (如accuracy、latency),在搜索空間內 (set of candidate operations or blocks)探索最優網絡結構、或組件結構 (如detector的backbone、FPN);
  2. 高效的NAS算法,通常是Trade-off between data-driven and experience-driven,data-driven實現高效率、自動化搜索,experience-driven減小搜索空間、降低過擬合;
  3. Proxy task: 評估搜索結果 (searched architecture);

 

NAS-FCOS: Fast Neural Architecture Search for Object Detection

 

  • Motivation:
    • 爲one-stage anchor-free detector (well known FCOS)搜索FPN與detection head:
      • 如何從backbone選取特徵,並如何構造FPN、輸出multi-level features;
      • 當FPN features共享同一個head時,如何確定head的結構;
  • Search Space:
    • 將FCOS視作encoder-decoder架構,backbone表示encoder,FPN與head表示decoder;
    • FPN由一系列basic block (bbt)構成,對backbone提取特徵C={C2, C3, C4, C5}、以及bbt輸出特徵執行merge操作:
      • basic block (bbt)基本結構:

      • candidate ops(搜索空間):

      • aggregation包括element-wise sum與concat+conv(搜索空間);
      • high-level low resolution feature通過bilinear interpolation完成上採樣;
      • 連續實施7次bbt,最後三個bbt輸出的features,作爲FPN的P3、P4與P5;對於沒有被使用的融合特徵,累加到P3、P4與P5;P5再通過後續兩次降採樣獲得P6與P7;
    • Head由連續6個Convolution構成,candidate ops除包含FPN ops之外,也包括基本的1x1與3x3 conv(搜索空間);用Group Norm替換Batch Norm;

  • Search Strategy:
    • 將train-set劃分爲meta-train與meta-val,分別訓練與評估搜索的architecture;
    • 採用漸進式策略,先搜索FPN,再搜索head,減輕搜索負擔;
    • 搜索、訓練時,固定backbone,並預先緩存backbone輸出特徵C,提高搜索效率;
    • 以LSTM-based controller作爲predictor,以當前配置序列與reward作爲輸入,優化訓練predictor;predictor輸出下一時刻的架構配置;具體參考:
    • Evaluation metric:採用negative loss sum替代AP,作爲reward,節省AP計算時間:

  • 搜索結果:
    • 結構示例:

    • AP on COCO:

    • Search time:~4 days using 8 V100 GPUs;

 

DetNAS: Backbone Search for Object Detection

  • GitHub (PyTorch): https://github.com/megvii-model/DetNAS
  • GitHub (PyTorch): https://github.com/megvii-model/ShuffleNet-Series/tree/master/DetNAS
  • Related Work:
    • 目前的NAS主要針對ImageNet分類網絡;基本方法包括RL-based (NASNet, MNASNet)、Gradient-based (DARTS)與Evolutionary-based等;
    • 目標檢測網絡的訓練方法:
      • ImageNet預訓練基礎網絡;然後遷移至目標檢模型作爲backbone,確保特徵提取能力:
        • 預訓練尺度與目標檢測尺度最好能適配,具體可參考SNIP (An Analysis of Scale Invariance in Object Detection):https://arxiv.org/abs/1711.08189
      • 或者直接在目標檢測數據集上train from scratch:
        • 通常需要在較大規模的dataset(如COCO)上訓更多的epoches,小規模檢測集無法確保特徵提取能力(如VOC);
        • 訓練圖片較大的情況下,Batch size通常比較小,需要採用sync-BN或group-norm;
  • New Method for Backbone Search:
    • 避免了ImageNet上NAS、以及ImageNet預訓練的costly過程,具體包括如下三個步驟(總體爲one-shot NAS策略):

      • Step-1:首先在ImageNet上訓練SuperNet(包含了所有可選的candidate subnet);採用path-wise方式,每次迭代只選中一個network path用於forward/backward;
      • Step-2:以SuperNet爲backbone,在目標檢測任務上fine-tuning;同樣採用path-wise策略;且使用SyncBN,跨GPU完成BN,確保BN的精度;
      • Step-3:採用遺傳算法完成best-backbone的搜索;需要從訓練集採樣500張圖片,重新統計sub-net的BN層的running mean/variance;
    • SuperNet的架構(搜索空間):

      • 如表1所示,包括large與small兩種搜索結構,都包含5個stage;
      • c1/c2、n1/n2表示每個stage的通道數與block數;
      • 除第0個stage外,large的第1、2、3、4個stage包含的building block數分別爲8、8、16、8;small則是4、4、8、4;
      • 基本building block爲shuffenet-v2 block;除第0個stage外,每個stage的第一個block負責降採樣(stride=2);
      • 可搜索參數爲kernel size(3、5、7或xception);在SuperNet預訓練時,這四個參數對應的block並排放置,在每個train iteration隨機選中其中一個block,用以構造特定的network path;
      • large與small的搜索空間大小分別爲4^40與4^20;
    • Evolutionary Search:
      • 完成SuperNet的ImageNet預訓練、與檢測集上的fine-tuning之後,隨機選定一組subnet集合(滿足約束條件,FLOPS低於閾值);
      • 然後在驗證集上評估每個subnet,以AP作爲fitness(以COCO爲例);
      • 選擇Top-P個subnets用於mutation與crossover,且各佔一半用於生成next generation:
        • crossover:每個block從兩個parents中隨機選擇(相同block位置);
        • mutation:每個block隨機替換爲supernet中的一個(相同block位置);
      • 生成next generation subnets需要滿足約束條件(FLOPS或inference speed);
      • 上述過程迭代指定步驟,最終獲得best backbone;
      • 相比較而言,RL方法需要仔細設計reward,gradient方法需要精心設計loss function;
    • 實驗結果:

 

XNAS: Neural Architecture Search with Expert Advice

  • DARTS:
  • XNAS:
    • GitHub (PyTorch): https://github.com/NivNayman/XNAS
    • 基於Prediction with Expert Advice (PEA),將NAS看成在線選擇任務 (online selection task);
    • 將DARTS的搜索空間 (candidate operations),看成多個單獨的expert子空間;
    • 結合指數化梯度 (Exponentiated Gradient)和Wipe-out機制,有效緩解Hard pruning,同時逐步減小搜索空間 (平滑過渡),可進一步簡化問題複雜度、並降低過擬合;
    • 允許不同的expert group設置不同的learning rate (multi learning rates);
    • 有向無環圖 (directed acyclic graph):

    • 實驗結果:

發佈了29 篇原創文章 · 獲贊 87 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章