论文:ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
网址:https://arxiv.org/abs/1707.01083
提出了Channel Shuffle
的思想,在Shuffle Unit中全是GConv和DWConv。
GConv虽然能够减少参数与计算量,但GConv中不同组之间信息没有交流。
在ResNeXt网络中,PWConv的计算量占据了全部计算量的 93.4 % 93.4\% 93.4%。使用的GConv的计算量是比较少的。
所以,在ShuffleNet V1中,作者将所有的升维和降维的 1 × 1 1\times1 1×1的卷积全部换为了GConv。
图(b)为stride=1
的情况,图?为stride=2
的情况。
ShuffleNet V1网络结构
论文:ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
网址:https://arxiv.org/abs/1807.11164
补充:
FLOPS:每秒浮点运算次数,可以理解为计算的速度,是衡量硬件性能的一个指标。
FLOPs:浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。(1GFLOPs = 1 0 9 10^9 109FLOPs)
Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks
指出提高网络速度,不仅要降低网络的FLOPs,同时要提升FLOPS,因此提出了一种新型的PConv,提出了一种新的网络FasterNet,论文网址:https://arxiv.org/abs/2303.03667)作者提出了4条设计高效网络的准则。
提出了新的block设计。
4条设计高效网络的准则
1.Equal channel width minimizes memory access cost(MAC)
当卷积层的输入特征矩阵与输出特征矩阵channel相等时,MAC最小(保持FLOPs不变时)
2.Excessive group convolution increase MAC
当GConv的groups增大时(保持FLOPs不变时),MAC也会增大。
3.Network fragmentation reduces degree of parallelism
网络设计的碎片化(分支)程度越高,速度越慢
虽然碎片化可以提高我们网络的准确率,但是同时也会降低网络的效率。
4.Element-wise operations are non-negligible
Element-wise操作带来的影响是不可忽略的。
Element-wise操作包括:ReLU、AddTensor(相加操作)、AddBias(使用偏执)等。这种操作的特点是,FLOPs很小,但是MAC很大。
根据4条准则,ShuffleNet对网络进行了更新。
(a)(b)为shufflenet V1,?(d)为ShuffleNet V2中stride分别为1和2的两种情况。
ShuffleNet V2网络结构