图片CNN(卷积神经网络)实现过程,5分钟看懂
前言
在图像处理领域,CNN(卷积神经网络)占据绝对统治地位,无数文章介绍了它的原理。我想我不可能再写一篇文章来介绍特别不同的原理,但是使用神经网络实现 CNN 的介绍要么是一大堆数学公式,要么是一长段晦涩难懂的文字。解释一下,读起来非常困难。我最近看到一篇文章,没有任何关于数学推导的内容。它只用了几张图片就非常清晰、透彻地解释了CNN神经网络的实现。英文原文在这里(https://medium.com/impactai/cnns-from- Different-viewpoints-fab7f52d159c),好的东西应该多分享,所以我也把这篇文章翻译成中文在这里给大家。喜欢原文的同学也可以直接阅读原文。
快速概述CNN的主要思想
为了帮助大家理解,这里简单概述一下CNN的主要思想:对于M * N像素的图像,我们使用大小为S * S的图像(如3*3)特征提取器扫描整个图像,验证图像重要特征,忽略不重要细节,得到特征改进的新图像:
通过不断重复上述过程,可以逐渐提取细节细节特征(例如线条、纹理)提取高级特征(例如器官、物种)并最终执行各种图像处理任务。
CNN的神经网络实现过程图
以下是介绍中提到的文章的翻译:
假设我们有一个3 * 3的图像,图像中的每个像素都由一个字母表示:
Me 特征提取是一个2*2的矩阵,矩阵的每个元素都是希腊字母:
特征分离器处理后的图像为:
详细工作过程如下:
上述工作过程可以表示为以下方程:
注意,上式中的偏置参数b在四个方程中是相同的。 b可以理解为特征提取器的一部分,就像权重参数(α,β,γ,δ)是特征提取器的一部分一样。
更简洁的写法是:
上述写法可以直接表示为神经网络(破折号对应权重α、β、γ、δ):
激活过程神经元的权重矩阵与输入矩阵的乘积:
这里需要注意两点:
- 灰色网格中的 0 代表未经训练的参数,始终为 0。训练过程
- 待训练的其他参数中,很多参数值保持不变,这称为“分布式权重”。权重矩阵
的每一行代表特征过滤图像的一个应用,其中的0代表没有被应用覆盖的像素。
假设我们在上面的神经网络图中添加一个权重值为0(在灰线上使用0权重),我们就得到一个经典的全连接神经网络图:
去掉颜色和字母,正是与熟悉的神经网络图相同:
上面我们使用 2 * 2 特征提取器,使用零填充和 3* 将 3 * 3 图像转换为 2 * 2 图像。 3个特征提取器,我们可以保持图像大小不变:
工作过程如下:
而如果不使用零填充,则只能得到1*1的输出图像:
以上是过程将 CNN 实现为神经网络。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。