Lesson 1: Computer Vision
- 应用举例:图像理解、物体位置检测、图像风格迁移
- 参数数量(全连接第一层):假设图像是1000*1000*3,则参数数量为3*10^6,3M。由于参数多,需要极大的观测数据才能避免神经网络过拟合。同时,对计算量和内存的需求极大。
Lesson 2: Edge Detection Example
- 边缘检测举例:
- 过程:检测物体的垂直边缘以及水平边缘;
- 步骤:
- 灰度化,或者输入灰度图像(6*6);
- 使用一个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
- Valid:
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。