轻量化神经网络专题文献综述

本文列出了一些经典的轻型神经网络架构设计的集合,广泛用于移动设备等。轻量级网络的评论文章通常包含模型压缩和处理技巧,可参阅以下系列文章

https://github.com/senbinyu/Computer_Vision_Literatures

1. 综述文献推荐

  • Cheng Yu et al., 2017, A survey of model compression and acceleration for deep neural networks

  • Cheng Jian et al., 2018, Recent advances in efficient computation of deep convolutional neural networks

  • Li Yahui et al., 2018, Lightweight Network Research Based on Deep Learning: A Review

2. 各种网络的综述

shuffleNet, 2018

  • v1, Zhang Xiangyu
    在ResNeXt中,使用组转换(几个通道); 在mobileNet中,是一个极端的情况,每个通道是一个组,分别进行传输。 在mobileNet-va论文中,1 * 1转换(逐点转换)占94%的MAdds。 ShuffleNet试图避免此问题。 而且,尚未利用不同信道之间的关系。 (组内的卷积不利于通道间信息交流)
  1. 通道转换(channel shuffle) 使用1 * 1组转换来替换1 * 1标准转换,以保存MAdds。 组数目,g通常不会太大,例如1,2,3,4,8等。太多的组可能导致每个组中的输入通道太少,从而可能导致性能变差。分成不同的group,然后洗牌式调换,permute,但是又不能用过多的group,否则会导致每组的通道太少

  2. 带有随机shuffle和不带有随机shuffle以及带有移动网络的随机播放之间的比较。 在保持相似的网络规模时,shuffleNet的性能优于VGG,ResNet,ResNeXt和mobileNet.作者对比了有无shuffle,明显的有shuffle的表现更好

Refer to paper ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices
轻量化神经网络专题文献综述_第1张图片

  • v2, Ma Ningning, Zhang Xiangyu, 2018
    FLOP只是影响模型速度等众多因素中的一种。在这里,作者为有效的cnn架构设计提出了更实用的指导原则。
  1. 使用内存访问成本(MAC参数)来衡量内存成本。 作者将单纯从FLOPs这个非直接指标衡量模型给转到MAC上,这个指标更能反映内存损失。MAC需要更小才能达到更高的速度。 有一些观察结果:G1 发现channel最好保持一致,因此通道号尝试相同(shuffleNet-v1中的bottleNeck与此相反);G2 group数目不能过大,g 组不能太大(在shuffleNet-v1中尝试更多组); G3 模型碎片化(像Googlenet的inception结构)会降低模型的并行能力,即网络碎片会降低并行度(mobileNet v2反对); G4 element-wise的操作会影响性能,逐个元素的操作是不可忽略的(深度使用ReLU6也是矛盾的)。一大堆观点都与之前的发现不太符合。

  2. 因此,做了一些修改,如下图所示。 这些操作均遵循上述准则。 例如,再次用1 * 1 conv替换1 * 1 group conv以遵循第二条规则,通道号尝试保持相同。 在这些指导下,shuffleNet-v2在准确性和速度上均取得了令人满意的结果。在此,尽量和发现的原则G1-G4一致

  3. 与densitytNet和condenseNet的联系。 特征通道的一半(当c’= c / 2时)直接通过该块并加入下一个块,例如densityNet和condenseNet中的feature复用。 它们都支持相邻层之间的连接比其他层更牢固

Refer to paper ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design
轻量化神经网络专题文献综述_第2张图片

MNASNet, Tan Mingxing et al., 2019

mobile NASNet,在ImageNet上是mobileNet-v2的1.8倍速度,pixel mobile的推理延迟为78ms。 但是,架构搜索的计算成本很高。

  1. 使用强化学习方法搜索架构,其准确性主要取决于架构的设计,而无需大量修改参数。 这表明搜索的体系结构是好的。 但是该架构类似于MobileNet-v2,这也意味着尽管搜索结构模仿了MobileNet,但人类的设计也非常不错,说明人工设计的网络架构也是非常精简有效的

Refer to paper MnasNet: Platform-Aware Neural Architecture Search for Mobile
轻量化神经网络专题文献综述_第3张图片

MobileNet, Andrew G. Howard et al. 2017

  • v1, 适用于移动和嵌入式视觉应用的高效模型。 与squeezeNet相比,参数要少得多,准确性更高。
  1. 深度可分离卷积:两部分,1)深度卷积,对于M个通道,我们有M个内核,每个通道对应一个内核; 2)逐点卷积,我们使用1 * 1内核进行卷积,因此是逐点卷积,请参见下图。 这两个操作可以保存参数。 原来是 M ∗ N ∗ D K ∗ D K ∗ i m a g e S i z e M * N * D_K * D_K * imageSize MNDKDKimageSize,现在是 M ∗ D K ∗ D K ∗ i m a g e S i z e M * D_K * D_K * imageSize MDKDKimageSize + N ∗ M ∗ i m a g e S i z e N * M * imageSize NMimageSize。 M是输入通道,N是输出通道

  2. 较薄的模型,即模型压缩。 模型收缩超参数 α \alpha α,用于输入和输出通道。 ρ \rho ρ用于图像分辨率,但是 ρ \rho ρ仅减少FLOP,但不减少参数数量。

  3. MobileNet可用于许多领域,例如对象检测,大规模地理定位,人脸属性。 在“人脸”属性中,蒸馏得到了验证,小型网络的行为类似于大型模型。

Refer to paper MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
轻量化神经网络专题文献综述_第4张图片

  • v2, Mark Handler, Andrew Howard et al., 2018
    v1 有一些问题,深度转换包含许多0内核,这意味着训练不够好. (depthwise训出来的kernel有不少是空的,过小的kernel size加上ReLU的激活影响,0的部分无法恢复)

创新的部分是inverted residual structures + linear bottleneck, 得到了令人满意的结果 vs mobileNet-v1: 75ms vs 113ms; 3.4M vs 4.2M parameters; 72 vs 70.6 Top1 on ImageNet.

  1. inverted residual structure, 1 * 1扩展通道+ ReLU6,3 * 3深度转换+ ReLU6,然后1 * 1使用线性函子,删除激活以保持兴趣流形manifolds of interest,反向残差带有linerar bottleneck。 (低尺寸,ReLU会破坏感兴趣的流形,因此在这里使用线性函子)

Refer to paper MobileNetV2: Inverted Residuals and Linear Bottlenecks
轻量化神经网络专题文献综述_第5张图片

  • v3, Andrew Howard et al., 2019
    我们要减少参数数量以及MAdds的推理时间。 MobileNet-v3在速度和准确性方面比v2更好。 例如,与MobileNetV2相比,MobileNetV3-Large在ImageNet分类上的准确度高3.2%,同时将等待时间减少了20%。
  1. MobileNet-v2 + SE block (如下图), SE学到了各渠道的重要性。

  2. 将自动搜索与新颖的架构相结合,以构建有效的模型。 平台感知的NAS用于逐块搜索,而NetAdapt用于逐层搜索。 在逐层搜索中,请使用较小的扩展大小。

  3. 网络改进,即重新设计计算量大的层。 最后一些层计算量很大。 修改它们以减少等待时间,同时保持准确性。 在下半部分(较深的层)中使用了硬振子激活函数来处理非线性问题,从而提高了准确性。

Refer to paper Searching for mobilenetv3
轻量化神经网络专题文献综述_第6张图片
轻量化神经网络专题文献综述_第7张图片

condenseNet, Huang Gao et al., 2018

denseNet is good, 但是CNN的冗余很多。 修剪一些多余的分支(无用的特征图)可以达到相似的精度,并且速度更快。

  1. 像ResNeXt,shuffleNet这样的群组转换可减少参数数量。 这里最特别的是在训练阶段的学习组转换(下图b中的1 * 1 L-conv)。 这里的置换就像shuffleNet中的shuffle操作一样,可以保持输入通道的多样性。

  2. 从训练开始起,如下图(b)所示进行权重调整,同时将conv分组在一起。 在确定了阶段2(选择组)之后,它是优化阶段。 在优化阶段,修剪不重要的功能。 第j个通道与第g个组连接,计算它们的平均权重并确定可以保留哪些连接。要衡量第j个channel的输入feature map和卷积核的第g个group之间的重要性,那么就用j和g这个group之间的所有连接(g这个group有多少个卷积核,就有多少个连接)的权重的平均绝对值衡量重要性,本质上就是求权值的L1范数.

  3. on cifar-10, cifar-100, ImageNet, 与许多CNN架构相比,其性能更好(更快,更准确),例如 shuffleNet-v1, mobileNet, ResNet etc.

Refer to paper Condensenet: An efficient densenet using learned group convolutions
轻量化神经网络专题文献综述_第8张图片

Xception, Chollet, Francois, 2017

基于Inception-v3,由于它使用了深度可分离卷积,因此许多研究人员将其视为轻量级网络。 如果我们不想每次都设计初始架构,只需在一个模块上均匀地使用相同的架构,网络设计就会更容易。 (这个想法在其他网络,如mobileNet中很流行。)

  1. extreme inception. 从同等的初始结构,现在仅计算部分渠道, (group = xx in pytorch).

  2. 深度可分离卷积(最初来自phd论文:Laurent Sifre,Rigid-Motion Scattering For Image Classification),大大节省了参数。 通过均匀分离特征,下图中的参数可以是m * k + 3 * 3 * k,m是特征,k是核数。
    详细信息也可以在查看mobileNet。

Refer to paper Xception: Deep Learning with Depthwise Separable Convolutions
轻量化神经网络专题文献综述_第9张图片

SqueezeNet, 2016

  1. 较小的神经网络具有许多优点:例如,在分布式培训期间,需要较少的跨服务器通信; 需要更少的带宽将新模型从云导出到自动驾驶汽车; 在内存有限的FPGA和其他硬件上进行部署更可行。 SqueezeNet通过减少50倍的参数在ImageNet上达到AlexNet级别的准确性。

  2. 策略:将3 * 3内核替换为1 * 1,减少3 * 3内核的输入通道。 这两种方式都试图减少参数数量。 在网络的后期进行下采样,以便卷积层具有较大的激活图,试图保持了尽可能高的精度。

  3. fire module, 第一层: squeeze, 1 * 1 kernels, 随后是 ReLU;第二层: expansion, 1 * 1 and 3 * 3 kernels together, then ReLU. 在此expansion是一块的,最后拼接

Refer to paper SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size
轻量化神经网络专题文献综述_第10张图片

你可能感兴趣的:(深度学习,轻量化网络,文献回顾,计算机视觉,人工智能,神经网络)