【问题标题】:Understanding input shape (spatial_window_size) for Niftynet了解 Niftynet 的输入形状 (spatial_window_size)
【发布时间】:2018-08-29 09:28:02
【问题描述】:
【问题讨论】:
标签:
image-segmentation
medical
niftynet
【解决方案1】:
spatial window_size 参数定义了您希望在数据增强期间从输入图像中获得的裁剪尺寸。
为图像、标签和推理设置此参数有什么重要意义?
[TRAINING] 和 [INFERENCE] 部分中的此参数应相同,因为管道使用 spatial_window_size 将补丁聚合为原始分辨率。选择初始窗口大小取决于 CNN 架构的兼容形状、输入形状的维度(2D 切片与体素)以及内存限制(太大且可能不适合您的 GPU 内存)。
何时选择更大或更小的 spatial_window_size 形状?
一般来说,更大的补丁大小更可取(据观察它们会产生更好的性能),我建议您参考answer 了解基本原理。但是,这取决于您的特定数据集,因此我建议您尝试不同的补丁大小。
但是,您也可以使用一种称为 Building Up Sizes 的技术(请参阅技巧 #9),您可以使用较小的 spatial_window_size 开始训练,然后增加大小,并再次训练相同的模型以减少过度拟合并提高整体表现。请注意,这仅在您使用完全卷积 CNN 或具有某种形式的空间金字塔池的 CNN 时才有效(输入图像大小无关紧要)。
为什么标签和图片的尺寸不同?
这个问题需要进一步澄清(即配置、原始图像分辨率),但不幸的是,我没有足够的声誉来发表评论。
[INFERENCE] 部分中的border 参数删除了[TRAINING] 部分中volume_padding_size 参数的填充。根据configuration documention,边界至少应为floor(N-D)/2,其中N表示原始体素/切片大小的元素之一,D表示输出的网络体素/切片大小的元素之一( spatial_window_size)。对于 2D 窗口大小(即 96 X 96 X 1),border 可以是 (96,96,0),其中最后一个元素必须为 0。因此,边框参数取决于窗口大小和不影响我们如何选择它。相反,我们根据我们希望网络关注外部像素而不是中心像素的程度来选择边界参数。