WeightNet:从SENet和CondConv得出的高效权值生成结构 ECCV 2020

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WeightNet:从SENet和CondConv得出的高效权值生成结构 ECCV 2020相关的知识,希望对你有一定的参考价值。

参考技术A

论文: WeightNet: Revisiting the Design Space of Weight Networks

  论文提出了一种简单且高效的动态生成网络WeightNet,该结构在权值空间上集成了SENet和CondConv的特点,先通过全局平均池化以及带sigmoid激活的全连接层来获得动态的激活向量(activiation vector),然后利用激活向量进行后续的特征提取。SENet将激活向量用于加权特征层,而CondConv则将激活向量用于加权候选卷积核参数。
  借鉴上面两种方法,WeightNet在激活向量后面添加一层分组全连接,直接产生卷积核的权值,在计算上十分高效,并且可通过超参数的设置来进行准确率和速度上的trade-off。。

  在全连接层中,原子是全部连接的,所以全连接层可认为是矩阵计算 ,如图a所示。分组全连接则是将原子分成 组,每组(包含 输入和 输出)内全部连接,如图b所示。分组全连接操作的一个显著特性就是权值矩阵变成了稀疏的块对角矩阵(block diagonal matrix),而全连接操作可认为是分组数为1的分组全连接操作。

  CondConv通过m维向量 将 个卷积核进行加权合并得到最终的卷积核,由样本特征动态生成。向量 由全局池化、全连接层 和sigmoid操作 计算: , 为矩阵乘法, , ,最终的卷积核权值则由多个候选卷积核与向量 加权所得: ,其中 。
  我们可以将上述的操作转换为:

  为矩阵拼接后的结果。根据公式1,我们可变相地认为,CondConv的最终卷积核计算可通过在向量 后面添加一层输入为 、输出为 的全连接层进行输出,这比原本的CondConv实现要高效地多。

  SE模块首先根据样本特征动态生成m维向量 ,再对 个特征进行加权。向量 由全局池化、两个全连接层、ReLU操作 和sigmoid操作 计算: , , , 为矩阵乘法。使用两层全连接层主要为了降低整体参数量,由于 为 维向量,使用单层全连接层会带来过多参数。
  在获得向量 后,可将其应用在卷积层之前 ,也可应用在卷积层之后 , 为维度坐标上的乘法。上面的两种实现实际都等价于对权值矩阵 进行加权: ,与公式1不同的是,这里没有进行维度的减少,相当于一个输入为 、输出为 、分组为 的分组全连接操作。

  由上面的分析我们可以看到,分组全连接层的分组数最小为1(CondConv),最大为输入的维度(SeNet),所以我们得到了图c的通用分组全连接层。

  如表1所示,分组全连接层包含两个超参数 和 , 用来控制输入的维度, 则配合 一起来控制参数量和准确率之间的trade-off。

  WeightNet核心模块的结构如图2所示,在生成激活向量 时,为了减少参数量,使用reduction ratio为 的两层全连接: , , , 为16,后续的卷积核权值生成则直接使用输入为 、输出为 、分组为 的分组全连接层。
  对于WeightNet中的卷积操作和权值分支的计算量分别为 和 ,而参数量分别为零和 。

  参数量/计算量与准确率的曲线对比,CondConv 2x和4x为候选卷积核数量。

  不同 配置的WeightNet的效果,这里固定 ,对ShuffleNetV2进行少量的维度修改,保证其能被 整除。

  各种注意力模块的对比实验。

  目标检测任务上的效果。

  论文在权值空间将SENet和CondConv进行了总结,提出统一的框架WeightNet,能够根据样本特征动态生成卷积核权值,并且能通过调节超参数来达到准确率和速度间的trade-off。



以上是关于WeightNet:从SENet和CondConv得出的高效权值生成结构 ECCV 2020的主要内容,如果未能解决你的问题,请参考以下文章

SENet代码复现+超详细注释(PyTorch)

senet

图像分类用最简单的代码复现SENet,初学者一定不要错过(pytorch)

SENet实战详解:使用SE-ReSNet50实现对植物幼苗的分类

SeNet论文解读/总结

SENet双塔模型:在推荐领域召回粗排的应用及其它