论文在权值空间将SENet和CondConv进行了总结,提出对立的框架WeightNet,可能依据样本特色动静生成卷积核权值,并且能通过调节超参数来达到准确率和速度间的trade-off
起源:晓飞的算法工程笔记 公众号
论文: WeightNet: Revisiting the Design Space of Weight Networks
- 论文地址:https://arxiv.org/abs/2007.11823
- 论文代码:https://github.com/megvii-model/WeightNet
Introduction
论文提出了一种简略且高效的动静生成网络WeightNet,该构造在权值空间上集成了SENet和CondConv的特点,先通过全局均匀池化以及带sigmoid激活的全连贯层来取得动静的激活向量(activiation vector),而后利用激活向量进行后续的特征提取。SENet将激活向量用于加权特色层,而CondConv则将激活向量用于加权候选卷积核参数。
借鉴下面两种办法,WeightNet在激活向量前面增加一层分组全连贯,间接产生卷积核的权值,在计算上非常高效,并且可通过超参数的设置来进行准确率和速度上的trade-off。。
WeightNet
Grouped fully-connected operation
在全连贯层中,原子是全副连贯的,所以全连贯层可认为是矩阵计算$Y=WX$,如图a所示。分组全连贯则是将原子分成$g$组,每组(蕴含$i/g$输出和$o/g$输入)内全副连贯,如图b所示。分组全连贯操作的一个显著个性就是权值矩阵变成了稠密的块对角矩阵(block diagonal matrix),而全连贯操作可认为是分组数为1的分组全连贯操作。
Rethinking CondConv
CondConv通过m维向量$\alpha$将$m$个卷积核进行加权合并失去最终的卷积核,由样本特色动静生成。向量$\alpha$由全局池化、全连贯层$W_{fc1}$和sigmoid操作$\sigma(\cdot)$计算:$\alpha=\sigma(W_{fc1}\times \frac{1}{hw}{\sum}_{i\in h, j\in w}X_{c,i,j})$,$\times$为矩阵乘法,$W_{fc1}\in \mathbb{R}^{m\times C}$, $\alpha \in \mathbb{R}^{m \times 1}$,最终的卷积核权值则由多个候选卷积核与向量$\alpha$加权所得:$W^{‘}=\alpha_1 \cdot W_1 + \alpha_2 \cdot W_2 + \cdots + + \alpha_m \cdot W_m$,其中$W_i \in \mathbb{R}^{C\times C\times k_h\times k_w}$。
咱们能够将上述的操作转换为:
$W\in \mathbb{R}^{m\times CCk_hk_w}$为矩阵拼接后的后果。依据公式1,咱们可变相地认为,CondConv的最终卷积核计算可通过在向量$\alpha$前面增加一层输出为$m$、输入为$C\times C\times k_h\times k_w$的全连贯层进行输入,这比本来的CondConv实现要高效地多。
Rethinking SENet
SE模块首先依据样本特色动静生成m维向量$\alpha$,再对$m$个特色进行加权。向量$\alpha$由全局池化、两个全连贯层、ReLU操作$\delta(\cdot)$和sigmoid操作$\sigma(\cdot)$计算:$\alpha=\sigma(W_{fc2}\times \delta(W_{fc1}\times \frac{1}{hw}{\sum}_{i\in h, j\in w}X_{c,i,j}))$,$W_{fc1}\in \mathbb{R}^{C/r\times C}$,$W_{fc2}\in \mathbb{R}^{C\times C/r}$,$\times$为矩阵乘法。应用两层全连贯层次要为了升高整体参数量,因为$\alpha$为$C$维向量,应用单层全连贯层会带来过多参数。
在取得向量$\alpha$后,可将其利用在卷积层之前$Y_c=W^{‘}_c * (X\cdot \alpha)$,也可利用在卷积层之后$Y_c=(W^{‘}_c * X)\cdot \alpha$,$(\cdot)$为维度坐标上的乘法。下面的两种实现理论都等价于对权值矩阵$W^{‘}_c$进行加权:$Y_c=(W^{‘}_c \cdot \alpha_c) * X$,与公式1不同的是,这里没有进行维度的缩小,相当于一个输出为$C$、输入为$C\times C\times k_h\times k_w$、分组为$C$的分组全连贯操作。
WeightNet Structure
由下面的剖析咱们能够看到,分组全连贯层的分组数最小为1(CondConv),最大为输出的维度(SeNet),所以咱们失去了图c的通用分组全连贯层。
如表1所示,分组全连贯层蕴含两个超参数$M$和$G$,$M$用来管制输出的维度,$G$则配合$M$一起来控制参数量和准确率之间的trade-off。
WeightNet外围模块的构造如图2所示,在生成激活向量$\alpha$时,为了缩小参数量,应用reduction ratio为$r$的两层全连贯:$\alpha=\sigma(W_{fc2}\times W_{fc1}\times \frac{1}{hw}{\sum}_{i\in h, j\in w}X_{c,i,j})$,$W_{fc1}\in \mathbb{R}^{C/r\times C}$,$W_{fc2}\in \mathbb{R}^{C\times C/r}$,$r$为16,后续的卷积核权值生成则间接应用输出为$M\times C$、输入为$C\times C\times k_h\times k_w$、分组为$G\times C$的分组全连贯层。
对于WeightNet中的卷积操作和权值分支的计算量别离为$O(hwCCk_h k_w)$和$O(MCCk_h k_w / G)$,而参数量别离为零和$O(M/G\times C\times C\times k_h\times k_w)$。
Experiment
参数量/计算量与准确率的曲线比照,CondConv 2x和4x为候选卷积核数量。
不同$\lambda$配置的WeightNet的成果,这里固定$G=2$,对ShuffleNetV2进行大量的维度批改,保障其能被$G$整除。
各种注意力模块的比照试验。
指标检测工作上的成果。
Conclusion
论文在权值空间将SENet和CondConv进行了总结,提出对立的框架WeightNet,可能依据样本特色动静生成卷积核权值,并且能通过调节超参数来达到准确率和速度间的trade-off。
如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】