本页面将在深度学习计算机视觉的背景下,介绍卷积神经网络(CNN)的基本架构。我们将涵盖构成 CNN 架构的核心组件、它们如何处理图像数据,以及为什么它们在视觉任务上比传统神经网络更有效。关于 AlexNet、ResNet 和 DenseNet 等现代 CNN 架构的信息,请参阅 现代 CNN 架构。
传统的多层感知机(MLP)在处理高维图像数据方面效率低下。一个一百万像素的图像将需要一个具有数十亿参数的全连接神经网络,这使得有效训练变得不切实际。
CNN 通过利用两个关键原则来解决这个问题:
这些原则通过专门的层在 CNN 中实现,这些层在保留数据空间关系的同时,显著减少了参数数量。
来源: chapter_convolutional-neural-networks/why-conv.md16-65 chapter_convolutional-neural-networks/why-conv.md96-118
典型的 CNN 架构包含按顺序排列的以下核心组件:
每个组件在分层特征提取过程中都起着特定作用。
| 组件 | 目的 | 典型参数 |
|---|---|---|
| 卷积层 | 提取局部特征 | 核大小、步幅、填充、滤波器数量 |
| 激活函数 | 引入非线性 | 类型(ReLU、sigmoid 等) |
| 池化层 | 减小空间维度,提供平移不变性 | 池化大小、步幅、类型(最大池化、平均池化) |
| 全连接层 | 最终分类或回归 | 神经元数量 |
来源: chapter_convolutional-neural-networks/index.md20-23 chapter_convolutional-neural-networks/lenet.md20-24
卷积层是 CNN 的核心构建块。它对输入数据应用卷积运算(技术上是互相关运算)来提取特征。
卷积层的关键运算是输入张量与核(滤波器)之间的卷积(或更准确地说,互相关)运算。
当核在输入上滑动时,它会对核值和对应的输入值进行逐元素乘法运算,然后将它们相加,得到一个输出值。
卷积层的实现如下:
来源: chapter_convolutional-neural-networks/conv-layer.md95-125 chapter_convolutional-neural-networks/why-conv.md177-192
来源: chapter_convolutional-neural-networks/why-conv.md157-206
真实世界的图像通常有多个通道(例如,RGB 用于彩色图像)。CNN 通过多通道卷积运算来处理这些通道。
对于多个输出通道,使用不同的核集重复此过程。
来源: chapter_convolutional-neural-networks/channels.md10-70 chapter_convolutional-neural-networks/channels.md72-102
填充是在应用卷积之前在输入周围添加额外的像素,主要有两个目的:
来源: chapter_convolutional-neural-networks/padding-and-strides.md12-42
步幅控制核如何在输入上移动。较大的步幅会减小输出的空间维度。
来源: chapter_convolutional-neural-networks/padding-and-strides.md151-174
池化层可以减小特征图的空间维度,并提供一定程度的对小位移不变性。
最大池化取每个池化窗口中的最大值,而平均池化取平均值。
来源: chapter_convolutional-neural-networks/pooling.md12-30 chapter_convolutional-neural-networks/pooling.md95-109
LeNet-5 是最早成功的 CNN 架构之一,由 Yann LeCun 开发用于手写数字识别。它是一个很好的 CNN 架构原理的例子。
LeNet-5 由两部分组成:
该架构展示了卷积层后跟池化层,逐渐减小空间维度同时增加通道数,最后以全连接层结束的基本模式。
PyTorch 中的实现
来源: chapter_convolutional-neural-networks/lenet.md10-35 chapter_convolutional-neural-networks/lenet.md54-69
CNN 架构中的两个重要概念:
随着我们深入网络,感受野的大小会增加,使后面的层能够捕捉更全局的模式。
这种分层特征提取是 CNN 在视觉识别任务中取得成功的关键。
来源: chapter_convolutional-neural-networks/conv-layer.md343-352
CNN 架构利用卷积层、池化运算和全连接层来高效地处理图像数据。主要优势包括:
这些特性使得 CNN 成为计算机视觉任务的首选架构,在图像相关问题上的表现优于传统神经网络。
在设计 CNN 架构时,重要的考虑因素包括:
来源: chapter_convolutional-neural-networks/lenet.md420-426 chapter_convolutional-neural-networks/why-conv.md134-141