我正在使用NiftyNet
分割问题。要从卷中获取样本,有此选项Sample_per_volume
。
观察:当我将其设置为“1”时监控样本位置时,我注意到不是只从一个体积中获取一个样本,而是更像是每次迭代从一张图像中获取一个样本。
假设:如果这是真的,那么最好设置Sample_per_volume
为 1 以便最好地随机化采样过程。
问:我的观察对吗?如果是这样,假设正确吗?那么,如果最佳选项始终为“1”,为什么该选项存在?
我正在使用NiftyNet
分割问题。要从卷中获取样本,有此选项Sample_per_volume
。
观察:当我将其设置为“1”时监控样本位置时,我注意到不是只从一个体积中获取一个样本,而是更像是每次迭代从一张图像中获取一个样本。
假设:如果这是真的,那么最好设置Sample_per_volume
为 1 以便最好地随机化采样过程。
问:我的观察对吗?如果是这样,假设正确吗?那么,如果最佳选项始终为“1”,为什么该选项存在?
其动机sample_per_volume
来自于一些医学图像可能非常大,因此神经网络训练的瓶颈是磁盘的 i/o。在这种情况下,为了提高效率,最好在每个体积中获取多个样本。
正如您所指出的,虽然这不是很理想,但有几个缓解因素。首先,您可以将queue_length
参数设置得更高。这意味着一次加载几个补丁,然后随机输入到训练中。此外,由于许多 3-d 神经网络使用补丁而不是整个图像,来自同一体积的 2 个补丁甚至可能不会重叠,因此对于小补丁来说,从给定的体积中抓取很多是很有意义的。
所以,tl; dr:最好的选择并不总是“1”,因为加载数据可能很昂贵。