From cb779211f18b5c12dafc48b08d4225a750b6e95e Mon Sep 17 00:00:00 2001 From: Weitheng Haw Date: Tue, 28 Jan 2025 16:18:28 +0000 Subject: [PATCH] Rebuild classifier when deleting face image --- frigate/api/classification.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/frigate/api/classification.py b/frigate/api/classification.py index 1689c8f6c..0d61f730d 100644 --- a/frigate/api/classification.py +++ b/frigate/api/classification.py @@ -134,6 +134,14 @@ def deregister_faces(request: Request, name: str, body: dict = None): context.delete_face_ids( name, map(lambda file: sanitize_filename(file), list_of_ids) ) + + context: EmbeddingsContext = request.app.embeddings + context.clear_face_classifier() + + return JSONResponse( + content={"success": True, "message": "Successfully deleted faces."}, + status_code=200, + ) except Exception as e: logger.error(f"Failed to delete face: {str(e)}") return JSONResponse( @@ -141,11 +149,6 @@ def deregister_faces(request: Request, name: str, body: dict = None): status_code=500, ) - return JSONResponse( - content={"success": True, "message": "Successfully deleted faces."}, - status_code=200, - ) - @router.post("/faces/{name}/create") def create_face(name: str): @@ -198,11 +201,9 @@ def rename_face(request: Request, name: str, body: dict = None): ) try: - # Use atomic operation when possible try: os.rename(old_folder, new_folder) except OSError: - # Fallback to copy+delete if rename fails shutil.copytree(old_folder, new_folder) shutil.rmtree(old_folder)