atsantiago's picture
Examples Recalibration
05f97e4
raw
history blame contribute delete
No virus
3.09 kB
import gradio as gr
from layers import BilinearUpSampling2D
import matplotlib.pyplot as plt
import numpy as np
from huggingface_hub import from_pretrained_keras
from einops import repeat
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...')
import importlib
import utils
importlib.reload(utils)
def layer_over_image(raw_image, filter, custom_color = [0, 0, 0]):
# print(raw_image[:, :, 0])
out_image = raw_image
out_image[:,:,0] = raw_image[:, :, 0] * filter
out_image[:,:,1] = raw_image[:, :, 1] * filter
out_image[:,:,2] = raw_image[:, :, 2] * filter
return raw_image
def infer(image, min_th, max_th):
# print('_'*20)
inputs = utils.load_images([image])
outputs = utils.predict(model, inputs)
plasma = plt.get_cmap('plasma')
rescaled = outputs[0][:, :, 0]
# print("Min Max Bef", np.min(rescaled), np.max(rescaled))
rescaled = rescaled - np.min(rescaled)
rescaled = rescaled / np.max(rescaled)
im_heat = plasma(rescaled)[:, :, :3]
# print("Min Max Aft", np.min(rescaled), np.max(rescaled))
# print("Shape Scaled:",rescaled.shape)
filt_base = rescaled
filt_base = repeat(filt_base, "h w -> (h 2) (w 2)")
filt_arr_min = (filt_base > min_th/100)
filt_arr_max = (filt_base < max_th/100)
filt_arr = filt_arr_min * filt_base * filt_arr_max
im_heat_filt = plasma(filt_arr)[:, :, :3]
if max_th < 100:
image_emph = layer_over_image(image, filt_arr_max)
else:
image_emph = image
if min_th > 0:
image_emph = layer_over_image(image, filt_arr_min)
else:
image_emph = image
# print("filt arr min", filt_arr_min)
# print("Shape Image:",image.shape)
# print("Shape Image filt:",im_heat_filt.shape)
# print("Shape Image Heat:",im_heat.shape)
return im_heat, image_emph
# def detr(im):
# return im
gr_input = [
gr.inputs.Image(label="Image", type="numpy", shape=(640, 480))
,gr.inputs.Slider(minimum=0, maximum=100, step=0.5, default=0, label="Minimum Threshold")
,gr.inputs.Slider(minimum=0, maximum=100, step=0.5, default=100, label="Maximum Threshold")
]
gr_output = [
gr.outputs.Image(type="pil",label="Depth HeatMap"),
# gr.outputs.Image(type="pil",label="Filtered Image"),
# gr.outputs.Image(type="pil",label="Before"),
gr.outputs.Image(type="pil",label="Important Areas")
]
iface = gr.Interface(
fn=infer,
title="Monocular Depth Filter",
description = "Used Keras Monocular Depth Estimation Model for estimating the depth of areas in an image. User defines a threshold and the app filters out the image to only show the certain areas",
inputs = gr_input,
outputs = gr_output,
examples=[
["examples/00015_colors.png", 7, 85]
,["examples/car.JPG", 0, 30]
,["examples/dash.jpg", 10, 57.5]
]
)
iface.launch()