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 xFaceImage.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