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() |