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

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

https://github.com/senbinyu/Computer_Vision_Literatures

1. 综述文献推荐

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
在这里插入图片描述

  • 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
在这里插入图片描述

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
在这里插入图片描述

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
在这里插入图片描述

  • 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
在这里插入图片描述

  • 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
在这里插入图片描述
在这里插入图片描述

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
在这里插入图片描述

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
在这里插入图片描述

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
在这里插入图片描述

  • 2
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值