[mob] Rename face clustering service

This commit is contained in:
laurenspriem
2024-04-13 13:10:20 +05:30
parent c58a8dc773
commit 5cf10c9c9b
4 changed files with 26 additions and 15 deletions

View File

@@ -32,7 +32,7 @@ class FaceInfo {
enum ClusterOperation { linearIncrementalClustering, dbscanClustering }
class FaceClustering {
class FaceClusteringService {
final _logger = Logger("FaceLinearClustering");
Timer? _inactivityTimer;
@@ -51,12 +51,12 @@ class FaceClustering {
static const kRecommendedDistanceThreshold = 0.24;
// singleton pattern
FaceClustering._privateConstructor();
FaceClusteringService._privateConstructor();
/// Use this instance to access the FaceClustering service.
/// e.g. `FaceLinearClustering.instance.predict(dataset)`
static final instance = FaceClustering._privateConstructor();
factory FaceClustering() => instance;
static final instance = FaceClusteringService._privateConstructor();
factory FaceClusteringService() => instance;
Future<void> init() async {
return _initLock.synchronized(() async {
@@ -105,7 +105,7 @@ class FaceClustering {
args['fileIDToCreationTime'] as Map<int, int>?;
final distanceThreshold = args['distanceThreshold'] as double;
final offset = args['offset'] as int?;
final result = FaceClustering._runLinearClustering(
final result = FaceClusteringService._runLinearClustering(
input,
fileIDToCreationTime: fileIDToCreationTime,
distanceThreshold: distanceThreshold,
@@ -119,7 +119,7 @@ class FaceClustering {
args['fileIDToCreationTime'] as Map<int, int>?;
final eps = args['eps'] as double;
final minPts = args['minPts'] as int;
final result = FaceClustering._runDbscanClustering(
final result = FaceClusteringService._runDbscanClustering(
input,
fileIDToCreationTime: fileIDToCreationTime,
eps: eps,
@@ -454,7 +454,7 @@ class FaceClustering {
);
// analyze the results
FaceClustering._analyzeClusterResults(sortedFaceInfos);
FaceClusteringService._analyzeClusterResults(sortedFaceInfos);
return newFaceIdToCluster;
}

View File

@@ -26,7 +26,7 @@ import "package:photos/models/file/extensions/file_props.dart";
import "package:photos/models/file/file.dart";
import "package:photos/models/file/file_type.dart";
import "package:photos/models/ml/ml_versions.dart";
import 'package:photos/services/machine_learning/face_ml/face_clustering/linear_clustering_service.dart';
import 'package:photos/services/machine_learning/face_ml/face_clustering/face_clustering_service.dart';
import 'package:photos/services/machine_learning/face_ml/face_detection/detection.dart';
import 'package:photos/services/machine_learning/face_ml/face_detection/face_detection_exceptions.dart';
import 'package:photos/services/machine_learning/face_ml/face_detection/face_detection_service.dart';
@@ -400,7 +400,8 @@ class FaceMlService {
break;
}
final faceIdToCluster = await FaceClustering.instance.predictLinear(
final faceIdToCluster =
await FaceClusteringService.instance.predictLinear(
faceIdToEmbeddingBucket,
fileIDToCreationTime: fileIDToCreationTime,
offset: offset,
@@ -440,7 +441,8 @@ class FaceMlService {
'${DateTime.now().difference(gotFaceEmbeddingsTime).inMilliseconds} ms');
// Cluster the embeddings using the linear clustering algorithm, returning a map from faceID to clusterID
final faceIdToCluster = await FaceClustering.instance.predictLinear(
final faceIdToCluster =
await FaceClusteringService.instance.predictLinear(
faceIdToEmbedding,
fileIDToCreationTime: fileIDToCreationTime,
);

View File

@@ -12,7 +12,7 @@ import "package:photos/face/model/person.dart";
import "package:photos/generated/protos/ente/common/vector.pb.dart";
import "package:photos/models/file/file.dart";
import 'package:photos/services/machine_learning/face_ml/face_clustering/cosine_distance.dart';
import "package:photos/services/machine_learning/face_ml/face_clustering/linear_clustering_service.dart";
import "package:photos/services/machine_learning/face_ml/face_clustering/face_clustering_service.dart";
import "package:photos/services/machine_learning/face_ml/face_ml_result.dart";
import "package:photos/services/machine_learning/face_ml/person/person_service.dart";
import "package:photos/services/search_service.dart";
@@ -213,7 +213,7 @@ class ClusterFeedbackService {
final Map<int, List<String>> clusterIdToFaceIds = {};
if (useDbscan) {
final dbscanClusters = await FaceClustering.instance.predictDbscan(
final dbscanClusters = await FaceClusteringService.instance.predictDbscan(
embeddings,
fileIDToCreationTime: fileIDToCreationTime,
eps: 0.30,
@@ -236,7 +236,8 @@ class ClusterFeedbackService {
return MapEntry(key, (null, value));
});
final faceIdToCluster = await FaceClustering.instance.predictLinear(
final faceIdToCluster =
await FaceClusteringService.instance.predictLinear(
clusteringInput,
fileIDToCreationTime: fileIDToCreationTime,
distanceThreshold: 0.23,

View File

@@ -179,8 +179,16 @@ class _FaceDebugSectionWidgetState extends State<FaceDebugSectionWidget> {
// },
// ),
MenuItemWidget(
captionedTextWidget: const CaptionedTextWidget(
title: "Run Clustering",
captionedTextWidget: FutureBuilder<int>(
future: FaceMLDataDB.instance.getTotalFaceCount(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return CaptionedTextWidget(
title: "Run clustering (${snapshot.data!} faces)",
);
}
return const SizedBox.shrink();
},
),
pressedColor: getEnteColorScheme(context).fillFaint,
trailingIcon: Icons.chevron_right_outlined,