Code前端首页关于Code前端联系我们

图片CNN(卷积神经网络)实现过程,5分钟看懂

terry 2年前 (2023-09-23) 阅读数 78 #AI人工智能

前言

在图像处理领域,CNN(卷积神经网络)占据绝对统治地位,无数文章介绍了它的原理。我想我不可能再写一篇文章来介绍特别不同的原理,但是使用神经网络实现 CNN 的介绍要么是一大堆数学公式,要么是一长段晦涩难懂的文字。解释一下,读起来非常困难。我最近看到一篇文章,没有任何关于数学推导的内容。它只用了几张图片就非常清晰、透彻地解释了CNN神经网络的实现。英文原文在这里(https://medium.com/impactai/cnns-from- Different-viewpoints-fab7f52d159c),好的东西应该多分享,所以我也把这篇文章翻译成中文在这里给大家。喜欢原文的同学也可以直接阅读原文。

快速概述CNN的主要思想

为了帮助大家理解,这里简单概述一下CNN的主要思想:对于M * N像素的图像,我们使用大小为S * S的图像(如3*3)特征提取器扫描整个图像,验证图像重要特征,忽略不重要细节,得到特征改进的新图像:

图解CNN(卷积神经网络)的实现过程,5分钟理解

通过不断重复上述过程,可以逐渐提取细节细节特征(例如线条、纹理)提取高级特征(例如器官、物种)并最终执行各种图像处理任务。

CNN的神经网络实现过程图

图解CNN(卷积神经网络)的实现过程,5分钟理解

以下是介绍中提到的文章的翻译:

假设我们有一个3 * 3的图像,图像中的每个像素都由一个字母表示:

图解CNN(卷积神经网络)的实现过程,5分钟理解

Me 特征提取是一个2*2的矩阵,矩阵的每个元素都是希腊字母:

图解CNN(卷积神经网络)的实现过程,5分钟理解

特征分离器处理后的图像为:

图解CNN(卷积神经网络)的实现过程,5分钟理解

详细工作过程如下:

图解CNN(卷积神经网络)的实现过程,5分钟理解

上述工作过程可以表示为以下方程:

图解CNN(卷积神经网络)的实现过程,5分钟理解

注意,上式中的偏置参数b在四个方程中是相同的。 b可以理解为特征提取器的一部分,就像权重参数(α,β,γ,δ)是特征提取器的一部分一样。

更简洁的写法是:

图解CNN(卷积神经网络)的实现过程,5分钟理解

上述写法可以直接表示为神经网络(破折号对应权重α、β、γ、δ):

图解CNN(卷积神经网络)的实现过程,5分钟理解

激活过程神经元的权重矩阵与输入矩阵的乘积:

图解CNN(卷积神经网络)的实现过程,5分钟理解

这里需要注意两点:

  • 灰色网格中的 0 代表未经训练的参数,始终为 0。训练过程
  • 待训练的其他参数中,很多参数值保持不变,这称为“分布式权重”。权重矩阵

的每一行代表特征过滤图像的一个应用,其中的0代表没有被应用覆盖的像素。

假设我们在上面的神经网络图中添加一个权重值为0(在灰线上使用0权重),我们就得到一个经典的全连接神经网络图:

图解CNN(卷积神经网络)的实现过程,5分钟理解

去掉颜色和字母,正是与熟悉的神经网络图相同:

图解CNN(卷积神经网络)的实现过程,5分钟理解

上面我们使用 2 * 2 特征提取器,使用零填充和 3* 将 3 * 3 图像转换为 2 * 2 图像。 3个特征提取器,我们可以保持图像大小不变:

图解CNN(卷积神经网络)的实现过程,5分钟理解

工作过程如下:

图解CNN(卷积神经网络)的实现过程,5分钟理解

而如果不使用零填充,则只能得到1*1的输出图像:

图解CNN(卷积神经网络)的实现过程,5分钟理解

以上是过程将 CNN 实现为神经网络。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门