Skip to main content

七、Convolutional Neural Network

·69 words·1 min
WFUing
Author
WFUing
A graduate who loves coding.
Table of Contents

7.1 CNN入门详解
#

卷积神经网络(CNN)常常被用来做图像处理,当然也可以用一般的神经网络,那它们各自有什么优缺点呢?

FNN用于图片处理的缺点
#

使用一般的全连接前馈神经网络(FNN)处理图片时的缺点:

  • 需要很多的参数: 假设有一张尺寸100×100的图片(尺寸已经算很小了),那输入层就有100×100×3=30K个像素,假设第一个隐藏层有1K个神经元(一个神经元包含30K个参数),这就已经需要30M个参数了……
  • 该架构中每个神经元就是一个分类器,这是没必要的: 第一个隐藏层作为最基础的pattern分类器(比如判断有无绿色、边缘等),第二个隐藏层基于第一个隐藏层继续做pattern分类(比如木头、肉类),以此类推……

按照人类的直观理解,我们不是像全连接神经网络一样去处理图片的。具体来看,有哪些方面呢?

图片的一些性质
#

结合全连接前馈神经网络的缺点和人类对图片的直观理解,可以得到下述图片的3个性质。

性质1:Some patterns are much smaller than the whole image.
#

在识别某个模式(pattern)时,一个神经元并不需要图片的所有像素点。对于一张人类全身照的图片,我们只需要看到头部而非整张图片就可以判断它是一个人脸。所以我们应该是可以用少量参数去识别这些pattern的。

性质2:The same patterns appear in different regions.
#

比如说人脸可以在图片的中间区域,也可以在图片的某个角落区域。所以识别不同区域中的相同pattern的多个分类器(或detector)应该用同一组参数或者共享参数。

性质3:Subsampling the pixels will not change the object
#

CNN架构说明
#

2014年在ECCV上提出,针对上述的图片的3个性质,确定了CNN的架构如下。

如上图所示,图片经过卷积层然后进行最大池化(max pooling),这个步骤可以进行多次;然后将数据展开(Flatten),然后将数据传进全连接前馈网络得到最后的图片分类结果。

如上图所示,卷积是针对了图片的性质1和性质2,最大池化是针对了图片的性质3。

卷积(Convolution) ★
#

假设有一张6×6的二值图,即一个6×6的矩阵。

卷积核(Filter)
#

神经元就是一个计算/函数,卷积核其实就是神经元。如下图所示,1个卷积层可以有多个卷积核,矩阵里元素的值就是需要通过学习得到的参数。因为这里的输入是一个矩阵,所以卷积核也是1个矩阵(卷积核的通道数等于输入的通道数)。假设卷积核大小是3×3,这对应了图片的性质1,即用小的卷积核识别一个小的pattern。

怎么做卷积
#

如下图所示

  • 卷积区域: 根据该卷积核的大小(以3×3为例),选择图片中相同大小的区域进行卷积。
  • 卷积的计算方法: 从图片中扫描得到的3×3矩阵和卷积核的3×3矩阵,这2个矩阵相同位置的元素相乘可以得到9个值并求和(也就是内积)得到1个值,这就是1次卷积操作。
  • 卷积顺序和方向:
    1. 卷积核按照从左到右、从上到下的顺序,从图片左上角开始移动,移动步长(stride)可以设置(以1为例)。在扫描到的每个区域中,都进行1次卷积。1个卷积核移动结束后,则得到1个新的矩阵(大小为4×4),即1个卷积核的输出是1个矩阵
    2. 卷积层有多个卷积核,每个卷积核都按照该方式进行卷积得到多个矩阵,这些矩阵合起来就形成了1个卷积层的特征图(Feature Map),这个特征图也就是卷积层的输出。
    3. 卷积层特征图的通道数等于该卷积层中卷积核的数量,即某卷积层有多少个卷积核,那该卷积层的特征图就有多少个通道