0

所以我正在为医学图像编写自定义数据集,使用 .nii(NIFTI1 格式),但存在混淆。

我的数据加载器返回 shape torch.Size (1,1,256,256,51)。但是 NIFTI 卷使用解剖轴,不同的坐标系,因此置换轴没有任何意义,我通常会使用由 2D 图像组成的卷,每个图像分别存储在具有 51 个切片图像(或深度)的本地驱动器中,如Conv3D 遵循约定(N,C,D,H,W).

所以torch.Size (1,1,256,256,51)(通常 51 是深度)不遵循约定(N,C,D,H,W),但我不应该置换轴,因为数据使用完全不同的坐标系?

4

1 回答 1

1

在 pytorch 3d 卷积层中,您进行卷积的 3 个维度的命名并不重要(例如,与高度相比,该层实际上并没有对深度进行特殊处理)。所有差异都来自 kernel_size 参数(如果使用它,还有填充)。如果您置换尺寸并相应地置换 kernel_size 参数,则不会真正改变。因此,您可以使用 eg 置换输入的维度,也可以x.permute(0, 1, 4, 2, 3)继续使用初始张量,并将深度作为最后一个维度。

澄清一下 - 如果您想kernel_size=(2, 10, 10)在 DxHxW 图像上使用,现在您可以改为kernel_size=(10, 10, 2)在 HxWxD 图像上使用。如果您希望所有代码都明确假设维度顺序始终为 D、H、W,那么您可以使用x.permute(0, 1, 4, 2, 3).

如果我以某种方式误解了您遇到的问题,请告诉我。

于 2020-06-07T20:57:09.937 回答