Advertisement

efficientnet rethinking model scaling for convolutional neural networks(ConvNets)论文阅读

阅读量:

论文地址: https://arxiv.org/pdf/1905.11946.pdf

官方资源中的TensorFlow项目提供了该代码库。经过第三方实现的PyTorch版本。

TensorFlow:EfficientNet: 基于MobileNet v2设计的高效移动卷积神经网络模型用于移动视觉应用

Keras库的位置及名称为[qubvel/efficientnet];其连接地址为https://github.com/qubvel/efficientnet,该资源用于实现高效卷积神经网络架构

参考:https://www.jianshu.com/p/2ac06d97a830

这篇ICML 2019会议论文对现有分类网络优化方案提出了更为广泛的思路。在现有提升模型精度的技术中,主要采用的方式包括 widening the network、deepening the network以及increasing input resolution等策略;例如,在这一系列方法中可以看到从 ResNet-18 到 ResNet-152 的升级过程正是通过拓展网络深度这一策略实现性能提升。

该作者摒弃了前人对放缩模型的传统认知,并从宏观视角审视这些缩放维度。他提出,在这一认识基础上认为这三个维度间存在相互作用,并找到了最优组合以构建新的网络架构——EfficientNet。其表现随后得以展示。

问题抽象

为了解决这一问题,请将其以公式形式表示出来。其中涉及大量符号,但相对容易理解。我们将其整个卷积网络定义为N,在此基础之上每个第i个卷积层对应于以下函数映射:

Y_i=F_i
Y_i

为输出张量,

X_i

为输入张量,设其维度为

<H_i,W_i,C_i>

由于在描述网络结构时会忽略批次维度

在实际应用中,人们通常将具有相同架构的连续卷积层归为一个'阶段'。例如,在ResNet网络中总共划分了5个阶段,并且每个阶段内部的卷积层架构一致(除了初始的一层具有下采样功能)。这种以阶段划分的方法使得卷积网络N的构建过程得以系统化表示:

其中,下标i(从1到s)表示stage的序号,

F_i^{L_i}

表示第i个stage,它由卷积层

F_i

重复

L_i

次构成,

<H_i,W_i,C_i>

表示该stage输入tensor的维度.

为了缩减搜索范围,研究者固定了网络的整体架构,仅调整前述三个缩放参数:Li代表网络深度,Ci代表网络宽度,H_i和W_i代表输入分辨率大小.尽管如此,即便仅调节这三类缩放参数,其覆盖范围依然十分广袤.因此作者进一步设置了约束条件——即只能在基础架构(此处特指EfficientNet-B0)上乘以常数比例因子.这样一来我们便聚焦于优化这些比例因子即可.最终所得模型可表示为以下形式:

其中,w,d,r 分别是网络宽度,网络深度,分辨率的倍率.

该方法通过整合三者构建了Compound Model Scaling算法。研究者们综合提升了网络宽度、网络深度以及图像分辨率以实现性能的显著提升,在保持分类精度的前提下大幅降低了模型参数数量与运算开销。随后,在目标检测领域中提出了EfficientDet算法。这种新架构不仅继承了传统自上而下与自下而上的FPN优势,并在此基础上提出了一种比传统自上而下与自下而上的FPN架构更加高效的一体化特征金字塔网络(BiFPN)结构。

model scalings是什么?

首先,请通过图来了解"模型缩放"的概念。作者主要将当前分类任务中的"模型缩放"方法归纳为三种类型:宽度增加、深度增强以及分辨率提升。这些方法分别对应于图中的选项b、c和d这三个维度则各自从不同的角度实现了模型缩放效果。举个例子来说,在ResNet架构中进行深度方向上的模型缩放处理后,则会生成如ResNet50和ResNet101等不同深度版本的模型结构。然而本文的重点则在于综合考虑这三个维度的方法进行优化设计

首先的问题是:单个维度进行scaling会面临哪些挑战?针对这一问题,作者进行了图3的实验。即对同一分类网络的三个维度——宽度、深度和分辨率——分别进行了模型缩放的效果比较。显然,在单独优化这三个维度时都能显著提升模型性能。然而这种提升的效果也存在明显的上限,在测试集准确率达到80%左右后几乎不再有显著提升。

如果从现有研究的角度来看,在多维度结合实施scaling时效果如何?针对这一问题的研究者进行了图4这一实验探究。等同于人工设定三个维度的model scaling参数中起作用的方式与机制。其中蓝色线条展示的是仅调整网络宽度时的结果(每个点代表不同宽度下的网络结构),因此,在各条线上对应位置上的点代表相同宽度下的配置。可以看到,在人工设定三个维度的.scaling参数能够显著提升模型性能(达到80以上),这充分证明了多维策略的有效性

那么接下来的问题是如何确定最优的三个维度上的scaling参数?这正是本文所提出的compound model scaling算法旨在解决的核心问题。

值得注意的是,EfficientNet-B0是通过MnasNet方法被发现出来的。以此作为基准点,在综合考虑深度、宽度以及分辨率方面表现出色,并且显著优于ResNet或MobileNetV2!由此可见,强化学习搜索得到的网络架构潜力可能更高!可以看到EfficientNet-B0的网络结构,则会发现与其相比存在若干明显差异(如上图所示):

第1处区别在于最初未采用最大池化层而改用stride为2的卷积层。推测其目的是为了尽量减少信息损失,并且强调了在模型初期提取基础特征的重要性

第二个主要区别是采样后信道数量下降, 这个现象让我难以理解其原因。

第三处区别在于许多阶段采用了5\times 5大小的卷积操作。这是因为深度可分离卷积采用的方式相较于使用两个3\times 3卷积而言,在计算复杂度上更为高效。有人指出大尺寸核足以满足需求。

第四个区别在于降采样后特征图的空间维度减半;然而通道数并未达到翻倍的程度。另一方面,在第六个阶段后特征图的空间维度未发生变化;然而通道数却有所增加。这些问题往往难以被解决。这通常发生在MnasNet等架构搜索算法中;意味着在架构搜索过程中所得到的模型架构本身就带有剪枝特性。这种现象往往出现在剪枝后的模型中;同时这一特性也带来了另一个优点:即所得到的结果往往能够达到更高的性能水平。

全部评论 (0)

还没有任何评论哟~