File size: 2,641 Bytes
9506988
 
 
6f608dd
0ce41d1
9506988
 
 
 
 
 
 
 
c4eeb84
 
 
 
40982a8
 
47a09c4
40982a8
 
 
 
9506988
40982a8
 
9506988
c4eeb84
 
 
40982a8
 
9506988
40982a8
 
 
 
 
 
 
 
 
c4eeb84
e113be6
 
c4eeb84
e113be6
 
 
 
c4eeb84
e113be6
9506988
b76d559
9506988
6f608dd
e113be6
e6127cc
 
e113be6
6f608dd
9506988
 
 
b76d559
9506988
 
e113be6
9506988
 
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
import tensorflow as tf
import numpy as np
from PIL import Image
from glob import glob 
import pandas as pd
from tensorflow.keras.preprocessing.image import img_to_array
from huggingface_hub import from_pretrained_keras
import gradio as gr

model = from_pretrained_keras("keras-io/super-resolution")
model.summary()

def infer(image):

   nx=image.shape[0]
   ny=image.shape[1]

   img = Image.fromarray(image)
   # img = img.resize((100,100))
   # img = img.crop((0,100,0,100))
   ycbcr = img.convert("YCbCr")
   y, cb, cr = ycbcr.split()
   y = img_to_array(y)
   y = y.astype("float32") / 255.0

   input = np.expand_dims(y, axis=0)
   out = model.predict(input)

   nxo = out.squeeze().shape[0]
   nyo = out.squeeze().shape[1]

   out_img_y = out[0]
   out_img_y *= 255.0

   # Restore the image in RGB color space.
   out_img_y = out_img_y.clip(0, 255)
   out_img_y = out_img_y.reshape((np.shape(out_img_y)[0], np.shape(out_img_y)[1]))
   out_img_y = Image.fromarray(np.uint8(out_img_y), mode="L")
   out_img_cb = cb.resize(out_img_y.size, Image.BICUBIC)
   out_img_cr = cr.resize(out_img_y.size, Image.BICUBIC)
   out_img = Image.merge("YCbCr", (out_img_y, out_img_cb, out_img_cr)).convert(
   "RGB"
   )

   out_img.save('output.png')

   out = {}
   out.update( {'input image size x': nx } )
   out.update( {'output image size x': nxo } )
   out.update( {'input image size y': ny } )
   out.update( {'output image size y': nyo } )

   return (pd.DataFrame(data=out.values(), index=out.keys()).transpose(), img,out_img, 'output.png')
	
article = "<p style='text-align: center'><a href='https://arxiv.org/abs/1609.05158' target='_blank'>Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network</a></p><center> <a href='https://keras.io/examples/vision/super_resolution_sub_pixel/' target='_blank'>Image Super-Resolution using an Efficient Sub-Pixel CNN</a></p>"

examples= [[l] for l in glob('examples/tiles/*.jpg')]
out1 = gr.outputs.Dataframe(label='Summary', headers=["Input X (px)", "Output X (px)", "Input Y (px)", "Output Y (px)"], type='pandas')
out2 = gr.outputs.Image(label="Cropped input image", type='pil')
out3 = gr.outputs.Image(label="Super-resolution x3 image", type='pil')
out4 = gr.outputs.File(label='Click to download super-resolved image')

iface = gr.Interface(
	fn=infer,
	title = " Satellite Super-resolution",
	description = "This space is a demo of Satellite image Super-Resolution using a Sub-Pixel Convolutional Neural Network",
	article = article,
	inputs=gr.inputs.Image(label="Input Image"),
	outputs=[out1,out2,out3,out4],
	examples=examples,
).launch()