Spaces:
Runtime error
Runtime error
File size: 3,648 Bytes
05e606d 54a96ff 05e606d 54a96ff 05e606d 54a96ff 05e606d 54a96ff 05e606d 54a96ff e3de154 54a96ff 05e606d 54a96ff 05e606d b38a0df 7d1506d 05e606d b38a0df 05e606d 4e0c08c dc32b7d 437c4f5 4e0c08c dc32b7d 437c4f5 54a96ff b38a0df 05e606d |
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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
import numpy as np
import tensorflow as tf
import streamlit as st
from PIL import Image
from huggingface_hub import from_pretrained_keras
import cv2
model = from_pretrained_keras("keras-io/deeplabv3p-resnet50")
colormap = np.array([[0,0,0], [31,119,180], [44,160,44], [44, 127, 125], [52, 225, 143],
[217, 222, 163], [254, 128, 37], [130, 162, 128], [121, 7, 166], [136, 183, 248],
[85, 1, 76], [22, 23, 62], [159, 50, 15], [101, 93, 152], [252, 229, 92],
[167, 173, 17], [218, 252, 252], [238, 126, 197], [116, 157, 140], [214, 220, 252]], dtype=np.uint8)
img_size = 512
def read_image(image):
image = tf.convert_to_tensor(image)
image.set_shape([None, None, 3])
image = tf.image.resize(images=image, size=[img_size, img_size])
image = image / 127.5 - 1
return image
def infer(model, image_tensor):
predictions = model.predict(np.expand_dims((image_tensor), axis=0))
predictions = np.squeeze(predictions)
predictions = np.argmax(predictions, axis=2)
return predictions
def decode_segmentation_masks(mask, colormap, n_classes):
r = np.zeros_like(mask).astype(np.uint8)
g = np.zeros_like(mask).astype(np.uint8)
b = np.zeros_like(mask).astype(np.uint8)
for l in range(0, n_classes):
idx = mask == l
r[idx] = colormap[l, 0]
g[idx] = colormap[l, 1]
b[idx] = colormap[l, 2]
rgb = np.stack([r, g, b], axis=2)
return rgb
def get_overlay(image, colored_mask):
image = tf.keras.preprocessing.image.array_to_img(image)
image = np.array(image).astype(np.uint8)
overlay = cv2.addWeighted(image, 0.35, colored_mask, 0.65, 0)
return overlay
def segmentation(input_image):
image_tensor = read_image(input_image)
prediction_mask = infer(image_tensor=image_tensor, model=model)
prediction_colormap = decode_segmentation_masks(prediction_mask, colormap, 20)
overlay = get_overlay(image_tensor, prediction_colormap)
return (overlay, prediction_colormap)
# i = gr.inputs.Image()
# o = [gr.outputs.Image('pil'), gr.outputs.Image('pil')]
st.header("Segmentacion de partes del cuerpo humano")
st.markdown("Sube una imagen o selecciona un ejemplo para segmentar las distintas partes del cuerpo humano")
file_imagen = st.file_uploader("Sube aqui tu imagen", type=["png", "jpg", "jpeg"])
examples = ["example_image_1.jpg", "example_image_2.jpg", "example_image_3.jpg"]
col1, col2, col3 = st.columns(3)
with col1:
ex1 = Image.open(examples[0])
st.image(ex1, width=200)
if st.button("Corre ejemplo 1"):
file_imagen = examples[0]
with col2:
ex2 = Image.open(examples[1])
st.image(ex2, width=200)
if st.button("Corre ejemplo 2"):
file_imagen = examples[1]
with col3:
ex3 = Image.open(examples[2])
st.image(ex3, width=200)
if st.button("Corre ejemplo 3"):
file_imagen = examples[2]
if file_imagen is not None:
img = Image.open(file_imagen)
output = segmentation(img)
if output is not None:
st.subheader("Segmentacion: ")
# st.write(output.shape)
st.image(output[0], width=400)
st.subheader("Mask: ")
# st.write(output.shape)
st.image(output[1], width=400)
# article = "<div style='text-align: center;'><a href='https://keras.io/examples/vision/deeplabv3_plus/' target='_blank'>Keras example by Praveen Kaushik</a></div>"
# gr.Interface(segmentation, i, o, examples=examples, allow_flagging=False, analytics_enabled=False,
# title=title, description=description, article=article).launch(enable_queue=True)
|