SEED-X
我们推出了SEED-X,这是一个统一且多功能的基础模型。经过不同的指令微调后,它可以在现实世界中充当各种多模态AI助手,通过统一多粒度理解和生成能力,能够满足用户的各种需求。
所有模型、指令微调代码和推理代码已全部发布!
新闻
2024-07-12 :hugs: 我们发布了SEED-Story,这是一个基于预训练SEED-X(早期版本)的能够生成多模态长故事的MLLM。我们还发布了StoryStream,这是一个专为训练和评估多模态故事生成而设计的大规模数据集。
2024-05-21 :hugs: 通用指令微调模型SEED-X-I的新在线演示已上线,推理速度比在huggingface上使用Zero GPU的演示更快。
2024-05-03 :hugs: 我们发布了370万张图像编辑数据SEED-Data-Edit,其中包括:(1)通过自动流程生成的大规模高质量编辑数据,(2)从互联网抓取的真实场景数据,更准确地反映了用户的图像编辑意图,(3)由Photoshop专家注释的高精度多轮编辑数据。
2024-05-02 :hugs: 我们发布了从预训练基础模型SEED-X进行指令微调的训练代码。我们的代码库支持(a)使用deepspeed zero-2和zero-3进行大规模多节点训练,(b)高效的多个训练数据管道。据我们所知,我们的SEED系列是首个开源的统一多模态理解和生成的MLLM训练工作。
2024-04-27 :hugs: 我们发布了模型,包括预训练基础模型SEED-X、通用指令微调模型SEED-X-I、编辑模型SEED-X-Edit,以及我们的解码器,可以从ViT特征生成真实图像(无条件或有条件图像)。
2024-04-22 :hugs: 我们发布了通用指令微调模型SEED-X-I的在线gradio演示。SEED-X-I可以遵循多模态指令(包括动态分辨率的图像),并在多轮对话中用图像、文本和边界框进行响应。SEED-X-I不支持图像操作。如果您想体验用于高精度图像编辑的SEED-X-Edit,推理代码和模型将很快发布。
待办事项
- 发布多模态基础模型SEED-X。
- 发布用于高精度图像编辑的指令微调模型SEED-X-Edit。
- 发布370万张内部图像编辑数据。
- 发布指令微调的训练代码。
简介
介绍的SEED-X是一个统一且多功能的基础模型,经过不同的指令微调后,可以在现实世界中充当各种多模态AI助手,通过统一多粒度理解和生成能力,能够满足用户的各种需求。我们的指令微调模型可以充当交互式设计师,无需描述性标题即可生成图像,同时展示创意意图,并根据用户意图展示修改后的图像可视化效果。它们可以充当知识渊博的个人助手,理解任意大小的图像,并在多轮对话中提供相关建议。
SEED-X能够接受多张图像作为输入,遵循其美学视觉,将平庸(甚至是低分辨率和低质量)的照片转变为更令人印象深刻的作品(在上面的例子中,一些输入图像的分辨率低于200)。欢迎在演示中亲自尝试(将"强制图像生成"设置为True)。
SEED-Data-Edit
SEED-Data-Edit中指令引导图像编辑的数据示例,包括:(1)通过自动流程生成的高质量编辑数据(第一行),(2)从互联网抓取的真实场景数据,更准确地反映用户图像编辑意图(第二行),(3)由Photoshop专家注释的高精度多轮编辑数据(第三行)。
SEED-Story
介绍的SEED-Story由SEED-X驱动,能够根据用户提供的图像和文本作为故事开头生成多模态长故事。生成的故事包含丰富连贯的叙事文本,以及在角色和风格上保持一致的图像。尽管我们在训练时最多只使用10个序列,但故事可以跨越多达25个多模态序列。
使用方法
依赖项
- Python >= 3.8(推荐使用Anaconda)
- PyTorch >=2.0.1
- NVIDIA GPU + CUDA
安装
克隆仓库并安装依赖包
git clone https://github.com/AILab-CVC/SEED-X.git
cd SEED-X
pip install -r requirements.txt
模型权重
我们在SEED-X-17B Hugging Face发布了预训练的解码器、预训练基础模型SEED-X、通用指令微调模型SEED-X-I和编辑模型SEED-X-Edit。
请下载检查点并将它们保存在./pretrained
文件夹下。例如,./pretrained/seed_x
。
您还需要下载stable-diffusion-xl-base-1.0和Qwen-VL-Chat,并将它们保存在./pretrained
文件夹下。请使用以下脚本提取Qwen-VL-Chat中视觉编码器的权重。
python3 src/tools/reload_qwen_vit.py
推理
使用SEED-X解码器进行推理
# 使用ViT图像特征进行图像重建
python3 src/inference/eval_seed_x_detokenizer.py
# 使用ViT图像特征和条件图像进行图像重建
python3 src/inference/eval_seed_x_detokenizer_with_condition.py
使用预训练模型SEED-X进行推理
# 用于图像理解和检测
python3 src/inference/eval_img2text_seed_x.py
# 用于图像生成
python3 src/inference/eval_text2img_seed_x.py
使用通用指令微调模型SEED-X-I进行推理
# 用于图像理解和检测
python3 src/inference/eval_img2text_seed_x_i.py
# 用于图像生成
python3 src/inference/eval_text2img_seed_x_i.py
使用编辑模型SEED-X-Edit进行推理
# 用于图像编辑
python3 src/inference/eval_img2edit_seed_x_edit.py
指令微调
训练
- 准备预训练模型,包括预训练基础模型SEED-X和Qwen-VL-Chat的视觉编码器(参见模型权重)。
- 准备指令微调数据。例如,对于"build_llava_jsonl_datapipes"数据加载器,每个文件夹存储多个jsonl文件,每个jsonl文件包含1万条内容,内容示例如下:
{"image": "coco/train2017/000000033471.jpg", "data": ["图像中公交车的颜色是什么?", "图像中的公交车是白色和红色的。", "在公交车后部可以看到什么特征?", "公交车后部有一个广告。", "公交车是在街道上行驶还是靠边停靠?", "公交车正在街道上行驶,街道上挤满了人和其他车辆。"]}
对于"build_caption_datapipes_with_pixels"数据加载器,每个文件夹存储多个.tar文件,并以webdataset形式读取图像-文本对。
对于"build_single_turn_edit_datapipes"数据加载器,每个文件夹存储多个jsonl文件,每个jsonl文件包含1万条内容,内容示例如下:
{"source_image": "source_images/f6f4d0669694df5b.jpg", "target_image": "target_images/f6f4d0669694df5b.jpg", "instruction": "擦除停在Roebuck大楼前面的汽车。"}
- 运行以下脚本。
# 用于多模态理解和生成的通用指令微调
sh scripts/train_seed_x_sft_comp_gen.sh
# 用于训练语言引导的图像编辑
sh scripts/train_seed_x_sft_edit.sh
使用您自己的模型进行推理
- 使用以下脚本获取"pytorch_model.bin"。
cd train_output/seed_x_sft_comp_gen/checkpoint-xxxx
python3 zero_to_fp32.py . pytorch_model.bin
- 在"configs/clm_models/agent_seed_x.yaml"中将"pretrained_model_path"更改为新的检查点。例如,
pretrained_model_path: train_output/seed_x_sft_comp_gen/checkpoint-4000/pytorch_model.bin
- 更改推理脚本中的"llm_cfg_path"和"agent_cfg_path"(参见下文),这将自动将训练好的LoRA权重加载到预训练模型SEED-X上。
llm_cfg_path = 'configs/clm_models/llm_seed_x_lora.yaml'
agent_cfg_path = 'configs/clm_models/agent_seed_x.yaml'
- 运行推理脚本,
# 用于图像理解
python3 src/inference/eval_img2text_seed_x_i.py
# 用于图像生成
python3 src/inference/eval_text2img_seed_x_i.py
# 用于图像编辑
python3 src/inference/eval_img2edit_seed_x_edit.py
引用
如果您觉得这项工作有帮助,请考虑引用:
@article{ge2024seed,
title={SEED-X: Multimodal Models with Unified Multi-granularity Comprehension an