深度学习项目——表情识别(2)卷积基础和常用卷积模型

1. 图像基础

1.1 图像如何存储在计算机中

  • 灰度图矩阵

    0:白色
    1:黑色
    0-255:灰色
    在这里插入图片描述

  • 彩色图三个矩阵的叠加

彩色图 = 三个图层/三个通道每个图层由 0-255 的数字组成,用来表示红/绿/蓝 颜色的深浅)

比如,用0来表示最不红,255表示最红。
在这里插入图片描述
重要概念:width、height、channel

1.2 传统的图像处理

  • 人工算子(矩阵形式):参数
  • 卷积:运算
    在这里插入图片描述
    可以使用使用卷积神经网络,来自动学习参数。

2. 卷积的基本构件

2.1 卷积层

2.1.1 全连接神经网络 处理图像的问题

  • 全连接神经网络(DNN):上下层每一个神经元全部连接

  • 思路
    一张灰度图像(28x28)的全部像素 flatten 成一个n 维(28x28=784)向量,然后接上不同维度(64和32)的全连接层,最后接上 softmax ,输出相应维度(10)的向量,进行最后分类。

  • 采用全连接网络的问题:

  1. 参数太多
  2. 像素之间相关性太大
    在这里插入图片描述

2.1.2 卷积层的特性/作用

  • 共享参数:大大降低了网络参数——保证了网络的稀疏性,防止过拟合(之所以可以“参数共享”,是因为样本存在局部相关的特性。)
  • 局部感受野:解决相关性太大的问题

2.1.3 卷积层的几个重要概念

  • channel
    在这里插入图片描述
    可以理解为矩阵的叠加个数,如:
    彩色图的输入channel:3
    灰度图的输入channel:1

  • padding
    在这里插入图片描述
    填充(padding)的目的,比如0填充,是为了使得下一层的神经元的个数或者说 feature map 满足一定的条件(比如变大)。

  • strides
    增大步长(strides)可以增加感受野外。

  • kernel size
    卷积核的大小(kernel size)一般都选择的是奇数大小——因为奇数是对称的,它都有一个中心。

  • filters
    有几个不同的卷积核就有几个不同的 filter。

  • feature map
    一个卷积核“扫过“一次可以生成一个 feature map;
    几个 feature map 堆叠在一起就有几个channel

  • 感受野
    在这里插入图片描述
    感受野是非常重要的概念,对我们后期的建模有一定的指导意义(选择宏观信息还是局部信息?)

    比如顶层神经元的感受野是”全局感受野“,意味着顶层神经元蕴含着底层所有像素的信息。

注:关于(对底层 feature map) padding 的两个参数

  • SAME 参数:做padding 且自动计算(有公式)

  • VALID 参数:不做 padding

  • 特殊卷积:1x1 卷积
    1x1 卷积 虽然不能改变 feature map 的长和宽,但是可以在channel 维度做一些文章,比如压缩通道扩展通道

    在这里插入图片描述

2.2 池化层

化层层需要学习参数

  • 平均池化
  • 最大池化

注: 特殊池化,比如 global 池化(全局效果的池化)

2.3 CNN架构设计原则

在这里插入图片描述

  • feature map 会越来越小
  • channel 会越来越大

3. 卷积的经典结构

在这里插入图片描述

3.1 Lenet 结构

Lenet (GoogleNet)是 CNN 运用到真实场景的一个开端。
在这里插入图片描述

3.2 Alexnet 结构

Alexnet 是第一次运用在非常大的数据集( ImageNet )
在这里插入图片描述
重要的创新/技巧:

  • Dropout
    在倒数2-3层的全连接层上加入了Dropout 机制,随机屏蔽一些神经元(后期还需要对参数进行还原)

该技巧提升了模型的泛化能力

  • Data augment
    数据增强可以大大提升可以训练的数据量。

3.3 Inception 结构

(Google)

使用不同处理手段,最后按照 channel 维度拼接(需满足长和宽的维度大小——需要做padding),作为下一层的输入。
在这里插入图片描述

  • 不同感受野
    引入了 block,相当于引入了不同的感受野(集合到了一块)——相当于拥有了看”宏观信息“和”微观信息“的能力。
  • 引入 1x1 的卷积
  1. 使得通道(channel)之间有了一定的沟通
  2. 压缩了 feature map,使得下一层卷积核的参数大大减少。
  • Batchnorm 的引入
    注意:CNN 和 DNN 的使用方法有些不一样(维度不一样)

  • 2 个3x3 代替 5x5
    真正理解”感受野“才行——让最顶层的神经元获取底层的所有信息即可:
    5x5 的 feature map 可以用 5x5 的卷积核直接进行卷积,得到 1 个神经元;
    5x5 的 feature map 也可以 由 1 个 3x3 的卷积核进行卷积得到 3x3的 feature map,最后再接一个卷积核就可以得到一个 1x1 的 feature map。
    即用 2 个 3x3 的卷积核可以达到 1 个 5x5 卷积核达到的感受野
    同时,5x5的参数个数是 5x5=25 个,2 个3x3的只需要 3x3 + 3x3=18 个参数。参数越少越不容易过拟合,而且易于计算。

3.3 VGGNet

(微软)

VGGNet 完全依照 CNN的基本设计原则:
channel 越来越大;
feature map 的size 越来越小

VGGNet完全由卷积层和池化层的得加而来。
在这里插入图片描述
VGGNet完全由卷积层和池化层的得加而来。但是不能做得太深,直到微软又发明出了 Resnet(残差网络)

3.4 Resnet

残差网络在模型深度上有了新的突破,能轻易地训练到100多层!

在这里插入图片描述
注意: 图中的加号➕指的是维度上相加,所以 feature map 的长、宽以及 channel 必须统一。
(注:长跟宽-可以通过 padding 来完成统一;channel-可以通过 1x1的卷积来完成扩展或压缩)

  • Skip connection 跳层连接

假设在一个深度网络中,我们期望一个非线性单元(可以为一层或多层的 卷积层)f(x, θ)去逼近一个目标函数为h(x)。
有论文指出,残差函数—— h(x) - x 相比原始函数h(x) 更容易学习。
因此, 原来的优化问题可以转换为:让非线性单元 f (x, θ) 去近似残差函数 h(x) − x,并 用f(x,θ)+x 去逼近h(x)。
在这里插入图片描述

  • Resnet 为什么效果很好,简单分析:
  1. 纯数学上,可以解决梯度消失的问题(BP角度)
  2. 集成模型(high way 角度)
  3. 是 ODE 方程的一个数学近似

3.4 Xception

深度可分离卷积
在这里插入图片描述
思想:先卷积区域,再融合通道

参数量会少很多;
将空间信息和通道信息分离;(假设)

比如,人脸 RGB 三种颜色、三层信息应该都能单独识别出人脸信息,而不应该非要融合在一起才能起作用。

可以继续参考:
4. 卷积神经网络中十大拍案叫绝的操作

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值