diff --git a/backend/app/database/faces.py b/backend/app/database/faces.py
index 7e20e8be1..b44438315 100644
--- a/backend/app/database/faces.py
+++ b/backend/app/database/faces.py
@@ -133,12 +133,14 @@ def db_insert_face_embeddings_by_image_id(
image_id, embeddings, confidence, bbox, cluster_id
)
+
def get_all_face_embeddings():
conn = sqlite3.connect(DATABASE_PATH)
cursor = conn.cursor()
try:
- cursor.execute("""
+ cursor.execute(
+ """
SELECT
f.embeddings,
f.bbox,
@@ -153,7 +155,8 @@ def get_all_face_embeddings():
JOIN images i ON f.image_id=i.id
LEFT JOIN image_classes ic ON i.id = ic.image_id
LEFT JOIN mappings m ON ic.class_id = m.class_id
- """)
+ """
+ )
results = cursor.fetchall()
images_dict = {}
@@ -173,7 +176,7 @@ def get_all_face_embeddings():
embeddings_json = json.loads(embeddings)
bbox_json = json.loads(bbox)
except json.JSONDecodeError:
- continue;
+ continue
images_dict[image_id] = {
"embeddings": embeddings_json,
"bbox": bbox_json,
@@ -203,6 +206,7 @@ def get_all_face_embeddings():
finally:
conn.close()
+
def db_get_faces_unassigned_clusters() -> List[Dict[str, Union[FaceId, FaceEmbedding]]]:
"""
Get all faces that don't have assigned clusters.
diff --git a/backend/app/models/FaceDetector.py b/backend/app/models/FaceDetector.py
index 3f4bb192b..4023447a2 100644
--- a/backend/app/models/FaceDetector.py
+++ b/backend/app/models/FaceDetector.py
@@ -51,7 +51,7 @@ def detect_faces(self, image_id: str, image_path: str, forSearch: bool = False):
embedding = self.facenet.get_embedding(processed_face)
embeddings.append(embedding)
- if (not forSearch and embeddings):
+ if not forSearch and embeddings:
db_insert_face_embeddings_by_image_id(
image_id, embeddings, confidence=confidences, bbox=bboxes
)
diff --git a/backend/app/routes/face_clusters.py b/backend/app/routes/face_clusters.py
index 731dcbd67..351a7a2f0 100644
--- a/backend/app/routes/face_clusters.py
+++ b/backend/app/routes/face_clusters.py
@@ -255,21 +255,42 @@ def face_tagging(payload: AddSingleImageRequest):
image_id = str(uuid.uuid4())
result = fd.detect_faces(image_id, image_path, forSearch=True)
if not result or result["num_faces"] == 0:
- return GetAllImagesResponse(success=True, message=f"Successfully retrieved {len(matches)} images", data=[])
+ return GetAllImagesResponse(
+ success=True,
+ message=f"Successfully retrieved {len(matches)} images",
+ data=[],
+ )
process_face = result["processed_faces"][0]
new_embedding = fn.get_embedding(process_face)
images = get_all_face_embeddings()
if len(images) == 0:
- return GetAllImagesResponse(success=True, message=f"Successfully retrieved {len(matches)} images", data=[])
+ return GetAllImagesResponse(
+ success=True,
+ message=f"Successfully retrieved {len(matches)} images",
+ data=[],
+ )
else:
for image in images:
max_similarity = 0
- similarity = FaceNet_util_cosine_similarity(new_embedding, image["embeddings"])
+ similarity = FaceNet_util_cosine_similarity(
+ new_embedding, image["embeddings"]
+ )
max_similarity = max(max_similarity, similarity)
if max_similarity >= CONFIDENCE_PERCENT:
- matches.append(ImageData(id=image["id"], path=image["path"], folder_id=image["folder_id"], thumbnailPath=image["thumbnailPath"], metadata=image["metadata"], isTagged=image["isTagged"], tags=image["tags"], bboxes=image["bbox"]))
+ matches.append(
+ ImageData(
+ id=image["id"],
+ path=image["path"],
+ folder_id=image["folder_id"],
+ thumbnailPath=image["thumbnailPath"],
+ metadata=image["metadata"],
+ isTagged=image["isTagged"],
+ tags=image["tags"],
+ bboxes=image["bbox"],
+ )
+ )
return GetAllImagesResponse(
success=True,
diff --git a/backend/app/schemas/images.py b/backend/app/schemas/images.py
index dba0e3c80..ac1400159 100644
--- a/backend/app/schemas/images.py
+++ b/backend/app/schemas/images.py
@@ -38,6 +38,7 @@ class FaceTaggingResponse(BaseModel):
message: str
data: dict
+
class ImagesResponse(BaseModel):
image_files: List[str]
folder_path: str
diff --git a/frontend/src/pages/PersonImages/PersonImages.tsx b/frontend/src/pages/PersonImages/PersonImages.tsx
index 23f860688..9c9bef81d 100644
--- a/frontend/src/pages/PersonImages/PersonImages.tsx
+++ b/frontend/src/pages/PersonImages/PersonImages.tsx
@@ -113,7 +113,7 @@ export const PersonImages = () => {
{/* Media Viewer Modal */}
- {isImageViewOpen && }
+ {isImageViewOpen && }
);
};