File size: 1,614 Bytes
8da06e3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from deepface import DeepFace
import numpy as np
import PIL
from PIL import Image, ImageDraw, ImageFont
import time

dbackends = [
  'opencv', 
  'ssd', 
  'dlib', 
  'mtcnn', 
  'retinaface', 
  'mediapipe',
  'yolov8',
  'yunet',
  'fastmtcnn',
]

annotated_image = gr.AnnotatedImage()
jsontext =  gr.Text(label= "deepface extract_faces results",)

def findFaces(imgfile,dbackend):
	start_time = time.time()
	print(start_time)

	face_objs = DeepFace.extract_faces(img_path = imgfile, enforce_detection = False, detector_backend = dbackend)
	numberoffaces = len(face_objs)
	jsontext = ''
	faceannotations = []
	for face_obj in face_objs:
		face_coordinates = (face_obj["facial_area"]["x"],face_obj["facial_area"]["y"], (face_obj["facial_area"]["x"] + face_obj["facial_area"]["w"]),(face_obj["facial_area"]["y"] + face_obj["facial_area"]["h"]))
		face_confidence =  "{:.0%}".format(face_obj["confidence"])
		face_result=[face_coordinates,face_confidence]
		faceannotations.append(face_result)
	jsontext=faceannotations
	run_time = str(round((time.time() - start_time),2))
	results = gr.AnnotatedImage(
        label= "Detected " + str(numberoffaces) + " faces via " + dbackend + ' in ' + run_time + ' seconds.',
        value=(imgfile, faceannotations)
    )
	
	print(run_time)
	return(results,jsontext,numberoffaces,run_time)

dbackendchoice = gr.Radio(choices=dbackends,label='Detector Backend:')
demo = gr.Interface(
	allow_flagging = "never",
	fn=findFaces,
	inputs=[gr.Image(value="8428_26_SM.jpg"), dbackendchoice],
	outputs=[annotated_image,jsontext],
	
)

demo.launch(show_error=True)