Daily Paper 03 - Local Importance-based Pooling
Tilden Ji 菜鸟Lv3

今天看的这篇论文是昨天看的 SoftPool 的前人工作,发表于 ICCV 2019,提出了一种类似于注意力机制的 pooling 方式。

「」

介绍

作者认为对于 Pooling 操作,由于在一个 Local Region 中,并不是所有的激活都 同等重要 ,因此奇思妙想了以下,设计了一个 子网络 去自动学习输入特征的重要性。
作者提出了一个框架,对现有的 Pooling 方法进行了总结:

看起来挺复杂的,其中 是输入特征图, 是同等形状的权重图, 是「滑动窗口」的相对采样位置, 是输入坐标, 是输出坐标,计算过程也就是滑动窗口然后计算一个加权平均。

在这样一个框架下,一些重要的 Pooling 方法可以统一的表示:

比如在 的时候,公式就等价于平均池化, 时,就等价于最大池化等等,论文 3.1 小节花了整整一页的篇幅来解释这个「大一统」的框架,不过感觉略无聊就没有细读。

作者一顿分析了当下 Pooling 方法中的各种坏味道(具体分析略),然后提出了好的 Pooling 方法应该具备的两个特点:

  1. 下采样中采样的位置要尽可能不是固定间隔的,能够有所偏移;

  2. 是通过学习得到的。

方法

基于前文分析,提出的改进方法的结构和 Pytorch 如下:

简单来说就是用 网络输入 输出权重,然后把输出的权重 Softmax,用 Softmax 后的权重再对输入的 Local Region 加权求和,就得到了一个输出激活。把这些步骤整合在一起就成为如下极难阅读公式了:

网络咋实现呢?作者给出了两个实现方式如下图的 (d) 和 (e):

图中的其他部分是三个 ResNet 变种的结构图,(a) 是标准结构,(b) 是本文方法,具体把 3x3 的卷积层换成了相应的 LIP 层。(c) 则是一个同时期工作。具体怎么改的以及不同的 CNN 架构分别怎么改的可以参考原论文和代码,这里写不动了就不展开了。

实验

IN 分类:

LIP > 其他,且 Bottleneck-128 性能最好。然后计算量随通道数增加而增加。

略掉好多好多不太有趣的实验~

总结

  1. 现有的 Pooling 方法似乎真的有问题,不过我还是觉得在 Pooling 上加那么多参数不太好…

  2. 看到这里不难发现,昨天看的 SoftPool 其实就是本文 的一个特例,而且这样就能够有性能提升了,带来的好处就是不引入额外的学习参数,感觉更好用一点。


Reference

[1]Z. Gao, L. Wang, and G. Wu, “LIP: Local Importance-based Pooling,” arXiv:1908.04156 [cs], Aug. 2019, Accessed: Jun. 10, 2021. [Online]. Available
  • 本文标题:Daily Paper 03 - Local Importance-based Pooling
  • 本文作者:Tilden Ji
  • 创建时间:2021-06-11 06:30:00
  • 本文链接:https://itiandong.com/2021/daily-paper-03/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论