CNN 中通道的概念是什么?

人工智能 机器学习 深度学习 卷积神经网络 渠道
2021-11-11 23:26:08

我试图了解卷积神经网络中通道的含义。在处理灰度和彩色图像时,我知道通道数分别设置为 1 和 3(在第一个 conv 层中),其中 3 对应于红色、绿色和蓝色。

假设您有一个彩色图像200×200像素。标准是这样的,输入矩阵是200×200具有 3 个通道的矩阵。第一个卷积层将有一个大小为N×M×3, 在哪里N,M<200(我认为它们通常设置为 3 或 5)。

是否有可能以不同的方式构造输入数据,使得通道数现在变成图像的宽度或高度?即,通道数为 200,则输入矩阵为200×3或者3×200. 与标准(通道数 = 3)相比,此公式的优点/缺点是什么?显然,这会限制过滤器的空间大小,但会在深度方向上显着增加它。

我真的提出这个问题是因为我不太了解 CNN 中的频道概念。

2个回答

假设您有一个 200x200 像素的彩色图像。标准是输入矩阵是一个具有 3 个通道的 200x200 矩阵。第一个卷积层将有一个大小为N×M×3, 在哪里N,M<200(我认为它们通常设置为 3 或 5)。

是否有可能以不同的方式构造输入数据,使得通道数现在变成图像的宽度或高度?即,通道数为 200,输入矩阵为 200x3 或 3x200。与标准(通道数 = 3)相比,此公式的优点/缺点是什么?显然,这会限制过滤器的空间大小,但会在深度方向上显着增加它。

不同的维度(宽度、高度和通道数)确实有不同的含义,它们背后的直觉是不同的,这很重要。您可以重新排列您的数据,但如果您随后将其插入到预期数据为原始格式的 CNN 实现中,它的性能可能会很差。

需要注意的重要一点是,CNN 背后的直觉是它们对位置不变性的“先验”假设或知识、“启发式”、“经验法则”进行编码。直觉是,在查看图像时,我们经常希望我们的神经网络能够始终如一地(以相同的方式)检测特征(可能是边缘、角落等低级特征,或者可能是完整等高级特征面孔),无论他们在哪里人脸是位于图像的左上角还是右下角无关紧要,检测到它在那里仍然应该以相同的方式执行(即可能需要完全相同的学习权重组合)我们的网络)。这就是我们所说的位置不变性。

这种位置不变性的直觉是通过使用我们沿着整个图像“滑动”的“过滤器”或“特征检测器”来实现的。这些是你提到的有维度的东西N×M×3. 位置不变性的直觉是通过采用完全相同的过滤器并将其重新应用到图像的不同位置来实现的。

如果您更改显示数据的顺序,您将破坏位置不变性的这一特性。相反,您将用一个相当奇怪的属性替换它......例如,“宽度颜色”不变性。您可能会得到一个过滤器,它可以检测到相同类型的特征,而不管它x- 图像中的坐标,不管它是用什么颜色绘制的,但是是的- 坐标会突然变得相关;您的过滤器可能能够检测图像底部任何颜色的边缘,但无法识别图像顶部的相同边缘。这不是我期望在大多数图像识别任务中成功工作的直觉。


请注意,以某种方式对数据进行排序在计算时间方面也可能有优势,具体取决于您之后将使用该数据执行的计算(通常是大量矩阵乘法)。最好将数据存储在 RAM 中,使使用数据(矩阵乘法)的算法的最内层循环按与存储数据相同的顺序顺序访问数据。这是最有效的方式在其中从 RAM 访问数据,并将导致最快的计算。您通常可以放心地期望在大型框架(如 Tensorflow 和 PyTorch)中的实现已经要求您以默认情况下最有效的任何格式提供数据。

如果您有灰度图像,则意味着您正在从一个传感器获取数据。如果您有 RGB 图像,则意味着您正在从三个传感器获取数据。如果您有 CMYK 图像,则意味着您正在从四个传感器获取数据。

因此,渠道可以被视为从不同角度看到的相同信息。(这里颜色)

如果您看到内核(例如 5*5*3)是如何移动的,它只会在 XY 方向移动,而不是在通道方向移动。因此,您正在尝试从所有通道一起学习 XY 方向的特征。

但是,如果你像你提到的那样交换尺寸,你的 XY 尺寸变成 200*3 或 3*200,你的通道变成 200。在这种情况下,你移动的内核不在图像的实际 XY 空间空间中。所以,在我看来,这没有任何意义。您这样做是在与 CNN 的基本概念相矛盾。

CNN 本身的概念是你想从图像的空间域(XY 维度)中学习特征。所以,你不能像你提到的那样改变尺寸。