zoukankan      html  css  js  c++  java
  • 【RegNet】2020-CVPR-Designing Network Design Spaces-论文阅读

    Designing Network Design Spaces

    2020-CVPR-Designing Network Design Spaces

    来源:ChenBong 博客园

    介绍

    本文运用统计学的角度,手动从大到小逐渐约束模型的设计空间,从而找到一个好的模型设计空间。


    动机

    为什么有了这么多好的NAS算法,还需要精心手动设计搜索空间呢?

    因为目前的NAS算法大多都是 focus 在 “个体估计” 层面。即 在一个搜索空间里,每次采样和评估都是以个体为单位,最终目的是找到一个或几个最好的结构。

    这就带来了几个问题:

    1. 搜索空间先验性太强。 网络结构搜索应该由2部分内容,即搜索空间的设计和空间内搜索算法。现有的NAS paper主要是在搜索算法上的探索,而对搜索结果影响很大的搜索空间往往直接提供一个定义好空间,也不说明为什么采样这样的搜索空间。不同的搜索空间的设计有很强的先验性,即在好的搜索空间随机搜索也能找到不错的模型。
    2. 搜索算法与搜索空间的耦合。不同的文章采用不同搜索空间,无法直接比较不同搜索算法的好坏;“搜索空间”和“搜索算法”2个变量都在改变,公平的方式是控制变量法:1)在相同的搜索空间上,使用不同的搜索算法,比较不同搜索算法的优劣;2)在不同的搜索空间上,都采用随机搜索算法,比较不同搜索空间的优劣
    3. 可解释性不足。搜索过程类似一个黑盒过程,我们无法知道搜索的前进方向,也就无法解释为什么找到的结构能够提高模型表现。
    4. 可迁移性 / 泛化能力不足。即我们只能通过观察最后搜索到的个体的结构,来猜测什么样的结构是好的结构,无法明确知道搜索到的某个结构是否是对当前任务的“过拟合”(只适用于当前任务),还是普适性的(可以推广到其他任务/不同平台上的)。

    创新点

    而本文的方法是 focus 在 “群体估计” 层面,即我们不是希望找到一个最好的模型个体,而是希望找到表现很好的 模型群体。通过逐步设计模型的“搜索空间”,希望逐渐提高搜索空间内“优质模型”的浓度。

    针对以上几个问题,本文分别通过以下方式解决:

    1. 搜索空间先验性太强:不引入关于搜索空间空间设计的先验知识,从一个几乎没有约束的搜索空间出发,根据实验结果逐步缩小搜索空间。
    2. 搜索算法与搜索空间的耦合:本文focus在 搜索空间的设计,因此为了排除搜索算法的影响,不使用任何先进的搜索算法,对不同的搜索空间都使用随机搜索。即控制变量法:在不同的搜索空间上,都采用随机搜索,比较不同搜索空间的优劣。
    3. 可解释性不足:从一个几乎没有任何约束的搜索空间出发,通过严格的控制变量,每次实验只改变单一的变量,探究该变量对搜索空间质量(优质模型的浓度)的影响;这样我们可以清楚地看到每次模型空间的进化方向,为模型设计提供了一定的可解释性。
    4. 可迁移性 / 泛化能力不足:通过在最优的RegNet空间上进行不同flops,不同epochs,不同stage,不同block types的实验,证明RegNet的泛化能力。

    方法

    3 Design Space Design

    模型的设计空间是一个巨大的,可能是无穷的模型群体空间。那么如何评价不同的模型空间呢,我们根据统计学的思想,通过在某个模型空间内抽样,得到模型性能分布,作为评估该空间好坏的标准。

    在该部分中,我们从一个初始化的无限制的空间开始,逐步添加限制条件,设计简化后的搜索空间。

    在我们设计过程的每个步骤中,输入是初始空间,输出是简化后的空间。每个步骤的目的是为了探究不同的设计原则能否得到更简单的,质量更好的模型空间。


    3.1 Tools for Design Space Design

    如何评价不同模型空间的好坏?我们提出了一种量化模型空间质量的方法:通过在空间内随机抽样出不同的模型,并通过这些模型的 性能分布(error distribution) 来刻画该空间的质量。这样做的动机是对比不同空间样本的性能分布,比对比不同空间内搜索到的最佳模型的性能,更鲁棒,前者更能代表一个空间的质量。

    为了得到一个空间内模型的性能分布,我们在该空间中抽样并训练n个模型,为了提高效率,我们只抽样大小为400MF(即400M FLOPs)的模型样本,每个样本在ImageNet数据集上训练10个epochs。

    作者这里假设,由于抽样大量的样本,每个样本训练10个epoch的后的群体性能足以刻画该空间的质量。

    我们刻画模型空间性能的指标是EDF(Error Distribution Function):

    [F(e)=frac{1}{n} sum_{i=1}^{n} mathbf{1}left[e_{i}<e ight] qquad (1) ]

    (F(e)) 代表所有样本中,模型的错误率小于e的的比例。(类似累积分布函数)

    image-20200823180504951

    图2(左) 为从AnyNetX空间中采样500个模型的EDF函数图形。

    对于一个训练好(10个epochs)的模型群体,我们可以画出模型特征(深度,宽度)与模型错误率的散点图:

    图2(中) 为AnyNetX空间中采样的500个模型 的深度d模型错误率err的关系

    图2(右) 为AnyNetX空间中采样的500个模型 的第4个stage的宽度(stage下一节会介绍) 与模型错误率err的关系。

    由于模型的性能(err)受到很多属性(深度,宽度,操作类型)的影响,类似一个高维的函数(err=F(depth, width, ops...)),散点图只画出了某一个属性和err的关系,可以认为是这个高维函数在某一个属性上的投影,可以帮助我们发现一些模型设计的规律

    在这些散点图中,我们采用 empirical bootstrap 来评估最优模型的可能范围。

    empirical bootstrap:是一种统计估计方法,不假设样本分布,直接通过样本的值估计真实分布的一些统计量。

    Bootstrap 的基本思想是:如果 观测样本 是从母体中随机抽取的,那么它将包含母体的全部的信息,那么我们不妨就把这个观测样本视为 “总体”。可以简单地概括为:既然样本是抽出来的,那我何不从样本中再抽样。

    Bootstrap 的基本步骤如下:

    • Step 1: 采用有放回抽样方法从原始样本中抽取一定数量的子样本。
    • Step 2: 根据抽出的样本计算想要的统计量。
    • Step 3: 重复前两步 K 次,得到 K 个统计量的估计值。
    • Step 4: 根据 K 个估计值获得统计量的分布,并计算置信区间。

    例如,我们现在想要知道 (err=F(depth)) ,最佳的depth的范围,我们可以通过如下步骤完成 empirical bootstrap:

    给定n对 ((x_i,e_i)),其中 (x_i) 表示模型的一个属性如 depth,(e_i) 表示对应的模型误差。

    1. 从这n对中随机采样25%,得到一组sample
    2. 选择这一组sample中 (e_i) 最小的一对
    3. 重复1-2步骤 (10^4) 次,一共得到 (10^4) 个样本对
    4. 计算这(10^4)对样本属性x的95%置信区间,并以中位数给出了最优可能的值。

    从图2-middle,图2-right中来看,大概意思是,统计结果表明,属性(如depth)在浅蓝色区域的模型表现比外面好,最佳值可能是在黑线附近。

    总的来说:

    1. 作者从一个设计空间中采样并训练n个模型
    2. 计算并画出决策空间的EDFs来表征设计空间的质量
    3. 使用 empirical bootstrap 来估算该设计空间不同属性的最佳取值的区间
    4. 根据可视化结果来调整设计空间

    3.2 The AnyNet Design Space

    最初始的,几乎没有任何限制的搜索空间记为 AnyNet

    AnyNet空间的基本结构:stem => body => head,如图3a。

    其中stem为3×3卷积,stride=2,输出通道(宽度)(w_0=32)body包含主要的计算量;head为池化和全连接层,输出n个类别。

    image-20200823191453242

    我们将stem和head固定,只探究body的结构变化的影响。

    body:包含分辨率逐渐下降的4个stage(这里保持stage=4不变,后面会探究stage变化的影响)如图3b。

    stage:第 (i) 个stage包含 (d_i) 个相同的block,每个block的宽度为 (w_i)

    当前的设计空间称为 (AnyNet)

    block:在大部分实验中,我们使用的block类型为:standard residual bottlenecks block with group convolution(如图4,左边stride=1,右边stride=2),记为 (X) block,(后面会探究block变化的影响)使用 (X) block的设计空间称为 (AnyNetX)

    image-20200823192421374

    (AnyNetX) 空间大小分析:

    每个模型包含4个stage,每个stage包含4个参数(block数 (d_i),block宽度 (w_i),bottleneck ratio (b_i), 和 group width (g_i)),我们将输入分辨率固定为 r=224(后面会讨论输入分辨率的影响),因此每个模型都由 (4个stage×每个stage4个参数=16个参数) 决定。

    参数取值范围:(block数 (d_i≤16),block宽度 (w_i≤1024) 且可以被8整除,bottleneck ratio (b_i∈{1,2,4}), 和 group width (g_i∈{1,2,4,8,16,32})

    参数 取值 规模
    block 的 数量 (d_i) ({1,2,3,...16}) 16
    block 的 宽度 (w_i) ({8,16,24,...1024}) 128
    block 的 bottleneck ratio (b_i) ({1,2,4}) 3
    block 的 group width (g_i) ({1,2,4,8,16,32}) 6
    FLOPs 400MF 1
    epochs 10 1
    stage数 4 1
    block类型 X 1
    分辨率 r 224 1

    因此 (AnyNetX) 空间大小为:((16×128×3×6)^4≈10^{18})

    我们不是要搜索 (AnyNetX) 这个模型空间,而是借助上面提出的方法来探索更一般的设计原则,从而提供模型设计的可解释性和调整设计空间。在这个过程中我们的目标是:

    1. 简化设计空间
    2. 提高设计空间的可解释性
    3. 提高或者保持设计空间的质量
    4. 保持设计空间的多样性

    (AnyNetX) 空间的基本统计信息如图2:

    image-20200823180504951
    AnyNet(X_A)

    为了进一步在 (AnyNetX) 上探究,我们将上面的 (AnyNetX) 空间(即原始的 (AnyNetX) 空间记为 (AnyNetX_A)

    参数 取值 规模 空间
    第i个stage block 的 bottleneck ratio (b_i) ({1,2,4}) 3
    第i个stage block 的 group width (g_i) ({1,2,4,8,16,32}) 6
    第i个stage block 的 宽度 (w_i) ({8,16,24,...1024}) 128
    第i个stage block 的 数量 (d_i) ({1,2,3,...16}) 16
    FLOPs 400MF 1
    epochs 10 1
    stage数 4 1
    block类型 X 1
    分辨率 r 224 1

    AnyNet(X_B)

    (AnyNetX_A) 设计空间中的所有的stage i 都采用同一个bottleneck ratio (b_i)=b,得到新的设计空间为 (AnyNetX_B)

    参数 取值 规模 空间
    第i个stage block 的 bottleneck ratio (b_i) ({1,2,4}=>{b}) 3 => 1 AnyNet(X_B)
    第i个stage block 的 group width (g_i) ({1,2,4,8,16,32}) 6
    第i个stage block 的 宽度 (w_i) ({8,16,24,...1024}) 128
    第i个stage block 的 数量 (d_i) ({1,2,3,...16}) 16
    FLOPs 400MF 1
    epochs 10 1
    stage数 4 1
    block类型 X 1
    分辨率 r 224 1

    (AnyNetX_B) 的统计信息如图5左。可以看到两者曲线基本保持一致,也就是说当所有的stage i 都采用同一个bottleneck ratio时,网络精度并没有损失。这样处理除了简化了设计空间之外, (AnyNetX_B) 更容易分析,如图5右所示,b的95%置信区间为b≤2。

    image-20200823194355763
    AnyNet(X_C)

    (AnyNetX_B) 基础上,在进一步保持各个stage i都采用同一个group width (g_i=g),得到新的设计空间为 (AnyNetX_C) 。如图5中所示,当所有的stage i 都采用同一个group width时,网络精度并没有损失。这样就可以进一步简化设计空间(AnyNetX_C)(AnyNetX_A) 减少了6个自由度( (AnyNetX_A) 中4个stage,每个stage 都有 (g_i)(b_i) ,共8个参数; (AnyNetX_C) 中只有2个参数,减少了6个参数)。另外,作者发现当g>1时是最优的(实验没有展示出来),这部分在第4节进行详细介绍。

    参数 取值 规模 空间
    第i个stage block 的 bottleneck ratio (b_i) ({1,2,4}=>{b}) 3 => 1 AnyNet(X_B)
    第i个stage block 的 group width (g_i) ({1,2,4,8,16,32}=>{g}) 6 => 1 AnyNet(X_C)
    第i个stage block 的 宽度 (w_i) ({8,16,24,...1024}) 128
    第i个stage block 的 数量 (d_i) ({1,2,3,...16}) 16
    FLOPs 400MF 1
    epochs 10 1
    stage数 4 1
    block类型 X 1
    分辨率 r 224 1

    接着作者对 (AnyNetX_C) 中的最好的结构(图6上)和最差的结构(图6下)进行了分析。图中,横坐标是block id,而纵坐标是block的宽度(w)。例如下面第一幅图就表示,第一个stage有一个block,宽度为48;第二个stage有2个block,宽度为80;以此类推。

    image-20200823195338939

    从图6中可以发现好的网络都有一个共同的属性,网络的宽度逐渐增加,也就是说(w_{i+1}≥w_i),我们添加该约束,


    AnyNet(X_D)

    添加约束(w_{i+1}≥w_i) ,有该约束的设计空间称为 (AnyNetX_D) 。画出该空间的EDF曲线,如图7(左)所示,发现通过该原则,能够极大的提高EDF。

    参数 取值 规模 空间
    第i个stage block 的 bottleneck ratio (b_i) ({1,2,4}=>{b}) 3 => 1 AnyNet(X_B)
    第i个stage block 的 group width (g_i) ({1,2,4,8,16,32}=>{g}) 6 => 1 AnyNet(X_C)
    第i个stage block 的 宽度 (w_i) ({8,16,24,...1024} + const(w_{i+1} ≥ w_i)) 128 => (≤128) AnyNet(X_D)
    第i个stage block 的 数量 (d_i) ({1,2,3,...16}) 16
    FLOPs 400MF 1
    epochs 10 1
    stage数 4 1
    block类型 X 1
    分辨率 r 224 1
    image-20200823195648977
    AnyNet(X_E)

    通过观察更多的模型(没有画出来),作者发现对于比较好的模型,每一个stage的宽度 di 也有逐渐增加的趋势,但是最后一个stage并不需要。虽然如此,作者约束 (d_{i+1}≥d_i) 得到新的设计空间 (AnyNetX_E) ,然后画出该空间的EDF曲线,如图7(右)所示,发现通过该原则,也能提高EDF。

    参数 取值 规模 空间
    第i个stage block 的 bottleneck ratio (b_i) ({1,2,4}=>{b}) 3 => 1 AnyNet(X_B)
    第i个stage block 的 group width (g_i) ({1,2,4,8,16,32}=>{g}) 6 => 1 AnyNet(X_C)
    第i个stage block 的 宽度 (w_i) ({8,16,24,...1024} + const(w_{i+1} ≥ w_i)) 128 => (≤128) AnyNet(X_D)
    第i个stage block 的 数量 (d_i) ({1,2,3,...16} + const(d_{i+1}≥d_i)) 16 => (≤16) AnyNet(X_E)
    FLOPs 400MF 1
    epochs 10 1
    stage数 4 1
    block类型 X 1
    分辨率 r 224 1

    靠着一步步的优化,缩小设计空间,作者最终得到了大量包含优质模型且设计空间较小的 (AnyNetX_E)


    3.3 The RegNet Design Space

    为了更好的理解模型结构,从 (AnyNetX_E) 中选出最好的20个模型,然后画出来每个block id 和 block 宽度 (w_i) 的关系,如图8左上所示。

    image-20200823200357562

    虽然每个模型之间的差异巨大,但是整体上表现出来了一种 block宽度 随着 block index 上升的趋势,即当 (0≤j≤20) 时,可以用简单的线性拟合: (w_j=48⋅(j+1)) ,也就是图8左上图中的黑线(由于纵坐标是取log后的,因此在图中为曲线)。但是这种量化方式,对于每一个block j都指定了一个特定的宽度 (w_j),但是实际上模型的 (w_j) 是量化的(由于每个stage的block的 (w_j) 都是相同的,因此4个stage时, (w_j) 只有4个取值),因此应该采用阶梯函数来拟合,而不是使用线性函数。

    采用以下步骤:

    1. 先用拟合一个线性函数
    2. 量化这个线性函数,得到一个阶梯函数

    简单地说就是算出来的宽度可能是126.123之类的奇葩数字,得给它四舍五入到128这种科学的数字,同时每个stage i有很多block,得把宽度统一到某个数字。这就需要拿一个阶梯函数去近似上面的线性函数

    量化线性函数的步骤:

    线性函数: (u_j=w_0+w_a cdot j quad for quad 0≤j<d qquad (2)) ,j是blcok id,(u_j) 是第 j 个block 的宽度

    引入一个参数 (w_m>0) ,等式(2)可以改写为 (u_j=w_0 cdot w_m^{s_j} qquad (3)) 的形式,其中 (s_j) 是根据(2)计算出来的,(2)(3)表达的是同一条直线

    量化:将(3)中的 (s_j) 四舍五入,即可得到一个阶梯函数,实际量化中,限制 (w_0>0, w_a >0)

    img2020-09-05

    (AnyNetX)空间验证,能否用这种方法拟合实际的模型样本。也就是说,给定一个模型空间,根据模型样本数据来拟合一个阶梯函数(即搜索一组超参,(w_0,w_a,w_m)),使得使用该拟合函数预测出的模型和实际给定的模型每一个block宽度之间的差异最小。该差异用 (e_{fit}) 表示。(AnyNetX_D)(AnyNetX_E) 中的性能最好的2个模型如图8(上-中右)所示。可以看到量化后的函数(虚线)和这些模型(实线)拟合的很好,且 (AnyNetX_E) 中最佳模型的拟合效果最好。

    image-20200823200357562

    接下来,我们画出拟合误差 (e_{fit}) 关于(AnyNetX_C)(AnyNetX_E) 中模型的曲线如图8(下)所示。

    • 首先,观察到设计空间中最好的模型都有很好的拟合度。通过empirical bootstrap方法发现, (e_{fit}) 值接近零的一个窄带,可能包含每个设计空间中的最佳模型。
    • 然后,可以发现从 (AnyNetX_C)(AnyNetX_E)(e_{fit}) 越来越小(越来越容易拟合)。

    为了进一步测试这种线性参数化的方法,基于 (AnyNetX_E) 限制 (d<64,w_0,w_a<256)(1.5≤w_m≤3),b和g与之前介绍的方式相同,在这个范围内采样,利用公式(2)-(4)得到具体的网络结构。

    RegNetX

    称有这种限制的空间为RegNetX( (AnyNetX_E) 加上3个拟合参数的限制)

    image-20200823202044613

    (RegNetX) 的EDF如图9(左)所示,可以看到RegNetX中的模型的平均误差比 (AnyNetX_E) 小,说明 (RegNetX) 中的模型都是比较优秀的模型。

    从图9(中)作者进一步的对参数进行了限制,具体而言:

    1. 使用(w_m)=2(也就是stage之间的block宽度翻倍)轻微的提高了EDF,但是(w_m)≥2表现更好(后面展示)。
    2. 测试了 (w_0) = (w_a) ,进一步简化线性参数化方程为$ u_j= w_a ⋅(j+1)$。这样效果也变得更好了。

    但是为了维持模型的重要性,作者并没有采样这两种限制。图9(右)展示了随机搜索的效率,发现RegNetX搜索大约随机采样32个模型就有可能产生好的模型。


    表1展示了决策空间尺寸的摘要。从原始的 (AnyNetX) 设计空间到 (RegNet) 设计空间,作者将自由维度从16缩小到了6,空间缩小了约10个数量级。然而 (RegNet) 仍然包含了设计空间的多样性。

    image-20200823202150207


    3.4 Design Space Generalization

    我们设计的 (RegNet) 设计空间是在low-compute, low-epoch的训练模式下进行的,只有一种block 类型。然而,我们的目标不是为单一设置设计一个设计空间,而是发现可以推广到新设置的网络设计的一般原则。

    参数 取值 规模 空间
    第i个stage block 的 bottleneck ratio (b_i) ({1,2,4}=>{b}) 3 => 1 AnyNet(X_B)
    第i个stage block 的 group width (g_i) ({1,2,4,8,16,32}=>{g}) 6 => 1 AnyNet(X_C)
    第i个stage block 的 宽度 (w_i) ({8,16,24,...1024} + const(w_{i+1} ≥ w_i)) 128 => (≤128) AnyNet(X_D)
    第i个stage block 的 数量 (d_i) ({1,2,3,...16} + const(d_{i+1}≥d_i)) 16 => (≤16) AnyNet(X_E)
    FLOPs 400MF => 800MF /
    epochs 10 => 50 /
    stage数 4 => 5 /
    block类型 X /
    分辨率 r 224 /

    在图10,我们在higher flops, higher epochs, 5个stage, 不同种类的block类型(附录中详细说明)下比较了 (AnyNetX_A)(AnyNetX_E)(RegNetX) 设计空间。在各种模型空间下,都有(RegNetX>AnyNetX_E>AnyNetX_A)。换句话说,我们在特定限制下(400MF,10 epochs,4 stages)下发现的规则,在更大的搜索空间下同样有效,并不是特定限制的过拟合,说明这些规则具有一定的泛化能力。

    image-20200823202220427

    图10(下) 的不同blcok type(X、V、R、VR):

    image-20200905191210899


    4. Analyzing the RegNetX Design Space

    接下来进一步分析 (RegNetX) 设计空间,重新探讨深度网络设计的一些通用规则。 (RegNetX) 设计空间有大量的优秀模型,接下来的实验我们改为采样更少的模型(100)个,训练的epoch增多一点(25个)。这样就能观察到更加精细化的趋势。


    RegNet trends.

    图11中展示了RegNetX在不同FLOPs下各种参数的趋势。值得注意的是,通过图11(上左),发现在不同FLOPs下最优模型(黑色的线,使用empirical bootstrap得到)的depth都很稳定,大概为20个blocks(60层)。这与实际实践中,通常使用更深的模型以得到更高的性能的经验不同。通过图11(上中),发现最优模型的bottleneck ratio b=1.0。通过图11(上右),观察到最优模型的乘子(w_m)是2.5,这与实际经常采用的stage之间宽度翻倍的方式有点相似但是不完全相同。剩余的参数(g、 (w_a)(w_0) )随着复杂度的增高而增加。

    image-20200823202420463


    Complexity analysis.

    除了FLOPs和参数,作者分析了所有卷积层的输出feature map的尺寸,将其定义为activations,用于度量网络的复杂度,在图12的左上角列出了常见卷积算子的复杂性度量。虽然activations不是衡量网络复杂性的通用标准,但activations可能会严重影响内存受限硬件加速器(例如GPU、TPU)上的运行时间,在图12(上)可以看到,activations与推理时间的正相关性比FLOPs更强。在图12(下)中,观察到对于总体中最好的模型,activations随FLOPs的平方根增加,参数量随FLOPs线性增加,并且推理时间最好使用FLOPs的线性和平方根项联合建模(即图12(下右)中的式子24f+6.0⋅f),因为它同时依赖于FLOPs和activations

    image-20200823202441320


    RegNetX constrained.

    使用上述这些发现,我们可以对RegNetX设计空间进一步微调,首先基于图11(上),设置b=1,d≤40,(w_m)≥2 。然后基于图12(下),对参数量和activations进行约束。这样就能产生快速的、低参数量的、low-memory且不影响精度的模型。在图13中,我们对比了 (RegNetX) 有这些约束-C没有这些约束-U下的表现,可以发现在所有FLOPs下,有约束的性能比没有约束的更好。因此在下面的实验结果小节都使用有约束的版本,然后更进一步的限制网络深度12≤d≤28(在附录D中有解释)。

    image-20200823202511224


    Alternate design choices.

    mobile network经常采用 inverted bottleneck (b < 1)depthwise conv。在图14(左),观察到相对于b=1,g≥1,inverted bottleneck (b<1) 轻微的降低了EDFdepthwise conv(group width (g_i=1) )表现更加差劲

    image-20200823202554550

    参数 取值 规模 空间
    第i个stage block 的 bottleneck ratio (b_i) ({1,2,4}=>{b}) 3 => 1 AnyNet(X_B)
    第i个stage block 的 group width (g_i) ({1,2,4,8,16,32}=>{g}) 6 => 1 AnyNet(X_C)
    第i个stage block 的 宽度 (w_i) ({8,16,24,...1024} + const(w_{i+1} ≥ w_i)) 128 => (≤128) AnyNet(X_D)
    第i个stage block 的 数量 (d_i) ({1,2,3,...16} + const(d_{i+1}≥d_i)) 16 => (≤16) AnyNet(X_E)
    FLOPs 400MF => 800MF /
    epochs 10 => 50 /
    stage数 4 => 5 /
    block类型 X /
    分辨率 r 224 => {≤448} /

    接下来,作者测试了在不同输入图像分辨率对网络的影响,如图14(中)所示,与一般的结论相反,即使在更高的FLOPs,将RegNetX的分辨率固定为224×224表现更好。


    SE.

    最后,作者将block X和Squeeze-and-Excitation (SE)模块进行结合,得到了新的设计空间 (RegNetY) 。在图14(右),发现 (RegNetY) 性能提升比较明显。

    Squeeze-and-Excitation Networks(SENet)是由自动驾驶公司Momenta在2017年公布的一种全新的图像识别结构,它通过对特征通道间的相关性进行建模,把重要的特征进行强化来提升准确率。这个结构是2017 ILSVR竞赛的冠军,top5的错误率达到了2.251%,比2016年的第一名还要低25%,可谓提升巨大。

    作者将 (RegNetX)(RegNetY) 中的最优模型和目前State-of-the-art模型在各种FLOPs下进行对比。对于每一个FLOPs,作者从设计空间中选取最优模型,然后重新训练100个Epoch。在不同FLOPs下,RegNetX和RegNetY中的最优模型的参数与性能在图15和16中给出。

    除了在上面第4章分析出的结论外,作者还发现了如下结论:

    1. 更高FLOPs的模型在stage 3中有更多的blocks,但是在stage4有更少的blocks,这和标准的ReNet网络设计相似。
    2. group width随着 g 的模型复杂度的提高而增加,但是 depth d 会饱和。

    image-20200823202632112

    image-20200823202650734


    实验

    5 Comparison to Existing Networks

    5.1 State-of-the-Art Comparison: Mobile Regime

    对于移动端,更加关注在600MF下模型的表现,作者比较了600MF (RegNetX/Y) 模型和现有的mobile网络。发现不管是人工设计的网络还是NAS搜索出的网络, (RegNetX/Y) 模型性能都更好。

    image-20200823202719245


    5.2 Standard Baselines Comparison: ResNe(X)t

    作者将RegNet网络和标准的ResNet、ResNext网络进行对比。对比结果在图17和表3中给出。

    可以发现只通过优化网络结构,RegNet可以取得巨大的提升。表3(a)在相近的activations下进行比较,表3(b)在相近的flops/params下进行比较,可以看出 (RegNetX) 模型性能都很好。

    image-20200905195754032


    5.3 State-of-the-Art Comparison: Full Regime

    作者将 (EfficientNet)(RegNetX)(RegNetY) 进行比较,并控制两者在训练过程中参数一致,结果在图18和表4中给出。

    从图18(左) 可以看出,在较低FLOPs下,EfficientNet表现比较好,但是在中等FLOPs下,RegNetY表现比EfficientNet好在较高FLOPs下,RegNetX和RegNetY表现都比EfficientNet好

    还可以观察到,EfficientNet的activations随着FLOPs线性增长,而RegNet的activations随FLOPs的平方根增长。这导致了EfficientNet的GPU训练速度和推理速度较慢,例如RegNetX-8GF比EfficientNet的推理时间快了5倍,同时错误率更低。

    image-20200905195639918

    image-20200905195650879

    表4中的 orig

    image-20200905195425926


    5.4 Additional Ablations

    Fixed depth.

    Fewer stages.

    **Inverted Bottleneck. **

    image-20200905200418645


    Swish vs. ReLU

    最近的很多工作使用了swish激活函数,在图20中,作者对比了RegNetY在Swish and ReLU不同激励函数下的性能

    图20(左中)可以看出swish激励函数在低FLOPs下表现更好,而ReLU激励函数在高FLOPs下表现更好。

    图20(右)可以看出,如果g被约束到g=1(depthwise conv),那么swish函数比relu函数表现更好,也就是说swish函数和depthwise conv更加搭配。

    image-20200905200600025


    总结

    a、共享bottleneck ratio对效果无影响,(AnyNet X_A => AnyNetX_B)

    b、共享group width对效果无影响,(AnyNetX_B=>AnyNetX_C)

    c、逐步增大网络宽度能够提升效果,(AnyNetX_C=>AnyNetX_D)

    d、逐步增大网络深度能够提升效果,(AnyNetX_D=>AnyNetX_E)

    用线性函数来拟合block id与block宽度的关系

    量化线性函数,添加量化参数约束,得到RegNet

    参数 取值 规模 空间
    第i个stage block 的 bottleneck ratio (b_i) ({1,2,4}=>{b}) 3 => 1 =>AnyNet(X_B)
    第i个stage block 的 group width (g_i) ({1,2,4,8,16,32}=>{g}) 6 => 1 =>AnyNet(X_C)
    第i个stage block 的 宽度 (w_i) ({8,16,24,...1024} + const(w_{i+1} ≥ w_i)) 128 => (≤128) =>AnyNet(X_D)
    第i个stage block 的 数量 (d_i) ({1,2,3,...16} + const(d_{i+1}≥d_i)) 16 => (≤16) =>AnyNet(X_E)
    FLOPs 400MF => 800MF /
    epochs 10 => 50 /
    stage数 4 => 5 /
    block类型 X /
    分辨率 r 224 => {≤448} /

    • 可解释性,步步递进,逐步细化子空间
    • 泛化能力强,不人为引入先验知识,都是通过实验来发现规律
    • 统计的方法
    • 实验丰富

    Refer

    Designing Network Design Spaces

    【前沿】如何评价何恺明团队的最新工作RegNet?

    【机器学习】Bootstrap详解

    Stata:Bootstrap 简介

  • 相关阅读:
    delphi Base64
    delphi 注册表
    二、Spring Boot项目的三种启动方式
    Junit的运行流程以及Junit常用注解
    eclips集成单元测试
    六、AcriveMQ集群配置的三种方式,以及组合实现
    五、Sping 中实现简单实现activeMQ
    三、简单实现activeMQ发送消息
    二、安装ActiveMQ消息中间件
    一、消息中间件基础
  • 原文地址:https://www.cnblogs.com/chenbong/p/13619545.html
Copyright © 2011-2022 走看看