run in google colab

#4
by GabrielBR - opened

friend, could you provide it as an ipynb file to run in colab, or how could I run it in colab, please

Bookbot org

Hi @GabrielBR , here's a Colab notebook showing how to run our models:

https://colab.research.google.com/drive/1Cg05e_Nxl1vhV6JZQjkD8vSQnQ8-6eX0?usp=sharing

Cheers

friend, this error is occurring, is there a video teaching how to execute it?


FileNotFoundError Traceback (most recent call last)
/tmp/ipykernel_36/158458528.py in <cell line: 0>()
1 from PIL import Image
2
----> 3 image = Image.open("example_1.png").convert("RGB")
4 upscaled_image = upscale(image, "modelx4.ort")

/usr/local/lib/python3.11/dist-packages/PIL/Image.py in open(fp, mode, formats)
3503
3504 if filename:
-> 3505 fp = builtins.open(filename, "rb")
3506 exclusive_fp = True
3507 else:

FileNotFoundError: [Errno 2] No such file or directory: 'example_1.png'

Bookbot org

@GabrielBR , we don't have a video. The error pertains to a wrong image path. You have to upload the image you want to upscale to Google Colab, and then change the path to that image.

image = Image.open("YOUR_IMAGE").convert("RGB")

friend, what am I doing wrong? I couldn't use it: modelx2.ort

image.png

image.png

!pip install -q onnxruntime

import numpy as np
import cv2
import onnxruntime

def pre_process(img: np.array) -> np.array:
# H, W, C -> C, H, W
img = np.transpose(img[:, :, 0:3], (2, 0, 1))
# C, H, W -> 1, C, H, W
img = np.expand_dims(img, axis=0).astype(np.float32)
return img

def post_process(img: np.array) -> np.array:
# 1, C, H, W -> C, H, W
img = np.squeeze(img)
# C, H, W -> H, W, C
img = np.transpose(img, (1, 2, 0))[:, :, ::-1].astype(np.uint8)
return img

def inference(model_path: str, img_array: np.array) -> np.array:
options = onnxruntime.SessionOptions()
options.intra_op_num_threads = 1
options.inter_op_num_threads = 1
ort_session = onnxruntime.InferenceSession(model_path, options)
ort_inputs = {ort_session.get_inputs()[0].name: img_array}
ort_outs = ort_session.run(None, ort_inputs)

return ort_outs[0]

def convert_pil_to_cv2(image):
# pil_image = image.convert("RGB")
open_cv_image = np.array(image)
# RGB to BGR
open_cv_image = open_cv_image[:, :, ::-1].copy()
return open_cv_image

def upscale(image, model_path):
img = convert_pil_to_cv2(image)
if img.ndim == 2:
img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)

if img.shape[2] == 4:
    alpha = img[:, :, 3]  # GRAY
    alpha = cv2.cvtColor(alpha, cv2.COLOR_GRAY2BGR)  # BGR
    alpha_output = post_process(inference(model_path, pre_process(alpha)))  # BGR
    alpha_output = cv2.cvtColor(alpha_output, cv2.COLOR_BGR2GRAY)  # GRAY

    img = img[:, :, 0:3]  # BGR
    image_output = post_process(inference(model_path, pre_process(img)))  # BGR
    image_output = cv2.cvtColor(image_output, cv2.COLOR_BGR2BGRA)  # BGRA
    image_output[:, :, 3] = alpha_output

elif img.shape[2] == 3:
    image_output = post_process(inference(model_path, pre_process(img)))  # BGR

return image_output

download sample image

!wget https://huggingface.co/spaces/bookbot/Image-Upscaling-Playground/resolve/main/examples/example_1.png

NOTE: change to download whichever model you want!

!wget https://huggingface.co/spaces/bookbot/Image-Upscaling-Playground/resolve/main/models/modelx2.ort

from PIL import Image

image = Image.open("1 clarity-upscaler.png").convert("RGB")
upscaled_image = upscale(image, "modelx2.ort")

upscaled_image

array([[[244, 166, 36],
[250, 169, 16],
[255, 162, 4],
...,
[247, 157, 10],
[243, 151, 16],
[223, 161, 42]],

   [[247, 168,  22],
    [255, 160,  12],
    [254, 164,   2],
    ...,
    [252, 156,   4],
    [247, 164,   6],
    [241, 158,  13]],

   [[249, 159,   3],
    [249, 153,   0],
    [254, 160,   0],
    ...,
    [247, 158,   1],
    [249, 163,   3],
    [250, 161,   1]],

   ...,

   [[ 17,  25,  46],
    [ 18,  25,  46],
    [ 18,  26,  47],
    ...,
    [ 28,  26,  42],
    [ 27,  25,  41],
    [ 27,  24,  38]],

   [[ 20,  26,  46],
    [ 19,  26,  47],
    [ 21,  27,  48],
    ...,
    [ 29,  25,  39],
    [ 27,  24,  37],
    [ 24,  22,  35]],

   [[ 21,  26,  43],
    [ 22,  26,  46],
    [ 22,  27,  48],
    ...,
    [ 29,  24,  38],
    [ 26,  22,  35],
    [ 24,  22,  33]]], dtype=uint8)
Bookbot org

@GabrielBR , there is nothing wrong with your code. The final result is just the upscaled image in raw array format. You just need to export that to a saveable image:

Image.fromarray(upscaled_image).save("output.png")

It works now, I never messed with codes, thanks for your attention friend, I'm from Brazil

w11wo changed discussion status to closed

Sign up or log in to comment