from layers import BilinearUpSampling2D
from tensorflow.keras.models import load_model
from utils import load_images, predict
import matplotlib.pyplot as plt
import numpy as np
import gradio as gr
from huggingface_hub import from_pretrained_keras
custom_objects = {'BilinearUpSampling2D': BilinearUpSampling2D,
'depth_loss_function': None}
print('Loading model...')
model = from_pretrained_keras(
"keras-io/monocular-depth-estimation", custom_objects=custom_objects, compile=False)
print('Successfully loaded model...')
examples = ['examples/00015_colors.png',
'examples/00084_colors.png', 'examples/00033_colors.png']
def infer(image):
inputs = load_images([image])
outputs = predict(model, inputs)
plasma = plt.get_cmap('plasma')
rescaled = outputs[0][:, :, 0]
rescaled = rescaled - np.min(rescaled)
rescaled = rescaled / np.max(rescaled)
image_out = plasma(rescaled)[:, :, :3]
return image_out
iface = gr.Interface(
fn=infer,
title="Monocular Depth Estimation",
description="Keras Implementation of Unet architecture with Densenet201 backbone for estimating the depth of image 📏",
inputs=[gr.inputs.Image(label="image", type="numpy", shape=(640, 480))],
outputs="image",
article="Author: Vu Minh Chien. The ideal based on the keras example from Victor Basu",
examples=examples, cache_examples=True).launch(debug=True)