JoPmt commited on
Commit
fd265dd
1 Parent(s): 698fe38

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -0
app.py ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from PIL import Image
2
+ import gradio as gr
3
+ import numpy as np
4
+ import torch
5
+ from accelerate import Accelerator
6
+ from transformers import pipeline
7
+ from diffusers.utils import load_image
8
+ from diffusers import KandinskyV22PriorPipeline, KandinskyV22ControlnetPipeline
9
+
10
+ accelerator = Accelerator()
11
+
12
+ def make_hint(image, depth_estimator):
13
+ image = depth_estimator(image)["depth"]
14
+ image = np.array(image)
15
+ image = image[:, :, None]
16
+ image = np.concatenate([image, image, image], axis=2)
17
+ detected_map = torch.from_numpy(image).float() / 255.0
18
+ hint = detected_map.permute(2, 0, 1)
19
+ return hint
20
+
21
+ def plex(prompt,goof):
22
+ goof = load_image(goof).resize((768, 768))
23
+ depth_estimator = accelerator.prepare(pipeline("depth-estimation"))
24
+ hint = make_hint(goof, depth_estimator).unsqueeze(0).to("cpu")
25
+
26
+ pipe_prior = accelerator.prepare(KandinskyV22PriorPipeline.from_pretrained(
27
+ "kandinsky-community/kandinsky-2-2-prior", torch_dtype=torch.float32
28
+ ))
29
+ pipe_prior = accelerator.prepare(pipe_prior.to("cpu"))
30
+
31
+ pipe = accelerator.prepare(KandinskyV22ControlnetPipeline.from_pretrained(
32
+ "kandinsky-community/kandinsky-2-2-controlnet-depth", torch_dtype=torch.float32
33
+ ))
34
+ pipe = accelerator.prepare(pipe.to("cpu"))
35
+
36
+ negative_prior_prompt = "lowres,text,bad quality,jpeg artifacts,ugly,bad face,extra fingers,blurry,bad anatomy,bad proportions,extra limbs,fused fingers,long neck,watermark,signature"
37
+
38
+ generator = torch.Generator(device="cpu").manual_seed(random.randint(-1, 2147483647))
39
+ image_emb, zero_image_emb = pipe_prior(
40
+ prompt=prompt, negative_prompt=negative_prior_prompt, generator=generator
41
+ ).to_tuple()
42
+
43
+ images = pipe(
44
+ image_embeds=image_emb,
45
+ negative_image_embeds=zero_image_emb,
46
+ hint=hint,
47
+ num_inference_steps=50,
48
+ generator=generator,
49
+ height=768,
50
+ width=768,
51
+ ).images[0]
52
+
53
+ return images
54
+
55
+ iface = gr.Interface(fn=plex,inputs=[gr.Textbox(),gr.Image(type="filepath")], outputs=gr.Image(), title="Img2Img_SkyV22CntrlNet", description="Running on CPU, very slow!")
56
+ iface.launch()