CNN 卷积神经网络详解

一、深度学习的应用已经遍布我们身边。他通过增加比传统的机器学习更多的迭代次数、受大脑中神经元传播脑电波启发而被提出,另外他的效果要比传统的机器学习方法好的多,因此得以被广泛的应用。他可以帮助汽车在毫秒的速度辨别障碍物,这技术应用在一直很火的无人驾驶技术;另外深度学习帮助人脸识别技术成为可能,在智能手机和门锁等计算机视觉的发展带来了很多应用的产生。
CNN 卷积神经网络详解_第1张图片
             图像识别
CNN 卷积神经网络详解_第2张图片
               目标检测

        将一张照片转换为另一种风格(两张图片的融合)
  总之深度学习的作用是非常之大,我们一直在尝试解释他为什么会有这样好的效果,可他就像一个黑匣子一样,解释不清楚。

二、一个例子引出为什么要进行卷积操作
1、在下图上面那张图片中,经过裁剪后图片的大小是64X64,即64X64个像素点(像素值)组成,图片是RGB三通道的,总共一张图片的数据量是12288,这个数据量还是可以接受的。
2、下图下面那张图片大小是1000X1000X3,图片的输入的参数是3百万,我们看后面的神经网络,假如第一个隐藏层有1000个节点,网络的连接是全链接,这样将会产生30亿的参数。参数量的巨大,而且图片量少,没有足够的数据就会导致神经网络过拟合,不能满足实际的需求。另外30亿的数据量内存需求也是不能接受的。因此就必须进行卷积操作。
CNN 卷积神经网络详解_第3张图片

三、卷积操作
  卷积操作是卷积神经网络最基础的组成部分。卷积操作可以学习到图片中的特征。有卷积操作的层数是卷积层,相比于没有卷积层只有全连接层的神经网络,有卷积层的优势主要有参数共享稀疏连接。第一参数共享,主要指filter适用于图像的一块区域,也很有可能适用于图像的其他区域,一张图像共享了filter。第二稀疏连接,每个输出值只取决于输入图像的一小部分。
  下图中通过不同的卷积操作分别学习到了水平和垂直两个方向上的特征。
CNN 卷积神经网络详解_第4张图片
  下图三个矩阵中,左边的矩阵是网络的输入,中间是filter/过滤器/卷积核,最右边的是卷积之后的结果。卷积的过程就是卷积核上的数字和输入矩阵对应想乘,把相乘的结果相加就得到对应位置的输出。那么问题来了输入6X6,卷积核3X3怎么乘。**规则就是自左上角开始,自左向右,自上而下。**每次移动N列,N就是步长。
CNN 卷积神经网络详解_第5张图片
  为什么卷积可以达到垂直边缘检测?
CNN 卷积神经网络详解_第6张图片

  输入、卷积核、输出矩阵的数字大小代表着高亮程度,经过卷积操作,输出的图像中间是高亮区域,它学习到了输入图形在中间是亮暗交错的。同样水平也是。总的来说,使用不同的滤波器就可以找到垂直、水平的边缘。那么卷积核怎样的数字组合会更好的学习输入的特征呢?那就是反向传播了。

下面介绍卷积操作过程涉及到的一些参数:
  Padding边缘填充。没有边缘填充会有以下两个问题。第一,不断的卷积操作会让输入矩阵越来越小,这样可能不利于识别特征。第二,边缘的像素点只被一个输出所触碰/所使用,因为边缘的像素点和卷积核的边缘想作用,这样就会使得边缘像素点的位置信息丢失。解决这两个问题的方法就是在卷积操作之前填充输入图像。
        没有Padding:6X6——>3X3——>4X4
        Padding:6X6——>p=1(Padding)8X8——>3X3——>6X6
根据Padding与否可分为两种卷积。第一种为Valid convolution:nXn——>fXf——>(n-f+1)X(n-f+1);第二种为Same convolution:输入大小和输出大小相同,即n=n+2p-f+1,(p为padding大小,f为卷积核的大小),得到p=(f-1)/2。在计算机视觉中,f通常为奇数。原因1,如果为偶数,那么padding将不会对称;原因2,奇数filter有一个中心,中心方便指出filter的位置。

  卷积的步长是指每次卷积核在输入图像上前进的步长。设卷积步长为s,那么nXn——>p、s——>fXf——>「【(n+2p-f)/s】+1」X「【(n+2p-f)/s】+1」,「X」表示X向下取整。

四、池化层
  池化层是用来减小模型的大小,提高计算速度,这样提高了提取特征的鲁棒性。池化一般分为两种,平均池化和最大池化,我们经常使用最大池化。池化的超参数包括过滤器的大小f和步幅s,f、s常用的大小为2,其效果相当于高度和宽度缩减一半。大部分的最大池化很少用到Padding。由于我们对每个通道都进行了池化操作,因此池化操作不改变通道数。池化的超参数是静态属性,池化操作过程中没有涉及到参数的学习,因此我们通常把池化层和卷积层合并为一层。最大池化的作用就是filter提取某个特征,那么保留最大值,如果没有提取到这个特征,可能就是不存在这个特征值。

五、全连接层
  全连接层就是设置目标。如果目标是判断图片是否是猫,那么全连接层的任务就是产生一个1/0的结果,如果是图片分类问题(10分类),那么全连接层的任务就是产生10个分类的概率值,概率最大的就是输入所属于的类。所以说全连接层是根据目标而确定的。全连接的组成是上一层的每个结点都与下一层的每个结点相连接,因此称为全连接。例如5x5x16(=400)——>120,这个过程将产生400x120+1=48001个参数,+1是偏置参数。因此在卷积过程中,参数的主要来源是全连接层产生的参数。

六、卷积例子
  神经网络的一层就包括上述三、四、五的卷积层、池化层、全连接层。
  三维卷积。下图是有两个卷积核一个三维卷积,每个卷积核产生一个4x4x1的输出,在三维上将两个卷积核产生的输入堆叠在一起产生一个4x4x2的输出。
  卷积神经网络的一个特征是“避免过拟合”,通过网络的输入数据量可以很大,但所需的参数很少体现这个特征。下面讲述以下神经网络的一些参数。
    f[l]=filter size,p[l]=Padding,s[l]=stride,n_c[l]=number of filters,
    Input :n_h[l-1] X n_w[l-1] X n_c[l-1]
    weight of filters: f[l] X f[l] X n_c[l-1] X n_c[l]
    Activations:a[l]=output:n_h[l] X n_w[l] X n_c[l]
    bias:n_c[l]——(1,1,1,n_c[l])
上述加粗字体表示的含义是filter的通道数要和网络的输入通道数相同,斜体表示的是filter的数量和输出的通道数相同,也和偏置参数的个数相同。

CNN 卷积神经网络详解_第7张图片

你可能感兴趣的:(深度学习,卷积,神经网络,卷积神经网络,计算机视觉)