卷积神经网络概述及相关概念讲解(二)

推荐阅读:

神经网络概述一

卷积神经网络概述

卷积神经网络也称(CNN)网络,主要应用于计算机视觉这个部分。比如图像任务:图像检测,图像分类,图像检索。上一篇文章中所说,神经网络是用于特征的提取,同样卷积神经网络也是一个特征提取的过程。
传统神经网络存在一些问题,如权重参数矩阵通常过大,以及过拟合风险过大等,为了解决这个问题,提出了卷积神经网络。
卷积神经网络主要应用领域:
1、超分辨率重构:将原始的模糊图像通过训练变成清晰的图像。
2、医学任务:如细胞检测等
3、字体识别
4、无人驾驶
5、人脸识别
卷积神经网络与传统网络的区别:
在这里插入图片描述
如上图所示:传统神经网络的输入层,是一个像素点所过程的矩阵,如一个32x32x3的图片,传统神经网络需要将其变成一个3072x1的矩阵进行数据处理后再作为输入数据。而卷积神经网络则是直接将其作为32x32的矩阵输入,在这里3是颜色通道,通常有R,G,B三种,则在卷积中我们会将其分别分为32x32x1的矩阵,共三个,代表三个颜色通道的输入,再与卷积核进行卷积得到结果,这一点的过程,后面会详细介绍。

卷积神经网络架构

在这里插入图片描述
卷积神经网络,整体架构分为输入层,卷积层,池化层,全连接层
(1)这里的输入层,是直接将图像分为不同的颜色通道进行输出,在这个过程中,图像的长和宽都不变,图像输入的矩阵直接是一个三维矩阵,如32x32x1,只不过,有几个颜色通道就有几个输入矩阵。
(2)卷积层,将每个输入矩阵分别与其对应颜色通道的卷积核进行计算,最终得到的每个结果加在一起,再加上数值b,得到最终的数据
(3)池化层,将卷积层得到的数据进行压缩
(4)全连接层:可以理解为,当我们进行了卷积层与池化层之后得到的最终是一个三维矩阵,但是这始终是一个矩阵,我们如何才能得到最终的数值呢?如果是图像分类任务,又如何得到最终的类别呢?这里用到的就是全连接,将得到的三维矩阵进行变化,变换成一个一维矩阵,再进行全连接,最终得到类别的得分。

看到这里,如果不明白,没有关系,接下来会进行一一的讲解。

卷积神经网络具体细节

输入层

假如我们得到了一个图像,这个图像是5x5x3的图像,并且颜色通道为R,G,B,那么输入层的数据,则是三个5x5x1的矩阵,这三个分别对应当颜色通道为R时的矩阵参数,当颜色通道为G时的矩阵参数,当颜色通道为B时的矩阵参数
在这里插入图片描述
输入的三个矩阵,分别对应R,G,B时的矩阵参数,
在这里插入图片描述

卷积层

卷积层做了一个什么事情?

如下图,将三个输入矩阵,分别与对应的三个颜色通道的卷积核(每个颜色通道的卷积核数值不同)进行内积运算(对应位置相乘再相加)再将最终计算出来的三个结果进行相加得到的数值最终与b值进行相加,此时得到的是最右边,最上边绿色的第一个值,再将蓝色3x3方框以步长为2向右移动,最终计算得出的是绿色方框的第一个特征图。
这就是卷积层的整体计算流程,其中这里的卷积核相当于传统神经网络的权重矩阵,b也相当于传统神经网络中的偏置矩阵。
在这里插入图片描述
那么一组颜色通道对应的权重矩阵可以计算出一个特征图,那如果再增加一组特征提取矩阵,也就是卷积核,就会在得到一个特征图。卷积核越多,得到的卷积层数越多,最终得到的特征图也会越多。

其中Filter W中的数值3x3x3代表其所构成的卷积核是三通道,长为3,宽为3的。

特征图的个数

上述,我们说过,对于一组卷积核,经过计算,可以得到一个特征图,那么我们经过多次特征提取(提供多组卷积核)就可以得到多个特征图
在这里插入图片描述
如上图所示,对于一个32x32x3的图像,我们经过6组卷积核,最终得到的特征图为28x28x6。

堆叠的卷积层

经过上面卷积最终得到相应的特征图,但通常,我们不仅仅会进行一组卷积,相应的,为了提取到更多的特征,我们会进行多组卷积;如下图:

在这里插入图片描述
在经过一次卷积操作之后,我们得到一组28
x28x6的特征图,再将这些特征图作为输入,再次进行卷积,选取卷积核组为10,则会得到24x24x10的特征图。之后,我们还可以再次基础上进行卷积,提取到尽可能多的数据。

卷积结果的计算

对于一个32x32x3的输入,我们怎样会得到28
x28x6的特征图呢?以下是其计算公式
在这里插入图片描述
这里H1是指原始长度,Fh是指卷积核长度,p指填充树,S指步长,步长越短,提取的特征越多。

如果输入数据是32x32x3的图像,用10个5x5x3的filter来进行卷积操作,指定步长为1,边界填充为2,最终输入的规模为(32-5+2x2)/1 + 1 = 32,所以输出规模为323210,
经过卷积操作后也可以保持特征图长度、宽度不变。这里的10是经过了10个卷积核,最终形成了10个特征图。

卷积层所涉及的参数

在这里插入图片描述
(1)滑动窗口步长:步长为以,即整个对应的卷积范围向下一个进行卷积时,平移一个单位。当为2时,向下一个进行卷积时,平移两个单位。当滑动窗口设置的越大,得到的输出模型的特征也就越少。一般来说,对于图像识别任务,通常将滑动窗口步长设置为1;
在这里插入图片描述
(2)卷积核尺寸:
比如常用的卷积核就是3x3的尺寸,那么相应的输入所选取的滑动窗口也是3x3。
(3)边缘填充
对于滑动窗口与卷积核进行内积化计算特征值时,存在一个问题,那就是滑动窗口边界处的数值通常会多次参与计算特征值,从而导致边缘部分相对来说,参与次数较少,那么最终得到的模型,相对来说,更考虑中间部分。这种方式是不对的,因为边缘部分并非不重要,那么为了平衡这一现象,就需要进行边缘填充。
在这里插入图片描述
如上述的图,边缘部分填充数值为0,既不影响边缘的计算,又增加了边缘的最终影响效应。

卷积参数共享

在这里插入图片描述
在整个上述图像的计算过程中,无论滑动窗口怎么移动,与之相进行内积运算的卷积核是始终不变,这就是卷积的参数共享。

池化层

在原始卷积的基础上,我们会得到一个特征图,那么这个特征图的数据可能会很大,而池化层的作用就是为了对数据进行压缩。
在这里插入图片描述
如上图所示,我们在卷积层中得到了一个224x224x64的特征模型,但是这个特征参数数值太大,可以通过最大池化进行压缩。对每一层224x224x1的特征图进行压缩,选取池化参数为2x2,那么将会在每个2x2的图形中选取最大的数值,作为其特征值。在池化过程中,不涉及复杂的运算,同时池化过后,图像的层数不变。
如下图:
在这里插入图片描述

如何判断卷积网路的层数?

在这里插入图片描述
对于一个图像,我们可能经过多层卷积和多层池化,这里规定 ,卷积层的层数与涉及到的运算有关,如果某一层涉及到了相当的矩阵运算,那么它就算一层。
拿上述图像举例,输入图像,进行卷积,之后进行RELU(max函数)非线性化(非线性化是不涉及到矩阵的运算的,因此其不是一层。)再经过一层卷积和RELU之后,进行POOL(池化操作)池化操作也是不涉及矩阵运算的,因此整个过程只有卷积和最后的FC(全连接层)可以称之为神经网络的层数。那么上述这个卷积神经网络的层数为:七层的卷积神经网络
为什么要在卷积之后用RELU进行非线性化?
我的理解是,整个神经网络卷积层的函数为f(x,W)=x*W+b,这个函数为线性函数,而神经网络不但要考虑线性函数的因素,还要考虑非线性函数的因素。因此要在每个卷积之后,将其数据使用RELU进行非线性化。
全连接层FC为什么涉及矩阵运算
经过若干层卷积和池化之后,我们得到的特征图是一个三维的特征图,但是,对于图像分类任务来说,我们最终得到的应该是每个分类的得分或者概率。那么如何从三维特征图转换成一维的图像得分呢?首先要将三维数据进行处理,将其转换为一个一维数据(这个过程与传统神经网络的输入相似)再通过与权重矩阵进行内积,最终可以得到每个分类的得分。其中进行内积的过程就是全连接。

特征图的变化
在这里插入图片描述

对于原始的输入数据,经过多次卷积会得到较多的特征图,再经过池化会将特征图进行压缩。最终得到的三维数据经过转换和全连接得到最终的结果。

参考资料:
b站深度学习从入门到实战

推荐阅读:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值