卷积神经网络(Convolutional Neural Network,简称CNN)是一类特别适用于处理图像、视频和其他具有网格状结构的数据的深度神经网络。它的设计灵感来自于生物视觉皮层中神经元的连接方式,尤其是视觉处理部分。
CNN的核心思想是通过卷积层来自动学习数据中的空间特征。相比于传统的全连接神经网络,卷积神经网络使用卷积操作来提取局部特征,并通过层级结构逐渐学习更复杂的特征。
为什么要有卷积神经网络
• 图片输入:2048*1024,
• 第一层1024个节点
• W的数量,2048*1024*1024+1024,21亿
• 消耗的内存:fp32,4个字节,84亿个字节,~8.4GB
• 64G byte/字节
可以看到如果用全连接神经网络来解决图像问题,会让权重爆炸。
卷积神经网络(CNN)之所以被广泛应用,主要是因为它在处理图像数据、视觉任务以及其他具有局部结构的数据时,能够有效地提取特征,并且具有比传统的全连接神经网络(FCNN)更强的学习能力和更低的计算复杂度。
卷积神经网络的基本结构:
-
卷积层(Convolutional Layer):
- 使用滤波器(或称为卷积核)对输入数据进行卷积操作,提取局部特征。卷积核通常是一个小的矩阵,通过滑动窗口的方式在输入数据上逐步计算,得到一组特征图(feature map)。
- 卷积操作可以帮助提取图像中的边缘、纹理、颜色等低级特征,并且能够保留图像的空间结构。
-
池化层(Pooling Layer):
- 通常跟随在卷积层之后,池化操作的目的是降低特征图的空间尺寸,从而减少计算量,并且能够保留最重要的特征信息。常见的池化操作有最大池化(max pooling)和平均池化(average pooling)。
- 例如,最大池化会取一个小区域中的最大值,从而将图像的尺寸减小,但保留了最重要的特征。
-
全连接层(Fully Connected Layer):
- 在卷积层和池化层提取出特征后,这些特征会被展平(flatten)并输入到一个或多个全连接层中。全连接层通过将提取到的特征进行组合,进行最终的分类或回归任务。
-
激活函数(Activation Function):
- 在每一层之后,通常会应用一个激活函数,如ReLU(Rectified Linear Unit),它的作用是引入非线性,使得神经网络能够处理更复杂的模式。
卷积层
一张10x8的照片,用两个不同数值的2x2的卷积核卷积(内积,移动),得到两张9x7的图片(特征图)
一张真实的照片其实是由RGB三个通道组成的,所以每个通道都得卷积。
卷积核移动的时候会伴随一个移动距离的问题,也就是步长。
当卷积核大小不能被整除的时候,就会涉及一个是否补0的问题。
常见卷积分类
池化层
池化分为三种:最大池化、平均池化、最小池化
计算方式也很简单,用核的框框住的部分求最大值,最小值或者平均值。
CNN的优点:
1. 局部感知:减少参数和计算量
在图像数据中,物体的某些局部特征(如边缘、角点等)对整个图像的理解至关重要。卷积操作通过局部感知机制,允许神经网络只处理图像的局部区域,而不是每次都处理整个图像。这种局部处理可以极大地减少参数的数量。
- 在全连接网络中,每个神经元都与前一层的每个神经元连接,这导致网络的参数数量迅速增加,尤其是在处理高维数据(如图像)时,参数量非常庞大,计算负担很重。
- 卷积神经网络则使用“卷积核”在局部区域内进行卷积,参数共享减少了需要训练的参数数量,从而减少了计算量。
2. 权重共享:提升泛化能力
卷积神经网络的一个核心特点是权重共享。即同一个卷积核(滤波器)会在整个输入数据(如图像)中滑动,处理不同位置的局部区域。
- 这种共享权重的机制意味着在图像的不同部分提取的特征是一样的,这可以帮助模型识别不同位置的相同物体,比如在图像中的任何位置检测到一个边缘或角点。
- 这不仅大大减少了模型的参数数量,也提高了模型的泛化能力,使得模型能够识别图像中的相同特征,即使它们的位置、尺度或朝向不同。
3. 自动特征学习:从原始数据中提取特征
传统的机器学习方法通常需要人工设计特征提取过程(如SIFT、HOG等),这需要大量的领域知识和特定的技巧。卷积神经网络则具有自动特征学习的能力:
- CNN通过卷积层自动从数据中学习低级特征(如边缘、纹理、颜色等)和高级特征(如物体的形状、部件等),而无需人工设计特征。
- 这意味着CNN在处理复杂任务时,如图像分类、目标检测、图像生成等,能够学习到更有效的特征,避免了手动选择特征的麻烦。
4. 平移不变性:提高鲁棒性
CNN具有一定的平移不变性,这意味着即使图像中的物体发生了平移,网络仍然能够识别它。通过卷积核在图像中滑动并提取特征,CNN能够检测到图像中物体的存在而不依赖于它们的具体位置。
- 在全连接网络中,物体的位置可能影响输出的结果,导致模型对平移、旋转或缩放不够鲁棒。
- 在卷积神经网络中,由于卷积核的滑动窗口和特征共享,物体在图像中的位置变化不会显著影响模型的识别能力。
5. 层次化特征表示:逐步构建复杂的特征
卷积神经网络通常由多个卷积层和池化层堆叠而成,这种层级结构使得网络能够逐渐从图像中学习越来越抽象和复杂的特征。
- 初级卷积层学习低级特征,如边缘、角点、颜色等。
- 中级卷积层可能学习到更复杂的结构,如物体的一部分、纹理等。
- 高级卷积层可以学习到更复杂的模式,如整个物体的形状、结构等。
这种逐步构建的特征表示帮助网络更好地理解和区分复杂的输入数据,尤其在计算机视觉任务中,能够非常有效地从简单到复杂地提取信息。
6. 适应不同尺寸的输入数据(局部连接)
CNN能够处理不同尺寸的输入数据,比如在图像处理中,可以处理任意大小的图像并且不需要固定尺寸的输入。这是因为卷积操作是局部的,并且网络的结构(卷积核)对输入图像的尺寸变化具有一定的适应性。
7. 高效性与扩展性
由于卷积神经网络在计算和内存方面的高效性,它适合在大规模数据集上进行训练,尤其在现代GPU的支持下,训练速度得到极大提升。此外,卷积神经网络在各种视觉任务中的高效性和准确性,使得它成为计算机视觉领域的标准方法之一。
综上所述,卷积神经网络的优势主要体现在:
- 自动从数据中提取有效特征
- 减少参数数量和计算量
- 提高模型的泛化能力
- 对平移、缩放等变化具有一定的不变性
- 适用于大规模图像、视频等数据
CNN的应用:
卷积神经网络在许多领域有广泛应用,尤其是在计算机视觉任务中:
- 图像分类:例如,识别图片中的物体(猫、狗等)。
- 目标检测:识别图像中的特定物体并标出它们的位置。
- 图像分割:将图像分成多个区域,每个区域对应不同的类别。
- 人脸识别:用于检测和识别图像中的人脸。
- 视频分析:对视频帧进行处理,检测物体、动作等。