language: | |
- en | |
pipeline_tag: unconditional-image-generation | |
tags: | |
- Diffusion Models | |
- Stable Diffusion | |
- Perturbed-Attention Guidance | |
- PAG | |
# Perturbed-Attention Guidance | |
![image/jpeg](https://cdn-uploads.huggingface.co/production/uploads/6601282b569b30694e67b886/27Lmuol8anwd6L6BLzyWf.jpeg) | |
[Project](https://ku-cvlab.github.io/Perturbed-Attention-Guidance/) / [arXiv](https://arxiv.org/abs/2403.17377) / [GitHub](https://github.com/KU-CVLAB/Perturbed-Attention-Guidance) | |
This repository is based on [Diffusers](https://huggingface.co/docs/diffusers/index). The pipeline is a modification of StableDiffusionPipeline to support Perturbed-Attention Guidance (PAG). | |
## Quickstart | |
Loading Custom Piepline: | |
``` | |
from diffusers import StableDiffusionPipeline | |
pipe = StableDiffusionPipeline.from_pretrained( | |
"runwayml/stable-diffusion-v1-5", | |
custom_pipeline="hyoungwoncho/sd_perturbed_attention_guidance", | |
torch_dtype=torch.float16 | |
) | |
device="cuda" | |
pipe = pipe.to(device) | |
``` | |
Sampling with PAG: | |
``` | |
output = pipe( | |
prompts, | |
width=512, | |
height=512, | |
num_inference_steps=50, | |
guidance_scale=0.0, | |
pag_scale=5.0, | |
pag_applied_layers_index=['m0'] | |
).images | |
``` | |
Sampling with PAG and CFG: | |
``` | |
output = pipe( | |
prompts, | |
width=512, | |
height=512, | |
num_inference_steps=50, | |
guidance_scale=4.0, | |
pag_scale=3.0, | |
pag_applied_layers_index=['m0'] | |
).images | |
``` | |
## Parameters | |
guidance_scale : gudiance scale of CFG (ex: 7.5) | |
pag_scale : gudiance scale of PAG (ex: 5.0) | |
pag_applied_layers_index : index of the layer to apply perturbation (ex: ['m0']) | |
## Stable Diffusion Demo | |
To join a demo of PAG on Stable Diffusion, run [sd_pag_demo.ipynb](https://huggingface.co/hyoungwoncho/sd_perturbed_attention_guidance/blob/main/sd_pag_demo.ipynb). | |