From b866745fe7b87d1f29fbe738dfd8543c4774d02c Mon Sep 17 00:00:00 2001 From: Abhinav Date: Wed, 3 Aug 2022 10:28:09 +0530 Subject: [PATCH] add queuing for getImageSceneModel init --- .../machineLearning/imageSceneService.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/services/machineLearning/imageSceneService.ts b/src/services/machineLearning/imageSceneService.ts index 2e66f7140..036f6c77b 100644 --- a/src/services/machineLearning/imageSceneService.ts +++ b/src/services/machineLearning/imageSceneService.ts @@ -10,8 +10,9 @@ import { SCENE_DETECTION_IMAGE_SIZE } from 'constants/machineLearning/config'; class ImageScene implements SceneDetectionService { method: Versioned; - model: tfjsConverter.GraphModel; - sceneMap: { [key: string]: string }; + private model: tfjsConverter.GraphModel; + private sceneMap: { [key: string]: string }; + private ready: Promise; public constructor() { this.method = { @@ -43,12 +44,18 @@ class ImageScene implements SceneDetectionService { warmupResult.dispose(); } + private async getImageSceneModel() { + if (!this.ready) { + this.ready = this.init(); + } + await this.ready; + return this.model; + } + async detectScenes(image: ImageBitmap, minScore: number) { await tf.ready(); - if (!this.model) { - await this.init(); - } + const model = await this.getImageSceneModel(); const output = tf.tidy(() => { const tensor = tf.browser.fromPixels(image); @@ -63,7 +70,7 @@ class ImageScene implements SceneDetectionService { resizedTensor = tf.expandDims(resizedTensor); resizedTensor = tf.cast(resizedTensor, 'float32'); - const output = this.model.predict(resizedTensor) as tf.Tensor; + const output = model.predict(resizedTensor) as tf.Tensor; return output; });