卷积神经网络基础(上)

Coursera 卷积神经网络入门课程学习笔记

Posted by Paradise on July 30, 2021

Coursera 卷积神经网络入门课程

Lesson 1: Computer Vision

  • 应用举例:图像理解、物体位置检测、图像风格迁移
  • 参数数量(全连接第一层):假设图像是1000*1000*3,则参数数量为3*10^6,3M。由于参数多,需要极大的观测数据才能避免神经网络过拟合。同时,对计算量和内存的需求极大。

Lesson 2: Edge Detection Example

  • 边缘检测举例:
    • 过程:检测物体的垂直边缘以及水平边缘;
    • 步骤:
      1. 灰度化,或者输入灰度图像(6*6);
      2. 使用一个3*3的filter(给定数值的矩阵,即卷积核kernel),与6*6图像数据进行卷积运算,生成一个4*4的图像(4 = 6 - 3 + 1)。卷积核: [[1,1,1],[0,0,0],[-1-1-1]].T;用于检测垂直边缘,检测水平边缘的卷积核就是上面的转置。

Lesson 3: More Edge Detection

  • 正边缘与负边缘:上节的边缘检测基于图像的明暗变化,正边界为明到暗的边界。
  • Sobel Filter:给中间像素更大的权重,[[1,2,1],[0,0,0],[-1,-2,-1]],更鲁棒。
  • 对于实际中更加复杂的图片,可以将卷积核作为参数,通过反向传播学习得到。通过这个方法还可以得到除了垂直和水平的各种角度的边缘检测器。

Lesson 4: Padding

  • 一般的卷积边缘检测的两个缺点:每经过一个卷积层图片变小;中心与边界运算的次数不相等,丢失边界信息。
  • Padding方法:增加一个像素为p的边缘(包围原图),当p = (f-1)/2,输出与原图大小相等。当卷积核的阶数不是奇数,可以进行不对称的填充。
  • Valid Convolution与Same Convolution:
    • Valid:n*n CON f*f ==> n-f+1 * n-f+1
    • Same: 填充的像素宽度为p,得到 n+2p-f+1 * n+2p-f+1,满足 n+2p-f+1 = n

Lesson 5: Strided Convolutions

  • 跨步卷积:每次移动的步长S大于1,考虑Padding的像素宽度p,输出阶数为:(n+2p-f)/s + 1 * (n+2p-f)/s + 1
  • 如果上述公式中不能整除,则向下取整,舍弃原图边缘的像素。
  • 数学意义上,称上述操作为cross-correlation,convolution操作还需要将卷积核进行镜像映射翻转。在机器学习中,约定卷积运算忽略翻转的操作。

Lesson 6: Convolutions Over Volume

  • 上述讨论的是对于灰度图像的边缘检测,使用了二维矩阵的卷积。对于RGB图像,则需要使用三维卷积。
  • 三维卷积:可以理解为每个颜色通道的切片分别进行以上灰度图的卷积,用到的卷积核同样有3个通道的切片。
  • n*n*n_c CON f*f*n_c ==> n-f+1 * n-f+1 * 1; 其中n_c表示通道数

Lesson 7: One Layer of a Convolutional Network

  • 单层卷积神经网络:就是上面的内容,输出需要加上激活函数和偏差。

Lesson 8: Simple Convolutional Network Example

  • 经过几层的卷积后,原图收缩为尺寸更小,深度更大的特征张量,将其扁平化为一个向量送到softmax并得到学习的结果。
  • 大多数设计工作在于选择filter,步长,padding,激活维度n_c等参数。

Lesson 9: Pooling Layers

  • max pooling:在原图上使用移动窗口并取窗口中的最大值作为输出,实现对图像的特征的提取,实验中效果较好,具体原因是更深入的课题。
  • max pooling具有filtersize(f)和stride(s)两个超参数,但是是事先固定的,不需要进行学习的参数。一般通过交叉验证事先确定参数。
  • 对于三维的RGB图像输入,操作方法与卷积类似。
  • 均值池化较最大池化用的少,通常用于对神经网络最后的输出进行采样,实现向量化。

Lesson 10: CNN Example

  • 上述内容的叠加,构建一个CNN。

Omitted