Spaces:
Sleeping
Sleeping
from transformers import DetrImageProcessor, DetrForObjectDetection | |
import torch | |
from PIL import Image | |
import gradio as gr | |
from huggingface_hub import InferenceClient | |
# Tamaño esperado de la imagen para el modelo DETR | |
target_size = 800 # Ajusta el tamaño según las especificaciones del modelo | |
def detect_objects(image): | |
# Asegúrate de que la imagen sea cuadrada y del tamaño esperado | |
image = image.resize((target_size, target_size)) | |
processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50", revision="no_timm") | |
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50", revision="no_timm") | |
inputs = processor(images=image, return_tensors="pt") | |
outputs = model(**inputs) | |
# Convierte las salidas a formato COCO | |
results = processor.post_process_object_detection(outputs, target_sizes=torch.tensor([image.size[::-1]]), threshold=0.9)[0] | |
# Formatea los resultados | |
formatted_results = format_detection_results(model, results) | |
# Convierte los resultados en una cadena de texto separada por comas | |
result = ", ".join(formatted_results) | |
return result | |
# Define la función para generar la respuesta con el modelo Zephyr | |
def generate_response(result): | |
result_str = str(result) # Convierte la imagen a cadena | |
zephyrToDo = "clasificame la palabra " + result_str + " en persona, paisaje u objeto" | |
prompt = "" | |
history = [] # Puedes proporcionar un historial de conversaciones si es necesario | |
response = generate(prompt, history) # Reemplaza esto con la función real que genera la respuesta | |
return response | |
def process(image): | |
cadena=detect_objects(image) | |
cadena2=generate_response(cadena) | |
return cadena2 | |
title = "Clasificación de imagenes en Persona, objeto o paisaje a partir de una imagen" | |
description = "" | |
articulo = """ | |
## Definición del problema | |
Un modelo de lenguaje natural que pueda analizar el contenido de una imagen y clasificarlo en persona, objeto o paisaje: | |
Proyecto: Modelo de lenguaje natural que pueda analizar el contenido de una imagen y clasificarlo en persona, objeto o paisaje. | |
Descripción del proyecto: El objetivo de este proyecto es crear un modelo de lenguaje natural que pueda analizar el contenido de una imagen y clasificarlo en persona, objeto o paisaje. La solución propuesta combinará dos modelos preentrenados: un modelo de análisis de contenido de imágenes y un modelo de clasificación. | |
El modelo de análisis de contenido de imágenes se utilizará para extraer características relevantes de la imagen, como objetos, personas etc. Estas características se utilizarán como entrada para el modelo de clasificación, que clasificará la imagen en persona, objeto o paisaje. | |
Limitaciones: El modelo de análisis de contenido de imágenes puede tener dificultades para identificar objetos en imágenes complejas o abstractas. Además, el modelo de clasificación puede tener dificultades para clasificar correctamente si las características extraídas por el modelo de análisis son incorrectas o incompletas. | |
""" | |
# Define la interfaz de Gradio con entrada de imagen | |
iface = gr.Interface( | |
fn=process, # Cambia la función para que sea generate_response | |
inputs=gr.Image(type="pil", label="Sube una imagen"), # Entrada de imagen | |
outputs="text", # Salida de texto | |
title=title, | |
description=description, | |
article = articulo, | |
) | |
# Ejecuta la interfaz Gradio | |
iface.launch() | |