Spaces:
Runtime error
Runtime error
File size: 5,154 Bytes
c428c06 c8710a3 0fe8471 14b0859 82feb26 afb8405 82feb26 14b0859 c8710a3 14b0859 82feb26 14b0859 82feb26 14b0859 82feb26 14b0859 82feb26 0fe8471 1960f8c 14b0859 0fe8471 14b0859 1960f8c 14b0859 1960f8c 14b0859 c8710a3 14b0859 afb8405 14b0859 1960f8c 14b0859 1960f8c 14b0859 0fe8471 |
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 88 89 90 91 92 93 94 95 96 97 98 99 |
import gradio as gr
from PIL import Image
import json
# Inicializa puntuaciones Elo y las guarda en un archivo
def load_elo_scores():
try:
with open("elo_scores.json", "r") as f:
return json.load(f)
except FileNotFoundError:
# Si el archivo no existe, inicializamos las puntuaciones en 1000
return {"DALL-E 3": 1000, "Midjourney 6.1": 1000, "Flux": 1000}
def save_elo_scores(elo_scores):
with open("elo_scores.json", "w") as f:
json.dump(elo_scores, f)
# Funci贸n para calcular la actualizaci贸n de Elo
def elo_update(winner_elo, loser_elo, k=32):
expected_score_winner = 1 / (1 + 10 ** ((loser_elo - winner_elo) / 400))
new_winner_elo = winner_elo + k * (1 - expected_score_winner)
new_loser_elo = loser_elo + k * (0 - (1 - expected_score_winner))
return new_winner_elo, new_loser_elo
# Cargar im谩genes predefinidas
def load_images():
dalle3_image = Image.open("images/dalle3_image.png")
midjourney_image = Image.open("images/midjourney_image.png")
flux_image = Image.open("images/flux_image.png")
return dalle3_image, midjourney_image, flux_image
# Actualizar el puntaje Elo basado en la votaci贸n
def update_elo(first, second, third):
global elo_scores
# Primera elecci贸n
if first == "DALL-E 3":
elo_scores["DALL-E 3"], elo_scores["Midjourney 6.1"] = elo_update(elo_scores["DALL-E 3"], elo_scores["Midjourney 6.1"])
elo_scores["DALL-E 3"], elo_scores["Flux"] = elo_update(elo_scores["DALL-E 3"], elo_scores["Flux"])
elif first == "Midjourney 6.1":
elo_scores["Midjourney 6.1"], elo_scores["DALL-E 3"] = elo_update(elo_scores["Midjourney 6.1"], elo_scores["DALL-E 3"])
elo_scores["Midjourney 6.1"], elo_scores["Flux"] = elo_update(elo_scores["Midjourney 6.1"], elo_scores["Flux"])
elif first == "Flux":
elo_scores["Flux"], elo_scores["DALL-E 3"] = elo_update(elo_scores["Flux"], elo_scores["DALL-E 3"])
elo_scores["Flux"], elo_scores["Midjourney 6.1"] = elo_update(elo_scores["Flux"], elo_scores["Midjourney 6.1"])
# Segunda elecci贸n
if second == "DALL-E 3":
elo_scores["DALL-E 3"], elo_scores["Midjourney 6.1"] = elo_update(elo_scores["DALL-E 3"], elo_scores["Midjourney 6.1"])
elo_scores["DALL-E 3"], elo_scores["Flux"] = elo_update(elo_scores["DALL-E 3"], elo_scores["Flux"])
elif second == "Midjourney 6.1":
elo_scores["Midjourney 6.1"], elo_scores["DALL-E 3"] = elo_update(elo_scores["Midjourney 6.1"], elo_scores["DALL-E 3"])
elo_scores["Midjourney 6.1"], elo_scores["Flux"] = elo_update(elo_scores["Midjourney 6.1"], elo_scores["Flux"])
elif second == "Flux":
elo_scores["Flux"], elo_scores["DALL-E 3"] = elo_update(elo_scores["Flux"], elo_scores["DALL-E 3"])
elo_scores["Flux"], elo_scores["Midjourney 6.1"] = elo_update(elo_scores["Flux"], elo_scores["Midjourney 6.1"])
save_elo_scores(elo_scores)
return elo_scores["DALL-E 3"], elo_scores["Midjourney 6.1"], elo_scores["Flux"]
# Cargar las puntuaciones Elo
elo_scores = load_elo_scores()
# Interfaz Gradio
def vote(first, second, third):
dalle3_score, midjourney_score, flux_score = update_elo(first, second, third)
dalle3_image, midjourney_image, flux_image = load_images()
return dalle3_image, midjourney_image, flux_image, f"DALL-E 3: {round(dalle3_score)}", f"Midjourney 6.1: {round(midjourney_score)}", f"Flux: {round(flux_score)}"
# Cargar im谩genes al inicio
dalle3_image, midjourney_image, flux_image = load_images()
with gr.Blocks() as demo:
gr.Markdown("# Akelarre Generativo (DALL-E 3 vs MJ 6.1 vs Flux 1)")
gr.Markdown("### Vota por la imagen generada por IA que prefieras. La puntuaci贸n Elo se actualizar谩 en tiempo real.")
dalle3_img = gr.Image(value=dalle3_image, label="DALL-E 3", interactive=False, height=512, width=512)
midjourney_img = gr.Image(value=midjourney_image, label="Midjourney 6.1", interactive=False, height=512, width=512)
flux_img = gr.Image(value=flux_image, label="Flux", interactive=False, height=512, width=512)
with gr.Row():
first_choice = gr.Dropdown(["DALL-E 3", "Midjourney 6.1", "Flux"], label="Primera Favorita")
second_choice = gr.Dropdown(["DALL-E 3", "Midjourney 6.1", "Flux"], label="Segunda Favorita")
third_choice = gr.Dropdown(["DALL-E 3", "Midjourney 6.1", "Flux"], label="Tercera Favorita")
with gr.Row():
dalle3_score_text = gr.Textbox(value=f"DALL-E 3: {elo_scores['DALL-E 3']}", label="Puntuaci贸n DALL-E 3", interactive=False)
midjourney_score_text = gr.Textbox(value=f"Midjourney 6.1: {elo_scores['Midjourney 6.1']}", label="Puntuaci贸n Midjourney 6.1", interactive=False)
flux_score_text = gr.Textbox(value=f"Flux: {elo_scores['Flux']}", label="Puntuaci贸n Flux", interactive=False)
vote_button = gr.Button("Votar y Actualizar")
vote_button.click(vote, inputs=[first_choice, second_choice, third_choice],
outputs=[dalle3_img, midjourney_img, flux_img,
dalle3_score_text, midjourney_score_text, flux_score_text])
demo.launch()
|