prakasa1234 commited on
Commit
b0ee9c9
·
verified ·
1 Parent(s): f1d5c4e

Upload 6 files

Browse files
Files changed (6) hide show
  1. README.md +14 -6
  2. app.py +76 -0
  3. best (1).pt +3 -0
  4. gitattributes +36 -0
  5. requirements.txt +5 -0
  6. yolov11n_finetuned_ASL.pt +3 -0
README.md CHANGED
@@ -1,12 +1,20 @@
1
  ---
2
- title: ASL
3
- emoji: 🐢
4
- colorFrom: purple
5
- colorTo: red
6
  sdk: gradio
7
  sdk_version: 5.49.1
8
  app_file: app.py
9
- pinned: false
10
  ---
11
 
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: ASL Letter Classifier
3
+ emoji: 🖐️
4
+ colorFrom: green
5
+ colorTo: green
6
  sdk: gradio
7
  sdk_version: 5.49.1
8
  app_file: app.py
9
+ pinned: true
10
  ---
11
 
12
+ # 🖐️ ASL Letter Classifier
13
+
14
+ This app uses:
15
+
16
+ - **YOLOv11 Classification** (fine-tuned on ASL alphabet images)
17
+ - **MediaPipe Hand Landmarks** for annotation
18
+ - **Gradio Web UI** for uploading and testing images
19
+
20
+ Upload a photo of a hand sign to see the detected letter and confidence.
app.py ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import cv2
3
+ import numpy as np
4
+ import torch
5
+ from ultralytics import YOLO
6
+ import gradio as gr
7
+ import traceback
8
+ # -----------------------------
9
+ # 1. YOLO model path
10
+ # -----------------------------
11
+ YOLO_MODEL_PATH = "best.pt" # Push this small model to HF repo
12
+
13
+ # -----------------------------
14
+ # 2. Load YOLO model
15
+ # -----------------------------
16
+ yolo_model = YOLO(YOLO_MODEL_PATH)
17
+ yolo_model.eval()
18
+
19
+ # -----------------------------
20
+ # 3. Inference function
21
+ # -----------------------------
22
+ def predict_asl(image):
23
+ try:
24
+ if image is None:
25
+ raise ValueError("No image uploaded")
26
+
27
+ img = image.copy()
28
+ h, w, _ = img.shape
29
+ print(f"🔹 Uploaded image shape: {img.shape}, dtype: {img.dtype}")
30
+
31
+ # --- YOLO prediction directly on NumPy array ---
32
+ results = yolo_model.predict(img, imgsz=300, verbose=False)[0]
33
+ pred_idx = results.probs.top1
34
+ pred_label = results.names[pred_idx]
35
+ confidence = results.probs.data[pred_idx].item()
36
+
37
+ # Overlay prediction text on original image
38
+ cv2.putText(
39
+ img,
40
+ f"{pred_label} ({confidence:.2f})",
41
+ (10, 30),
42
+ cv2.FONT_HERSHEY_SIMPLEX,
43
+ 1,
44
+ (0, 0, 255),
45
+ 2,
46
+ cv2.LINE_AA
47
+ )
48
+
49
+ return cv2.cvtColor(img, cv2.COLOR_BGR2RGB), pred_label, round(confidence, 2)
50
+
51
+ except Exception as e:
52
+ print("❌ Error in predict_asl:", e)
53
+ traceback.print_exc()
54
+ return image, "Error", 0.0
55
+
56
+ # -----------------------------
57
+ # 4. Gradio Interface
58
+ # -----------------------------
59
+ title = "🖐️ ASL Letter Classifier"
60
+ description = "Upload a hand sign image and see the predicted letter and confidence."
61
+
62
+ iface = gr.Interface(
63
+ fn=predict_asl,
64
+ inputs=gr.Image(type="numpy"),
65
+ outputs=[
66
+ gr.Image(type="numpy", label="Original Image with Prediction"),
67
+ gr.Textbox(label="Predicted Letter"),
68
+ gr.Textbox(label="Confidence")
69
+ ],
70
+ title=title,
71
+ description=description,
72
+ allow_flagging="never"
73
+ )
74
+
75
+ if __name__ == "__main__":
76
+ iface.launch(share=True)
best (1).pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:607c9e1545dba54efee9c9985310c30c94b74f33173b32367689cf5a43d768f2
3
+ size 3246722
gitattributes ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ *.task filter=lfs diff=lfs merge=lfs -text
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ ultralytics
2
+ torch
3
+ gradio
4
+ mediapipe
5
+ requests
yolov11n_finetuned_ASL.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4f5f1e19e26f3024d8b7ba2df598bf6981728cdc6ebd133975a85af08e5682c2
3
+ size 3246722