首页 > 解决方案 > 如何从pyspark数据帧中提取图像到numpy

问题描述

我正在使用 Azure Databricks 并通过以下方式阅读图像:

image_df = spark.read.format("image").load("/FileStore/shared_uploads/images/")

如何从 PySpark 的 DataFrame 中提取图像到 Numpy 数组?当我使用 Jupyter Notebook 在本地机器上工作时,我使用的是 tensorflow.keras.preprocessing.image img_to_array 和 load_img 方法。

标签: numpyimage-processingpysparkdatabricks

解决方案


您可以在数据帧上运行 .collect() 以列表形式收集从执行程序到驱动程序的所有内容。

除非您绝对确定驱动程序上有足够的内存来保存整个数据集,否则不要这样做。

您可能需要考虑使用生成器来批量加载图像:

from tensorflow.keras.preprocessing.image import ImageDataGenerator, load_img, img_to_array

datagen = ImageDataGenerator(validation_split=...)

那么该datagen.flow_from_directory(...)方法可能需要研究。


推荐阅读