From 0e6705f8e13c04c5b592ed1e2e929e1a3f23286f Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Sat, 16 Nov 2024 09:27:20 +0530 Subject: [PATCH] Compute rejected clusters --- .../new/photos/services/ml/cluster.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/web/packages/new/photos/services/ml/cluster.ts b/web/packages/new/photos/services/ml/cluster.ts index ffdb52d877..a2b73bca69 100644 --- a/web/packages/new/photos/services/ml/cluster.ts +++ b/web/packages/new/photos/services/ml/cluster.ts @@ -97,6 +97,26 @@ export const _clusterFaces = async ( const sortedCGroups = cgroups.sort((a, b) => b.updatedAt - a.updatedAt); + const rejectedClusterIDsForFaceID = new Map>(); + for (const cgroup of sortedCGroups) { + if (cgroup.data.rejectedFaceIDs.length == 0) { + clusters = clusters.concat(cgroup.data.assigned); + } else { + const rejectedFaceIDs = new Set(cgroup.data.rejectedFaceIDs); + clusters = clusters.concat( + cgroup.data.assigned.map((cluster) => ({ + ...cluster, + faces: cluster.faces.filter((f) => !rejectedFaceIDs.has(f)), + })), + ); + for (const faceID of rejectedFaceIDs) { + const s = rejectedClusterIDsForFaceID.get(faceID) ?? new Set(); + cgroup.data.assigned.forEach(({ id }) => s.add(id)); + rejectedClusterIDsForFaceID.set(faceID, s); + } + } + } + // Extract the remote clusters. clusters = clusters.concat( // See: [Note: strict mode migration]