🚀 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