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
24
25
26
27
28
29
<!--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).

<Tip>

Chroma can use all the same optimizations as Flux.

</Tip>

Dhruv Nair's avatar
Dhruv Nair committed
30
## Inference
Edna's avatar
Edna committed
31

Dhruv Nair's avatar
Dhruv Nair committed
32
33
34
35
36
37
38
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
39
pipe.enable_model_cpu_offload()
Dhruv Nair's avatar
Dhruv Nair committed
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

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
60
61
62
63
64
65
66
67
68

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
69
model_id = "lodestones/Chroma"
Edna's avatar
Edna committed
70
71
dtype = torch.bfloat16

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

Dhruv Nair's avatar
Dhruv Nair committed
74
pipe = ChromaPipeline.from_pretrained(model_id, transformer=transformer, torch_dtype=dtype)
Edna's avatar
Edna committed
75
76
pipe.enable_model_cpu_offload()

Dhruv Nair's avatar
Dhruv Nair committed
77
78
79
80
81
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
82
image = pipe(
Dhruv Nair's avatar
Dhruv Nair committed
83
84
85
86
87
    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
88
89
).images[0]

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

## ChromaPipeline

[[autodoc]] ChromaPipeline
	- all
	- __call__
Dhruv Nair's avatar
Dhruv Nair committed
98
99
100
101
102
103

## ChromaImg2ImgPipeline

[[autodoc]] ChromaImg2ImgPipeline
	- all
	- __call__