[mob] Rename face clustering service
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -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,
|
||||
);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user