voyager / app.py
ezeanubis's picture
Update app.py
097a1ae verified
import gradio as gr
import torch
import yaml
import os
from tools.infer import main as run_inference
# Ruta base del modelo
MODEL_DIR = "./model_weights"
CONFIG_PATH = "./configs/voyager.yaml"
# Carga de configuración
if os.path.exists(CONFIG_PATH):
with open(CONFIG_PATH, "r") as f:
config = yaml.safe_load(f)
else:
config = {}
# Definir función de inferencia
def generate_scene(prompt, steps=20, seed=42):
"""
Genera una imagen o escena usando el modelo HunyuanWorld-Voyager.
"""
os.makedirs("outputs", exist_ok=True)
input_args = {
"config": CONFIG_PATH,
"ckpt": os.path.join(MODEL_DIR, "pytorch_model.bin"),
"prompt": prompt,
"steps": steps,
"seed": seed,
"out_dir": "outputs/"
}
# Ejecutar el script de inferencia del repo original
try:
run_inference(**input_args)
result_files = [f for f in os.listdir("outputs") if f.endswith((".png", ".jpg"))]
if result_files:
latest = os.path.join("outputs", result_files[-1])
return latest
else:
return "No se generó ninguna imagen."
except Exception as e:
return f"Error al generar: {str(e)}"
# Interfaz Gradio
demo = gr.Interface(
fn=generate_scene,
inputs=[
gr.Textbox(label="Prompt de escena o descripción"),
gr.Slider(1, 50, value=20, step=1, label="Steps de inferencia"),
gr.Number(value=42, label="Seed (aleatorio)")
],
outputs=gr.Image(label="Resultado"),
title="🎨 HunyuanWorld-Voyager — Tencent",
description="Generador de escenas 3D e imágenes a partir de texto usando el modelo HunyuanWorld-Voyager."
)
if __name__ == "__main__":
demo.launch()