Spaces:
Runtime error
Runtime error
added upsampling
Browse files- app.py +11 -6
- requirements.txt +3 -0
- upsampling.py +43 -0
app.py
CHANGED
|
@@ -3,12 +3,14 @@ import numpy as np
|
|
| 3 |
import torch as th
|
| 4 |
from imageio import imread
|
| 5 |
from skimage.transform import resize as imresize
|
|
|
|
| 6 |
|
| 7 |
-
from ema_pytorch import EMA
|
| 8 |
from decomp_diffusion.model_and_diffusion_util import *
|
| 9 |
from decomp_diffusion.diffusion.respace import SpacedDiffusion
|
| 10 |
from decomp_diffusion.gen_image import *
|
|
|
|
| 11 |
from download import download_model
|
|
|
|
| 12 |
|
| 13 |
import gradio as gr
|
| 14 |
|
|
@@ -149,17 +151,19 @@ def combine_components_slice(model, gd, im1, im2, indices=None, sample_method='d
|
|
| 149 |
return sample[0].cpu()
|
| 150 |
|
| 151 |
|
| 152 |
-
|
| 153 |
def decompose_image_demo(im, model):
|
| 154 |
sample_method = 'ddim'
|
| 155 |
result = gen_image_and_components(MODELS[model], GD[sample_method], im, sample_method=sample_method, num_images=1, device=device)
|
| 156 |
-
|
|
|
|
| 157 |
|
| 158 |
|
| 159 |
def combine_images_demo(im1, im2, model):
|
| 160 |
sample_method = 'ddim'
|
| 161 |
result = combine_components_slice(MODELS[model], GD[sample_method], im1, im2, indices='1,0,1,0', sample_method=sample_method, num_images=1, device=device)
|
| 162 |
-
|
|
|
|
|
|
|
| 163 |
|
| 164 |
|
| 165 |
def load_model(dataset, extra_kwargs={}, device='cuda'):
|
|
@@ -189,6 +193,7 @@ MODELS = {
|
|
| 189 |
'CelebA-HQ': celeb_model
|
| 190 |
}
|
| 191 |
|
|
|
|
| 192 |
|
| 193 |
with gr.Blocks() as demo:
|
| 194 |
gr.Markdown(
|
|
@@ -221,7 +226,7 @@ with gr.Blocks() as demo:
|
|
| 221 |
)
|
| 222 |
|
| 223 |
with gr.Column():
|
| 224 |
-
decomp_output = gr.Image(type='
|
| 225 |
decomp_button = gr.Button("Generate")
|
| 226 |
|
| 227 |
|
|
@@ -253,7 +258,7 @@ with gr.Blocks() as demo:
|
|
| 253 |
|
| 254 |
|
| 255 |
with gr.Column(scale=1):
|
| 256 |
-
comb_output = gr.Image(type='
|
| 257 |
comb_button = gr.Button("Generate")
|
| 258 |
|
| 259 |
|
|
|
|
| 3 |
import torch as th
|
| 4 |
from imageio import imread
|
| 5 |
from skimage.transform import resize as imresize
|
| 6 |
+
from PIL import Image
|
| 7 |
|
|
|
|
| 8 |
from decomp_diffusion.model_and_diffusion_util import *
|
| 9 |
from decomp_diffusion.diffusion.respace import SpacedDiffusion
|
| 10 |
from decomp_diffusion.gen_image import *
|
| 11 |
+
|
| 12 |
from download import download_model
|
| 13 |
+
from upsampling import get_pipeline, upscale_image
|
| 14 |
|
| 15 |
import gradio as gr
|
| 16 |
|
|
|
|
| 151 |
return sample[0].cpu()
|
| 152 |
|
| 153 |
|
|
|
|
| 154 |
def decompose_image_demo(im, model):
|
| 155 |
sample_method = 'ddim'
|
| 156 |
result = gen_image_and_components(MODELS[model], GD[sample_method], im, sample_method=sample_method, num_images=1, device=device)
|
| 157 |
+
result = Image.fromarray(result.permute(1, 2, 0).numpy())
|
| 158 |
+
return result
|
| 159 |
|
| 160 |
|
| 161 |
def combine_images_demo(im1, im2, model):
|
| 162 |
sample_method = 'ddim'
|
| 163 |
result = combine_components_slice(MODELS[model], GD[sample_method], im1, im2, indices='1,0,1,0', sample_method=sample_method, num_images=1, device=device)
|
| 164 |
+
result = Image.fromarray(result.permute(1, 2, 0).numpy())
|
| 165 |
+
if model == 'CelebA-HQ':
|
| 166 |
+
return upscale_image(result, pipe)
|
| 167 |
|
| 168 |
|
| 169 |
def load_model(dataset, extra_kwargs={}, device='cuda'):
|
|
|
|
| 193 |
'CelebA-HQ': celeb_model
|
| 194 |
}
|
| 195 |
|
| 196 |
+
pipe = get_pipeline()
|
| 197 |
|
| 198 |
with gr.Blocks() as demo:
|
| 199 |
gr.Markdown(
|
|
|
|
| 226 |
)
|
| 227 |
|
| 228 |
with gr.Column():
|
| 229 |
+
decomp_output = gr.Image(type='pil')
|
| 230 |
decomp_button = gr.Button("Generate")
|
| 231 |
|
| 232 |
|
|
|
|
| 258 |
|
| 259 |
|
| 260 |
with gr.Column(scale=1):
|
| 261 |
+
comb_output = gr.Image(type='pil')
|
| 262 |
comb_button = gr.Button("Generate")
|
| 263 |
|
| 264 |
|
requirements.txt
CHANGED
|
@@ -1,2 +1,5 @@
|
|
| 1 |
git+https://github.com/jsu27/decomp_diffusion.git
|
| 2 |
scikit-image==0.19.2
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
git+https://github.com/jsu27/decomp_diffusion.git
|
| 2 |
scikit-image==0.19.2
|
| 3 |
+
diffusers==0.10.2
|
| 4 |
+
transformers
|
| 5 |
+
pillow
|
upsampling.py
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch as th
|
| 2 |
+
from diffusers import IFImg2ImgSuperResolutionPipeline
|
| 3 |
+
from transformers import T5EncoderModel
|
| 4 |
+
from PIL import Image
|
| 5 |
+
import numpy as np
|
| 6 |
+
|
| 7 |
+
def get_pipeline():
|
| 8 |
+
|
| 9 |
+
text_encoder = T5EncoderModel.from_pretrained(
|
| 10 |
+
"DeepFloyd/IF-I-XL-v1.0",
|
| 11 |
+
subfolder="text_encoder",
|
| 12 |
+
device_map="auto",
|
| 13 |
+
load_in_8bit=True,
|
| 14 |
+
variant="8bit"
|
| 15 |
+
)
|
| 16 |
+
|
| 17 |
+
pipe = IFImg2ImgSuperResolutionPipeline.from_pretrained(
|
| 18 |
+
"DeepFloyd/IF-II-L-v1.0",
|
| 19 |
+
text_encoder=text_encoder,
|
| 20 |
+
variant="fp16",
|
| 21 |
+
torch_dtype=th.float16,
|
| 22 |
+
device_map="auto",
|
| 23 |
+
watermarker=None
|
| 24 |
+
)
|
| 25 |
+
return pipe
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
def upscale_image(im, pipe):
|
| 30 |
+
"""im is 64x64 PIL image"""
|
| 31 |
+
prompt = ''
|
| 32 |
+
prompt_embeds, negative_embeds = pipe.encode_prompt(prompt)
|
| 33 |
+
generator = th.Generator().manual_seed(0)
|
| 34 |
+
|
| 35 |
+
image = pipe(
|
| 36 |
+
image=original_image,
|
| 37 |
+
original_image=original_image,
|
| 38 |
+
prompt_embeds=prompt_embeds,
|
| 39 |
+
negative_prompt_embeds=negative_embeds,
|
| 40 |
+
generator=generator,
|
| 41 |
+
).images[0]
|
| 42 |
+
|
| 43 |
+
return image
|