[mob] Clean up linear clustering method
This commit is contained in:
parent
01aecb9742
commit
7be1b63822
1 changed files with 9 additions and 25 deletions
|
@ -234,7 +234,7 @@ class FaceClusteringService {
|
|||
);
|
||||
// return _runLinearClusteringInComputer(input);
|
||||
_logger.info(
|
||||
'Clustering executed in ${stopwatchClustering.elapsed.inSeconds} seconds',
|
||||
'predictLinear Clustering executed in ${stopwatchClustering.elapsed.inSeconds} seconds',
|
||||
);
|
||||
|
||||
isRunning = false;
|
||||
|
@ -493,12 +493,13 @@ class FaceClusteringService {
|
|||
facesWithClusterID.add(faceInfo);
|
||||
}
|
||||
}
|
||||
final alreadyClusteredCount = facesWithClusterID.length;
|
||||
final sortedFaceInfos = <FaceInfo>[];
|
||||
sortedFaceInfos.addAll(facesWithClusterID);
|
||||
sortedFaceInfos.addAll(facesWithoutClusterID);
|
||||
|
||||
log(
|
||||
"[ClusterIsolate] ${DateTime.now()} Clustering ${facesWithoutClusterID.length} new faces without clusterId, and ${facesWithClusterID.length} faces with clusterId",
|
||||
"[ClusterIsolate] ${DateTime.now()} Clustering ${facesWithoutClusterID.length} new faces without clusterId, and $alreadyClusteredCount faces with clusterId",
|
||||
);
|
||||
|
||||
// Make sure the first face has a clusterId
|
||||
|
@ -520,7 +521,6 @@ class FaceClusteringService {
|
|||
sortedFaceInfos[0].clusterId = clusterID;
|
||||
clusterID++;
|
||||
}
|
||||
final Map<String, int> newFaceIdToCluster = {};
|
||||
final stopwatchClustering = Stopwatch()..start();
|
||||
for (int i = 1; i < totalFaces; i++) {
|
||||
// Incremental clustering, so we can skip faces that already have a clusterId
|
||||
|
@ -563,12 +563,6 @@ class FaceClusteringService {
|
|||
}
|
||||
closestDistance = distance;
|
||||
closestIdx = j;
|
||||
// if (distance < distanceThreshold) {
|
||||
// if (sortedFaceInfos[j].faceID.startsWith("14914702") ||
|
||||
// sortedFaceInfos[j].faceID.startsWith("15488756")) {
|
||||
// log('[XXX] faceIDs: ${sortedFaceInfos[j].faceID} and ${sortedFaceInfos[i].faceID} with distance $distance');
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -580,30 +574,20 @@ class FaceClusteringService {
|
|||
);
|
||||
clusterID++;
|
||||
sortedFaceInfos[closestIdx].clusterId = clusterID;
|
||||
newFaceIdToCluster[sortedFaceInfos[closestIdx].faceID] = clusterID;
|
||||
}
|
||||
// if (sortedFaceInfos[i].faceID.startsWith("14914702") ||
|
||||
// sortedFaceInfos[i].faceID.startsWith("15488756")) {
|
||||
// log(
|
||||
// "[XXX] [ClusterIsolate] ${DateTime.now()} Found similar face ${sortedFaceInfos[i].faceID} to ${sortedFaceInfos[closestIdx].faceID} with distance $closestDistance",
|
||||
// );
|
||||
// }
|
||||
sortedFaceInfos[i].clusterId = sortedFaceInfos[closestIdx].clusterId;
|
||||
newFaceIdToCluster[sortedFaceInfos[i].faceID] =
|
||||
sortedFaceInfos[closestIdx].clusterId!;
|
||||
} else {
|
||||
// if (sortedFaceInfos[i].faceID.startsWith("14914702") ||
|
||||
// sortedFaceInfos[i].faceID.startsWith("15488756")) {
|
||||
// log(
|
||||
// "[XXX] [ClusterIsolate] ${DateTime.now()} Found new cluster $clusterID for face ${sortedFaceInfos[i].faceID}",
|
||||
// );
|
||||
// }
|
||||
clusterID++;
|
||||
sortedFaceInfos[i].clusterId = clusterID;
|
||||
newFaceIdToCluster[sortedFaceInfos[i].faceID] = clusterID;
|
||||
}
|
||||
}
|
||||
|
||||
// Finally, assign the new clusterId to the faces
|
||||
final Map<String, int> newFaceIdToCluster = {};
|
||||
for (final faceInfo in sortedFaceInfos.sublist(alreadyClusteredCount)) {
|
||||
newFaceIdToCluster[faceInfo.faceID] = faceInfo.clusterId!;
|
||||
}
|
||||
|
||||
stopwatchClustering.stop();
|
||||
log(
|
||||
' [ClusterIsolate] ${DateTime.now()} Clustering for ${sortedFaceInfos.length} embeddings executed in ${stopwatchClustering.elapsedMilliseconds}ms',
|
||||
|
|
Loading…
Add table
Reference in a new issue