|
import torch |
|
import gradio as gr |
|
import matplotlib.pyplot as plt |
|
from sentence_transformers import SentenceTransformer |
|
from sklearn.metrics.pairwise import cosine_similarity |
|
|
|
model = SentenceTransformer('clip-ViT-L-14') |
|
|
|
def predict(im1, im2): |
|
embeding = model.encode([im1, im2]) |
|
sim = cosine_similarity(embeding) |
|
sim = sim[0][1] |
|
if sim > 0.75: |
|
return sim, "SAME PERSON, UNLOCK PHONE" |
|
else: |
|
return sim, "DIFFERENT PEOPLE, DON'T UNLOCK" |
|
|
|
|
|
title="Face-id Application Demo 🤓" |
|
description = "Upload similar/different images to compare Image similarity for face-id demo" |
|
article = """ |
|
- Select any two facial images from your device or use a webcam. |
|
- Alternatively, select any pair of examples facial images provided for demo |
|
- Click submit button for image face comparison |
|
- Click clear button to try new Images |
|
""" |
|
|
|
img_upload = gr.Interface( |
|
fn=predict, |
|
inputs= [gr.Image(type="pil", source="upload"), |
|
gr.Image(type="pil", source="upload")], |
|
outputs= [gr.Number(label="Similarity"), |
|
gr.Textbox(label="Message")], |
|
title=title, |
|
description=description, |
|
article=article, |
|
examples=[['examples/img1.jpg', 'examples/img2.jpg'], |
|
['examples/img1.jpg', 'examples/img3.jpg']] |
|
) |
|
|
|
webcam_upload = gr.Interface( |
|
fn=predict, |
|
inputs= [gr.Image(type="pil", source="webcam"), |
|
gr.Image(type="pil", source="webcam")], |
|
outputs= [gr.Number(label="Similarity"), |
|
gr.Textbox(label="Message")], |
|
title=title, |
|
description=description, |
|
article=article, |
|
) |
|
|
|
face_id = gr.TabbedInterface( |
|
[img_upload, webcam_upload], |
|
["Upload-Image", "Use Webcam"]) |
|
|
|
face_id.launch(debug=True) |
|
|