共计 2871 个字符,预计需要花费 8 分钟才能阅读完成。
论文在权值空间将 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。
如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】