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

Abstract

在这项工作中,我们提出了一个新的网络设计范例。我们的目标是帮助提高对网络设计的理解,并发现跨领域(settings)的通用设计原则。我们不是专注于设计单个网络实例,而是设计“网络设计空间”来将网络整体进行参数化。整个过程类似于经典的网络手工设计,但是提升到了设计空间的层次。利用我们的方法,得到了一个由简单的、规则的网络组成的低维设计空间,我们称之为RegNet。RegNet参数化的核心思想非常简单:好的网络的宽度和深度可以用量化的线性函数来解释。我们分析了RegNet的设计空间,得出了与当前网络设计实践不匹配的有趣发现。RegNet设计空间提供了简单而快速的网络,这些网络可以很好地在各种各样的平台下工作。在可比较的训练设置和 flop 情况下,RegNet模型的性能优于流行的EfficientNet模型,同时在gpu上的速度比其快5倍。

1、introduction
 深卷积神经网络是视觉识别的引擎。在过去的几年中,更好的架构在许多视觉识别任务中取得了长足的进步。例如LeNet[15]、AlexNet[13]、VGG[26]和ResNet[8]。这项工作既提高了神经网络的有效性,也加深了我们对网络设计的理解。特别是,上述工作序列分别证明了卷积、网络和数据大小、深度和残差的重要性。这些工作的结果不仅是特定的网络实例,而且是可以推广并应用于许多环境的设计原则。

虽然手动网络设计带来了巨大的进步,但手动寻找优化良好的网络可能是一项挑战,特别是随着设计选择的增多。解决这一限制的一种流行方法是神经架构搜索(NAS)。给定一个网络的固定搜索空间,NAS 会自动在搜索空间内找到一个好的模型。近年来,NAS受到了广泛的关注,并取得了很好的效果[34,18,29]。

尽管NAS是有效的,但这种模式还是有局限性的。搜索的结果是根据特定环境(例如,硬件平台)调整的单个网络实例。这在某些情况下是足够的;然而,它不能使我们发现网络设计原则,加深我们的理解,并允许我们扩展到新的环境。特别地,在本文中,我们的目标是找到易于理解、构建和概括的简单模型。

在本文中,我们提出了一个新的网络设计范例,结合了人工设计和NAS的优点。我们不是专注于设计单个网络实例,而是设计参数化网络总体的设计空间。类似于手动设计,我们的目标是可解释性,并发现描述网络的一般设计原则,这些原则简单、工作良好,并能够在不同设置环境中进行泛化。与在NAS中一样,我们的目标是利用半自动化程序来帮助实现这些目标。

我们采用的一般策略是逐步设计一个比原始版本更简化的版本,同时保持或提高其质量(图1)。整个过程类似于人工设计,提升到整体水平,并通过网络设计空间的分布估计来指导[21]。

作为这个范例的试验台,我们的重点是探索网络结构(例如,宽度、深度、组等),包括重要的标准结构 VGG[26]、ResNet[8] 和 ResNeXt[31]。我们从一个相对不受约束的设计空间开始,我们称之为AnyNet(例如,宽度和深度在各个阶段自由变化),并应用我们的 human-in-the-loop(人机回旋)方法,得到一个由简单的“规则”网络组成的低维设计空间,我们称之为RegNet。RegNet设计空间的核心很简单:宽度和深度由量化的线性函数决定。与AnyNet相比,RegNet设计空间具有模型更简单、更易于解释、优秀模型更集中的特点。

2、Related work
Manual network design. AlexNet[13]的引入使网络设计进入了一个蓬勃发展的研究领域。在接下来的几年中,提出了改进的网络设计;示例包括VGG[26]、Inception[27,28]、ResNet[8]、ResNeXt[31]、DenseNet[11]和MobileNet[9,25]。这些网络背后的设计过程主要是手工的,集中在发现新的设计选择,以提高精确度,例如,使用更深的模型或残差。同样,我们的共同目标是发现新的设计原则。实际上,我们的方法类似于手动设计,但在设计空间级别执行。

Automated network design. 近年来,网络设计过程已经从人工探索转向了更自动化的网络设计,通过NAS 得到了普及。NAS已被证明是一种有效的工具,可用于查找好的模型,例如[35、23、17、20、18、29]。NAS的大部分工作集中在搜索算法上,即在一个固定的、手工设计的搜索空间(我们称之为设计空间)内有效地找到最佳的网络实例。相反,我们关注的是设计新颖设计空间的范例。两者是互补的:更好的设计空间可以提高NAS搜索算法的效率,也可以通过丰富设计空间而导致更好的模型的存在。

Network scaling. 手动和半自动网络设计通常都侧重于为特定区域寻找性能最佳的网络实例(例如,与ResNet-50相当的 flops)。由于此过程的结果是单个网络实例,因此不清楚如何使该实例适应不同的平台(例如,更少的flops)。一种常见的做法是应用网络缩放规则,例如改变网络深度[8]、宽度[32]、分辨率[9]或三者一起应用[29]。相反,我们的目标是发现跨平台的通用设计原则,并允许在任何目标平台、目标域中有效地调整最佳网络。

Comparing networks. 考虑到大量可能的网络设计空间,必须使用可靠的比较度量来指导我们的设计过程。最近,[21]的作者提出了一种比较和分析从设计空间中简化得到的网络总体的方法。这个distribution-level 视角完全符合我们寻找一般设计原则的目标。因此,我们采用这种方法,并证明它可以作为一个有用的工具,为设计空间的设计过程。

Parameterization. 我们的最终量化线性参数化与之前的工作相同,例如如何设置宽度[26,7,32,11,9]。然而,有两个关键的区别。首先,我们提供了一个实证研究来证明我们所做的设计选择是正确的。第二,我们深入了解以前不了解的结构设计选择(例如,如何设置每个阶段的块数)。

3、Design Space Design
我们的目标是为视觉识别设计更好的网络。我们研究模型的总体的特征,而不是在特定环境下设计或搜索单个最佳模型。我们的目标是发现适用于和改进整个模型总体的一般设计原则。这种设计原则可以提供对网络设计的洞察,并且更可能推广到新的设置(不像针对特定场景调整的单个模型)。

我们依赖于Radosavovic等人引入的网络设计空间概念[21]。设计空间是一个巨大的,可能是无限的,模型结构的总体。[21]的核心观点是,我们可以从一个设计空间对模型进行抽样,产生一个模型分布,然后使用经典统计的工具来分析设计空间。我们注意到这与架构搜索不同,架构搜索的目标是从空间中找到单个最佳模型。

在这项工作中,我们建议设计一个初始的、无约束的设计空间的逐步简化版本。我们把这个过程称为设计空间设计。设计空间设计类似于顺序的人工网络设计,但提升到了总体层次。具体来说,在我们设计过程的每个步骤中,输入是一个初始设计空间,输出是一个优化设计空间,每个设计步骤的目的是发现设计原则,从而产生更简单或性能更好的模型。   
                                                  

通过对模型进行采样,并检查其误差分布,即可表征设计空间的质量。比如,在上图中,从初始设计空间A开始,应用2个优化步骤来生成设计空间B,然后是C。C⊆B⊆A,可以看到,从A到B再到C,误差分布逐渐改善。也就是说,每个设计步骤的目的,都是为了发现能够产生更简单、更有效模型的设计原理。

3.1 Tools for Design Space Design

我们从设计空间的工具的开始概述。为了评估和比较设计空间,我们使用Radosavovic等人介绍的工具[21],他提议通过从设计空间采样一组模型并描述由此产生的模型误差分布来量化设计空间的质量。这种方法背后的关键是,与使用搜索(手动或自动)和比较两个设计空间中的最佳模型相比,比较分布更加可靠且信息更丰富。

经验分布函数:

为了得到模型的分布,我们从设计空间采样了n个模型并训练。为了提高效率,我们主要在低计算、低 epoch 的训练模式下进行。特别是,在本节中,我们使用 4 million flop(400MF)模式,并对每个采样的模型在ImageNet数据集 [3]上训练10个epoch。我们注意到,虽然我们训练了许多模型,但每次训练都很快:在400MF下给100个模型训练10个 epoch,与在4GF下把单个ResNet-50[8]模型训练100个epoch的时间相当。

与文献[21]一样,我们分析设计空间质量的主要工具是误差经验分布函数(EDF)。n个模型的误差EDF和误差ei由以下公式给出:

F(e) 是error 小于 eee 的模型百分比。

总结如下:

  • (1)我们从设计空间中抽样和训练n个模型,得到模型的分布;
  • (2)我们计算并绘制误差EDFs,以总结设计空间质量;
  • (3)我们可视化设计空间的各种属性,并使用经验引导获得洞察;
  • (4)我们使用这些观测结果来精细化设计空间。

3.2 The AnyNet Design Space

接下来介绍我们初始的设计空间:AnyNet设计空间。我们的重点是探索神经网络的结构,假设标准的、固定的网络块(例如,剩余瓶颈块)。

在本文术语中:

网络的结构:

block 的数目(即网络深度)
block widths(即chnnel的数目)
bottleneck ratio
group width
网络的结构决定了计算、参数和内存在整个网络计算图中的分布,是决定其准确性和效率的关键。

在我们的 AnyNet 设计空间中,网络的基本设计是简单的。

给定一个输入图像,一个网络由一个简单的 stem、执行大部分计算的网络主体和一个预测输出类的最终网络主体组成,如图3a所示。我们将 stem 和 head 保持固定并尽可能简单,而将重点放在确定网络计算和精度。

总的来说,对于每个 stage i,自由度包括 block 的数量 bi、block width w 和其他的 block 参数。虽然总体结构简单,但是AnyNet设计空间中可能的网络总数是巨大的。

我们的大多数实验使用标准的残差瓶颈块和组卷积[31],如图4所示。我们将其称为X块,并将其上构建的 AnyNet 设计空间称为 AnyNetX(我们在第3.4节中探索其他块)。虽然X块是相当初级的,但我们表明,当网络结构优化时,它可以出奇地有效。             
                              

网络基本设计很简单:主干(步幅为 2 的 3×3 卷积,32个输出通道)+ 执行大量计算的网络主体 + 预测输出类别的头(平均池化,接着完全连接层)。网络主体由一系列阶段组成,这些阶段以逐渐降低的分辨率运行。除了第一个区块(使用 2 步长卷积)以外,每个阶段都包含一系列相同的区块。

AnyNetX设计空间有16个自由度,因为每个网络由4个 stage 组成,每个 stage i有4个参数:块数di、块宽度wi、瓶颈比率 bi 和组宽度 gi。我们修正了输入分辨率r=224,除非另有说明。为了得到有效的模型,我们使用 log-uniform 采样,di≤16,wi≤1024,被8整除后得到,bi∈{1,2,4},gi∈{1,2,32}(稍后测试这些范围)。我们重复采样,直到在我们的目标复杂度范围(360MF到400MF)中获得n=500个模型,并对每个模型进行10个阶段的训练。图2显示了AnyNetX的5个基本统计数据。

AnyNetX设计空间中有16·128·3·6)4≈10^18   种可能的模型配置。与其从这些∼10^18配置中寻找单一的最佳模型,不如探索是否有通用的设计原则可以帮助我们理解和完善这个设计空间。为此,我们应用我们的设计空间的方法。在这一方法的每一步中,我们的目标是:

  • 简化设计空间的结构
  • 提高设计空间的可解释性
  • 提高或保持设计空间质量
  • 保持设计空间中的模型多样性

于是,将初始的 AnyNetX 称作 AnyNetXA,开始进行“A→B→C→D→E”的优化过程。首先,针对 AnyNetXA 设计空间的所有阶段,测试共享瓶颈率(bottleneck ratio)bi = b,将得到的设计空间成为 AnyNetXB。同样,在相同设置下,从 AnyNetXB 采样并训练 500 个模型。AnyNetXA 和  AnyNetXB 在平均情况和最佳情况下,EDF几乎不变。说明耦合 bi 时精度没有损失。并且,AnyNetXB 更易于分析。

从AnyNetXB开始,为所有阶段使用共享组宽度(shared group width),来获得 AnyNetXC。研究人员在 AnyNetXC 中检验好网络和坏网络的典型网络结构。他们发现:好网络的宽度是呈增长态势的。于是,他们加入了设计原则 wi + 1 ≥ wi,将具有此约束条件的设计空间称为 AnyNetXD。

对于最佳模型,不仅仅是阶段宽度 wi 在增加,研究人员发现,阶段深度 di 也有同样的趋势,最后一阶段除外。于是,在加入 di + 1 ≥ di 的约束条件之后,结果再一次改善。即 AnyNetXE。在对 AnyNetXE 的进一步观察中,就引出了 RegNet 的一个核心观点:好网络的宽度和深度是可以用量化的线性函数来解释的。

从 AnyNetXA 到 RegNetX,维度从16维降至6维,尺寸减小了近10个数量级。从下图中可以看出,RegNetX 中的模型相比于 AnyNetX 中的模型,平均误差更低。并且,RegNetX 的随机搜索效率要高得多,搜索约32个随机模型就能产生好的模型。

设计空间泛化

一开始,为了提高效率,研究人员以低计算量、low-epoch 的训练方式设计了 RegNet 设计空间。但是,他们的目标不是针对某一特定环境,而是发现网络设计的一般原理。于是,他们在更高的 flops、更高的 epoch 的 5 步长网络中,以及各种不同类型的区块中,比较了 RegNetX 和 AnyNetXA、AnyNetXE。

三组实验对比:

RegNet在性能上就是如此突出。与其他网络的对比:

上表就是600MF的RegNet,与这些网络比较的结果。可以看出,无论是基于手动设计还是NAS的网络,RegNe的表现都很出色。何恺明团队强调,RegNet模型使用基本的100 epoch调度(schedule),除了权重衰减外,没有使用任何正则化。而大多数移动网络使用更长的调度,并进行了各种增强,例如深度监督、Cutout、DropPath等等。

RegNet与标准基线ResNetResNeXT的比较:

总体来看,通过优化网络结构,RegNet模型在所有复杂度指标下,都有了较大的改进。

在上表(a)中,展示了按照activation分组的比较。研究人员将activation定义为所有conv层的输出张量的大小,它会对像GPU这样的加速程度运行有较大的影响。研究人员表示,这样设置的意义非常大,因为模型训练时间是一个瓶颈。未来可能在自动驾驶这样场景中,对改进推理时间有所帮助。给定固定的推理或训练时间,RegNet非常有效。

而在上表(b)中,展示了按照flops分组的比较

最后,是RegNet与EfficientNet的比较。

可以看到,在flops较低时,EfficientNet还有优势,但是随着flops的增大,RegNetX和RegNetY逐渐发力。

【CVPR2020】Designing Network Design Spaces相关推荐

  1. 【深度学习】 Designing Network Design Spaces

    留坑.

  2. 【RegNet】《Designing Network Design Spaces》

    CVPR-2020 文章目录 1 Background and Motivation 2 Related Work 3 Advantages / Contributions 4 Design Spac ...

  3. Paper:2020年3月30日何恺明团队最新算法RegNet—来自Facebook AI研究院《Designing Network Design Spaces》的翻译与解读

    Paper:2020年3月30日何恺明团队最新算法RegNet-来自Facebook AI研究院<Designing Network Design Spaces>的翻译与解读 导读: 卧槽 ...

  4. 何恺明组《Designing Network Design Spaces》的整体解读(一篇更比六篇强)

    本文原载自知乎,已获原作者授权转载,请勿二次转载. https://zhuanlan.zhihu.com/p/122557226 statistics 大法好,DL不是statistics,因为DL不 ...

  5. Paper之RegNet:《Designing Network Design Spaces》的翻译与解读—2020年3月30日来自Facebook AI研究院何恺明团队最新算法RegNet

    Paper之RegNet:<Designing Network Design Spaces>的翻译与解读-2020年3月30日来自Facebook AI研究院何恺明团队最新算法RegNet ...

  6. Designing Network Design Spaces,译读

    Designing Network Design Spaces,CVPR 2020 ,RegNet,, Ilija Radosavovic, Raj Prateek Kosaraju, Ross Gi ...

  7. RegNet: Designing Network Design Spaces

    Designing network design spaces是何凯明团队最近推出的一篇论文,目的是在探索网络搜索空间的设计.本论文和EfficientNet一样,也是假定网络的基本模块是不变的,不会 ...

  8. 阅读Designing Network Design Spaces(CVPR2020)

    [CVPR2020]网络设计空间,论文地址:https://arxiv.org/pdf/2003.13678.pdf 目录 Abstract 1.Introduction 2. Related Wor ...

  9. 【网络设计_RegNet】Designing Network Design Spaces_2020

    文章目录 Abstract 1.introduction 2.Related work 3.Design Space Design 3.1 Tools for Design Space Design ...

最新文章

  1. singleInstance和singleTask导致startActivityForResult回调失败
  2. python从ip端口 获取数据_python 如何获得Ip地址和端口啊?
  3. 通过结构体某个成员的地址计算结构体首地址 (转)
  4. 51nod 1103 N的倍数 思路:抽屉原理+前缀和
  5. php is_null(,PHP empty() isset() is_null() 区别与性能比较
  6. 爬虫-csdn博客爬虫-打造具有搜索功能的小工具
  7. java进程间通信rpc_进程间通信-浅谈RPC- 最小原型
  8. 软件设计师和软件评测师有什么区别?若想从事软件开发方面,哪个更适合?
  9.  Kaggle基本知识
  10. php 截取图片像素,php 如何修改图片像素大小
  11. Cisco Vpn的安装过程
  12. 单例模式在JavaScript与TypeScript中的几种设计方式
  13. walking机器人入门教程-视觉转激光建图-cartographer算法建图
  14. Java计算标会(会子)利率
  15. 阿里云配置DNS服务器
  16. JS正则表达式-附身份证号码验证(简易版)
  17. 在线PDF转换PPT,不用安装软件
  18. Next.js性能优化之ISR渲染入门和原理探索
  19. 制作U盘CDLinux使用奶瓶进行网络抓包
  20. SCCM2019部署系统Failed to Run Task Sequence

热门文章

  1. 前端自学Vue笔记干货(第一版,持续更新中~~~)
  2. 3.7V转1.5V超简单的LDO芯片
  3. 数据挖掘人工神经网络,神经网络的数据处理
  4. c语言源代码下载TGAM,2018年江西理工大学C语言程序设计竞赛(初级组)一
  5. 【C语言练习——打印上三角及其变形(带空格版)】
  6. 美团3年阿里4年,我的坎坷进阶之路
  7. 计算机问卷调查数据分析报告,调查问卷分析报告怎么写
  8. Cleartext vs. Plaintext vs. Ciphertext vs. Plaintext vs. Clear Text
  9. 【工业大数据】工业大数据应用场景分析;工业大数据,从何做起
  10. python 图像拼接_python实现图像拼接功能