【深度学习】轻量级神经网络设计思路

【深度学习】轻量级神经网络设计思路

0. 前言

随着深度学习技术在各个领域获得了表现出极大的潜力,但大部分神经网络模型的计算复杂度都使其无法在计算资源受限的情况下(如移动端设备)得到很好的应用,于是,神经网络的轻量化备受关注。那么如何将神经网络模型设计得小型化、轻量化呢?部分研究成果为我们打开了思路,也一定程度上促成了AI技术的推广和落地。

1. 轻量级神经网络设计

轻量级神经网络设计的主要思路:

  • 有限的计算复杂度下实现尽可能高的模型表达能力

    模型表达能力一定程度上同通道数相关,换言之,就是要不过分减少通道数的情况下,降低模型计算成本。

    1. 深度可分离卷积

      更详细可参考【深度学习】轻量级神经网络之MobileNet

      MobileNet便是基于这种思路实现的,如1-1为MobileNet的深度可分离卷积,其通过将普通卷积拆分为一个depthwise convolution和一个1*1的卷积pointwise convolution操作,实现了模型通道数不降低的情况下,参数量和计算量都降低到原先的 1 / N + 1 / k 2 1/N+1/k^2 1/N+1/k2 (K=3的情况下,参数量和计算量都降低到原先的 1 / 8 + 1 / 9 1/8+1/9 1/8+1/9 之间)
      在这里插入图片描述

      图1-1 深度可分离卷积
    2. 通道的稀疏连接

      通道的稀疏连接的主要目的是降低网络节点(神经元)之间的连通性不降低网络的宽度。典型案例如Google出品的Xception模型,下面为经典Inception模块到等价的简化版Inception模块的演变,就是Xception结构的核心结构分组卷积的原理。

      在这里插入图片描述在这里插入图片描述在这里插入图片描述
      经典Inception模块简化的Inception模块等价的简化版Inception模块

      但是上述结构是存在一定问题的,那就是各个分组之间缺少信息交流

      所以旷视提出了通道重排(Channel Shuffle)来解决这个问题,并提出了ShuffleNet论文链接。图1-2所示为ShuffleNet的Channel Shuffle的示意图。

      channel shuffle的思想可以看下面的Figure 1。这就要先从group操作说起,一般卷积操作中比如输入feature map的数量是N,该卷积层的filter数量是M,那么M个filter中的每一个filter都要和N个feature map的某个区域做卷积,然后相加作为一个卷积的结果。假设你引入group操作,设group为g,那么N个输入feature map就被分成g个group,M个filter就被分成g个group,然后在做卷积操作的时候,第一个group的M/g个filter中的每一个都和第一个group的N/g个输入feature map做卷积得到结果,第二个group同理,直到最后一个group,如Figure1(a)。不同的颜色代表不同的group,图中有三个group。这种操作可以大大减少计算量,因为你每个filter不再是和输入的全部feature map做卷积,而是和一个group的feature map做卷积。但是如果多个group操作叠加在一起,如Figure1(a)的两个卷积层都有group操作,显然就会产生边界效应,什么意思呢?就是某个输出channel仅仅来自输入channel的一小部分。这样肯定是不行的的,学出来的特征会非常局限。于是就有了channel shuffle来解决这个问题,先看Figure1(b),在进行GConv2之前,对其输入feature map做一个分配,也就是每个group分成几个subgroup,然后将不同group的subgroup作为GConv2的一个group的输入,使得GConv2的每一个group都能卷积输入的所有group的feature map,这和Figure1(c)的channel shuffle的思想是一样的。
      ————————————————
      原文链接:https://blog.csdn.net/u014380165/article/details/75137111

      在这里插入图片描述

      图1-2 channel shuffle
      ShuffleNet的其他设计要点:类似ResNet的结构单元、“快速”降采样。

      在这里插入图片描述

      图1-3 ShuffleNet结构
      ShuffleNet准确度大幅超过MobileNet v1,可在移动端高效执行。但分组卷积执行低效,尤其在GPU上。

其他深度学习相关文章

【深度学习】轻量级神经网络之MobileNet
【深度学习】Transformer原理篇——浓缩的精华
【深度学习】Softmax和交叉熵损失是什么?香农信息量、熵、交叉熵又是什么?
【深度学习】Focal Loss
【深度学习】关于负梯度方向,函数值下降最大的思考
【深度学习】模型压缩——量化

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值