2019 AI procon | 張祥雨 高效輕量級深度模型的研究和實踐 AI開發者大會部分內容

時間:2019年9月7日 星期六
主講人: 張祥雨 (曠視)

高效模型設計的基本思路

  • 輕量級架構
  • 模型裁剪
  • 模型搜索
  • 低精度量化
  • 知識蒸餾
  • 高效實現

輕量級架構設計思路

  • 原則1:有限的計算複雜度實現儘可能高的模型表示能力

    • 高效的卷積計算方式
      深度可分離卷積
      例如 Xception 、 MobileNet v1

    • 增加有效的通道數量
      Bottleneck 結構
      例如 ResNeXt 、 MobileNet v2

    • 特徵服用 、 多特徵融合
      例如 DenseNet、Res2Net

  • 原則2:提高模型的實際運行速度

    理論複雜度和實際執行速度並不完全對等

    影響實際執行速度的原因

    • 理論計算量
    • 計算、訪存比
    • 模塊並行度
    • 設備特性/實現效率

    如何提高實際執行速度

    • 卷積的輸入輸出通道數應儘可能接近
      MAC2hwB+BhwMAC≥\sqrt{2hwB} + \frac{B}{hw}

    • 謹慎使用分組卷積

    MAC=hw(c1+c2)+c1c2g=hwc1+Bgc1+BhwMAC = hw(c_1+c_2 ) + \frac{c_1c_2}{g} = hwc_1 + \frac{Bg}{c1} +\frac{B}{hw}

    • 減少網絡碎片

    • 逐元素(Element-wise)運算的開銷不可忽視

設計舉例 —— ShuffleNet v1

  • 設計思路 : 深度可分離卷積 + 多層分組卷積
    • 問題:各個分組之間缺少信息交流
    • 解決: 引入通道重排 (channel shuffle )
  • 結構特點

    • 類似 ResNet 結構單元

    • “快速” 降採樣

  • 性能

    • 準確度大幅超過 MobileNet v1

    • 移動端高效執行

  • 問題

    • 分組卷積執行低效 (尤其在GPU 上)

設計舉例 —— ShuffleNet v2

  • 設計要點

    • 採用輸入輸出通道數相等的卷積 (G1)
    • 用通道切分 ( channel split )代替分組卷積 (G2、G3)
    • 取消 Identity Shortcut ,用 Concat 替代 (G4)
    • 合併主元素運算 (G4)
  • 特徵複用

  • ShuffleNet v2+ 更強的特徵保溼

    • AutoML超參搜索 + Swish 激活函數
      <img src=“https://leanote.com/api/file/getImage?fileId=5d74c312ab644160a90063d2”
  • ShuffleNet V2.large

    • SE Block

      Model |FLOPs | #Params |Top-1 | Top-5 |

    • | - | - | - | - |
      ShuffleNetV2.Large | 12.7G | 140.7M | 18.56 | 4.48 |
      SENet | 20.7G | - | 18.68 | 4.47 |

    coco 2018 物體檢測 單模型 mmAP 56+

  • 應用

    • 數據清洗
    • 數據蒸餾

設計舉例 —— ThunderNet

物體檢測模型舉例

  • 設計要點
    • backbone : 修改版 ShuffleNet v2
    • 檢測器模塊 : LightHead R-CNN
    • 多尺度融合
    • Attention機制

設計舉例 —— DFANet

語義分割模型舉例

  • 設計要點
    • backbone : Xception
    • 高分辨率、低通道數特徵圖
    • 多尺度特徵融合、特徵複用
  • 應用舉例 : 移動端實時虛化

相關資源

https://github.com/megvii-model/ShuffleNet-Series

模型搜索

效率

  • 大數據集、複雜業務流程下能否高效搜索?
  • 能否針對不同的速度、資源消耗等限制因素,快速生成滿足要求的網絡結構

性能

  • 直接搜素 vs 遷移搜索
  • 對於超大搜索空間,能否挖掘出高效結構(超越手工設計水平)

靈活性

  • 能否支持 “ hard constraint”
  • 是否支持多搜素任務、多種限制條件
  • 能否對需要預訓練的任務模型進行搜索

挑戰 “不可能三角”

難點:同時兼顧效率、性能 和靈活性

通用模型搜索算法 —— Single Path One-Shot NAS

算法流程

  • 訓練 SuperNet

    • 根據搜索空間構造選擇塊 和 SuperNet
    • 每次迭代,隨機選擇 SuperNet 中的一條路徑進行訓練
  • 架構優化

    • 使用遺傳算法生成候選結構
    • 評估Supernet 對應的路徑的性能,作爲該候選結構的性能預測
  • 對於不同的模型約束,只需要重新運行架構優化步驟,無需重新訓練 Supernet

混合精度量化搜索

搜索效率

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章