par thibaud
Open source · 50k downloads · 400 likes
Le modèle *ControlNet OpenPose SDXL 1.0* est une version spécialisée de SDXL qui intègre le contrôle par pose OpenPose (v2) pour guider la génération d'images. Il permet de créer des visuels où les personnages ou objets suivent précisément une posture ou une composition donnée, tout en conservant la qualité et la richesse des détails propres à SDXL. Ses principaux cas d'usage incluent la création artistique, l'illustration de scènes dynamiques ou la génération de contenus visuels nécessitant un positionnement exact des éléments. Ce qui le distingue, c'est sa capacité à combiner le réalisme des poses humaines ou animales avec la flexibilité créative de SDXL, offrant ainsi un outil puissant pour les artistes, designers ou créateurs de contenu souhaitant contrôler finement la structure de leurs images.
These are controlnet weights trained on stabilityai/stable-diffusion-xl-base-1.0 with OpenPose (v2) conditioning. You can find some example images in the following.
prompt: a ballerina, romantic sunset, 4k photo


(Image is from ComfyUI, you can drag and drop in Comfy to use it as workflow)
License: refers to the OpenPose's one.
First, install all the libraries:
pip install -q controlnet_aux transformers accelerate
pip install -q git+https://github.com/huggingface/diffusers
Now, we're ready to make Darth Vader dance:
from diffusers import AutoencoderKL, StableDiffusionXLControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
import torch
from controlnet_aux import OpenposeDetector
from diffusers.utils import load_image
# Compute openpose conditioning image.
openpose = OpenposeDetector.from_pretrained("lllyasviel/ControlNet")
image = load_image(
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/person.png"
)
openpose_image = openpose(image)
# Initialize ControlNet pipeline.
controlnet = ControlNetModel.from_pretrained("thibaud/controlnet-openpose-sdxl-1.0", torch_dtype=torch.float16)
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", controlnet=controlnet, torch_dtype=torch.float16
)
pipe.enable_model_cpu_offload()
# Infer.
prompt = "Darth vader dancing in a desert, high quality"
negative_prompt = "low quality, bad quality"
images = pipe(
prompt,
negative_prompt=negative_prompt,
num_inference_steps=25,
num_images_per_prompt=4,
image=openpose_image.resize((1024, 1024)),
generator=torch.manual_seed(97),
).images
images[0]
Here are some gemerated examples:

Use of the training script by HF🤗 here.
This checkpoint was first trained for 15,000 steps on laion 6a resized to a max minimum dimension of 768.
one 1xA100 machine (Thanks a lot HF🤗 to provide the compute!)
Data parallel with a single gpu batch size of 2 with gradient accumulation 8.
Constant learning rate of 8e-5
fp16