ShuffleNet V2 学习笔记

原论文:《ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design

文中分析了模型的 FLOPS 与实际计算速度之间的差异

  1. 以 FLOPS 为判定标注时,未考虑一些会影响速度的重要因素。

    • 内存访问耗时(Memory Access Cost, MAC),该项因素在分组卷积耗时中占据了相当大份额;
    • 并行化程度(Degree of Parallelism),在相同的 FLOPS 下,模型并行化程度越高,执行速度越快。
  2. 平台也会影响计算速度,这就使某些操作即便具有相同的 FLOPS,也会导致计算速度的不通。

    • 张量分解常被用于加快矩阵乘法的计算速度,但是由于CUDNN计算库的问题,它在GPU上的速度可能会大大折扣。

基于上面的分析,在设计加速版模型时,文章中提出了两项原则

  1. 直接使用计算速度等方式直接评估模型效果,而不是用FLOPS简介评估;
  2. 在目标平台上验证模型的速度等指标。

模型设计的四项原则

  1. 使 1 × 1 1 \times 1 1×1 Conv 的 输入输出通道数相同(可以保证MAC最小);
  2. 分组卷积可以在固定的 FLOPS 中提高通道的信息利用率,但 使用时要慎重,否则会增加 MAC;
  3. 尽量 减少模型分段的数量,以提高模型的并行化程度,进而发挥设备的并发优势;
  4. 尽量 减少元素级别的操作,防止低 FLOPS 高 MAC 现象的产生。

文章中对这四项原则有比较详细的分析,这里不再摘录,仅放一下作者等人所做的 实验结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ShuffleNet V2

v1v2 对比:
在这里插入图片描述

仅介绍图中的 ( c ) (c) (c)

  • Channel Split 将输入特征的通道 c c c 分割为 c ′ c' c c − c ′ c-c' cc(文章中使用 c ′ = c / 2 c'=c/2 c=c/2)两个分支,其中一个分支与另一个经卷积处理的分支跳连,以构成 分组卷积 的形式,并且减少了 ReLU 与 深度卷积(Depth Convolution)等元素级别的操作;
  • 两个 1 × 1 1\times 1 1×1 Conv 的输入输出通道数相同;
  • 使用拼接的方式 融合 两路分支的特征。

整体结构

在这里插入图片描述

最后是实验,略

参考资料

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值