2019 AI procon | 张祥雨 高效轻量级深度模型的研究和实践 AI开发者大会部分内容

时间:2019年9月7日 星期六
主讲人: 张祥雨 (旷视)

高效模型设计的基本思路

  • 轻量级架构
  • 模型裁剪
  • 模型搜索
  • 低精度量化
  • 知识蒸馏
  • 高效实现

轻量级架构设计思路

  • 原则1:有限的计算复杂度实现尽可能高的模型表示能力

    • 高效的卷积计算方式
      深度可分离卷积
      例如 Xception 、 MobileNet v1

    • 增加有效的通道数量
      Bottleneck 结构
      例如 ResNeXt 、 MobileNet v2

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

    2019 AI procon | 张祥雨 高效轻量级深度模型的研究和实践 AI开发者大会部分内容_第1张图片
  • 原则2:提高模型的实际运行速度

    理论复杂度和实际执行速度并不完全对等

    影响实际执行速度的原因

    • 理论计算量
    • 计算、访存比
    • 模块并行度
    • 设备特性/实现效率
    2019 AI procon | 张祥雨 高效轻量级深度模型的研究和实践 AI开发者大会部分内容_第2张图片

    如何提高实际执行速度

    • 卷积的输入输出通道数应尽可能接近
      M A C ≥ 2 h w B + B h w MAC≥\sqrt{2hwB} + \frac{B}{hw} MAC2hwB +hwB

    • 谨慎使用分组卷积

    M A C = h w ( c 1 + c 2 ) + c 1 c 2 g = h w c 1 + B g c 1 + B h w MAC = hw(c_1+c_2 ) + \frac{c_1c_2}{g} = hwc_1 + \frac{Bg}{c1} +\frac{B}{hw} MAC=hw(c1+c2)+gc1c2=hwc1+c1Bg+hwB

    • 减少网络碎片

    • 逐元素(Element-wise)运算的开销不可忽视

设计举例 —— ShuffleNet v1

  • 设计思路 : 深度可分离卷积 + 多层分组卷积
    • 问题:各个分组之间缺少信息交流
    • 解决: 引入通道重排 (channel shuffle )
  • 结构特点

    • 类似 ResNet 结构单元

    • “快速” 降采样

  • 性能

    • 准确度大幅超过 MobileNet v1

    • 移动端高效执行

  • 问题

    • 分组卷积执行低效 (尤其在GPU 上)
2019 AI procon | 张祥雨 高效轻量级深度模型的研究和实践 AI开发者大会部分内容_第3张图片

设计举例 —— ShuffleNet v2

  • 设计要点

    • 采用输入输出通道数相等的卷积 (G1)
    • 用通道切分 ( channel split )代替分组卷积 (G2、G3)
    • 取消 Identity Shortcut ,用 Concat 替代 (G4)
    • 合并主元素运算 (G4)
    2019 AI procon | 张祥雨 高效轻量级深度模型的研究和实践 AI开发者大会部分内容_第4张图片
  • 特征复用

2019 AI procon | 张祥雨 高效轻量级深度模型的研究和实践 AI开发者大会部分内容_第5张图片
  • ShuffleNet v2+ 更强的特征保湿

    • AutoML超参搜索 + Swish 激活函数
  • 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机制
2019 AI procon | 张祥雨 高效轻量级深度模型的研究和实践 AI开发者大会部分内容_第6张图片

设计举例 —— DFANet

语义分割模型举例

  • 设计要点
    • backbone : Xception
    • 高分辨率、低通道数特征图
    • 多尺度特征融合、特征复用
  • 应用举例 : 移动端实时虚化
2019 AI procon | 张祥雨 高效轻量级深度模型的研究和实践 AI开发者大会部分内容_第7张图片

相关资源

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

模型搜索

效率

  • 大数据集、复杂业务流程下能否高效搜索?
  • 能否针对不同的速度、资源消耗等限制因素,快速生成满足要求的网络结构

性能

  • 直接搜素 vs 迁移搜索
  • 对于超大搜索空间,能否挖掘出高效结构(超越手工设计水平)

灵活性

  • 能否支持 “ hard constraint”
  • 是否支持多搜素任务、多种限制条件
  • 能否对需要预训练的任务模型进行搜索

挑战 “不可能三角”

难点:同时兼顾效率、性能 和灵活性

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

算法流程

  • 训练 SuperNet

    • 根据搜索空间构造选择块 和 SuperNet
    • 每次迭代,随机选择 SuperNet 中的一条路径进行训练
  • 架构优化

    • 使用遗传算法生成候选结构
    • 评估Supernet 对应的路径的性能,作为该候选结构的性能预测
  • 对于不同的模型约束,只需要重新运行架构优化步骤,无需重新训练 Supernet

2019 AI procon | 张祥雨 高效轻量级深度模型的研究和实践 AI开发者大会部分内容_第8张图片

混合精度量化搜索

2019 AI procon | 张祥雨 高效轻量级深度模型的研究和实践 AI开发者大会部分内容_第9张图片

搜索效率

2019 AI procon | 张祥雨 高效轻量级深度模型的研究和实践 AI开发者大会部分内容_第10张图片 2019 AI procon | 张祥雨 高效轻量级深度模型的研究和实践 AI开发者大会部分内容_第11张图片

你可能感兴趣的:(CV,Basic,2019,ai,procon,张祥雨,NAS,网络轻量化)