diff --git a/mobile/lib/services/machine_learning/face_ml/face_clustering/linear_clustering_service.dart b/mobile/lib/services/machine_learning/face_ml/face_clustering/linear_clustering_service.dart index 9f4e6b160..10653042e 100644 --- a/mobile/lib/services/machine_learning/face_ml/face_clustering/linear_clustering_service.dart +++ b/mobile/lib/services/machine_learning/face_ml/face_clustering/linear_clustering_service.dart @@ -47,7 +47,7 @@ class FaceLinearClustering { bool isSpawned = false; bool isRunning = false; - static const recommendedDistanceThreshold = 0.3; + static const kRecommendedDistanceThreshold = 0.3; // singleton pattern FaceLinearClustering._privateConstructor(); @@ -102,9 +102,11 @@ class FaceLinearClustering { final input = args['input'] as Map; final fileIDToCreationTime = args['fileIDToCreationTime'] as Map?; + final distanceThreshold = args['distanceThreshold'] as double; final result = FaceLinearClustering._runLinearClustering( input, fileIDToCreationTime: fileIDToCreationTime, + distanceThreshold: distanceThreshold, ); sendPort.send(result); break; @@ -183,6 +185,7 @@ class FaceLinearClustering { Future?> predict( Map input, { Map? fileIDToCreationTime, + double distanceThreshold = kRecommendedDistanceThreshold, }) async { if (input.isEmpty) { _logger.warning( @@ -207,7 +210,7 @@ class FaceLinearClustering { final Map faceIdToCluster = await _runInIsolate( ( ClusterOperation.linearIncrementalClustering, - {'input': input, 'fileIDToCreationTime': fileIDToCreationTime} + {'input': input, 'fileIDToCreationTime': fileIDToCreationTime, 'distanceThreshold': distanceThreshold} ), ); // return _runLinearClusteringInComputer(input); @@ -223,6 +226,7 @@ class FaceLinearClustering { static Map _runLinearClustering( Map x, { Map? fileIDToCreationTime, + double distanceThreshold = kRecommendedDistanceThreshold, }) { log( "[ClusterIsolate] ${DateTime.now()} Copied to isolate ${x.length} faces", @@ -332,7 +336,7 @@ class FaceLinearClustering { } } - if (closestDistance < recommendedDistanceThreshold) { + if (closestDistance < distanceThreshold) { if (sortedFaceInfos[closestIdx].clusterId == null) { // Ideally this should never happen, but just in case log it log(