Skip to content
41 changes: 41 additions & 0 deletions docs/source/en/api/pipelines/z_image.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,41 @@ image = pipe(
image.save("zimage_img2img.png")
```

## Inpainting

Use [`ZImageInpaintPipeline`] to inpaint specific regions of an image based on a text prompt and mask.

```python
import torch
import numpy as np
from PIL import Image
from diffusers import ZImageInpaintPipeline
from diffusers.utils import load_image

pipe = ZImageInpaintPipeline.from_pretrained("Tongyi-MAI/Z-Image-Turbo", torch_dtype=torch.bfloat16)
pipe.to("cuda")

url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
init_image = load_image(url).resize((1024, 1024))

# Create a mask (white = inpaint, black = preserve)
mask = np.zeros((1024, 1024), dtype=np.uint8)
mask[256:768, 256:768] = 255 # Inpaint center region
mask_image = Image.fromarray(mask)

prompt = "A beautiful lake with mountains in the background"
image = pipe(
prompt,
image=init_image,
mask_image=mask_image,
strength=1.0,
num_inference_steps=9,
guidance_scale=0.0,
generator=torch.Generator("cuda").manual_seed(42),
).images[0]
image.save("zimage_inpaint.png")
```

## ZImagePipeline

[[autodoc]] ZImagePipeline
Expand All @@ -64,3 +99,9 @@ image.save("zimage_img2img.png")
[[autodoc]] ZImageImg2ImgPipeline
- all
- __call__

## ZImageInpaintPipeline

[[autodoc]] ZImageInpaintPipeline
- all
- __call__
2 changes: 2 additions & 0 deletions src/diffusers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -691,6 +691,7 @@
"ZImageControlNetInpaintPipeline",
"ZImageControlNetPipeline",
"ZImageImg2ImgPipeline",
"ZImageInpaintPipeline",
"ZImageOmniPipeline",
"ZImagePipeline",
]
Expand Down Expand Up @@ -1418,6 +1419,7 @@
ZImageControlNetInpaintPipeline,
ZImageControlNetPipeline,
ZImageImg2ImgPipeline,
ZImageInpaintPipeline,
ZImageOmniPipeline,
ZImagePipeline,
)
Expand Down
8 changes: 5 additions & 3 deletions src/diffusers/pipelines/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -410,11 +410,12 @@
"Kandinsky5I2IPipeline",
]
_import_structure["z_image"] = [
"ZImageImg2ImgPipeline",
"ZImagePipeline",
"ZImageControlNetPipeline",
"ZImageControlNetInpaintPipeline",
"ZImageControlNetPipeline",
"ZImageImg2ImgPipeline",
"ZImageInpaintPipeline",
"ZImageOmniPipeline",
"ZImagePipeline",
]
_import_structure["skyreels_v2"] = [
"SkyReelsV2DiffusionForcingPipeline",
Expand Down Expand Up @@ -870,6 +871,7 @@
ZImageControlNetInpaintPipeline,
ZImageControlNetPipeline,
ZImageImg2ImgPipeline,
ZImageInpaintPipeline,
ZImageOmniPipeline,
ZImagePipeline,
)
Expand Down
2 changes: 2 additions & 0 deletions src/diffusers/pipelines/auto_pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@
ZImageControlNetInpaintPipeline,
ZImageControlNetPipeline,
ZImageImg2ImgPipeline,
ZImageInpaintPipeline,
ZImageOmniPipeline,
ZImagePipeline,
)
Expand Down Expand Up @@ -235,6 +236,7 @@
("stable-diffusion-pag", StableDiffusionPAGInpaintPipeline),
("qwenimage", QwenImageInpaintPipeline),
("qwenimage-edit", QwenImageEditInpaintPipeline),
("z-image", ZImageInpaintPipeline),
]
)

Expand Down
2 changes: 2 additions & 0 deletions src/diffusers/pipelines/z_image/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
_import_structure["pipeline_z_image_controlnet"] = ["ZImageControlNetPipeline"]
_import_structure["pipeline_z_image_controlnet_inpaint"] = ["ZImageControlNetInpaintPipeline"]
_import_structure["pipeline_z_image_img2img"] = ["ZImageImg2ImgPipeline"]
_import_structure["pipeline_z_image_inpaint"] = ["ZImageInpaintPipeline"]
_import_structure["pipeline_z_image_omni"] = ["ZImageOmniPipeline"]


Expand All @@ -42,6 +43,7 @@
from .pipeline_z_image_controlnet import ZImageControlNetPipeline
from .pipeline_z_image_controlnet_inpaint import ZImageControlNetInpaintPipeline
from .pipeline_z_image_img2img import ZImageImg2ImgPipeline
from .pipeline_z_image_inpaint import ZImageInpaintPipeline
from .pipeline_z_image_omni import ZImageOmniPipeline
else:
import sys
Expand Down
2 changes: 1 addition & 1 deletion src/diffusers/pipelines/z_image/pipeline_z_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ def guidance_scale(self):

@property
def do_classifier_free_guidance(self):
return self._guidance_scale > 1
return self._guidance_scale > 0

@property
def joint_attention_kwargs(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ def guidance_scale(self):

@property
def do_classifier_free_guidance(self):
return self._guidance_scale > 1
return self._guidance_scale > 0
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JerryWu-code
is this change ok? see more context here #12905


@property
def joint_attention_kwargs(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ def guidance_scale(self):

@property
def do_classifier_free_guidance(self):
return self._guidance_scale > 1
return self._guidance_scale > 0

@property
def joint_attention_kwargs(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ def guidance_scale(self):

@property
def do_classifier_free_guidance(self):
return self._guidance_scale > 1
return self._guidance_scale > 0

@property
def joint_attention_kwargs(self):
Expand Down
Loading