©PaperWeekly 原創 · 作者|劉暢
學校|上海交通大學博士生
研究方向|計算機視覺
太長不看版論文標題:SM-NAS: Structural-to-Modular Neural Architecture Search for Object Detection
論文來源:AAAI 2020
論文連結:https://arxiv.org/abs/1911.09929
State-of-the-art 的目標檢測方法非常複雜,它通常由:Backbone、Feature fusion neck(FPN 屬於這類 [1])、RPN RCNN head 等多個模塊組成。每種不同的模塊都有一堆設計和結構。之前一些 NAS 結合 Object Detection 問題的論文只關注設計一個模塊的設計(比如 backbone,feature fusion neck),而忽視了整個系統之間的平衡。 直覺上,複雜的模型效果好但速度慢(佔計算資源),簡單的模型效果差但速度快。而本文則使用 NAS 方法,在多個模塊之中搜索,權衡計算資源與精度的矛盾。論文提出了一種兩步的,從粗到細的搜索策略,名為 Structural-to-Modular NAS(SM-NAS)。即首先進行 Structural-level(結構層級)的搜索,尋找高效的模塊組合。之後進行 Modular-level 演化每個特定模塊,並向更快的特定任務網絡這一目標,推進帕累託前沿。 註:帕累託前沿(Pareto front),即 Pareto 解的集合,在這裡可理解為一個模型集合,從集合裡拉出任意兩個成員出來,節省資源的一定準確率低。而對於不屬於這個集合的模型,總有一個集合成員比他又節省資源又準確率高。本文考慮的是一個多目標搜索問題,而搜索空間則是很多熱門的檢測算法。而由於改進的訓練方法,搜索時可以不採用任何的預訓練模型或其他的代理任務,而是直接在數據集上跑預測,使得搜索結果更準確。檢測算法總體上(大多)由 backbone,feature fusion neck(FPN 屬於這類),RPN 和 RCNN head 四種 module 組成,之前有很多工作提出了很多不錯的 module,但是不知如何在硬體資源限制下尋找最優組合。
就算可以把所有的組合全在標準數據集上訓一遍再比較並去除最好的,最終也只是個低效且次優(sub-optimal)的組合,因為某個組合可能只適用於特定的數據集(比如 COCO 可以,VOC 就不行)。除此之外,現有的 NAS 只關注最優化目標檢測系統的一個部分而不是整體。
與此同時,作者通過大量的復現 SOTA 的目標檢測模型,在實驗中發現了兩個有趣的事實:1. Two-stage 的模型不一定比 One-stage 模型跑得慢;
2. 通過精心組合,一個輸入圖片尺寸較小的複雜模型,可以在速度和精度上雙重碾壓一個輸入尺寸較大的簡單模型。
影響目標檢測系統效果的要素
總結一下,本論文致力於建立了一個多目標搜索機制,尋找高效最優的目標檢測整體結構。在總結了 state-of-the-art 的設計和實驗的現象之後,作者總結了三個影響目標檢測系統效果的要素:
每個 module 的結構
為了在這三個要素中找到一個兼顧效率和準確的權衡,作者提出了一個從粗到細的搜索策略:1)結構層級(第一步):尋找module的組合以及模型輸入圖片的尺寸;2)模塊層級(第二部):演化每個特定的 module,去獲得一個高效的網絡。
搜索空間
搜索空間會隨著搜索策略改變,因此每一步都有自己特定的搜索空間:
第一步:包含 one-stage 和 two-stage 的熱門模塊,以及輸入圖片的大小。
第二步:優化和搜索第一步確定下來的模塊,以 backbone 為例,本來當分類的模型不太適合直接遷移到目標檢測問題中。以 backbone 為例,本來當分類的模型不太適合直接拿來當檢測(比如每一層的通道數和中間的空間解析度),這些也可以通過搜索的辦法微調。
搜索方法
而對於搜索方法,論文結合了演化算法和偏序剪枝(Partial Order Pruning)來進行快速搜索(具體搜索算法引用自下面兩篇論文)。
Esteban Real, Alok Aggarwal, Yanping Huang, and Quoc V Le. Regularized evolution for image classifier architecture search. arXiv preprint arXiv:1802.01548, 2018Esteban Real, Sherry Moore, Andrew Selle, Saurabh Saxena, Yutaka Leon Suematsu, Jie Tan, Quoc V Le, and Alexey Kurakin. Large-scale evolution of image classifiers. In ICML, 2017.除此之外,作者提出了更好的訓練策略,無需 ImageNet 預訓練就可以直接跑,還在分布式訓練系統上並行了整個搜索過程。
創新點
NAS Pipeline
如上圖所示,上面是搜索的第一個層級:結構層級。該層級把整個模型分成了 backbone + feature fusion neck + RPN + RCNN head 四個部分,把所有 state-of-the-art 放到了搜索空間裡,並且還額外加入了輸入圖片尺寸這一維度。
1. Backbone: ResNet(18,34,50,101) | ResNeXt(50,101) | Mobilenet V2
注意,結構層級搜索裡還是用的 ImageNet 預訓練(說好的所謂快速搜索策略呢)。
2. Feature Fusion Neck: 該 module 旨在融合不同層的特徵,也對應了圖片中不同大小的目標
NO FPN (Faster RCNN) | FPN(輸入輸出特徵層級可調,有多種選項)
3. RPN: NO RPN (即1-stage模型) | RPN | Guided Anchoring RPN
4. RCNN Heads: Regular | Cascade (幾個輸出待定) | RetinaNet
5. Input Resolution: 512x512 | 800x600 | 1080x720 | 1333x800
在第一階段,搜索的指標是精度和推理時間,結合驗證數據集的準確性,生成一個 Pareto 前沿,顯示在不同資源約束下目標檢測模型的最佳結構。
而下面則是搜索的第二個層級:模塊層級。
當第一個層級生成了一個帕累託前沿時,我們可以選擇幾個不錯的模型,並在第二個階段裡對每個模型進行微調,並提升速度/精度的權衡效果。
ThunderNet 提出,目標檢測的 backbone,在前面的特徵圖更大,充滿描述空間細節的低級特徵。而後面的特徵圖則更小,但更具有高層的可描述性。
檢測任務有定位與分類兩個子任務,定位任務對低級的細節特徵比較敏感,而分類任務則高層特徵顯得更加關鍵。因此,一個很自然的問題就是如何在減少計算資源佔用的情況下獲得兼顧高底層特徵的模型。
因此,在 backbone 中,我們設計了一個靈活的搜索空間以尋找最優的通道數,以及下採樣與通道數提高的位置。
順便一提,在搜索 backbone 的過程中,作者根據前人工作的先驗知識固定了其中的幾個層的類型,並且維持了同一種大類的模型結構(如 ResNet 模型微調了還是 ResNet,ResNeXt 怎麼都是 ResNeXt)。因此 backbone 就可以簡單地使用字符串編碼。具體地可以看論文。
除了 backbone 之外,FPN 的通道數也是可調的,輸入的通道數在 128,256,512 中選取,而 head 的通道數也會相應調整。
快速訓練方法
作者提出兩個在目標檢測訓練中的致命問題,以及其解決方法,使得模型可以不通過 Image net 進行預訓練。錯誤的 Batch Normalization,因為訓練時 GPU 顯存的限制,目標檢測的 batchsize 通常較小,這導致模型很難估計batch中真實的統計數據,因此極大提高了模型的誤差。
為了解決這個問題,使用了 Group Normalization (GN)。GN 將通道分成組,並在每個組中計算用於標準化的平均值和方差。GN 的計算與 batchsize 無關,因此在 batchsize 大幅變化時表現穩定。
複雜的損失函數,檢測中的多重損失(分類損失,位置損失,而且不同坐標位置損失還不一樣算法)以及 ROI pooling 層阻礙了梯度從 RPN 向 backbone 回傳。因此,在從頭開始的訓練中會出現明顯的損失函數震蕩以及梯度爆炸現象。
Batch Normalization 可以顯著解決梯度爆炸問題,而因為目標檢測的 batchsize 比較小不太合適,因此使用了 Weight Standardization (WS) 來進一步平滑 Loss,WS 與 BN/GN 不同,直接標準化了卷積層的權重值,其通過實驗展示了這樣的操作可以減少損失和梯度值的 Lipschitz 常數。
實驗表明,加了 GN 和 WS 之後,訓練時可使用更大的學習率,因此也比預訓練方法收斂速度快了許多。
多目標搜索算法
在訓練的每個層級上,想做的都是生成一個 Pareto 前沿以顯示精度和計算資源的一些最佳權衡。
為了生成 Pareto 前沿,本文使用了非支配排序(nondominate sorting)確定模型是否在效率和準確率上支配其他模型。
在第一個層級中,使用一塊 V100 GPU 的推斷時間作為效率指標,而第二層及中,使用 FLOPs 而不是真實的時間,因為 FLOPs 更加精確(畢竟 backbone 之類的模型都是一個種類的)。除此之外,因為第一層級訓練還是預訓練+BN,而第二層級轉為了 GN+WS,因此使用 FLOPs 可以保持排名的一致性。
搜索基於:
其他實現細節
第一層級的實現是先隨機生成各種模型組合,然後使用演化算法迭代尋找最優組合。經驗上跑 5 個 epoch 就可以進行模型比較了。在這個階段,評估了 500 個模型並花了 2000 GPU hours。
PS:在搜索過程中,MobileNet 的表現最差,這是因為 MobileNet 以時間換空間的做法在 GPU 上反而會降低速度,具體請看我關於 MobileNet 的筆記 [2]。
第二層級使用 GN 和 WS 作為訓練策略,而搜索……論文好像沒提怎麼搜的,可能和第一層級一樣?最終第二層級評估了 300 個模型,並消耗了 2500 GPU hours。
[1] https://zhuanlan.zhihu.com/p/78160468
[2] https://zhuanlan.zhihu.com/p/80177088
點擊以下標題查看更多往期內容:
#投 稿 通 道#
讓你的論文被更多人看到
如何才能讓更多的優質內容以更短路逕到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術乾貨。我們的目的只有一個,讓知識真正流動起來。
📝 來稿標準:
• 稿件確係個人原創作品,來稿需註明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)
• 如果文章並非首發,請在投稿時提醒並附上所有已發布連結
• PaperWeekly 默認每篇文章都是首發,均會添加「原創」標誌
📬 投稿郵箱:
• 投稿郵箱:hr@paperweekly.site
• 所有文章配圖,請單獨在附件中發送
• 請留下即時聯繫方式(微信或手機),以便我們在編輯發布時和作者溝通
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關於PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報導人工智慧前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號後臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群裡。