Aduc-sdr-2_5s / app_seedvr.py
carlex3321's picture
Create app_seedvr.py
7241f01 verified
raw
history blame
3.07 kB
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
from pathlib import Path
from typing import Optional, Tuple
import gradio as gr
from services.seedvr import SeedVRRefineService
APP_HOME = Path(os.environ.get("APP_HOME", "/app"))
OUT_DIR = APP_HOME / "outputs" / "seedvr_refine"
svc = SeedVRRefineService()
def setup() -> str:
try:
token = os.environ.get("HF_TOKEN") or os.environ.get("HFTOKEN")
msg = svc.ensure_model(max_workers=int(os.environ.get("MAX_WORKERS", "48")), token=token)
svc.ensure_apex(enable_shim=True)
return f"Setup concluído: {msg} (apex shim ativo)."
except Exception as e:
return f"Setup falhou: {e}"
def refine_ui(
input_file: gr.File,
upscale: float,
strength: float,
denoise: float,
t_consistency: float,
fps_out: int,
tile: int,
dtype: str
) -> Tuple[str, str]:
try:
inp = Path(input_file.name) if hasattr(input_file, "name") else Path(input_file)
out = svc.refine(
input_path=inp,
output_dir=OUT_DIR,
upscale=upscale,
strength=strength,
denoise=denoise,
t_consistency=t_consistency,
fps_out=(None if fps_out <= 0 else fps_out),
tile=(None if tile <= 0 else tile),
dtype=(None if not dtype else dtype)
)
return (f"OK: saída em {out}", out)
except Exception as e:
return (f"Erro: {e}", "")
with gr.Blocks(title="SeedVR — Refinamento (sem Apex)", theme="Default") as demo:
gr.Markdown("### SeedVR — Refinamento de vídeo/imagem (qualidade, sem Apex)")
with gr.Row():
with gr.Column(scale=2):
input_file = gr.File(label="Vídeo/Imagem de entrada", type="filepath")
upscale = gr.Slider(1.0, 2.0, value=1.0, step=0.1, label="Upscale factor")
strength = gr.Slider(0.0, 1.0, value=0.35, step=0.05, label="Força do refine")
denoise = gr.Slider(0.0, 1.0, value=0.1, step=0.05, label="Denoise")
tcons = gr.Slider(0.0, 1.0, value=0.7, step=0.05, label="Consistência temporal")
fps_out = gr.Number(value=0, precision=0, label="FPS saída (0 = manter)")
tile = gr.Number(value=0, precision=0, label="Tile (0 = off)")
dtype = gr.Dropdown(choices=["", "bfloat16", "float16"], value="", label="Dtype override")
go = gr.Button("Refinar", variant="primary")
with gr.Column(scale=1):
status = gr.Textbox(label="Status")
outdir = gr.Textbox(label="Saída", value=str(OUT_DIR), interactive=False)
go.click(
fn=refine_ui,
inputs=[input_file, upscale, strength, denoise, tcons, fps_out, tile, dtype],
outputs=[status, outdir]
)
init = gr.Button("Preparar modelos (setup)")
init.click(fn=setup, outputs=status)
if __name__ == "__main__":
port = int(os.environ.get("PORT", "7860"))
demo.launch(server_name="0.0.0.0", server_port=port, allowed_paths=[str(OUT_DIR), str(APP_HOME / "ckpt" / "SeedVR2-3B")])