Spaces:
Running
on
Zero
Running
on
Zero
import torch | |
import os | |
import numpy as np | |
from hashlib import md5 | |
def hash_img(img): | |
return md5(np.array(img).tobytes()).hexdigest() | |
def hash_any(obj): | |
return md5(str(obj).encode()).hexdigest() | |
def refine_lr_with_sd(pil_image_list, concept_img_list, control_image_list, prompt_list, pipe=None, strength=0.35, neg_prompt_list="", output_size=(512, 512), controlnet_conditioning_scale=1.): | |
with torch.no_grad(): | |
images = pipe( | |
image=pil_image_list, | |
ip_adapter_image=concept_img_list, | |
prompt=prompt_list, | |
neg_prompt=neg_prompt_list, | |
num_inference_steps=50, | |
strength=strength, | |
height=output_size[0], | |
width=output_size[1], | |
control_image=control_image_list, | |
guidance_scale=5.0, | |
controlnet_conditioning_scale=controlnet_conditioning_scale, | |
generator=torch.manual_seed(233), | |
).images | |
return images | |
SR_cache = None | |
def run_sr_fast(source_pils, scale=4): | |
from PIL import Image | |
from scripts.upsampler import RealESRGANer | |
import numpy as np | |
global SR_cache | |
if SR_cache is not None: | |
upsampler = SR_cache | |
else: | |
upsampler = RealESRGANer( | |
scale=4, | |
onnx_path="ckpt/realesrgan-x4.onnx", | |
tile=0, | |
tile_pad=10, | |
pre_pad=0, | |
half=True, | |
gpu_id=0, | |
) | |
ret_pils = [] | |
for idx, img_pils in enumerate(source_pils): | |
np_in = isinstance(img_pils, np.ndarray) | |
assert isinstance(img_pils, (Image.Image, np.ndarray)) | |
img = np.array(img_pils) | |
output, _ = upsampler.enhance(img, outscale=scale) | |
if np_in: | |
ret_pils.append(output) | |
else: | |
ret_pils.append(Image.fromarray(output)) | |
if SR_cache is None: | |
SR_cache = upsampler | |
return ret_pils | |