Spaces:
Runtime error
Runtime error
mattyamonaca
commited on
Commit
•
134c8c2
1
Parent(s):
769989d
fix pipe
Browse files- app.py +10 -10
- ipadapter/__put_your_lineart_model +0 -0
- sd_model.py +28 -17
app.py
CHANGED
@@ -11,9 +11,6 @@ import os
|
|
11 |
import numpy as np
|
12 |
from PIL import Image
|
13 |
import zipfile
|
14 |
-
import torch
|
15 |
-
|
16 |
-
zero = torch.Tensor([0]).cuda()
|
17 |
|
18 |
path = os.getcwd()
|
19 |
output_dir = f"{path}/output"
|
@@ -45,7 +42,7 @@ class webui:
|
|
45 |
def __init__(self):
|
46 |
self.demo = gr.Blocks()
|
47 |
|
48 |
-
def undercoat(self, input_image, pos_prompt, neg_prompt, alpha_th, thickness):
|
49 |
org_line_image = input_image
|
50 |
image = pil2cv(input_image)
|
51 |
image = cv2.cvtColor(image, cv2.COLOR_BGRA2RGBA)
|
@@ -54,18 +51,19 @@ class webui:
|
|
54 |
image[index] = [255, 255, 255, 255]
|
55 |
input_image = cv2pil(image)
|
56 |
|
57 |
-
pipe = get_cn_pipeline()
|
58 |
detectors = get_cn_detector(input_image.resize((1024, 1024), Image.ANTIALIAS))
|
59 |
|
60 |
|
61 |
-
gen_image = generate(pipe, detectors, pos_prompt, neg_prompt)
|
62 |
color_img, unfinished = process(gen_image.resize((image.shape[1], image.shape[0]), Image.ANTIALIAS) , org_line_image, alpha_th, thickness)
|
63 |
#color_img = color_img.resize((image.shape[1], image.shape[0]) , Image.ANTIALIAS)
|
64 |
|
65 |
|
66 |
output_img = Image.alpha_composite(color_img, org_line_image)
|
67 |
name = randomname(10)
|
68 |
-
os.
|
|
|
69 |
os.makedirs(f"{output_dir}/{name}")
|
70 |
output_img.save(f"{output_dir}/{name}/output_image.png")
|
71 |
org_line_image.save(f"{output_dir}/{name}/line_image.png")
|
@@ -84,13 +82,15 @@ class webui:
|
|
84 |
with self.demo:
|
85 |
with gr.Row():
|
86 |
with gr.Column():
|
87 |
-
input_image = gr.Image(type="pil", image_mode="RGBA")
|
88 |
-
|
89 |
pos_prompt = gr.Textbox(value="1girl, blue hair, pink shirts, bestquality, 4K", max_lines=1000, label="positive prompt")
|
90 |
neg_prompt = gr.Textbox(value=" (worst quality, low quality:1.2), (lowres:1.2), (bad anatomy:1.2), (greyscale, monochrome:1.4)", max_lines=1000, label="negative prompt")
|
91 |
|
92 |
alpha_th = gr.Slider(maximum = 255, value=100, label = "alpha threshold")
|
93 |
thickness = gr.Number(value=5, label="Thickness of correction area (Odd numbers need to be entered)")
|
|
|
|
|
|
|
94 |
#gr.Slider(maximum = 21, value=3, step=2, label = "Thickness of correction area")
|
95 |
|
96 |
submit = gr.Button(value="Start")
|
@@ -101,7 +101,7 @@ class webui:
|
|
101 |
output_file = gr.File()
|
102 |
submit.click(
|
103 |
self.undercoat,
|
104 |
-
inputs=[input_image, pos_prompt, neg_prompt, alpha_th, thickness],
|
105 |
outputs=[output_0, output_file]
|
106 |
)
|
107 |
|
|
|
11 |
import numpy as np
|
12 |
from PIL import Image
|
13 |
import zipfile
|
|
|
|
|
|
|
14 |
|
15 |
path = os.getcwd()
|
16 |
output_dir = f"{path}/output"
|
|
|
42 |
def __init__(self):
|
43 |
self.demo = gr.Blocks()
|
44 |
|
45 |
+
def undercoat(self, input_image, pos_prompt, neg_prompt, alpha_th, thickness, reference_flg, reference_img):
|
46 |
org_line_image = input_image
|
47 |
image = pil2cv(input_image)
|
48 |
image = cv2.cvtColor(image, cv2.COLOR_BGRA2RGBA)
|
|
|
51 |
image[index] = [255, 255, 255, 255]
|
52 |
input_image = cv2pil(image)
|
53 |
|
54 |
+
pipe = get_cn_pipeline(reference_flg)
|
55 |
detectors = get_cn_detector(input_image.resize((1024, 1024), Image.ANTIALIAS))
|
56 |
|
57 |
|
58 |
+
gen_image = generate(pipe, detectors, pos_prompt, neg_prompt, reference_flg, reference_img)
|
59 |
color_img, unfinished = process(gen_image.resize((image.shape[1], image.shape[0]), Image.ANTIALIAS) , org_line_image, alpha_th, thickness)
|
60 |
#color_img = color_img.resize((image.shape[1], image.shape[0]) , Image.ANTIALIAS)
|
61 |
|
62 |
|
63 |
output_img = Image.alpha_composite(color_img, org_line_image)
|
64 |
name = randomname(10)
|
65 |
+
if not os.path.exists(f"{output_dir}"):
|
66 |
+
os.makedirs(f"{output_dir}")
|
67 |
os.makedirs(f"{output_dir}/{name}")
|
68 |
output_img.save(f"{output_dir}/{name}/output_image.png")
|
69 |
org_line_image.save(f"{output_dir}/{name}/line_image.png")
|
|
|
82 |
with self.demo:
|
83 |
with gr.Row():
|
84 |
with gr.Column():
|
85 |
+
input_image = gr.Image(type="pil", image_mode="RGBA", label="lineart")
|
|
|
86 |
pos_prompt = gr.Textbox(value="1girl, blue hair, pink shirts, bestquality, 4K", max_lines=1000, label="positive prompt")
|
87 |
neg_prompt = gr.Textbox(value=" (worst quality, low quality:1.2), (lowres:1.2), (bad anatomy:1.2), (greyscale, monochrome:1.4)", max_lines=1000, label="negative prompt")
|
88 |
|
89 |
alpha_th = gr.Slider(maximum = 255, value=100, label = "alpha threshold")
|
90 |
thickness = gr.Number(value=5, label="Thickness of correction area (Odd numbers need to be entered)")
|
91 |
+
|
92 |
+
reference_image = gr.Image(type="pil", image_mode="RGB", label="reference_image")
|
93 |
+
reference_flg = gr.Checkbox(value=True, label="reference_flg")
|
94 |
#gr.Slider(maximum = 21, value=3, step=2, label = "Thickness of correction area")
|
95 |
|
96 |
submit = gr.Button(value="Start")
|
|
|
101 |
output_file = gr.File()
|
102 |
submit.click(
|
103 |
self.undercoat,
|
104 |
+
inputs=[input_image, pos_prompt, neg_prompt, alpha_th, thickness, reference_image, reference_flg],
|
105 |
outputs=[output_0, output_file]
|
106 |
)
|
107 |
|
ipadapter/__put_your_lineart_model
ADDED
File without changes
|
sd_model.py
CHANGED
@@ -6,7 +6,7 @@ import spaces
|
|
6 |
|
7 |
device = "cuda"
|
8 |
|
9 |
-
def get_cn_pipeline():
|
10 |
controlnets = [
|
11 |
ControlNetModel.from_pretrained("./controlnet/lineart", torch_dtype=torch.float16, use_safetensors=True),
|
12 |
ControlNetModel.from_pretrained("mattyamonaca/controlnet_line2line_xl", torch_dtype=torch.float16)
|
@@ -17,13 +17,12 @@ def get_cn_pipeline():
|
|
17 |
"cagliostrolab/animagine-xl-3.1", controlnet=controlnets, vae=vae, torch_dtype=torch.float16
|
18 |
)
|
19 |
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
#pipe.to(device)
|
27 |
|
28 |
return pipe
|
29 |
|
@@ -51,18 +50,30 @@ def get_cn_detector(image):
|
|
51 |
return detectors
|
52 |
|
53 |
@spaces.GPU
|
54 |
-
def generate(pipe, detectors, prompt, negative_prompt):
|
55 |
pipe.to("cuda")
|
56 |
default_pos = ""
|
57 |
default_neg = ""
|
58 |
prompt = default_pos + prompt
|
59 |
negative_prompt = default_neg + negative_prompt
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
return image
|
|
|
6 |
|
7 |
device = "cuda"
|
8 |
|
9 |
+
def get_cn_pipeline(reference_flg):
|
10 |
controlnets = [
|
11 |
ControlNetModel.from_pretrained("./controlnet/lineart", torch_dtype=torch.float16, use_safetensors=True),
|
12 |
ControlNetModel.from_pretrained("mattyamonaca/controlnet_line2line_xl", torch_dtype=torch.float16)
|
|
|
17 |
"cagliostrolab/animagine-xl-3.1", controlnet=controlnets, vae=vae, torch_dtype=torch.float16
|
18 |
)
|
19 |
|
20 |
+
if reference_flg == True:
|
21 |
+
pipe.load_ip_adapter(
|
22 |
+
"h94/IP-Adapter",
|
23 |
+
subfolder="sdxl_models",
|
24 |
+
weight_name="ip-adapter-plus_sdxl_vit-h.bin"
|
25 |
+
)
|
|
|
26 |
|
27 |
return pipe
|
28 |
|
|
|
50 |
return detectors
|
51 |
|
52 |
@spaces.GPU
|
53 |
+
def generate(pipe, detectors, prompt, negative_prompt, reference_flg=False, reference_img=None):
|
54 |
pipe.to("cuda")
|
55 |
default_pos = ""
|
56 |
default_neg = ""
|
57 |
prompt = default_pos + prompt
|
58 |
negative_prompt = default_neg + negative_prompt
|
59 |
+
|
60 |
+
|
61 |
+
if reference_flg==False:
|
62 |
+
image = pipe(
|
63 |
+
prompt=prompt,
|
64 |
+
negative_prompt = negative_prompt,
|
65 |
+
image=detectors,
|
66 |
+
num_inference_steps=50,
|
67 |
+
controlnet_conditioning_scale=[1.0, 0.2],
|
68 |
+
).images[0]
|
69 |
+
else:
|
70 |
+
image = pipe(
|
71 |
+
prompt=prompt,
|
72 |
+
negative_prompt = negative_prompt,
|
73 |
+
image=detectors,
|
74 |
+
num_inference_steps=50,
|
75 |
+
controlnet_conditioning_scale=[1.0, 0.2],
|
76 |
+
ip_adapter_image=reference_img,
|
77 |
+
).images[0]
|
78 |
+
|
79 |
return image
|