Q1:CNN 中的全连接层为什么可以看作是使用卷积核遍历整个输入区域的卷积操作?

A1:以 AlexNet 为例,AlexNet 最后 3 层为全连接层,第一个全连接层的输入层是由卷积层做拉伸而得。对于第一个全连接层中的任一个神经元 \(FC_i^{(1)}\),其都和输入层中所有神经元相连,如果我们将输入层神经元排列成 6×6×256,即对输入层不进行拉伸,那么神经元 \(FC_i^{(1)}\) 就相当于对输入层乘以一个 6×6×256 的 filter(即 filter 的大小和 feature map 是一样的),经激活函数后得到的就是该神经元 \(FC_i^{(1)}\) 的输出。如果有 4096 个 filter,那么第一个全连接层就会有 1×1×4096 个神经元。
  之后情况类似,用 4096 个 1×1×4096 的 fiter 进行卷积即可得到第二层全连接层(1×1×4096),用 1000 个 1×1×4096 的 fiter 进行卷积即可得到第三层全连接层(1×1×1000)。所以全连接层也可以看成是卷积核遍历整个输入区域的卷积操作。

图 1 AlexNet

Q2:1×1 的卷积核(filter)怎么理解?

A2:首先需要搞清楚,1×1 的 filter 都干了些什么。
1)不改变 feature map 的大小。即当 stride 和 padding 分别为 1 和 0 时,使用 1×1 的 filter 对大小为 6×6 的 feature map 进行卷积,并不会改变 feature map 的大小。
2)会改变 channel 的数量,以此来达到升维和降维。下一层 channel 数量由该层 filter 的个数决定。
3)增加了非线性。下一层每一个 channel 的 feature map 中任意一点都是上一层同一位置所有 channel 的非线性组合(因为有非线性激活函数)。
4)channel 间信息的交互。

Q3:什么是感受野(Receptive field)?

A3:感受野是指卷积神经网络每一层特征图(feature map)上的神经元在原始图像上映射的区域大小。
  图 2 中,原始图像上的像素点只能看到本身,故可以认为其感受野为 1×1;conv1 中神经元能看到原始图像的 3×3,故其感受野为 3×3;而 conv2 中神经元能看到原始图像 5×5 的区域,故其感受野为 5×5。

图 2 卷积

Q4:对含有全连接层的 CNN,输入图像的大小必须固定?

A4:以图 1 中展示的 AlexNet 为例,如果 CNN 的输入层大小改变,那么 AlexNet 全连接层的输入层(由卷积层拉伸而得的)神经元个数是会改变的,或者说拉伸前 feature map 的大小变了,后面的全连接操作也没法做了(全连接层参数的个数都改变了)。
  完全卷积网络(Fully Convolutional Network,FCN)的输入图像可以为任意大小,当然输出结果的大小和输入图像大小相关。FCN 的做法就是把全连接层换成了卷积层,参数个数没变。如图 3 把 AlexNet 最后三层全连接层变为卷积层,就得到一个 FCN。

图 3 AlexNet to FCN

Q5:什么是 Global Average Pooling(GAP)?

图 4 Fully connected layer and Global Average Pooling (GAP) layer

A5:Global Average pooling(GAP)和 (local)average pooling 其实就是一个东西,只是 pooling 时对 feature map 作用的区域有区别:global 意味着对 feature map 的整个区域,即对一个 feature map 的整个区域求均值最后得到一个值;而 local 则意味着 feature map 中的一小块区域,如 2×2、3×3 等。

图 5  CNN

图 6  CNN with Global Average Pooling (GAP) layer

  那么 GAP 有没有什么好处呢?由于没有了全连接层,输入就不用固定大小了,因此可支持任意大小的输入;此外,引入GAP更充分的利用了空间信息,且没有了全连接层的各种参数,鲁棒性强,也不容易产生过拟合;还有很重要的一点是,在最后的 mlpconv层(也就是最后一层卷积层)强制生成了和目标类别数量一致的特征图,经过GAP以后再通过softmax层得到结果,这样做就给每个特征图赋予了很明确的意义,也就是categories confidence maps。参见博客 凭什么相信你,我的CNN模型?(篇一:CAM和Grad-CAM) -- 宾狗

Q6:什么是 depthwise separable convolution?Depthwise convolution 和 pointwise convolution 分别又是什么?

A6:Depthwise separable convolution 将一个标准的卷积操作(如 LeNet、AlexNet 等网络中的卷积)分为两个部分,分别是 depthwise convolution 和 pointwise convolution。Separable convolution 的参数数量少于标准卷积。

图 7  standard convolution

  Depthwise convolution 中 filter 的个数和输入数据的 channel 数一致,且每个 filter 的大小为 W×H×1(W 和 H 分别为输入层 feature map 的宽、高),每一个 filter 只和输入数据对应的一个 channel 做 convolution。Depthwise convolution 在每一个 channel 上独立地执行 spatial convolution,channel 之间没有交互,只利用了 feature map 上的空间信息。

图 8  depthwise convolution

  Pointwise convolution 中 filter 的个数任意,filter 的个数决定了输出层 channel 的数目,其每个 filter 大小为 1×1×C(C 为输入层的 channel 数)。Pointwise convolution 将 depthwise convolution 生成的 feature channels 投影到新的 channel space,这一步输入层 channel 之间的信息进行了交互。

图 9  pointwise convolution

  将图 8 中展示的 depthwise convolution 和图 9 的 pointwise convolution 拼接起来,就是一个 depthwise separable convolution。

References

语义分割中的深度学习方法全解:从FCN、SegNet到各代DeepLab -- 量子学园
一文读懂卷积神经网络中的1x1卷积核 -- Amusi
深度神经网络中的感受野(Receptive Field) -- 蓝荣祎
FCN的学习及理解(Fully Convolutional Networks for Semantic Segmentation)-- 凹酱deep
关于 global average pooling -- 默一鸣
凭什么相信你,我的CNN模型?(篇一:CAM和Grad-CAM) -- 宾狗
卷积神经网络中的Separable Convolution -- 尹国冰

“卷积神经网络(Convolutional Neural Network,CNN)”之问的更多相关文章

  1. 卷积神经网络(Convolutional Neural Network, CNN)简析

    目录 1 神经网络 2 卷积神经网络 2.1 局部感知 2.2 参数共享 2.3 多卷积核 2.4 Down-pooling 2.5 多层卷积 3 ImageNet-2010网络结构 4 DeepID ...

  2. 深度学习FPGA实现基础知识10(Deep Learning(深度学习)卷积神经网络(Convolutional Neural Network,CNN))

    需求说明:深度学习FPGA实现知识储备 来自:http://blog.csdn.net/stdcoutzyx/article/details/41596663 说明:图文并茂,言简意赅. 自今年七月份 ...

  3. 卷积神经网络Convolutional Neural Networks

    Convolutional Neural Networks NOTE: This tutorial is intended for advanced users of TensorFlow and a ...

  4. Convolutional neural network (CNN) - Pytorch版

    import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms # ...

  5. 斯坦福大学卷积神经网络教程UFLDL Tutorial - Convolutional Neural Network

    Convolutional Neural Network Overview A Convolutional Neural Network (CNN) is comprised of one or mo ...

  6. 卷积神经网络(Convolutional Neural Network,CNN)

    全连接神经网络(Fully connected neural network)处理图像最大的问题在于全连接层的参数太多.参数增多除了导致计算速度减慢,还很容易导致过拟合问题.所以需要一个更合理的神经网 ...

  7. 【转载】 卷积神经网络(Convolutional Neural Network,CNN)

    作者:wuliytTaotao 出处:https://www.cnblogs.com/wuliytTaotao/ 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,欢迎 ...

  8. 【RS】Automatic recommendation technology for learning resources with convolutional neural network - 基于卷积神经网络的学习资源自动推荐技术

    [论文标题]Automatic recommendation technology for learning resources with convolutional neural network ( ...

  9. 卷积神经网络(Convolutional Neural Networks)CNN

     申明:本文非笔者原创,原文转载自:http://www.36dsj.com/archives/24006 自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural ...

  10. 树卷积神经网络Tree-CNN: A Deep Convolutional Neural Network for Lifelong Learning

    树卷积神经网络Tree-CNN: A Deep Convolutional Neural Network for Lifelong Learning 2018-04-17 08:32:39 看_这是一 ...

随机推荐

  1. lua函数随记

    在大多数Lua语法分析中可以获得这些标准Lua函数. 无可争辩, 我们可以查阅Lua网站, 但是一些少了的函数被Blizzard进行了调整. 下面列出了所有Lua函数. WoW API中的Lua注意在 ...

  2. Android设计开发笔记

    1.因为Android的开发是基于框架的开发:往对方指定的位置加代码:其运行的Message\Handler机制也决定了其单步跟踪也不方便,所以建立新代码时要多Log,这样不但便于调试,而且帮助你加深 ...

  3. Django Web项目代码规范参考

    Python:PEP8+GoogleStyle+DjangoSytlePEP8中文版:http://www.cnblogs.com/huazi/archive/2012/11/28/2792929.h ...

  4. WebSocket 和 Golang 实现聊天功能

    http://www.open-open.com/lib/view/open1416379948711.html 这个示例应用程序展示了如何使用 WebSocket, Golang 和 jQuery  ...

  5. python3学习笔记1---引用http://python3-cookbook.readthedocs.io/zh_CN/latest/

    2018-02-28数据结构和算法(1) 1.1解压序列赋值给多个变量: 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量. 唯一的前提就是变量的数量必须跟序列元素的数量是 ...

  6. python爬虫——词云分析最热门电影《后来的我们》

    1 模块库使用说明 1.1 requests库 requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更 ...

  7. python笔试题(1)

            为了充实自己,小编决定上传自己见到的笔试题和面试题.可能要写好长时间,一时半会写不了多少,只能说遇到多少写多少吧,但是只要小编有时间,会持续上传(但是答案却不能保证,所以有看到错误的及 ...

  8. js基础--浏览器标签页隐藏或显示状态 visibility详解

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 在工作中我们可能会遇到这样的需求,当浏览器切换到别的标签页或着最小化时,我们需要暂停页面上正在播放的视频或者音乐,这个需求 ...

  9. markdown 一分钟入门

    markdown 很好的一门标记语言 语法简单,记住下面的就入门了,一分钟不到 使用范围广,各式各样的编辑器支持markdown,评论也是支持的, 一般文档后缀为.md markdown 基本用法记住 ...

  10. SSM-MyBatis-17:Mybatis中一级缓存(主要是一级缓存存在性的证明,增删改对一级缓存会造成什么影响)

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 缓存------------------------------------------> 很熟悉的一个 ...