File size: 2,036 Bytes
87d91a7
2419492
 
 
 
 
 
3651eaa
 
 
 
 
 
2419492
3651eaa
 
 
 
 
 
 
 
 
 
d48fe1d
 
 
3651eaa
2419492
 
 
 
 
089e6cb
 
3651eaa
932ef9c
83f75b0
 
c058625
71e48de
c058625
0f2e933
c058625
 
 
 
 
 
 
 
1580929
 
 
d29a642
 
1580929
c058625
 
71e48de
83f75b0
71e48de
c058625
 
 
 
 
 
 
3651eaa
c058625
 
 
 
 
3651eaa
c058625
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import gradio as gr
from huggingface_hub import login
import os

hf_token = os.environ.get("HF_TOKEN")
login(token=hf_token)

from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline, AutoencoderKL
from diffusers.utils import load_image
from PIL import Image
import torch
import numpy as np
import cv2


controlnet = ControlNetModel.from_pretrained(
    "diffusers/controlnet-canny-sdxl-1.0",
    torch_dtype=torch.float16
)
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,
    torch_dtype=torch.float16, 
    variant="fp16",
    use_safetensors=True
)

custom_model = "fffiloni/eugene_jour_general"

# This is where you load your trained weights
pipe.load_lora_weights(custom_model, use_auth_token=True)
pipe.to("cuda")
#pipe.enable_model_cpu_offload()

def infer(image_in, prompt):
    prompt = prompt
    negative_prompt = ""

    image = load_image(image_in)

    controlnet_conditioning_scale = 0.25  # recommended for good generalization

    image = np.array(image)
    image = cv2.Canny(image, 100, 200)
    image = image[:, :, None]
    image = np.concatenate([image, image, image], axis=2)
    image = Image.fromarray(image)

    images = pipe(
        prompt, 
        negative_prompt=negative_prompt, 
        image=image, 
        #controlnet_conditioning_scale=controlnet_conditioning_scale,
        #guidance_scale = 10.0,
        num_inference_steps=50
        ).images

    images[0].save(f"hug_lab.png")

    return f"hug_lab.png"

with gr.Blocks() as demo:
    with gr.Column():
        image_in = gr.Image(source="upload", type="filepath")
        prompt = gr.Textbox(label="Prompt")
        submit_btn = gr.Button("Submit")
        result = gr.Image(label="Result")

    submit_btn.click(
        fn = infer,
        inputs = [image_in, prompt],
        outputs = [result]
    )

demo.queue().launch()