Update app.py
Browse files
app.py
CHANGED
|
@@ -9,14 +9,15 @@ import gradio as gr
|
|
| 9 |
# ==========================================
|
| 10 |
# 1. CONFIGURATION CHIRURGICALE
|
| 11 |
# ==========================================
|
| 12 |
-
DEVICE = torch.device("
|
| 13 |
MODEL_INPUT_SIZE = 224 # Taille obligatoire pour le Vision Transformer (ViT)
|
| 14 |
-
REPO_ID = "KTXStudio/MinecraftSkinImg-To-Img"
|
| 15 |
FILENAME = "vit_minecraft_core.pth"
|
| 16 |
-
DEVICE = torch.device("cpu")
|
| 17 |
SKIN_SIZE = 128 # Taille cible HD du skin Minecraft
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
| 20 |
|
| 21 |
# ==========================================
|
| 22 |
# 2. ARCHITECTURE EXACTE : VISION TRANSFORMER
|
|
@@ -24,8 +25,8 @@ model_weights_path = hf_hub_download(repo_id=REPO_ID, filename=FILENAME)
|
|
| 24 |
class ViTSkinGenerator(nn.Module):
|
| 25 |
def __init__(self):
|
| 26 |
super().__init__()
|
| 27 |
-
#
|
| 28 |
-
vit = models.vit_b_16(
|
| 29 |
self.transformer_core = vit
|
| 30 |
num_features = vit.heads.head.in_features
|
| 31 |
|
|
@@ -49,11 +50,8 @@ class ViTSkinGenerator(nn.Module):
|
|
| 49 |
# 3. CHARGEMENT DE VOS POIDS AU LANCEMENT
|
| 50 |
# ==========================================
|
| 51 |
model = ViTSkinGenerator().to(DEVICE)
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
model.load_state_dict(torch.load(MODEL_PATH, map_location=DEVICE))
|
| 55 |
-
else:
|
| 56 |
-
print(f"⚠️ Attention : Fichier '{MODEL_PATH}' introuvable à la racine.")
|
| 57 |
model.eval()
|
| 58 |
|
| 59 |
# ==========================================
|
|
@@ -79,7 +77,7 @@ def predict_skin(input_image):
|
|
| 79 |
# 3. Post-traitement strict Pixel Art (NEAREST pour éviter le flou baveux)
|
| 80 |
tensor_out = torch.clamp(tensor_out, 0, 1)
|
| 81 |
skin_pil = transforms.ToPILImage()(tensor_out)
|
| 82 |
-
skin_final = skin_pil.resize((SKIN_SIZE, SKIN_SIZE), Image.NEAREST)
|
| 83 |
|
| 84 |
return skin_final
|
| 85 |
|
|
|
|
| 9 |
# ==========================================
|
| 10 |
# 1. CONFIGURATION CHIRURGICALE
|
| 11 |
# ==========================================
|
| 12 |
+
DEVICE = torch.device("cpu") # Forcé sur CPU pour un Space CPU standard
|
| 13 |
MODEL_INPUT_SIZE = 224 # Taille obligatoire pour le Vision Transformer (ViT)
|
| 14 |
+
REPO_ID = "KTXStudio/MinecraftSkinImg-To-Img"
|
| 15 |
FILENAME = "vit_minecraft_core.pth"
|
|
|
|
| 16 |
SKIN_SIZE = 128 # Taille cible HD du skin Minecraft
|
| 17 |
+
|
| 18 |
+
# Téléchargement automatique depuis Hugging Face Hub au démarrage
|
| 19 |
+
print("⏳ Téléchargement des poids depuis le Hub...")
|
| 20 |
+
MODEL_PATH = hf_hub_download(repo_id=REPO_ID, filename=FILENAME)
|
| 21 |
|
| 22 |
# ==========================================
|
| 23 |
# 2. ARCHITECTURE EXACTE : VISION TRANSFORMER
|
|
|
|
| 25 |
class ViTSkinGenerator(nn.Module):
|
| 26 |
def __init__(self):
|
| 27 |
super().__init__()
|
| 28 |
+
# weights=None remplace pretrained=False dans les versions récentes de torchvision
|
| 29 |
+
vit = models.vit_b_16(weights=None)
|
| 30 |
self.transformer_core = vit
|
| 31 |
num_features = vit.heads.head.in_features
|
| 32 |
|
|
|
|
| 50 |
# 3. CHARGEMENT DE VOS POIDS AU LANCEMENT
|
| 51 |
# ==========================================
|
| 52 |
model = ViTSkinGenerator().to(DEVICE)
|
| 53 |
+
print(f"💾 Chargement des poids depuis le cache local : {MODEL_PATH}...")
|
| 54 |
+
model.load_state_dict(torch.load(MODEL_PATH, map_location=DEVICE))
|
|
|
|
|
|
|
|
|
|
| 55 |
model.eval()
|
| 56 |
|
| 57 |
# ==========================================
|
|
|
|
| 77 |
# 3. Post-traitement strict Pixel Art (NEAREST pour éviter le flou baveux)
|
| 78 |
tensor_out = torch.clamp(tensor_out, 0, 1)
|
| 79 |
skin_pil = transforms.ToPILImage()(tensor_out)
|
| 80 |
+
skin_final = skin_pil.resize((SKIN_SIZE, SKIN_SIZE), Image.Resampling.NEAREST)
|
| 81 |
|
| 82 |
return skin_final
|
| 83 |
|