CNN笔记

作者: 音符纸飞机 | 来源:发表于2019-03-05 16:21 被阅读2次

卷积层

负责特征提取

原理

  • RGB三个通道,或者叫做深度。
  • 3D滤波器/卷积核的深度与输入特征一致,计算过程是两个三维矩阵的点积加上一个偏置,每一个卷积核对应一个输出层。所以输出有很多层(深度),每一层捕捉一种局部特征
  • 卷积核需要自学习
卷积层图示,卷积核的数量是5,即输出矩阵的厚度是5
卷积原理演示 卷积层操作图解,输入三通道,步长2,补零1,两个卷积核
两个卷积核
  • 感受野:在卷积神经网络CNN中,决定某一层输出结果中一个元素所对应的输入层的区域大小,被称作感受野receptive field


    image.png

非线性激活函数

ReLU:分段线性,无饱和问题(是为了解决Sigmoid函数带来的梯度消失问题)
激活函数在神经网络中的功能即通过对加权的输入进行非线性组合产生非线性决策边界


ReLU

池化层

特征融合,尺寸降维


最大化池化样例

全连接层

负责推断
相当于K个全局卷积,K是分类的数量。
有全连接层的结构输入图像的尺寸必须是固定的,因为最后一个卷积层的输出到第一个全连接层的卷积核的大小是固定的。
理解全连接层好文
例如经过卷积,relu后得到3x3x5的输出。
那它是怎么样把3x3x5的输出,转换成1x4096的形式?

全连接
从上图我们可以看出,我们用一个3x3x5的filter 去卷积激活函数的输出,得到的结果就是一个fully connected layer 的一个神经元的输出,这个输出就是一个值。因为我们有4096个神经元。我们实际就是用一个3x3x5x4096的卷积层去卷积激活函数的输出。
全连接的作用

从上图我们可以看出,猫在不同的位置,输出的feature值相同,但是位置不同。
对于电脑来说,特征值相同,但是特征值位置不同,那分类结果也可能不一样。
这时全连接层filter的作用就相当于喵在哪我不管,我只要喵,于是我让filter去把这个喵找到,实际就是把feature map 整合成一个值,这个值大,有喵,这个值小,那就可能没喵和这个喵在哪关系不大了,鲁棒性有大大增强。
因为空间结构特性被忽略了,所以全连接层不适合用于在方位上找Pattern的任务,比如segmentation。

归一化层

Softmax 折算成概率
取log后,用于构建loss

工程技巧

图像像素中心化

每个通道上每个像素的灰度值减去各自通道的均值

数据增强

每张图片变成10张

dropout

随机失活,用于防止过拟合。训练中随机让一些神经元的输出为0,失活率一般设置为0.5。用于全连接层。

Weight Decay

权重衰减 L2正则 抑制每个权重的作用

AlexNet

CNN网络架构演进:从LeNet到DenseNet
AlexNet论文翻译对照
5 卷积层+3全连接层 + ReLU + MaxPool + Dropout

LRN - Local Response Normalization
跨通道方向上的归一化
n为领域值,N为通道数


LRN

Network-in-network (NiN) (bottleneck layer)
1x1的卷积层
特征降维

loss function 用的交叉熵 ,因为softmax的输出是概率分布

VGG

大卷积分解成多个小卷积,为了减少参数,降低计算,增加网络深度
7x7 -> 3个3x3
网络改造的首选
19层的效果最好

GoogLeNet

增加宽度、深度,减少参数,降低计算
Google Inception Net论文细读

Inception v1
  • Split-Merge
    1x1 3x3 5x5 3x3池化
    最后对四个成分运算结果进行通道上组合。
    但是如果简单的将这些应用到feature map上的话,concat起来的feature map厚度将会很大,所以在googlenet中为了避免这一现象提出的inception具有如下结构,在3x3前,5x5前,max pooling后分别加上了1x1的卷积核起到了降低feature map厚度的作用。
    增加对多尺度的适应,增加网络宽度

  • 取消全连接
    由全局平均池化代替
    输入7x7x1024
    输出 1x1x1024 (其实就是每个通道取平均值,将N个feature map降维成1N大小的feature map,再用class个11卷积核将1N的feature map卷成1class的向量)

  • 辅助分类器
    解决前几层的梯度消失问题,帮助收敛
    测试阶段不使用


    Inception v1

其他:关于+1(S) +1(V)
V stands for a 'valid' convolution (output size = input size - filter size + 1), and S stands for a 'same' convolution (output size = input size). -> border_mode

Inception v2
  • Batch Normalization (BN批归一化)
    在每一层输出的时候,针对每一个通道上的特征图,把这一批次所有的特征图求平均值和方差,然后把所有像素上的值减去均值,除以方差。这一步是算出来的。
    配对使用一个Scale和shift。这一步的参数是学出来的。
    一般是用在Activation之前。
    解决Internal Covariate Shift问题


    Internal Covariate Shift

白化:使每一层的输出都规范化到N(0,1)
BN博文
视频学习

BN示意图
训练阶段vs测试阶段
  • 5x5 变成两个3x3


Inception v3
  • 非对称卷积 NxN分解成1xN 和 Nx1


    V3核心组件
  • 降尺寸前增加特征通道


    320先变成640,再降维
  • 取消浅层的辅助分类器
    实验证明 完全无用

工程成本很大,因为每一层用的结构不一样

Inception v4
  • 引入残差


    v4

ResNet

直连 skip/shortcut connection
F(x)是残差映射,H(x)的梯度保证>1
推荐博文

ResNet
  • 步长为2的卷积代替池化

ResNeXt

  • 提出第三个DNN维度cardinality


    ResNeXt

DenseNet

推荐博文

PolyNet

推荐博文

SENet

推荐博文

AmoebaNet

推荐博文

GPIPE

CNN设计原则

感受野要大


分组策略

相关文章

  • 2018-12-27制作自己的数据集

    CNN tensorflow 学习笔记(六)- 用自己的数据集训练CNN模型 TFRecord数据集 python...

  • 用 Tensorflow 建立 CNN

    稍稍乱入的CNN,本文依然是学习周莫烦视频的笔记。 还有 google 在 udacity 上的 CNN 教程。 ...

  • CNN笔记

    卷积层 负责特征提取 原理 RGB三个通道,或者叫做深度。 3D滤波器/卷积核的深度与输入特征一致,计算过程是两个...

  • CNN理解笔记

    转载:https://blog.csdn.net/Chrls_Wang/article/details/51706...

  • CNN的笔记

    google CNN 视频教程如果你的数据具有某种结构,但你的网络并不需要从头开始学习这个结构,他可能表现的更好,...

  • 学习笔记:CNN

    这是我看过讲解CNN最详细,最清楚的视频,特色是理论和pytorch代码相结合:刘二大人的视频。 首先需要从整体上...

  • CNN学习笔记

    卷积神经网络-CNN 卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习(deep learn...

  • CNN基本原理介绍

    这篇文章写的很清晰【DL笔记6】从此明白了卷积神经网络(CNN)

  • cs231n学习笔记-CNN-目标检测、定位、分割

    cs231n学习笔记-CNN-目标检测、定位、分割 cite from: http://blog.csdn.net...

  • Mask R-CNN论文阅读笔记

    title: Mask R-CNN论文阅读笔记date: 2019-06-04 11:36:32tags: ins...

网友评论

      本文标题:CNN笔记

      本文链接:https://www.haomeiwen.com/subject/dtmpyqtx.html