Professional Documents
Culture Documents
计算机视觉 卷积神经网络基础C7
计算机视觉 卷积神经网络基础C7
卷积神经网络基础
学习目标 狗熊会 | 深度学习入门
1. 卷积神经网络的基本结构;
2. 卷积的概念、分类、原理, TensorFlow 实现和相关性质;
3. 池化的概念、分类、原理与 TensorFlow 实现。
狗熊会|聚数据英才,助产业振兴
PART 7.1
卷积神经网络的基本结构
狗熊会|聚数据英才,助产业振兴
7.1 卷积神经网络 狗熊会 | 深度学习入门
存在问题 ~~~~~~
带来的后果是???过拟合
解决办法:卷积
狗熊会|聚数据英才,助产业振兴
7.1 卷积神经网络 狗熊会 | 深度学习入门
狗熊会|聚数据英才,助产业振兴
PART 7.2
卷积与池化的通俗理解
狗熊会|聚数据英才,助产业振兴
7.2.1 对卷积的理解 狗熊会 | 深度学习入门
示例任务:分辨照片是否是熊大
机械化过程:
需要记录熊大特征的照片,记为“卷积核”;
用 “卷积核” 扫描身份证,寻找是否有某个位置出现熊大的特征;
将卷积核与身份证上某个位置的图像特征进行相似度计算,这个计
算就是“卷积”。
狗熊会|聚数据英才,助产业振兴
7.2.2 对池化的理解 狗熊会 | 深度学习入门
熊大图像是否出现在身份证上,只依赖于计算出的相似特征的最大值,即只需要有一个局部图像与熊大照
片非常相像,就可以认为身份证上出现了熊大头像。
卷积核在图像上不断扫描的过程中,我们只关心卷积计算结果的最大值,这个最大化的操作,就是一种特
殊的池化方法,被称为最大值池化( Max-Pooling )。
卷积就是计算某种局部的相似性,而池化就是将某种最突出的相似性选择出来。
狗熊会|聚数据英才,助产业振兴
PART 7.3
卷积
狗熊会|聚数据英才,助产业振兴
7.3 卷积 狗熊会 | 深度学习入门
狗熊会|聚数据英才,助产业振兴
7.3 卷积 狗熊会 | 深度学习入门
狗熊会|聚数据英才,助产业振兴
上述例子发现:卷积核能够提取图像的基本特征。
狗熊会 | 深度学习入门
*
1 1 0 尺寸缩小。②原始图片边
1 1 1
= 缘信息对输出贡献得少,
输出图片丢失边缘信息。
解决方法:
padding 操作( Same
卷积核 convolutions )
3*3 3*3
5*5
卷积计算示例图
狗熊会|聚数据英才,助产业振兴
7.3.1 卷积运算原理 狗熊会 | 深度学习入门
卷积运算类型
full 卷积
same 卷积
valid 卷积
示例: 3 行 3 列的二维张量和 2 行 2 列的二维张量的卷积
又称为卷积核或滤波器
狗熊会|聚数据英才,助产业振兴
7.3.1 卷积运算原理 狗熊会 | 深度学习入门
full 卷积
计算过程:
沿着按照先行后列的顺序移动,每
移动到一个固定位置,对应位置的
值相乘,然后求和。
full 是完全的意思,即只要像素矩阵
与卷积核元素有一个位置重叠,就
要计算,并将落在像素矩阵外的元
素全部视为 0 。
狗熊会|聚数据英才,助产业振兴
7.3.1 卷积运算原理 狗熊会 | 深度学习入门
full 卷积
在实际应用当中有意义未知,它可能对有些数据有效,对有些数据无效
计算结果
TensorFlow 代码实现
tf.nn.conv2d ( input,filter,strides,padding,use_cudnn_on_gpu = True,
data_format = “NHWC”,dilations = [1,1,1,1],name = None )
狗熊会|聚数据英才,助产业振兴
7.3.1 卷积运算原理 狗熊会 | 深度学习入门
same 卷积
same 的含义是卷积前后像素矩阵保持同样维度。
常用
指定起始点
狗熊会|聚数据英才,助产业振兴
7.3.1 卷积运算原理 狗熊会 | 深度学习入门
same 卷积
计算结果
狗熊会|聚数据英才,助产业振兴
7.3.1 卷积运算原理 狗熊会 | 深度学习入门
same 卷积
TensorFlow 代码实现
狗熊会|聚数据英才,助产业振兴
7.3.1 卷积运算原理 狗熊会 | 深度学习入门
valid 卷积
只考虑 X 能完全被 K 覆盖的情况
计算过程
狗熊会|聚数据英才,助产业振兴
7.3.1 卷积运算原理 狗熊会 | 深度学习入门
valid 卷积
计算结果
TensorFlow 代码实现
conv=tf.nn.conv2d(X,K,(1,1,1,1),'VALID')
狗熊会|聚数据英才,助产业振兴
7.3.2 卷积结果的输出 狗熊会 | 深度学习入门
Same 卷积 Valid 卷积
输入张量大小 R行L列 R行L列
卷积核大小 FR 行 FL 列 FR 行 FL 列
垂直方向移动步长 SR SR
水平方向移动步长 SL SL
狗熊会|聚数据英才,助产业振兴
7.3.3 多通道卷积原理 狗熊会 | 深度学习入门
基本的多通道卷积
示例:
1 个 3 行 3 列 2 深度的三维张量与 1 个 2 行 2 列 2 深度的三维卷积核的 valid 卷积
狗熊会|聚数据英才,助产业振兴
7.3.3 多通道卷积原理 狗熊会 | 深度学习入门
基本的多通道卷积
卷积过程
狗熊会|聚数据英才,助产业振兴
7.3.3 多通道卷积原理 狗熊会 | 深度学习入门
基本的多通道卷积
卷积结果
TensorFlow 代码实现
狗熊会|聚数据英才,助产业振兴
7.3.3 多通道卷积原理 狗熊会 | 深度学习入门
单个张量与多个卷积核的卷积
卷积过程
狗熊会|聚数据英才,助产业振兴
7.3.3 多通道卷积原理 狗熊会 | 深度学习入门
单个张量与多个卷积核的卷积
TensorFlow 代码实现
狗熊会|聚数据英才,助产业振兴
7.3.3 多通道卷积原理 狗熊会 | 深度学习入门
多个张量与多个卷积核的卷积
卷积过程
狗熊会|聚数据英才,助产业振兴
7.3.3 多通道卷积原理 狗熊会 | 深度学习入门
多个张量与多个卷积核的卷积
TensorFlow 代码实现
狗熊会|聚数据英才,助产业振兴
7.3.3 多通道卷积原理 狗熊会 | 深度学习入门
在每一通道上分别卷积(深度可分离卷积)
将张量与卷积核对应的每一层进行线性运算,但是不将每一层的结果相加
卷积过程
狗熊会|聚数据英才,助产业振兴
7.3.3 多通道卷积原理 狗熊会 | 深度学习入门
单个张量与多个卷积核在通道上分别卷积
卷积过程
狗熊会|聚数据英才,助产业振兴
7.3.3 多通道卷积原理 狗熊会 | 深度学习入门
单个张量与多个卷积核在通道上分别卷积
TensorFlow 代码实现
conv=tf.nn.depthwise_conv2d(X,K,(1,1,1,1),'VALID')
狗熊会|聚数据英才,助产业振兴
7.3.4 卷积运算的三个特性 狗熊会 | 深度学习入门
狗熊会|聚数据英才,助产业振兴
PART 7.4
池化操作
狗熊会|聚数据英才,助产业振兴
7.4 池化操作 狗熊会 | 深度学习入门
狗熊会|聚数据英才,助产业振兴
7.4.1 same 池化 狗熊会 | 深度学习入门
Same 最大值池化
示例:
张量 X 池化窗口
狗熊会|聚数据英才,助产业振兴
7.4.1 same 池化 狗熊会 | 深度学习入门
Same 最大值池化
计算过程
狗熊会|聚数据英才,助产业振兴
7.4.1 same 池化 狗熊会 | 深度学习入门
Same 最大值池化
池化结果
TensorFlow 代码实现:
tf.nn.max_pool()
狗熊会|聚数据英才,助产业振兴
7.4.1 same 池化 狗熊会 | 深度学习入门
三维张量 池化窗口
X
狗熊会|聚数据英才,助产业振兴
7.4.1 same 池化 狗熊会 | 深度学习入门
狗熊会|聚数据英才,助产业振兴
7.4.1 same 池化 狗熊会 | 深度学习入门
TensorFlow 代码实现
狗熊会|聚数据英才,助产业振兴
7.4.1 same 池化 狗熊会 | 深度学习入门
卷积与池化的区别
卷积核的权重是一个未知的参数;而池化仅仅没有未知参数需要估计,也不需要参数优化的过程。因
此,对计算机而言,池化是非常简单的操作。
不管输入的像素矩阵有多少通道,只要进行卷积运算,一个卷积核参与计算只会产生一个通道;而池
化是分层运算,输出的像素矩阵的通道取决于输入像素矩阵的通道数。
狗熊会|聚数据英才,助产业振兴
7.4.1 same 池化 狗熊会 | 深度学习入门
狗熊会|聚数据英才,助产业振兴
7.4.1 same 池化 狗熊会 | 深度学习入门
狗熊会|聚数据英才,助产业振兴
7.4.1 same 池化 狗熊会 | 深度学习入门
same 平均值池化
计算过程(步长为 2 ):
狗熊会|聚数据英才,助产业振兴
7.4.1 same 池化 狗熊会 | 深度学习入门
same 平均值池化
池化结果:
狗熊会|聚数据英才,助产业振兴
7.4.2 valid 池化 狗熊会 | 深度学习入门
valid 最大值池化
valid 池化的池化窗口只在张量内移动
示例:
三维张量 池化窗口
X
狗熊会|聚数据英才,助产业振兴
7.4.2 valid 池化 狗熊会 | 深度学习入门
valid 最大值池化
计算过程(步长为 1 ):
狗熊会|聚数据英才,助产业振兴
7.4.2 valid 池化 狗熊会 | 深度学习入门
valid 最大值池化
池化结果:
import tensorflow as tf
TensorFlow 代码实现: X=tf.constant(
[
[
[[3],[2],[1],[4]],
[[8],[1],[5],[9]],
[[6],[2],[-1],[7]],
[[-3],[4],[6],[5]]
]
]
,tf.float32)
maxPool=tf.nn.max_pool(X,(1,2,2,1),
[1,1,1,1],'VALID')
session=tf.Session()
print(session.run(maxPool))
狗熊会|聚数据英才,助产业振兴
7.4.2 valid 池化 狗熊会 | 深度学习入门
三维张量 池化窗口
X
狗熊会|聚数据英才,助产业振兴
7.4.2 valid 池化 狗熊会 | 深度学习入门
狗熊会|聚数据英才,助产业振兴
7.4.2 valid 池化 狗熊会 | 深度学习入门
TensorFlow 代码实现:
X=tf.constant(
[
[
[[3,1],[-1,4],[3,2]],
[[9,7],[2,-1],[4,3]],
[[8,-2],[1,5],[5,9]]
]
]
,tf.float32)
maxPool=tf.nn.max_pool(X,(1,2,2,1),
[1,1,1,1],'VALID')
session=tf.Session()
print(session.run(maxPool))
狗熊会|聚数据英才,助产业振兴
7.4.2 valid 池化 狗熊会 | 深度学习入门
狗熊会|聚数据英才,助产业振兴
7.4.2 valid 池化 狗熊会 | 深度学习入门
]
,tf.float32)
maxPool=tf.nn.max_pool(X,(1,2,2,1),
[1,1,1,1],'VALID')
session=tf.Session()
print(session.run(maxPool))
狗熊会|聚数据英才,助产业振兴
7.4.2 valid 池化 狗熊会 | 深度学习入门
valid 平均值池化
tf.nn.avg_pool(X,…,
TensorFlow 代码实现: …,'VALID')
狗熊会|聚数据英才,助产业振兴
课后习题 狗熊会 | 深度学习入门
课后习题
1 . same 卷积和 valid 卷积的区别是什么?
2 .卷积和池化的区别与联系是什么?
3 .如果输入图像的像素矩阵是,用 96 个规格为的卷积核进行 valid 卷积,设定步长为 4 ,输出矩
阵的维度分别是多少?
4 .如果输入图像的像素矩阵是,用 64 个规格为的卷积核进行 same 卷积,输出矩阵的维度是多少?
再对输出矩阵进行步长为 2 ,规格为的最大值池化,输出矩阵的维度是多少?
5 .传统的矩阵操作是建立在线性代数和线性空间基础上的,卷积的矩阵操作和传统的矩阵操作有什
么异同?
狗熊会|聚数据英才,助产业振兴
THANK YOU 狗熊会
狗熊会|聚数据英才,助产业振兴