File size: 2,309 Bytes
683afc3
c1497a6
0737dc8
74c4e79
a4e52cb
ae33459
 
cd0d25d
 
feede18
121ee3d
4fbc46c
c1497a6
683afc3
a4e52cb
91746d6
ae33459
0d4222a
 
ae33459
29299f3
 
cd0d25d
a4e52cb
ae33459
a4e52cb
 
feede18
683afc3
cd0d25d
 
 
 
 
0737dc8
74c4e79
5a5a07a
0737dc8
121ee3d
52d3f89
683afc3
29b924b
505f3d2
7968596
8d2ed6a
683afc3
7968596
 
 
 
 
feede18
7968596
 
 
 
 
 
683afc3
7968596
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import gradio as gr
from huggingface_hub import login
import os
import spaces
from diffusers.schedulers import UniPCMultistepScheduler
from diffusers import StableDiffusionXLAdapterPipeline, T2IAdapter, EulerAncestralDiscreteScheduler, AutoencoderKL, \
    StableDiffusionXLPipeline
from diffusers.utils import load_image, make_image_grid
import torch

# Log in to Hugging Face with your token
token = os.getenv("HF_TOKEN")
login(token=token)

model_id = 'stabilityai/sdxl-turbo'
x = StableDiffusionXLPipeline.from_pretrained(model_id)

euler_a = EulerAncestralDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
vae=AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix",)
x.load_ip_adapter(pretrained_model_name_or_path_or_dict="TencentARC/T2I-Adapter",
                     subfolder="models",
                     weight_name="t2iadapter_style_sd14v1.pth")

pipe = StableDiffusionXLAdapterPipeline.from_pretrained(
    model_id, vae=vae, adapter=x.adapter, scheduler=euler_a, variant="fp16",
)
pipe.enable_xformers_memory_efficient_attention()
pipe.to("cuda", torch.float16)

# controlnet = SD3ControlNetModel.from_pretrained("alimama-creative/SD3-Controlnet-Softedge", torch_dtype=torch.float16)
#
# pipe = StableDiffusion3ControlNetPipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers", controlnet=controlnet)
# pipe.to("cuda", torch.float16)


@spaces.GPU
def generate_image(prompt, reference_image, controlnet_conditioning_scale):

    # Generate the image with ControlNet conditioning
    generated_image = pipe(
        prompt=prompt,
        ip_adapter_image=load_image(reference_image),
        controlnet_conditioning_scale=controlnet_conditioning_scale,
    ).images[0]
    return generated_image

# Set up Gradio interface
interface = gr.Interface(
    fn=generate_image,
    inputs=[
        gr.Textbox(label="Prompt"),
        gr.Image( type= "filepath",label="Reference Image (Style)"),
        gr.Slider(label="Control Net Conditioning Scale", minimum=0, maximum=1.0, step=0.1, value=0.6),
    ],
    outputs="image",
    title="Image Generation with Stable Diffusion 3 medium and ControlNet",
    description="Generates an image based on a text prompt and a reference image using Stable Diffusion 3 medium with ControlNet."
)

interface.launch()