什么是CNN卷积神经网络
卷积神经网络(Convolutional Neural Network,简称CNN)是一种专门设计用于处理具有网格结构的数据(如图像、视频、声波等)的深度学习模型。CNN在计算机视觉领域取得了显著的成功,广泛应用于图像分类、目标检测、语义分割等多种任务中。
CNN卷积神经网络的由来
多层感知机 (MLP)
传统的多层感知机(MLP)是一种前馈神经网络,由输入层、一个或多个隐藏层以及输出层组成。每一层中的神经元与下一层中的所有神经元完全连接。这种全连接的架构意味着每一个神经元都接收到前一层所有神经元的输出。这种结构在处理简单的分类问题时效果很好,但对于高维数据(如图像)来说,存在以下问题:
- 参数量巨大:假设输入是一张28x28像素的灰度图像,那么第一层的神经元数量至少需要784个(即28x28)。如果第一隐藏层有100个神经元,则需要784 * 100 = 78,400个权重参数。随着网络深度的增加,参数量会呈指数增长。
- 缺乏空间局部性:图像中的像素通常是局部相关的,这意味着相邻像素之间的关系比距离较远的像素更为重要。然而,在MLP中,每个神经元接收到所有输入像素的信息,忽略了这种局部性。
- 平移敏感性:MLP对输入数据的位置非常敏感。即使是轻微的平移也可能会导致完全不同的激活模式,使得网络难以泛化到未见过的图像实例。
卷积神经网络 (CNN)
为了克服上述问题,CNN引入了三个关键特性:
局部感受野(Local Receptive Fields):
- 在CNN中,每一层的神经元只与输入或前一层中的局部区域连接。这意味着每个神经元只负责处理输入数据的一个小区域,这与图像中像素间的局部相关性相对应。
- 这种设计减少了需要学习的参数数量,同时也使得网络能够更好地捕捉到数据的局部特征。
权值共享(Weight Sharing):
- 在CNN中,同一层内的所有神经元共享相同的权重。这意味着同一滤波器(或内核)会在输入数据的不同位置上应用,以检测相同的特征。
- 权重共享不仅减少了参数数量,还使得网络能够在图像的不同位置检测到相同的模式,增强了平移不变性。
池化(Pooling):
- 池化层用于减小特征图的尺寸,从而减少后续层的计算复杂度,并有助于提取更高级别的特征。
- 常见的池化方法包括最大池化(Max Pooling)和平均池化(Average Pooling)。
CNN卷积神经网络的结构
卷积层(CONV)
卷积层是CNN的核心组件之一,它使用一组称为滤波器或内核的小型矩阵来扫描输入数据。每个滤波器都会在输入数据上滑动,执行逐元素乘法操作,然后对结果求和,得到一个输出值。这一过程在输入数据的整个空间上重复进行,生成一个特征图或激活图。滤波器通常学习如何识别特定类型的局部特征,如边缘、纹理等。
激活函数
在卷积操作之后,通常会有一个激活函数(Activation Function)应用于每个输出值。激活函数的作用是引入非线性,这样CNN就能学习到更加复杂的模式和特征组合。常见的激活函数包括:Relu、Sigmoid、tanh等
池化层(POOL)
池化层通常紧跟在卷积层之后,其目的是降低特征图的空间维度,从而减少后续层的计算量。最常用的池化类型是最大池化(Max Pooling),它通过在每个特征图上应用一个固定大小的窗口(如2x2),并选择窗口内的最大值作为输出。平均池化(Average Pooling)也是另一种常见的池化方法,它使用窗口内的平均值。
池化层的作用
- 特征降维:特征的尺寸减半,通道数不变。
- 提升模型的特征不变性。
全连接层(FC)
全连接层通常位于CNN的末尾,用于将卷积层提取的特征映射到分类标签或其他输出。这些层通常包括大量的神经元。
全局信息整合:
- 最后全连接层中的每个神经元都与前一层(通常是最后一个卷积层或池化层)的所有特征图中的每个元素相连,这意味着每个神经元都能够访问到所有局部特征的综合信息(将所有的零件特征组合起来)然后基于这些综合特征做出预测或分类。
卷积神经网络的特点
局部感受野(Local Receptive Fields):
人类的认知过程往往是从局部细节开始逐步构建整体印象的。我们先注意到物体的部分特征,比如颜色、形状或者纹理,然后把这些局部特征结合起来形成对整个物体的认识。这种认识方式同样适用于图像处理。
在图像中,相邻的像素通常代表相似的颜色或纹理,这意味着它们之间存在着较强的关联性。相反,距离较远的像素可能就不那么相关了。例如,在一张风景照片中,相邻的几个像素很可能代表同一片草地或天空的一部分。
卷积神经网络(CNN)的设计理念正是基于这种局部相关的特性。
局部感知:
- 每个卷积核只关注图像的一小块区域(例如5x5或3x3的像素块),而不是整个图像。
- 这种局部感知机制使得网络能够专注于检测图像中的特定特征,比如边缘、线条或纹理。
特征提取:
- 通过多个这样的卷积核,每个负责检测不同类型的局部特征,网络就可以在图像的不同位置捕捉到多种特征。
- 随着网络层次的加深,更高层的卷积核可以综合低层提取到的局部特征,形成更复杂的抽象特征,比如形状、物体部件等。
权值共享(Weight Sharing):
- 在CNN中,同一层卷积中有很多个卷积内核(滤波器),每个单独的卷积内核权值也是不同的,例如1号卷积内核在输入的特征图像上滑动时,无论滑动到那个位置,都是使用1号卷积内核权值去检测,而不是每个特征图像区域都使用一个专门的权值。
平移不变性
- 因为上述的权值共享,所以卷积层还有一个平移不变性的特征,例如其中一个卷积核的权值是专门为了在图像中去找猫耳朵的,因为这个卷积在特征图像上滑动时,无论滑动到那个位置都是使用相同的权值去检测,因此无论猫耳朵在图像中的那个位置都好,输出来的结果都一样,所以有平移不变性的特点。
- 计算量少,也是同理可得。
CNN为什么适用于图像处理?
CNN能够捕获图像的空间层次结构,利用局部感受野和权重共享来识别图像中的局部特征,这对于处理具有网格结构的数据(如图像)非常有效。
CNN和RNN有什么区别?
CNN擅长处理具有网格结构的数据,如图像;而RNN则更适合处理序列数据,如时间序列或文本
CNN中的“多尺度”、是什么意思
多尺度是指使用不同大小的卷积核或池化窗口来捕获图像的不同层次特征
转置卷积(反卷积)
什么是转置卷积
转置卷积是一种常用的上采样方法,用于增加特征图的宽度和高度,常被应用于生成网络中
转置卷积的作用
- 上采样增加特征图的尺寸
- 在生成网络中能帮助生成更精细的细节
1x1卷积
什么是1x1卷积
所谓的1x1卷积就是卷积层中卷积核的尺寸为(1,1)
1x1卷积的作用
1、在不改变图像宽高的情况下减少或者增加通道数(通过卷积核的数量去决定)
2、实现跨通道的信息整合和交互
作者介绍
作者本人是一名人工智能炼丹师,目前在实验室主要研究的方向为生成式模型,对其它方向也略有了解,希望能够在CSDN这个平台上与同样爱好人工智能的小伙伴交流分享,一起进步。谢谢大家鸭~~~
![]()
如果你觉得这篇文章对您有帮助,麻烦点赞、收藏或者评论一下,这是对作者工作的肯定和鼓励。
尾言
![]()
如果您觉得这篇文章对您有帮忙,请点赞、收藏。您的点赞是对作者工作的肯定和鼓励,这对作者来说真的非常重要。如果您对文章内容有任何疑惑和建议,欢迎在评论区里面进行评论,我将第一时间进行回复。