[mob][photos] Force clustering first if too many unclustered faces
This commit is contained in:
parent
cc91cb8012
commit
0fdb58eda1
|
@ -688,6 +688,20 @@ class FaceMLDataDB {
|
||||||
return clusteredFiles / indexableFiles;
|
return clusteredFiles / indexableFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<int> getUnclusteredFaceCount() async {
|
||||||
|
final db = await instance.asyncDB;
|
||||||
|
const String query = '''
|
||||||
|
SELECT f.$faceIDColumn
|
||||||
|
FROM $facesTable f
|
||||||
|
LEFT JOIN $faceClustersTable fc ON f.$faceIDColumn = fc.$fcFaceId
|
||||||
|
WHERE f.$faceScore > $kMinimumQualityFaceScore
|
||||||
|
AND f.$faceBlur > $kLaplacianHardThreshold
|
||||||
|
AND fc.$fcFaceId IS NULL
|
||||||
|
''';
|
||||||
|
final List<Map<String, dynamic>> maps = await db.getAll(query);
|
||||||
|
return maps.length;
|
||||||
|
}
|
||||||
|
|
||||||
Future<int> getBlurryFaceCount([
|
Future<int> getBlurryFaceCount([
|
||||||
int blurThreshold = kLaplacianHardThreshold,
|
int blurThreshold = kLaplacianHardThreshold,
|
||||||
]) async {
|
]) async {
|
||||||
|
|
|
@ -98,6 +98,7 @@ class FaceMlService {
|
||||||
|
|
||||||
final int _fileDownloadLimit = 5;
|
final int _fileDownloadLimit = 5;
|
||||||
final int _embeddingFetchLimit = 200;
|
final int _embeddingFetchLimit = 200;
|
||||||
|
final int _kForceClusteringFaceCount = 4000;
|
||||||
|
|
||||||
Future<void> init({bool initializeImageMlIsolate = false}) async {
|
Future<void> init({bool initializeImageMlIsolate = false}) async {
|
||||||
if (LocalSettings.instance.isFaceIndexingEnabled == false) {
|
if (LocalSettings.instance.isFaceIndexingEnabled == false) {
|
||||||
|
@ -357,6 +358,15 @@ class FaceMlService {
|
||||||
if (_cannotRunMLFunction()) return;
|
if (_cannotRunMLFunction()) return;
|
||||||
|
|
||||||
await sync(forceSync: _shouldSyncPeople);
|
await sync(forceSync: _shouldSyncPeople);
|
||||||
|
|
||||||
|
final int unclusteredFacesCount =
|
||||||
|
await FaceMLDataDB.instance.getUnclusteredFaceCount();
|
||||||
|
if (unclusteredFacesCount > _kForceClusteringFaceCount) {
|
||||||
|
_logger.info(
|
||||||
|
"There are $unclusteredFacesCount unclustered faces, doing clustering first",
|
||||||
|
);
|
||||||
|
await clusterAllImages();
|
||||||
|
}
|
||||||
await indexAllImages();
|
await indexAllImages();
|
||||||
await clusterAllImages();
|
await clusterAllImages();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue