深度学习基础笔记——卷积神经网络概念及其计算方式_卷积神经网络公式-程序员宅基地

技术标签: 卷积  卷积神经网络  深度学习  【深度学习笔记】  

相关申明及相关参考:笔记仅作学习参考

此部分前阶段学习的,因此部分出入有所纰漏,如有侵权,请联系删除。

目录

卷积神经网络(Convolutional Neural Network,CNN)

卷积

卷积核(滤波器,convolution kernel)

神经网络公式 

卷积运算方式及各部分介绍

补0(zero padding)

池化(Pooling)

激活函数RelU (Rectified Linear Units)

全连接层(Fully connected layers)

卷积层的计算细节

 标准卷积计算举例

1 x 1 卷积计算举例

 全连接层计算举例

常见的几种卷积神经网络介绍

A LeNet

B AlexNet

C VGGNet

D ResNet


卷积神经网络Convolutional Neural NetworkCNN

卷积

神经网络不再对每个像素信息做处理,而是对图片每一小块像素区域做处理,这种做法加强了信息的连续性。神经网络能够看到一个图形而不是一个点,同时加深神经网络对图片的理解。

具体:批量过滤器在图片上滚动收集图片上的信息,每一次收集的都是像素区域,再整理总结,再滚动收集……

Eg.图像拥有长宽高,其中高表示图片的颜色信息黑白高度1 彩色高度3

批量过滤器,每次长宽压缩,高度增加,对输入图片更深的理解

  • convolution卷积层:主要作用是保留图片的特征
  • pooling池化层:主要作用是把数据降维,可以有效的避免过拟合
  • Full connected 全连接层:根据不同任务输出我们想要的结果
  • classifier 分类预测

卷积核(滤波器,convolution kernel)

是可以用来提取特征的图像和卷积核卷积,就可以得到特征值,就是destination value特征提取。

卷积核放在神经网络里,就代表对应的权重(weight)

卷积核和图像点乘(dot product),就代表卷积核里的权重单独对相应位置的Pixel作用

这里强调点乘,虽说称为卷积,实际上是位置一一对应的点乘,不是真正意义的卷积:比如图像位置(1,1)乘以卷积核位置(1,1),仔细观察图右上角。

点乘完所有结果加起来=所有作用效果叠加起来。

神经网络公式 output=\sum_{i}^{}w_{i}x_{i}+b

卷积运算方式及各部分介绍

从左到右,每隔x列Pixel,向右移动一次卷积核进行卷积,当已经到最右,从上到下,每隔x行pixel,向下移动一次卷积核,移动完成,再继续如上所述,即先从左到右,再从上到下,直到所有pixels都被卷积核过一遍,则完成输入图片的第一层卷积层的特征提取。

这里的x叫作stride,就是步长,如果x = 2,就是相当每隔两行或者两列进行卷积。

补0(zero padding

分量的pixel外面围一圈0,称之为补0(zero padding),同样是stride x=1的情况下,补0比原来没有添0的情况下进行卷积,从左到右,从上到下都多赚了2次卷积,这样第一层卷积层输出的特征图(feature map)仍然为5x5,和输入图片的大小一致,而没有添0的第一层卷积层输出特征图大小为3x3。

  • 优点:
  • 获得的更多更细致的特征信息,如获得更多的图像边缘信息。
  • 控制卷积层输出的特征图的size,从而达到控制网络结构的作用,如果没有做zero-padding第二层卷积层的卷积核是3x3,那么第二层卷积层输出的特征图就是1x1。

池化(Pooling)

​ Pooling 层主要的作用是下采样,通过去掉 Feature Map 中不重要的样本,进一步减少参数数量。

通常情况下,池化区域是2*2大小,然后按一定规则转换成相应的值,例如取这个池化区域内的最大值(max-pooling)、平均值(mean-pooling)等,以这个值作为结果的像素值。

最大池化(max-pooling)保留了每一小块内的最大值,也就是相当于保留了这一块最佳的匹配结果(因为值越接近1表示匹配越好)。也就是说,它不会具体关注窗口内到底是哪一个地方匹配了,而只关注是不是有某个地方匹配上了。

除了 Max Pooing 之外,常用的还有 Average Pooling ——取各样本的平均值。
对于深度为D的 Feature Map,各层独立做 Pooling,因此 Pooling 后的深度仍然为D。

通过加入池化层,图像缩小了,能很大程度上减少计算量,降低机器负载。

激活函数RelU (Rectified Linear Units)

常用的激活函数有sigmoid、tanh、relu等等,前两者sigmoid/tanh比较常见于全连接层,后者ReLU常见于卷积层。激活函数的作用是用来加入非线性因素,把卷积层输出结果做非线性映射。

在卷积神经网络中,激活函数一般使用ReLU(The Rectified Linear Unit,修正线性单元),它的特点是收敛快,求梯度简单。计算公式也很简单,max(0,T),即对于输入的负值,输出全为0,对于正值,则原样输出。

全连接层(Fully connected layers)

全连接层在整个卷积神经网络中起到“分类器”的作用,即通过卷积、激活函数、池化等深度网络后,再经过全连接层对结果进行识别分类。

卷积层的计算细节

卷积层尺寸的计算原理

○输入矩阵格式:四个维度,依次为:样本数、图像高度、图像宽度、图像通道数

○输出矩阵格式:与输出矩阵的维度顺序和含义相同,但是后三个维度(图像高度、图像宽度、图像通道数)的尺寸发生变化。

○权重矩阵(卷积核)格式:同样是四个维度,但维度的含义与上面两者都不同,为:卷积核高度、卷积核宽度、输入通道数、输出通道数(卷积核个数)

◎输入矩阵、权重矩阵、输出矩阵这三者之间的相互决定关系

卷积核的输入通道数(in depth)由输入矩阵的通道数所决定。(红色标注)

输出矩阵的通道数(out depth)由卷积核的输出通道数所决定。(绿色标注)

输出矩阵的高度和宽度(height, width)这两个维度的尺寸由输入矩阵、卷积核、扫描方式所共同决定。计算公式如下。(蓝色标注)

 * 注:以下计算演示均省略掉了 Bias ,严格来说其实每个卷积核都还有一个 Bias 参数。

 标准卷积计算举例

以 AlexNet 模型的第一个卷积层为例,
- 输入图片的尺寸统一为 227 x 227 x 3 (高度 x 宽度 x 颜色通道数),
- 本层一共具有96个卷积核,
- 每个卷积核的尺寸都是 11 x 11 x 3。
- 已知 stride = 4, padding = 0,
- 假设 batch_size = 256,
- 则输出矩阵的高度/宽度为 (227 - 11) / 4 + 1 = 55

1 x 1 卷积计算举例

后期 GoogLeNet、ResNet 等经典模型中普遍使用一个像素大小的卷积核作为降低参数复杂度的手段。
从下面的运算可以看到,其实 1 x 1 卷积没有什么神秘的,其作用就是将输入矩阵的通道数量缩减后输出(512 降为 32),并保持它在宽度和高度维度上的尺寸(227 x 227)。

 全连接层计算举例

实际上,全连接层也可以被视为是一种极端情况的卷积层,其卷积核尺寸就是输入矩阵尺寸,因此输出矩阵的高度和宽度尺寸都是1。

总结下来,其实只需要认识到,虽然输入的每一张图像本身具有三个维度,但是对于卷积核来讲依然只是一个一维向量。

卷积核做的,其实就是与感受野范围内的像素点进行点积(而不是矩阵乘法)。


常见的几种卷积神经网络介绍

目前图像分类中的ResNet, 目标检测领域占统治地位的Faster R-CNN,分割中最牛的Mask-RCNN, UNet和经典的FCN都是以下面几种常见网络为基础。

A LeNet

A1网络背景

LeNet诞生于1994年,由深度学习三巨头之一的Yan LeCun提出,他也被称为卷积神经网络之父。LeNet主要用来进行手写字符的识别与分类,准确率达到了98%,并在美国的银行中投入了使用,被用于读取北美约10%的支票。LeNet奠定了现代卷积神经网络的基础。

A2网络结构

上图为LeNet结构图,是一个6层网络结构:三个卷积层,两个下采样层和一个全连接层(图中C代表卷积层,S代表下采样层,F代表全连接层)。其中,C5层也可以看成是一个全连接层,因为C5层的卷积核大小和输入图像的大小一致,都是5*5。

A3 网络特点

·每个卷积层包括三部分:卷积、池化和非线性激活函数(sigmoid激活函数)

·使用卷积提取空间特征

·降采样层采用平均池化

B AlexNet

B1网络背景

AlexNet由Hinton的学生Alex Krizhevsky于2012年提出,并在当年取得了Imagenet比赛冠军。AlexNet可以算是LeNet的一种更深更宽的版本,证明了卷积神经网络在复杂模型下的有效性,算是神经网络在低谷期的第一次发声,确立了深度学习,或者说卷积神经网络在计算机视觉中的统治地位。

B2网络结构

AlexNet的结构及参数如上图,是8层网络结构(忽略激活,池化,LRN和dropout层),有5个卷积层和3个全连接层,第一卷积层使用大的卷积核,大小为11*11,步长为4,第二卷积层使用5*5的卷积核大小,步长为1,剩余卷积层都是3*3的大小,步长为1。激活函数使用ReLu(虽然不是他发明,但是他将其发扬),池化层使用重叠的最大池化,大小为3*3,步长为2。在全连接层增加了dropout,第一次将其实用化。

B3 网络特点

·使用两块GPU并行加速训练,大大降低了训练时间

·成功使用ReLu作为激活函数,解决了网络较深时的梯度弥散问题

·使用数据增强、dropout和LRN层来防止网络过拟合,增强模型的泛化能力

C VGGNet

C1网络背景

VGGNet是牛津大学计算机视觉组和Google DeepMind公司一起研发的深度卷积神经网络,并取得了2014年Imagenet比赛定位项目第一名和分类项目第二名。该网络主要是泛化性能很好,容易迁移到其他的图像识别项目上,可以下载VGGNet训练好的参数进行很好的初始化权重操作,很多卷积神经网络都是以该网络为基础,比如FCN,UNet,SegNet等。vgg版本很多,常用的是VGG16,VGG19网络。

C2网络结构

 上图为VGG16的网络结构,共16层(不包括池化和softmax层),所有的卷积核都使用3*3的大小,池化都使用大小为2*2,步长为2的最大池化,卷积层深度依次为

64→128→256→512→512。

C3 网络特点

网络结构和AlexNet有点儿像,不同的地方在于:

·主要的区别,一个字:深,两个字:更深。把网络层数加到了16-19层(不包括池化和softmax层),而AlexNet是8层结构。

·将卷积层提升到卷积块概念。卷积块有2~3个卷积层构成,使网络有更大感受野的同时能降低网络参数,同时多次使用ReLu激活函数有更多的线性变换,学习能力更强。

·在训练时和预测时使用Multi-Scale做数据增强。训练时将同一张图片缩放到不同的尺寸,在随机剪裁到224*224的大小,能够增加数据量。预测时将同一张图片缩放到不同尺寸做预测,最后取平均值。

D ResNet

D1网络背景

ResNet(残差神经网络)由微软研究院的何凯明等4名华人于2015年提出,成功训练了152层超级深的卷积神经网络,效果非常突出,而且容易结合到其他网络结构中。在五个主要任务轨迹中都获得了第一名的成绩:

ImageNet分类任务:错误率3.57%

ImageNet检测任务:超过第二名16%

ImageNet定位任务:超过第二名27%

COCO检测任务:超过第二名11%

COCO分割任务:超过第二名12%

作为大神级人物,何凯明凭借Mask R-CNN论文获得ICCV2017最佳论文,也是他第三次斩获顶会最佳论文,另外,他参与的另一篇论文:Focal Loss for Dense Object Detection,也被大会评为最佳学生论文。

D2网络结构

 上图为残差神经网络的基本模块(专业术语叫残差学习单元),输入为x,输出为F(x)+x,F(x)代表网络中数据的一系列乘、加操作,假设神经网络最优的拟合结果输出为H(x)=F(x)+x,那么神经网络最优的F(x)即为H(x)与x的残差,通过拟合残差来提升网络效果。为什么转变为拟合残差就比传统卷积网络要好呢?因为训练的时候至少可以保证残差为0,保证增加残差学习单元不会降低网络性能,假设一个浅层网络达到了饱和的准确率,后面再加上这个残差学习单元,起码误差不会增加。

通过不断堆叠这个基本模块,就可以得到最终的ResNet模型,理论上可以无限堆叠而不改变网络的性能。下图为一个34层的ResNet网络。

 D3 网络特点

·使得训练超级深的神经网络成为可能,避免了不断加深神经网络,准确率达到饱和的现象(后来将层数增加到1000层)

·输入可以直接连接到输出,使得整个网络只需要学习残差,简化学习目标和难度。

·ResNet是一个推广性非常好的网络结构,容易和其他网络结合2.双线性插值上采样

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MengYa_Dream/article/details/119709726

智能推荐

【OpenCV 例程200篇】64. 图像锐化——Sobel 算子_opencv sobel算子进行图像锐化-程序员宅基地

文章浏览阅读9.8k次,点赞8次,收藏48次。图像锐化的目的是增强图像的灰度跳变部分,使模糊的图像变得清晰。图像锐化也称为高通滤波,通过和增强高频,衰减和抑制低频。图像锐化常用于电子印刷、医学成像和工业检测。Sobel 算子是一种离散的微分算子,是高斯平滑和微分求导的联合运算,抗噪声能力强。Sobel 梯度算子很容易通过卷积操作 cv.filter2D 实现,OpenCV 也提供了函数 cv.Sobel 实现 Sobel 梯度算子。_opencv sobel算子进行图像锐化

【Window系统】安装FFmpeg教程_windows安装ffmpeg-程序员宅基地

文章浏览阅读4.1k次,点赞4次,收藏10次。到这里ffmpeg的配置就完成了。我们调用命令行(windows+R输入cmd)输入“ffmpeg –version”,如果出现以下结果则说明配置成功。记得点下方的确定,再关闭当前窗口再点确定,这样才能保存,千万记得不能点击取消。选择新建,把刚刚复制的bin路径粘贴进去,点击确定。_windows安装ffmpeg

The basics of swift-程序员宅基地

文章浏览阅读74次。原文出自:标哥的技术博客前言Swift是iOS、OS X和WatchOS平台新的开发语言。尽管如此,Swift有很多是与我们使用过的C和Objective-C开发经验是很像的。Swift提供了自己版本的C和Objective-C基础数据类型,包括整型Int、浮点型Double和Float、Boolean值Bool...

docker:如何将本地文件复制到docker容器内_docker拷贝文件到容器-程序员宅基地

文章浏览阅读4.1w次,点赞17次,收藏80次。如何将本地文件复制到docker容器内我们通过docker cp指令来将容器外文件传递到docker容器内1、查看容器IDdocker ps -a2、将本地文件复制到docker容器中docker cp 本地文件路径 容器ID/容器NAME:容器内路径举例:docker cp /Users/wuhanxue/Downloads/rabbitmq_delayed_message_exchange-3.9.0.ez 1faca6a70742:/opt/rabbitmq/plugins或者_docker拷贝文件到容器

网络工程师实战系统【NAT专题】-夏杰-专题视频课程-程序员宅基地

文章浏览阅读464次。通俗易懂讲解NAT技术。_网络工程师考试 夏杰 新浪

ROM开发-程序员宅基地

文章浏览阅读1.8k次。作者:X神之怒 链接:https://www.zhihu.com/question/20076944/answer/381539565 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。1、Android系统是什么?Android是Google公司于2007年发布的基于Linux的移动终端系统平台。之所以说是移动终端,是因为现如今手机、MID、Tablet等..._rom开发

随便推点

NachOS线程ID的实现、最大线程数的实现和优先级的添加_nachos线程调度调度时,线程的产生和调度须同时进行,并且要构建它们的线程家族树。-程序员宅基地

文章浏览阅读3.4k次,点赞13次,收藏48次。NachOS线程的描述和优先级1.实验目的(1)通过阅读相关源码,掌握NachOS运行原理和编译方法;(2)完善NachOS下线程描述的内容。2.实验内容(1)为NachOS线程添加线程ID,并设置系统最大线程数;(2)为NachOS线程调度添加优先级,为实现基于优先级的调度做准备。3.实验方法(实验步骤)(1)理解NachOS线程的运行与调度原理,找到需要修改的代码(注:以下所有修改代码的部分,均是由vim修改完成);(2)对thread.h进行修改:在头文件处定义线程最大数MAX_SI_nachos线程调度调度时,线程的产生和调度须同时进行,并且要构建它们的线程家族树。

Vue - 关闭项目 ESlint 校验(非 Vscode 插件)_非vscode eslint-程序员宅基地

文章浏览阅读2.1k次。如果您最初创建项目时(或别人的项目)带有ESlint代码规范校验,本文为您带来如何一行代码进行关闭。_非vscode eslint

15.mvc和分页_mvc用vue分页-程序员宅基地

文章浏览阅读644次,点赞2次,收藏5次。MVC和分页第一节 MVC模式简介1.1 MVC概念​ 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种设计模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),即为MVC。它是一种软件设计的典范,最早为Trygve Reenskaug提出,为施乐帕罗奥多研究中心(Xerox PARC)的Sma..._mvc用vue分页

CentOS 7 安装 Hive_centos7.5安装hive-程序员宅基地

文章浏览阅读1.4k次。操作系统:CentOS 7Hive版本:2.3.6JDK版本:1.8Mysql版本:5.7安装前准备保证 hadoop 正常运行保证 Mysql 正常运行确保JDK 正常安装yum install java-1.8.0-openjdk创建hive数据库并为其授权在msyql数据库中创建hive的元数据库create database hive;..._centos7.5安装hive

eclipse 下载并配置maven_eclipse下载weavn-程序员宅基地

文章浏览阅读2.1k次,点赞5次,收藏21次。原文链接我的个人博客maven的下载到官网:http://maven.apache.org/download.cgi 请选择最新的版本下载解压后,再新建一个仓库目录。如下图配置相应的环境变量右键“计算机”,选择“属性”,之后点击“高级系统设置”,点击“环境变量”,来设置环境变量,有以下系统变量需要配置:新建系统变量 MAVEN_HOME 变量值:C:\Program Fil..._eclipse下载weavn

进出口流程 & 报关单据-程序员宅基地

文章浏览阅读892次。出口流程一. 委托人1. 需找货运代理公司2. 向代理公司询问价格 一般为 ALL IN 价格( 空运费+燃油费+战险费 ) 总费用 = ALL IN 价格 * ( 货物公斤数 ) ALL IN 价格等级: M (最低收费)空运货物最低收费,一般不足10KGS的货物价格。 N+ (低于45KGS且大于10KGS的货物)价格; 45+ (超..._海空联运如何报关

推荐文章

热门文章

相关标签