站点图标 高效码农

GPT-IMAGE-EDIT-1.5M震撼开源!154万条数据炼成的图像编辑神器

手把手教你用 150 万条 GPT 生成的数据,让开源模型也能做出 GPT-4o 级别的修图效果

——一份写给技术同学的 GPT-IMAGE-EDIT-1.5M 实战指南

如果你苦于找不到高质量、大规模、可用于商业场景的开源图像编辑数据集,这份笔记能帮你在 15 分钟内搞清楚:

  1. 这 150 万条样本到底长什么样?
  2. 它们是怎么被 GPT-4o「二次加工」出来的?
  3. 我该如何把这份数据真正用到自己的模型或产品里?

目录

  1. 为什么又需要一份新数据集?
  2. GPT-IMAGE-EDIT-1.5M 全景速览
  3. 数据诞生记:3 步把旧数据「翻新」
  4. 动手实验:把 FluxKontext 微调出 7.24 分
  5. 如何下载、校验、加载这份数据?
  6. 常见问题答疑(FAQ)
  7. 一份可直接复制的 PyTorch Dataset 代码片段
  8. 小结与下一步

1. 为什么又需要一份新数据集?

做过图像编辑的同学都遇到过这些坑:

痛点 常见现象 后果
指令太简单 “把花变红”这类一句话指令 模型学不会复杂组合操作
输入–输出对不齐 指令说「加彩虹」,结果图片里彩虹位置错乱 训练时损失降不下去
数据量太小 公开数据集只有几万张 微调后过拟合严重

GPT-4o 出现后,大家发现:

只要数据质量过硬,哪怕是开源架构也能逼近闭源模型的效果。

于是 UCSC、爱丁堡、Adobe 三家机构联手,把 OmniEdit、HQ-Edit、UltraEdit 三个老牌数据集重新「回炉」——让 GPT-4o 重新写指令、重新出图,最终得到 154 万条三元组(指令、原图、编辑后图),起名叫 GPT-IMAGE-EDIT-1.5M


2. GPT-IMAGE-EDIT-1.5M 全景速览

2.1 规模与分布

  • 总量:1 540 203 条有效样本
  • 来源占比
    • OmniEdit:约 60 %
    • HQ-Edit:约 25 %
    • UltraEdit:约 15 %
  • 分辨率:全部统一成 1024×1024、1536×1024、1024×1536 三种比例
  • 语言:英文指令为主,10 % 指令经过 GPT-4o 重写以消除歧义

2.2 一条样本到底长什么样?

字段 示例 说明
instruction “把沙发换成复古棕色皮革,并在背景加一盏落地灯” 自然语言
source_image 原始照片
edited_image GPT-4o 重新生成

3. 数据诞生记:3 步把旧数据「翻新」

官方把流程画成了一张图,我们拆成三步讲给你听:

3.1 输出图再生(Output Regeneration)

  1. 拿原始指令 + 原图喂给 GPT-4o 的图像编辑 API
  2. 要求 1024 px 高分辨率 + 与原图内容对齐
  3. 自动过滤掉带水印、畸变、留边的图

这一步就带来 0.3 ~ 0.4 分的指标提升(OmniEdit 上 imgedit 从 2.94 → 3.24)。

3.2 指令重写(Instruction Re-write)

  • 原因:GPT-4o 有时会“过度创作”,导致新图跟原指令有细微差异。
  • 做法:把「原图 + 新生成图」再喂给 GPT-4o,让它重新写一条精准描述变化的指令。
  • 结果:指令更长、更准确,指标再涨 0.1 ~ 0.2 分。

3.3 全对再生(Pair Regeneration,仅 HQ-Edit)

  • 背景:HQ-Edit 原图也是 DALL·E 3 生成,略显过时。
  • 做法:
    1. 让 GPT-4o 重新生成输入图(保证构图合理、像素清晰)
    2. 再按同一指令生成编辑后图
  • 结果:GEdit-EN 从 5.67 → 5.73。

4. 动手实验:把 FluxKontext 微调出 7.24 分

4.1 基座模型

  • FluxKontext dev:基于 Rectified Flow Transformer,支持 1024 px 原生分辨率
  • 官方把 CLIP 换成 Qwen-VL-7B 作为图文编码器,语义对齐更好

4.2 训练配置一览

超参 备注
batch_size 256(8×A100 80 G) 梯度累积 4 步
lr 5e-5 cosine 退火
steps 30 k 1 epoch ≈ 1.5 M 样本

4.3 结果对比表

Benchmark 原数据集训练 GPT-IMAGE-EDIT-1.5M 训练 提升
GEdit-EN-full 6.26 7.24 +0.98
ImgEdit-Full 3.52 3.80 +0.28
Complex-Edit 8.49 8.78 +0.29

注:表中分数由官方多维度 MLLM 评委自动打分,越高越好。


5. 如何下载、校验、加载这份数据?

5.1 下载

5.2 文件结构

GPT-IMAGE-EDIT-1.5M/
├── metadata/
│   ├── omniedit.jsonl
│   ├── hqedit.jsonl
│   └── ultraedit.jsonl
├── images/
│   ├── 00000000.jpg
│   ├── ...
└── checksum.sha256

5.3 校验

sha256sum -c checksum.sha256

通过后再开始训练,避免中途解压损坏。


6. 常见问题答疑(FAQ)

提问 官方回答
可以直接商用吗? 数据集采用 CC-BY-4.0,需署名,商业场景请再确认第三方素材版权。
显存不够怎么办? 官方脚本支持 --gradient_checkpointing + --mixed_precision fp16,单卡 24 G 可跑 batch_size=4。
想增量训练自己的数据? 保持 JSONL 格式,字段对齐即可;建议先用 1:1 比例重采样,减少形变。
中文指令能用吗? 目前仅英文,多语言版本社区正在讨论,可关注 GitHub issue #7。

7. 一份可直接复制的 PyTorch Dataset 代码片段

import json, os
from PIL import Image
from torch.utils.data import Dataset

class GPTImageEditDataset(Dataset):
    def __init__(self, meta_file, img_dir, transform=None):
        with open(meta_file) as f:
            self.samples = [json.loads(line) for line in f]
        self.img_dir = img_dir
        self.transform = transform

    def __len__(self):
        return len(self.samples)

    def __getitem__(self, idx):
        item = self.samples[idx]
        src = Image.open(os.path.join(self.img_dir, item['source'])).convert('RGB')
        tgt = Image.open(os.path.join(self.img_dir, item['target'])).convert('RGB')
        txt = item['instruction']
        if self.transform:
            src = self.transform(src)
            tgt = self.transform(tgt)
        return {'source': src, 'target': tgt, 'prompt': txt}

8. 小结与下一步

  • 这份 150 万条样本把「数据质量」而不是「模型大小」推到了台前;
  • 只用 30 k 步微调,就能让开源 FluxKontext 逼近 GPT-4o 的编辑水平;
  • 数据集、代码、模型全部公开,可立即复现。

下一步可以尝试:

  1. 把同样流程迁移到 视频帧编辑(Stable Video Diffusion 已在实验);
  2. LoRA/QLoRA 做更小规模的快速定制;
  3. 本地部署(RTX 4090 + 8-bit 量化)做商业级修图插件。

祝你玩得开心,遇到问题欢迎在 GitHub 提 issue,社区维护者很活跃。

退出移动版