|
import gradio as gr |
|
|
|
import numpy as np |
|
from deepface import DeepFace |
|
from pymongo.mongo_client import MongoClient |
|
|
|
credentials = "jamshaid:jamshaid19gh" |
|
|
|
uri = f"mongodb+srv://{credentials}@cluster0.uimyui3.mongodb.net/?retryWrites=true&w=majority" |
|
client = MongoClient(uri) |
|
db = client["Face_identification"] |
|
identities_collection = db["face_identities"] |
|
|
|
def save_identity(image , name): |
|
try: |
|
embeddings = DeepFace.represent(image , model_name="Facenet") |
|
embeddings = embeddings[0] |
|
|
|
identity = {"embeddings":embeddings["embedding"] , "name" : name } |
|
|
|
result = identities_collection.insert_one(identity) |
|
|
|
return str(result) |
|
except Exception as error: |
|
return str(error) |
|
|
|
|
|
|
|
label_output = gr.outputs.Textbox() |
|
|
|
|
|
|
|
|
|
|
|
|
|
image_input = gr.inputs.Image(shape=(160, 160)) |
|
label_input = gr.inputs.Textbox(label="Enter Label") |
|
output_image = gr.outputs.Image(type="numpy") |
|
|
|
|
|
interface1 = gr.Interface( |
|
fn=save_identity, |
|
inputs=[image_input, label_input], |
|
outputs=label_output, |
|
title="Face Identification", |
|
description="Upload an image, enter the person name and store the person in database", |
|
) |
|
|
|
|
|
|
|
image_input2 = gr.inputs.Image(shape=(None, None)) |
|
output_image = gr.outputs.Image(type="numpy") |
|
|
|
|
|
interface2 = gr.Interface( |
|
fn=process_image, |
|
inputs=image_input2, |
|
outputs=output_image, |
|
title="Face Identification", |
|
description="Upload an image and get the identity of person", |
|
) |
|
|
|
|
|
interface = gr.Interface(title="Face identification App") |
|
interface.add_view(interface1, "Save", "Add new person") |
|
interface.add_view(interface2, "Predict", "Get identity of person") |
|
|
|
|
|
interface.launch() |
|
|