Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add OmniGen #10148

Merged
merged 58 commits into from
Feb 11, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
36eee40
OmniGen model.py
staoxiao Nov 30, 2024
bbe2b98
update OmniGenTransformerModel
staoxiao Nov 30, 2024
b839590
omnigen pipeline
staoxiao Dec 2, 2024
0d04194
omnigen pipeline
staoxiao Dec 2, 2024
85abe5e
update omnigen_pipeline
staoxiao Dec 3, 2024
db92c69
test case for omnigen
staoxiao Dec 3, 2024
308766c
update omnigenpipeline
staoxiao Dec 4, 2024
4c5e8c5
update docs
staoxiao Dec 5, 2024
d9f80fc
update docs
staoxiao Dec 5, 2024
c78d1f4
offload_transformer
staoxiao Dec 6, 2024
236f14b
enable_transformer_block_cpu_offload
staoxiao Dec 8, 2024
6b52547
update docs
staoxiao Dec 8, 2024
4fef9c8
reformat
staoxiao Dec 8, 2024
f2fc182
reformat
staoxiao Dec 8, 2024
5f3148d
reformat
staoxiao Dec 8, 2024
cdd500e
Merge pull request #1 from huggingface/main
staoxiao Dec 8, 2024
178d377
update docs
staoxiao Dec 8, 2024
08c05f9
update docs
staoxiao Dec 8, 2024
286990d
make style
staoxiao Dec 8, 2024
3bb092b
make style
staoxiao Dec 8, 2024
5925cb9
Update docs/source/en/api/models/omnigen_transformer.md
staoxiao Dec 10, 2024
56aa821
Update docs/source/en/using-diffusers/omnigen.md
staoxiao Dec 10, 2024
1e33ca8
Update docs/source/en/using-diffusers/omnigen.md
staoxiao Dec 10, 2024
c81a84d
update docs
staoxiao Dec 10, 2024
3867830
revert changes to examples/
a-r-r-o-w Dec 11, 2024
c8b8173
Merge branch 'main' into main
a-r-r-o-w Dec 11, 2024
af0effa
update OmniGen2DModel
staoxiao Dec 19, 2024
a0cd392
make style
staoxiao Dec 19, 2024
48fd390
update test cases
staoxiao Dec 19, 2024
78431e1
Update docs/source/en/api/pipelines/omnigen.md
staoxiao Dec 20, 2024
d99a9f8
Update docs/source/en/using-diffusers/omnigen.md
staoxiao Dec 20, 2024
61d802a
Update docs/source/en/using-diffusers/omnigen.md
staoxiao Dec 20, 2024
8d6a35e
Update docs/source/en/using-diffusers/omnigen.md
staoxiao Dec 20, 2024
f8e645b
Update docs/source/en/using-diffusers/omnigen.md
staoxiao Dec 20, 2024
85cdeb9
Update docs/source/en/using-diffusers/omnigen.md
staoxiao Dec 20, 2024
3565837
update docs
staoxiao Dec 20, 2024
0ccca15
typo
staoxiao Dec 29, 2024
d014f95
Update src/diffusers/models/embeddings.py
staoxiao Feb 8, 2025
753daec
Update src/diffusers/models/attention.py
staoxiao Feb 8, 2025
3d30a2a
Update src/diffusers/models/transformers/transformer_omnigen.py
staoxiao Feb 8, 2025
9d1580a
Update src/diffusers/models/transformers/transformer_omnigen.py
staoxiao Feb 8, 2025
6a58746
Update src/diffusers/models/transformers/transformer_omnigen.py
staoxiao Feb 8, 2025
2b464c8
Update src/diffusers/pipelines/omnigen/pipeline_omnigen.py
staoxiao Feb 8, 2025
7888119
Update src/diffusers/pipelines/omnigen/pipeline_omnigen.py
staoxiao Feb 8, 2025
39148c3
Update src/diffusers/pipelines/omnigen/pipeline_omnigen.py
staoxiao Feb 8, 2025
52a6f9e
Update tests/pipelines/omnigen/test_pipeline_omnigen.py
staoxiao Feb 8, 2025
aeea57a
Update tests/pipelines/omnigen/test_pipeline_omnigen.py
staoxiao Feb 8, 2025
6b1177b
Update src/diffusers/pipelines/omnigen/pipeline_omnigen.py
staoxiao Feb 8, 2025
7003a80
Update src/diffusers/pipelines/omnigen/pipeline_omnigen.py
staoxiao Feb 8, 2025
792c3e6
Update src/diffusers/pipelines/omnigen/pipeline_omnigen.py
staoxiao Feb 8, 2025
b0c6267
Merge pull request #2 from huggingface/main
staoxiao Feb 8, 2025
f5e3f0b
consistent attention processor
staoxiao Feb 8, 2025
3541ab8
updata
staoxiao Feb 8, 2025
4e9850a
update
staoxiao Feb 8, 2025
f91cfcf
check_inputs
staoxiao Feb 9, 2025
711dded
make style
staoxiao Feb 11, 2025
565e51c
update testpipeline
staoxiao Feb 11, 2025
29ad6ae
update testpipeline
staoxiao Feb 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/source/en/_toctree.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@
title: Kandinsky
- local: using-diffusers/ip_adapter
title: IP-Adapter
- local: using-diffusers/omnigen
title: OmniGen
- local: using-diffusers/pag
title: PAG
- local: using-diffusers/controlnet
Expand Down Expand Up @@ -292,6 +294,8 @@
title: LTXVideoTransformer3DModel
- local: api/models/mochi_transformer3d
title: MochiTransformer3DModel
- local: api/models/omnigen_transformer
title: OmniGenTransformer2DModel
- local: api/models/pixart_transformer2d
title: PixArtTransformer2DModel
- local: api/models/prior_transformer
Expand Down Expand Up @@ -448,6 +452,8 @@
title: MultiDiffusion
- local: api/pipelines/musicldm
title: MusicLDM
- local: api/pipelines/omnigen
title: OmniGen
- local: api/pipelines/pag
title: PAG
- local: api/pipelines/paint_by_example
Expand Down
19 changes: 19 additions & 0 deletions docs/source/en/api/models/omnigen_transformer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!--Copyright 2024 The HuggingFace Team. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
-->

# OmniGenTransformer2DModel

A Transformer model that accepts multimodal instructions to generate images for [OmniGen](https://github.com/VectorSpaceLab/OmniGen/).

## OmniGenTransformer2DModel

[[autodoc]] OmniGenTransformer2DModel
106 changes: 106 additions & 0 deletions docs/source/en/api/pipelines/omnigen.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
<!--Copyright 2024 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-->

# OmniGen

[OmniGen: Unified Image Generation](https://arxiv.org/pdf/2409.11340) from BAAI, by Shitao Xiao, Yueze Wang, Junjie Zhou, Huaying Yuan, Xingrun Xing, Ruiran Yan, Chaofan Li, Shuting Wang, Tiejun Huang, Zheng Liu.

The abstract from the paper is:

*The emergence of Large Language Models (LLMs) has unified language
generation tasks and revolutionized human-machine interaction.
However, in the realm of image generation, a unified model capable of handling various tasks
within a single framework remains largely unexplored. In
this work, we introduce OmniGen, a new diffusion model
for unified image generation. OmniGen is characterized
by the following features: 1) Unification: OmniGen not
only demonstrates text-to-image generation capabilities but
also inherently supports various downstream tasks, such
as image editing, subject-driven generation, and visual conditional generation. 2) Simplicity: The architecture of
OmniGen is highly simplified, eliminating the need for additional plugins. Moreover, compared to existing diffusion
models, it is more user-friendly and can complete complex
tasks end-to-end through instructions without the need for
extra intermediate steps, greatly simplifying the image generation workflow. 3) Knowledge Transfer: Benefit from
learning in a unified format, OmniGen effectively transfers
knowledge across different tasks, manages unseen tasks and
domains, and exhibits novel capabilities. We also explore
the model’s reasoning capabilities and potential applications of the chain-of-thought mechanism.
This work represents the first attempt at a general-purpose image generation model,
and we will release our resources at https:
//github.com/VectorSpaceLab/OmniGen to foster future advancements.*

<Tip>

Make sure to check out the Schedulers [guide](../../using-diffusers/schedulers.md) to learn how to explore the tradeoff between scheduler speed and quality, and see the [reuse components across pipelines](../../using-diffusers/loading.md#reuse-a-pipeline) section to learn how to efficiently load the same components into multiple pipelines.

</Tip>

This pipeline was contributed by [staoxiao](https://github.com/staoxiao). The original codebase can be found [here](https://github.com/VectorSpaceLab/OmniGen). The original weights can be found under [hf.co/shitao](https://huggingface.co/Shitao/OmniGen-v1).


## Inference

First, load the pipeline:

```python
import torch
from diffusers import OmniGenPipeline
pipe = OmniGenPipeline.from_pretrained(
"Shitao/OmniGen-v1-diffusers",
torch_dtype=torch.bfloat16
)
pipe.to("cuda")
```

For text-to-image, pass a text prompt. By default, OmniGen generates a 1024x1024 image.
You can try setting the `height` and `width` parameters to generate images with different size.

```py
prompt = "Realistic photo. A young woman sits on a sofa, holding a book and facing the camera. She wears delicate silver hoop earrings adorned with tiny, sparkling diamonds that catch the light, with her long chestnut hair cascading over her shoulders. Her eyes are focused and gentle, framed by long, dark lashes. She is dressed in a cozy cream sweater, which complements her warm, inviting smile. Behind her, there is a table with a cup of water in a sleek, minimalist blue mug. The background is a serene indoor setting with soft natural light filtering through a window, adorned with tasteful art and flowers, creating a cozy and peaceful ambiance. 4K, HD."
image = pipe(
prompt=prompt,
height=1024,
width=1024,
guidance_scale=3,
generator=torch.Generator(device="cpu").manual_seed(111),
).images[0]
image
```

OmniGen supports multimodal inputs.
When the input includes an image, you need to add a placeholder `<img><|image_1|></img>` in the text prompt to represent the image.
It is recommended to enable `use_input_image_size_as_output` to keep the edited image the same size as the original image.

```py
prompt="<img><|image_1|></img> Remove the woman's earrings. Replace the mug with a clear glass filled with sparkling iced cola."
input_images=[load_image("https://raw.githubusercontent.com/VectorSpaceLab/OmniGen/main/imgs/docs_img/t2i_woman_with_book.png")]
image = pipe(
prompt=prompt,
input_images=input_images,
guidance_scale=2,
img_guidance_scale=1.6,
use_input_image_size_as_output=True,
generator=torch.Generator(device="cpu").manual_seed(222)).images[0]
image
```


## OmniGenPipeline

[[autodoc]] OmniGenPipeline
- all
- __call__


Loading
Loading