吴恩达深度学习笔记——卷积神经网络基础(1)

参考吴恩达深度学习视频和CSDN笔记https://blog.csdn.net/red_stone1/article/details/78651063

P108 Computer Vision

CV主要包括以下几类:

  • 图像分类
  • 目标检测
  • 图片风格迁移

使用传统神经网络处理机器视觉的主要问题是输入层的维数过大,这使得权重矩阵非常庞大,使得网络结构复杂,数据量大,容易出现过拟合;内存、计算量大。解决这一问题的方法就是使用卷积神经网络CNN。

P108 边缘检测示例

常见边缘检测有两类:垂直边缘,水平边缘。可以利用相应的滤波器(核)来实现。
python 中用conv_forward
tensorflow:tf.nn.conv2d
keras:Conv2D()
垂直边缘检测中
吴恩达深度学习笔记——卷积神经网络基础(1)_第1张图片
滤波器左边浅色,中间不管他,右边深色。滤波的结果就是中间浅色,可以的得到竖直的边缘。

P109 More Edge Detection

边缘过渡有两种,由暗到亮,由亮到暗
吴恩达深度学习笔记——卷积神经网络基础(1)_第2张图片水平和竖直边缘检测的滤波器算子如下所示:
吴恩达深度学习笔记——卷积神经网络基础(1)_第3张图片
吴恩达深度学习笔记——卷积神经网络基础(1)_第4张图片
CNN的主要目的就是计算出这些filter的数值。确定得到了这些filter后,CNN浅层网络也就实现了对图片所有边缘特征的检测。

P110 Padding

按照我们上面讲的图片卷积,如果原始图片尺寸为n x n,filter尺寸为f x f,则卷积后的图片尺寸为(n-f+1) x (n-f+1),注意f一般为奇数。
缺点

  • 图片经过卷积操作后会变小
  • 原始图片边缘对输出贡献较小,输出 丢失边缘信息
    吴恩达深度学习笔记——卷积神经网络基础(1)_第5张图片
    经过padding之后,原始图片尺寸为(n+2p)×(n+2p),filter的尺寸为f×f,卷积后的图片尺寸为(n+2p-f+1)×(n+2p-f+1)。
    Valid conv:输入输出吃尺寸不同p=0
    Same conv:输入和输出大小是相同的。filter一般都是奇数,对称填充;有一个中心点

在这里插入图片描述

P111 Strided Convolutions

stride表示沿水平和竖直方向的步进长度。s表示stride长度,p表示padding长度,如果原始图片尺寸为n x n,filter尺寸为f x f,则卷积后的图片尺寸为
在这里插入图片描述
⌊ ⋯⌋表示向下取整floor
相关与卷积有区别 。卷积需要将filter镜像操作,然后再将翻转后的filter进行滑动运算,而相关运算则不会对filter进行镜像操作,直接在原始图片上进行滑动运算。

在深度 学习领域,我们通常不进行镜像操作,这个操作可能叫互相关更好 ,但是通常叫做卷积运算。
但是,为了简化计算,我们一般把CNN中的这种“相关系数”就称作卷积运算。之所以可以这么等效,是因为滤波器算子一般是水平或垂直对称的,180度旋转影响不大;而且最终滤波器算子需要通过CNN网络梯度下降算法计算得到,旋转部分可以看作是包含在CNN模型算法中。总的来说,忽略旋转运算可以大大提高CNN网络运算速度,而且不影响模型性能。
————————————————
版权声明:本文为CSDN博主「红色石头Will」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/red_stone1/article/details/78651063

P112 Convolutions Over Volume

吴恩达深度学习笔记——卷积神经网络基础(1)_第6张图片
原始图片的通道数要和filter的通道数相同。一个filter的输出为一个通道,多个filter输出多个通道。输出通道数等于要检测的特征数。通道数在论文中也叫做3维立方体的深度。
不同通道的滤波算子可以不相同。例如R通道filter实现垂直边缘检测,G和B通道不进行边缘检测,全部置零,或者将R,G,B三通道filter全部设置为水平边缘检测。
若输入图片的尺寸为n x n x n_c,filter尺寸为f x f x n_c ,则卷积后的图片尺寸为(n-f+1) x (n-f+1) x n_c ′ ​。其中, n _c为图片通道数目, n_c ′ 为滤波器组个数。

P113 One Layer of a Convolutional Network

吴恩达深度学习笔记——卷积神经网络基础(1)_第7张图片相比之前的卷积过程,CNN的单层结构多了激活函数ReLU和偏移量b。整个过程与标准的神经网络单层结构非常类似:
吴恩达深度学习笔记——卷积神经网络基础(1)_第8张图片
参数的数目:每个滤波器组有3x3x3=27个参数,还有1个偏移量b,则每个滤波器组有27+1=28个参数,两个滤波器组总共包含28x2=56个参数。选定滤波器后,参数数目与输入图片尺寸无关。不存在图片尺寸过大造成的参数过多的情况。所以参数的数目只由滤波器决定,数目相对来说要少很多。

吴恩达深度学习笔记——卷积神经网络基础(1)_第9张图片
吴恩达深度学习笔记——卷积神经网络基础(1)_第10张图片
在这里插入图片描述

P114 Simple Convolutional Network Example

一个简单的CNN网络模型:
吴恩达深度学习笔记——卷积神经网络基础(1)_第11张图片
该CNN模型各层结构如上图所示。需要注意的是, a [ 3 ] a^{[3]} a[3]的维度是7 x 7 x 40,将 a [ 3 ] a^{[3]} a[3]排列成1列,维度为1960 x 1,然后连接最后一级输出层。输出层可以是一个神经元,即二元分类(logistic);也可以是多个神经元,即多元分类(softmax)。最后得到预测输出 y ^ \hat y y^​。

softmax和logistic回归

CNN有三种类型的layer:

  • Convolution层(CONV)
  • Pooling层(POOL,池化层)
  • Fully connected层(FC,全连接层)

P115 Pooling Layers

pooling层可以缩减模型的大小,提高计算速度,提取的特征更加具有鲁棒性。

max Pooling
吴恩达深度学习笔记——卷积神经网络基础(1)_第12张图片降低噪声的硬性,提高模型的鲁棒性。只有滤波器的尺寸和步长两个超参数,模型的计算量小。
输入有多少个通道,输出就有多少个通道。对各个通道分别使用池化
最大池化更加常用。很少用到padding层,通常p=0。
f=2,s=2输入的高度和宽度会减半。

Average Pooling
吴恩达深度学习笔记——卷积神经网络基础(1)_第13张图片

P116 CNN example(LeNet-5)吴恩达深度学习笔记——卷积神经网络基础(1)_第14张图片

CON层后面紧接一个POOL层,CONV1和POOL1构成第一层,CONV2和POOL2构成第二层。特别注意的是FC3和FC4为全连接层FC,它跟标准的神经网络结构一致。最后的输出层(softmax)由10个神经元构成。
问有多少layer时,通常只数有权重和偏置的层数。
随着层数的加深,宽度和高度会变小,通道数会增加;激活层会减小;并且大多数的参数都存在与全连接层
吴恩达深度学习笔记——卷积神经网络基础(1)_第15张图片

P117 Why Convolutions

比标准神经网络,CNN的优势之一就是参数数目要少得多。参数数目少的原因有两个:

  • 参数共享:一个特征检测器(例如垂直边缘检测)对图片某块区域有用,同时也可能作用在图片其它区域。

  • 连接的稀疏性:因为滤波器算子尺寸限制,每一层的每个输出只与输入部分区域内有关。

除此之外,由于CNN参数数目较小,所需的训练样本就相对较少,从而一定程度上不容易发生过拟合现象。而且,CNN比较擅长捕捉区域位置偏移。也就是说CNN进行物体检测时,不太受物体所处图片位置的影响,增加检测的准确性和系统的健壮性。

你可能感兴趣的:(吴恩达深度学习)