Spaces:
Running
Running
File size: 1,819 Bytes
3a24a03 | 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 | import os
from pathlib import Path
import torch
from huggingface_hub import hf_hub_download
# 1. Hardware
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
if "mps" in str(torch.backends.mps.is_available()):
DEVICE = "mps"
# 2. Diretorios base
ROOT_DIR = Path(__file__).resolve().parent.parent
# 3. Estrutura de Pastas
MODELS_DIR = ROOT_DIR / "models"
CONFIG_DIR = ROOT_DIR / "config"
SCRIPTS_DIR = ROOT_DIR / "scripts"
# Garante que a pasta existe no servidor
MODELS_DIR.mkdir(parents=True, exist_ok=True)
# 4. Gestor de Download em Producao (Cloud-Native SOTA)
# Substitui pelo nome exato do Model que criaste no Passo 1
HF_REPO_ID = "liamu/Deepfake-Pesos"
def get_model_path(filename: str) -> Path:
"""
Verifica se o peso existe localmente. Se nao, faz download seguro do HF Hub.
O hf_hub_download usa cache, logo so descarrega a primeira vez.
"""
local_path = MODELS_DIR / filename
if not local_path.exists():
print(f"A inicializar SOTA: A descarregar {filename} da infraestrutura cloud...")
try:
downloaded_path = hf_hub_download(
repo_id=HF_REPO_ID,
filename=filename,
local_dir=MODELS_DIR
)
return Path(downloaded_path)
except Exception as e:
raise FileNotFoundError(f"Falha ao transferir {filename}. Verifica o nome do repositorio. Erro: {e}")
return local_path
FUSION_WEIGHTS = CONFIG_DIR / "fusion_weights.json"
# 6. Constantes (CLIP Surgery)
CLIP_MEAN = (0.48145466, 0.4578275, 0.40821073)
CLIP_STD = (0.26862954, 0.26130258, 0.27577711)
SURGERY_RES = 512
MANIPULATION_PROMPTS = ["AI face manipulation"]
REAL_PROMPTS = ["real human face"]
SURGERY_PROMPTS = MANIPULATION_PROMPTS + REAL_PROMPTS
FAKE_PROMPT_KEYWORDS = {"AI", "manipulation"} |