Spaces:
Runtime error
Runtime error
try: | |
import detectron2 | |
except: | |
import os | |
os.system('pip install git+https://github.com/facebookresearch/detectron2.git') | |
import streamlit as st | |
from PIL import Image | |
import numpy as np | |
# Ownwe libraries | |
from src import predict_image | |
URL_IMAGE_1 = "https://github.com/frorozcol-UN/Detectron2_Tutorial/blob/main/Data/raw/24e5dcbc-7afd-4345-b6da-4bffe79e4415.jpeg?raw=true" | |
URL_IMAGE_2 = "https://github.com/frorozcol-UN/Detectron2_Tutorial/blob/main/Data/predict/f94394ec-ccd2-497b-9c7e-b22e7df9f54c.jpeg?raw=true" | |
def header(): | |
""" | |
Esta función es para el header de la página | |
""" | |
st.header("Este es un detector de daños en vehículos") | |
st.markdown("Este sistema es creado por frorozcol más información en: [Dectectron2_Tutorial](https://github.com/frorozcol-UN/Detectron2_Tutorial)") | |
def info(): | |
st.write(""" | |
Detectron2 es un Framework de detección de objetos de vanguardia | |
desarrollado por Facebook AI Research. Está construido sobre PyTorch, | |
lo que permite a los desarrolladores usar su poder y flexibilidad | |
para entrenar rápidamente y fácilmente modelos de detección de objetos. | |
Una de las características clave de Detectron2 es su implementación de Mask R-CNN, | |
un modelo de detección de objetos que también puede hacer segmentación de máscaras | |
para cada objeto detectado en una imagen. Esto es útil en una variedad de aplicaciones, | |
como la manipulación de imágenes y la visualización de datos en 3D. | |
En resumen, Detectron2 es un marco poderoso y fácil de usar para la detección de objetos | |
que proporciona una amplia variedad de modelos y herramientas para ayudar a los desarrolladores | |
a entrenar y mejorar sus modelos de detección de objetos.""") | |
def shows_image(img1, img2): | |
col1, col2 = st.columns(2) | |
with col1: | |
st.write("Imagen original") | |
st.image(img1, width=400) | |
with col2: | |
st.write("Imagen con daños detectados") | |
st.image(img2, width=400) | |
def demonstrates_images(): | |
""" | |
Esta función es para mostrar las imágenes y de la pagina | |
es la segunda sección de la página | |
""" | |
st.header("Demostración del programa") | |
st.write("En esta sección se muestran las imágenes de entrada y salida del programa") | |
shows_image(URL_IMAGE_1, URL_IMAGE_2) | |
def uploads_image(): | |
""" | |
This function is for the inputs of the model, return the image or return None if the image is not uploaded | |
""" | |
img_upload = st.file_uploader("Subir imagen", type=["jpg", "png", "jpeg"]) | |
if img_upload is not None: | |
img = Image.open(img_upload) | |
return img | |
return None | |
def shows_results(values, image): | |
shows_image(image, values["image"]) | |
st.write("Estas son las áreas de daños detectados: ") | |
st.write("El area se mide en pixeles cuadrados, por lo que para obtener el area en metros cuadrados se debe, hacer una regla de 3 con el tamaño de la imagen en metros cuadrados") | |
for idx, data in enumerate(zip(values["masks"],values["areas"])): | |
st.write("Daño id", idx) | |
st.write(f"Área: {data[1]} px^2") | |
img_binary = Image.fromarray((data[0]* 255).astype(np.uint8), 'L') | |
st.image(img_binary) | |
def main(): | |
header() | |
info() | |
demonstrates_images() | |
image = uploads_image() | |
if image is not None: | |
values = predict_image(image) | |
shows_results(values, image) | |
main() |