File size: 2,139 Bytes
7cb3405
 
 
 
 
3a5de8f
7cb3405
 
 
 
 
 
 
54a4670
7cb3405
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b0c3984
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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)