论文阅读笔记---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是人工设计的,不是模型自己学习的,不符合网络通过负反馈自动学习特征的基本原则,又陷入人工设计特征的老路!