Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI,UploadFile | |
| from PIL import Image | |
| import mediapipe as mp | |
| import numpy as np | |
| import pandas as pd | |
| from io import BytesIO | |
| import onnxruntime as ort | |
| from Logs.detectnameanddistance import render | |
| FacesEmbedding=pd.read_csv("./Models/FacesMeanEmbeddings.csv",index_col=0) | |
| persons=list(FacesEmbedding.columns) | |
| model_path="./Models/FaceModelV5.onnx" | |
| EP_list = [ 'CPUExecutionProvider'] | |
| Session = ort.InferenceSession(model_path,providers=EP_list) | |
| input_name = Session.get_inputs()[0].name | |
| output_name=Session.get_outputs()[0].name | |
| MediapipeModelPath="./Models/face_landmarker.task" | |
| BaseOptions=mp.tasks.BaseOptions | |
| FaceLandMarker=mp.tasks.vision.FaceLandmarker | |
| FaceLandMarkerOptions=mp.tasks.vision.FaceLandmarkerOptions | |
| VisionRunningMode=mp.tasks.vision.RunningMode | |
| FaceLandMarkerResult=mp.tasks.vision.FaceLandmarkerResult | |
| options=FaceLandMarkerOptions(base_options=BaseOptions(model_asset_path=MediapipeModelPath),running_mode=VisionRunningMode.IMAGE) | |
| landmarker= FaceLandMarker.create_from_options(options) | |
| App=FastAPI() | |
| async def detect(img:UploadFile): | |
| image=np.array(Image.open(BytesIO(img.file.read()))) | |
| mp_img=mp.Image(image_format=mp.ImageFormat.SRGB,data=image) | |
| result=landmarker.detect(mp_img) | |
| if len(result.face_landmarks)==0: | |
| return {"state":False,"message":"No Face Found","distance":0,"name":"null","x1":0,"x2":0,"y1":0,"y2":0} | |
| x1,y1,x2,y2,name,distance=render(Session,input_name,output_name,FacesEmbedding,result,mp_img.numpy_view(),persons) | |
| return {"state":True,"message":"null","distance":distance,"name":name,"x1":x1,"x2":x2,"y1":y1,"y2":y2} | |