chroma.md 3.89 KB
Newer Older
Edna's avatar
Edna committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!--Copyright 2025 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.
-->

# Chroma

<div class="flex flex-wrap space-x-1">
  <img alt="LoRA" src="https://img.shields.io/badge/LoRA-d8b4fe?style=flat"/>
  <img alt="MPS" src="https://img.shields.io/badge/MPS-000000?style=flat&logo=apple&logoColor=white%22">
</div>

Chroma is a text to image generation model based on Flux.

Original model checkpoints for Chroma can be found [here](https://huggingface.co/lodestones/Chroma).

Steven Liu's avatar
Steven Liu committed
24
25
> [!TIP]
> Chroma can use all the same optimizations as Flux.
Edna's avatar
Edna committed
26

Dhruv Nair's avatar
Dhruv Nair committed
27
## Inference
Edna's avatar
Edna committed
28

Dhruv Nair's avatar
Dhruv Nair committed
29
30
31
32
33
34
35
The Diffusers version of Chroma is based on the [`unlocked-v37`](https://huggingface.co/lodestones/Chroma/blob/main/chroma-unlocked-v37.safetensors) version of the original model, which is available in the [Chroma repository](https://huggingface.co/lodestones/Chroma).

```python
import torch
from diffusers import ChromaPipeline

pipe = ChromaPipeline.from_pretrained("lodestones/Chroma", torch_dtype=torch.bfloat16)
shm4r7's avatar
shm4r7 committed
36
pipe.enable_model_cpu_offload()
Dhruv Nair's avatar
Dhruv Nair committed
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

prompt = [
    "A high-fashion close-up portrait of a blonde woman in clear sunglasses. The image uses a bold teal and red color split for dramatic lighting. The background is a simple teal-green. The photo is sharp and well-composed, and is designed for viewing with anaglyph 3D glasses for optimal effect. It looks professionally done."
]
negative_prompt =  ["low quality, ugly, unfinished, out of focus, deformed, disfigure, blurry, smudged, restricted palette, flat colors"]

image = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    generator=torch.Generator("cpu").manual_seed(433),
    num_inference_steps=40,
    guidance_scale=3.0,
    num_images_per_prompt=1,
).images[0]
image.save("chroma.png")
```

## Loading from a single file

To use updated model checkpoints that are not in the Diffusers format, you can use the `ChromaTransformer2DModel` class to load the model from a single file in the original format. This is also useful when trying to load finetunes or quantized versions of the models that have been published by the community.
Edna's avatar
Edna committed
57
58
59
60
61
62
63
64
65

The following example demonstrates how to run Chroma from a single file.

Then run the following example

```python
import torch
from diffusers import ChromaTransformer2DModel, ChromaPipeline

Dhruv Nair's avatar
Dhruv Nair committed
66
model_id = "lodestones/Chroma"
Edna's avatar
Edna committed
67
68
dtype = torch.bfloat16

Dhruv Nair's avatar
Dhruv Nair committed
69
transformer = ChromaTransformer2DModel.from_single_file("https://huggingface.co/lodestones/Chroma/blob/main/chroma-unlocked-v37.safetensors", torch_dtype=dtype)
Edna's avatar
Edna committed
70

Dhruv Nair's avatar
Dhruv Nair committed
71
pipe = ChromaPipeline.from_pretrained(model_id, transformer=transformer, torch_dtype=dtype)
Edna's avatar
Edna committed
72
73
pipe.enable_model_cpu_offload()

Dhruv Nair's avatar
Dhruv Nair committed
74
75
76
77
78
prompt = [
    "A high-fashion close-up portrait of a blonde woman in clear sunglasses. The image uses a bold teal and red color split for dramatic lighting. The background is a simple teal-green. The photo is sharp and well-composed, and is designed for viewing with anaglyph 3D glasses for optimal effect. It looks professionally done."
]
negative_prompt =  ["low quality, ugly, unfinished, out of focus, deformed, disfigure, blurry, smudged, restricted palette, flat colors"]

Edna's avatar
Edna committed
79
image = pipe(
Dhruv Nair's avatar
Dhruv Nair committed
80
81
82
83
84
    prompt=prompt,
    negative_prompt=negative_prompt,
    generator=torch.Generator("cpu").manual_seed(433),
    num_inference_steps=40,
    guidance_scale=3.0,
Edna's avatar
Edna committed
85
86
).images[0]

Dhruv Nair's avatar
Dhruv Nair committed
87
image.save("chroma-single-file.png")
Edna's avatar
Edna committed
88
89
90
91
92
93
94
```

## ChromaPipeline

[[autodoc]] ChromaPipeline
	- all
	- __call__
Dhruv Nair's avatar
Dhruv Nair committed
95
96
97
98
99
100

## ChromaImg2ImgPipeline

[[autodoc]] ChromaImg2ImgPipeline
	- all
	- __call__