每个卷积层中的每个过滤器都会创建一个新图像吗?

人工智能 卷积神经网络 图像处理 卷积 隐藏层 卷积算术
2021-10-22 02:36:28

假设我有一个具有这种结构的 CNN:

  • 输入 = 1 张图像(例如 30x30 RGB 像素)
  • 第一个卷积层 = 10 个 5x5 卷积滤波器
  • 第二个卷积层 = 5 个 3x3 卷积滤波器
  • 1 个输出的密集层

所以网络图将如下所示:

卷积神经网络

我认为第一个卷积层将创建 10 个新图像是否正确,即每个过滤器创建一个新的中间 30x30 图像(如果我裁剪不能完全卷积的边界像素,则为 26x26)。

然后是第二个卷积层,是否应该对前一层的所有 10 个图像应用 5 个过滤器?所以这将导致在第二个卷积层之后总共有 50 张图像。

最后最后一个 FC 层将从这 50 张图像中获取所有数据,并以某种方式将其组合成一个输出值(例如,原始输入图像是一只猫的概率)。

还是我误认为卷积层应该如何操作?

另外,如何处理通道,在这种情况下是 RGB?我可以认为整个操作对于所有红色、绿色和蓝色数据都是分开的吗?即对于一个完整的 RGB 图像,我基本上运行整个网络三次,每个颜色通道一次?这意味着我还将获得 3 个输出值。

3个回答

你是部分正确的。在 CNN 上,每层的输出形状由使用的过滤器数量和过滤器的应用(扩张、步幅、填充等)定义。

CNN 形状

在您的示例中,您的输入是 30 x 30 x 3. 假设步幅为1,滤波器上没有填充和膨胀,您将获得一个与输入相等的空间形状,即30 x 30关于深度,如果你有10过滤器(形状5 x 5 x 3),你最终会30 x 30 x 10在第一层得到一个输出。同样,在具有 5 个过滤器的第二层(形状为3 x 3 x 10,注意在前一层上工作的深度)你有30 x 30 x 5输出。FC 层具有与输入相同数量的权重(即4500权重),以创建它们的线性组合。

CNN 与卷积

请注意,CNN 的操作与传统的信号处理卷积不同。在前者中,卷积运算与过滤器和输入执行点积以输出单个值(如果您愿意,甚至可以添加偏差)。而后者输出相同数量的通道。

CNN 借用了移动内核和内核响应的想法。但它们本身并不应用卷积操作。

RGB操作

CNN 不是在每个频道上单独运行。它正在合并三个通道的响应并进一步混合它们。你得到的越深,你得到的混合就越多。

FC 的输出只是一个值。如果你想要更多,你需要添加更多的 FC 神经元来获得更多的输入线性组合。

关于 CNN 层内的图像:我真的很推荐这篇文章,因为这个问题没有一个简短的答案,尝试一下可能会更好。

关于 RGB 输入图像:当需要在 RGB 图片上进行训练时,不建议拆分 RGB 通道,您可以通过尝试识别一只红色耳朵、绿色身体和蓝色尾巴的虚构猫来思考。每个分离的通道并不代表一只猫,肯定不会有很高的信心。我建议您将 RGB 图像转换为灰度并测量网络性能。如果性能不够,您可以制作 3D 卷积层。例如:如果输入图像为 30x30x3,则过滤器必须为 NxNx3。

对于 3 通道图像 (RGB),卷积层中的每个滤波器计算一个特征图,该特征图本质上是一个单通道图像。通常,2D 卷积滤波器用于多通道图像。这可以是应用于每一层的单个过滤器或每层单独的过滤器。这些过滤器正在寻找与颜色无关的特征,即边缘(如果您正在寻找颜色,那么有比 CNN 更简单的方法)。将过滤器应用于每个通道,并将结果组合成单个输出,即特征图。由于过滤器使用所有通道来计算单个特征图,因此输入中的通道数不会影响第一层之外的网络结构。特征图的大小由过滤器大小决定,stridepaddingdilation(不常用 - 如果您有兴趣,请参阅此处。)。

在您的示例中,如果过滤器的步幅为1且填充相同(或者,使用有效填充/完整填充) ,则30 x 30 x 3与 10 个过滤器卷积的输入5 x 5将产生体积。30 x 30 x 10 26 x 26 x 1034 x 34 x 10

相同的填充使用filter_size /2 (整数除法)缓冲输入的边缘,以产生大小相等的输出(假设步幅为 1),而有效的填充将导致较小的输出。有效填充不会像您所说的那样裁剪图像,它更像是边缘信号的稀释,但结果基本相同。请注意,即使使用相同的填充,边缘像素也用于较少的卷积 -5 x 5具有相同填充的过滤器将使用中心像素 25 次(过滤器上的每个位置),但角像素仅使用 9 次。要均匀使用所有像素,必须使用完整填充,它使用filter_size - 1 缓冲输入的边缘。

                                          在此处输入图像描述

每个特征图都成为输出体积中的一个通道。因此,输出体积中的通道数总是等于卷积层中滤波器的数量因此,第二层将输出一个大小的体积30 x 30 x 5(步幅 1,相同的填充)。

示例中的最后一层(完全连接)将每个特征图中每个像素的值乘以学习的权重,然后对结果求和。如果网络是二元分类器,则在达到阈值或作为回归模型的十进制值时,总和值会产生 1 或 0 输出。这是由 FC 神经元的激活函数决定的。

如果可视化对您的帮助和对我的帮助一样多,我强烈建议您查看此处的交互式示例。请注意,此工具显示的是通过网络传播的信号,即每一层的输出,而不是过滤器/权重本身。

如果您对 ANN 和卷积层的更多深度感兴趣,我将介绍我论文中的所有基础知识(这是图像的来源) - p.9-16 ANNs 和 p.16-23 CNNs。