一个计算机视觉爱好者学习之路--CNN

卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一;
个人理解:
卷积神经网络相较之神经网络,最主要不同之处在于卷积层,卷积层(若是学过信号与系统的孩子可能理解起来就会简单很多)在图像里面,将原图像通过与一个卷积滤波器进行卷积获得新图像;
卷积滤波器主要是用来边缘检测等操作,获取原图像的颜色信息,与边缘信息,在传统的图像处理中,高通滤波器与sobel算子等都是卷积核。
卷积的过程图如下

卷积示意图
在这里借助吴恩达大神的课程图,直观明了
在这里插入图片描述
在这里插入图片描述
OK,明白卷积神经网络与神经网络的最大不同之后,接下去便是CNN的操作流程了。
卷积神经网络的层级流程:

  1. 输入层;
  2. 卷积层;
  3. 激活层;
  4. 池化层;
  5. 全连接层;

1.输入层

主要是对数据进行预处理,首先需要对图像的尺寸进行统一,与卷积层的尺寸统一;再对数据进行归一化,防止不同维度的数据范围造成影响,归一化处理可以防止在训练的过程中特定层过度激活与抑制反向传播步骤中计算的梯度非常大,而导致我们的损失增加;

2.卷积层

卷积神经网络与神经网络最大不同的地方;在此层中CNN将会提取输入图像的特征获取图像信息;
对于输入的图像若是RGB图像而不是灰度图像的情况,卷积核相应也得是三通道的滤波器,同样借用吴恩达大神的课程图
在这里插入图片描述
卷积层的优点
参数共享机制
可以共享卷积核,在每个卷积层中可以存在多个卷积核进行获取输入图像的不同信息,卷积层的每个滤波器都会有自己所关注一个图像特征,这些所有神经元加起来就好比就是整张图像的特征提取器集合。

3.激励层
将卷积层的输出数据进行非线性映射
CNN一般采用的激活函数为ReLU函数
在这里插入图片描述
RELU特点:

输入信号 <0 时,输出都是0,>0 的情况下,输出等于输入, ReLU 得到的 SGD 的收敛速度会比 sigmoid/tanh 快很多

ReLU的弊端:

训练的时候很”脆弱”,容易“die”,如果 learning rate 很大,那么很有可能网络中的 40% 的神经元都”dead”了。

4.池化层

池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。
池化层主要有两种方式:最大池化层与平均池化层
在CNN中扮演的角色是进行降低维度,缩小输入的维度
最大池化的过程如下
在这里插入图片描述
对于每个22的窗口选出最大的数作为输出矩阵的相应元素的值,比如输入矩阵第一个22窗口中最大的数是6,那么输出矩阵的第一个元素就是6,如此类推。

5.全连接层
对最后一层的卷积层输出进行维度变化,就跟神经网络中的全连接层是一致的,假设最后一个卷积层的输出为7×7×512,连接此卷积层的全连接层为1×1×4096。
连接层实际就是卷积核大小为上层特征大小的卷积运算,卷积后的结果为一个节点,就对应全连接层的一个点。如果将这个全连接层转化为卷积层:
1.共有4096组滤波器
2.每组滤波器含有512个卷积核
3.每个卷积核的大小为7×7
4.则输出为1×1×4096

最后附上一张卷积神经网络的流程图
在这里插入图片描述
在CNN训练的过程中,还可以适当地添加Dropout层进行防止过拟合的情况,可以达到更好的输出的效果

对于CNN,个人存在主要的疑惑是由于该网络是进行的end to end的操作,而在整个过程中,卷积层的参数都是进行自己学习,特征都是网络自己学习的,为何可以学习得如此之好,是如何做到的?

发布了23 篇原创文章 · 获赞 0 · 访问量 6679

猜你喜欢

转载自blog.csdn.net/yinglang2011/article/details/88920936
今日推荐