You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将图像numpy数组与标题列表转为datasets.arrow_dataset.Dataset?

解决方法

你当前的问题出在字典结构错误:你把每个样本的索引作为字典的键,每个键对应单个样本的{'image': ..., 'text': ...}字典,这会让from_dict将每个索引视为独立列,导致列类型不统一(一部分列是图像数组,一部分是字符串),触发类型不匹配的报错。

正确的做法是构造以字段名为键、对应全量样本列表为值的字典,每个字段对应一列数据,每一行对应一个样本。具体代码如下:

from datasets import Dataset
from PIL import Image

# 将numpy图像数组转换为PIL图像列表(Stable Diffusion微调通常更兼容PIL格式)
image_list = [Image.fromarray(img) for img in img_tensor]

# 构造符合要求的字典:键是字段名,值是对应样本的列表
data_dict = {
    "image": image_list,
    "text": img_captions
}

# 创建Dataset对象
ds = Dataset.from_dict(data_dict)

补充说明

  • 如果你的numpy数组已经是uint8类型且形状为(512,512,3)(HWC格式),转成PIL图像不会有问题。
  • 若不想转换为PIL,直接使用numpy数组也可以尝试,但部分微调代码可能需要额外处理图像格式,转PIL是更稳妥的选择。
  • 验证是否成功:可以打印ds[0],应该输出包含image和text字段的单个样本数据。

内容的提问来源于stack exchange,提问作者jskattt797

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:20:39