Skip to content

Commit 5383188

Browse files
patil-surajpatrickvonplatenanton-l
authored
StableDiffusionDepth2ImgPipeline (huggingface#1531)
* begin depth pipeline * add depth estimation model * fix prepare_depth_mask * add a comment about autocast * copied from, quality, cleanup * begin tests * handle tensors * norm image tensor * fix batch size * fix tests * fix enable_sequential_cpu_offload * fix save load * fix test_save_load_float16 * fix test_save_load_optional_components * fix test_float16_inference * fix test_cpu_offload_forward_pass * fix test_dict_tuple_outputs_equivalent * up * fix fast tests * fix test_stable_diffusion_img2img_multiple_init_images * fix few more fast tests * don't use device map for DPT * fix test_stable_diffusion_pipeline_with_sequential_cpu_offloading * accept external depth maps * prepare_depth_mask -> prepare_depth_map * fix file name * fix file name * quality * check transformers version * fix test names * use skipif * fix import * add docs * skip tests on mps * correct version * uP * Update docs/source/api/pipelines/stable_diffusion_2.mdx * fix fix-copies * fix fix-copies Co-authored-by: Patrick von Platen <[email protected]> Co-authored-by: anton- <[email protected]>
1 parent dbe0719 commit 5383188

File tree

15 files changed

+1234
-23
lines changed

15 files changed

+1234
-23
lines changed

docs/source/api/pipelines/stable_diffusion.mdx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,14 @@ If you want to use all possible use cases in a single `DiffusionPipeline` you ca
9797
- enable_xformers_memory_efficient_attention
9898
- disable_xformers_memory_efficient_attention
9999

100+
## StableDiffusionDepth2ImgPipeline
101+
[[autodoc]] StableDiffusionDepth2ImgPipeline
102+
- __call__
103+
- enable_attention_slicing
104+
- disable_attention_slicing
105+
- enable_xformers_memory_efficient_attention
106+
- disable_xformers_memory_efficient_attention
107+
100108
## StableDiffusionImageVariationPipeline
101109
[[autodoc]] StableDiffusionImageVariationPipeline
102110
- __call__

docs/source/api/pipelines/stable_diffusion_2.mdx

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ Note that the architecture is more or less identical to [Stable Diffusion 1](./a
3030
- *Text-to-Image (768x768 resolution)*: [stabilityai/stable-diffusion-2](https://huggingface.co/stabilityai/stable-diffusion-2) with [`StableDiffusionPipeline`]
3131
- *Image Inpainting (512x512 resolution)*: [stabilityai/stable-diffusion-2-inpainting](https://huggingface.co/stabilityai/stable-diffusion-2-inpainting) with [`StableDiffusionInpaintPipeline`]
3232
- *Image Upscaling (x4 resolution resolution)*: [stable-diffusion-x4-upscaler](https://huggingface.co/stabilityai/stable-diffusion-x4-upscaler) [`StableDiffusionUpscalePipeline`]
33+
- *Depth-to-Image (512x512 resolution)*: [stabilityai/stable-diffusion-2-depth](https://huggingface.co/stabilityai/stable-diffusion-2-depth) with [`StableDiffusionDepth2ImagePipeline`]
3334

3435
We recommend using the [`DPMSolverMultistepScheduler`] as it's currently the fastest scheduler there is.
3536

@@ -125,6 +126,37 @@ upscaled_image = pipeline(prompt=prompt, image=low_res_img).images[0]
125126
upscaled_image.save("upsampled_cat.png")
126127
```
127128

129+
- *Depth-Guided Text-to-Image*: [stabilityai/stable-diffusion-2-depth](https://huggingface.co/stabilityai/stable-diffusion-2-depth) [`StableDiffusionDepth2ImagePipeline`]
130+
131+
**Installation**
132+
133+
```bash
134+
!pip install -U git+https://github.com/huggingface/transformers.git
135+
!pip install diffusers[torch]
136+
```
137+
138+
**Example**
139+
140+
```python
141+
import torch
142+
import requests
143+
from PIL import Image
144+
145+
from diffusers import StableDiffusionDepth2ImgPipeline
146+
147+
pipe = StableDiffusionDepth2ImgPipeline.from_pretrained(
148+
"stabilityai/stable-diffusion-2-depth",
149+
torch_dtype=torch.float16,
150+
).to("cuda")
151+
152+
153+
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
154+
init_image = Image.open(requests.get(url, stream=True).raw)
155+
prompt = "two tigers"
156+
n_propmt = "bad, deformed, ugly, bad anotomy"
157+
image = pipe(prompt=prompt, image=init_image, negative_prompt=n_propmt, strength=0.7).images[0]
158+
```
159+
128160
### How to load and use different schedulers.
129161

130162
The stable diffusion pipeline uses [`DDIMScheduler`] scheduler by default. But `diffusers` provides many other schedulers that can be used with the stable diffusion pipeline such as [`PNDMScheduler`], [`LMSDiscreteScheduler`], [`EulerDiscreteScheduler`], [`EulerAncestralDiscreteScheduler`] etc.

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
"tensorboard",
108108
"torch>=1.4",
109109
"torchvision",
110-
"transformers>=4.21.0",
110+
"transformers>=4.25.1",
111111
]
112112

113113
# this is a lookup table with items like:

src/diffusers/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,24 @@
1212
is_scipy_available,
1313
is_torch_available,
1414
is_transformers_available,
15+
is_transformers_version,
1516
is_unidecode_available,
1617
logging,
1718
)
1819

1920

21+
# Make sure `transformers` is up to date
22+
if is_transformers_available():
23+
import transformers
24+
25+
if is_transformers_version("<", "4.25.1"):
26+
raise ImportError(
27+
f"`diffusers` requires transformers >= 4.25.1 to function correctly, but {transformers.__version__} was"
28+
" found in your environment. You can upgrade it with pip: `pip install transformers --upgrade`"
29+
)
30+
else:
31+
pass
32+
2033
try:
2134
if not is_torch_available():
2235
raise OptionalDependencyNotAvailable()
@@ -87,6 +100,7 @@
87100
CycleDiffusionPipeline,
88101
LDMTextToImagePipeline,
89102
PaintByExamplePipeline,
103+
StableDiffusionDepth2ImgPipeline,
90104
StableDiffusionImageVariationPipeline,
91105
StableDiffusionImg2ImgPipeline,
92106
StableDiffusionInpaintPipeline,

src/diffusers/dependency_versions_table.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@
3131
"tensorboard": "tensorboard",
3232
"torch": "torch>=1.4",
3333
"torchvision": "torchvision",
34-
"transformers": "transformers>=4.21.0",
34+
"transformers": "transformers>=4.25.1",
3535
}

src/diffusers/pipelines/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
from .paint_by_example import PaintByExamplePipeline
4545
from .stable_diffusion import (
4646
CycleDiffusionPipeline,
47+
StableDiffusionDepth2ImgPipeline,
4748
StableDiffusionImageVariationPipeline,
4849
StableDiffusionImg2ImgPipeline,
4950
StableDiffusionInpaintPipeline,

src/diffusers/pipelines/stable_diffusion/__init__.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,23 @@ class StableDiffusionPipelineOutput(BaseOutput):
4646
from .safety_checker import StableDiffusionSafetyChecker
4747

4848
try:
49-
if not (is_transformers_available() and is_torch_available() and is_transformers_version(">=", "4.25.0.dev0")):
49+
if not (is_transformers_available() and is_torch_available()):
5050
raise OptionalDependencyNotAvailable()
5151
except OptionalDependencyNotAvailable:
5252
from ...utils.dummy_torch_and_transformers_objects import StableDiffusionImageVariationPipeline
5353
else:
5454
from .pipeline_stable_diffusion_image_variation import StableDiffusionImageVariationPipeline
5555

56+
57+
try:
58+
if not (is_transformers_available() and is_torch_available() and is_transformers_version(">=", "4.26.0.dev0")):
59+
raise OptionalDependencyNotAvailable()
60+
except OptionalDependencyNotAvailable:
61+
from ...utils.dummy_torch_and_transformers_objects import StableDiffusionDepth2ImgPipeline
62+
else:
63+
from .pipeline_stable_diffusion_depth2img import StableDiffusionDepth2ImgPipeline
64+
65+
5666
try:
5767
if not (is_torch_available() and is_transformers_available() and is_k_diffusion_available()):
5868
raise OptionalDependencyNotAvailable()

0 commit comments

Comments
 (0)