2020-08-20 02:05:34 +02:00
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
|
exports.ComputeSingleFaceDescriptorTask = exports.ComputeAllFaceDescriptorsTask = exports.ComputeFaceDescriptorsTaskBase = void 0;
|
|
|
|
const WithFaceDescriptor_1 = require("../factories/WithFaceDescriptor");
|
|
|
|
const ComposableTask_1 = require("./ComposableTask");
|
|
|
|
const extractFacesAndComputeResults_1 = require("./extractFacesAndComputeResults");
|
|
|
|
const nets_1 = require("./nets");
|
|
|
|
const PredictAgeAndGenderTask_1 = require("./PredictAgeAndGenderTask");
|
|
|
|
const PredictFaceExpressionsTask_1 = require("./PredictFaceExpressionsTask");
|
|
|
|
class ComputeFaceDescriptorsTaskBase extends ComposableTask_1.ComposableTask {
|
2020-08-18 14:04:33 +02:00
|
|
|
constructor(parentTask, input) {
|
|
|
|
super();
|
|
|
|
this.parentTask = parentTask;
|
|
|
|
this.input = input;
|
|
|
|
}
|
|
|
|
}
|
2020-08-20 02:05:34 +02:00
|
|
|
exports.ComputeFaceDescriptorsTaskBase = ComputeFaceDescriptorsTaskBase;
|
|
|
|
class ComputeAllFaceDescriptorsTask extends ComputeFaceDescriptorsTaskBase {
|
2020-08-18 14:04:33 +02:00
|
|
|
async run() {
|
|
|
|
const parentResults = await this.parentTask;
|
2020-08-20 02:05:34 +02:00
|
|
|
const descriptors = await extractFacesAndComputeResults_1.extractAllFacesAndComputeResults(parentResults, this.input, faces => Promise.all(faces.map(face => nets_1.nets.faceRecognitionNet.computeFaceDescriptor(face))), null, parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true }));
|
|
|
|
return descriptors.map((descriptor, i) => WithFaceDescriptor_1.extendWithFaceDescriptor(parentResults[i], descriptor));
|
2020-08-18 14:04:33 +02:00
|
|
|
}
|
|
|
|
withFaceExpressions() {
|
2020-08-20 02:05:34 +02:00
|
|
|
return new PredictFaceExpressionsTask_1.PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);
|
2020-08-18 14:04:33 +02:00
|
|
|
}
|
|
|
|
withAgeAndGender() {
|
2020-08-20 02:05:34 +02:00
|
|
|
return new PredictAgeAndGenderTask_1.PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);
|
2020-08-18 14:04:33 +02:00
|
|
|
}
|
|
|
|
}
|
2020-08-20 02:05:34 +02:00
|
|
|
exports.ComputeAllFaceDescriptorsTask = ComputeAllFaceDescriptorsTask;
|
|
|
|
class ComputeSingleFaceDescriptorTask extends ComputeFaceDescriptorsTaskBase {
|
2020-08-18 14:04:33 +02:00
|
|
|
async run() {
|
|
|
|
const parentResult = await this.parentTask;
|
|
|
|
if (!parentResult) {
|
|
|
|
return;
|
|
|
|
}
|
2020-08-20 02:05:34 +02:00
|
|
|
const descriptor = await extractFacesAndComputeResults_1.extractSingleFaceAndComputeResult(parentResult, this.input, face => nets_1.nets.faceRecognitionNet.computeFaceDescriptor(face), null, parentResult => parentResult.landmarks.align(null, { useDlibAlignment: true }));
|
|
|
|
return WithFaceDescriptor_1.extendWithFaceDescriptor(parentResult, descriptor);
|
2020-08-18 14:04:33 +02:00
|
|
|
}
|
|
|
|
withFaceExpressions() {
|
2020-08-20 02:05:34 +02:00
|
|
|
return new PredictFaceExpressionsTask_1.PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);
|
2020-08-18 14:04:33 +02:00
|
|
|
}
|
|
|
|
withAgeAndGender() {
|
2020-08-20 02:05:34 +02:00
|
|
|
return new PredictAgeAndGenderTask_1.PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);
|
2020-08-18 14:04:33 +02:00
|
|
|
}
|
|
|
|
}
|
2020-08-20 02:05:34 +02:00
|
|
|
exports.ComputeSingleFaceDescriptorTask = ComputeSingleFaceDescriptorTask;
|
2020-08-18 14:04:33 +02:00
|
|
|
//# sourceMappingURL=ComputeFaceDescriptorsTasks.js.map
|