高效的CNN网络

高效的CNN网络

参考B站

要求

  • 参数量小,占用的内存低(一般小于5M,甚至不到1M)
  • 速度快(视频处理,每秒30帧)
  • 计算量低(flops)
  • 性能和大模型相当

实现方法

卷积核的使用和设计

  • 全连接和全局池化:全局池化代替全连接
  • 池化与步长的设计:特征图的大小下降过快会影响性能,要平衡计算量和性能
  • 小卷积:3x3卷积
  • 1x1卷积:多用在瓶颈结构,1x1卷积进行降维

卷积方式的使用和设计

  • 卷积拆分:3x3拆分成1x3和3x1两个部分
  • 通道补偿
    • 提高单层通道利用率:特征通道补偿,输入通道取反和输入通道进行concat,以原来一半的计算量便维持了原来的网络宽度
    • 提高多层通道利用率:密集连接网络,DenseNet,每一层学习的通道数更少,计算量远低于普通网络
  • 分组卷积:depth-wise convolution, squeeze net, condense net

剪枝

B站剪枝例子

  • 常用的为通道级别的剪枝,剪除整个通道
    • 根据卷积核的L1 norm(绝对值)判断是否需要裁减掉卷积核
    • network slimming,根据BN的缩放因子确定通道是否重要

量化

从高精度到低精度,如32位到8位

  • 权重量化
  • 激活值量化
  • 输入量化
  • 误差量化

知识蒸馏

  • Hinton: soft labels
  • FitNet: 最小化特征层的距离
  • ProjectNet: 同时训练一个大模型和一个小模型
  • 蒸馏和量化相结合,teacher为全精度模型,student为低精度模型

猜你喜欢

转载自www.cnblogs.com/huanxifan/p/12688158.html