深度学习基础笔记——卷积神经网络概念及其计算方式
卷积神经网络(Convolutional Neural Network,CNN)
卷积
神经网络不再对每个像素信息做处理,而是对图片每一小块像素区域做处理,这种做法加强了信息的连续性。神经网络能够看到一个图形而不是一个点,同时加深神经网络对图片的理解。
具体:批量过滤器在图片上滚动收集图片上的信息,每一次收集的都是像素区域,再整理总结,再滚动收集……
Eg.图像拥有长宽高,其中高表示图片的颜色信息黑白高度1 彩色高度3
批量过滤器,每次长宽压缩,高度增加,对输入图片更深的理解
convolution卷积层:主要作用是保留图片的特征
pooling池化层:主要作用是把数据降维,可以有效的避免过拟合
Full connected 全连接层:根据不同任务输出我们想要的结果
classifier 分类预测
卷积核(滤波器,convolution kernel)
是可以用来提取特征的图像和卷积核卷积,就可以得到特征值,就是destination value特征提取。
卷积核放在神经网络里,就代表对应的权重(weight)
卷积核和图像点乘(dot product),就代表卷积核里的权重单独对相应位置的Pixel作用
这里强调点乘,虽说称为卷积,实际上是位置一一对应的点乘,不是真正意义的卷积:比如图像位置(1,1)乘以卷积核位置(1,1),仔细观察图右上角。
点乘完所有结果加起来=所有作用效果叠加起来。
神经网络公式
卷积运算方式及各部分介绍
从左到右,每隔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个全连接层,第一卷积层使用大的卷积核,大小为1111,步长为4,第二卷积层使用55的卷积核大小,步长为1,剩余卷积层都是33的大小,步长为1。激活函数使用ReLu(虽然不是他发明,但是他将其发扬),池化层使用重叠的最大池化,大小为33,步长为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层),所有的卷积核都使用33的大小,池化都使用大小为22,步长为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.双线性插值上采样
- 分享
- 举报
-
浏览量:3932次2018-02-14 10:30:11
-
浏览量:765次2023-07-05 10:11:45
-
浏览量:440次2024-02-01 14:20:47
-
浏览量:1274次2024-02-20 17:35:09
-
浏览量:634次2024-02-01 14:28:23
-
浏览量:5245次2021-08-13 15:39:02
-
浏览量:4249次2021-04-19 14:54:23
-
浏览量:439次2023-08-28 09:56:42
-
浏览量:670次2024-02-06 11:56:53
-
浏览量:4945次2021-07-26 11:28:05
-
浏览量:487次2023-07-18 13:41:23
-
浏览量:500次2023-07-05 10:11:51
-
浏览量:395次2023-09-28 11:44:09
-
浏览量:5028次2021-04-15 15:51:43
-
浏览量:664次2023-09-06 11:12:55
-
浏览量:4892次2021-04-23 14:09:37
-
浏览量:6541次2021-05-31 17:02:05
-
浏览量:445次2023-09-06 10:09:13
-
浏览量:723次2023-07-05 10:11:54
- 语义分割系列24-PointRend(pytorch实现)
- WIDER数据集的相关标注,逐一显示landmark dataset所有图片的标注
- 基于深度学习框架的离网DOA估计
- 深度学习之卷积神经网络CNN及tensorflow代码实现示例
- 【深度学习】医学图像处理之视杯视盘分割数据集和评价指标
- pytorch 导出 onnx 模型 & 用onnxruntime 推理图片
- Tensorflow vs PyTorch —— 卷积神经网络
- YOLOv4 caffemodel转om在Atlas服务器上面推理
- 解CenterNet中的Heatmap热图解释
- python实现基于长短期记忆网络LSTM模型预测茅台股票价格趋势
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
tomato
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明