MobileNetV2: Inverted Residuals and Linear Bottlenecks

摘要

本文提出了一种新的移动架构,MobileNetV2,它提升了移动模型在在多个任务中的,以及在多个模型尺寸范围上的state-of-art表现。作者还提出了在一种新的框架SSDLite上将该模型高效应用于目标检测上的方法。除此之外,作者还展示了一种通过DeepLabv3的简化形式构建移动语义分割模型的方法,称之为Mobile DeepLabv3。

它是基于逆转残差结构的,它的shortcut connection处在细的瓶颈层间。中间的扩充层使用lightweight深度卷积来作为非线性资源的来源。除此之外,我们发现在狭窄层为了保持表征能力而去除非线性是非常重要的。作者证明了这会提升表现能力,且能提供提出这种设计的直觉。

最后,该方法允许输入/输出域与转换的表达的分离,这为更进一步的分析提供了方便的框架。

介绍

神经网络已经革命了许多机器智能的领域,在有挑战性的图像识别任务中取得了超人的准确率。然而,对准确率的提升的追求往往会带来一个代价:现代的state-of-art的神经网络需要的过高的计算资源超过了许多移动设备和嵌入式应用的能力。

本文介绍了一种新的神经网络结构,它为移动和资源受限制的环境而特别定制。它通过在明显地降低操作数的同时保持相同的准确率来推进了专为移动环境设计的计算机视觉模型的state-of-art标准。

作者的主要贡献是一种新的层模块:有着线性瓶颈层的翻转残差模块。该模块将低维度的压缩特征作为输入,并首先将其扩展到高维上,并使用一个轻量级的深度卷积来过滤。特征随后被投影到一个有着线性卷积的低维特征上。

该模型可在任何现代框架中使用标准操作来高效地实现。

相关工作

过去数年,调整神经网络架构来在准确率和表现之间找到最好的平衡已成为一个研究热点。很多组已经提出了通过手动地进行体系结构搜索和对训练算法提升的方法。近来已经在算法架构探索中有了很大的提升,如超参数优化,很多网络剪枝的方法以及链接性学习。很多工作致力于改变内部卷积块间的连接性结构,或引入稀缺性或其他东西。

近来,一个新的方向是将基因算法和增强学习这些优化算法引入架构搜索中。然而,一个问题是,这将会使得神经网络过于复杂。本文试图达到获得更好的关于神经网络如何执行的直觉,并使用该直觉来引导可能最简单的网络设计。

预备知识、讨论和直觉

  1. 深度可分离卷积

    深度可分离卷积是许多高效的神经网络架构的关键模块。其主要思想是使用一个分解的卷积操作来代替完整的卷积操作,来将卷积分离为两个分离的层。第一层被称为depthwise卷积,它通过对每个输入通道应用一个简单的卷积核来执行一个轻量的卷积。第二层是一个1x1的卷积,称之为pointwise卷积,它通过对输入层经过depthwise卷积后的结果的不同层进行线性组合来获得新的特征。

    标准卷积将hi x wi x di的输入张量Li作为输入张量,并用dj个k x k x di的卷积核来产生hi x wi dj的输出张量Lj。标准的卷积层的计算消耗为hi x wi x di x dj x k x k。

    深度可分离卷积是一个对标准卷积层的简单代替。经验表明它和传统的卷积效果几乎相同,但仅消耗:hi x wi x di x (k2 + dj)。它是depthwise和1x1pointwise卷积的和。与传统方法相比,深度可分离卷积有效地减少了大概k平方的计算要求。MobileNetV2使用k=3的深度可分离卷积,从而在准确性没有比传统卷积降低多少的情况下,降低了8到9倍的计算性能要求。

  2. 线性瓶颈

    考虑一个有着n层Li的深度神经网络,其中每一层都有一个hi x wi x di维的激活张量。本节将讨论这些激活张量的主要属性,我们将它考虑为包含hi x wi个di维像素的容器。非正式地,我们认为对输入的一系列图像,一系列层的激活(对任意层Li)规范了多种兴趣(manifold of interest)。长期以来神经网络的的多种兴趣被认为可以嵌入到低维空间中去。换句话说,当我们观察一个深度卷积网络的层的所有独立的d通道像素时,被编码到这些值的信息实际上就在一些manifold中,它可以被轮流地嵌入到低维子空间中去。

    粗粗一看的话,这种方法可以通过简单地减少一个层的维度来被捕获和探索,从而降低了操作空间的维度。遵循这一直觉,宽度乘法器方法允许我们在manifold of interest遍布整个空间前减少激活空间的维度。然而,这一直觉在我们意识到深度卷积网络实际上每个坐标转换都是非线性时,如ReLU。

    很容易看出,当一个图层的转换ReLU(Bx)有一个非零值S时,被投影到内部S的点通过输入的线性转换B获得,因此指示了部分的输入空间和输出的所有维度是有关连的,但也被线性转换所限制。换句话说,深度网络只有在非零的输出域上进行线性分类的能力。我们将为更普遍的情形提供补充的方法。

    换句话说,当ReLU使通道崩塌后,它也不可避免地损失了那个通道的信息。然而如果我们有许多通道,并有多样的激活层的结构(?),那信息可能仍能在其它通道被保存。在之后的文章里,作者证明了如果输入的manifold可被嵌入到激活层的明显低维的子空间内,随后ReLU变换在将必要的复杂性引入一系列可表达函数的同时,也保留了信息。

    做个总结,作者强调了两个属性,这两个属性表明一个需求:感兴趣流型应当处在一个更高的维度的激活空间的低维子空间上:

    1. 如果感兴趣流型在ReLU转换后保有非零值,那相当于做了一个线性变换。
    2. ReLU能够保留关于输入流型的复杂信息,但是要求这些输入流型处在输入空间的低维子空间上。

    这两个观点给了我们一个优化现有网络结构的经验式的提示:假设感兴趣流型是低维的,我们可以通过将线性bottleneck层插入卷积块来捕捉它。实验表明非线性会破坏信息。

  3. 翻转残差

    bottleneck和残差块有一定的相似性,其中每个块在几个bootlneck和expansion后保留了输入。然而,受到bottleneck实际上在保留了所有必要的信息直觉的提示,且扩展层仅仅作为伴随着张量的非线性变换的实现的细节,作者简单地将shortcut应用在bottleneck间。

  4. 信息流解释(?)

    该结构的一个有趣的属性是它提供了一个building block和图层变换在输入和输出域上的自然的分割,而后者是一个输入和输出间的非线性映射函数。前者可被是做网络每层的容量,而后者可被是做表达。这与传统的卷积块在规律和可分离方面都形成了对比,其中表现力和容量都是纠缠在一起的,且是输出层深度的函数。

    特别的,当内层深度为0时,由于shortcut connection,底层卷积是一个身份函数。当扩展比小于一时,这是一个经典的残差卷积块。然而,就作者的目的而言,扩展比大于一是最有用的。这一解释允许我们能够将网络的表现力和其容量分开研究,且对这种分离的进一步研究能够更好地研究网络属性。

发布了74 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/JachinMa/article/details/101067360