diff --git a/face_recognition/constants.py b/face_recognition/constants.py new file mode 100644 index 00000000..18821df3 --- /dev/null +++ b/face_recognition/constants.py @@ -0,0 +1 @@ +UNKNOWN_PEOPLE_NAME = '_Unknown_people' diff --git a/face_recognition/face_recognition_manager.py b/face_recognition/face_recognition_manager.py index 9745df13..3e55b34a 100644 --- a/face_recognition/face_recognition_manager.py +++ b/face_recognition/face_recognition_manager.py @@ -12,6 +12,7 @@ from seafevents.repo_metadata.image_embedding_api import ImageEmbeddingAPI from seafevents.repo_metadata.utils import query_metadata_rows from seafevents.repo_metadata.constants import METADATA_TABLE, FACES_TABLE +from seafevents.face_recognition.constants import UNKNOWN_PEOPLE_NAME from seafevents.face_recognition.utils import get_faces_rows, get_cluster_by_center, b64encode_embeddings, \ b64decode_embeddings, VECTOR_DEFAULT_FLAG, get_min_cluster_size, SUPPORTED_IMAGE_FORMATS, EMBEDDING_UPDATE_LIMIT, \ save_cluster_face @@ -144,7 +145,9 @@ def face_cluster(self, repo_id): if label_id == -1: if not unclustered_rows: - label_id_to_added_cluster[label_id] = ({}, related_row_ids, None) + label_id_to_added_cluster[label_id] = ({ + FACES_TABLE.columns.name.name: UNKNOWN_PEOPLE_NAME, + }, related_row_ids, None) else: cluster_id = unclustered_rows[0][FACES_TABLE.columns.id.name] label_id_to_updated_cluster[label_id] = ({}, related_row_ids, cluster_id, None) diff --git a/face_recognition/utils.py b/face_recognition/utils.py index 3b5ef87e..b58e2742 100644 --- a/face_recognition/utils.py +++ b/face_recognition/utils.py @@ -7,6 +7,7 @@ from seafevents.repo_metadata.utils import query_metadata_rows, get_file_content from seafevents.repo_metadata.constants import FACES_TABLE, METADATA_TABLE +from seafevents.face_recognition.constants import UNKNOWN_PEOPLE_NAME VECTOR_DEFAULT_FLAG = '0' @@ -56,14 +57,14 @@ def get_cluster_by_center(center, clusters): def get_faces_rows(repo_id, metadata_server_api): sql = f'SELECT * FROM `{FACES_TABLE.name}`' query_result = query_metadata_rows(repo_id, metadata_server_api, sql) - culstered_rows = [] + clustered_rows = [] unclustered_rows = [] for row in query_result: - if not row.get(FACES_TABLE.columns.vector.name): + if row.get(FACES_TABLE.columns.name.name) == UNKNOWN_PEOPLE_NAME: unclustered_rows.append(row) else: - culstered_rows.append(row) - return culstered_rows, unclustered_rows + clustered_rows.append(row) + return clustered_rows, unclustered_rows def get_face_embeddings(repo_id, image_embedding_api, obj_ids):