trabajo / app.py
saruizn's picture
Update app.py
3a5de8f
from huggingface_hub import from_pretrained_keras
import gradio as gr
from skimage.io import imsave
from skimage.color import lab2rgb
from tensorflow.keras.utils import img_to_array, load_img
import numpy as np
repo_id="saruizn/trabajo"
model = from_pretrained_keras(repo_id)
def predict(img):
partes=[]
imsave("input.jpg",(img * 255).astype(np.uint8))
imag = img_to_array(load_img("input.jpg"))
partes=divideImage(imag)
i=0
imagenes=[]
for imgp in partes:
nombre="result"+str(i)+".png"
imsave(nombre,imgp)
guardarImagen(nombre,i,imagenes)
i=i+1
imagenFinal=juntaImage(imagenes)
return imagenFinal
def guardarImagen(foto,i,imagenes):
color_me = []
img = img_to_array(load_img(foto))
img = resize(img ,(256,256))
color_me.append(img)
color_me = np.array(color_me, dtype=float)
color_me = rgb2lab(1.0/255*color_me)[:,:,:,0]
color_me = color_me.reshape(color_me.shape+(1,))
output = model.predict(color_me)
output = output * 128 * 8
result = np.zeros((256, 256, 3))
result[:,:,0] = color_me[0][:,:,0]
result[:,:,1:] = output[0]
imagenes.append(lab2rgb(result))
imsave("result"+str(i)+".png", lab2rgb(result))
def divideImage(img):
salida=[]
for i in range(0,3):
for j in range(0,5):
salida.append(img[i*256:i*256+256,j*256:j*256+256])
salida.append(img[i*256:i*256+256,1372-256:1372])
for j in range(0,5):
salida.append(img[929-256:929,j*256:j*256+256])
salida.append(img[929-256:929,1372-256:1372])
return salida
def juntaImage(X):
salida=np.zeros((929, 1372, 3))
im=0
for i in range(0,3):
for j in range(0,5):
salida[i*256:i*256+256,j*256:j*256+256]=X[im]
im=im+1
salida[i*256:i*256+256,1372-256:1372]=X[im]
im=im+1
for j in range(0,5):
salida[929-256:929,j*256:j*256+256]=X[im]
im=im+1
salida[929-256:929,1372-256:1372]=X[im]
return salida
gr.Interface(fn=predict, inputs=gr.inputs.Image(shape=(929, 1372)), outputs="image").launch(share=False)