File size: 1,838 Bytes
fd4b460
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
57
58
59
60
61
62
63
import gradio as gr
import tensorflow as tf
import numpy as np
from scipy.spatial.distance import cosine
import cv2
import os

# Load the embedding model
embedding_model = tf.keras.models.load_model('embedding_model.h5')

# Database to store embeddings and user IDs
user_embeddings = {}

# Preprocess the image
def preprocess_image(image):
    image = cv2.resize(image, (200, 200))  # Assuming your model expects 200x200 input
    image = tf.keras.applications.resnet50.preprocess_input(image)
    return np.expand_dims(image, axis=0)

# Generate embedding
def generate_embedding(image):
    preprocessed_image = preprocess_image(image)
    return embedding_model.predict(preprocessed_image)[0]

# Register new user
def register_user(image, user_id):
    embedding = generate_embedding(image)
    user_embeddings[user_id] = embedding
    return f"User {user_id} registered successfully."

# Recognize user
def recognize_user(image):
    new_embedding = generate_embedding(image)
    min_distance = float('inf')
    recognized_user_id = "Unknown"
    
    for user_id, embedding in user_embeddings.items():
        distance = cosine(new_embedding, embedding)
        if distance < min_distance:
            min_distance = distance
            recognized_user_id = user_id

    return f"Recognized User: {recognized_user_id}"

# Gradio interface for registering users
register_interface = gr.Interface(
    fn=register_user,
    inputs=[gr.inputs.Image(shape=(200, 200)), gr.inputs.Textbox(label="User ID")],
    outputs="text",
    live=True
)

# Gradio interface for recognizing users
recognize_interface = gr.Interface(
    fn=recognize_user,
    inputs=gr.inputs.Image(shape=(200, 200)),
    outputs="text",
    live=True
)

if __name__ == "__main__":
    register_interface.launch(share=True)
    recognize_interface.launch(share=True)