Spaces:
Sleeping
Sleeping
Commit 路
c3cdac5
1
Parent(s): 8b9436b
feat: patch app.py
Browse files
app.py
CHANGED
|
@@ -12,8 +12,6 @@ from addict import Dict
|
|
| 12 |
# 馃専 PARCHE EXTENDIDO PARA EVITAR CRASHEOS EN CPU
|
| 13 |
if not torch.cuda.is_available():
|
| 14 |
print("Aplicando parches de CPU para ClimateGAN...")
|
| 15 |
-
|
| 16 |
-
# 1. Parche para el temporizador (Timer)
|
| 17 |
class DummyEvent:
|
| 18 |
def __init__(self, *args, **kwargs): pass
|
| 19 |
def record(self, *args, **kwargs): pass
|
|
@@ -22,10 +20,8 @@ if not torch.cuda.is_available():
|
|
| 22 |
|
| 23 |
torch.cuda.Event = DummyEvent
|
| 24 |
torch.cuda.synchronize = lambda *args, **kwargs: None
|
| 25 |
-
|
| 26 |
-
# 2. NUEVO: Parche para interceptar .cuda() forzados en el c贸digo fuente
|
| 27 |
-
# Evita que el SPADEResnetBlock y otros m贸dulos crasheen al instanciarse
|
| 28 |
torch.nn.Module.cuda = lambda self, *args, **kwargs: self
|
|
|
|
| 29 |
# ---------------------------------------------------------------------------
|
| 30 |
# CARGA DEL MODELO
|
| 31 |
# ---------------------------------------------------------------------------
|
|
@@ -35,11 +31,9 @@ try:
|
|
| 35 |
print("Descargando pesos y configuraci贸n...")
|
| 36 |
hf_token = os.environ.get("HF_TOKEN")
|
| 37 |
|
| 38 |
-
# 1. Descargamos los pesos
|
| 39 |
m_path = hf_hub_download(repo_id="ivanmorals/climategan_weights", filename="masker.pth", token=hf_token)
|
| 40 |
p_path = hf_hub_download(repo_id="ivanmorals/climategan_weights", filename="painter.pth", token=hf_token)
|
| 41 |
|
| 42 |
-
# 2. Descargamos LOS DOS archivos de configuraci贸n (YAML)
|
| 43 |
opts_m_path = hf_hub_download(repo_id="ivanmorals/climategan_weights", filename="opts_masker.yaml", token=hf_token)
|
| 44 |
opts_p_path = hf_hub_download(repo_id="ivanmorals/climategan_weights", filename="opts_painter.yaml", token=hf_token)
|
| 45 |
|
|
@@ -50,10 +44,10 @@ try:
|
|
| 50 |
with open(opts_p_path, "r") as f_p:
|
| 51 |
opts_painter = Dict(yaml.safe_load(f_p))
|
| 52 |
|
| 53 |
-
#
|
| 54 |
opts.gen.p = opts_painter.gen.p
|
| 55 |
|
| 56 |
-
#
|
| 57 |
opts.tasks = ["m", "p", "d", "s"]
|
| 58 |
opts.load_paths.m = m_path
|
| 59 |
opts.load_paths.p = p_path
|
|
@@ -68,12 +62,9 @@ try:
|
|
| 68 |
opts.train.kitti.pretrain = False
|
| 69 |
opts.train.pseudo.tasks = []
|
| 70 |
|
| 71 |
-
#
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
transform_dict.name = "resize"
|
| 75 |
-
transform_dict.new_size.default = (640, 640)
|
| 76 |
-
opts.data.transforms = [transform_dict]
|
| 77 |
opts.events.smog.airlight = 1.0
|
| 78 |
opts.events.smog.beta = 0.1
|
| 79 |
opts.events.smog.vr = 10.0
|
|
|
|
| 12 |
# 馃専 PARCHE EXTENDIDO PARA EVITAR CRASHEOS EN CPU
|
| 13 |
if not torch.cuda.is_available():
|
| 14 |
print("Aplicando parches de CPU para ClimateGAN...")
|
|
|
|
|
|
|
| 15 |
class DummyEvent:
|
| 16 |
def __init__(self, *args, **kwargs): pass
|
| 17 |
def record(self, *args, **kwargs): pass
|
|
|
|
| 20 |
|
| 21 |
torch.cuda.Event = DummyEvent
|
| 22 |
torch.cuda.synchronize = lambda *args, **kwargs: None
|
|
|
|
|
|
|
|
|
|
| 23 |
torch.nn.Module.cuda = lambda self, *args, **kwargs: self
|
| 24 |
+
|
| 25 |
# ---------------------------------------------------------------------------
|
| 26 |
# CARGA DEL MODELO
|
| 27 |
# ---------------------------------------------------------------------------
|
|
|
|
| 31 |
print("Descargando pesos y configuraci贸n...")
|
| 32 |
hf_token = os.environ.get("HF_TOKEN")
|
| 33 |
|
|
|
|
| 34 |
m_path = hf_hub_download(repo_id="ivanmorals/climategan_weights", filename="masker.pth", token=hf_token)
|
| 35 |
p_path = hf_hub_download(repo_id="ivanmorals/climategan_weights", filename="painter.pth", token=hf_token)
|
| 36 |
|
|
|
|
| 37 |
opts_m_path = hf_hub_download(repo_id="ivanmorals/climategan_weights", filename="opts_masker.yaml", token=hf_token)
|
| 38 |
opts_p_path = hf_hub_download(repo_id="ivanmorals/climategan_weights", filename="opts_painter.yaml", token=hf_token)
|
| 39 |
|
|
|
|
| 44 |
with open(opts_p_path, "r") as f_p:
|
| 45 |
opts_painter = Dict(yaml.safe_load(f_p))
|
| 46 |
|
| 47 |
+
# 馃専 LA FUSI脫N: Injertamos la arquitectura del Painter en la base del Masker
|
| 48 |
opts.gen.p = opts_painter.gen.p
|
| 49 |
|
| 50 |
+
# Ajustes forzados para inferencia en Hugging Face
|
| 51 |
opts.tasks = ["m", "p", "d", "s"]
|
| 52 |
opts.load_paths.m = m_path
|
| 53 |
opts.load_paths.p = p_path
|
|
|
|
| 62 |
opts.train.kitti.pretrain = False
|
| 63 |
opts.train.pseudo.tasks = []
|
| 64 |
|
| 65 |
+
# 馃専 SE ELIMIN脫 EL PARCHE DE RESOLUCI脫N (opts.data.transforms). EL YAML TIENE EL CONTROL.
|
| 66 |
+
|
| 67 |
+
# Parche de seguridad para eventos (Por si acaso el YAML no los trae completos)
|
|
|
|
|
|
|
|
|
|
| 68 |
opts.events.smog.airlight = 1.0
|
| 69 |
opts.events.smog.beta = 0.1
|
| 70 |
opts.events.smog.vr = 10.0
|