TensorFlow2.x CNN
1. 基本概念
1.1 神经网络的组成
元素 | 描述 |
---|---|
结构 (Architecture) | 神经网络中的变量可以是神经元连接的权重 |
激活函数 (Activity Rule) | 大部分神经网络模型具有一个短时间尺度的动力学规则,来定义神经元如何根据其他神经元的活动来改变自己的激励值 |
学习规则 (Learning Rule) | 学习规则指定了网络中的权重如何随着时间的推移而调整(反向传播算法) |
1.2 神经网络常用方法
算法 | 策略 | 优化 |
---|---|---|
线性回归 | 均方误差(MSE) | 梯度下降 |
逻辑回归 | 对数似然损失 | 梯度下降 |
神经网络 | 交叉熵损失 | 梯度下降+BP |
1.3 深度学习网络
- 在深度学习网络中,每一个节点层在前一层输出的基础上学习识别一组特定的特征,随着神经网络深度增加,节点所能识别的特征也越来越复杂
2. 卷积神经网络 (CNN)
- CNN: Convolutional Neural Network
- CNN本质
- 是一种从输入到输出的映射
- 它能够学习大量的输入与输出之间的映射关系,而不需要任何输入与输出间的具体的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对间的映射能力
- CNN用途
- 以一定的模型对事物进行特征提取,提取到能最大程度区分事物的特征
- 根据特征对此事物进行分类、识别、预测或决策
- CNN原理
- 通过一个个的Filter(Kernel),不断地提取特征,从局部的特征到总体的特征,从而进行图像识别或分类功能
- 每个Filter中的各个数字就是其参数,可以通过大量的数据让机器自己去学习这些参数
- 卷积核/滤波器
- 一个卷积核只提取一种特征
- 多核卷积
- 由于一个卷积核只提取一种特征,为了全面了解目标的特征,需从多角度(特征)了解目标,从而更加准确可靠地识别目标,所以需要多个卷积核以提取目标的多个不同特征
2.1 CNN基本结构
2.2 CNN的尺寸关系
- 输入图像与卷积核的深度一致性:
- 输入图像:W x H x D ©
- 卷积核: K x K x D ©
- 即卷积核的深度必须与输入图像或特征图的深度相同。
- 一个卷积核生成一个特征图(W’ x H’ x 1)
- 输出特征图尺寸:
W
o
×
H
o
×
D
o
W_o \times H_o \times D_o
Wo×Ho×Do
- D o D_o Do:Filter个数
- W o = ( W i + 2 P − K ) / S + 1 W_o = (W_i + 2P - K)/S + 1 Wo=(Wi+2P−K)/S+1
-
H
o
=
(
H
i
+
2
P
−
K
)
/
S
+
1
H_o = (H_i + 2P - K)/S + 1
Ho=(Hi+2P−K)/S+1
- P P P:Padding的像素数
- S S S:步长(stride)
- K K K:Filter的宽度
2.3 卷积参数
- 步长(stride):水平和垂直方向每次的步进长度
- 1: 卷积起始坐标为(+1):0, 1, 2, …
- 2: 卷积起始坐标为(+2):0, 2, 4, …
- 3: 卷积起始坐标为(+3):0, 3, 6, …
- 填充值(zero-padding)
- 图像四周填充0
- 可达到卷积(stride=1)之后的特征图与输入宽高一致
2.4 卷积层
- 卷积核:用于执行卷积,生成特征面中的一个神经元
- 卷积核是一个权值矩阵(其矩阵中的每个元素就是待学习的参数,如:5x5x3)
- 通过卷积操作从输入图像/特征图中提取不同的特征
- 特征面(Feature map)
- 每个特征面由多个神经元组成,它的每一个神经元通过卷积核与上一层特征面的局部区域相连
- 特征是不断进行提取和压缩的,最终能得到比较高层次特征,即:对原始特征进行一步一步的浓缩,最终得到了可靠的特征(抓住了事物的本质)
- 使用最后一层特征(即本质),执行各种任务:如分类、回归
- 关键特点
- 局部感知
- 原理:通过在底层的局部扫描获得图像的局部特征,然后在高层综合这些特征获得图像的全局信息
- 底层逻辑:图片中相邻区域具有更大的相关性,距离较远的区域相关性较小
- 作用:降低参数的数目
- 权值共享
- 通过卷积核进行卷积,输入图像/特征图经过卷积后会得到一张新的特征图(Feature map),且本张新特征图中的每个像素(神经元)都来自同一个卷积核,这就是权值共享。(即同一张特征图中的所有神经元通过同一个卷积核生成)
- 底层逻辑:特征具有平移不变性(即特征与其在输入中的位置无关),而一个特定的卷积核只提取一种特定的特征,所以权值可以共享 (即通过一个卷积核的操作提取了原图中不同位置的相同/类似特征,不同位置的相同目标,具有相同/类似的特征)
- 作用:进一步大大地降低参数数目
- 局部感知
2.5 卷积计算
2.6 3-DCNN与2D-CNN的比较
- 3D-CNN:3-dimensional convolutional networks (3D ConvNets)
- 2D-CNN:2-dimensional convolutional networks (2D ConvNets)
- 比较
- 3D-CNN比2D-CNN更适合学习时空特征(spatio-temporal feature)
CNN | 卷积核 | 学习空间特征 | 学习时间特征 | 输出图像个数 |
---|---|---|---|---|
2D-CNN | 3x3xL (L=输入图像通道数) | 是 | 否 | 无论应用于单通道或多通道图像, 其输出都只有一个特征图 |
3D-CNN | 3x3x3 (3<输入图像通道数) | 是 | 是 | 应用于多通道(>=3)图像, 输出为多个特征图(立体图) |
3. 池化层(Pooling)
- 本质:就是下采样
- 原理
- 通过降低特征面的分辨率来获得具有空间不变性的特征
- 特征
- 特征面(Feature map)个数不变
- 特征面(Feature map)分辨率变小,只针对每个特征面单独处理,即卷积层的一个特征面与池化层中的一个特征面一一对应
- 输入:卷积层(卷积+激活)的输出
3.1 池化方法
- 最大池化(max pooling):取局部感受域中的最大值作为池化后的值
- 平均池化(mean pooling):取局部感受域中所有值的平均值作为池化后的值
- 随机池化
3.2 功能
3.3 全连接层
- 本质:整合局部信息
- 功能
- 全连接层中的每个神经元与其前一层的所有神经元进行全连接
- 全连接层可以整合卷积层或池化层中具有类别区分性的局部信息
- 为了提高CNN网络性能,全连接层每个神经元的激活函数一般采用ReLU
- 最后一层全连接层输出给一个输出层,如softmax层(分类器)
4. 各层功能总结
参考
[1] 神经网络动态演示及调参