【问题标题】:Understanding 3D convolution and when to use it?了解 3D 卷积以及何时使用它?
【发布时间】:2019-12-03 08:49:33
【问题描述】:

我是卷积神经网络的新手,我正在学习 3D 卷积。 我能理解的是,2D 卷积为我们提供了 X-Y 维度中低级特征之间的关系,而 3D 卷积有助于检测所有 3 维中的低级特征和它们之间的关系。

考虑一个使用 2D 卷积层来识别手写数字的 CNN。如果一个数字,比如 5,被写成不同的颜色

严格的 2D CNN 会表现不佳(因为它们在 z 维度上属于不同的通道)?

另外,是否存在采用 3D 卷积的实用知名神经网络?

【问题讨论】:

  • 这是一种理论问题,更适合其他 SE 站点,如 AI 或 Data Science。
  • 我猜你是对的。如何将问题迁移到这些网站?

标签: neural-network conv-neural-network convolution


【解决方案1】:

问题在于图像的 2D 方面具有局部性。从某种意义上说,附近的事物应该以某种基本方式相关联。例如。头发像素附近的像素预期是头发像素,先验。但是,不同的渠道没有这种关系。当你只有 3 个通道时,一个 3D 卷积相当于在 z 中完全连接。当你有 27 个通道时(例如在网络的中间),为什么任何 3 个通道都被认为彼此“接近”?

This answer 很好地解释了差异。

在频道上建立“完全连接”的关系是what most libraries do by default。请特别注意这一行:“...形状为 [filter_height, filter_width, in_channels, out_channels] 的过滤器/内核张量”。对于大小为 in_channels 的输入向量,大小为 [in_channels, out_channels] 的矩阵是全连接的。因此,可以将过滤器视为图像大小 [filter_height, filter_width] 的“补丁”上的全连接层。

为了说明,在单个通道上,常规的普通旧图像过滤器获取图像块并将该块映射到新图像中的单个像素。像这样:(image credit)

另一方面,假设我们有多个渠道。我们没有执行从 3x3 补丁到 1x1 像素的线性映射,而是执行从 3x3xin_channels 补丁到 1x1xout_channels 像素集的线性映射。我们如何做到这一点?好吧,线性映射只是一个矩阵。请注意,3x3xin_channels 补丁可以写为具有 3*3*in_channels 条目的向量。一组 1x1xout_channels 像素可以写成带有 out_channels 条目的向量。两者之间的线性映射由具有 3*3*in_channels 行和 out_channels 列的矩阵给出。该矩阵的条目是该网络层的参数。该层通过简单地将输入向量乘以权重矩阵来获得输出向量。这在图像的所有补丁上重复。 (实际上,您可以使用some fanciness 来实现与库在实践中所做的相同的事情,而不是在所有补丁上循环执行此操作,但它给出了相同的结果)

为了说明,映射采用这个 3x3xin_channels 列:

到这个 1x1xout_channels 像素堆栈:

现在,您的建议是用以下位做一些事情:

没有数学上的原因,您不能对仅包含整个 in_channels 集的 3 个通道的 3x3x3 补丁执行某些操作。但是,您选择的任何 3 个频道都是完全任意的,并且它们彼此之间没有内在关系,这表明将它们视为“附近”会有所帮助。

重申一下,在图像中,彼此靠近的像素在某种意义上应该是“相似的”或“相关的”。这就是卷积起作用的原因。如果你把像素弄乱了,然后做了一个卷积,那将一文不值。在那一点上,所有的频道都只是一个混乱。沿通道没有“附近相关性”属性。例如。 “红色”通道不在“绿色”通道或“蓝色”通道附近,因为通道之间的“接近度”没有任何意义。由于“接近度”不是通道维度的属性,因此在该维度上进行卷积可能不会有用。

另一方面,我们可以简单地将所有 in_channels 的输入同时从所有 out_channels 生成输出,并让它们以线性方式相互影响。请注意,所描述的线性变换涉及一种参数的异花授粉。例如,对于网络顶部的层,接收标记为r_1_1-r_3_3 等的 3x3 r、g、b 通道补丁,该补丁输出的单个通道中的单个像素将看起来像:

A*r_1_1 + B*r_1_2 + ... C*r_3_3 + D*b_1_1 + E*b_1_2 + ... F*b_3_3 + G*g_1_1 + ...

其中大写字母是权重矩阵的条目。

所以您的观察结果是:“严格的 2D CNN 会表现不佳吗?”基于卷积层不包括各个通道之间的任何“混合”的假设。不是这种情况。 in_channels 全部组合在一个线性映射中以获得 out_channels。

【讨论】:

  • 感谢您的回答,斯科特。我不太明白“过滤器可以被认为是图像大小的“补丁”上的全连接层”这一点。
  • 是的,但我一直不明白如何将全连接层视为卷积层的扩展。
  • 他们不是,真的。
  • 我试图扩展我的答案。我不确定您的背景是什么,但您可能会发现对 linear transformations 的一些评论很有帮助。请注意,此处描述的变换是非常高维的,但您可以see here 在线性变换中,“输出”维度通常包含“混合”所有“输入”维度的组件。
猜你喜欢
  • 2018-06-25
  • 2018-12-03
  • 2013-11-30
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 2016-12-13
相关资源
最近更新 更多