卷积神经网络(CNN)——基础知识整理

简介: 卷积神经网络(CNN)——基础知识整理

1、卷积神经网络

既然叫卷积神经网络,这里面首先是卷积,然后是神经网络,是二者的一个结合,卷积这个概念实际上来自信号处理领域,一般是对2个信号进行卷积运算,见下图:


神经网络,这是机器学习的元老,是对人脑神经元工作机制的模拟,每个神经元是一个计量单元,输入的数据与权重进行相乘、求和,再加上偏置,得到的数据再经过激活函数,将结果进行输出,见下图,多个神经元相互连接组成神经网络,具体就不展开说了。


卷积神经网络在图像分类和识别领域的应用非常多,最早用于手写数字的分类识别,后来逐渐发展起来。

2、图片格式

首先从手写体图像识别说起,一副图片如果是单色的,那么可以看成是一个二维的数字矩阵,每个像素点的颜色都可以用灰度值来表示;那如果图像是彩色的,可以将图像看成是RGB三个单色图片叠加的组合。

每一张图片的每一个像素点,其实都是一个数值,整体可看成一个三维矩阵。

3、图片卷积运算

那么对一个彩色图像做卷积,到底做了什么呢?下面这张动图,很好地展示了图像卷积计算的过程,原始图像有RGB三个通道channel1-3,对应有3个卷积核Kernel1-3,每一个通道的图片与对应的卷积核做乘法运算,每个通道得到的数值再相加,加上总体的偏置Bias得到特征图(feature map)里面的一个值。

下面是这个图是一个立体的展示:

4、Kernel 与 Feature Map

这里面第一个问题,就是卷积核为什么是3*3大小的,实际上这个尺寸也是经过学者们不断研究总结出来的,目前认为3*3的感受野足够用,而且运算量也会相对低,还有1*1的卷积核在使用,其他的基本不用了。

第二个问题,卷积核里面的参数是怎么来的,其实这里面的参数机器学习要实现的,当我们把所有的核参数都调整好,那这个模型也就确定了。也有一些先验的卷积核,如下面的核,进行卷积之后,可以实现锐化和边缘提取的效果。

那我们对一幅图片进行卷积之后,就会形成一个Feature Map,它会提取一些特征,用不同的核进行卷积就会输出多个Feature Map。

  • 卷积核/Kernels(convolution kernel)也叫过滤器、滤波器。
  • 特征图/Feature map,当图像像素值经过过滤器后得到的就是特征图。

下面这两张图就很直观地展示了kernel 和 feature map的实际样子。


卷积神经网络处理过程中,随着模型运算的深入,图像的尺寸(h*w)会越来越小,但是提取的特征会越来越多。

5、padding/边缘填充

这里面由于边界的问题,每一次卷积之后,图像不可避免地会被压缩一点,这就涉及到一个概念padding,如果设置padding的值为‘same’,则会在原图像周围补充1圈像素点,一般补0,这样后面的图像尺寸都会与原图像相同。默认参数是“valid”,翻译过来是有效的意思,这里的有效指的是与卷积核做运算的图片像素都是有效的,实际上就是没有外圈的补0。

unvaild valid

下图展示的就是带padding的卷积效果,这个图的问题是用的是4*4的卷积核,实际中没有有4*4卷积核的。

用3*3的卷积核,可保持图像卷积后尺寸不变。

图片引自:https://github.com/vdumoulin/conv_arithmetic

6、Stride/步长

上图是步长为1的情况,如果步长为2,就是相当每隔两行或者两列进行卷积,实际上起到了降维的作用,就是卷积后的feature map尺寸会变小。


5a453a0fb2a14d3683aefda91bdc3264.gif


图片引自:https://github.com/vdumoulin/conv_ar

7、pooling/池化

池化主要作用是把数据降维,也叫下采样,可以有效的避免过拟合。主要有两种池化方式,Max pooling / avg pooling,通常情况下,池化区域是2*2大小,池化之后,4*4的图片,会变成2*2大小。

8、shape

在tensorflow和pytorch中,shape的结构有所区别:

  • tensorflow输入shape为(batch_size,  height, weight, in_channels)/(样本数、图像高度、图像宽度, 图像通道数)
  • pytorch输入shape为(batch_size, in_channels, height, weight)

上图中,

输入图片的shape:[in_channels, height, weight]/[3,8,8];

卷积核的shape:[out_channels, in_channels, height, weight]/[5,3,3,3];

输出图片的shape:[out_channels, out_height, out_weight]/[5,6,6];

卷积核的输入通道数(in depth)由输入矩阵的通道数(in_channels)所决定。比如:一个RGB格式的图片,其输入通道数为3。

输出矩阵的通道数(out depth)由卷积核的输出通道数所决定,比如下面这个动画当中,卷积核有8个,那么输出out_channels则为8。


image.gif


图片 引自:https://animatedai.github.io/

9、epoch、batch、Batch Size、step

  • epoch:表示将训练数据集中的所有样本都过一遍(且仅过一遍)的训练过程。在一个epoch中,训练算法会按照设定的顺序将所有样本输入模型进行前向传播、计算损失、反向传播和参数更新。一个epoch通常包含多个step。
  • batch:一般翻译为“批次”,表示一次性输入模型的一组样本。在神经网络的训练过程中,训练数据往往是很多的,比如几万条甚至是几十万条——如果我们一次性将这上万条的数据全部放入模型,对计算机性能、神经网络模型学习能力等的要求太高了;那么就可以将训练数据划分为多个batch,并随后分批将每个batch的样本一起输入到模型中进行前向传播、损失计算、反向传播和参数更新。但要注意,一般batch这个词用的不多,多数情况下大家都是只关注batch size的
  • Batch Size(批大小):表示在单次训练中传递给模型的图像数量,我们在神经网络训练过程中,往往需要将训练数据划分为多个batch;而具体每一个batch有多少个样本,那么就是batch size指定的了。
  • step:一般翻译为“步骤”,表示在一个epoch中模型进行一次参数更新的操作。通俗地说,在神经网络训练过程中,每次完成对一个batch数据的训练,就是完成了一个step。

10、神经网络

实际上,上面的卷积处理过程,都是在对图片进行特征提取,而最终要进行分类或预测就需要借助神经网络了,所以一般在卷积处理之后需要对数据进行压平(flatten)操作,使其变为1维的数据,便于送入神经网络的输入层。

神经网络模型里面(见下图),全连接层/Dense层是深度学习中常用的一种神经网络层,也称为密集连接层或多层感知机层。它既能当输入层(input layer),又能当输出层(output layer),还能当中间层(Hidden layer)。

推荐一个绘制神经网络图的工具:NN SVG

11、激活函数

在神经网络中,激活函数用于引入非线性,使网络能够学习复杂的映射关系。如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。以下是一些常用的激活函数。常用的有:

参考:机器学习算法那些事

目录
相关文章
|
1天前
|
机器学习/深度学习 计算机视觉 Python
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力本文提出了一种简单且高效的卷积神经网络(ConvNets)注意力模块——SimAM。与现有模块不同,SimAM通过优化能量函数推断特征图的3D注意力权重,无需添加额外参数。SimAM基于空间抑制理论设计,通过简单的解决方案实现高效计算,提升卷积神经网络的表征能力。代码已在Pytorch-SimAM开源。
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
|
4天前
|
机器学习/深度学习 监控 自动驾驶
卷积神经网络有什么应用场景
【10月更文挑战第23天】卷积神经网络有什么应用场景
6 2
|
4天前
|
机器学习/深度学习 自然语言处理 算法
什么是卷积神经网络
【10月更文挑战第23天】什么是卷积神经网络
10 1
|
7天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
21 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
8天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第21天】本文旨在深入探讨深度学习领域的核心组成部分——卷积神经网络(CNN)。通过分析CNN的基本结构、工作原理以及在图像识别、语音处理等领域的广泛应用,我们不仅能够理解其背后的技术原理,还能把握其在现实世界问题解决中的强大能力。文章将用浅显的语言和生动的例子带领读者一步步走进CNN的世界,揭示这一技术如何改变我们的生活和工作方式。
|
3天前
|
机器学习/深度学习 自然语言处理 TensorFlow
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第26天】在这篇文章中,我们将深入探讨卷积神经网络(CNN)的基本原理、结构和应用。CNN是深度学习领域的一个重要分支,广泛应用于图像识别、语音处理等领域。我们将通过代码示例和实际应用案例,帮助读者更好地理解CNN的概念和应用。
|
6天前
|
机器学习/深度学习 算法 计算机视觉
深度学习与生活:如何利用卷积神经网络识别日常物品
【10月更文挑战第24天】在这篇文章中,我们将探索深度学习如何从理论走向实践,特别是卷积神经网络(CNN)在图像识别中的应用。通过一个简单的示例,我们将了解如何使用CNN来识别日常生活中的物体,如水果和家具。这不仅是对深度学习概念的一次直观体验,也是对技术如何融入日常生活的一次深刻反思。文章将引导读者思考技术背后的哲理,以及它如何影响我们的生活和思维方式。
|
22天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第7天】本文将深入探讨卷积神经网络(CNN)的基本原理,以及它如何在图像识别领域中大放异彩。我们将从CNN的核心组件出发,逐步解析其工作原理,并通过一个实际的代码示例,展示如何利用Python和深度学习框架实现一个简单的图像分类模型。文章旨在为初学者提供一个清晰的入门路径,同时为有经验的开发者提供一些深入理解的视角。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其应用
【9月更文挑战第24天】本文将深入探讨深度学习中的一种重要模型——卷积神经网络(CNN)。我们将通过简单的代码示例,了解CNN的工作原理和应用场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息。
82 1
|
15天前
|
机器学习/深度学习 人工智能 监控
深入理解深度学习中的卷积神经网络(CNN):从原理到实践
【10月更文挑战第14天】深入理解深度学习中的卷积神经网络(CNN):从原理到实践
50 1