ControlNet Head Mesh SDXL
ControlNet Example(Conditioned on 3D Head Mesh)
Head Mesh Processor Install
pip install git+https://github.com/KupynOrest/head_detector.git
Code to Use Mesh Control
from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline, AutoencoderKL
from diffusers import EulerAncestralDiscreteScheduler
from PIL import Image
import torch
import numpy as np
import cv2
from head_detector import HeadDetector
detector = HeadDetector()
def resize_image(image):
    height, width = image.shape[:2]
    
    scale_factor = 1024.0 / max(height, width)
    new_width = int(width * scale_factor)
    new_height = int(height * scale_factor)
    resized_image = cv2.resize(image, (new_width, new_height), interpolation=cv2.INTER_AREA)
    return resized_image
def read_rgb_image(image_path):
    image = cv2.imread(image_path)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    return image
IMAGE_PATH = "your image path"
controlnet_conditioning_scale = 1.0  
prompt = "your prompt, the longer the better, you can describe it as detail as possible"
negative_prompt = 'longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality'
eulera_scheduler = EulerAncestralDiscreteScheduler.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", subfolder="scheduler")
controlnet = ControlNetModel.from_pretrained(
    "okupyn/head-mesh-controlnet-xl",
    torch_dtype=torch.float16
)
# when test with other base model, you need to change the vae also.
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    controlnet=controlnet,
    vae=vae,
    safety_checker=None,
    torch_dtype=torch.float16,
    scheduler=eulera_scheduler,
)
#pipe = pipe.to("cuda")
image = resize_image(read_rgb_image(IMAGE_PATH))
controlnet_img = detector(image).get_pncc()
controlnet_img = Image.fromarray(controlnet_img)
images = pipe(
    prompt,
    negative_prompt=negative_prompt,
    image=controlnet_img,
    controlnet_conditioning_scale=controlnet_conditioning_scale,
    num_inference_steps=30,
    ).images
images[0].save(f"your image save path")
license: cc-by-nc-4.0 library_name: diffusers
- Downloads last month
- 6
	Inference Providers
	NEW
	
	
	This model isn't deployed by any Inference Provider.
	๐
			
		Ask for provider support
