感知野的概念尤为重要,对于理解和诊断CNN网络是否工作,其中一个神经元的感知野之外的图像并不会对神经元的值产生影响,所以去确保这个神经元覆盖的所有相关的图像区域是十分重要的;
需要对输出图像的单个像素进行预测的任务,使每一个输出像素具有一个比较大的感知野是十分重要的,在做预测试时,每一个关键的信息就不会被遗漏。

增大感知野的方法: 理论上可以通过搭建更多的层的网络实现感知域的线性增加,靠着卷积过滤器的增加; 也可以使用下采样的方法,池化,增加感知域,目前通常都结合了这两种技术;

堆叠不同层的convnets, 最后输出矩阵的单个神经元的表征的感知域的大小显然不一样;感知域越大,这意味着它应该学习距离更远的对象之间的关系

empirical, 层数越深, 能够感知的patch的尺寸也越大,但是这样会付出更多的计算成本和时间消耗,所以需要通过traceback:

function receptive_field_sizes()

% compute input size from a given output size
f = @(output_size, ksize, stride) (output_size - 1) * stride + ksize; %% n=1 discriminator % fix the output size to 1 and derive the receptive field in the input
out = ...
f(f(f(1, 4, 1), ... % conv2 -> conv3
4, 1), ... % conv1 -> conv2
4, 2); % input -> conv1 fprintf('n=1 discriminator receptive field size: %d\n', out); %% n=2 discriminator % fix the output size to 1 and derive the receptive field in the input
out = ...
f(f(f(f(1, 4, 1), ... % conv3 -> conv4
4, 1), ... % conv2 -> conv3
4, 2), ... % conv1 -> conv2
4, 2); % input -> conv1 fprintf('n=2 discriminator receptive field size: %d\n', out); %% n=3 discriminator % fix the output size to 1 and derive the receptive field in the input
out = ...
f(f(f(f(f(1, 4, 1), ... % conv4 -> conv5
4, 1), ... % conv3 -> conv4
4, 2), ... % conv2 -> conv3
4, 2), ... % conv1 -> conv2
4, 2); % input -> conv1 fprintf('n=3 discriminator receptive field size: %d\n', out); %% n=4 discriminator % fix the output size to 1 and derive the receptive field in the input
out = ...
f(f(f(f(f(f(1, 4, 1), ... % conv5 -> conv6
4, 1), ... % conv4 -> conv5
4, 2), ... % conv3 -> conv4
4, 2), ... % conv2 -> conv3
4, 2), ... % conv1 -> conv2
4, 2); % input -> conv1 fprintf('n=4 discriminator receptive field size: %d\n', out); %% n=5 discriminator % fix the output size to 1 and derive the receptive field in the input
out = ...
f(f(f(f(f(f(f(1, 4, 1), ... % conv6 -> conv7
4, 1), ... % conv5 -> conv6
4, 2), ... % conv4 -> conv5
4, 2), ... % conv3 -> conv4
4, 2), ... % conv2 -> conv3
4, 2), ... % conv1 -> conv2
4, 2); % input -> conv1 fprintf('n=5 discriminator receptive field size: %d\n', out);

  

作者发现 并不是所有在感知域中的像素 都图对于输出单元具有相同的贡献: 直观的来说,感知野中间的像素对于输出会有更大的影响。

前向传播中,感知野中间的像素能够传播信息到输出通过许多不同的路径,边缘的像素就相对较少。这就造成了,在反向中,通过这些路径传来的梯度,使得中间像素有更大量级的梯度更新。(In the forward pass, central pixels can propagate information to the output through many different paths, while the pixels in the outer area of the receptive field have very few paths to propagate its impact. In the backward pass, gradients from an output unit are propagated across all the paths, and therefore the central pixels have a much larger magnitude for the gradient from that output).

实验

如图,感知野的影响分布是呈现高斯分布的, 作者发现了 理论感知域中的有效部分其实是非常微小的,因为高斯分布从中间衰减得十分的快。

实验的目的是:确定多少个输入感知野的像素点影响着输出神经元;

--如上图所示,在残差网络中不使用池化和下采样方法,随着训练的进行,有效感知野的范围在提升,同时即时感知野的大小已经大于了整个图像的整个大小,有效感知野的范围还是不能够覆盖整个图像。

--在残差网络架构的模型中,使用subsampling 技术,理论感知域增加的非常大,但是有效感知域也是十分小的(如上图的右边Cam所示,堆叠多个VGG);有效减缓 有效感知域的高斯分布的方法带来的影响

-- 和直接搭建多层卷积网络相比,下采样和扩张卷积( dilate conv)技术都可以增大有效感知野的大小,如下图所示:

 如何有效的对抗感知野的高斯分布呢?

-- 操纵权重的初始化 使卷积核中心的权值更小,外部的权值更大,优化 w 去最大化 有效感知野的大小。

解决这个优化问题,就得到了这样一个解:在卷积核的4个角上平均分配权值,而其他地方都为0,===》得到一些 这样分布的初始化方法 可以提高整体的速度

-- 认为 从CNN的结构来看是一个很好的增大有效感知域的措施,比如 dilate conv,skip-connection 使得感知野更小了,dropout 并不会改变有效感知野

思考

很多方法的模型并没有考虑有效感知野,而是默认搭建的模型理论感知野和图像的大小差不多就为最佳,其实有效感知野只是一小部分,存在模型性能的加大提升空间;

可以在现有方法的改进中,引入有效感知野的想法,使用扩张卷积和逆高斯分布的权重初始化等方法,抵消感知野的高斯分布影响;

论文解读《Understanding the Effective Receptive Field in Deep Convolutional Neural Networks》的更多相关文章

  1. 《Population Based Training of Neural Networks》论文解读

      很早之前看到这篇文章的时候,觉得这篇文章的思想很朴素,没有让人眼前一亮的东西就没有太在意.之后读到很多Multi-Agent或者并行训练的文章,都会提到这个算法,比如第一视角多人游戏(Quake ...

  2. ImageNet Classification with Deep Convolutional Neural Networks 论文解读

    这个论文应该算是把深度学习应用到图片识别(ILSVRC,ImageNet large-scale Visual Recognition Challenge)上的具有重大意义的一篇文章.因为在之前,人们 ...

  3. 《Deep Feature Extraction and Classification of Hyperspectral Images Based on Convolutional Neural Networks》论文笔记

    论文题目<Deep Feature Extraction and Classification of Hyperspectral Images Based on Convolutional Ne ...

  4. Quantization aware training 量化背后的技术——Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference

    1,概述 模型量化属于模型压缩的范畴,模型压缩的目的旨在降低模型的内存大小,加速模型的推断速度(除了压缩之外,一些模型推断框架也可以通过内存,io,计算等优化来加速推断). 常见的模型压缩算法有:量化 ...

  5. Training Deep Neural Networks

    http://handong1587.github.io/deep_learning/2015/10/09/training-dnn.html  //转载于 Training Deep Neural ...

  6. Training (deep) Neural Networks Part: 1

    Training (deep) Neural Networks Part: 1 Nowadays training deep learning models have become extremely ...

  7. [CVPR2015] Is object localization for free? – Weakly-supervised learning with convolutional neural networks论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...

  8. Training spiking neural networks for reinforcement learning

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 原文链接:https://arxiv.org/pdf/2005.05941.pdf Contents: Abstract Introduc ...

  9. CVPR 2018paper: DeepDefense: Training Deep Neural Networks with Improved Robustness第一讲

    前言:好久不见了,最近一直瞎忙活,博客好久都没有更新了,表示道歉.希望大家在新的一年中工作顺利,学业进步,共勉! 今天我们介绍深度神经网络的缺点:无论模型有多深,无论是卷积还是RNN,都有的问题:以图 ...

  10. 论文翻译:BinaryConnect: Training Deep Neural Networks with binary weights during propagations

    目录 摘要 1.引言 2.BinaryConnect 2.1 +1 or -1 2.2确定性与随机性二值化 2.3 Propagations vs updates 2.4 Clipping 2.5 A ...

随机推荐

  1. JVM的整体结构

    整个jvm的运行流程图如上所示,首先需要进行加载class文件,然后使用类加载子系统将class翻译解析导入内存,在内存中分别导入到对应的运行时数据区,然后执行引擎开始执行,对于需要的数据在对应的区域 ...

  2. pycharm安装注意

    在安装pycharm时,一定要先去官网下载安装python新版. 安装python时候一定要选择自己熟悉的路径 在pycharm创建项目时编译器选择versions/3.8/bin/python3,这 ...

  3. 分页查询对象Page

    1 public class Page { 2 //当前页码 3 private Integer pageNo = 1; 4 //每页显示条数 5 private Integer pageSize = ...

  4. 第二次UML作业

    博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018S ...

  5. Camera光学、成像和 3A 算法 (视觉),camera开发

    简单介绍 转载:https://blog.csdn.net/ShareUs/article/details/94295628 成像与光学.计算机视觉,图像处理,数字成像.自动驾驶与视觉. 镜头设计:人 ...

  6. rm -rf /*真的能删掉所有文件吗?

    大佬们对于小白问的问题经常直接就是一个rm -rf /*丢过去(逃,被丢了很多次,所以印象深刻),但玩了这么久的梗,当我真正想删库的时候,这条命令却然并卵(滑稽,删库跑路都跑不成). 查看了下文件属性 ...

  7. ubuntu20 使用命令安装 rabbitmq

    安装 rabbitmq sudo apt-get install erlang-nox -y sudo apt-get update sudo apt-get install rabbitmq-ser ...

  8. 多台centos7服务器实现SSH免密登陆

    一.环境 centos7.x 三台 node1.node2.node3 二.实现免密登陆 2.1.node1上,生成公钥与私钥 [root@node1 ~]# ssh-keygen Generatin ...

  9. 多测师讲解接口测试__mock___高级讲师肖sir

    一.关于Mock测试 1.什么是Mock测试?mock测试,源自于英文单词fake,意为假的测试实际工作中用于模拟那些无法实时连接的后端,或是没有开发出来的后端,用于获得结果反馈的一种测试方式.通过发 ...

  10. Kubernetes K8S之存储ConfigMap详解

    K8S之存储ConfigMap概述与说明,并详解常用ConfigMap示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS ...