Spaces:
Sleeping
Sleeping
File size: 1,615 Bytes
520fb27 12aa86f 520fb27 12aa86f 520fb27 12aa86f 520fb27 12aa86f |
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 |
from PIL import Image
import numpy as np
def render(Session,input_name,output_name,FacesEmbedding,results,FaceImage,persons):
res = results.face_landmarks[0]
x_=int(res[145].x*FaceImage.shape[1])
y_=int(res[145].y*FaceImage.shape[0])
x2_=int(res[374].x*FaceImage.shape[1])
y2_=int(res[374].y*FaceImage.shape[0])
w=np.sqrt((x_-x2_)**2+(y_-y2_)**2)
W=6.3
f = 840
d = (W * f) / w
x=int(res[356].x*FaceImage.shape[1])
y=int(res[152].y*FaceImage.shape[0])
x2=int(res[162].x*FaceImage.shape[1])
y2=int(res[338].y*FaceImage.shape[0])
if x<FaceImage.shape[1]-10:
x+=10
if y>FaceImage.shape[0]-10:
y+=10
if x2>10:
x2-=10
if y2>10:
y2-=10
modelimg=FaceImage[np.abs(y2):np.abs(y),np.abs(x2):np.abs(x)]
if modelimg.size<9:
return x_,y_,x2_,y2,"Image Size is Zero ",d
modelimg=np.array(Image.fromarray(modelimg.astype("uint8")).resize((224,224)))
modelimg=modelimg/255
distances=[]
for index,name in enumerate(persons):
output=np.squeeze(Session.run([output_name],{f"{input_name}":np.expand_dims(modelimg,axis=0).astype(np.float16)})[0])
personimpeding=FacesEmbedding[name].values
distance=np.sum(np.power(output-personimpeding,2))
distances.append(distance)
name=persons[np.argmin(distances)]
distance=distances[np.argmin(distances)]
if distance <0.3:
return x_,y_,x2_,y2,name,d
else:
return x_,y_,x2_,y2,"UnKnow",d
|