🚀 OmniGen:统一图像生成
OmniGen 是一个统一的图像生成模型,能根据多模态提示生成多种图像。它简单、灵活且易用,为用户提供了探索图像生成更多可能性的工具。
🚀 快速开始
使用 OmniGen
通过 GitHub 安装(推荐):
git clone https://github.com/staoxiao/OmniGen.git
cd OmniGen
pip install -e .
或者通过 PyPI 安装:
pip install OmniGen
以下是一些使用示例:
基础用法
from OmniGen import OmniGenPipeline
pipe = OmniGenPipeline.from_pretrained("Shitao/OmniGen-v1")
images = pipe(
prompt="A curly-haired man in a red shirt is drinking tea.",
height=1024,
width=1024,
guidance_scale=2.5,
seed=0,
)
images[0].save("example_t2i.png")
高级用法
images = pipe(
prompt="A man in a black shirt is reading a book. The man is the right man in <img><|image_1|></img>.",
input_images=["./imgs/test_cases/two_man.jpg"],
height=1024,
width=1024,
separate_cfg_infer=False,
guidance_scale=3,
img_guidance_scale=1.6
)
images[0].save("example_ti2i.png")
关于推理参数的更多详细信息,请参考 docs/inference.md。更多图像生成示例可参考 inference.ipynb 和 inference_demo.ipynb。
使用 Diffusers
即将推出。
Gradio 演示
我们在 Huggingface 上构建了一个在线演示。
对于本地 Gradio 演示,你可以运行:
python app.py
✨ 主要特性
- 多模态图像生成:OmniGen 可以根据多模态提示生成各种图像,无需额外的插件或操作,能自动识别输入图像中的特征。
- 简单易用:设计简单、灵活,易于使用,提供推理代码,方便用户探索更多功能。
- 可微调:用户可以轻松对 OmniGen 进行微调,无需为特定任务设计网络,只需准备相应数据并运行脚本。
📚 详细文档
概述
OmniGen 是一个统一的图像生成模型,可根据多模态提示生成多种图像。它旨在简单、灵活且易用。我们提供了推理代码,以便每个人都能探索 OmniGen 的更多功能。
现有的图像生成模型通常需要加载多个额外的网络模块(如 ControlNet、IP - Adapter、Reference - Net 等)并执行额外的预处理步骤(如人脸检测、姿态估计、裁剪等)才能生成令人满意的图像。然而,我们认为未来的图像生成范式应该更加简单和灵活,即通过任意多模态指令直接生成各种图像,无需额外的插件和操作,类似于 GPT 在语言生成中的工作方式。
由于资源有限,OmniGen 仍有改进空间。我们将继续对其进行优化,并希望它能启发更多通用的图像生成模型。你也可以轻松地对 OmniGen 进行微调,无需担心为特定任务设计网络;你只需准备相应的数据,然后运行脚本。想象力不再受限;每个人都可以构建任何图像生成任务,也许我们可以实现非常有趣、精彩和有创意的事情。
如果你有任何问题、想法或希望 OmniGen 完成的有趣任务,请随时与我们讨论:2906698981@qq.com,wangyueze@tju.edu.cn,zhengliu1026@gmail.com。我们欢迎任何反馈,以帮助我们改进模型。
新闻
- 2024 - 10 - 22: :fire: 我们发布了 OmniGen 的代码。推理:docs/inference.md 训练:[docs/fine - tuning.md](https://github.com/VectorSpaceLab/OmniGen/blob/main/docs/fine - tuning.md)
- 2024 - 10 - 22: :fire: 我们发布了 OmniGen 的第一个版本。模型权重:[Shitao/OmniGen - v1](https://huggingface.co/Shitao/OmniGen - v1) HF 演示:🤗
方法
更多详细信息请参考我们的论文。
OmniGen 的能力

OmniGen 是一个统一的图像生成模型,可用于执行各种任务,包括但不限于文本到图像生成、主题驱动生成、身份保留生成、图像编辑和图像条件生成。OmniGen 不需要额外的插件或操作,它可以根据文本提示自动识别输入图像中的特征(如所需对象、人体姿态、深度映射)。
我们在 inference.ipynb 中展示了一些示例。在 inference_demo.ipynb 中,我们展示了一个有趣的图像生成和修改流程。
如果你对某些功能不完全满意或希望添加新功能,可以尝试微调 OmniGen。
微调
我们提供了一个训练脚本 train.py
来微调 OmniGen。
以下是一个 LoRA 微调的简单示例:
accelerate launch --num_processes=1 train.py \
--model_name_or_path Shitao/OmniGen-v1 \
--batch_size_per_device 2 \
--condition_dropout_prob 0.01 \
--lr 1e-3 \
--use_lora \
--lora_rank 8 \
--json_file ./toy_data/toy_subject_data.jsonl \
--image_path ./toy_data/images \
--max_input_length_limit 18000 \
--keep_raw_resolution \
--max_image_size 1024 \
--gradient_accumulation_steps 1 \
--ckpt_every 10 \
--epochs 200 \
--log_every 1 \
--results_dir ./results/toy_finetune_lora
更多详细信息(如全量微调)请参考 [docs/finetune.md](https://github.com/VectorSpaceLab/OmniGen/blob/main/docs/fine - tune.md)。
📄 许可证
本仓库遵循 MIT 许可证。
🔖 引用
如果你觉得这个仓库有用,请考虑给它一个星 ⭐ 并引用:
@article{xiao2024omnigen,
title={Omnigen: Unified image generation},
author={Xiao, Shitao and Wang, Yueze and Zhou, Junjie and Yuan, Huaying and Xing, Xingrun and Yan, Ruiran and Wang, Shuting and Huang, Tiejun and Liu, Zheng},
journal={arXiv preprint arXiv:2409.11340},
year={2024}
}
更多信息请参考我们的 GitHub 仓库:https://github.com/VectorSpaceLab/OmniGen