Life sucks, but you're gonna love it.

0%

论文阅读 | MobileNets - Efficient Convolutional Neural Networks for Mobile Vision Applications

摘要

这篇文章介绍了一个新的网络MobileNet,可用在移动设备的视觉应用中。MobileNet是基于深度可分离卷积建立的。同时介绍了两个可以在准确性和运算复杂度进行衡量的超参。超参可以针对不同的问题选择一个最优的模型。这篇文章展示在不同任务上的不同实验。

【这篇文章提出了新的网络结构,将标准卷积结构替换为depthwise seperable convolution,减少计算复杂度以及网络参数;引入两个超参:Width Multiplier $\alpha$ 用来缩减特征channel,Resolution Multiplier $\rho$ 用来缩减特征的大小 】

简介

从AlexNet以来,卷积神经网络在计算机视觉任务中无处不在。卷积神经网络的发展方向朝着更深度的网络能达到更高的精度方面发展,然而这种进度的提高往往会造成计算复杂度的提升。

这篇文章提出了一种高效的网络结构以及一组控制模型体量,减少运算延迟的超参。

背景介绍

  • 很多文章都集中于建立体量小的网络,比如对预训练模型进行压缩,或者是直接对小的神经网络进行训练。

本文介绍的网络在体量小的基础上同时可以保持较快的处理速度,而不是单单只集中于体量的小。

MobileNet是基于深度分离卷积建立的。深度分离卷积曾被用在Inception net中用来减少前几层的计算量。

  • Flattened 网络建立了fully factorized convolution 并且展示了extremly factorized 网络的潜力
  • Factorized 网络介绍了相似的factorized卷积,并且用到了topological connections
  • Xception网络描述了如何如何增加depthwise separable 过滤器来提升性能
  • Sueezenet 描述了用bottleneck技术来设计很小的network
  • 其他的得到小的网络的方法是shrinking, factorizing 或者压缩与训练网络。压缩的手段有很多,包括:product quantization, hashing, pruning, vector quntization 还有Huffman coding.

MobileNet Architecture

这部分首先介绍MobileNet的核心部分,也就是深度分离网络,然后介绍MobileNet网络的结构和收缩网络的两个超参:width multiplier 和 resolution multiplier

深度分离卷积

MobileNet是基于深度分离卷积建立的,而深度分离卷积又是factorized Convolution的一种,是将标准的卷积转化为depthwise卷积和pointwise卷积的结合体。

深度分离卷积基本分为两部分,第一部分是depthwise卷积,也就是对输入每一层通过卷积核分别生成不同的特征,生成的特征channel数和输入的特征channel数相同;第二部分是pointwise卷积,主要是对前一步生成的特征进行线性组合。经过这两部分,我们可以得到和标准卷积形状一致的输出,但是深度分离卷积会减少很多的计算,从而达到计算加速。

  • Standard convolution

    WeChatf5411b283e22b0f15c181cc1ea40d7f9

  • Depthwise seperable convolution - Depthwise convolution

    WeChata7f050c3f0fe66e43143c47384706e19

  • Depthwise seperable convolution - Pointwise convolution

WeChat0ab7951fcc889c15987d22238ab912f2

*图片来源https://www.youtube.com/watch?v=T7o3xvJLuHk

网络结构和训练

上面提到的是深度卷积分离网络在实际应用时每一层(depthwise和pointwise)后面都要跟上一个BatchNorm和ReLu层,MobileNet的网络结构如下图所示:

WeChat4f847614cd5f6e066e0b9e2454f01c6d

仅仅定义一个简单的网络减少乘法和加法的计算量是不够的的,需要同时保证这些操作是切实可行的。打个比方来说,只有当稀疏到一定程度之后,稀疏矩阵的操作才会比普通dense矩阵操作要快。

  • 因为文章提到的模型使用了大量的 $1\times 1$ 的卷积操作,所以应用GEMM可以优化这步。【是一种矩阵操作哦!】
  • Tensorflow上训练,运用的optim是RMSprop。less regularization 和 less data augmentation因为比较小的模型不容易overfitting。
  • 没有做side heads, label smoothing, 并且通过控制图片的大小减少了图片数量
  • 在depthwise filter上添加比较少或者不添加weight decay

Width Multiplier: Thinner Models

即使之前说到的MobileNet已经很小,并且反应速度比较快了,对于某种特定的情况或者应用,可能需要更快更小的模型。为了让模型适应这些情况,我们引入了简单的参数 $\alpha$ 称为 width multiplier.

$\alpha$ 其实就是为了构建reduced的MobileNet,输入的channel减小 $\alpha$ 倍,输出的channel也减小 $\alpha$ 倍。

Resolution Multiplier: Reduced Representation

第二个用来降低计算复杂度的超参是 $\rho$, 应用在输入图片或者中间的特征层的 $\rho$ 值是相同的。

【这部分其实就是在说引入两个参数来reduce已经改变成深度分离卷积的标准(或者baseline)MobileNet。第一个参数 $\alpha$ 是用来缩减传递过程中每一层的特征的channel数量,第二个 $\rho$ 是用来缩减传递过程中每一层的特征的大小(h x w)。这样的话,对于一层形状为[h, w, C] 的特征,用这两个缩减的参数,都可以做到缩减网络的目的。】

实验

  • 对比标准卷积核深度分离卷积
  • 两个超参对MobileNet的精度和速度之间的trade-off