《吴恩达深度学习》04卷积神经网络(第1周卷积神经网络)

04. 卷积神经网络

第1周 卷积神经网络

1.1 计算机视觉

  1. 计算机视觉问题
    (1)图像分类
    (2)目标检测
    (3)风格迁移
  2. 大规模图片上的深度学习
    (1)以往的图片往往大小是 64 × 64 × 3 64\times 64 \times 3 64×64×3的,即总特征数为12288。
    (2)若图片大小增加到 1000 × 1000 × 3 1000 \times 1000 \times 3 1000×1000×3,则总特征数增加到3百万。

1.2 边缘检测示例

  1. 计算机视觉问题
    (1)人脸检测距离在这里插入图片描述
  2. 垂直边缘检测
    [ 3 0 1 2 7 4 1 5 8 9 3 1 2 7 2 5 1 3 0 1 3 1 7 8 4 2 1 6 2 8 2 4 5 2 3 9 ] ∗ [ 1 0 − 1 1 0 − 1 1 0 − 1 ] = [ − 5 − 4 0 8 − 10 − 2 2 3 0 − 2 − 4 − 7 − 3 − 2 − 3 − 16 ] \left[\begin{matrix} 3 & 0 & 1 & 2 & 7 & 4 \\ 1 & 5 & 8 & 9 & 3 & 1 \\ 2 & 7 & 2 & 5 & 1 & 3 \\ 0 & 1 & 3 & 1 & 7 & 8 \\ 4 & 2 & 1 & 6 & 2 & 8 \\ 2 & 4 & 5 & 2 & 3 & 9 \end{matrix}\right] * \left[\begin{matrix} 1 & 0 & -1\\ 1 & 0 & -1\\ 1 & 0 & -1 \end{matrix}\right] = \left[\begin{matrix} -5 & -4 & 0 & 8 \\ -10 & -2 & 2 & 3 \\ 0 & -2 & -4 & -7 \\ -3 & -2 & -3 & -16 \end{matrix} \right] 312042057124182315295162731723413889111000111=510034222024383716
  3. 编程实现
    (1)python:conv_forward
    (2)tensorflow:tf.nn.conv2d
  4. 垂直边缘检测的直观解释在这里插入图片描述

1.3 更多边缘检测内容

  1. 垂直和水平边缘检测
    (1)垂直
    [ 1 0 − 1 1 0 − 1 1 0 − 1 ] \left[\begin{matrix} 1 & 0 & -1\\ 1 & 0 & -1\\ 1 & 0 & -1 \end{matrix}\right] 111000111
    (2)水平
    [ 1 1 1 0 0 0 − 1 − 1 − 1 ] \left[\begin{matrix} 1 & 1 & 1\\ 0 & 0 & 0\\ -1 & -1 & -1 \end{matrix}\right] 101101101
    (3)正负边缘
    正边缘指从亮到暗的过渡边缘。
  2. 学习边缘检测
    (1)Sobel滤波器(更鲁棒)
    [ 1 0 − 1 2 0 − 2 1 0 − 1 ] \left[\begin{matrix} 1 & 0 & -1\\ 2 & 0 & -2\\ 1 & 0 & -1 \end{matrix}\right] 121000121
    (2)Scharr滤波器
    [ 3 0 − 3 10 0 − 10 3 0 − 3 ] \left[\begin{matrix} 3 & 0 & -3\\ 10 & 0 & -10\\ 3 & 0 & -3 \end{matrix}\right] 31030003103
    (3)可以将矩阵元素作为学习的参数。

1.4 Padding

  1. Padding
    (1)若有一张图片大小为 n × n n \times n n×n,滤波器大小为 f × f f \times f f×f,则卷积结果大小为 ( n − f + 1 ) × ( n − f + 1 ) (n-f+1)\times (n-f+1) (nf+1)×(nf+1)
    (2)缺点:每次卷积图像会变小;边角的像素只在一次卷积中涉及到,中部的像素点被多次采用。
    (3)解决方法:在原始图像外围填充一圈像素点。设填充像素点个数为 p p p,则原始图像变为 ( n + 2 p ) × ( n + 2 p ) (n+2p)\times(n+2p) (n+2p)×(n+2p),因此卷积结果大小变为 ( n + 2 p − f + 1 ) × ( n + 2 p − f + 1 ) (n+2p-f+1)\times(n+2p-f+1) (n+2pf+1)×(n+2pf+1)
  2. Valid卷积和Same卷积
    (1)Valid卷积:不填充
    (2)Same卷积:填充,使得卷积结果和原始图像大小相同
  3. 通常情况下, f f f是奇数。

1.5 卷积步长

  1. 步幅卷积
    (1)之前的卷积过程,步幅为1。
    (2)若输入为 n × n n \times n n×n,滤波器为 f × f f \times f f×f,填充大小为 p p p,步幅为 s s s,则输出结果为 ⌊ n + 2 p − f s + 1 ⌋ × ⌊ n + 2 p − f s + 1 ⌋ \lfloor\frac{n+2p-f}{s}+1\rfloor \times \lfloor\frac{n+2p-f}{s}+1\rfloor sn+2pf+1×sn+2pf+1
  2. 互相关和卷积
    机器学习(深度学习)领域中的卷积,和数学领域的卷积有所区别,和数学领域中的互相关更一致。
    数学领域中的卷积运算,首先要对滤波器进行水平和垂直翻转,然后再进行计算。

1.6 三维卷积

  1. RGB图像卷积
    (1)原始图像尺寸:高 × \times × × \times ×通道数
    (2)卷积核尺寸:高 × \times × × \times ×通道数(与原始图像相同)
    (3)输出结果:高 × \times ×宽(二维)
  2. 多过滤器
    用于检测不同目标,如垂直边缘、水平边缘等。此时输出结果不再是二维的,和过滤器数量有关。

1.7 单层卷积网络

  1. 单层举例
    在这里插入图片描述
  2. 符号说明
    l l l层为卷积层,则
    (1) f [ l ] f^{[l]} f[l]过滤器规模
    (2) p [ l ] p^{[l]} p[l]填充像素数量
    (3) s [ l ] s^{[l]} s[l]步长
    (4) n C [ l ] n^{[l]}_C nC[l]过滤器数量
    (5)每个过滤器的大小为 f [ l ] × f [ l ] × n C [ l ] f^{[l]}\times f^{[l]} \times n_C^{[l]} f[l]×f[l]×nC[l]
    (6)激活函数 a [ l ] a^{[l]} a[l] n H [ l ] × n W [ l ] × n C [ l ] n_H^{[l]}\times n_W^{[l]}\times n_C^{[l]} nH[l]×nW[l]×nC[l]
    (7)权重 f [ l ] × f [ l ] × n C [ l ] × n C [ l ] f^{[l]}\times f^{[l]} \times n_C^{[l]}\times n_C^{[l]} f[l]×f[l]×nC[l]×nC[l]
    (8)偏差 n C [ l ] n_C^{[l]} nC[l]
    (9)输入: n H [ l − 1 ] × n W [ l − 1 ] × n C [ l − 1 ] n^{[l-1]}_H \times n^{[l-1]}_W\times n^{[l-1]}_C nH[l1]×nW[l1]×nC[l1]
    (10)输出: n H [ l ] × n W [ l ] × n C [ l ] n^{[l]}_H \times n^{[l]}_W\times n^{[l]}_C nH[l]×nW[l]×nC[l],其中 n H [ l ] = ⌊ n H [ l − 1 ] + 2 p [ l ] − f [ l ] s [ l ] + 1 ⌋ n^{[l]}_H=\lfloor\frac{n_H^{[l-1]}+2p^{[l]}-f^{[l]}}{s^{[l]}}+1\rfloor nH[l]=s[l]nH[l1]+2p[l]f[l]+1 n W [ l ] n^{[l]}_W nW[l]类似.

1.8 简单卷积网络示例

  1. ConvNet举例
    (1)问题描述
    假设输入是一张图片,目的是分类图片是否有猫。
    (2)输入尺寸
    n H [ 0 ] = 39 n_{H}^{[0]}=39 nH[0]=39
    n W [ 0 ] = 39 n_{W}^{[0]}=39 nW[0]=39
    n C [ 0 ] = 3 n_{C}^{[0]}=3 nC[0]=3
    (3)第一层过滤器信息
    f [ 1 ] = 3 f^{[1]}=3 f[1]=3
    s [ 1 ] = 1 s^{[1]}=1 s[1]=1
    p [ 1 ] = 0 p^{[1]}=0 p[1]=0
    过滤器个数:10
    (4)第一层输出信息
    n H [ 1 ] = 37 n_{H}^{[1]}=37 nH[1]=37
    n W [ 1 ] = 37 n_{W}^{[1]}=37 nW[1]=37
    n C [ 1 ] = 10 n_{C}^{[1]}=10 nC[1]=10
    (5)第二层过滤器信息
    f [ 2 ] = 5 f^{[2]}=5 f[2]=5
    s [ 2 ] = 2 s^{[2]}=2 s[2]=2
    p [ 1 ] = 0 p^{[1]}=0 p[1]=0
    过滤器个数:20
    (6)第二层输出信息
    n H [ 2 ] = 17 n_{H}^{[2]}=17 nH[2]=17
    n W [ 2 ] = 17 n_{W}^{[2]}=17 nW[2]=17
    n C [ 2 ] = 20 n_{C}^{[2]}=20 nC[2]=20
    (7)第三层过滤器信息
    f [ 3 ] = 5 f^{[3]}=5 f[3]=5
    s [ 3 ] = 2 s^{[3]}=2 s[3]=2
    p [ 3 ] = 0 p^{[3]}=0 p[3]=0
    过滤器个数:40
    (8)第三层输出信息
    n H [ 3 ] = 7 n_{H}^{[3]}=7 nH[3]=7
    n W [ 3 ] = 7 n_{W}^{[3]}=7 nW[3]=7
    n C [ 3 ] = 40 n_{C}^{[3]}=40 nC[3]=40
    (9)通常情况下,将最后一步提取的多维特征展开成一个向量,然后输入到softmax或sigmoid中。
  2. 卷积网络层中的层的类型
    (1)卷积层
    (2)池化层
    (3)全连接层

1.9 池化层

  1. 池化层的作用
    (1)缩减模型大小
    (2)提高计算速度
    (3)提高所提取特征的鲁棒性
  2. 池化层:最大池化
    在这里插入图片描述
    上图中使用的过滤器的信息为: f = 2 f=2 f=2 s = 2 s=2 s=2
  3. 平均池化(不常用)
  4. 池化层总结
    (1)超参:常用的参数组有 f = 2 , s = 2 f=2, s=2 f=2,s=2 f = 3 , s = 2 f=3,s=2 f=3,s=2,通常不使用padding
    (2)若输入是 n H × n W × n C n_H\times n_W\times n_C nH×nW×nC,则输出是 ⌊ n H − f s + 1 ⌋ × ⌊ n W − f s + 1 ⌋ × n C \lfloor\frac{n_H-f}{s}+1\rfloor \times \lfloor\frac{n_W-f}{s}+1\rfloor \times n_C snHf+1×snWf+1×nC

1.10 卷积神经网络示例

  1. 神经网络举例(类似于LeNet-5)
    (1)输入为 32 × 32 × 3 32\times32\times3 32×32×3
    (2)Conv1信息
    f = 5 , s = 1 f=5, s=1 f=5,s=1,过滤器个数6
    (3)Pool1信息
    f = 2 , s = 2 f=2, s=2 f=2,s=2
    (4)Conv2信息
    f = 5 , s = 1 f=5, s=1 f=5,s=1,过滤器个数16
    (5)Pool2信息
    f = 2 , s = 2 f=2, s=2 f=2,s=2
    (6)将输出 5 × 5 × 16 5\times5\times16 5×5×16张成一个向量( 400 400 400
    (7)将向量输入到全连接层(FC3),参数为120维
    (8)将上一层输出结果输入到全连接层(FC4),参数为84维
    (9)将上一层输入到softmax中。
    在这里插入图片描述
  2. 因为池化层没有参数需要学习,因此通常将卷积层和池化层称为一层(Layer1)。
  3. 示例总结
    神经网络层激活函数维度激活函数规模参数数量
    输入(32, 32,3)30720
    CONV1(f=5,s=1)(28,28,8)6272208
    POOL1(f=2,s=2)(14,14,8)15680
    CONV2(f=5,s=1)(10,10,16)1600416
    POOL2(f=2,s=2)(5, 5,16)4000
    FC3(120,1)12048001
    FC4(84,1)8410081
    Softmax(10,1)10841

1.11 为什么使用卷积?

  1. 为什么使用卷积?
    (1)和全连接层相比,卷积层有两个优势,即参数共享和稀疏连接。
    (2)参数共享:若特征检测器适用于图像的某个部分,则也很可能适用于其他部分。
    (3)稀疏连接:在每一层,每个输出值仅和一小部分输入有关。
    (4)卷积层善于捕捉平移不变。
  2. 总结 在这里插入图片描述
    确定损失函数后,使用梯度下降等优化方法使损失函数最小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值