From 38011e537a9e7b1db6a586d9ff2117aea46c6231 Mon Sep 17 00:00:00 2001 From: Gabriel Borlea Date: Wed, 8 Jun 2022 20:28:41 +0300 Subject: [PATCH] add(face-landmarks): max faces detected config and default value (#11625) * fix(face-landmarks): set max detected faces up to 4 * add(face-landmarks): config for max faces detected * fix(config.js): default value for capture interval face-landmarks * add missing coma --- config.js | 9 ++++++--- .../face-landmarks/FaceLandmarksHelper.ts | 18 +++++++++++++----- react/features/face-landmarks/actions.js | 3 ++- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/config.js b/config.js index bdb3cafea..7949818cb 100644 --- a/config.js +++ b/config.js @@ -779,7 +779,7 @@ var config = { // enableEmailInStats: false, // faceLandmarks: { - // // Enables sharing your face cordinates. Used for centering faces within a video. + // // Enables sharing your face coordinates. Used for centering faces within a video. // enableFaceCentering: false, // // Enables detecting face expressions and sharing data with other participants @@ -791,8 +791,11 @@ var config = { // // Minimum required face movement percentage threshold for sending new face centering coordinates data. // faceCenteringThreshold: 10, - // // Miliseconds for processing a new image capture in order to detect face coordinates if they exist. - // captureInterval: 100 + // // Milliseconds for processing a new image capture in order to detect face coordinates if they exist. + // captureInterval: 1000, + + // // Maximum number of faces that can be detected from a video track. + // maxFacesDetected: 4 // }, // Controls the percentage of automatic feedback shown to participants when callstats is enabled. diff --git a/react/features/face-landmarks/FaceLandmarksHelper.ts b/react/features/face-landmarks/FaceLandmarksHelper.ts index d5abe4870..7ce212149 100644 --- a/react/features/face-landmarks/FaceLandmarksHelper.ts +++ b/react/features/face-landmarks/FaceLandmarksHelper.ts @@ -21,7 +21,8 @@ type FaceBox = { type InitInput = { baseUrl: string, - detectionTypes: string[] + detectionTypes: string[], + maxFacesDetected?: number } type DetectOutput = { @@ -44,6 +45,7 @@ export class HumanHelper implements FaceLandmarksHelper { protected human: Human | undefined; protected faceDetectionTypes: string[]; protected baseUrl: string; + protected maxFacesDetected?: number; private detectionInProgress = false; private lastValidFaceBox: FaceBox | undefined; /** @@ -59,11 +61,12 @@ export class HumanHelper implements FaceLandmarksHelper { deallocate: true, filter: { enabled: false }, face: { - enabled: true, + enabled: false, detector: { enabled: false, rotation: false, - modelPath: 'blazeface-front.json' + modelPath: 'blazeface-front.json', + maxDetected: 4 }, mesh: { enabled: false }, iris: { enabled: false }, @@ -79,9 +82,10 @@ export class HumanHelper implements FaceLandmarksHelper { segmentation: { enabled: false } }; - constructor({ baseUrl, detectionTypes }: InitInput) { + constructor({ baseUrl, detectionTypes, maxFacesDetected }: InitInput) { this.faceDetectionTypes = detectionTypes; this.baseUrl = baseUrl; + this.maxFacesDetected = maxFacesDetected; this.init(); } @@ -97,7 +101,11 @@ export class HumanHelper implements FaceLandmarksHelper { if (this.faceDetectionTypes.length > 0 && this.config.face) { this.config.face.enabled = true - } + } + + if (this.maxFacesDetected && this.config.face?.detector) { + this.config.face.detector.maxDetected = this.maxFacesDetected; + } if (this.faceDetectionTypes.includes(DETECTION_TYPES.FACE_BOX) && this.config.face?.detector) { this.config.face.detector.enabled = true; diff --git a/react/features/face-landmarks/actions.js b/react/features/face-landmarks/actions.js index 1263690ad..94ff60789 100644 --- a/react/features/face-landmarks/actions.js +++ b/react/features/face-landmarks/actions.js @@ -140,7 +140,8 @@ export function loadWorker() { worker.postMessage({ type: INIT_WORKER, baseUrl, - detectionTypes + detectionTypes, + maxFacesDetected: faceLandmarks?.maxFacesDetected }); dispatch(startFaceLandmarksDetection());