论文阅读笔记---ShuffleNet V1

01 ShuffleNet V1要解决什么问题

为算力有限的嵌入式场景下专门设计一个高效的神经网络架构。

02 亮点

使用了两个新的操作:pointwise group convolution和channel shuffle。

根据这两个操作构建了ShuffleUnit,整个ShuffleNet都是由ShuffleUnit组成。

所谓的的pointwise group convolution就是分组卷积与1x1卷积的结合!!!

2.1 Channel Shuffle

shuffle的步骤如下:

  • 假设一个卷积层上有g组,每组有n个通道,最后输出就有g×n个通道。
  • reshape成(g,n) 。
  • 转置成(n,g)。
  • 展开(flatten),再分成g组,作为下一层的输入。

2.2 Shuffle Unit

图(a)是残差卷积模块,标准3×3卷积转换为深度可分离卷积与1×1卷积的组合。中间加上BN和ReLU,构成基本单元。

图(b)是Shuffle Unit,将图(a)中的第一个1×1卷积替换成1×1组卷积(GConv)和channel shuffle组成的单元。

图(c)是用于降采样的Shuffle Unit,深度可分离卷积的步长改为2,为了适配主分支的feature map,在shortcut上加上了步长也为2的平均池化(AVG Pool 3×3 )。

2.3 网络架构

03 效果如何?

  • 在ImageNet分类和MS COCO目标检测任务上取得了比其他轻量化模型更高的准确率,如MobileNet v1。
  • 在ARM设备上,ShuffleNet的速度比AlexNet快了13倍。

04 还存在什么问题?

  • 超参数如组卷积的组数以及通道压缩比率等需要根据实际情况决定,不同任务下需要自行调整。
  • 网络实时性并不能单纯以浮点计算量来衡量,还存在memory access cost(MAC)等因素的干扰,并不能仅仅根据计算量就认为ShuffleNet是最快的。
  • 通道的Shuffle是人工设计的,不是模型自己学习的,不符合网络通过负反馈自动学习特征的基本原则,又陷入人工设计特征的老路!

猜你喜欢

转载自www.cnblogs.com/Terrypython/p/11537633.html