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"}