轻量化模型调研

轻量化模型总结

目的

保证模型精度的前提下尽量减小模型的参数量,达到加速模型,方便模型部署的目的

主流方法

  • 基于神经网络架构搜索的自动化设计神经网络技术
  • 网络结构不变的模型压缩
    • 模型剪裁和稀疏化
    • 模型量化
    • 模型蒸馏
  • 人工设计轻量化模型
    • SqueezeNet
    • MobileNet

人工设计轻量化模型

  • SqueezeNet

    • 主要思路
      • 1*1卷积代替3*3卷积
      • 降低3*3卷积输入数据的通道数量
      • 在网络的后端进行降采样,保证模型具有较大激活图,可以提高模型精度
    • 主要结构为如下
      image.png
  • MobileNets

    • 主要思路
      • 深度可分离卷积:由Depthwise卷积和Pointwise卷积组成,是传统卷积运算运算量的八分之一到九分之一
    • 主要结构
      image.png
  • MobileNetV2

    • 主要思路
      • 反转残差结构,使用先升维后降维的策略,提高梯度的传播效率,具有更好的内存使用效率,同时提高深度可分离卷积输入的通道数,但是会引入特征破坏(特征由高维向低维映射出现损失)的问题
      • 线性瓶颈结构,取消Relu,解决如上结构带来的特征破坏问题
    • 主要结构
      image.png
  • ShuffleNet

    • 主要思路
      • 深度可分离卷积
      • 组卷积:对于某一个channel层,其对应的输入channle只占所有输入channel的固定一部分,组卷积相比PointWise卷积可以降低计算量
      • 通道随机打乱操作:解决组卷积带来的通道固定问题
    • 主要结构
      image.png

image.png

  • ShuffleNetV2

    • 主要思路:与其他论文主要关注FLOPs相比,该论文基于memory access cost(MAC),模型并行化程度,运算平台等因素及ShuffleNet提出如下观点:

      • 相等的channel width 可以减小MAC
      • 过多的组卷积增加了MAC
      • 模型分支数量会影响并行度
      • 计算FLOPs时只考虑卷积中的乘法操作,但是Element-wise操作(ReLU,单位加,偏置)也很耗时
    • 基于如上观点提出如下的结构
      image.png
      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操作(符合第四观点)

  • GhostNet

    • 主要思想
      • 特征冗余对深度学习模型非常重要,提出一种计算量更小的冗余特征生成方式,Ghost Module,包含普通卷积操作及线性操作,并参考MobileNetV2提出Ghost Bottleneck结构
    • 主要结构
      image.png
      image.png

总结

GhostNet论文中各个模型实验结果

image.png

各个论文观点:

  • 特征复用有助于精度提高
  • 深度可分离卷积
  • 残差结构可以提高精度
  • Bottleneck结构若先膨胀后收缩需弃用ReLU
  • 输入输出channle数相同时,MAC最小
  • 深度学习中特征是冗余的,channel缩减因子可以获得较好的结果
  • 组卷积可以降低模型参数量及计算量,但是会提高MAC
(完)