shuffle net 2017.12.7 face++提出。
本文也是设计小的网络模型,可以应用到移动端。
设计思想主要与Xception和ResNeXt相同,应用组卷积和depthwise卷积,并提出了channel shuffle。
一般在小网络中一般会通过
pointwise convolutions(1*1卷积)减少参数(限制卷积的通道数),但可能会造成模型精度下降。直观想法用group convlution。
如果将group convolution 进行stack,会出现(a)中的现象,这是因为group在进行分组时,采用的是
[1,2,3],[4,5,6]···顺序划分的,即导致某个通道的输出只来自于一部分的输入通道。
为了解决该问题,将上一层group conv得到的特征做了一个channel shuffle,如图(b)。具体操作是先将通道分成g*n,然后将通道维数reshape成(g,n),再通过flatten操作将其作为下一层的输入,如图(c)。
则整个过程:
其中(a)为depthwise conv结构,(b)将1*1卷积换成group conv1*1,在采用channel shuffle,在depthwise conv,group conv。(c)为论文中的另一个改进的地方,将原来的直接相加变成了avg pool ,stride =2,同时将3*3 DWC的stride改为2,将add变成concat,使得原来的通道数不变,可以有效的减少参数。
本文的主要结构就是上面的两幅图。
结果:
一般来看,group数越大,结果相对较好,但小网络,当group达到8时,并没有4时好,作者分析原因是:小网络的通道数少,分的组过多时,每个组内卷积数目变少,破坏了能力。但对于depthwise conv来说,1*1部分没有进行分组,保证了3*3conv部分(每个特征为一组做卷积,是分组卷积的极端情况 )的能力。
在imagenet 分类任务上,与mobilenet相比,准确率高7.8%。