Omnigen V1
模型简介
OmniGen是一个支持多模态提示的统一图像生成模型,能够通过多模态指令直接生成多样化图像,无需插件和复杂操作。支持文本生成图像、主体驱动生成、身份保持生成、图像编辑等任务。
模型特点
多模态提示支持
支持通过文本和图像等多种模态提示生成图像,无需额外插件和复杂操作。
灵活控制
能够自动识别输入图像特征(如目标物体、人体姿态、深度图等),灵活控制图像生成。
易用性
提供简洁的推理代码和微调脚本,用户可以轻松扩展功能。
模型能力
文本生成图像
主体驱动生成
身份保持生成
图像编辑
使用案例
创意设计
人物形象生成
根据文本描述生成特定形象的人物图像。
生成高质量的人物图像,如穿红衬衫的卷发男士在喝茶。
图像编辑
根据输入图像和文本提示编辑图像内容。
如将图像中的人物替换为特定形象或修改其动作。
艺术创作
艺术风格转换
将输入图像转换为特定艺术风格。
生成具有艺术风格的图像。
🚀 OmniGen:统一图像生成
OmniGen是一个统一的图像生成模型,可根据多模态提示生成各种图像。它设计简单、灵活且易用,能直接通过任意多模态指令生成图像,无需额外插件和操作。
🚀 快速开始
使用OmniGen
通过Github安装:
git clone https://github.com/staoxiao/OmniGen.git
cd OmniGen
pip install -e .
你也可以创建一个新环境以避免冲突:
# 创建一个Python 3.10.12的conda环境(你也可以使用virtualenv)
conda create -n omnigen python=3.10.12
conda activate omnigen
# 根据你的CUDA版本安装pytorch,例如
pip install torch==2.3.1+cu118 torchvision --extra-index-url https://download.pytorch.org/whl/cu118
git clone https://github.com/staoxiao/OmniGen.git
cd OmniGen
pip install -e .
以下是一些使用示例:
from OmniGen import OmniGenPipeline
pipe = 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的结构组织
## 文本到图像
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") # 保存输出的PIL图像
## 多模态到图像
# 在提示中,我们使用占位符来表示图像。图像占位符的格式应为 <img><|image_*|></img>
# 你可以在input_images中添加多个图像。请确保每个图像都有其占位符。例如,对于列表input_images [img1_path, img2_path],提示中需要有两个占位符:<img><|image_1|></img>,<img><|image_2|></img>。
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,
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。
- 有关推理参数的更多详细信息,请参考 docs/inference.md。
使用Diffusers
即将推出。
Gradio演示
我们在 Huggingface 上构建了一个在线演示。
对于本地Gradio演示,你需要安装 pip install gradio spaces
,然后可以运行:
pip install gradio spaces
python app.py
使用Google Colab
要在Google Colab中使用,请使用以下命令:
!git clone https://github.com/staoxiao/OmniGen.git
%cd OmniGen
!pip install -e .
!pip install gradio spaces
!python app.py --share
✨ 主要特性
- 统一生成:能够根据多模态提示生成各种图像,涵盖文本到图像、主题驱动生成、身份保留生成、图像编辑和图像条件生成等多种任务。
- 无需额外插件:可自动根据文本提示识别输入图像中的特征,无需额外的插件或操作。
- 灵活可控:用户可以通过调整参数灵活控制图像生成过程。
- 易于微调:提供训练脚本,方便用户根据自己的需求对模型进行微调。
📦 安装指南
通过Github安装
git clone https://github.com/staoxiao/OmniGen.git
cd OmniGen
pip install -e .
创建新环境安装
# 创建一个Python 3.10.12的conda环境(你也可以使用virtualenv)
conda create -n omnigen python=3.10.12
conda activate omnigen
# 根据你的CUDA版本安装pytorch,例如
pip install torch==2.3.1+cu118 torchvision --extra-index-url https://download.pytorch.org/whl/cu118
git clone https://github.com/staoxiao/OmniGen.git
cd OmniGen
pip install -e .
💻 使用示例
基础用法
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") # 保存输出的PIL图像
高级用法
## 多模态到图像
# 在提示中,我们使用占位符来表示图像。图像占位符的格式应为 <img><|image_*|></img>
# 你可以在input_images中添加多个图像。请确保每个图像都有其占位符。例如,对于列表input_images [img1_path, img2_path],提示中需要有两个占位符:<img><|image_1|></img>,<img><|image_2|></img>。
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,
guidance_scale=2.5,
img_guidance_scale=1.6,
seed=0
)
images[0].save("example_ti2i.png") # 保存输出的PIL图像
📚 详细文档
推理代码
- 2024-10-28:我们发布了新版本的推理代码,优化了内存使用和时间成本。你可以参考 docs/inference.md 了解详细信息。
模型功能
OmniGen是一个统一的图像生成模型,可用于执行各种任务,包括但不限于文本到图像生成、主题驱动生成、身份保留生成、图像编辑和图像条件生成。我们在 inference.ipynb 中展示了一些示例,并在 inference_demo.ipynb 中展示了一个有趣的图像生成和修改流程。
微调
我们提供了一个训练脚本 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/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}
}
贡献者
感谢所有贡献者的努力,热烈欢迎新成员加入!
更多信息请参考我们的仓库:https://github.com/VectorSpaceLab/OmniGen
新闻 | 方法论 | 功能 | 快速开始 | 微调 | 许可证 | 引用
Clip Vit Large Patch14 336
基于Vision Transformer架构的大规模视觉语言预训练模型,支持图像与文本的跨模态理解
文本生成图像
Transformers

C
openai
5.9M
241
Fashion Clip
MIT
FashionCLIP是基于CLIP开发的视觉语言模型,专门针对时尚领域进行微调,能够生成通用产品表征。
文本生成图像
Transformers 英语

F
patrickjohncyh
3.8M
222
Gemma 3 1b It
Gemma 3是Google推出的轻量级先进开放模型系列,基于与Gemini模型相同的研究和技术构建。该模型是多模态模型,能够处理文本和图像输入并生成文本输出。
文本生成图像
Transformers

G
google
2.1M
347
Blip Vqa Base
Bsd-3-clause
BLIP是一个统一的视觉语言预训练框架,擅长视觉问答任务,通过语言-图像联合训练实现多模态理解与生成能力
文本生成图像
Transformers

B
Salesforce
1.9M
154
CLIP ViT H 14 Laion2b S32b B79k
MIT
基于OpenCLIP框架在LAION-2B英文数据集上训练的视觉-语言模型,支持零样本图像分类和跨模态检索任务
文本生成图像
Safetensors
C
laion
1.8M
368
CLIP ViT B 32 Laion2b S34b B79k
MIT
基于OpenCLIP框架在LAION-2B英语子集上训练的视觉-语言模型,支持零样本图像分类和跨模态检索
文本生成图像
Safetensors
C
laion
1.1M
112
Pickscore V1
PickScore v1 是一个针对文本生成图像的评分函数,可用于预测人类偏好、评估模型性能和图像排序等任务。
文本生成图像
Transformers

P
yuvalkirstain
1.1M
44
Owlv2 Base Patch16 Ensemble
Apache-2.0
OWLv2是一种零样本文本条件目标检测模型,可通过文本查询在图像中定位对象。
文本生成图像
Transformers

O
google
932.80k
99
Llama 3.2 11B Vision Instruct
Llama 3.2 是 Meta 发布的多语言多模态大型语言模型,支持图像文本到文本的转换任务,具备强大的跨模态理解能力。
文本生成图像
Transformers 支持多种语言

L
meta-llama
784.19k
1,424
Owlvit Base Patch32
Apache-2.0
OWL-ViT是一个零样本文本条件目标检测模型,可以通过文本查询搜索图像中的对象,无需特定类别的训练数据。
文本生成图像
Transformers

O
google
764.95k
129
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98