Pooling Revisited: Your Receptive Field is Suboptimal
作为CVPR 2022中一篇探索新网络模块的文章,本文对于新网络的设计,特别是处理high-level图像任务的模型设计还是很有启发的

首先作者开局便指出,由于当前的模型结构参数大多是手工设置的,因此是次优的。这里的次优其实主要体现在 因为模型的卷积(kernel size/stride),以及pooling是事先预制的,因此在每一层中模型的感受野也是被固定的,因此模型的通用性被限制了(mark一下,这里后面会详细解释)。为此作者提出了一种自适应调整感受野大小和形状的方式,即自适应的pooling,称之为DynOPool。尽管前人也提出过许多自适应感受野的方式,但是作者另辟蹊径从更简单的pooling入手,使得本方法在实施时有着更大的优势。并且由于DynOPool的自适应感受野调整,因此卷积的stride可以不需要再手动调整,直接全为1即可。

为了搞清楚作者为什么提出DynOPool,就要先搞明白当前的感受野策略存在的局限性:
1、不同数据集固有的信息不对称性。不同的数据集的信息分布在不同空间方向上是有偏向的,而传统网络对于不同方向的感受野都是一样的,这就导致该关注的地方关注不足,不该关注的地方过度关注。作者给出了一个很极端的例子:假如我们要提取条形码图像数据的信息,那么显然沿着竖直方向的感受野大小是没有意义的,因为数值方向的信息都是重复的(可以将其理解为这个方向上信息密度极低),因此我们只有增加水平方向的感受野才有意义。
为了验证这个猜想,作者给出了一个toy dataset例子,作者将cifar-10的数据数值方向拉伸一倍,然后再将其裁剪成64×6464 \times 6464×64,获得一个新数据集,然后用DynOPool 版本的vgg对其进行分类,得打如下的结果:

其中H和W是不同网络层的高宽的感受野大小。可以看到由于高度被拉长了,因此理论上竖直方向的信息密度变低了,所以为了用最小的感受野抓住更多的信息,网络自适应的增大了水平方向的感受野。

2、不同数据集的信息密度不同。试想一下一张模糊的图像和一张密密麻麻有很多目标的图像,如果我们想理解第一张图像那么显然我们要观察更大的区域,而对于第二张图像我们则需要仔细的观察,因为任何一块小区域都包含丰富的信息。为了验证这个猜想,作者又构建了两个toy dataset:1、重复拼接图像,得到cifar-tile数据,2、放大图像,得到cifar-large数据,实验结果如下:

可以看到,对于cifar-tile数据集,由于每个小patch都包含着丰富且独立的信息,因此开始时网络的感受野非常小(这也反驳了一种naive method,即简单扩大感受野可以在任何数据集上提高网络性能);而在cifar-large数据集上,由于信息密度低,所以网络开始时为了聚合更大范围的信息而扩大感受野。

原理上分析完了,下面再来说如何实施的:
假设某一层网络的输入特征图xin∈RHin×Winx_{in} \in R^{H_{in} \times W_{in}}xin​∈RHin​×Win​,输出特征图xout∈RHout×Woutx_{out} \in R^{H_{out} \times W_{out}}xout​∈RHout​×Wout​,DynOPool通过一个可训练的尺度因此来控制以上过程,即:

其中是取整计算。为了便于统一,作者将输入特征图的左上角坐标定义为(-1,-1),右下角坐标定义为(1,1),之后xinx_{in}xin​依照输出特征被分割成若干个patch,每个patch的size=2Hout×2Woutsize=\frac{2}{H_{out}} \times \frac{2}{W_{out}}size=Hout​2​×Wout​2​。之后作者定义每个patch的中心坐标为p=(ph,pw)p = (p_h,p_w)p=(ph​,pw​),之后作者在patch中上下左右寻找了四个位置点,分别是:

这里作者使用了双三次差值对qqq的坐标取整。
有了patch中的四个坐标后,作者要对其进行特征聚合,文中作者选的是max-pooling,但是作者也指出,其他pooling可以达到同样的效果。

方法流程介绍完毕,然而在优化时现在还面对两个问题:
1、(1)式中由于存在取整操作,无法梯度回传,为此作者提出了一种替代方法:

其中sg(⋅)sg(\cdot)sg(⋅)是梯度停止操作。由此前向计算时HoutH_{out}Hout​和WoutW_{out}Wout​的值由取整后的结果给出,反向更新时由第二项进行梯度回传更新rrr。
2、由(2)式可以看出,δh\delta_hδh​和δw\delta_wδw​由rrr给出,因此反向优化时我们推断出其梯度为:

这就出现一个问题,但rrr非常小时,δh\delta_hδh​和δw\delta_wδw​的梯度会变得非常不稳定,阻碍优化,为此作者提出了一个重参的方法,即用α\alphaα来代替rrr:由此提升网络稳定性。

以上过程可以表示为:

最后再让我们来看一下优化目标。本文提出的自适应pooling除了任务专有loss,还有一个特殊的loss,即:

这是因为在实际操作中不一定每一层都r<1r<1r<1,在某些层需要r>1r>1r>1,然而为了避免带来太多的计算量,作者通过(7)式来约束最终的网络复杂度。其实这里也给了我们一个启发,虽然本文的所有例子都是基于分类,然而由于r>1r>1r>1也是可行的,因此本方法实际上也可以用于如 图像修复,超分,分割,检测 等底层视觉任务。

最后是实验部分,这部分主要是不同骨干网络的 raw版本 和 DynOPool版本 性能上以及计算量上的比较,我就不再进行详细说明了,有兴趣的可以直接去看原文:

Pooling Revisited: Your Receptive Field is Suboptimal 论文解读和感想相关推荐

  1. Pooling Revisited: Your Receptive Field is Suboptimal

    Pooling Revisited: Your Receptive Field is Suboptimal paper:https://arxiv.org/abs/2205.15254 摘要 感受野的 ...

  2. GAN开山之作论文解读及感想

    GAN开山之作论文解读及感想 ​ 研一生涯快结束了,看了一些论文,最终还是决定继续深度学习,本科阶段学过了TensorFlow,也还算有一些基础吧,了解了一下GAN生成对抗网络,写一写学习心得 GAN ...

  3. 图像超分辨率 之 DRN 论文解读与感想

    图像超分辨率 之 DRN (Closed-loop Matters: Dual Regression Networks for Single Image Super-Resolution)论文解读与感 ...

  4. PiCIE: Unsupervised Semantic Segmentation using Invariance and Equivariance in Clustering 论文解读和感想

    PiCIE: Unsupervised Semantic Segmentation using Invariance and Equivariance in Clustering 论文解读和感想 背景 ...

  5. 池化层(pooling layer) 感受野(Receptive Field) 神经网络的基本组成

    目录 (1)本文涉及的函数 (2)池化层 (3)感受野 (4)代码示例(含注释) 承接上两篇博客:卷积层(空洞卷积对比普通卷积).激活函数层 (1)本文涉及的函数 import torch impor ...

  6. Receptive Field Block Net 论文阅读

    Receptive Field Block Net for Accurate and Fast Object Detection  用于快速精确的目标检测的接受野模块 Code link: https ...

  7. MISF:Multi-level Interactive Siamese Filtering for High-Fidelity Image Inpainting 论文解读与感想

    深度学习模型被广泛应用于各种视觉任务的同时,似乎传统的图像处理方式已经被人们渐渐遗忘,然而很多时候传统图像处理方式的稳定性和可解释性依然是深度学习模型所不能达到的.本文是CVPR2022的一篇将传统与 ...

  8. 图像超分辨率 之 GLEAN论文解读与感想

    本文出发点: 对于图像超分,目前主流方法有两种: 其一是已经非常完善的基于GAN的图像重建.生成器接受一个LR图像,并将其上采样为一个SR图像,鉴别器负责度量生成的图像和真实高分辨率图像的差异.这样的 ...

  9. ECCV2018论文RBNet:Receptive Field Block Net for Accurate and FastObject Detection

    论文下载:https://arxiv.org/abs/1711.07767 源码下载:https://github.com/ruinmessi/RFBNet Abstract: 目前性能最好的目标检测 ...

最新文章

  1. 数据标准化处理,data.mean和data.std
  2. 云原生生态周报 Vol.9| K8s v1.15 版本发布
  3. C. Liebig's Barrels
  4. 左神算法:将搜索二叉树转换成双向链表(Java版)
  5. 2019年 ICPC亚洲区预赛(上海赛区)总结
  6. C++工作笔记-仿大佬“容器”风格
  7. Java学习笔记2.4.3 选择结构 - 多分支结构
  8. Machine Learning课程中的常见单词的含义
  9. 华泰证券:如何自研高效可靠的交易系统通信框架?
  10. ListView若干点
  11. 软考中级——系统集成项目管理工程师 知识点思维导图
  12. illegal offset type php,PHP warning Illegal offset type错误解决办法
  13. 营业执照编码验证规则(15位和18位
  14. 微信小程序【常见面试题】
  15. part1:推荐一些适合练手、课程设计、毕业设计的python小项目源码,无任何下载门槛
  16. JavaScript中数组indexOf()增强版,返回所有匹配索引的数组
  17. Taro2.* 小程序配置分享微信朋友圈
  18. Flash Timeout.Reset the Target and try it again 报错解决方案 STM32 ST-LINK Utility下载程序操作
  19. hive linux时间戳转换,hive时间戳转换UDF更新
  20. 戴尔r510服务器加硬盘没反应,戴尔R510_R410_R610_R710等所有服务器安装win2003解决办法...

热门文章

  1. 关于验证身份证号码是否为真实有效
  2. 创建Scrapy项目报错 UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3 in position 19
  3. 【重要】 性能测试设计能力解决方案
  4. python入门ppt下载_Python3入门ppt
  5. php更换鼠标指针详细,window_Win7系统鼠标指针怎么更改?Win7系统更换鼠标指针的方法,  Win7系统鼠标指针怎么更改 - phpStudy...
  6. 【二胡音乐】陈军《胡弓传奇》
  7. 秀米svg点击显示另一张图_公众号排版怎么做?点击图片出现另一张图片是怎么弄的?...
  8. 对软件项目开发的一点思考
  9. vue详解(一)概述和基础语法
  10. 利用onnxsim对onnx模型进行简化