卷积神经网络(一)- 卷积神经网络
本次学习笔记主要记录学习深度学习时的各种记录,包括吴恩达老师视频学习、花书。作者能力有限,如有错误等,望联系修改,非常感谢!
卷积神经网络(一)- 卷积神经网络
- 一、计算机视觉(Computer vision)
- 二、边缘检测示例(Edge detection example)
- 三、更多边缘检测内容(More edge detection)
- 四、Padding
- 五、卷积步长(Strided convolutions)
- 六、三维卷积(Convolutions over volumes)
- 七、单层卷积网络(One layer of a convolutional network)
- 八、简单卷积网络示例(A simple convolution network example)
- 九、池化层(Pooling layers)
- 十、卷积神经网络示例(Convolutional neural network example)
- 十一、为什么使用卷积(Why convolutions?)
第一版 2022-06-28 初稿
一、计算机视觉(Computer vision)
1.计算机视觉的高速发展标志着新型应用产生的可能;
2.即使CV上未有成果,但可启发人类。
`如左上图识别猫,左下图目标检测(不一定测出车辆,但要算出位置),右图图片风格迁移。
计算机视觉面临挑战:数据输入可能非常大。
实际操作时,图片数据量为64x64x3,每张图片都有3个颜色通道。所以我们的特征向量x维度为12288.
若输入300万数据量,意味着特征向量x的维度高达300万。所有权值组成矩阵W[1],会有30亿个参数,难以获得足够数据防止过拟合和竞争需求。
二、边缘检测示例(Edge detection example)
卷积运算是卷积神经网络最基本的组成部分。
如图下方,检测垂直线和水平线,
6x6x1的矩阵。为了检测图像的垂直边缘,构造一个3x3矩阵,卷积神经网络中,常称为过滤器,有时称为核。
数学中,卷积用“*”来表示;但在python中,常用来表示乘法或元素乘法。
如图元素乘法,逐步移动。python中卷积为conv_forward函数,tensorflow为tf.conv2d,Keras中用Conv2D。
三、更多边缘检测内容(More edge detection)
本节区分正边和负边。
图片颠倒,得到的结果变化如图。 不在乎两者区别,可取出矩阵的绝对值。
sobel 过滤器,优点在于增加了中间一行元素的权重,使得结果的鲁棒性更高一些。
Scharr过滤器,实际上是一种垂直边缘检测。
还有一种过滤器,对于数据的捕捉能力胜过任何手写的过滤器,可检测45度或70度。
四、Padding
一个基本的卷积操作padding。
如果我们有一个nxn的图像,用fxf的过滤器做卷积,那么输出的维度是(n-f+1)x(n-f+1)。
缺点:1.每次做卷积操作,图像会缩小;2.角落边缘像素制备一个输出所触碰或使用,丢掉了图像边缘位置的许多信息。
解决:在卷积操作之前填充这幅图像,可在图像边缘再填一层像素。
若p是填充数量,输出为(n+2p-f+1)x(n+2p-f+1)。
选择填充多少像素,通常有两个选择,Valid卷积和Same卷积。
Valid卷积:意味不填充。
Same卷积:输出大小和输入大小一样,习惯上f通常为奇数。
f很少为偶数原因:1。可能使用一些不对称填充;2.奇数会有一个中心像素点
五、卷积步长(Strided convolutions)
另一个基本操作是卷积的步幅。
用3x3过滤器卷积7x7,步幅设为2。padding为p,步幅为s。
公式:
⌊ n + 2 p − f s + 1 ⌋ ∗ ⌊ n + 2 p − f s + 1 ⌋ \lfloor \frac{n+2p-f}{s}+1 \rfloor *\lfloor \frac{n+2p-f}{s}+1 \rfloor ⌊sn+2p−f+1⌋∗⌊sn+2p−f+1⌋
商不是正数则向下取整,也叫作对z进行地板除(floor)。
有时称为互相关而不叫卷积。但在深度学习文献中,按惯例叫做卷积操作。
六、三维卷积(Convolutions over volumes)
彩色图像为三维,图像通道数必须和过滤器的通道数匹配,紫框的数必须相等。
把过滤器画成立方体。
过滤器有27个数,把它放在最左上角位置,先取红色的前9个数,再是绿色,再是蓝色。然后把这些数加起来得左上角数。
接着向右滑动一个单位计算。
若不关心垂直边界在哪个颜色通道里,可以用三个过滤器:
( 1 0 − 1 1 0 − 1 1 0 − 1 ) \left( \begin{matrix} 1& 0& -1\\ 1& 0& -1\\ 1& 0& -1\\ \end{matrix} \right) ⎝⎛111000−1−1−1⎠⎞
同时检测垂直边缘和水平边缘,还有45°倾斜边缘,70°倾斜边缘怎么办?
同时卷积,将所得结果堆叠在一起,得4x4x2的立方体。
若有n x n x nc的输入图像,nc为通道数目(或者叫做深度),然后卷积上一个f x f x nc的过滤器,前后通道数目必须相同。就得到(n-f+1) x (n-f+1) x nc’。nc’是下一层的通道数,就是过滤器个数。若使用padding,数值便发生变化。
七、单层卷积网络(One layer of a convolutional network)
如图是上节降到的三维卷积,最后形成一个卷积神经网络层,通过广播机制增加偏差,然后应用非线性函数,即ReLU函数。
同样,第二个矩阵也加上不同的偏差,
前向传播中一个操作是z[1]=W[1]a[0]+b[1],其中a[0]=x,执行非线性函数得a[1]。W[1]表示过滤器。
10个过滤器,神经网络一层是3x3x3,那么一层有多少个参数?
每个过滤器有27个参数,加上一个偏差,参数增加到28。10个过滤器,加一起是28x10,即120个参数。不管输入图片多大,参数始终280个。卷积神经网络一个特征:避免过拟合。
如图为卷积层的各种标记。
Activations中,若是批量梯度下降,变量排列顺序为索引,训练示例和其它三个变量。
八、简单卷积网络示例(A simple convolution network example)
把需输入图片定义为x,用0或1辨别图中是否有猫。
1.例子中,高宽都为39,nc=3,第一层用3x3的过滤器来提取特征,高宽使用了valid卷积。
2.若有10个过滤器,下层激活值则为37x37x10,37由下公式所得:
n + 2 p − f s + 1 \frac{n+2p-f}{s}+1 sn+2p−f+1
39 + 0 − 3 1 + 1 = 37 \frac{39+0-3}{1}+1=37 139+0−3+1=37
然后第二层继续卷积,用到5x5的过滤器,有20个。输出为17x17x20。
接着第三层卷积,40个5x5的过滤器,步幅为2,得到7x7x40。
计算出1960个特征,对该卷积进行处理,可以将其平滑或展开成1960个单元。填充到logistic回归或softmax回归中。
设计卷积神经网络时,要考虑过滤器大小、步幅、padding、过滤器数目,图像的高宽会随网络深度加深而减小,通道数量会增加。
一个典型的卷积神经网络通常有三层:
1.卷积层CONV
2.池化层POOL
3.全连接层FC
池化层和全连接层比卷积层更易设计。
九、池化层(Pooling layers)
除了卷积层,通常会用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性。
如图所用池化类型为最大池化,执行最大池化的树池是一个2x2矩阵,此输出每个元素对应颜色区域里的最大元素值。就如使用了一个2x2的过滤器,步幅为2。左上角所得很大,可能是CAP特征。
最大化运算实际作用是,如果在过滤器中提取到某个特征,那么保留其最大值。若没有提取到这个特征,可能右上象限不存在这个特征,其中的最大值也很小,这就是最大池化的直观理解。
其有个特点是,由一组超参数,但并没有参数需要学习。
输入5x5,采用最大池化法,过滤器为3x3,步幅1,输出为3x3。
平均池化不常用。深度很深的神经网络可以用平均池化来分解规模为7x7x1000的网络的表示层,在整个空间内求平均值,得到1x1x1000。
池化的超参数包括:
1.过滤器大小f
2.步幅s
3.最大池化 或 平均池化
常用f=2,s=2,相当于高宽减半。池化过程没有需要学习的参数。
十、卷积神经网络示例(Convolutional neural network example)
有32x32x3的输入图片,做手写体数字识别0-9。过程:
1.所用模型和LeNet-5相似。第一层6个过滤器为5x5,步幅1,padding=0,所得标记为CONV1。
2.构建池化层,选用最大池化,f=2,s=2,padding=0,输出标记为POOL1。
3.接着构建Layer2,包含CONV2和POOL2。
4.5x5x16有400个元素,平整化一个大小为400的一维向量,想象为神经元集合,利用400元素构建下一层,包含120个元素,标记为FC3,即400元素和120元素为全连接层。
5.再对FC3加一个全连接层FC4,含有84个单元。
6.用84个单元填充soft函数,softmax识别手写数字就会有10个输出。
卷积文献中包含两类卷积:
1.一个卷积层和一个池化层为一层,是神经网络的Layer1,
2.卷积层作为一层,池化层单独作为一层。
在计算神经网络层数时,通常只统计具有权重和参数的层。池化层没有权重和参数。
随着网络加深,高宽都会减小,通道数会增加。卷积神经网络中常见的还有,一个或多个卷积后面跟随一个池化层,接着一个或多个卷积后跟随一个池化层,然后是几个全连接层,最后是一个softmax。
1.池化层和最大池化层无参数
2.卷积层参数相对较少
3.许多参数集中在全连接层
十一、为什么使用卷积(Why convolutions?)
卷积层优势在于 参数共享 和 稀疏连接。
1.参数共享
特征检测若适用于图片的某个区域,那么也可能适用于其他区域。
2.稀疏连接
输出的左上角的0仅仅依赖输入左上角的九个数。
通过这两种机制可以减少参数,以便用更小的训练集训练它,预防过拟合。
最后,把这些层整合起来:输入图片,增加卷积层和池化层,再添加全连接层,最后输出一个softmax,即y^。
1
深度学习-吴恩达 ↩︎
卷积神经网络(一)- 卷积神经网络相关推荐
- 卷积神经网络之卷积计算、作用与思想 深度学习
博客:blog.shinelee.me | 博客园 | CSDN 卷积运算与相关运算 在计算机视觉领域,卷积核.滤波器通常为较小尺寸的矩阵,比如3×33×3.从这个角度看,多层卷积是在进行逐层映射,整 ...
- BP神经网络与卷积神经网络(CNN)
BP神经网络与卷积神经网络(CNN) 1.BP神经网络 1.1 神经网络基础 神经网络的基本组成单元是神经元.神经元的通用模型如图 1所示,其中常用的激活函数有阈值函数.sigmoid函数和双曲正 ...
- 【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )
文章目录 I . 人类的视觉原理 II . 卷积神经网络 模仿 视觉原理 III . 卷积神经网络简介 IV . 卷积神经网络 组成 V . 卷积神经网络 工作流程 VI . 降低样本参数数量级 VI ...
- cnn卷积神经网络_卷积神经网络(CNN)原理及应用
一.CNN原理 卷积神经网络(CNN)主要是用于图像识别领域,它指的是一类网络,而不是某一种,其包含很多不同种结构的网络.不同的网络结构通常表现会不一样.从CNN的一些典型结构中,可以看到这些网络创造 ...
- Deep learning:卷积神经网络之卷积计算、作用与思想
[定义] 参考链接:https://baike.baidu.com/item/%E5%8D%B7%E7%A7%AF/9411006?fr=aladdin 大牛链接:https://www.cnblog ...
- 神经网络与卷积神经网络入门(保证让你懂)
我一直搞不懂神经网络是怎么工作的以及为什么cnn要卷积池化就能达到图像分割的目的 直到我看到了深度之眼的课程 我先用通俗易懂的语言解释一下神经网络说白了就是利用链式求导法则将loss函数对权重w求导, ...
- 卷积网络和卷积神经网络_卷积神经网络的眼病识别
卷积网络和卷积神经网络 关于这个项目 (About this project) This project is part of the Algorithms for Massive Data cour ...
- 04.卷积神经网络 W1.卷积神经网络(作业:手动/TensorFlow 实现卷积神经网络)
文章目录 作业1:实现卷积神经网络 1. 导入一些包 2. 模型框架 3. 卷积神经网络 3.1 Zero-Padding 3.2 单步卷积 3.3 卷积神经网络 - 前向传播 4. 池化层 5. 卷 ...
- 04.卷积神经网络 W1.卷积神经网络
文章目录 1. 计算机视觉 2. 边缘检测示例 3. 更多边缘检测 4. Padding 5. 卷积步长 6. 三维卷积 7. 单层卷积网络 8. 简单卷积网络示例 9. 池化层 10. 卷积神经网络 ...
- 深入学习卷积神经网络中卷积层和池化层的意义(转)
为什么要使用卷积呢? 在传统的神经网络中,比如多层感知机(MLP),其输入通常是一个特征向量:需要人工设计特征,然后将这些特征计算的值组成特征向量,在过去几十年的经验来看,人工找到的特征并不是怎么好用 ...
最新文章
- 顶会论文9篇,又斩获百度奖学金!哈工大NLP“新生代”正崭露头角
- 创业失败后,我决定开源所有产品代码
- 学习Windows2008——设计活动目录
- ***如何优雅的选择字体(font-family)
- 10.Facade-外观模式
- 关于python的打包打包完生成exe文件之后,不能正常执行程序的问题解决。
- 为什么要进行字节对齐?
- SSH2+Daoz项目中的分页查询
- 字符串匹配——RabinKarp算法
- 真香!AirPods Pro美国全网脱销,网友:而我内心却毫无波澜
- CENTSO5中如何加DNS,IP
- 从零入门 Serverless | 函数计算的开发与配置
- WEB应用安全解决方案测试验证
- C语言小游戏——扫雷
- 计算机网络原理第五版课后--习题答案
- 简单易上手的MMD-Ray渲基础教程
- 【loj6184】无心行挽(虚树+倍增)
- find命令的基础用法以及按文件修改时间查找文件
- JavaScript逻辑训练题(一)
- 推流地址 java_如何通过代码生成推流地址和播放地址?