diff --git a/frigate/api/classification.py b/frigate/api/classification.py index eee637585..48b26e355 100644 --- a/frigate/api/classification.py +++ b/frigate/api/classification.py @@ -112,9 +112,18 @@ def reclassify_face(request: Request, body: dict = None): context: EmbeddingsContext = request.app.embeddings response = context.reprocess_face(training_file) + if not isinstance(response, dict): + return JSONResponse( + status_code=500, + content={ + "success": False, + "message": "Could not process request.", + }, + ) + return JSONResponse( + status_code=200 if response.get("success", True) else 400, content=response, - status_code=200, ) diff --git a/frigate/data_processing/real_time/face.py b/frigate/data_processing/real_time/face.py index 2c6b02103..db3cb22ed 100644 --- a/frigate/data_processing/real_time/face.py +++ b/frigate/data_processing/real_time/face.py @@ -423,7 +423,10 @@ class FaceRealTimeProcessor(RealTimeProcessorApi): res = self.recognizer.classify(img) if not res: - return + return { + "message": "No face was recognized.", + "success": False, + } sub_label, score = res @@ -442,6 +445,13 @@ class FaceRealTimeProcessor(RealTimeProcessorApi): ) shutil.move(current_file, new_file) + return { + "message": f"Successfully reprocessed face. Result: {sub_label} (score: {score:.2f})", + "success": True, + "face_name": sub_label, + "score": score, + } + def expire_object(self, object_id: str, camera: str): if object_id in self.person_face_history: self.person_face_history.pop(object_id)