Module 01 · Foundations of Convolutional Neural Networks
Convolutions Over Volume三维卷积
在上一节中,我们了解了如何对二维图像进行卷积。接下来,我们将讨论如何在 三维体积 上进行卷积,以便在处理更复杂的图像(例如 RGB 图像)时应用卷积操作。🌐
1. 三维卷积操作示例
假设我们不仅仅想在 灰度图像 中检测特征,而是想在 RGB 图像 中检测特征。那么,RGB 图像的维度将是 6x6x3,其中 3 代表三个颜色通道(红色、绿色、蓝色)。你可以把它看作是三张 6x6 的图像堆叠在一起。为了在这种图像中检测边缘或其他特征,我们需要使用 三维滤波器,而不仅仅是之前提到的 3x3 滤波器。新的滤波器维度将是 3x3x3,其中每一层滤波器分别对应图像的红色、绿色和蓝色通道。🟥🟩🟦
图像与滤波器尺寸
- 图像尺寸: 6x6x3
- 6 是图像的高度和宽度。
- 3 是图像的颜色通道数。
- 滤波器尺寸: 3x3x3
- 3 是滤波器的高度、宽度和颜色通道数(必须与输入图像的颜色通道数匹配)。
2. 卷积操作的计算过程
假设我们有一个 6x6x3 的图像和一个 3x3x3 的滤波器,如何执行卷积操作呢?
- 滤波器放置: 首先,将 3x3x3 的滤波器放置在图像的左上角。该滤波器有 27 个数(每个维度为 3,因此是 3x3x3),并且每个数字将与图像相应通道的数字进行逐一乘积。
- 逐通道相乘:
- 将滤波器中的 前9个数 与图像的红色通道中的数字相乘。
- 接着,将滤波器中的 接下来的9个数 与图像的绿色通道中的数字相乘。
- 最后,将滤波器中的 剩余的9个数 与图像的蓝色通道中的数字相乘。
- 求和并得到输出: 将这 27个数 相乘并求和,得到卷积的第一个输出。📊
- 滑动滤波器: 然后,将滤波器滑动一个步长,再次执行上述计算,直到整个图像处理完。
3. 特征检测的应用
通过使用不同的 3x3x3 滤波器,我们可以检测不同的图像特征。例如:
- 垂直边缘检测: 如果我们只关心图像中 红色通道 的垂直边缘,我们可以设置一个滤波器,其中 红色通道 中的数值为 1,而 绿色和蓝色通道 中的数值为 0。这样,滤波器就会检测 红色通道 中的垂直边缘。
- 通用边缘检测: 如果我们不关心边缘的颜色,可以设置一个滤波器,其中 红色、绿色和蓝色通道 中的数值都是 1 或者 -1。这样,滤波器就可以检测图像中的 所有颜色的边缘。
通过改变这些参数,我们可以从 3x3x3 的滤波器中提取不同的特征。🔄
4. 多个滤波器的使用
如果我们不仅仅想检测垂直边缘,而是希望同时检测 多个特征,例如:垂直边缘、水平边缘、45度边缘等,我们可以使用 多个滤波器。例如:
- 第一个滤波器 可以用于检测 垂直边缘。
- 第二个滤波器 可以用于检测 水平边缘。
输出体积的构建
假设我们使用两个不同的 3x3x3 滤波器,进行卷积操作后得到两个 4x4 的输出:
- 我们将这两个 4x4 的输出堆叠在一起,得到一个 4x4x2 的输出体积。
这两个输出的堆叠形成了一个三维体积,其中 2 是因为我们使用了两个滤波器。
5. 卷积输出尺寸的总结
假设我们有一个 n x n x c 的输入图像(例如 6x6x3),其中 c 是图像的通道数,并且我们使用一个 f x f x c 的滤波器(其中 c 必须与输入图像的通道数匹配)。输出的尺寸为:
- 其中,n 是输入图像的高度和宽度,f 是滤波器的高度和宽度。
- number of filters 是你使用的滤波器的数量。
示例
- 输入图像:6x6x3
- 滤波器:3x3x3
- 输出尺寸:4x4x2(两个滤波器)
6. 深度和通道的区别
在文献中,我们常常会看到 深度(Depth) 这一术语,它通常用于表示卷积输出体积的第三维。尽管在深度学习中,"深度" 通常指的是神经网络的层数,但在卷积中,深度指的是 输出体积的通道数(Channels)。
- 在这里,我们将 通道(Channels) 用来表示卷积操作后输出体积的最后一个维度,避免与神经网络的 层深度(Depth) 混淆。
小结与前瞻
- 三维卷积 使得我们能够直接对 RGB 图像 进行卷积,处理 多通道 的图像。
- 通过使用多个滤波器,我们可以提取不同的特征,如 边缘、纹理 等,进一步增强卷积操作的表现力。
- 通过 卷积体积,我们能够在图像中检测更多种类的特征,并将不同的特征合并成一个 多通道的输出体积。
下一步:实现卷积神经网络的第一层
现在,你已经了解了如何在 三维体积 上执行卷积操作,接下来我们将讨论如何实现卷积神经网络(CNN)的 第一层卷积。让我们一起进入下一节课,了解如何在实际中实现卷积操作!