論文筆記:Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells


Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells

2019-04-24 14:49:10

Paper:https://arxiv.org/pdf/1810.10804.pdf 

 

在過去的許多年,大家一直認為網絡結構的設計是人類的事情。但是,近些年 NAS 的發展,打破了這種觀念,用自動化的方法在給定的數據上設計合適的網絡結構,變的勢不可擋。本文在語義分割的任務上,嘗試搜索高效的 encoder-decoder framework,並在其他類似任務上做了驗證。

 

1. 方法

1.1 問題定義:

我們考慮 dense prediction task T, 輸入是 3維的 RGB image,輸出是 C 維的 one-hot segmentation mask,C 是等於類別數目的。我們將從該輸入到對應輸出的函數,記為 f,即:全卷積網絡結構。我們假設 f 可以進一步的分解為兩個部分,即:e-代表 encoder,d-代表 decoder。我們用預訓練的分類任務的模型來初始化 encoder e,另外,decoder d 部分,就是選擇訪問 encoder 的多個輸出,然后選擇利用哪些 operation 在這個上面進行對應的操作。

 

 

 

1.2 Search Space

這里作者着重關注 decoder 部分,該 decoder 可以訪問 pre-trained encoder 的多個 layer,從而可以獲得多個不同分辨率的輸出。為了使得采樣的結構緊湊,每一個 encoder 的輸出會經過一個 1*1 convolution,得到相同數目的 channel。我們依賴於 RNN 模型,來序列的產生該利用的 layer 的索引 (produce pairs of indices of which layers to use) 以及在這些數據上利用什么操作。特別的,這些操作的序列組合起來,得到一個 cell(如圖1所示)。同樣的 cell 但是用不同的 weights,對采樣到的 layer 進行操作;兩個 cell 的輸出進行 sum。在 sampling pooling 之后添加 resultant layer。采樣的 layer 個數是由超參數控制的,文中設置為 3,允許 controller (即 RNN)來恢復出該 encoder-decoder architecture,比如:FCN, RefineNet。所有的非采樣的加和輸出,都被組合起來,然后輸入到 1*1 卷積中,以進行降維。

 

作者使用了如下的 11 種操作,作為搜索空間:

 

 

1.3 Search Strategy

作者將 training set 划分為兩個不連續的集合,meta-train 以及 meta-val。meta-train 是用於訓練在特定任務上的 sampled architecture,meta-val 則是用於衡量 trained architecture 的性能,並提供給 controller 一個 scalar,在 DRL 中通常稱為 reward 。給定采樣的序列,其 logarithmic probabilities 以及 reward signal, the controller 都用 PPO 進行優化。所以,本文的任務就有兩個訓練過程:

  inner --- optimization of the sampled architecture on the given task, 

  outer --- optimization of the controller. 

作者接下來對 inner 的過程進行了詳細的介紹。

 

1.4 Progressive Stages

作者將 inner training process 分為兩個階段:在第一個階段,固定住 the encoder weights,所以其輸出是可以預先計算的,然后僅僅訓練 decoder 部分。這種策略可以快速的更新 decoder 的權重,可以對 sampled architecture 進行一個合理的性能評估。我們探索了一個檢測的方法來決定是否繼續,在第二階段訓練 the sampled architecture。確切的說,當前 reward value 是和所看到的 running mean of rewards 相比較,如果大於平均值,我們繼續訓練。否則,我們以 1-p 的概率來終止訓練過程。概率 p 在搜索過程中是從 0.9 漸變的(annealed)。

 

而這么做的動機是:在第一個階段,雖然有些許噪聲,但是仍然可以提供潛在的 sampled architecture 的合理預測。至少,他們提供了一個可靠地信號:the sampled architecture is non-promising, 當僅僅花費幾秒鍾在這個任務上。這種簡單的方法,在前期可以鼓勵探索。

 

1.5 Fast training via Knowledge Distillation and Weights' Averaging

對於語義分割任務來說,需要多次的迭代才能夠收斂。通過用 pre-trained classification model 來初始化 encoder 部分可以很大程度上緩解該問題,但是對於 decoder 來說,不存在這種 pre-trained model。作者探索了幾種其他的策略,來加速收斂過程:

1). we keep track of the running average of the parameters during each stage and apply them before the final valivation. 

2). we append an additional l2-loss term between the logits of the current architecture and a pre-trained teacher network. 

這兩種方法的組合允許我們接受一個非常可靠地分割模型的性能預測。

 

1.6  Intermediate Supervision via Auxiliary Cells

作者添加了一個 輔助單元(auxiliary cell),該 cell 是和 main cell 相同的。同時,在訓練和測試階段,其也不影響 main classifier 的輸出,而僅僅對剩下的網絡提供更好的梯度。最終,每一個采樣的網絡結構的獎勵,仍然由 main classifier 的輸出決定。為了簡單起見,我們僅僅在該輔助輸出上計算分割損失(segmentation loss)。中間監督的概念,並不是很新,但是前人的工作僅依賴於輔助分類器,而本文作者首次將 decoder 的設計與輔助單元的設計相結合。

 

 

2. Experiments: 

下面該 decoder 網絡結構就是作者搜索出來的,取得了很好的分割效果。

 

 

 

==

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM