File size: 2,582 Bytes
337a0be
 
 
 
6094276
e243225
337a0be
 
 
6094276
9a1c304
e243225
9a1c304
6094276
 
 
 
 
 
 
337a0be
6094276
 
337a0be
6094276
e243225
 
 
 
e9271a1
e243225
 
337a0be
6094276
 
 
 
 
9a1c304
 
6094276
337a0be
6094276
 
337a0be
6094276
337a0be
d7d9f0c
 
e9271a1
d7d9f0c
 
 
 
 
 
 
 
 
e9271a1
d7d9f0c
74009d7
 
 
 
 
 
 
 
 
e9271a1
307774d
74009d7
 
 
4daa84a
 
 
 
 
 
74009d7
4daa84a
74009d7
 
307774d
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
import google.generativeai as genai
import gradio as gr
import numpy as np
import PIL.Image
import pandas as pd
import io

genai.configure(api_key="AIzaSyA7tPavobVN5_3-BJ0qhFT5HVjO4V19QWk")

def ImageChat(image):
    # Configuración de la personalidad del sistema
    system_prompt = "Sólo puedes responder en idioma español: Sí o No."
    
    # Lista de preguntas preconfiguradas
    questions = [
        "¿La persona está utilizando auriculares?",
        "¿La persona está utilizando capucha o algo que le cubra la cabeza?",
        "¿Existe dinero como monedas o billetes que estén el piso?",
        "¿La persona se encuentra interactuando con su teléfono móvil?"
    ]

    # load model
    model = genai.GenerativeModel("gemini-1.5-flash")

    # check image file and convert to a Numpy array
    try:
        if isinstance(image, np.ndarray):
            img = PIL.Image.fromarray(image)
        else:
            img = image  # image is already a PIL.Image object
    except Exception as e:
        return str(e)

    # Initialize results list
    results = []

    # Process each question
    for question in questions:
        full_prompt = f"{system_prompt}\n\n{question}"
        response = model.generate_content([full_prompt, img])
        results.append(response.text)

    # Create a DataFrame to display results as a table
    df = pd.DataFrame({"Pregunta": questions, "Respuesta": results})

    return df

def load_image(image_path):
    with open(image_path, "rb") as image_file:
        return PIL.Image.open(io.BytesIO(image_file.read()))

# Preloaded images
preloaded_images = {
    "Imagen Ejemplo 1": "chat_with_image.png",
    "Imagen Ejemplo 2": "chatwithimg_2.jpg",
    "Imagen Ejemplo 3": "chatwithimg3.png"
}

def get_selected_image(image_name):
    return load_image(preloaded_images[image_name])

with gr.Blocks() as app:
    image_selector = gr.Radio(
        choices=list(preloaded_images.keys()),
        label="Selecciona una imagen"
    )

    image_display = gr.Image(label="Imagen", type="pil")

    def update_image(selected_image_name):
        image_data = get_selected_image(selected_image_name)
        return image_data

    image_selector.change(fn=update_image, inputs=image_selector, outputs=image_display)

    analyze_button = gr.Button("Analizar Imagen")

    results_display = gr.Dataframe(headers=["Pregunta", "Respuesta"], label="Resultados")

    def analyze_image(image):
        return ImageChat(image)

    analyze_button.click(fn=analyze_image, inputs=image_display, outputs=results_display)

app.launch()