ShuffleNet网络结构介绍-CNN模型系列4

这篇文章将向大家介绍ShuffleNet网络结构的特点,同样也是问题的形式。

问题1:ShuffleNe网络结构提出了什么新的计算结构?该结构有什么特性,和其他类似结构做一个简要的对比。

回答:ShuffleNet采用了分组卷积的计算方式,分组卷积将特征图的不同通道分成一定数目的group,如分为g组(g为分组数量)。如下图左边所示,分组数为3,此时3个组各自进行普通的卷积操作,组之间的信息是隔离的,为了解决这个问题,下图2和3在第一次分组之后进行了通道之间的shuffle,使得隔离的特征可以进行融合。具体的channel shuffle的实现可以参考引文2,也可以用pytorch中的支持张量运算的permute操作进行实现。depth wise convolution可以理解为分组卷积的一种特殊情况,即分成输入通道数的那么多组数,每一组的通道数为1。

下面将要通过图示的方式向大家展示不同的模型结构的参数量上的差异:

ResNet、ResNext以及ShuffleNet网络结构示意图
ResNext三种等价的block结构图

经过分组卷积以及通道shuffle后,ShffleNet的FLOPS比ResNet和RestNext的block结构的FLOPS要小。而且合理的分组后和MobileNet相比较准确率和推理时间都有一定的优势。如下图所示。

不同的深度学习小模型在高通处理器Snapdragon 820处理器上的性能表现

ShuffleNet v2版本在模型设计方面在模型精度和模型计算复杂度上面做了更好的权衡,特别是模型计算复杂度不仅仅是FLOPS这样的间接指标(因为影响计算时间的还有内存访问耗时,模型并行程度等)。因此在模型推理效率上,将在目标平台上测量速度作为计算复杂度的直接考量。而且通过实验观察,得出一些模型在设计方面的一些指导原则,如:1、过度分组会增加内存访问(memory access cost),2、过度碎片化的机构会影响模型并行化的程度;3、element-wise操作的性能影响不能忽略等等。

问题:ShuffleNet和MobileNet都是面相移动端的计算,比较它们之间的不同。

回答: ShuffleNet用到了分组卷积,并在1*1卷积中用到了channel Shuffle减少了1*1卷积的计算时间,总体达到了更快的计算,适合于对算力更敏感的移动端边缘AI场景应用中。

References


by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *