[mob][photos] Minor ML improvements (#6043)

## Description

- Expose flag for when ML and Memories is running
- UI fix for deleting all files in cluster 
- Log times ML models are loaded

## Tests

Tested in debug mode on my pixel 8.
This commit is contained in:
Laurens Priem
2025-05-26 21:44:33 +05:30
committed by GitHub
4 changed files with 23 additions and 3 deletions

View File

@@ -28,6 +28,9 @@ class MLIndexingIsolate extends SuperIsolate {
@override
bool get shouldAutomaticDispose => true;
int _loadedModelsCount = 0;
int _deloadedModelsCount = 0;
final _initModelLock = Lock();
final _downloadModelLock = Lock();
@@ -144,6 +147,10 @@ class MLIndexingIsolate extends SuperIsolate {
_logger.info(
'Loading models. faces: $shouldLoadFaces, clip: $shouldLoadClip',
);
_loadedModelsCount++;
_logger.info(
"Loaded models count: $_loadedModelsCount, deloaded models count: $_deloadedModelsCount",
);
await MLIndexingIsolate.instance
._loadModels(loadFaces: shouldLoadFaces, loadClip: shouldLoadClip);
_logger.info('Models loaded');
@@ -249,6 +256,11 @@ class MLIndexingIsolate extends SuperIsolate {
}
if (modelNames.isEmpty) return;
try {
_logger.info("Releasing models $modelNames");
_deloadedModelsCount++;
_logger.info(
"Loaded models count: $_loadedModelsCount, deloaded models count: $_deloadedModelsCount",
);
await runInIsolate(IsolateOperation.releaseIndexingModels, {
"modelNames": modelNames,
"modelAddresses": modelAddresses,

View File

@@ -51,6 +51,9 @@ class MLService {
bool _isRunningML = false;
bool _shouldPauseIndexingAndClustering = false;
bool get isRunningML =>
_isRunningML || memoriesCacheService.isUpdatingMemories;
static const _kForceClusteringFaceCount = 8000;
late final mlDataDB = MLDataDB.instance;

View File

@@ -42,6 +42,9 @@ class MemoriesCacheService {
List<SmartMemory>? _cachedMemories;
bool _shouldUpdate = false;
bool _isUpdatingMemories = false;
bool get isUpdatingMemories => _isUpdatingMemories;
final _memoriesUpdateLock = Lock();
MemoriesCacheService(this._prefs) {
@@ -174,6 +177,7 @@ class MemoriesCacheService {
_logger.info(
"Updating memories cache (shouldUpdate: $_shouldUpdate, forced: $forced)",
);
_isUpdatingMemories = true;
try {
final EnteWatch? w =
kDebugMode ? EnteWatch("MemoriesCacheService") : null;
@@ -226,6 +230,8 @@ class MemoriesCacheService {
w?.logAndReset('_cacheUpdated method done');
} catch (e, s) {
_logger.info("Error updating memories cache", e, s);
} finally {
_isUpdatingMemories = false;
}
});
}

View File

@@ -66,8 +66,7 @@ class _ClusterPageState extends State<ClusterPage> {
files = widget.searchResult;
_filesUpdatedEvent =
Bus.instance.on<LocalPhotosUpdatedEvent>().listen((event) {
if (event.type == EventType.deletedFromDevice ||
event.type == EventType.deletedFromEverywhere ||
if (event.type == EventType.deletedFromEverywhere ||
event.type == EventType.deletedFromRemote ||
event.type == EventType.hide) {
for (var updatedFile in event.updatedFiles) {
@@ -133,7 +132,7 @@ class _ClusterPageState extends State<ClusterPage> {
selectedFiles: _selectedFiles,
enableFileGrouping: widget.enableGrouping,
initialFiles: widget.searchResult,
header: widget.showNamingBanner
header: widget.showNamingBanner && files.isNotEmpty
? PeopleBanner(
type: PeopleBannerType.addName,
faceWidget: PersonFaceWidget(