­

NetAdapt:MobileNetV3用到的自動化網路簡化方法 | ECCV 2018

NetAdapt的思想巧妙且有效,將優化目標分為多個小目標,並且將實際指標引入到優化過程中,能夠自動化產生一系列平台相關的簡化網路,不僅搜索速度快,而且得到簡化網路在準確率和時延上都於較好的表現

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

論文: NetAdapt: Platform-Aware Neural Network Adaptation for Mobile Applications

Introduction


  輕量化網路主要有兩種方法,分別為結構優化以及人工量化,但是以上兩種方法都不能保證網路能夠在不同的設備上都有較優的表現,而且目前的方法大都以非直接指標(計算量/參數量)作為指導,往往與實際結果有出入。

  為此,論文提出平台相關的自動化網路簡化方法NetAdapt,邏輯如圖1所示,以迭代優化的方式慢慢獲取滿足預期資源消耗的網路。NetAdapt將資源直接指標引入優化過程,可同時支援多種資源約束,能夠快速搜索平台相關的簡化網路。

Methodology: NetAdapt


Problem Formulation

  NetAdapt主要目標是解決以下非凸約束優化問題:

Net是從初始預訓練網路簡化得到的網路,Acc(\cdot)是準確率計算,Res_j (\cdot)是對資源j的消耗計算,Bud_j是資源j的總量,也是優化的約束條件,可以為時延、能耗、記憶體或其它。
  NetAdapt將上述優化目標分成多個小目標進行迭代優化:

Net_i是第i次迭代產生的準確率最高的網路,Net_0是初始預訓練模型。隨著迭代次數的增加,網路的資源消耗會變得更少,\Delta R_{i,j}代表i次迭代中資源j的縮減量,整體的想法類似於學習率調度。當Res_j(Net_{i-1})-\Delta R_{i,j}=Bud_j滿足所有資源時,演算法終止,輸出每一輪迭代優化中最優的網路,從中選擇合適的網路。

Algorithm Overview

  假設當前優化目標只有時延,可採用減少卷積層或全連接層的核數量進行資料消耗的優化,NetAdapt的演算法邏輯如Algorithm 1所示。

  圖2是每次迭代的細節,逐層(也可以網路unit為單位)選擇保留的核數量(Choose # of Filters)以及保留的核(Choose Which Filters),核數量的選擇基於經驗估計(後面會講到),注意這裡選擇去除整個核而不是其中的一些權值,比如$512\times 3\times 3的卷積核縮減為$256\times 3\times 3的卷積核,去除核後要去除對應的特徵圖。每層的優化都產生一個簡化後的網路,簡化後的網路隨後進行短時間fine-tune(Short-Term Fine-Tune)來恢復準確率。
  在上述操作完成後,NetAdapt單次迭代產生K個簡化網路,選擇其中準確率最高的網路作為下一輪迭代的初始網路(Pick Highest Accuracy)。若當前迭代的網路已滿足資源要求時,退出優化並將每次迭代產生的最優網路fine-tune直到收斂(Long-Term Fine-Tune)。

Algorithm Details

  • Choose Number of Filters

  當前層選擇的核數量基於經驗估計來決定,逐步減少核數量並計算每個簡化網路的資源消耗,選擇能滿足當前資源消耗約束的最大核數量。當減少當前層的核數量時,後一層的相關維度要對應修改,這個也要考慮到資源消耗計算中。

  • Choose Which Filters

  有很多方法來決定選擇保留的核,論文採用簡單magnitude-based方法,即選擇N個L2-norm最大的核,N由上面的步驟決定。

  • Short-/Long-Term Fine-Tune

  在NetAdapt的每次迭代中,都使用相對較小的次數(short-term)fine-tune搜索到的簡化網路來恢復準確率,這一步對於小網路而言相當重要。由於大量減少資源量,如果不這樣做,網路的準確率可能會降為零,導致演算法選擇了錯誤的網路。隨著演算法的進行,雖然網路會持續訓練,但還沒到收斂的地步,所以當得到最後的一系列自適應網路後,使用較多的次數(long-term)fine-tune直到收斂作為最後一步。

Fast Resource Consumption Estimation

  在自適應的過程中,需要離線計算簡化網路的資源消耗,這個計算可能會很慢並且由於設備有限難以並行,會成為演算法的計算瓶頸。

  論文通過建立多個layer-wise look-up表格來解決上面提到的資源消耗計算問題,即前面提到的經驗估計。每個表格預先計算對應層的在不同的輸入維度和核數量下的資源消耗,注意相同輸入大小和配置的層可以共用表格內容。在估算時,先找到對應的層的表格,通過累計layer-wise的資源消耗來估算network-wise資源消耗,邏輯如圖3所示。

  圖4對比了對MobileNetV1進行優化過程中估算的時延與實際時延,可以看到兩個值是高度相關的。

Experiment Results


  對比NetAdapt與其它網路簡化方法在小型MobileNetV1(50%)上的簡化效果。

  在不同的設備上對比NetAdapt與其它網路簡化方法在小型MobileNetV1(100%)上的簡化效果。

Conclustion


  NetAdapt的思想巧妙且有效,將優化目標分為多個小目標,並且將實際指標引入到優化過程中,能夠自動化產生一系列平台相關的簡化網路,不僅搜索速度快,而且得到簡化網路在準確率和時延上都於較好的表現。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】

work-life balance.