Conv3D 大小对 NIFTI 数据没有意义?

Conv3D size doesn’t make sense with NIFTI data?

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

我的数据加载器 returns 形状 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) ,但我不应该排列轴,因为数据使用完全不同的坐标系 ?

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

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

创建具有置换维度的张量

如果我误解了你的问题,请告诉我。