--- license: openrail++ base_model: stabilityai/stable-diffusion-xl-base-1.0 tags: - stable-diffusion-xl - stable-diffusion-xl-diffusers - text-to-image - diffusers - instruct-pix2pix inference: false datasets: - timbrooks/instructpix2pix-clip-filtered --- # SDXL InstructPix2Pix (768768) Instruction fine-tuning of [Stable Diffusion XL (SDXL)](https://hf.co/papers/2307.01952) à la [InstructPix2Pix](https://huggingface.co/papers/2211.09800). Some results below: **Edit instruction**: *"Turn sky into a cloudy one"* ![](https://huggingface.co/datasets/sayakpaul/sample-datasets/resolve/main/sdxl-instructpix2pix-release/0_0_mountain_gs%403.0_igs%401.5_steps%4050.png) **Edit instruction**: *"Make it a picasso painting"* ![](https://huggingface.co/datasets/sayakpaul/sample-datasets/resolve/main/sdxl-instructpix2pix-release/1_1_cyborg_gs%403.0_igs%401.5_steps%4050.png) **Edit instruction**: *"make the person older"* ![](https://huggingface.co/datasets/sayakpaul/sample-datasets/resolve/main/sdxl-instructpix2pix-release/image_three_2.png) ## Usage in 🧨 diffusers Make sure to install the libraries first: ```bash pip install accelerate transformers pip install git+https://github.com/huggingface/diffusers ``` ```python import torch from diffusers import StableDiffusionXLInstructPix2PixPipeline from diffusers.utils import load_image resolution = 768 image = load_image( "https://hf.co/datasets/diffusers/diffusers-images-docs/resolve/main/mountain.png" ).resize((resolution, resolution)) edit_instruction = "Turn sky into a cloudy one" pipe = StableDiffusionXLInstructPix2PixPipeline.from_pretrained( "diffusers/sdxl-instructpix2pix-768", torch_dtype=torch.float16 ).to("cuda") edited_image = pipe( prompt=edit_instruction, image=image, height=resolution, width=resolution, guidance_scale=3.0, image_guidance_scale=1.5, num_inference_steps=30, ).images[0] edited_image.save("edited_image.png") ``` To know more, refer to the [documentation](https://huggingface.co/docs/diffusers/main/en/api/pipelines/pix2pix). 🚨 Note that this checkpoint is experimental in nature and there's a lot of room for improvements. Please use the "Discussions" tab of this repository to open issues and discuss. 🚨 ## Training We fine-tuned SDXL using the InstructPix2Pix training methodology for 15000 steps using a fixed learning rate of 5e-6 on an image resolution of 768x768. Our training scripts and other utilities can be found [here](https://github.com/sayakpaul/instructpix2pix-sdxl/tree/b9acc91d6ddf1f2aa2f9012b68216deb40e178f3) and they were built on top of our [official training script](https://huggingface.co/docs/diffusers/main/en/training/instructpix2pix). Our training logs are available on Weights and Biases [here](https://wandb.ai/sayakpaul/instruct-pix2pix-sdxl-new/runs/sw53gxmc). Refer to this link for details on all the hyperparameters. ### Training data We used this dataset: [timbrooks/instructpix2pix-clip-filtered](https://huggingface.co/datasets/timbrooks/instructpix2pix-clip-filtered). ### Compute one 8xA100 machine ### Batch size Data parallel with a single gpu batch size of 8 for a total batch size of 32. ### Mixed precision FP16