IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 吴恩达《卷积神经网络》课程笔记(1) -> 正文阅读

[人工智能]吴恩达《卷积神经网络》课程笔记(1)

1、机器视觉

?(上图展示了一个神经风格转换(Neural Style Transfer)的例子)

使用传统神经网络处理机器视觉的一个主要问题是输入层维度很大。例如64x64x3的图片,神经网络输入层的维度为12288。而现在的图片将近几千x几千x3的内存,而导致神经网络输入层的维度达到几百万。这样会造成两个后果,一是神经网络结构复杂,数据量相对不够,容易出现过拟合;二是所需内存、计算量较大。解决这一问题的方法就是使用卷积神经网络(CNN)。

2、边缘检测

最常检测的图片边缘有两类:一是垂直边缘(vertical edges),二是水平边缘(horizontal edges)。

?图片的边缘检测可以通过与相应滤波器进行卷积来实现。以垂直边缘检测为例,原始图片尺寸为6x6,滤波器filter尺寸为3x3,卷积后的图片尺寸为4x4,得到结果如下:

?

?(步长为1的卷积操作下)

Vertical edge detection能够检测图片的垂直方向边缘。下图对应一个垂直边缘检测的例子:

Horizontal edge detection能够检测图片的垂直方向边缘。下图对应一个水平边缘检测的例子:

?

垂直边缘检测和水平边缘检测的滤波器算子如下所示:

这里写图片描述

?3、解决图片缩小的问题

按照我们上面讲的图片卷积,如果原始图片尺寸为n x n,filter尺寸为f x f,则卷积后的图片尺寸为(n-f+1) x (n-f+1),注意f一般为奇数。这样会带来两个问题:

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

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

为了解决图片缩小的问题,可以使用padding方法,即把原始图片尺寸进行扩展,扩展区域补零,用p来表示每个方向扩展的宽度。

这里写图片描述

?

经过padding之后,原始图片尺寸为(n+2p) x (n+2p),filter尺寸为f x f,则卷积后的图片尺寸为(n+2p-f+1) x (n+2p-f+1)。若要保证卷积前后图片尺寸不变,则p应满足:

p=\frac{f-1}{2}(图片尺寸不变,即满足n+2p-f+1=n

没有padding操作,p=0,我们称之为“Valid convolutions”;有padding操作,p=\frac{f-1}{2}?,我们称之为“Same convolutions”。

?4、步进长度

Stride表示filter在原图片中水平方向和垂直方向每次的步进长度。之前我们默认stride=1。若stride=2,则表示filter每次步进长度为2,即隔一点移动一次。

这里写图片描述

我们用s表示stride长度,p表示padding长度,如果原始图片尺寸为n x n,filter尺寸为f x f,则卷积后的图片尺寸为:?? ? ? ?\left \lfloor \tfrac{n+2p-f}{s}+1 \right \rfloorX\left \lfloor \tfrac{n+2p-f}{s}+1 \right \rfloor

卷积运算服从结合律:(A*B)*C=A*(B*C)

5、3通道图片卷积计算

1)对于3通道(R、G、B)图片的卷积运算,其对应的滤波器算子也为3通道。而3通道图片的卷积运算与单通道图片的卷积运算一致。过程是将每个单通道(R,G,B)与对应的filter进行卷积运算求和,然后再将3通道的和相加,得到输出图片的一个像素值。(所以在OpenCV中在图像处理的时候会提前将图片灰度化)

2)为了进行多个卷积运算,实现更多边缘检测,可以增加更多的滤波器组。例如设置第一个滤波器组实现垂直边缘检测,第二个滤波器组实现水平边缘检测。这样,不同滤波器组卷积得到不同的输出,个数由滤波器组决定。

这里写图片描述

6、简单的CNN网络模型

下面介绍一个简单的CNN网络模型:

这里写图片描述

?该CNN模型各层结构如上图所示。需要注意的是,a^{\left[3\right]}的维度是7 x 7 x 40,将a^{\left[3\right]}排列成1列,维度为1960 x 1,然后连接最后一级输出层。输出层可以是一个神经元,即二元分类(logistic);也可以是多个神经元,即多元分类(softmax)。最后得到预测输出\hat{y}

CNN有三种类型的layer:

  • Convolution层(CONV)

  • Pooling层(POOL)

  • Fully connected层(FC)

7、池化层(Pooling层)

池化层是CNN中用来减小尺寸,提高运算速度的,同样能减小noise影响,让各特征更具有健壮性。

池化层的做法比其他卷积层简单许多,没有卷积运算,仅仅是在滤波器算子滑动区域内取最大值,即max pooling,这是最常用的做法。注意,超参数p很少在池化层中使用。

这里写图片描述

Max pooling的好处是只保留区域内的最大值(特征),忽略其它值,降低noise影响,提高模型健壮性。而且,max pooling需要的超参数仅为滤波器尺寸f和滤波器步进长度s,没有其他参数需要模型训练得到,计算量很小。

?

10. 卷积神经网络的例子

下面介绍一个简单的数字识别的CNN例子:

这里写图片描述

图中,CON层后面紧接一个POOL层,CONV1和POOL1构成第一层,CONV2和POOL2构成第二层。特别注意的是FC3和FC4为全连接层FC,它跟标准的神经网络结构一致。最后的输出层(softmax)由10个神经元构成。

整个网络各层的尺寸和参数如下表格所示:

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-28 22:55:34  更:2021-12-28 22:58:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 23:39:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码