新闻 | 方法论| 能力| 快速入门 | 微调 | 许可证| 引文
2024-11-03:添加复制演示和 API:
2024-10-28:我们发布新版本的推理代码,优化了内存使用和时间成本。您可以参考 docs/inference.md 了解详细信息。
2024年10月22日:?我们发布了 OmniGen 的代码。推理:docs/inference.md 训练:docs/fine-tuning.md
2024年10月22日:?我们发布了 OmniGen 的第一个版本。型号重量:Shitao/OmniGen-v1 HF 演示:?
OmniGen 是一个统一的图像生成模型,可以根据多模态提示生成各种图像。它的设计简单、灵活且易于使用。我们提供推理代码,以便大家可以探索 OmniGen 的更多功能。
现有的图像生成模型通常需要加载几个额外的网络模块(例如 ControlNet、IP-Adapter、Reference-Net 等)并执行额外的预处理步骤(例如人脸检测、姿态估计、裁剪等)才能生成令人满意的图像图像。然而,我们认为未来的图像生成范式应该更加简单和灵活,即通过任意多模态指令直接生成各种图像,而不需要额外的插件和操作,类似于GPT在语言生成中的工作原理。
由于资源有限,OmniGen仍有改进的空间。我们将继续对其进行优化,希望它能激发出更多通用的图像生成模型。您还可以轻松微调 OmniGen,而无需担心为特定任务设计网络;只需要准备好相应的数据,然后运行脚本即可。想象力不再受限;每个人都可以构建任何图像生成任务,也许我们可以实现非常有趣、美妙和有创意的事情。
如果您有任何疑问、想法或希望 OmniGen 完成的有趣任务,请随时与我们讨论:[email protected]、[email protected]、[email protected]。我们欢迎任何反馈意见来帮助我们改进模型。
您可以在我们的论文中查看详细信息。
OmniGen 是一个统一的图像生成模型,可用于执行各种任务,包括但不限于文本到图像生成、主题驱动生成、身份保留生成、图像编辑和图像调节生成。 OmniGen不需要额外的插件或操作,它可以根据文本提示自动识别输入图像中的特征(例如,所需的物体、人体姿势、深度映射)。我们在 inference.ipynb 中展示了一些示例。在 inference_demo.ipynb 中,我们展示了一个有趣的管道来生成和修改图像。
以下是 OmniGen 功能的图示:
您可以通过OmniGen灵活控制图像生成
引用表达式生成:您可以输入多个图像并使用简单的通用语言来引用这些图像中的对象。 OmniGen 可以自动识别每个图像中必要的对象,并根据它们生成新图像。不需要额外的操作,例如图像裁剪或人脸检测。
如果您对某些功能不完全满意或希望添加新功能,您可以尝试微调 OmniGen。
通过 Github 安装:
git 克隆 https://github.com/staoxiao/OmniGen.gitcd OmniGen pip install -e 。
以下是一些示例:
from OmniGen import OmniGenPipelinepipe = OmniGenPipeline.from_pretrained("Shitao/OmniGen-v1") # 注意:您的本地模型路径也是可以接受的,例如 'pipe = OmniGenPipeline.from_pretrained(your_local_model_path)',其中 your_local_model_path 中的所有文件应组织为 https://huggingface.co/Shitao/OmniGen-v1/tree/main # 注:如果原链接 https://huggingface.co/Shitao/OmniGen-v1/tree/main 下载时不稳定,建议使用此镜像链接 https://hf-mirror.com/Shitao/OmniGen -v1/tree/main 或者 https://hf-mirror.com/ 中的其他方式 ## Text to Imageimages = pipeline(prompt="一个穿着红衬衫的卷发男子正在喝茶。", height=1024,宽度=1024,guiding_scale=2.5,种子=0, )images[0].save("example_t2i.png") # 保存输出 PIL Image## 多模态转图像# 在提示符中,我们使用占位符来表示图像。图片占位符的格式应为<|image_*|># 您可以在input_images中添加多个图片。请确保每个图像都有其占位符。例如,对于列表 input_images [img1_path, img2_path],提示需要有两个占位符: <|image_1|>, <|image_2|>.images = pipeline (prompt="一个穿黑衬衫的男人正在读书。这个男人就是 <|image_1|> 中合适的人。",input_images=["./imgs/test_cases/two_man.jpg "],height=1024, width=1024,guidance_scale=2.5, img_guidance_scale=1.6,seed=0)images[0].save("example_ti2i.png") # 保存输出PIL图像
如果内存不足,可以设置offload_model=True
。如果输入多张图像时推理时间过长,可以减小max_input_image_size
。 有关所需的资源以及高效运行 OmniGen 的方法,请参阅 docs/inference.md#requiremented-resources。
更多图像生成示例可以参考inference.ipynb和inference_demo.ipynb
有关 inference 中参数的更多详细信息,请参阅 docs/inference.md。
即将推出。
我们在 Huggingface 中构建了一个在线演示。
对于本地 gradio 演示,您需要安装pip install gradio spaces
,然后可以运行:
pip install gradio spacepython app.py
我们提供了一个训练脚本train.py
来微调 OmniGen。这是一个关于 LoRA 微调的玩具示例:
加速启动 --num_processes=1 train.py --model_name_or_path 石涛/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 --最大输入长度限制 18000 --keep_raw_分辨率 --最大图像大小 1024 --gradient_accumulation_steps 1 --ckpt_每 10 个 --纪元 200 --log_every 1 --results_dir ./结果/toy_finetune_lora
请参阅 docs/fine-tuning.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} }