[mob][photos] Assert that embeddings are always normalized
This commit is contained in:
parent
b4736fb1d6
commit
bd495c3860
2 changed files with 17 additions and 2 deletions
|
@ -482,6 +482,14 @@ class FaceClusteringService {
|
|||
);
|
||||
}
|
||||
|
||||
// Assert that the embeddings are normalized
|
||||
for (final faceInfo in faceInfos) {
|
||||
if (faceInfo.vEmbedding != null) {
|
||||
final norm = faceInfo.vEmbedding!.norm();
|
||||
assert((norm - 1.0).abs() < 1e-5);
|
||||
}
|
||||
}
|
||||
|
||||
// Sort the faceInfos based on fileCreationTime, in ascending order, so oldest faces are first
|
||||
if (fileIDToCreationTime != null) {
|
||||
faceInfos.sort((a, b) {
|
||||
|
@ -670,8 +678,10 @@ class FaceClusteringService {
|
|||
} else {
|
||||
final newMeanVector = newEmbeddings.reduce((a, b) => a + b);
|
||||
final newMeanVectorNormalized = newMeanVector / newMeanVector.norm();
|
||||
newClusterSummaries[clusterId] =
|
||||
(EVector(values: newMeanVectorNormalized.toList()).writeToBuffer(), newCount);
|
||||
newClusterSummaries[clusterId] = (
|
||||
EVector(values: newMeanVectorNormalized.toList()).writeToBuffer(),
|
||||
newCount
|
||||
);
|
||||
}
|
||||
}
|
||||
log(
|
||||
|
|
|
@ -808,6 +808,11 @@ class ClusterFeedbackService {
|
|||
final alreadyUpdatedClustersCnt = serializationEmbeddings.$4;
|
||||
final smallerClustersCnt = serializationEmbeddings.$5;
|
||||
|
||||
// Assert that all existing clusterAvg are normalized
|
||||
for (final avg in clusterAvg.values) {
|
||||
assert((avg.norm() - 1.0).abs() < 1e-5);
|
||||
}
|
||||
|
||||
w?.log(
|
||||
'serialization of embeddings',
|
||||
);
|
||||
|
|
Loading…
Add table
Reference in a new issue