File size: 3,479 Bytes
7e7e6dc
 
 
 
 
 
0115f6d
 
 
7e7e6dc
0115f6d
 
 
7e7e6dc
 
 
 
 
 
 
0115f6d
 
7e7e6dc
 
0115f6d
8281a24
 
0115f6d
7e7e6dc
 
 
 
8281a24
50c880b
7e7e6dc
8281a24
 
 
7e7e6dc
1835bc5
 
 
 
 
 
b037bf4
d601111
750cf15
 
d601111
 
 
 
 
 
 
 
 
 
 
 
750cf15
 
4fc021d
 
 
1835bc5
4fc021d
ec79151
 
 
 
4fc021d
 
 
 
 
 
 
750cf15
d601111
 
 
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
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()