| |
|
开发:
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应满足: (图片尺寸不变,即满足n+2p-f+1=n) 没有padding操作,p=0,我们称之为“Valid convolutions”;有padding操作,?,我们称之为“Same convolutions”。 ?4、步进长度Stride表示filter在原图片中水平方向和垂直方向每次的步进长度。之前我们默认stride=1。若stride=2,则表示filter每次步进长度为2,即隔一点移动一次。 我们用s表示stride长度,p表示padding长度,如果原始图片尺寸为n x n,filter尺寸为f x f,则卷积后的图片尺寸为:?? ? ? ? 卷积运算服从结合律: 5、3通道图片卷积计算1)对于3通道(R、G、B)图片的卷积运算,其对应的滤波器算子也为3通道。而3通道图片的卷积运算与单通道图片的卷积运算一致。过程是将每个单通道(R,G,B)与对应的filter进行卷积运算求和,然后再将3通道的和相加,得到输出图片的一个像素值。(所以在OpenCV中在图像处理的时候会提前将图片灰度化) 2)为了进行多个卷积运算,实现更多边缘检测,可以增加更多的滤波器组。例如设置第一个滤波器组实现垂直边缘检测,第二个滤波器组实现水平边缘检测。这样,不同滤波器组卷积得到不同的输出,个数由滤波器组决定。 6、简单的CNN网络模型下面介绍一个简单的CNN网络模型: ?该CNN模型各层结构如上图所示。需要注意的是,的维度是7 x 7 x 40,将排列成1列,维度为1960 x 1,然后连接最后一级输出层。输出层可以是一个神经元,即二元分类(logistic);也可以是多个神经元,即多元分类(softmax)。最后得到预测输出。 CNN有三种类型的layer:
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个神经元构成。 整个网络各层的尺寸和参数如下表格所示: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |