CNN (吴恩达 2021

week1-2

02_边缘检测例子_哔哩哔哩_bilibili

 我们之前在说面部识别介绍过,要识别面部,都是从细微的边缘入手,一层一层聚类,最终实现人脸的识别。神经网络由浅层到深层,分别可以检测出图片的边缘特征 、局部特征(例如眼睛、鼻子等)、整体面部轮廓。

我们就以边缘检测为例子,介绍卷积运算。

  

 

一个垂直边缘是一个3x3的区域, 左边有亮像素,中间无所谓,右边是暗像素

 图片边缘有两种渐变方式,一种是由明变暗,另一种是由暗变明。以垂直边缘检测为例,下图展示了两种方式的区别。实际应用中,这两种渐变方式并不影响边缘检测结果,可以对输出图片取绝对值操作,得到同样的结果。

 positive edge    v.s.    negative edge

除了上面提到的这种简单的Vertical、Horizontal滤波器之外,还有其它常用的filters,

sobel过滤器,它增加了中间一行的权重,使得结果的鲁棒性更强。还可以将权重再提高一些,scharr过滤器:

这里写图片描述

 在深度学习中,如果我们想检测图片的各种边缘特征,而不仅限于垂直边缘和水平边缘,那么filter的数值一般需要通过模型训练得到,类似于标准神经网络中的权重W一样由梯度下降算法反复迭代求得。CNN的主要目的就是计算出这些filter的数值。确定得到了这些filter后,CNN浅层网络也就实现了对图片所有边缘特征的检测。

padding

两个问题:

  • 卷积运算后,输出图片尺寸缩小

  • 原始图片边缘信息对输出贡献得少,输出图片丢失边缘信息

根据是否进行填充,卷积方法可以分为两种,一种是valid convolution(不进行填充),另一种是same convolution(也就是保证图片在卷积前后的维度相同)。在后一种卷积方式中,为了保证卷积前后的维度不变,p值应该等于(f-1)/2,(filter尺寸为f x f,注意f一般为奇数,若为偶数,则会产生不对称填充。)

(另外一个原因,奇数维度的过滤器有一个中心点,便于指出过滤器的位置,会很方便。)

(这是计算机视觉的传统)

4、卷积神经网络-步长(strid)

前面的例子,卷积的步长为1,也就是过滤器在原始输入图片中,每一次移动一个方格。我们也可以设置不同的步长进行卷积。

⌊ ⋯ ⌋表示向下取整。若[(n+2p-f)/s + 1] 不为整数,则向下取整,这么处理的实际意义就在于,只有当过滤器完全覆盖了输入图片的像素点时,卷积才是有效的。

卷积和互相关:

在数学定义上,矩阵的卷积(convolution)操作为首先将卷积核同时在水平和垂直方向上进行翻转(沿对角线翻转),构成一个卷积核的镜像,然后使用该镜像再和前面的矩阵进行移动相乘求和操作。如下面例子所示:

在深度学习中,我们称为的卷积运算实则没有卷积核变换为镜像的这一步操作,因为 对卷积核翻转,会使卷积核保持结合率 A*(B*C)=(A*B)*C,这一性质对deep NN并不重要。深度学习的卷积操作在数学上准确度来说称为互相关(cross-correlation)。

在信号处理或其他数学分支领域   做翻转(flipping)

三维卷积

输入图像的通道数量与过滤器的通道数量必须相同

 结果的通道数则由过滤器的个数决定,

单层卷积网络

输入的图片经过两个过滤器,得到两个4*4的矩阵,相当于对输入图片的像素点做了线性操作(像素点的值和过滤器的权重进行点乘),然后对于4*4的矩阵的每个元素加上一个bias,再对结果进行非线性变化(Relu),经过堆叠之后,得到最终的4*4*2的结果。

整个过程与标准的神经网络单层结构非常类似:

我们发现,选定滤波器组后,参数数目与输入图片尺寸无关。所以,就不存在由于图片尺寸过大,造成参数过多的情况。

​activations:激活值的维度也就是本层神经网络输出的图片的维度

A[i]:如果应用的是向量化实现vectorized implementation,或批量梯度下降

batch gradient descent进行训练的话,每次训练的样本有m个,则激活值要乘上m。

简单的深度卷积神经网络

到第三层,你把39x39x3的输入图像,计算出此图像的7x7x40 features

hyperparameter:filters size?stride?padding?filters数量?

多层卷积神经网络的趋势就是,随着层数的加深,图片的长和宽会减小,而channel数目会不断增加。

CNN通常有三种类型的layer:

  • Convolution层(CONV),CONV最为常见也最重要,

  • Pooling层(POOL)

  • Fully connected层(FC)

pooling

09_池化层_哔哩哔哩_bilibili

max pooling所做的其实是,如果在filter中任何地方检测到了这些特征、就保留最大的数值;但是 如果这个特征没有被检测到、于是 那些数值的最大值仍然相当小,这就是max pooling在卷积网络中效果很好的根本原因。

若输入的信道数量

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值