轻量化模型调研
【摘要】 调研常用轻量化模型,取各家所长,促进对轻量化模型设计、部署及使用的理解。
轻量化模型总结
目的
保证模型精度的前提下尽量减小模型的参数量,达到加速模型,方便模型部署的目的
主流方法
- 基于神经网络架构搜索的自动化设计神经网络技术
- 网络结构不变的模型压缩
- 模型剪裁和稀疏化
- 模型量化
- 模型蒸馏
- …
- 人工设计轻量化模型
- SqueezeNet
- MobileNet
- …
人工设计轻量化模型
-
- 主要思路
- 1*1卷积代替3*3卷积
- 降低3*3卷积输入数据的通道数量
- 在网络的后端进行降采样,保证模型具有较大激活图,可以提高模型精度
- 主要结构为如下
- 主要思路
-
- 主要思路
- 深度可分离卷积:由Depthwise卷积和Pointwise卷积组成,是传统卷积运算运算量的八分之一到九分之一
- 主要结构
- 主要思路
-
- 主要思路
- 反转残差结构,使用先升维后降维的策略,提高梯度的传播效率,具有更好的内存使用效率,同时提高深度可分离卷积输入的通道数,但是会引入特征破坏(特征由高维向低维映射出现损失)的问题
- 线性瓶颈结构,取消Relu,解决如上结构带来的特征破坏问题
- 主要结构
- 主要思路
-
- 主要思路
- 深度可分离卷积
- 组卷积:对于某一个channel层,其对应的输入channle只占所有输入channel的固定一部分,组卷积相比PointWise卷积可以降低计算量
- 通道随机打乱操作:解决组卷积带来的通道固定问题
- 主要结构
- 主要思路
-
-
主要思路:与其他论文主要关注FLOPs相比,该论文基于memory access cost(MAC),模型并行化程度,运算平台等因素及ShuffleNet提出如下观点:
- 相等的channel width 可以减小MAC
- 过多的组卷积增加了MAC
- 模型分支数量会影响并行度
- 计算FLOPs时只考虑卷积中的乘法操作,但是Element-wise操作(ReLU,单位加,偏置)也很耗时
-
基于如上观点提出如下的结构
Channel Shuffle:将input channel 分成两个分支,分别为b和c-b,其中一个分支无操作,另一个包含三个卷积,最后concat操作代替add操作(符合以上第一、三、四观点)
c-b分支输入输出channel数相同,且不使用组卷积,Channel Split具有相似作用(符合第一、第二观点)
ReLU,Depthwise Conv 只会出现在一个branch中,同时连续的Concat,Channel Shuffle及Channel Split操作模型可以合成一个element-wise操作(符合第四观点)
-
-
- 主要思想
- 特征冗余对深度学习模型非常重要,提出一种计算量更小的冗余特征生成方式,Ghost Module,包含普通卷积操作及线性操作,并参考MobileNetV2提出Ghost Bottleneck结构
- 主要结构
- 主要思想
总结
GhostNet论文中各个模型实验结果
各个论文观点:
- 特征复用有助于精度提高
- 深度可分离卷积
- 残差结构可以提高精度
- Bottleneck结构若先膨胀后收缩需弃用ReLU
- 输入输出channle数相同时,MAC最小
- 深度学习中特征是冗余的,channel缩减因子可以获得较好的结果
- 组卷积可以降低模型参数量及计算量,但是会提高MAC
博客参考论文及引用图片摘自如下:
https://arxiv.org/abs/1602.07360
https://arxiv.org/abs/1704.04861
https://arxiv.org/abs/1801.04381
https://arxiv.org/abs/1707.01083
https://arxiv.org/abs/1807.11164
https://arxiv.org/abs/1911.11907
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)