以图像识别为例,关于卷积神经网络(CNN)的直观解释

大家读完觉得有意义记得关注和点赞!!!

作者以图像识别为例,用图文而非数学公式的方式解释了卷积神经网络的工作原理, 适合初学者和外行扫盲。

目录

1 卷积神经网络(CNN)

1.1 应用场景

1.2 起源:LeNet, 1990s

1.3 现代架构

2 CNN:直观解释

2.1 输入:图像(像素值组成的矩阵)

2.2 第一步:卷积运算

2.2.2 动图直观解释

2.2.2 特征图/卷积特征参数

2.3 第二步:非线性(Non Linearity / ReLU)运算

2.4 第三步:降采样

2.4.1 原理:直观解释

2.4.2 小结:卷积层 + ReLU + 降采样层

2.5 第四步:全连接层:基于特征分类

2.6 第五步:反向传播:形成闭环

3 CNN 完整架构和工作流

4 案例:CNN 学习识别字符 8

4.1 多层特征

4.2 学习字符 8

5 其他 CNN 架构

6 总结

参考资料


1 卷积神经网络(CNN)

1.1 应用场景

卷积神经网络(ConvNets 或 CNN)是一类神经网络(a category of Neural Networks), 在图像识别和分类等领域已经证明非常有效。CNN 已经成功用于 人脸识别、物体和交通标志识别,机器人视觉,自动驾驶等等。下面看两个具体例子。

图 1 是给一个图片,自动识别其中的内容并生成一句描述,

图 1:图像识别和自动生成描述。cs.stanford.edu

图 2 则是 CNN 用于识别日常人和物,

图 2:图像识别。来自 paper pdf

此外,CNN 在一些自然语言处理任务(如句子分类)中也展现出很不错的效果。 因此,CNN 在机器学习领域将是一个非常重要的工具。不过,新手学习起来经常比较受挫。 本文试图拿 CNN for image processing 为例,向大家直观解释一下 CNN 是如何工作的。

1.2 起源:LeNet, 1990s

LeNet 由 Yann LeCun 在 1988 提出,是最早推动深度学习领域发展的卷积神经网络之一。 后来经过多次改进,直到 LeNet5 [3]。 当时 LeNet 架构主要用于字符识别, 例如读取邮政编码、数字等。

1.3 现代架构

近年来提出了几种新的架构,都是对 LeNet 的改进,它们都继承了 LeNet 的主要概念。 因此如果对 LeNet 比较了解,理解现代架构将容易很多。 下图展示了这类架构是如何学习识别图像的:

图 3:基于卷积神经网络识别图像。image credit

  • 图中的卷积神经网络在架构上与早期 LeNet 差不多,它对输入图像进行分类(LeNet 主要用于字符识别);
  • 这个例子中会分成四类:dog, cat, boat, bird,所有概率的总和是 100%(后文会解释);
  • 从图中可以明显看出,在 boat 图像作为输入时,该网络最终的分类结果中,boat 的概率最高(0.94)。

根据上图,我们可以看到现代 CNN 主要有四种操作

  1. 卷积(Convolution)
  2. 非线性(Non Linearity,ReLU))
  3. 池化或降采样(Pooling or Sub Sampling)
  4. 分类/全连接层(Classification, Fully Connected Layer)

这几个功能是所有卷积神经网络的基本模块。下面我们尝试从直观上来理解每个操作的含义。

2 CNN:直观解释

2.1 输入:图像(像素值组成的矩阵)

每个图像(image)本质上就是一个由像素值(pixel values)组成的矩阵:

图 4:每个图像都是一个像素值组成的矩阵。[6]

Channel(通道)是一个传统术语,指图像的某一部分数据。 例如,

  • 数码相机拍出的图像通常有三个通道 —— red/green/blue —— 可以想象成从下往上依次堆叠的 3 个二维矩阵(每种颜色一个),每个像素值都在 0 到 255 范围内。
  • grayscale(灰度)图像只有一个通道。

简单起见,本文将只考虑灰度图像。 这意味着我们将有一个表示图像的二维矩阵,其中中每个像素的值范围从 0 到 255 —— 0 表示黑色,255 表示白色。

2.2 第一步:卷积运算

CNN(卷积神经网络)的名字来源于“卷积”运算,

  • 卷积的主要目的从输入图像中提取特征
  • 通过一个小矩阵(称为 filter)对输入矩阵进行运算,来学习图像特征(image features);
  • filter 保留了像素之间的空间关系(spatial relationship between pixels)。

这里不深入探讨卷积的数学细节,只尝试了解它如何处理图像。

2.2.2 动图直观解释

每个图像都是像素值组成的矩阵。考虑一个 5x5 的图像,其像素值只有 0 和 1(灰度图像的像素值范围为 0 到 255,这里我们进一步简化,像素值只有 0 和 1):

然后引入一个 3x3 矩阵作为 filter,

那么,用 5x5 和 3x3 矩阵来计算卷积的过程就如下面的动图所示,

图 5:卷积的计算。计算得到的结果矩阵称为 Convolved Feature or Feature Map(卷积特征,或特征图)。[7]

计算过程:

  1. 在 5x5 的输入矩阵上,覆盖一个 3x3 矩阵,
  2. 对当前 3x3 覆盖的部分,分别与 3x3 矩阵按像素相乘,然后把 9 个值加起来得到一个整数,
  3. 按这种方式,以一个像素为单位依次滑动和计算,最后就得到一个输出矩阵(右边)。

用 CNN 术语来说,

  1. 3x3 矩阵叫做 filter(滤波器),或 kernel、feature detector 等
  2. 滑动的粒度(这里是一个像素)叫做 stride(步长)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值