轻量级网络FBNet v2

 FBNet v2

论文地址: CVPR 2020

FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions

问题

基于 DARTS 的这种可微分的网络结构搜索方法 (Differentiable Neural Architecture Search) :

一般是构造一个包含所有候选结构的超图 (super graph),然后从中选一条single path做为最终的网络结构。

在FBNetV1中,搜索空间主要是每一层网络的一些可选操作,输入输出的channel都是固定的,每个stage里面的特征分辨率也是固定的,FBNetV2在V1的基础上,增加了对这两项的搜索,既能搜索V1里面的操作,也能搜索每个stage的输入输出channel和stage内部的分辨率缩放值,因此搜索空间相比于FBNet提升了将近10^{14}倍,后来搜到了一个和EfficientNet B0精度接近,但是FLOPs小了20%的网络结构。

作者指出,基于 DARTS 的方法有两个缺点:

  1. 搜索空间相对较小。由于要把很大的 super graph 以及 featuremap 存在 GPU 上,显存的限制就使得 DARTS 系列方法的搜索空间,比基于 RL,进化算法方法的搜索空间要小;
  2. 搜索代价会随着每层的选择的增加线性增长。每在 supergraph 中增加一个新的搜索维度,显存和计算量都会大幅增长,这也就制约了搜索空间不能太大。

作者的改进方向就是在几乎不引入显存和计算量代价的情况下,相比于FBNet,搜索空间加入了channels和input resolution两个维度,FBNetv2有以下两点改进:

  1. 对 supergraph 中的 channel / input resolution 选项加入 mask
  2. 复用 supergraph 中所有选项的 featuremap

channel masking

把不同的channel加入搜索空间,之前的DNAS方法就是把不同的选项融进 supergraph,这样会带来接近o(N^{2})种选择的可能。为了减少搜索channel时候的计算量,作者构造了channel masking的机制,把不同 channel 的最终输出,表征为和一个mask相乘的形式:

具体的做法如图:右边那个灰色的长方体表示一个shape为(c, h, w)的tensor,和左边的mask向量M相乘的结果。M可以拆解为多个maskm1,m2,m3...和对应的Gumbel Softmax的系数g1,g2,g3...的乘积和。通过调节左边的mask,就能得到等价的不同channel的结果。相当于对一个大的 tensor,mask掉额外的 channel,得到相应的别的 channel 的结果。

在通道搜索中,作者假设不同的每一层的通道路径都共享一个卷积核参数,不同channel的输出取决于一个叫做mask的向量。比如左图中g1 g2和g3是不同channel选择的架构参数,对应的白蓝条状是mask向量,其中白色表示1,蓝色表示0,分别和卷积相乘,那么白色对应的部分表示该路径上的输出channel个数,蓝色部分表示该路径上没有这部分channel,但是在整体计算上维度是保持一致的,不同mask向量分别和卷积核参数相乘,再用channel的架构参数加权和。这样在搜索的过程中,通过架构参数就可以知道每个stage中的卷积核该选择多少个输出channel。

想要进行加权和,首先就会遇到下图Step A中的问题:channel不同,对应的tensor shape不同,无法直接相加。为了解决这个问题,可以引入Step B中的方法:对输出做zero padding,使之shape对齐(图中蓝色部分),然后加权求和。Step B和Step C是等价的,Step C相当于对卷积的filter进行mask,随后作者又进行了一个简化的假设,假设所有的weighting共享,也就是Step D的形式。Step E和Step D是等效的,即为最终的channel masking机制。

在Spatial维度的做法也是类似的,作者想构造一种加权和的形式表征不同分辨率的feature:

如图 A 所示,不同分辨率的 tensor 不能直接相加;

图 B 说明了在边缘 padding 的方式不行,pixel 无法对齐;

图 C 说明了为了让 pixel 对齐,要采用这种 Interspersing zero-padding 的形式。但是图 C 这种方式会又带来感受野 mis-alignment 的问题;

如图 D 所示,Interspersing zero-padding 之后,一个 3x3 的 kenel 有效感受野变成了 2x2。

所以图 E 才是作者最终的解决方法:和 F 运算完之后再 padding。

Search Space

FBNet V2有三个不同的系列:FBNetV2-F, FBNetV2-P, FBNetV2-L。分别对应的优化目标为Flops,参数量和大模型:

输入为288x288x3。channel维度的搜索体现在表格的number of filters f(卷积核数目),spatial维度的搜索体现在表格中的block expansion rate e(扩张率),从 0.75 到 4.5,步长为 0.75,n为重复次数,s为strides,TBS为待搜索的 block;

TBS模块的搜索空间:

block type由3x3或者5x5的depth-wise conv + SE + relu / hswith组成

搜索时设定的整体网络结构以及每个候选block,共包含10^{35}个候选网络:

损失函数 

在损失函数上,权重系数沿用了V1中的Gumbel Softmax的方法,将Latency的损失项换成了FLOPS/Params,FLOPS/Params的计算方法与标准方法无异,唯一的区别在于它们也是通过权重系数来做加权和计算,其中C_{i,out}^{l}表示第l层第i条路径的通道数,宽和高的计算方法和通道的一致。
比如在输出通道上,计算方法为:

C_{out}^{l}=\sum _{i}g_{i}^{l}*C_{i,out}^{l}

实验 

三个系列在ImageNet上的结果:

 FBNetV2在ImageNet数据集上的实验结果,每个网络都对应不同的资源需求:

以FBNetV2为例子,和其他方法的FLOPs与Top-1对比:

 以FBNetV2为例子,和其他方法的Params与Top-1对比:

 以FBNetV2为例子,在大模型上的对比:

总结

提出了一种channel维度的mask机制和spatial维度的subsampling机制,能扩大DNAS系列方法的搜索空间,同时几乎不增加显存和计算开销

FBNet v2虽然提升了搜索空间,性能有所提升,但还是对网络结构参数进行搜索,还是不改变原有的网络结构

参考

CVPR 2020| FBNetV2

FBNet/FBNetV2/FBNetV3:Facebook在NAS领域的轻量级网络探索 | 轻量级网络 

 

仅为学习记录,侵删! 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖虎记录学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值