fix(face-landmarks): dispose tensors to avoid memory leaks

Also send only expressions with score grater than 50%.
This commit is contained in:
Gabriel Borlea 2022-05-18 14:41:51 +03:00 committed by GitHub
parent 4f49cde73e
commit 8a503e7b40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 2 deletions

View File

@ -99,8 +99,14 @@ const detectFaceBox = async ({ detections, threshold }: Detection) => {
return faceBox;
};
const detectFaceExpression = async ({ detections }: Detection) =>
detections[0]?.emotion && FACE_EXPRESSIONS_NAMING_MAPPING[detections[0]?.emotion[0].emotion];
const detectFaceExpression = async ({ detections }: Detection) => {
if (!detections[0]?.emotion || detections[0]?.emotion[0].score < 0.5) {
return;
}
return FACE_EXPRESSIONS_NAMING_MAPPING[detections[0]?.emotion[0].emotion];
}
const detect = async ({ image, threshold } : DetectInput) => {
let detections;
@ -108,6 +114,7 @@ const detect = async ({ image, threshold } : DetectInput) => {
let faceBox;
detectionInProgress = true;
human.tf.engine().startScope();
const imageTensor = human.tf.browser.fromPixels(image);
@ -131,6 +138,8 @@ const detect = async ({ image, threshold } : DetectInput) => {
});
}
human.tf.engine().endScope()
if (faceBox || faceExpression) {
self.postMessage({
faceBox,