我在 TF/Keras 中有一个基于 U-Net 的分割算法,该算法经过训练用于 3D 图像体积的 2D 分割(存储为 numpy 数组)。我的 3D 图像体积除切片编号外尺寸相同(例如 512x512x50、512x512x200、512,512,12)。目前,该算法正在加载所有 3D 数组,连接,然后在训练期间从巨大的 512x512xn(总切片数)数组中批量加载 512x512 图像...但这占用了太多内存。
我想使用类似
ImageDataGenerator
的 flow_from_directory
或 flow_from_dataframe
在训练期间根据需要加载数组而不是一次性加载数组,但我不确定如何执行此操作,因为我处理的是 3D 体积而不是带有 2D 图像的目录。是否有一种可通过 ImageDataGenerator
进行批量加载的类型,我可以从具有 3D 体积的目录中批量加载 2D 切片?
一个低效的解决方法是打开我的所有 3D 数组并重新保存为单独的切片..但我宁愿避免这种情况。否则我想我可以构建一个自定义生成器,它使用
numpy.memmap
一次加载一个切片?
如有任何意见,我们将不胜感激,谢谢
我很好奇如何实现加载 2d 切片作为输入,而不是加载整个 3d 体积作为一个输入。