我用voxelmorph做肺部图像的配准。但是我的火车图像太大了,无法输入到网络中,图像的形状不同,形状也不规则。有些是513436…(不是2的幂次,所以我不能直接使用U-NET或其他CNN)。在
为了解决这些问题,我将列车图像分割成128x128x128的子图像,其中step=100。看起来像这样:
在预测阶段,我还将图像分割成若干子图像,利用网络对每个子图像进行预测,然后对结果进行组合。但问题是子图像的边界看起来与内部区域不同,如下所示:
我天真的方法是平滑的,但我发现它行不通。我认为这是一个常见的问题。怎么解决这个问题?请帮忙。在
这个数据问题有点小不同。因为简单列车图像的形状超过300x300x300。所以不是整个数据集太大,一个简单的数据就太大了。在
有一些例子:
(430, 318, 168)
(434, 354, 349)
(428, 290, 439)
(446, 290, 466)
(452, 382, 373)
(464, 290, 378)
(424, 278, 217)
(308, 202, 109)
(420, 312, 537)
(444, 314, 399)
(418, 368, 323)
(384, 432, 396)
(412, 282, 408)
(314, 188, 239)
(428, 308, 422)
(412, 302, 471)
(276, 158, 127)
(384, 432, 396)
(394, 322, 370)
(412, 322, 289)
(412, 296, 458)
(323, 250, 127)
(448, 296, 431)
(420, 302, 446)
(438, 314, 393)
(386, 424, 386)
像这样的骨网:
^{pr2}$CNN上有一篇文章提到大图像,A New Approach to Compute CNNs for Extremely Large Images。它使用了一个自适应填充来解决边界问题,但是描述不清楚。我认为这类似于重叠策略。在
对于U-net模型,可以将输入分成几部分并分别处理。在
需要注意的是图像的边界:将256x256分割成4幅128x128的图像可能会在分割时产生明显的边界(图像中心有一个十字)。为了避免这一点,将图像分割为稍微重叠并忽略边界是有意义的。在
换句话说。对于大小为256x256的图像,可放入内存的最大可能输入为128,请遵循下一个算法:
解决方案
你好@ruokuanwu这是一个很常见的问题,我们有很多数据需要训练,在深入学习,我们不能存储所有这些到我们的记忆一次。为了解决这个问题,keras有一个
flow_from_directory
的函数,keras可以直接从磁盘上获取数据。现在我们不必一次上传所有数据。这个功能从磁盘中取出一批,将其加载到内存中,并将其送入模型进行处理。解决了大数据集的训练问题。在您可以在这里看到通过图像生成器进行训练的示例。在
Example Notebook Kaggle Link
要求:
如果你正在进行图像分类,你必须把你的每个类放在单独的文件夹中,并给出你的独立类文件夹所在的父文件夹的路径。在
如果您的问题可以通过使形状大小为2的倍数来解决,我建议使用openCV。在
您可以简单地通过添加白/黑边框来扩展图像。您也可以缩放图像,这取决于在您的情况下哪个效果更好。在
另一个选项-运行ImageMagic来增加较小图像的图像大小。 示例:
这将使较小图像的大小增加4倍。在
相关问题 更多 >
编程相关推荐