首页 > 解决方案 > 使用 Keras 数据生成器从 3D 体积批量加载 2D 切片

问题描述

我在 TF/Keras 中有一个基于 U-Net 的分割算法,它被训练用于 3D 图像体积的 2D 分割(存储为 numpy 数组)。我的 3D 图像体积除了切片编号(例如,512x512x50、512x512x200、512、512、12)外,尺寸相同。目前,该算法正在加载所有 3D 数组,连接,然后在训练期间从巨大的 512x512xn(总切片数)数组批量加载 512x512 图像……但这占用了太多内存。

我想使用类似ImageDataGenerator's 的东西flow_from_directoryflow_from_dataframe在训练期间根据需要加载数组,而不是一次加载,但我不确定如何执行此操作,因为我处理的是 3D 卷而不是包含 2D 图像的目录。是否有一种批量加载类型,ImageDataGenerator我可以从具有 3D 卷的目录批量加载 2D 切片?

一个低效的解决方法是打开我所有的 3D 数组并重新保存为单个切片..但我更愿意避免这种情况。否则我想我可以构建一个自定义生成器,用于numpy.memmap一次加载一个切片?

任何输入将不胜感激,谢谢

标签: pythonarraystensorflowkerasgenerator

解决方案


推荐阅读