diff --git a/web/apps/photos/src/services/machineLearning/mobileFaceNetEmbeddingService.ts b/web/apps/photos/src/services/machineLearning/mobileFaceNetEmbeddingService.ts index 7daa7d844..818b8a5d1 100644 --- a/web/apps/photos/src/services/machineLearning/mobileFaceNetEmbeddingService.ts +++ b/web/apps/photos/src/services/machineLearning/mobileFaceNetEmbeddingService.ts @@ -1,4 +1,4 @@ -import { ensureElectron } from "@/next/electron"; +import { workerBridge } from "@/next/worker/worker-bridge"; import { FaceEmbedding, FaceEmbeddingMethod, @@ -23,7 +23,7 @@ class MobileFaceNetEmbeddingService implements FaceEmbeddingService { public async getFaceEmbeddings( faceData: Float32Array, ): Promise> { - const outputData = await ensureElectron().faceEmbedding(faceData); + const outputData = await workerBridge.faceEmbedding(faceData); const embeddingSize = 192; const embeddings = new Array( diff --git a/web/apps/photos/src/services/machineLearning/yoloFaceDetectionService.ts b/web/apps/photos/src/services/machineLearning/yoloFaceDetectionService.ts index fdbb3f102..3e7d282fb 100644 --- a/web/apps/photos/src/services/machineLearning/yoloFaceDetectionService.ts +++ b/web/apps/photos/src/services/machineLearning/yoloFaceDetectionService.ts @@ -1,4 +1,3 @@ -import { ensureElectron } from "@/next/electron"; import { euclidean } from "hdbscan"; import { Matrix, @@ -21,6 +20,7 @@ import { } from "utils/image"; import { newBox } from "utils/machineLearning"; import { Box, Point } from "../../../thirdparty/face-api/classes"; +import { workerBridge } from "@/next/worker/worker-bridge"; class YoloFaceDetectionService implements FaceDetectionService { public method: Versioned; @@ -45,7 +45,7 @@ class YoloFaceDetectionService implements FaceDetectionService { ); const data = preprocessResult.data; const resized = preprocessResult.newSize; - const outputData = await ensureElectron().detectFaces(data); + const outputData = await workerBridge.detectFaces(data); const faces = this.getFacesFromYoloOutput( outputData as Float32Array, 0.7, diff --git a/web/apps/photos/src/utils/storage/mlIDbStorage.ts b/web/apps/photos/src/utils/storage/mlIDbStorage.ts index bba71c4ff..8be60afac 100644 --- a/web/apps/photos/src/utils/storage/mlIDbStorage.ts +++ b/web/apps/photos/src/utils/storage/mlIDbStorage.ts @@ -124,6 +124,7 @@ class MLIDbStorage { .add(DEFAULT_ML_SEARCH_CONFIG, ML_SEARCH_CONFIG_NAME); } if (oldVersion < 4) { + // TODO(MR): This loses the user's settings. db.deleteObjectStore("configs"); db.createObjectStore("configs"); diff --git a/web/packages/next/worker/comlink-worker.ts b/web/packages/next/worker/comlink-worker.ts index 033c79fa8..ad340c209 100644 --- a/web/packages/next/worker/comlink-worker.ts +++ b/web/packages/next/worker/comlink-worker.ts @@ -46,6 +46,9 @@ const workerBridge = { logToDisk, convertToJPEG: (inputFileData: Uint8Array, filename: string) => ensureElectron().convertToJPEG(inputFileData, filename), + detectFaces: (input: Float32Array) => ensureElectron().detectFaces(input), + faceEmbedding: (input: Float32Array) => + ensureElectron().faceEmbedding(input), }; export type WorkerBridge = typeof workerBridge;