对于我正在构建的深度学习应用程序,我有一个大约50k灰度图像的数据集,范围从大约300 * 2k到300 * 10k像素。将所有这些数据加载到内存中是不可能的,所以我正在寻找一种适当的方法来处理随机批量数据的读取。另外一个复杂的问题是,我需要在构建我的深度学习模型之前知道每个图像的宽度,在数据中定义不同的大小桶(例如:[2k-4k,4k-6k,6k-8k,8k -10k]。
目前,我正在处理一个较小的数据集,只需从png文件中加载每个图像,按大小存储它们并开始学习。当我想扩大规模时,这已不再可能。
为了训练模型,每批数据应该(理想情况下)从随机桶中完全随机。这样做的一种天真的方法是预先保存图像的大小,并在需要时加载每个随机批次。但是,这会导致大量额外的数据加载,而不是非常有效的内存管理。
有没有人建议如何有效地处理这个问题?
干杯!
答案 0 :(得分:0)
为什么不添加预处理步骤,您可以(a)将图像物理移动到与存储桶关联的文件夹和/或重命名,或者(b)首先扫描所有图像(仅限标题)以构建in-图像文件名的内存表及其大小/桶,然后随机抽样步骤实现起来非常简单。