RaquelTP25 commited on
Commit
f2889d6
·
verified ·
1 Parent(s): d314453

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -16
app.py CHANGED
@@ -3,24 +3,64 @@ from transformers import AutoProcessor, AutoModelForImageClassification
3
  from PIL import Image
4
  import torch
5
 
6
- # Load model directly
7
- processor = AutoProcessor.from_pretrained("prithivMLmods/Alphabet-Sign-Language-Detection")
8
- model = AutoModelForImageClassification.from_pretrained("prithivMLmods/Alphabet-Sign-Language-Detection")
9
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  def predict_sign(image):
11
- # Resize to 224x224 and ensure RGB
12
- image = image.resize((224, 224)).convert('RGB')
13
- inputs = processor(images=image, return_tensors="pt")
14
- with torch.no_grad():
15
- outputs = model(**inputs)
16
- predicted_class = outputs.logits.argmax(-1).item()
17
- label = model.config.id2label.get(predicted_class, "Unknown")
18
- return label
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
  gr.Interface(
21
  fn=predict_sign,
22
- inputs="image",
23
- outputs="text",
24
- title="Reconocimiento de Lenguaje de Señas (ASL)",
25
- description="Sube una imagen de una letra en lenguaje de señas y obtén la predicción."
26
- ).launch(share=True)
 
 
 
3
  from PIL import Image
4
  import torch
5
 
6
+ # Modelo válido y público
7
+ MODEL_NAME = "prithivMLmods/Alphabet-Sign-Language-Detection"
 
8
 
9
+ # --- Carga del modelo y procesador ---
10
+ try:
11
+ processor = AutoProcessor.from_pretrained(MODEL_NAME)
12
+ model = AutoModelForImageClassification.from_pretrained(MODEL_NAME)
13
+ model.eval()
14
+ print(f"✅ Modelo '{MODEL_NAME}' cargado correctamente.")
15
+ except Exception as e:
16
+ print(f"❌ Error al cargar el modelo '{MODEL_NAME}': {e}")
17
+ model, processor = None, None
18
+
19
+
20
+ # --- Función de predicción ---
21
  def predict_sign(image):
22
+ if model is None or processor is None:
23
+ return "❌ No se pudo cargar el modelo correctamente."
24
+
25
+ try:
26
+ # Aseguramos formato y tamaño
27
+ image = image.convert("RGB").resize((224, 224))
28
+
29
+ # Preprocesamiento
30
+ inputs = processor(images=image, return_tensors="pt")
31
+
32
+ # Inferencia sin gradientes
33
+ with torch.no_grad():
34
+ outputs = model(**inputs)
35
+ logits = outputs.logits
36
+ predicted_class = logits.argmax(-1).item()
37
+
38
+ # Obtener etiqueta (letra)
39
+ label = model.config.id2label.get(predicted_class, "Desconocido")
40
+ return f"🖐 Letra detectada: {label}"
41
+
42
+ except Exception as e:
43
+ print(f"⚠️ Error durante la predicción: {e}")
44
+ return f"⚠️ Error en la predicción: {e}"
45
+
46
+
47
+ # --- Interfaz de Gradio ---
48
+ title = "🤖 Reconocimiento de Lenguaje de Señas (ASL)"
49
+ description = (
50
+ f"Sube una imagen con una seña del alfabeto ASL (A–Z). <br>"
51
+ f"Modelo utilizado: <code>{MODEL_NAME}</code>"
52
+ )
53
+
54
+ examples = [
55
+ ["https://placehold.co/400x400/808080/FFFFFF?text=Letra+A"],
56
+ ]
57
 
58
  gr.Interface(
59
  fn=predict_sign,
60
+ inputs=gr.Image(type="pil", label="📸 Sube una imagen de una seña"),
61
+ outputs=gr.Textbox(label="Predicción"),
62
+ title=title,
63
+ description=description,
64
+ examples=examples,
65
+ allow_flagging="never"
66
+ ).launch()