Spaces:
Runtime error
Runtime error
| import pickle | |
| import cv2 | |
| import mediapipe as mp | |
| import numpy as np | |
| from PIL import Image | |
| import requests | |
| from io import BytesIO | |
| import gradio as gr | |
| from huggingface_hub import hf_hub_download | |
| labels = ['A','B','C','D','E','F','G','H','I','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y'] | |
| model_path = hf_hub_download(repo_id="Paulie-Aditya/SignSense-Model", filename="stacked_model_new.p") | |
| model_dict = pickle.load(open(model_path, "rb")) | |
| model = model_dict["model"] | |
| # # get url from backend | |
| def predict(url): | |
| response = requests.get(url) | |
| print(response) | |
| img = Image.open(BytesIO(response.content)) | |
| img.save('image.jpg') | |
| mp_hands = mp.solutions.hands | |
| mp_drawing = mp.solutions.drawing_utils | |
| mp_drawing_styles = mp.solutions.drawing_styles | |
| hands = mp_hands.Hands(static_image_mode=False, min_detection_confidence=0.3) | |
| hands.maxHands = 1 | |
| data_aux = [] | |
| x_ = [] | |
| y_ = [] | |
| frame = cv2.imread('image.jpg') | |
| H,W, _ = frame.shape | |
| frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) | |
| results = hands.process(frame_rgb) | |
| if results.multi_hand_landmarks: | |
| if(len(results.multi_hand_landmarks) == 1): | |
| for hand_landmarks in results.multi_hand_landmarks: | |
| for i in range(len(hand_landmarks.landmark)): | |
| x = hand_landmarks.landmark[i].x | |
| y = hand_landmarks.landmark[i].y | |
| x_.append(x) | |
| y_.append(y) | |
| for i in range(len(hand_landmarks.landmark)): | |
| x = hand_landmarks.landmark[i].x | |
| y = hand_landmarks.landmark[i].y | |
| data_aux.append(x - min(x_)) | |
| data_aux.append(y - min(y_)) | |
| x1 = int(min(x_) * W) - 10 | |
| y1 = int(min(y_) * H) - 10 | |
| x2 = int(max(x_) * W) - 10 | |
| y2 = int(max(y_) * H) - 10 | |
| if(len(data_aux) == 42): | |
| prediction = model.predict([np.asarray(data_aux)]) | |
| predicted_character = labels[prediction[0]] | |
| return {"prediction":predicted_character} | |
| else: | |
| return {"prediction": "Too many Hands"} | |
| iface = gr.Interface(fn=predict, inputs="image", outputs="text", title="Image to Text Model") | |
| iface.launch() |