新聞 | 方法論| 能力| 快速入門 | 微調 | 許可證| 引文
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} }