卷积神经网络 - 多通道

Posted

技术标签:

【中文标题】卷积神经网络 - 多通道【英文标题】:Convolutional Neural Networks - Multiple Channels 【发布时间】:2015-02-27 23:31:56 【问题描述】:

当输入层存在多个通道时,卷积操作是如何进行的? (例如 RGB)

在阅读了 CNN 的架构/实现之后,我了解到特征图中的每个神经元都引用了由内核大小定义的图像的 NxM 像素。然后每个像素由学习到的 NxM 权重集(内核/滤波器)的特征图分解、求和,然后输入到激活函数中。对于一个简单的灰度图像,我想该操作将遵循以下伪代码:

for i in range(0, image_width-kernel_width+1):
    for j in range(0, image_height-kernel_height+1):
        for x in range(0, kernel_width):
            for y in range(0, kernel_height):
                sum += kernel[x,y] * image[i+x,j+y]

        feature_map[i,j] = act_func(sum)
        sum = 0.0

但是我不明白如何扩展此模型以处理多个渠道。每个特征图是否需要三个单独的权重集,在每种颜色之间共享?

参考本教程的“共享权重”部分:http://deeplearning.net/tutorial/lenet.html 特征图中的每个神经元都引用第 m-1 层,其中颜色来自不同的神经元。我不明白他们在这里表达的关系。神经元是内核还是像素,为什么它们引用图像的不同部分?

根据我的示例,单个神经元内核似乎专属于图像中的特定区域。为什么他们将 RGB 分量拆分到多个区域?

【问题讨论】:

我投票结束这个问题,因为它属于 stats.stackexchange 【参考方案1】:

当输入层存在多个通道时,卷积操作是如何进行的? (例如 RGB)

在这种情况下,您有每个输入通道有一个 2D 内核(也称为平面)。

因此,您分别执行每个卷积(2D 输入、2D 内核)并将贡献相加,从而得到最终的输出特征图。

请参考CVPR 2014 tutorialMarc'Aurelio Ranzato的幻灯片64:

每个特征图是否需要三个单独的权重集,在每种颜色之间共享?

如果您考虑给定的输出特征图,您有 3 x 2D 内核(即每个输入通道一个内核)。每个 2D 内核沿整个输入通道(此处为 R、G 或 B)共享相同的权重。

所以整个卷积层是一个 4D 张量(nb. 输入平面 x nb. 输出平面 x 内核宽度 x 内核高度)。

他们为什么将 RGB 分量拆分到几个区域?

如上所述,将每个 R、G 和 B 通道视为具有专用 2D 内核的独立输入平面。

【讨论】:

2D conv kernel 不是在所有三个通道之间共享?认为 conv 层是 1 * conv_kernel_num * kernel_width * kernel_height 张量。如果 conv 内核不在通道之间共享,我可以将 conv 内核解释为 kernel_width * kernel_height * channel_num(在这种情况下为 3)张量吗?【参考方案2】:

例如,如果您的输入图像大小为 W x H x C,其中 W、H 和 C 表示宽度、高度和通道大小的长度。过滤器(又名内核)的维度将是 K x K x C,其中 K 表示内核维度的长度。使用max 聚合不同渠道的结果无法区分渠道之间的细微差别,这不是我们想要的。如下图所示(source),输入数据大小为 6 x 6 x 3。单元(过滤器)的数量为 2,每个单元的维度为 3 x 3 x 3。输出为 4 x 4 x 2。因此,通常需要在每个过滤器下单独处理通道。

【讨论】:

【参考方案3】:

Max 不太有意义,因为渠道应该是独立的。从不同通道上的不同过滤器获取最大结果是将不同方面混合在一起。

为了组合来自不同通道的输出,基本上我们需要一个函数来将输出相加。在我看来,这里添加函数的选择可能会因用例而异。根据 pytorch conv2d implementation,一种实现只是进行求和。详情见https://pytorch.org/docs/stable/nn.html

【讨论】:

请在此处添加链接中的相关部分。

以上是关于卷积神经网络 - 多通道的主要内容,如果未能解决你的问题,请参考以下文章

基于多通道卷积神经网络的数字图像识别植物病害

机器学习-卷积神经网络CNN中的单通道和多通道图片差异

NLP教程

Tensorflow系列4:卷积神经网络--解决参数过多问题

动手学pytorch-卷积神经网络基础

深入浅出图神经网络|GNN原理解析☄学习笔记卷积神经网络