python - 在 dask 中生成批量图像
问题描述
我刚开始是dask
因为它提供了强大的并行处理能力。我的磁盘上有一些40000
图像,我将使用这些图像来构建一个使用一些 DL 库的分类器,比如Keras
or TF
。我在 pandas 数据框中收集了这个元信息(图像路径和相应的标签),如下所示:
img_path labels
0 data/1.JPG 1
1 data/2.JPG 1
2 data/3.JPG 5
...
现在这是我的简单任务:使用 dask 以一种lazy
时尚的方式读取图像和相应的标签。batch size
对图像进行一些处理,并在32中将批次传递给分类器。
定义读取和预处理函数:
def read_data(idx): img = cv2.imread(data['img_path'].iloc[idx]) label = data['labels'].iloc[idx] return img, label def img_resize(img): return cv2.resize(img, (224,224))
获取延迟的 dask 数组:
data = [dd.delayed(read_data)(idx) for idx in range(len(df))] images = [d[0] for d in data] labels = [d[1] for d in data] resized_images = [dd.delayed(img_resize)(img) for img in images] resized_images = [dd.array.from_delayed(x, shape=(224,224, 3),dtype=np.float32) for x in resized_images]
现在这是我的问题:
Q1。如何从这个数组batch
中获取数据?batch_size=32
这相当于现在的惰性生成器吗?如果不是,可以让它表现得像一个人吗?
Q2。如何选择有效chunksize
的更好的批量生成?例如,如果我有4
核心,图像的大小是(224,224,3)
,我怎样才能使我的批处理高效?
解决方案
推荐阅读
- python - 如何使用 python 检索 pandas group-by 的最后一列行值?
- python - What's the purpose of ",)" in python / scripts?
- reactjs - NextJS:将 JSON 对象发送到另一个页面
- gentics-mesh - 请求用户令牌时出现奇怪的错误
- sql - Sql使用concat变量选择列
- python - 当它显示 ValueError: invalid literal for int() with base 10: '-2.5' 时,我在这个 Python 编码上做错了什么?
- rest - 空手道 - 使用动态参数调用另一个功能文件不会打印响应
- html - 按钮不间隔
- powerbi - 如何连接流数据并在 Power BI 中显示
- c - 是否可以在 RAM 中创建 FILE 对象(流)?