RegNet: Designing Network Design Spaces
Designing network design spaces是何凯明团队最近推出的一篇论文,目的是在探索网络搜索空间的设计。本论文和EfficientNet一样,也是假定网络的基本模块是不变的,不会去搜索基本模块的操作。文章中以残差bottleneck为基本模块,研究模块中bottleneck比例系数和group个数、以及每个stage的通道数和深度之间的设计,并逐步减小搜索空间的范围,最终得到一个小范围但是高性能的设计空间。
空间设计衡量工具
文章首先介绍了网络设计空间的衡量工具,叫做误差经验分布曲线(EDF)。这个曲线的计算方法是:从400MF计算量的设计空间中选取一堆网络模型、每个模型只训练10个epoch(目的是为了加快每个模型计算出准确率误差的速度),然后统计所有采样模型的准确率误差,计算公式为:
F(e)=1n∑i=1n1[ei<e]F(e)=\frac{1}{n}\sum_{i=1}^n1[e_i<e]F(e)=n1i=1∑n1[ei<e]
这个公式表示的含义是,采样模型里面准确率误差小于eee占所有采样模型的比例。用坐标图可以表示为:
左边这个图就是误差EDF的函数曲线,中间和右边两图表示采样模型在深度和通道宽度两个维度上的误差分布。示例图中采样了500个模型。在后面中我们将会看到,每一次调整设计搜索空间时,均采样误差EDF来判断调整后设计空间的优劣。
AnyNet设计空间
AnyNet的设计空间有四个维度:模块个数ddd(网络深度)、模块宽度www(通道数)、模块中bottleneck的比例bbb和group个数ggg,文章中探讨的网络有4个stage,固定输入图片的大小为224,所以对一个网络来说,有16个自由度。初始的搜索空间定为:di≤16d_i \leq 16di≤16,wi≤1024w_i \leq 1024wi≤1024(能被8整除),bi∈{1,2,4}b_i \in \{1, 2, 4\}bi∈{1,2,4},gi∈{1,2,...,32}g_i \in \{1,2,...,32\}gi∈{1,2,...,32},iii表示stage序号。每次调整完设计空间后,均会从360MF到400MF的计算量范围中采样500个模型,训练10个epoch后来绘制EDF函数曲线。
最初的这个网络叫做AnyNetX,设计空间达到了101810^{18}1018的可能性,所以需要采用一些方法来逐步减小AnyNet的搜索空间,主要有以下几个步骤:
- AnyNetXAAnyNetX_AAnyNetXA. 初始的网络设计空间AnyNetXAnyNetXAnyNetX就叫做AnyNetXAAnyNetX_AAnyNetXA。
- AnyNetXBAnyNetX_BAnyNetXB. 将所有stage的模块bottleneck比例统一设置,作者采用这个方法重新采样模型、训练和绘制EDF曲线,发现和AnyNetXAAnyNetX_AAnyNetXA中的EDF曲线基本上没有差别。这样就减少了3个搜索自由度,不用每个stage分别去搜索bottleneck比例,改成统一设置。
- AnyNetXCAnyNetX_CAnyNetXC. 和步骤2中一样,统一设置每个stage的模块group参数,在步骤2的基础上重新采样、训练和得到EDF曲线,有意思的是,作者同样发现AnyNetXCAnyNetX_CAnyNetXC的EDF曲线和AnyNetXBAnyNetX_BAnyNetXB中几乎一致。所以在group这个参数上也可以统一设置,又减小了3个搜索自由度。
步骤2和步骤3的EDF曲线如下图所示:
- AnyNetXDAnyNetX_DAnyNetXD. 在步骤3的基础上,论文测试了wi+1≥wiw_{i+1} \geq w_iwi+1≥wi情况下设计原则,结果惊奇地发现,居然比AnyNetXCAnyNetX_CAnyNetXC的EDF曲线更好。
- AnyNetXEAnyNetX_EAnyNetXE. 在步骤4的基础上,采用了和AnyNetXDAnyNetX_DAnyNetXD相似的设计原则:di+1≥did_{i+1} \geq d_idi+1≥di,结果又惊奇地发现,居然比AnyNetXDAnyNetX_DAnyNetXD的曲线更好。步骤4和步骤5让设计空间减小了4!4!4!倍。
步骤4和步骤5的EDF曲线如下图所示:
RegNet设计空间
在AnyNetXEAnyNetX_EAnyNetXE的基础上,论文进一步探讨了搜索维度中每个stage中深度did_idi和宽度wiw_iwi之间的关系。作者在论文里面讲了一大堆,读者第一次看可能有点晕,其实简单地说就是采用数学建模的方法,用两个方程来表示:
uj=w0+wa⋅jwj=w0⋅wm[sj]u_j=w_0+w_a \cdot j \\ w_j=w_0 \cdot w_m^{[s_j]}uj=w0+wa⋅jwj=w0⋅wm[sj]
第一个方程中uju_juj暂定表示为第jjj个模块的通道数,它是一个等差的离散数列,但是在实际网络设计中,每个stage阶段的通道数是固定的,所以就设计了上面的第二个方程,其中wjw_jwj表示第jjj个block的通道数,[sj][s_j][sj]表示第jjj个block属于哪一个stage,在这个方程里,每个stage不同block之间的通道数是固定。
我当时看到这边第一反应是只要有第二个方程就好了,第一个方程设计的意义何在?其实第一个方程是要用来计算每个stage的block个数did_idi。在得到第iii个stage的通道数wiw_iwi和第i+1i+1i+1个stage的通道数wi+1w_{i+1}wi+1之后,只要计算出满足wi≤uj≤wi+1w_i \leq u_j \leq w_{i+1}wi≤uj≤wi+1方程中jjj的个数,就可以知道stage iii有几个block了。
通过上面两个数学建模方程,论文每个stage模块的深度和宽度维度变成了对d,w0,wa,wmd, w_0, w_a, w_md,w0,wa,wm四个参数的搜索,再一次减小了搜索空间,将新的设计空间叫做RegNetRegNetRegNet。作者在d<64,w0,wa<256,1.5≤wm≤3d<64, w_0,w_a<256, 1.5 \leq w_m \leq 3d<64,w0,wa<256,1.5≤wm≤3范围上进行采样、训练和绘制EDF,得到比AnyNetXEAnyNetX_EAnyNetXE更好的效果。
上面AnyNetXAnyNetXAnyNetX和RegNetXRegNetXRegNetX是在4个stage,小计算量和少epoch的条件下进行的,作者为了验证这个方法的泛化性,在5个stage和更高计算量、更多epoch的条件下也做了实验,得到同样的结果,充分证明了这个方法的可扩展性。
实验
作者在论文中对RegNetRegNetRegNet的参数做了一些限制,进一步减小了搜索的范围以及提升EDF曲线效果,这里就不一一列举了,有兴趣的读者在论文第4部分中查看。此外,作者还得到一些有趣的结论,比如发现好的模型bottleneck比例一般是1.0;对于RegNetXRegNetXRegNetX网络来说,输入分辨率为224×224224 \times 224224×224时是最佳的,这个和EfficientNet刚好相反。
作者在RegNetXRegNetXRegNetX中加入了SE(Squeeze-and-Excitation)的操作,将这个网络的设计空间叫做RegNetYRegNetYRegNetY。
作者从各个计算量等级的RegNetXRegNetXRegNetX和RegNetYRegNetYRegNetY中随机选取了25个网络模型进行训练,并挑选了其中最好的模型在ImageNet上重新训练5次100个epoch(获得鲁棒性结果),得到了下面两个表格的训练结果。作者在论文中特别提到,除了权重衰减之外,没有使用任何正则化和其他训练tricks。
好的效果肯定都是对比出来的,作者分别与移动端网络(~600MF)、ResNe(X)t和EfficientNet做了性能比较,前两个就不列出来了,有兴趣的在论文中查看,我们重点来看和EfficientNet的对比结果。
从上面这个表格可以看出,在相同等级计算量的条件下,EfficientNet-B0~B2比RegNetY更好一些,但是在更高计算量中,RegNetY开始超越了EfficientNet。除此之外,RegNetY无论是在模型参数大小还是训练推理时间上,都远远超过了EfficientNet。特别是RegNetY-8.0GF网络,不仅在精度上比EfficientNet-B5高出1.4个点,推理速度更是提升了接近5倍!
RegNet: Designing Network Design Spaces相关推荐
- Paper:2020年3月30日何恺明团队最新算法RegNet—来自Facebook AI研究院《Designing Network Design Spaces》的翻译与解读
Paper:2020年3月30日何恺明团队最新算法RegNet-来自Facebook AI研究院<Designing Network Design Spaces>的翻译与解读 导读: 卧槽 ...
- Paper之RegNet:《Designing Network Design Spaces》的翻译与解读—2020年3月30日来自Facebook AI研究院何恺明团队最新算法RegNet
Paper之RegNet:<Designing Network Design Spaces>的翻译与解读-2020年3月30日来自Facebook AI研究院何恺明团队最新算法RegNet ...
- 【RegNet】《Designing Network Design Spaces》
CVPR-2020 文章目录 1 Background and Motivation 2 Related Work 3 Advantages / Contributions 4 Design Spac ...
- 何恺明组《Designing Network Design Spaces》的整体解读(一篇更比六篇强)
本文原载自知乎,已获原作者授权转载,请勿二次转载. https://zhuanlan.zhihu.com/p/122557226 statistics 大法好,DL不是statistics,因为DL不 ...
- Designing Network Design Spaces,译读
Designing Network Design Spaces,CVPR 2020 ,RegNet,, Ilija Radosavovic, Raj Prateek Kosaraju, Ross Gi ...
- 【CVPR2020】Designing Network Design Spaces
论文地址:https://arxiv.org/pdf/2003.13678.pdf Abstract 在这项工作中,我们提出了一个新的网络设计范例.我们的目标是帮助提高对网络设计的理解,并发现跨领域( ...
- 阅读Designing Network Design Spaces(CVPR2020)
[CVPR2020]网络设计空间,论文地址:https://arxiv.org/pdf/2003.13678.pdf 目录 Abstract 1.Introduction 2. Related Wor ...
- Designing Network Design Spaces
Arxiv link: https://arxiv.org/pdf/2003.13678.pdf source code is at https://github.com/facebookresear ...
- 【深度学习】 Designing Network Design Spaces
留坑.
最新文章
- 360企业版终端安装说明
- hdu 1002 A + B Problem II(大正整数相加)
- FFmpeg avio_alloc_context函数剖析
- selenium 示例_Selenium测试中所需的功能和示例
- 教你使用 IDEA 配置和运行vue项目
- 手动搭建latex公式渲染服务器
- linux java运行class文件_jvm学习java文件运行过程
- 暴风激活后浏览器被锁定首页
- sql server (sqlexpress) 服务因 3417 (0xd59) 服务性错误而停止(转自太原市李江软件开发工作室)...
- VueConf 感想与总结
- 保姆级零基础 C 语言学习路线,万字总结!
- iPhone升级系统 死机了怎么办
- svn提交代码报错:svn: E175002: Unexpected HTTP status 502 ‘Bad Gateway‘
- Qt 虚拟键盘实现中文输入
- 古典风格园林景观织梦cms模板
- Java实现三位数的水仙花数计算
- ·我开发的项目以及进展情况
- 华为路由器常用命令集合
- 硬盘坏块监测linux,Linux上检测硬盘上的坏道和坏块
- 怎么样在Excel单元格里批量加小数点和单位?
热门文章
- 计算机怎么连不上打印机,电脑和打印机连接不上怎么回事
- 操作Excel工具类:ExcelUtils.java
- python 字符串结束符_python字符串以反斜杠结尾
- 【电路】自用人体感应灯(HC-SR501人体感应模块)
- 这个AI算法,可以帮“元宇宙”虚拟人进行虚拟更换衣服
- 2022秋软工实践 第一次结对编程作业
- 推荐一个程序员必备官方 App ,名字叫:力扣
- DevExpress_Winform_使用汇总
- 微信开通检测软件的使用方法(入门教程)
- zabbix_get [12429]: Check access restrictions in Zabbix agent configuration