首页 > 解决方案 > 我应该对 3D 灰度图像使用 2D 还是 3D 卷积?

问题描述

我正在使用一个 TFRecord 数据集,该数据集由 3D 对象横截面的多个灰度图像组成,最终形状为 [32、256、256]。32的维度代表横截面的数量,它明显小于其他维度。

因此,我想知道是否可以将数据视为具有 32 个通道的 2D 数据,而不是将数据视为具有一个通道的 3D 数据,尤其是在所需的计算资源方面有帮助。我现在在 Google Colab 中将 TensorFlow 与 TPU 一起使用,使用tf.layers.conv2d而不是tf.layers.conv3d会从更少的填充中节省大量内存。

这两种方法之间是否有任何显着差异,或者我应该遵循什么约定?使用会conv2d以任何方式损害我的准确性吗?

标签: tensorflowmachine-learningconv-neural-networktpu

解决方案


卷积层相对于完全连接的 2D 层的主要好处之一是权重是 2D 区域的局部权重,并且在所有 2D 位置上共享,即过滤器。这意味着即使图像中的判别模式出现多次或出现在不同的位置,它也会被学习一次。即它对翻译有些不变。

对于 3D 信号,您需要确定是否需要滤波器输出对深度保持不变,即判别特征可能出现在图像中的任何一个或多个深度,或者特征的深度位置是否相对固定. 前者需要 3D 卷积,后者则可以使用具有大量通道的 2D 卷积。

例如(编造这个——我还没有研究过),假设你对某人的肺部进行了 3D 扫描,并且你正在尝试分类是否存在肿瘤。为此,您需要 3D 卷积,因为表示“肿瘤”的过滤器组合需要对该肿瘤的 X、Y 和 Z 位置保持不变。如果在这种情况下使用 2D 卷积,则训练集必须具有所有不同 Z 位置的肿瘤样本,否则网络将对 Z 位置非常敏感。

顺便说一句:带有 LSTM 的 CNN 是另一种处理 3D 数据的方法。


推荐阅读