时间:2019年9月7日 星期六
主讲人: 张祥雨 (旷视)
高效模型设计的基本思路
- 轻量级架构
- 模型裁剪
- 模型搜索
- 低精度量化
- 知识蒸馏
- 高效实现
轻量级架构设计思路
-
原则1:有限的计算复杂度实现尽可能高的模型表示能力
-
高效的卷积计算方式
深度可分离卷积
例如 Xception 、 MobileNet v1 -
增加有效的通道数量
Bottleneck 结构
例如 ResNeXt 、 MobileNet v2 -
特征服用 、 多特征融合
例如 DenseNet、Res2Net
-
-
原则2:提高模型的实际运行速度
理论复杂度和实际执行速度并不完全对等
影响实际执行速度的原因
- 理论计算量
- 计算、访存比
- 模块并行度
- 设备特性/实现效率
如何提高实际执行速度
-
卷积的输入输出通道数应尽可能接近
M A C ≥ 2 h w B + B h w MAC≥\sqrt{2hwB} + \frac{B}{hw} MAC≥2hwB+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 上)
设计举例 —— 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”
- 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机制
设计举例 —— DFANet
语义分割模型举例
- 设计要点
- backbone : Xception
- 高分辨率、低通道数特征图
- 多尺度特征融合、特征复用
- 应用举例 : 移动端实时虚化
相关资源
https://github.com/megvii-model/ShuffleNet-Series
模型搜索
效率
- 大数据集、复杂业务流程下能否高效搜索?
- 能否针对不同的速度、资源消耗等限制因素,快速生成满足要求的网络结构
性能
- 直接搜素 vs 迁移搜索
- 对于超大搜索空间,能否挖掘出高效结构(超越手工设计水平)
灵活性
- 能否支持 “ hard constraint”
- 是否支持多搜素任务、多种限制条件
- 能否对需要预训练的任务模型进行搜索
挑战 “不可能三角”
难点:同时兼顾效率、性能 和灵活性
通用模型搜索算法 —— Single Path One-Shot NAS
算法流程
-
训练 SuperNet
- 根据搜索空间构造选择块 和 SuperNet
- 每次迭代,随机选择 SuperNet 中的一条路径进行训练
-
架构优化
- 使用遗传算法生成候选结构
- 评估Supernet 对应的路径的性能,作为该候选结构的性能预测
-
对于不同的模型约束,只需要重新运行架构优化步骤,无需重新训练 Supernet
混合精度量化搜索
搜索效率