算法基础——卷积神经网络CNN

CNN的作用

基本我们遇到的计算机视觉任务都可以用CNN来,如检测任务、分类检索、无人驾驶、超分辨率重构(重构清晰图像)、医学任务等。 

传统神经网络,把输入拉伸为一个列向量,CNN是直接读入原始数据,是一个3维的数据。

整体架构

 卷积层提取特征,池化层压缩特征

卷积做了一件什么事 

如上图,将输入图像划分为5*5*3(这里有点不符合),对其中一个维度,选取3*3的区域提取特征,大的数字表示输入,小的数字表示权重W ,对应位置相乘后得到最右边的值

 卷积神经网络将输入图像划分为一个个小区域,每个区域由若干像素点组成,对每个区域提取特征值,对每个区域X*W = H 提取特征也是调整W权重参数,使得特征提取最好。这里只是一个维度,对图像R、G、B、3通道都进行特征提取。

 图像数据是分为RGB3通道提取特征,然后3通道特征相加

7*7*3大小的图像,划分为3*3*3的区域,对每一个区域提取特征一个特征值。卷积用向量内积方法计算。 

 R、G、B三个通道输入X与W进行内积运算,最后结果之和加偏置项b参数得到输出O的第一个输出值3。

输入蓝色框一个区域计算后,向右移动一列,得到应一个区域,继续计算,得到O的第二个输出值。依次类推,可以算出输出矩阵O的每一个值。

 堆叠的卷积层

卷积一次得到中间特征图low level,在中间特征图基础上再继续卷积,得到high level 特征图 

卷积filter 的维数一定要和原始图维数一样。区域划分时,移动的步长不一样,得到的特征图长和宽就不一样,有n个filter,提取后就有n维的特征图

 步长较小时,提取特征的区域很多,提取到的特征就越丰富。

卷积层参数 

滑动窗口步长影响输出特征图的weigh和high,步长越小,得到的特征矩阵就越大。

卷积核尺寸:和原图像矩阵划分区域时的区域大小一样(也就是权重矩阵w的大小),因为是用原图像划分的小区域和卷积核运算,常见为划分3*3. 

边缘填充:在划分区域时,滑动窗口步长小时,会使某些值重复使用,而边界值重复使用的次数很少,会导致边界特征缺失,所以的原矩阵外围增加0数据,使原来的边界值能得到利用的次数增多,弥补了边界特征的缺失。

如下图:划分区域时,内测重叠的地方利用的多,边界利用得少。外围加了一圈0,使得原来的边界值利用的更多。加0是因为对最终结果不影响。

 卷积核个数:指有几个Filter,有n个,就得到n个特征图(也即n维)

池化层(下采样downsamping)

       用来压缩特征,在原始特征图上刷选出其中一些数据作为压缩后的特征图。通道channel(也就是维数)不变,只抽取部分数据,只改变weigh和high。

 最大池化:每个区域选取最大的值出来

 池化和一开始的特征提取类似,将原特征图划分为一个个小区域,在每个小区域上选取最大的特征数值(最大池化)组成压缩后的特征图。特征值大代表更重要。

  池化层不涉及任何计算,如上图只是选取最大特征值,把4*4压缩为2*2.

卷积层CONV后接RELU激活函数,两次卷积后得到一个比较大的特征图,然后做一次池化POOL压缩特征图。不断卷积不断池化。最后得到一个满意的特征图假设是32*32*10,最后要在这个结果上得到一个分类结果,要再加一个全连接FC。最后的pool后,把特征图拉伸为一个2维的向量,再接FC,全连接后得到分类结果。

激活函数:增加模型的非线性表达能力,提高模型鲁棒性,非线性表达能力,缓解梯度消失问题,将特征图映射到新的特征空间从何更有利于训练,加速模型收敛等问题都有很好的帮助,用于分类

全连接层:一般会放在网络的最后,作用是用来综合所有信息。对于cnn它提取特征的范围是全图的,直接把图像降维成一堆序列。

卷积层是一种局部连接,它所能提取的特征的范围,取决于卷积核的感受野,当卷积核感受野覆盖到全图的时候,它的作用就和全连接层类似了。(所以用和特征图尺寸一样)

激活函数(Activation Function),假设我们经过一个Relu之后的输出如下

Relu:

然后开始到达全连接层

全连接层

以上图为例,我们仔细看上图全连接层的结构,全连接层中的每一层是由许多神经元组成的(1x 4096)的平铺结构,上图不明显,我们看下图

它是怎么样把3x3x5的输出,转换成1x4096的形式?

很简单,可以理解为在中间做了一个卷积

从上图我们可以看出,我们用一个3x3x5的filter 去卷积激活函数的输出,得到的结果就是一个fully connected layer 的一个神经元的输出,这个输出就是一个值

因为我们有4096个神经元

我们实际就是用一个3x3x5x4096的卷积层去卷积激活函数的输出


全连接层有两层1x4096fully connected layer平铺结构(有些网络结构有一层的,或者二层以上的)

但是大部分是两层以上,泰勒公式都知道吧,意思就是用多项式函数去拟合光滑函数,我们这里的全连接层中一层的一个神经元就可以看成一个多项式,用许多神经元去拟合数据分布,但是只用一层fully connected layer 有时候没法解决非线性问题,而如果有两层或以上fully connected layer就可以很好地解决非线性问题了.

全连接层之前的作用是提取特征,全连接层的作用是分类,在整个卷积神经网络中起到“分类器”的作用

特征图变化

 卷积后特征变多,经过池化后压缩特征,最后池化后拉申为一个向量进行全链接,最后得到分类结果。

感受野

从First Conv的特征矩阵可以看到,它由Input5*5矩阵卷积得到,Second Conv的特征图可以看到它由First Conv的特征矩阵卷积得到,这就是感受野, 看最后一个值由原来多少个值计算得到的。

参考博客:

神经网络:全连接层_三世的博客-CSDN博客_神经网络全连接层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值