fastsdtest / backend /upscale /edsr_upscale_onnx.py
bilegentile's picture
Upload folder using huggingface_hub
564df58 verified
import numpy as np
import onnxruntime
from huggingface_hub import hf_hub_download
from PIL import Image
def upscale_edsr_2x(image_path: str):
input_image = Image.open(image_path).convert("RGB")
input_image = np.array(input_image).astype("float32")
input_image = np.transpose(input_image, (2, 0, 1))
img_arr = np.expand_dims(input_image, axis=0)
if np.max(img_arr) > 256: # 16-bit image
max_range = 65535
else:
max_range = 255.0
img = img_arr / max_range
model_path = hf_hub_download(
repo_id="rupeshs/edsr-onnx",
filename="edsr_onnxsim_2x.onnx",
)
sess = onnxruntime.InferenceSession(model_path)
input_name = sess.get_inputs()[0].name
output_name = sess.get_outputs()[0].name
output = sess.run(
[output_name],
{input_name: img},
)[0]
result = output.squeeze()
result = result.clip(0, 1)
image_array = np.transpose(result, (1, 2, 0))
image_array = np.uint8(image_array * 255)
upscaled_image = Image.fromarray(image_array)
return upscaled_image