Commit 5c7e120f by vincent

check in latest build

parent e1d7085e
import * as tf from '@tensorflow/tfjs-core';
import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base';
import { TinyXception } from '../xception/TinyXception';
import { AgeAndGenderPrediction, NetOutput, NetParams } from './types';
export declare class AgeGenderNet extends NeuralNetwork<NetParams> {
private _faceFeatureExtractor;
constructor(faceFeatureExtractor?: TinyXception);
readonly faceFeatureExtractor: TinyXception;
runNet(input: NetInput | tf.Tensor4D): NetOutput;
forwardInput(input: NetInput | tf.Tensor4D): NetOutput;
forward(input: TNetInput): Promise<NetOutput>;
predictAgeAndGender(input: TNetInput): Promise<AgeAndGenderPrediction | AgeAndGenderPrediction[]>;
protected getDefaultModelName(): string;
dispose(throwOnRedispose?: boolean): void;
loadClassifierParams(weights: Float32Array): void;
extractClassifierParams(weights: Float32Array): {
params: NetParams;
paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[];
};
protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): {
params: NetParams;
paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[];
};
protected extractParams(weights: Float32Array): {
params: NetParams;
paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[];
};
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var tf = require("@tensorflow/tfjs-core");
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
var fullyConnectedLayer_1 = require("../common/fullyConnectedLayer");
var util_1 = require("../faceProcessor/util");
var TinyXception_1 = require("../xception/TinyXception");
var extractParams_1 = require("./extractParams");
var extractParamsFromWeigthMap_1 = require("./extractParamsFromWeigthMap");
var types_1 = require("./types");
var AgeGenderNet = /** @class */ (function (_super) {
tslib_1.__extends(AgeGenderNet, _super);
function AgeGenderNet(faceFeatureExtractor) {
if (faceFeatureExtractor === void 0) { faceFeatureExtractor = new TinyXception_1.TinyXception(2); }
var _this = _super.call(this, 'AgeGenderNet') || this;
_this._faceFeatureExtractor = faceFeatureExtractor;
return _this;
}
Object.defineProperty(AgeGenderNet.prototype, "faceFeatureExtractor", {
get: function () {
return this._faceFeatureExtractor;
},
enumerable: true,
configurable: true
});
AgeGenderNet.prototype.runNet = function (input) {
var _this = this;
var params = this.params;
if (!params) {
throw new Error(this._name + " - load model before inference");
}
return tf.tidy(function () {
var bottleneckFeatures = input instanceof tfjs_image_recognition_base_1.NetInput
? _this.faceFeatureExtractor.forwardInput(input)
: input;
var pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1);
var age = fullyConnectedLayer_1.fullyConnectedLayer(pooled, params.fc.age).as1D();
var gender = fullyConnectedLayer_1.fullyConnectedLayer(pooled, params.fc.gender);
return { age: age, gender: gender };
});
};
AgeGenderNet.prototype.forwardInput = function (input) {
var _this = this;
return tf.tidy(function () {
var _a = _this.runNet(input), age = _a.age, gender = _a.gender;
return { age: age, gender: tf.softmax(gender) };
});
};
AgeGenderNet.prototype.forward = function (input) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = this.forwardInput;
return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)];
case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])];
}
});
});
};
AgeGenderNet.prototype.predictAgeAndGender = function (input) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var netInput, out, ages, genders, ageAndGenderTensors, predictionsByBatch;
var _this = this;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)];
case 1:
netInput = _a.sent();
return [4 /*yield*/, this.forwardInput(netInput)];
case 2:
out = _a.sent();
ages = tf.unstack(out.age);
genders = tf.unstack(out.gender);
ageAndGenderTensors = ages.map(function (ageTensor, i) { return ({
ageTensor: ageTensor,
genderTensor: genders[i]
}); });
return [4 /*yield*/, Promise.all(ageAndGenderTensors.map(function (_a) {
var ageTensor = _a.ageTensor, genderTensor = _a.genderTensor;
return tslib_1.__awaiter(_this, void 0, void 0, function () {
var age, probMale, isMale, gender, genderProbability;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0: return [4 /*yield*/, ageTensor.data()];
case 1:
age = (_b.sent())[0];
return [4 /*yield*/, genderTensor.data()];
case 2:
probMale = (_b.sent())[0];
isMale = probMale > 0.5;
gender = isMale ? types_1.Gender.MALE : types_1.Gender.FEMALE;
genderProbability = isMale ? probMale : (1 - probMale);
ageTensor.dispose();
genderTensor.dispose();
return [2 /*return*/, { age: age, gender: gender, genderProbability: genderProbability }];
}
});
});
}))];
case 3:
predictionsByBatch = _a.sent();
out.age.dispose();
out.gender.dispose();
return [2 /*return*/, netInput.isBatchInput
? predictionsByBatch
: predictionsByBatch[0]];
}
});
});
};
AgeGenderNet.prototype.getDefaultModelName = function () {
return 'age_gender_model';
};
AgeGenderNet.prototype.dispose = function (throwOnRedispose) {
if (throwOnRedispose === void 0) { throwOnRedispose = true; }
this.faceFeatureExtractor.dispose(throwOnRedispose);
_super.prototype.dispose.call(this, throwOnRedispose);
};
AgeGenderNet.prototype.loadClassifierParams = function (weights) {
var _a = this.extractClassifierParams(weights), params = _a.params, paramMappings = _a.paramMappings;
this._params = params;
this._paramMappings = paramMappings;
};
AgeGenderNet.prototype.extractClassifierParams = function (weights) {
return extractParams_1.extractParams(weights);
};
AgeGenderNet.prototype.extractParamsFromWeigthMap = function (weightMap) {
var _a = util_1.seperateWeightMaps(weightMap), featureExtractorMap = _a.featureExtractorMap, classifierMap = _a.classifierMap;
this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);
return extractParamsFromWeigthMap_1.extractParamsFromWeigthMap(classifierMap);
};
AgeGenderNet.prototype.extractParams = function (weights) {
var classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2);
var featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);
var classifierWeights = weights.slice(weights.length - classifierWeightSize);
this.faceFeatureExtractor.extractWeights(featureExtractorWeights);
return this.extractClassifierParams(classifierWeights);
};
return AgeGenderNet;
}(tfjs_image_recognition_base_1.NeuralNetwork));
exports.AgeGenderNet = AgeGenderNet;
//# sourceMappingURL=AgeGenderNet.js.map
\ No newline at end of file
{"version":3,"file":"AgeGenderNet.js","sourceRoot":"","sources":["../../../src/ageGenderNet/AgeGenderNet.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base';
import { NetParams } from './types';
export declare function extractParams(weights: Float32Array): {
params: NetParams;
paramMappings: TfjsImageRecognitionBase.ParamMapping[];
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
function extractParams(weights) {
var paramMappings = [];
var _a = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights;
var extractFCParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractFCParamsFactory(extractWeights, paramMappings);
var age = extractFCParams(512, 1, 'fc/age');
var gender = extractFCParams(512, 2, 'fc/gender');
if (getRemainingWeights().length !== 0) {
throw new Error("weights remaing after extract: " + getRemainingWeights().length);
}
return {
paramMappings: paramMappings,
params: { fc: { age: age, gender: gender } }
};
}
exports.extractParams = extractParams;
//# sourceMappingURL=extractParams.js.map
\ No newline at end of file
{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/ageGenderNet/extractParams.ts"],"names":[],"mappings":";;AAAA,2EAAuE;AAIvE,SAAgB,aAAa,CAAC,OAAqB;IAEjD,IAAM,aAAa,GAA4C,EAAE,CAAA;IAE3D,IAAA,0FAGqD,EAFzD,kCAAc,EACd,4CACyD,CAAA;IAE3D,IAAM,eAAe,GAAG,sDAAwB,CAAC,sBAAsB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAEtG,IAAM,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;IAC7C,IAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;IAEnD,IAAI,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAkC,mBAAmB,EAAE,CAAC,MAAQ,CAAC,CAAA;KAClF;IAED,OAAO;QACL,aAAa,eAAA;QACb,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAA,EAAE,MAAM,QAAA,EAAE,EAAE;KAChC,CAAA;AACH,CAAC;AAtBD,sCAsBC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base';
import { NetParams } from './types';
export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): {
params: NetParams;
paramMappings: TfjsImageRecognitionBase.ParamMapping[];
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
function extractParamsFromWeigthMap(weightMap) {
var paramMappings = [];
var extractWeightEntry = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings);
function extractFcParams(prefix) {
var weights = extractWeightEntry(prefix + "/weights", 2);
var bias = extractWeightEntry(prefix + "/bias", 1);
return { weights: weights, bias: bias };
}
var params = {
fc: {
age: extractFcParams('fc/age'),
gender: extractFcParams('fc/gender')
}
};
tfjs_image_recognition_base_1.TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings);
return { params: params, paramMappings: paramMappings };
}
exports.extractParamsFromWeigthMap = extractParamsFromWeigthMap;
//# sourceMappingURL=extractParamsFromWeigthMap.js.map
\ No newline at end of file
{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/ageGenderNet/extractParamsFromWeigthMap.ts"],"names":[],"mappings":";;AACA,2EAAuE;AAIvE,SAAgB,0BAA0B,CACxC,SAA4B;IAG5B,IAAM,aAAa,GAA4C,EAAE,CAAA;IAEjE,IAAM,kBAAkB,GAAG,sDAAwB,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEvG,SAAS,eAAe,CAAC,MAAc;QACrC,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,aAAU,EAAE,CAAC,CAAC,CAAA;QACvE,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,CAAC,CAAA;QACjE,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC;IAED,IAAM,MAAM,GAAG;QACb,EAAE,EAAE;YACF,GAAG,EAAE,eAAe,CAAC,QAAQ,CAAC;YAC9B,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC;SACrC;KACF,CAAA;IAED,sDAAwB,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAClC,CAAC;AAxBD,gEAwBC"}
\ No newline at end of file
export * from './AgeGenderNet';
export * from './types';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
tslib_1.__exportStar(require("./AgeGenderNet"), exports);
tslib_1.__exportStar(require("./types"), exports);
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ageGenderNet/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,kDAAwB"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base';
export declare type AgeAndGenderPrediction = {
age: number;
gender: Gender;
genderProbability: number;
};
export declare enum Gender {
FEMALE = "female",
MALE = "male"
}
export declare type NetOutput = {
age: tf.Tensor1D;
gender: tf.Tensor2D;
};
export declare type NetParams = {
fc: {
age: TfjsImageRecognitionBase.FCParams;
gender: TfjsImageRecognitionBase.FCParams;
};
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Gender;
(function (Gender) {
Gender["FEMALE"] = "female";
Gender["MALE"] = "male";
})(Gender = exports.Gender || (exports.Gender = {}));
//# sourceMappingURL=types.js.map
\ No newline at end of file
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ageGenderNet/types.ts"],"names":[],"mappings":";;AASA,IAAY,MAGX;AAHD,WAAY,MAAM;IAChB,2BAAiB,CAAA;IACjB,uBAAa,CAAA;AACf,CAAC,EAHW,MAAM,GAAN,cAAM,KAAN,cAAM,QAGjB"}
\ No newline at end of file
...@@ -8,7 +8,8 @@ var FaceDetection = /** @class */ (function (_super) { ...@@ -8,7 +8,8 @@ var FaceDetection = /** @class */ (function (_super) {
return _super.call(this, score, score, '', relativeBox, imageDims) || this; return _super.call(this, score, score, '', relativeBox, imageDims) || this;
} }
FaceDetection.prototype.forSize = function (width, height) { FaceDetection.prototype.forSize = function (width, height) {
return _super.prototype.forSize.call(this, width, height); var _a = _super.prototype.forSize.call(this, width, height), score = _a.score, relativeBox = _a.relativeBox, imageDims = _a.imageDims;
return new FaceDetection(score, relativeBox, imageDims);
}; };
return FaceDetection; return FaceDetection;
}(tfjs_image_recognition_base_1.ObjectDetection)); }(tfjs_image_recognition_base_1.ObjectDetection));
......
{"version":3,"file":"FaceDetection.js","sourceRoot":"","sources":["../../../src/classes/FaceDetection.ts"],"names":[],"mappings":";;;AAAA,2EAAsF;AAOtF;IAAmC,yCAAe;IAChD,uBACE,KAAa,EACb,WAAiB,EACjB,SAAsB;eAEtB,kBAAM,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC;IACjD,CAAC;IAEM,+BAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QAC1C,OAAO,iBAAM,OAAO,YAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACrC,CAAC;IACH,oBAAC;AAAD,CAAC,AAZD,CAAmC,6CAAe,GAYjD;AAZY,sCAAa"} {"version":3,"file":"FaceDetection.js","sourceRoot":"","sources":["../../../src/classes/FaceDetection.ts"],"names":[],"mappings":";;;AAAA,2EAAsF;AAOtF;IAAmC,yCAAe;IAChD,uBACE,KAAa,EACb,WAAiB,EACjB,SAAsB;eAEtB,kBAAM,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC;IACjD,CAAC;IAEM,+BAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QACpC,IAAA,uDAAgE,EAA9D,gBAAK,EAAE,4BAAW,EAAE,wBAA0C,CAAA;QACtE,OAAO,IAAI,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;IACzD,CAAC;IACH,oBAAC;AAAD,CAAC,AAbD,CAAmC,6CAAe,GAajD;AAbY,sCAAa"}
\ No newline at end of file \ No newline at end of file
import { Dimensions, IDimensions, Point, Rect } from 'tfjs-image-recognition-base'; import { Box, Dimensions, IBoundingBox, IDimensions, IRect, Point } from 'tfjs-image-recognition-base';
import { FaceDetection } from './FaceDetection'; import { FaceDetection } from './FaceDetection';
export interface IFaceLandmarks { export interface IFaceLandmarks {
positions: Point[]; positions: Point[];
...@@ -28,6 +28,11 @@ export declare class FaceLandmarks implements IFaceLandmarks { ...@@ -28,6 +28,11 @@ export declare class FaceLandmarks implements IFaceLandmarks {
* it's current shift. * it's current shift.
* @returns The bounding box of the aligned face. * @returns The bounding box of the aligned face.
*/ */
align(detection?: FaceDetection | Rect): Rect; align(detection?: FaceDetection | IRect | IBoundingBox | null, options?: {
useDlibAlignment?: boolean;
minBoxPadding?: number;
}): Box;
private alignDlib;
private alignMinBbox;
protected getRefPointsForAlignment(): Point[]; protected getRefPointsForAlignment(): Point[];
} }
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
var minBbox_1 = require("../minBbox");
var FaceDetection_1 = require("./FaceDetection"); var FaceDetection_1 = require("./FaceDetection");
// face alignment constants // face alignment constants
var relX = 0.5; var relX = 0.5;
...@@ -62,13 +63,21 @@ var FaceLandmarks = /** @class */ (function () { ...@@ -62,13 +63,21 @@ var FaceLandmarks = /** @class */ (function () {
* it's current shift. * it's current shift.
* @returns The bounding box of the aligned face. * @returns The bounding box of the aligned face.
*/ */
FaceLandmarks.prototype.align = function (detection) { FaceLandmarks.prototype.align = function (detection, options) {
if (options === void 0) { options = {}; }
if (detection) { if (detection) {
var box = detection instanceof FaceDetection_1.FaceDetection var box = detection instanceof FaceDetection_1.FaceDetection
? detection.box.floor() ? detection.box.floor()
: detection; : new tfjs_image_recognition_base_1.Box(detection);
return this.shiftBy(box.x, box.y).align(); return this.shiftBy(box.x, box.y).align(null, options);
} }
var _a = Object.assign({}, { useDlibAlignment: false, minBoxPadding: 0.2 }, options), useDlibAlignment = _a.useDlibAlignment, minBoxPadding = _a.minBoxPadding;
if (useDlibAlignment) {
return this.alignDlib();
}
return this.alignMinBbox(minBoxPadding);
};
FaceLandmarks.prototype.alignDlib = function () {
var centers = this.getRefPointsForAlignment(); var centers = this.getRefPointsForAlignment();
var leftEyeCenter = centers[0], rightEyeCenter = centers[1], mouthCenter = centers[2]; var leftEyeCenter = centers[0], rightEyeCenter = centers[1], mouthCenter = centers[2];
var distToMouth = function (pt) { return mouthCenter.sub(pt).magnitude(); }; var distToMouth = function (pt) { return mouthCenter.sub(pt).magnitude(); };
...@@ -80,6 +89,10 @@ var FaceLandmarks = /** @class */ (function () { ...@@ -80,6 +89,10 @@ var FaceLandmarks = /** @class */ (function () {
var y = Math.floor(Math.max(0, refPoint.y - (relY * size))); var y = Math.floor(Math.max(0, refPoint.y - (relY * size)));
return new tfjs_image_recognition_base_1.Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y)); return new tfjs_image_recognition_base_1.Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y));
}; };
FaceLandmarks.prototype.alignMinBbox = function (padding) {
var box = minBbox_1.minBbox(this.positions);
return box.pad(box.width * padding, box.height * padding);
};
FaceLandmarks.prototype.getRefPointsForAlignment = function () { FaceLandmarks.prototype.getRefPointsForAlignment = function () {
throw new Error('getRefPointsForAlignment not implemented by base class'); throw new Error('getRefPointsForAlignment not implemented by base class');
}; };
......
{"version":3,"file":"FaceLandmarks.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks.ts"],"names":[],"mappings":"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"} {"version":3,"file":"FaceLandmarks.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
{"version":3,"file":"depthwiseSeparableConv.js","sourceRoot":"","sources":["../../../src/common/depthwiseSeparableConv.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAG5C,SAAgB,sBAAsB,CACpC,CAAc,EACd,MAAoD,EACpD,MAAwB;IAExB,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAI,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACjG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9B,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC;AAVD,wDAUC"}
\ No newline at end of file
import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base';
export declare function loadConvParamsFactory(extractWeightEntry: <T>(originalPath: string, paramRank: number) => T): (prefix: string) => TfjsImageRecognitionBase.ConvParams;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function loadConvParamsFactory(extractWeightEntry) {
return function (prefix) {
var filters = extractWeightEntry(prefix + "/filters", 4);
var bias = extractWeightEntry(prefix + "/bias", 1);
return { filters: filters, bias: bias };
};
}
exports.loadConvParamsFactory = loadConvParamsFactory;
//# sourceMappingURL=loadConvParamsFactory.js.map
\ No newline at end of file
{"version":3,"file":"loadConvParamsFactory.js","sourceRoot":"","sources":["../../../src/common/loadConvParamsFactory.ts"],"names":[],"mappings":";;AAGA,SAAgB,qBAAqB,CAAC,kBAAqE;IACzG,OAAO,UAAS,MAAc;QAC5B,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,aAAU,EAAE,CAAC,CAAC,CAAA;QACvE,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,CAAC,CAAA;QAEjE,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC,CAAA;AACH,CAAC;AAPD,sDAOC"}
\ No newline at end of file
{"version":3,"file":"drawContour.js","sourceRoot":"","sources":["../../../src/dom/drawContour.ts"],"names":[],"mappings":";;AAEA,SAAgB,WAAW,CACzB,GAA6B,EAC7B,MAAe,EACf,QAAyB;IAAzB,yBAAA,EAAA,gBAAyB;IAEzB,GAAG,CAAC,SAAS,EAAE,CAAA;IAEf,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAC,EAAQ,EAAE,OAAO;YAAf,QAAC,EAAE,QAAC;QAC7B,IAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,IAAI,QAAQ,EAAE;QACZ,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtC,IAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE;YAChB,OAAM;SACP;QAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;KACvB;IAED,GAAG,CAAC,MAAM,EAAE,CAAA;AACd,CAAC;AAzBD,kCAyBC"}
\ No newline at end of file
import { DrawFaceExpressionsInput, DrawFaceExpressionsOptions } from './types';
export declare function drawFaceExpressions(canvasArg: string | HTMLCanvasElement, faceExpressions: DrawFaceExpressionsInput | DrawFaceExpressionsInput[], options?: DrawFaceExpressionsOptions): void;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
function drawFaceExpressions(canvasArg, faceExpressions, options) {
var canvas = tfjs_image_recognition_base_1.resolveInput(canvasArg);
if (!(canvas instanceof tfjs_image_recognition_base_1.env.getEnv().Canvas)) {
throw new Error('drawFaceExpressions - expected canvas to be of type: HTMLCanvasElement');
}
var drawOptions = Object.assign(tfjs_image_recognition_base_1.getDefaultDrawOptions(options), (options || {}));
var ctx = tfjs_image_recognition_base_1.getContext2dOrThrow(canvas);
var _a = drawOptions.primaryColor, primaryColor = _a === void 0 ? 'red' : _a, _b = drawOptions.secondaryColor, secondaryColor = _b === void 0 ? 'blue' : _b, _c = drawOptions.primaryFontSize, primaryFontSize = _c === void 0 ? 22 : _c, _d = drawOptions.secondaryFontSize, secondaryFontSize = _d === void 0 ? 16 : _d, _e = drawOptions.minConfidence, minConfidence = _e === void 0 ? 0.2 : _e;
var faceExpressionsArray = Array.isArray(faceExpressions)
? faceExpressions
: [faceExpressions];
faceExpressionsArray.forEach(function (_a) {
var position = _a.position, expressions = _a.expressions;
var x = position.x, y = position.y;
var height = position.height || 0;
var sorted = expressions.sort(function (a, b) { return b.probability - a.probability; });
var resultsToDisplay = sorted.filter(function (expr) { return expr.probability > minConfidence; });
var offset = (y + height + resultsToDisplay.length * primaryFontSize) > canvas.height
? -(resultsToDisplay.length * primaryFontSize)
: 0;
resultsToDisplay.forEach(function (expr, i) {
var text = expr.expression + " (" + tfjs_image_recognition_base_1.round(expr.probability) + ")";
tfjs_image_recognition_base_1.drawText(ctx, x, y + height + (i * primaryFontSize) + offset, text, {
textColor: i === 0 ? primaryColor : secondaryColor,
fontSize: i === 0 ? primaryFontSize : secondaryFontSize
});
});
});
}
exports.drawFaceExpressions = drawFaceExpressions;
//# sourceMappingURL=drawFaceExpressions.js.map
\ No newline at end of file
{"version":3,"file":"drawFaceExpressions.js","sourceRoot":"","sources":["../../../src/dom/drawFaceExpressions.ts"],"names":[],"mappings":";;AAAA,2EAA6H;AAK7H,SAAgB,mBAAmB,CACjC,SAAqC,EACrC,eAAsE,EACtE,OAAoC;IAEpC,IAAM,MAAM,GAAG,0CAAY,CAAC,SAAS,CAAC,CAAA;IACtC,IAAI,CAAC,CAAC,MAAM,YAAY,iCAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;QAC5C,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;KAC1F;IAED,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAC/B,mDAAqB,CAAC,OAAO,CAAC,EAC9B,CAAC,OAAO,IAAI,EAAE,CAAC,CAChB,CAAA;IAED,IAAM,GAAG,GAAG,iDAAmB,CAAC,MAAM,CAAC,CAAA;IAErC,IAAA,6BAAoB,EAApB,yCAAoB,EACpB,+BAAuB,EAAvB,4CAAuB,EACvB,gCAAoB,EAApB,yCAAoB,EACpB,kCAAsB,EAAtB,2CAAsB,EACtB,8BAAmB,EAAnB,wCAAmB,CACN;IAEf,IAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;QACzD,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;IAErB,oBAAoB,CAAC,OAAO,CAAC,UAAC,EAAyB;YAAvB,sBAAQ,EAAE,4BAAW;QAC3C,IAAA,cAAC,EAAE,cAAC,CAAa;QACzB,IAAM,MAAM,GAAI,QAAkB,CAAC,MAAM,IAAI,CAAC,CAAA;QAC9C,IAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,EAA7B,CAA6B,CAAC,CAAA;QACxE,IAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,WAAW,GAAG,aAAa,EAAhC,CAAgC,CAAC,CAAA;QAEhF,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC,GAAG,MAAM,CAAC,MAAM;YACnF,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC;YAC9C,CAAC,CAAC,CAAC,CAAA;QACL,gBAAgB,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,CAAC;YAC/B,IAAM,IAAI,GAAM,IAAI,CAAC,UAAU,UAAK,mCAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAG,CAAA;YAC9D,sCAAQ,CACN,GAAG,EACH,CAAC,EACD,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,GAAG,MAAM,EAC3C,IAAI,EACJ;gBACE,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc;gBAClD,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB;aACxD,CACF,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AAGJ,CAAC;AArDD,kDAqDC"}
\ No newline at end of file
import { FaceLandmarks } from '../classes/FaceLandmarks';
import { DrawLandmarksOptions } from './types';
export declare function drawLandmarks(canvasArg: string | HTMLCanvasElement, faceLandmarks: FaceLandmarks | FaceLandmarks[], options?: DrawLandmarksOptions): void;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
var FaceLandmarks68_1 = require("../classes/FaceLandmarks68");
var drawContour_1 = require("./drawContour");
function drawLandmarks(canvasArg, faceLandmarks, options) {
var canvas = tfjs_image_recognition_base_1.resolveInput(canvasArg);
if (!(canvas instanceof tfjs_image_recognition_base_1.env.getEnv().Canvas)) {
throw new Error('drawLandmarks - expected canvas to be of type: HTMLCanvasElement');
}
var drawOptions = Object.assign(tfjs_image_recognition_base_1.getDefaultDrawOptions(options), (options || {}));
var drawLines = Object.assign({ drawLines: false }, (options || {})).drawLines;
var ctx = tfjs_image_recognition_base_1.getContext2dOrThrow(canvas);
var lineWidth = drawOptions.lineWidth, _a = drawOptions.color, color = _a === void 0 ? 'blue' : _a;
var faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];
faceLandmarksArray.forEach(function (landmarks) {
if (drawLines && landmarks instanceof FaceLandmarks68_1.FaceLandmarks68) {
ctx.strokeStyle = color;
ctx.lineWidth = lineWidth;
drawContour_1.drawContour(ctx, landmarks.getJawOutline());
drawContour_1.drawContour(ctx, landmarks.getLeftEyeBrow());
drawContour_1.drawContour(ctx, landmarks.getRightEyeBrow());
drawContour_1.drawContour(ctx, landmarks.getNose());
drawContour_1.drawContour(ctx, landmarks.getLeftEye(), true);
drawContour_1.drawContour(ctx, landmarks.getRightEye(), true);
drawContour_1.drawContour(ctx, landmarks.getMouth(), true);
return;
}
// else draw points
var ptOffset = lineWidth / 2;
ctx.fillStyle = color;
landmarks.positions.forEach(function (pt) { return ctx.fillRect(pt.x - ptOffset, pt.y - ptOffset, lineWidth, lineWidth); });
});
}
exports.drawLandmarks = drawLandmarks;
//# sourceMappingURL=drawLandmarks.js.map
\ No newline at end of file
{"version":3,"file":"drawLandmarks.js","sourceRoot":"","sources":["../../../src/dom/drawLandmarks.ts"],"names":[],"mappings":";;AAAA,2EAA4G;AAG5G,8DAA6D;AAC7D,6CAA4C;AAG5C,SAAgB,aAAa,CAC3B,SAAqC,EACrC,aAA8C,EAC9C,OAA8B;IAE9B,IAAM,MAAM,GAAG,0CAAY,CAAC,SAAS,CAAC,CAAA;IACtC,IAAI,CAAC,CAAC,MAAM,YAAY,iCAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;QAC5C,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;KACpF;IAED,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAC/B,mDAAqB,CAAC,OAAO,CAAC,EAC9B,CAAC,OAAO,IAAI,EAAE,CAAC,CAChB,CAAA;IAEO,IAAA,0EAAS,CAAyD;IAE1E,IAAM,GAAG,GAAG,iDAAmB,CAAC,MAAM,CAAC,CAAA;IAC/B,IAAA,iCAAS,EAAE,sBAAc,EAAd,mCAAc,CAAgB;IAEjD,IAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;IAEzF,kBAAkB,CAAC,OAAO,CAAC,UAAA,SAAS;QAClC,IAAI,SAAS,IAAI,SAAS,YAAY,iCAAe,EAAE;YACrD,GAAG,CAAC,WAAW,GAAG,KAAK,CAAA;YACvB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;YACzB,yBAAW,CAAC,GAAG,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC,CAAA;YAC3C,yBAAW,CAAC,GAAG,EAAE,SAAS,CAAC,cAAc,EAAE,CAAC,CAAA;YAC5C,yBAAW,CAAC,GAAG,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC,CAAA;YAC7C,yBAAW,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;YACrC,yBAAW,CAAC,GAAG,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAA;YAC9C,yBAAW,CAAC,GAAG,EAAE,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAA;YAC/C,yBAAW,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAA;YAC5C,OAAM;SACP;QAED,mBAAmB;QACnB,IAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAA;QAC9B,GAAG,CAAC,SAAS,GAAG,KAAK,CAAA;QACrB,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,EAAE,IAAI,OAAA,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAApE,CAAoE,CAAC,CAAA;IACzG,CAAC,CAAC,CAAA;AACJ,CAAC;AAzCD,sCAyCC"}
\ No newline at end of file
export * from './drawContour';
export * from './drawLandmarks';
export * from './drawFaceExpressions';
export * from './extractFaces'; export * from './extractFaces';
export * from './extractFaceTensors'; export * from './extractFaceTensors';
export * from './types';
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib"); var tslib_1 = require("tslib");
tslib_1.__exportStar(require("./drawContour"), exports);
tslib_1.__exportStar(require("./drawLandmarks"), exports);
tslib_1.__exportStar(require("./drawFaceExpressions"), exports);
tslib_1.__exportStar(require("./extractFaces"), exports); tslib_1.__exportStar(require("./extractFaces"), exports);
tslib_1.__exportStar(require("./extractFaceTensors"), exports); tslib_1.__exportStar(require("./extractFaceTensors"), exports);
//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dom/index.ts"],"names":[],"mappings":";;;AAAA,wDAA6B;AAC7B,0DAA+B;AAC/B,gEAAqC;AACrC,yDAA8B;AAC9B,+DAAoC"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dom/index.ts"],"names":[],"mappings":";;;AAAA,yDAA8B;AAC9B,+DAAoC"}
\ No newline at end of file \ No newline at end of file
import { IPoint, IRect } from 'tfjs-image-recognition-base';
import { WithFaceExpressions } from '../factories/WithFaceExpressions';
export declare type DrawLandmarksOptions = {
lineWidth?: number;
color?: string;
drawLines?: boolean;
};
export declare type DrawFaceExpressionsOptions = {
primaryColor?: string;
secondaryColor?: string;
primaryFontSize?: number;
secondaryFontSize?: number;
minConfidence?: number;
};
export declare type DrawFaceExpressionsInput = WithFaceExpressions<{
position: IPoint | IRect;
}>;
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dom/types.ts"],"names":[],"mappings":""}
\ No newline at end of file
import { FaceLandmarks } from '../classes/FaceLandmarks';
import { WithFaceDetection } from '../factories/WithFaceDetection';
import { WithFaceLandmarks } from '../factories/WithFaceLandmarks';
export interface IDrawFaceLandmarksOptions {
drawLines?: boolean;
drawPoints?: boolean;
lineWidth?: number;
pointSize?: number;
lineColor?: string;
pointColor?: string;
}
export declare class DrawFaceLandmarksOptions {
drawLines: boolean;
drawPoints: boolean;
lineWidth: number;
pointSize: number;
lineColor: string;
pointColor: string;
constructor(options?: IDrawFaceLandmarksOptions);
}
export declare class DrawFaceLandmarks {
faceLandmarks: FaceLandmarks;
options: DrawFaceLandmarksOptions;
constructor(faceLandmarks: FaceLandmarks, options?: IDrawFaceLandmarksOptions);
draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): void;
}
export declare type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks<WithFaceDetection<{}>>;
export declare function drawFaceLandmarks(canvasArg: string | HTMLCanvasElement, faceLandmarks: DrawFaceLandmarksInput | Array<DrawFaceLandmarksInput>): void;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
var FaceLandmarks_1 = require("../classes/FaceLandmarks");
var FaceLandmarks68_1 = require("../classes/FaceLandmarks68");
var WithFaceLandmarks_1 = require("../factories/WithFaceLandmarks");
var drawContour_1 = require("./drawContour");
var DrawFaceLandmarksOptions = /** @class */ (function () {
function DrawFaceLandmarksOptions(options) {
if (options === void 0) { options = {}; }
var _a = options.drawLines, drawLines = _a === void 0 ? true : _a, _b = options.drawPoints, drawPoints = _b === void 0 ? true : _b, lineWidth = options.lineWidth, lineColor = options.lineColor, pointSize = options.pointSize, pointColor = options.pointColor;
this.drawLines = drawLines;
this.drawPoints = drawPoints;
this.lineWidth = lineWidth || 1;
this.pointSize = pointSize || 2;
this.lineColor = lineColor || 'rgba(0, 255, 255, 1)';
this.pointColor = pointColor || 'rgba(255, 0, 255, 1)';
}
return DrawFaceLandmarksOptions;
}());
exports.DrawFaceLandmarksOptions = DrawFaceLandmarksOptions;
var DrawFaceLandmarks = /** @class */ (function () {
function DrawFaceLandmarks(faceLandmarks, options) {
if (options === void 0) { options = {}; }
this.faceLandmarks = faceLandmarks;
this.options = new DrawFaceLandmarksOptions(options);
}
DrawFaceLandmarks.prototype.draw = function (canvasArg) {
var ctx = tfjs_image_recognition_base_1.getContext2dOrThrow(canvasArg);
var _a = this.options, drawLines = _a.drawLines, drawPoints = _a.drawPoints, lineWidth = _a.lineWidth, lineColor = _a.lineColor, pointSize = _a.pointSize, pointColor = _a.pointColor;
if (drawLines && this.faceLandmarks instanceof FaceLandmarks68_1.FaceLandmarks68) {
ctx.strokeStyle = lineColor;
ctx.lineWidth = lineWidth;
drawContour_1.drawContour(ctx, this.faceLandmarks.getJawOutline());
drawContour_1.drawContour(ctx, this.faceLandmarks.getLeftEyeBrow());
drawContour_1.drawContour(ctx, this.faceLandmarks.getRightEyeBrow());
drawContour_1.drawContour(ctx, this.faceLandmarks.getNose());
drawContour_1.drawContour(ctx, this.faceLandmarks.getLeftEye(), true);
drawContour_1.drawContour(ctx, this.faceLandmarks.getRightEye(), true);
drawContour_1.drawContour(ctx, this.faceLandmarks.getMouth(), true);
}
if (drawPoints) {
ctx.strokeStyle = pointColor;
ctx.fillStyle = pointColor;
var drawPoint = function (pt) {
ctx.beginPath();
ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI);
ctx.fill();
};
this.faceLandmarks.positions.forEach(drawPoint);
}
};
return DrawFaceLandmarks;
}());
exports.DrawFaceLandmarks = DrawFaceLandmarks;
function drawFaceLandmarks(canvasArg, faceLandmarks) {
var faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];
faceLandmarksArray.forEach(function (f) {
var landmarks = f instanceof FaceLandmarks_1.FaceLandmarks
? f
: (WithFaceLandmarks_1.isWithFaceLandmarks(f) ? f.landmarks : undefined);
if (!landmarks) {
throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks<WithFaceDetection<{}>> or array thereof');
}
new DrawFaceLandmarks(landmarks).draw(canvasArg);
});
}
exports.drawFaceLandmarks = drawFaceLandmarks;
//# sourceMappingURL=DrawFaceLandmarks.js.map
\ No newline at end of file
{"version":3,"file":"DrawFaceLandmarks.js","sourceRoot":"","sources":["../../../src/draw/DrawFaceLandmarks.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"drawContour.js","sourceRoot":"","sources":["../../../src/draw/drawContour.ts"],"names":[],"mappings":";;AAEA,SAAgB,WAAW,CACzB,GAA6B,EAC7B,MAAe,EACf,QAAyB;IAAzB,yBAAA,EAAA,gBAAyB;IAEzB,GAAG,CAAC,SAAS,EAAE,CAAA;IAEf,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAC,EAAQ,EAAE,OAAO;YAAf,QAAC,EAAE,QAAC;QAC7B,IAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,IAAI,QAAQ,EAAE;QACZ,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtC,IAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE;YAChB,OAAM;SACP;QAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;KACvB;IAED,GAAG,CAAC,MAAM,EAAE,CAAA;AACd,CAAC;AAzBD,kCAyBC"}
\ No newline at end of file
import { IBoundingBox, IRect } from 'tfjs-image-recognition-base';
import { FaceDetection } from '../classes/FaceDetection';
import { WithFaceDetection } from '../factories/WithFaceDetection';
export declare type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>;
export declare function drawDetections(canvasArg: string | HTMLCanvasElement, detections: TDrawDetectionsInput | Array<TDrawDetectionsInput>): void;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
var FaceDetection_1 = require("../classes/FaceDetection");
var WithFaceDetection_1 = require("../factories/WithFaceDetection");
function drawDetections(canvasArg, detections) {
var detectionsArray = Array.isArray(detections) ? detections : [detections];
detectionsArray.forEach(function (det) {
var score = det instanceof FaceDetection_1.FaceDetection
? det.score
: (WithFaceDetection_1.isWithFaceDetection(det) ? det.detection.score : undefined);
var box = det instanceof FaceDetection_1.FaceDetection
? det.box
: (WithFaceDetection_1.isWithFaceDetection(det) ? det.detection.box : new tfjs_image_recognition_base_1.Box(det));
var label = score ? "" + tfjs_image_recognition_base_1.round(score) : undefined;
new tfjs_image_recognition_base_1.draw.DrawBox(box, { label: label }).draw(canvasArg);
});
}
exports.drawDetections = drawDetections;
//# sourceMappingURL=drawDetections.js.map
\ No newline at end of file
{"version":3,"file":"drawDetections.js","sourceRoot":"","sources":["../../../src/draw/drawDetections.ts"],"names":[],"mappings":";;AAAA,2EAAoF;AAEpF,0DAAyD;AACzD,oEAAwF;AAIxF,SAAgB,cAAc,CAC5B,SAAqC,EACrC,UAA8D;IAE9D,IAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IAE7E,eAAe,CAAC,OAAO,CAAC,UAAA,GAAG;QACzB,IAAM,KAAK,GAAG,GAAG,YAAY,6BAAa;YACxC,CAAC,CAAC,GAAG,CAAC,KAAK;YACX,CAAC,CAAC,CAAC,uCAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAEhE,IAAM,GAAG,GAAG,GAAG,YAAY,6BAAa;YACtC,CAAC,CAAC,GAAG,CAAC,GAAG;YACT,CAAC,CAAC,CAAC,uCAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,iCAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAEjE,IAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAG,mCAAK,CAAC,KAAK,CAAG,CAAC,CAAC,CAAC,SAAS,CAAA;QACnD,IAAI,kCAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,OAAA,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;AACJ,CAAC;AAlBD,wCAkBC"}
\ No newline at end of file
import { IPoint } from 'tfjs-image-recognition-base';
import { FaceExpressions } from '../faceExpressionNet';
import { WithFaceExpressions } from '../factories/WithFaceExpressions';
export declare type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>;
export declare function drawFaceExpressions(canvasArg: string | HTMLCanvasElement, faceExpressions: DrawFaceExpressionsInput | Array<DrawFaceExpressionsInput>, minConfidence?: number, textFieldAnchor?: IPoint): void;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
var faceExpressionNet_1 = require("../faceExpressionNet");
var WithFaceDetection_1 = require("../factories/WithFaceDetection");
var WithFaceExpressions_1 = require("../factories/WithFaceExpressions");
function drawFaceExpressions(canvasArg, faceExpressions, minConfidence, textFieldAnchor) {
if (minConfidence === void 0) { minConfidence = 0.1; }
var faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions];
faceExpressionsArray.forEach(function (e) {
var expr = e instanceof faceExpressionNet_1.FaceExpressions
? e
: (WithFaceExpressions_1.isWithFaceExpressions(e) ? e.expressions : undefined);
if (!expr) {
throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof');
}
var sorted = expr.asSortedArray();
var resultsToDisplay = sorted.filter(function (expr) { return expr.probability > minConfidence; });
var anchor = WithFaceDetection_1.isWithFaceDetection(e)
? e.detection.box.bottomLeft
: (textFieldAnchor || new tfjs_image_recognition_base_1.Point(0, 0));
var drawTextField = new tfjs_image_recognition_base_1.draw.DrawTextField(resultsToDisplay.map(function (expr) { return expr.expression + " (" + tfjs_image_recognition_base_1.round(expr.probability) + ")"; }), anchor);
drawTextField.draw(canvasArg);
});
}
exports.drawFaceExpressions = drawFaceExpressions;
//# sourceMappingURL=drawFaceExpressions.js.map
\ No newline at end of file
{"version":3,"file":"drawFaceExpressions.js","sourceRoot":"","sources":["../../../src/draw/drawFaceExpressions.ts"],"names":[],"mappings":";;AAAA,2EAAyE;AAEzE,0DAAuD;AACvD,oEAAqE;AACrE,wEAA8F;AAI9F,SAAgB,mBAAmB,CACjC,SAAqC,EACrC,eAA2E,EAC3E,aAAmB,EACnB,eAAwB;IADxB,8BAAA,EAAA,mBAAmB;IAGnB,IAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;IAEjG,oBAAoB,CAAC,OAAO,CAAC,UAAA,CAAC;QAC5B,IAAM,IAAI,GAAG,CAAC,YAAY,mCAAe;YACvC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC,2CAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAC1D,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,iHAAiH,CAAC,CAAA;SACnI;QAED,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QACnC,IAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,WAAW,GAAG,aAAa,EAAhC,CAAgC,CAAC,CAAA;QAEhF,IAAM,MAAM,GAAG,uCAAmB,CAAC,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU;YAC5B,CAAC,CAAC,CAAC,eAAe,IAAI,IAAI,mCAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAExC,IAAM,aAAa,GAAG,IAAI,kCAAI,CAAC,aAAa,CAC1C,gBAAgB,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAG,IAAI,CAAC,UAAU,UAAK,mCAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAG,EAAjD,CAAiD,CAAC,EAC/E,MAAM,CACP,CAAA;QACD,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC;AA7BD,kDA6BC"}
\ No newline at end of file
export * from './drawContour';
export * from './drawDetections';
export * from './drawFaceExpressions';
export * from './DrawFaceLandmarks';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
tslib_1.__exportStar(require("./drawContour"), exports);
tslib_1.__exportStar(require("./drawDetections"), exports);
tslib_1.__exportStar(require("./drawFaceExpressions"), exports);
tslib_1.__exportStar(require("./DrawFaceLandmarks"), exports);
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/draw/index.ts"],"names":[],"mappings":";;;AAAA,wDAA6B;AAC7B,2DAAgC;AAChC,gEAAqC;AACrC,8DAAmC"}
\ No newline at end of file
...@@ -3,14 +3,12 @@ import { NetInput, TNetInput } from 'tfjs-image-recognition-base'; ...@@ -3,14 +3,12 @@ import { NetInput, TNetInput } from 'tfjs-image-recognition-base';
import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor'; import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';
import { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; import { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';
import { FaceProcessor } from '../faceProcessor/FaceProcessor'; import { FaceProcessor } from '../faceProcessor/FaceProcessor';
import { FaceExpressionPrediction } from './types'; import { FaceExpressions } from './FaceExpressions';
export declare class FaceExpressionNet extends FaceProcessor<FaceFeatureExtractorParams> { export declare class FaceExpressionNet extends FaceProcessor<FaceFeatureExtractorParams> {
static getFaceExpressionLabel(faceExpression: string): number;
static decodeProbabilites(probabilities: number[] | Float32Array): FaceExpressionPrediction[];
constructor(faceFeatureExtractor?: FaceFeatureExtractor); constructor(faceFeatureExtractor?: FaceFeatureExtractor);
forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D; forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D;
forward(input: TNetInput): Promise<tf.Tensor2D>; forward(input: TNetInput): Promise<tf.Tensor2D>;
predictExpressions(input: TNetInput): Promise<FaceExpressionPrediction[] | FaceExpressionPrediction[][]>; predictExpressions(input: TNetInput): Promise<FaceExpressions | FaceExpressions[]>;
protected getDefaultModelName(): string; protected getDefaultModelName(): string;
protected getClassifierChannelsIn(): number; protected getClassifierChannelsIn(): number;
protected getClassifierChannelsOut(): number; protected getClassifierChannelsOut(): number;
......
...@@ -5,27 +5,13 @@ var tf = require("@tensorflow/tfjs-core"); ...@@ -5,27 +5,13 @@ var tf = require("@tensorflow/tfjs-core");
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
var FaceFeatureExtractor_1 = require("../faceFeatureExtractor/FaceFeatureExtractor"); var FaceFeatureExtractor_1 = require("../faceFeatureExtractor/FaceFeatureExtractor");
var FaceProcessor_1 = require("../faceProcessor/FaceProcessor"); var FaceProcessor_1 = require("../faceProcessor/FaceProcessor");
var types_1 = require("./types"); var FaceExpressions_1 = require("./FaceExpressions");
var FaceExpressionNet = /** @class */ (function (_super) { var FaceExpressionNet = /** @class */ (function (_super) {
tslib_1.__extends(FaceExpressionNet, _super); tslib_1.__extends(FaceExpressionNet, _super);
function FaceExpressionNet(faceFeatureExtractor) { function FaceExpressionNet(faceFeatureExtractor) {
if (faceFeatureExtractor === void 0) { faceFeatureExtractor = new FaceFeatureExtractor_1.FaceFeatureExtractor(); } if (faceFeatureExtractor === void 0) { faceFeatureExtractor = new FaceFeatureExtractor_1.FaceFeatureExtractor(); }
return _super.call(this, 'FaceExpressionNet', faceFeatureExtractor) || this; return _super.call(this, 'FaceExpressionNet', faceFeatureExtractor) || this;
} }
FaceExpressionNet.getFaceExpressionLabel = function (faceExpression) {
var label = types_1.faceExpressionLabels[faceExpression];
if (typeof label !== 'number') {
throw new Error("getFaceExpressionLabel - no label for faceExpression: " + faceExpression);
}
return label;
};
FaceExpressionNet.decodeProbabilites = function (probabilities) {
if (probabilities.length !== 7) {
throw new Error("decodeProbabilites - expected probabilities.length to be 7, have: " + probabilities.length);
}
return Object.keys(types_1.faceExpressionLabels)
.map(function (expression) { return ({ expression: expression, probability: probabilities[types_1.faceExpressionLabels[expression]] }); });
};
FaceExpressionNet.prototype.forwardInput = function (input) { FaceExpressionNet.prototype.forwardInput = function (input) {
var _this = this; var _this = this;
return tf.tidy(function () { return tf.softmax(_this.runNet(input)); }); return tf.tidy(function () { return tf.softmax(_this.runNet(input)); });
...@@ -71,7 +57,7 @@ var FaceExpressionNet = /** @class */ (function (_super) { ...@@ -71,7 +57,7 @@ var FaceExpressionNet = /** @class */ (function (_super) {
probabilitesByBatch = _a.sent(); probabilitesByBatch = _a.sent();
out.dispose(); out.dispose();
predictionsByBatch = probabilitesByBatch predictionsByBatch = probabilitesByBatch
.map(function (propablities) { return FaceExpressionNet.decodeProbabilites(propablities); }); .map(function (probabilites) { return new FaceExpressions_1.FaceExpressions(probabilites); });
return [2 /*return*/, netInput.isBatchInput return [2 /*return*/, netInput.isBatchInput
? predictionsByBatch ? predictionsByBatch
: predictionsByBatch[0]]; : predictionsByBatch[0]];
......
{"version":3,"file":"FaceExpressionNet.js","sourceRoot":"","sources":["../../../src/faceExpressionNet/FaceExpressionNet.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAA8E;AAE9E,qFAAoF;AAEpF,gEAA+D;AAC/D,iCAAyF;AAEzF;IAAuC,6CAAyC;IAqB9E,2BAAY,oBAAuE;QAAvE,qCAAA,EAAA,2BAAiD,2CAAoB,EAAE;eACjF,kBAAM,mBAAmB,EAAE,oBAAoB,CAAC;IAClD,CAAC;IArBa,wCAAsB,GAApC,UAAqC,cAAsB;QACzD,IAAM,KAAK,GAAG,4BAAoB,CAAC,cAAc,CAAC,CAAA;QAElD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,2DAAyD,cAAgB,CAAC,CAAA;SAC3F;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAEa,oCAAkB,GAAhC,UAAiC,aAAsC;QACrE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,uEAAqE,aAAa,CAAC,MAAQ,CAAC,CAAA;SAC7G;QAED,OAAQ,MAAM,CAAC,IAAI,CAAC,4BAAoB,CAAsB;aAC3D,GAAG,CAAC,UAAA,UAAU,IAAI,OAAA,CAAC,EAAE,UAAU,YAAA,EAAE,WAAW,EAAE,aAAa,CAAC,4BAAoB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAA9E,CAA8E,CAAC,CAAA;IACtG,CAAC;IAMM,wCAAY,GAAnB,UAAoB,KAA6B;QAAjD,iBAEC;QADC,OAAO,EAAE,CAAC,IAAI,CAAC,cAAM,OAAA,EAAE,CAAC,OAAO,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAA9B,CAA8B,CAAC,CAAA;IACtD,CAAC;IAEY,mCAAO,GAApB,UAAqB,KAAgB;;;;;;wBAC5B,KAAA,IAAI,CAAC,YAAY,CAAA;wBAAC,qBAAM,wCAAU,CAAC,KAAK,CAAC,EAAA;4BAAhD,sBAAO,SAAA,IAAI,GAAc,SAAuB,EAAC,EAAA;;;;KAClD;IAEY,8CAAkB,GAA/B,UAAgC,KAAgB;;;;;;4BAC7B,qBAAM,wCAAU,CAAC,KAAK,CAAC,EAAA;;wBAAlC,QAAQ,GAAG,SAAuB;wBAC5B,qBAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAA;;wBAAvC,GAAG,GAAG,SAAiC;wBACjB,qBAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAM,CAAC;;;;gDAC1D,qBAAM,CAAC,CAAC,IAAI,EAAE,EAAA;;4CAArB,IAAI,GAAG,SAAc;4CAC3B,CAAC,CAAC,OAAO,EAAE,CAAA;4CACX,sBAAO,IAAI,EAAA;;;iCACZ,CAAC,CAAC,EAAA;;wBAJG,mBAAmB,GAAG,SAIzB;wBACH,GAAG,CAAC,OAAO,EAAE,CAAA;wBAEP,kBAAkB,GAAG,mBAAmB;6BAC3C,GAAG,CAAC,UAAA,YAAY,IAAI,OAAA,iBAAiB,CAAC,kBAAkB,CAAC,YAA4B,CAAC,EAAlE,CAAkE,CAAC,CAAA;wBAE1F,sBAAO,QAAQ,CAAC,YAAY;gCAC1B,CAAC,CAAC,kBAAkB;gCACpB,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAA;;;;KAC1B;IAES,+CAAmB,GAA7B;QACE,OAAO,uBAAuB,CAAA;IAChC,CAAC;IAES,mDAAuB,GAAjC;QACE,OAAO,GAAG,CAAA;IACZ,CAAC;IAES,oDAAwB,GAAlC;QACE,OAAO,CAAC,CAAA;IACV,CAAC;IACH,wBAAC;AAAD,CAAC,AA9DD,CAAuC,6BAAa,GA8DnD;AA9DY,8CAAiB"} {"version":3,"file":"FaceExpressionNet.js","sourceRoot":"","sources":["../../../src/faceExpressionNet/FaceExpressionNet.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAA8E;AAE9E,qFAAoF;AAEpF,gEAA+D;AAC/D,qDAAoD;AAEpD;IAAuC,6CAAyC;IAE9E,2BAAY,oBAAuE;QAAvE,qCAAA,EAAA,2BAAiD,2CAAoB,EAAE;eACjF,kBAAM,mBAAmB,EAAE,oBAAoB,CAAC;IAClD,CAAC;IAEM,wCAAY,GAAnB,UAAoB,KAA6B;QAAjD,iBAEC;QADC,OAAO,EAAE,CAAC,IAAI,CAAC,cAAM,OAAA,EAAE,CAAC,OAAO,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAA9B,CAA8B,CAAC,CAAA;IACtD,CAAC;IAEY,mCAAO,GAApB,UAAqB,KAAgB;;;;;;wBAC5B,KAAA,IAAI,CAAC,YAAY,CAAA;wBAAC,qBAAM,wCAAU,CAAC,KAAK,CAAC,EAAA;4BAAhD,sBAAO,SAAA,IAAI,GAAc,SAAuB,EAAC,EAAA;;;;KAClD;IAEY,8CAAkB,GAA/B,UAAgC,KAAgB;;;;;;4BAC7B,qBAAM,wCAAU,CAAC,KAAK,CAAC,EAAA;;wBAAlC,QAAQ,GAAG,SAAuB;wBAC5B,qBAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAA;;wBAAvC,GAAG,GAAG,SAAiC;wBACjB,qBAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAM,CAAC;;;;gDAC1D,qBAAM,CAAC,CAAC,IAAI,EAAE,EAAA;;4CAArB,IAAI,GAAG,SAAc;4CAC3B,CAAC,CAAC,OAAO,EAAE,CAAA;4CACX,sBAAO,IAAI,EAAA;;;iCACZ,CAAC,CAAC,EAAA;;wBAJG,mBAAmB,GAAG,SAIzB;wBACH,GAAG,CAAC,OAAO,EAAE,CAAA;wBAEP,kBAAkB,GAAG,mBAAmB;6BAC3C,GAAG,CAAC,UAAA,YAAY,IAAI,OAAA,IAAI,iCAAe,CAAC,YAA4B,CAAC,EAAjD,CAAiD,CAAC,CAAA;wBAEzE,sBAAO,QAAQ,CAAC,YAAY;gCAC1B,CAAC,CAAC,kBAAkB;gCACpB,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAA;;;;KAC1B;IAES,+CAAmB,GAA7B;QACE,OAAO,uBAAuB,CAAA;IAChC,CAAC;IAES,mDAAuB,GAAjC;QACE,OAAO,GAAG,CAAA;IACZ,CAAC;IAES,oDAAwB,GAAlC;QACE,OAAO,CAAC,CAAA;IACV,CAAC;IACH,wBAAC;AAAD,CAAC,AA3CD,CAAuC,6BAAa,GA2CnD;AA3CY,8CAAiB"}
\ No newline at end of file \ No newline at end of file
export declare const faceExpressionLabels: { export declare const FACE_EXPRESSION_LABELS: string[];
export declare class FaceExpressions {
neutral: number; neutral: number;
happy: number; happy: number;
sad: number; sad: number;
...@@ -6,9 +7,9 @@ export declare const faceExpressionLabels: { ...@@ -6,9 +7,9 @@ export declare const faceExpressionLabels: {
fearful: number; fearful: number;
disgusted: number; disgusted: number;
surprised: number; surprised: number;
}; constructor(probabilities: number[] | Float32Array);
export declare type FaceExpression = 'neutral' | 'happy' | 'sad' | 'angry' | 'fearful' | 'disgusted' | 'surprised'; asSortedArray(): {
export declare type FaceExpressionPrediction = { expression: string;
expression: FaceExpression; probability: number;
probability: number; }[];
}; }
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised'];
var FaceExpressions = /** @class */ (function () {
function FaceExpressions(probabilities) {
var _this = this;
if (probabilities.length !== 7) {
throw new Error("FaceExpressions.constructor - expected probabilities.length to be 7, have: " + probabilities.length);
}
exports.FACE_EXPRESSION_LABELS.forEach(function (expression, idx) {
_this[expression] = probabilities[idx];
});
}
FaceExpressions.prototype.asSortedArray = function () {
var _this = this;
return exports.FACE_EXPRESSION_LABELS
.map(function (expression) { return ({ expression: expression, probability: _this[expression] }); })
.sort(function (e0, e1) { return e1.probability - e0.probability; });
};
return FaceExpressions;
}());
exports.FaceExpressions = FaceExpressions;
//# sourceMappingURL=FaceExpressions.js.map
\ No newline at end of file
{"version":3,"file":"FaceExpressions.js","sourceRoot":"","sources":["../../../src/faceExpressionNet/FaceExpressions.ts"],"names":[],"mappings":";;AAAa,QAAA,sBAAsB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;AAE/G;IASE,yBAAY,aAAsC;QAAlD,iBAQC;QAPC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,gFAA8E,aAAa,CAAC,MAAQ,CAAC,CAAA;SACtH;QAED,8BAAsB,CAAC,OAAO,CAAC,UAAC,UAAU,EAAE,GAAG;YAC7C,KAAI,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,uCAAa,GAAb;QAAA,iBAIC;QAHC,OAAO,8BAAsB;aAC1B,GAAG,CAAC,UAAA,UAAU,IAAI,OAAA,CAAC,EAAE,UAAU,YAAA,EAAE,WAAW,EAAE,KAAI,CAAC,UAAU,CAAW,EAAE,CAAC,EAAzD,CAAyD,CAAC;aAC5E,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,OAAA,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,EAA/B,CAA+B,CAAC,CAAA;IACtD,CAAC;IACH,sBAAC;AAAD,CAAC,AAxBD,IAwBC;AAxBY,0CAAe"}
\ No newline at end of file
export * from './FaceExpressionNet'; export * from './FaceExpressionNet';
export * from './types'; export * from './FaceExpressions';
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib"); var tslib_1 = require("tslib");
tslib_1.__exportStar(require("./FaceExpressionNet"), exports); tslib_1.__exportStar(require("./FaceExpressionNet"), exports);
tslib_1.__exportStar(require("./types"), exports); tslib_1.__exportStar(require("./FaceExpressions"), exports);
//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceExpressionNet/index.ts"],"names":[],"mappings":";;;AAAA,8DAAoC;AACpC,kDAAwB"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceExpressionNet/index.ts"],"names":[],"mappings":";;;AAAA,8DAAoC;AACpC,4DAAkC"}
\ No newline at end of file \ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.faceExpressionLabels = {
neutral: 0,
happy: 1,
sad: 2,
angry: 3,
fearful: 4,
disgusted: 5,
surprised: 6
};
//# sourceMappingURL=types.js.map
\ No newline at end of file
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/faceExpressionNet/types.ts"],"names":[],"mappings":";;AAAa,QAAA,oBAAoB,GAAG;IAClC,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,CAAC;IACZ,SAAS,EAAC,CAAC;CACZ,CAAA"}
\ No newline at end of file
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core"); var tf = require("@tensorflow/tfjs-core");
var depthwiseSeparableConv_1 = require("./depthwiseSeparableConv"); var depthwiseSeparableConv_1 = require("../common/depthwiseSeparableConv");
function denseBlock3(x, denseBlockParams, isFirstLayer) { function denseBlock3(x, denseBlockParams, isFirstLayer) {
if (isFirstLayer === void 0) { isFirstLayer = false; } if (isFirstLayer === void 0) { isFirstLayer = false; }
return tf.tidy(function () { return tf.tidy(function () {
......
{"version":3,"file":"denseBlock.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/denseBlock.ts"],"names":[],"mappings":"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"} {"version":3,"file":"denseBlock.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/denseBlock.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
{"version":3,"file":"depthwiseSeparableConv.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/depthwiseSeparableConv.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAG5C,SAAgB,sBAAsB,CACpC,CAAc,EACd,MAAoD,EACpD,MAAwB;IAExB,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAI,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACjG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9B,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC;AAVD,wDAUC"}
\ No newline at end of file
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
function extractorsFactory(extractWeights, paramMappings) { function extractorsFactory(extractWeights, paramMappings) {
function extractSeparableConvParams(channelsIn, channelsOut, mappedPrefix) {
var depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]);
var pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]);
var bias = tf.tensor1d(extractWeights(channelsOut));
paramMappings.push({ paramPath: mappedPrefix + "/depthwise_filter" }, { paramPath: mappedPrefix + "/pointwise_filter" }, { paramPath: mappedPrefix + "/bias" });
return new tfjs_image_recognition_base_1.TfjsImageRecognitionBase.SeparableConvParams(depthwise_filter, pointwise_filter, bias);
}
var extractConvParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractConvParamsFactory(extractWeights, paramMappings); var extractConvParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractConvParamsFactory(extractWeights, paramMappings);
var extractSeparableConvParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractSeparableConvParamsFactory(extractWeights, paramMappings);
function extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer) { function extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer) {
if (isFirstLayer === void 0) { isFirstLayer = false; } if (isFirstLayer === void 0) { isFirstLayer = false; }
var conv0 = isFirstLayer var conv0 = isFirstLayer
......
{"version":3,"file":"extractorsFactory.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/extractorsFactory.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAC5C,2EAAuE;AAIvE,SAAgB,iBAAiB,CAAC,cAA+D,EAAE,aAAsD;IAEvJ,SAAS,0BAA0B,CAAC,UAAkB,EAAE,WAAmB,EAAE,YAAoB;QAC/F,IAAM,gBAAgB,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAA;QAC/F,IAAM,gBAAgB,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;QAC/G,IAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAA;QAErD,aAAa,CAAC,IAAI,CAChB,EAAE,SAAS,EAAK,YAAY,sBAAmB,EAAE,EACjD,EAAE,SAAS,EAAK,YAAY,sBAAmB,EAAE,EACjD,EAAE,SAAS,EAAK,YAAY,UAAO,EAAE,CACtC,CAAA;QAED,OAAO,IAAI,sDAAwB,CAAC,mBAAmB,CACrD,gBAAgB,EAChB,gBAAgB,EAChB,IAAI,CACL,CAAA;IACH,CAAC;IAED,IAAM,iBAAiB,GAAG,sDAAwB,CAAC,wBAAwB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAE1G,SAAS,wBAAwB,CAAC,UAAkB,EAAE,WAAmB,EAAE,YAAoB,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAE5H,IAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,EAAK,YAAY,WAAQ,CAAC;YACxE,CAAC,CAAC,0BAA0B,CAAC,UAAU,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAChF,IAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAC3F,IAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAE3F,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IAChC,CAAC;IAED,SAAS,wBAAwB,CAAC,UAAkB,EAAE,WAAmB,EAAE,YAAoB,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAEtH,IAAA,kFAAuG,EAArG,gBAAK,EAAE,gBAAK,EAAE,gBAAuF,CAAA;QAC7G,IAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAE3F,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,wBAAwB,0BAAA;QACxB,wBAAwB,0BAAA;KACzB,CAAA;AAEH,CAAC;AA9CD,8CA8CC"} {"version":3,"file":"extractorsFactory.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/extractorsFactory.ts"],"names":[],"mappings":";;AAAA,2EAAuE;AAIvE,SAAgB,iBAAiB,CAAC,cAA+D,EAAE,aAAsD;IAEvJ,IAAM,iBAAiB,GAAG,sDAAwB,CAAC,wBAAwB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAC1G,IAAM,0BAA0B,GAAG,sDAAwB,CAAC,iCAAiC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAE5H,SAAS,wBAAwB,CAAC,UAAkB,EAAE,WAAmB,EAAE,YAAoB,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAE5H,IAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,EAAK,YAAY,WAAQ,CAAC;YACxE,CAAC,CAAC,0BAA0B,CAAC,UAAU,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAChF,IAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAC3F,IAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAE3F,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IAChC,CAAC;IAED,SAAS,wBAAwB,CAAC,UAAkB,EAAE,WAAmB,EAAE,YAAoB,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAEtH,IAAA,kFAAuG,EAArG,gBAAK,EAAE,gBAAK,EAAE,gBAAuF,CAAA;QAC7G,IAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAE3F,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,wBAAwB,0BAAA;QACxB,wBAAwB,0BAAA;KACzB,CAAA;AAEH,CAAC;AA7BD,8CA6BC"}
\ No newline at end of file \ No newline at end of file
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
var loadConvParamsFactory_1 = require("../common/loadConvParamsFactory");
function loadParamsFactory(weightMap, paramMappings) { function loadParamsFactory(weightMap, paramMappings) {
var extractWeightEntry = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); var extractWeightEntry = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings);
function extractConvParams(prefix) { var extractConvParams = loadConvParamsFactory_1.loadConvParamsFactory(extractWeightEntry);
var filters = extractWeightEntry(prefix + "/filters", 4); var extractSeparableConvParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.loadSeparableConvParamsFactory(extractWeightEntry);
var bias = extractWeightEntry(prefix + "/bias", 1);
return { filters: filters, bias: bias };
}
function extractSeparableConvParams(prefix) {
var depthwise_filter = extractWeightEntry(prefix + "/depthwise_filter", 4);
var pointwise_filter = extractWeightEntry(prefix + "/pointwise_filter", 4);
var bias = extractWeightEntry(prefix + "/bias", 1);
return new tfjs_image_recognition_base_1.TfjsImageRecognitionBase.SeparableConvParams(depthwise_filter, pointwise_filter, bias);
}
function extractDenseBlock3Params(prefix, isFirstLayer) { function extractDenseBlock3Params(prefix, isFirstLayer) {
if (isFirstLayer === void 0) { isFirstLayer = false; } if (isFirstLayer === void 0) { isFirstLayer = false; }
var conv0 = isFirstLayer var conv0 = isFirstLayer
......
{"version":3,"file":"loadParamsFactory.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/loadParamsFactory.ts"],"names":[],"mappings":";;AACA,2EAAuE;AAIvE,SAAgB,iBAAiB,CAAC,SAAc,EAAE,aAAsD;IAEtG,IAAM,kBAAkB,GAAG,sDAAwB,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEvG,SAAS,iBAAiB,CAAC,MAAc;QACvC,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,aAAU,EAAE,CAAC,CAAC,CAAA;QACvE,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,CAAC,CAAA;QAEjE,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC;IAED,SAAS,0BAA0B,CAAC,MAAc;QAChD,IAAM,gBAAgB,GAAG,kBAAkB,CAAiB,MAAM,sBAAmB,EAAE,CAAC,CAAC,CAAA;QACzF,IAAM,gBAAgB,GAAG,kBAAkB,CAAiB,MAAM,sBAAmB,EAAE,CAAC,CAAC,CAAA;QACzF,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,CAAC,CAAA;QAEjE,OAAO,IAAI,sDAAwB,CAAC,mBAAmB,CACrD,gBAAgB,EAChB,gBAAgB,EAChB,IAAI,CACL,CAAA;IACH,CAAC;IAED,SAAS,wBAAwB,CAAC,MAAc,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAC7E,IAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,iBAAiB,CAAI,MAAM,WAAQ,CAAC;YACtC,CAAC,CAAC,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QACjD,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAE3D,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IAChC,CAAC;IAED,SAAS,wBAAwB,CAAC,MAAc,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAC7E,IAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,iBAAiB,CAAI,MAAM,WAAQ,CAAC;YACtC,CAAC,CAAC,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QACjD,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAE3D,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,wBAAwB,0BAAA;QACxB,wBAAwB,0BAAA;KACzB,CAAA;AACH,CAAC;AAhDD,8CAgDC"} {"version":3,"file":"loadParamsFactory.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/loadParamsFactory.ts"],"names":[],"mappings":";;AAAA,2EAAuE;AAEvE,yEAAwE;AAGxE,SAAgB,iBAAiB,CAAC,SAAc,EAAE,aAAsD;IAEtG,IAAM,kBAAkB,GAAG,sDAAwB,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEvG,IAAM,iBAAiB,GAAG,6CAAqB,CAAC,kBAAkB,CAAC,CAAA;IACnE,IAAM,0BAA0B,GAAG,sDAAwB,CAAC,8BAA8B,CAAC,kBAAkB,CAAC,CAAA;IAE9G,SAAS,wBAAwB,CAAC,MAAc,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAC7E,IAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,iBAAiB,CAAI,MAAM,WAAQ,CAAC;YACtC,CAAC,CAAC,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QACjD,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAE3D,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IAChC,CAAC;IAED,SAAS,wBAAwB,CAAC,MAAc,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAC7E,IAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,iBAAiB,CAAI,MAAM,WAAQ,CAAC;YACtC,CAAC,CAAC,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QACjD,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAE3D,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,wBAAwB,0BAAA;QACxB,wBAAwB,0BAAA;KACzB,CAAA;AACH,CAAC;AAhCD,8CAgCC"}
\ No newline at end of file \ No newline at end of file
export declare type WithAge<TSource> = TSource & {
age: number;
};
export declare function isWithAge(obj: any): obj is WithAge<{}>;
export declare function extendWithAge<TSource>(sourceObj: TSource, age: number): WithAge<TSource>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function isWithAge(obj) {
return typeof obj['age'] === 'number';
}
exports.isWithAge = isWithAge;
function extendWithAge(sourceObj, age) {
var extension = { age: age };
return Object.assign({}, sourceObj, extension);
}
exports.extendWithAge = extendWithAge;
//# sourceMappingURL=WithAge.js.map
\ No newline at end of file
{"version":3,"file":"WithAge.js","sourceRoot":"","sources":["../../../src/factories/WithAge.ts"],"names":[],"mappings":";;AAIA,SAAgB,SAAS,CAAC,GAAQ;IAChC,OAAO,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAA;AACvC,CAAC;AAFD,8BAEC;AAED,SAAgB,aAAa,CAG3B,SAAkB,EAClB,GAAW;IAGX,IAAM,SAAS,GAAG,EAAE,GAAG,KAAA,EAAE,CAAA;IACzB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AATD,sCASC"}
\ No newline at end of file
...@@ -2,4 +2,5 @@ import { FaceDetection } from '../classes/FaceDetection'; ...@@ -2,4 +2,5 @@ import { FaceDetection } from '../classes/FaceDetection';
export declare type WithFaceDetection<TSource> = TSource & { export declare type WithFaceDetection<TSource> = TSource & {
detection: FaceDetection; detection: FaceDetection;
}; };
export declare function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}>;
export declare function extendWithFaceDetection<TSource>(sourceObj: TSource, detection: FaceDetection): WithFaceDetection<TSource>; export declare function extendWithFaceDetection<TSource>(sourceObj: TSource, detection: FaceDetection): WithFaceDetection<TSource>;
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var FaceDetection_1 = require("../classes/FaceDetection");
function isWithFaceDetection(obj) {
return obj['detection'] instanceof FaceDetection_1.FaceDetection;
}
exports.isWithFaceDetection = isWithFaceDetection;
function extendWithFaceDetection(sourceObj, detection) { function extendWithFaceDetection(sourceObj, detection) {
var extension = { detection: detection }; var extension = { detection: detection };
return Object.assign({}, sourceObj, extension); return Object.assign({}, sourceObj, extension);
......
{"version":3,"file":"WithFaceDetection.js","sourceRoot":"","sources":["../../../src/factories/WithFaceDetection.ts"],"names":[],"mappings":";;AAMA,SAAgB,uBAAuB,CAGrC,SAAkB,EAClB,SAAwB;IAGxB,IAAM,SAAS,GAAG,EAAE,SAAS,WAAA,EAAE,CAAA;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AATD,0DASC"} {"version":3,"file":"WithFaceDetection.js","sourceRoot":"","sources":["../../../src/factories/WithFaceDetection.ts"],"names":[],"mappings":";;AAAA,0DAAyD;AAMzD,SAAgB,mBAAmB,CAAC,GAAQ;IAC1C,OAAO,GAAG,CAAC,WAAW,CAAC,YAAY,6BAAa,CAAA;AAClD,CAAC;AAFD,kDAEC;AAED,SAAgB,uBAAuB,CAGrC,SAAkB,EAClB,SAAwB;IAGxB,IAAM,SAAS,GAAG,EAAE,SAAS,WAAA,EAAE,CAAA;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AATD,0DASC"}
\ No newline at end of file \ No newline at end of file
import { FaceExpressionPrediction } from '../faceExpressionNet/types'; import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';
export declare type WithFaceExpressions<TSource> = TSource & { export declare type WithFaceExpressions<TSource> = TSource & {
expressions: FaceExpressionPrediction[]; expressions: FaceExpressions;
}; };
export declare function extendWithFaceExpressions<TSource>(sourceObj: TSource, expressions: FaceExpressionPrediction[]): WithFaceExpressions<TSource>; export declare function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}>;
export declare function extendWithFaceExpressions<TSource>(sourceObj: TSource, expressions: FaceExpressions): WithFaceExpressions<TSource>;
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var FaceExpressions_1 = require("../faceExpressionNet/FaceExpressions");
function isWithFaceExpressions(obj) {
return obj['expressions'] instanceof FaceExpressions_1.FaceExpressions;
}
exports.isWithFaceExpressions = isWithFaceExpressions;
function extendWithFaceExpressions(sourceObj, expressions) { function extendWithFaceExpressions(sourceObj, expressions) {
var extension = { expressions: expressions }; var extension = { expressions: expressions };
return Object.assign({}, sourceObj, extension); return Object.assign({}, sourceObj, extension);
......
{"version":3,"file":"WithFaceExpressions.js","sourceRoot":"","sources":["../../../src/factories/WithFaceExpressions.ts"],"names":[],"mappings":";;AAMA,SAAgB,yBAAyB,CAGvC,SAAkB,EAClB,WAAuC;IAGvC,IAAM,SAAS,GAAG,EAAE,WAAW,aAAA,EAAE,CAAA;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AATD,8DASC"} {"version":3,"file":"WithFaceExpressions.js","sourceRoot":"","sources":["../../../src/factories/WithFaceExpressions.ts"],"names":[],"mappings":";;AAAA,wEAAuE;AAMvE,SAAgB,qBAAqB,CAAC,GAAQ;IAC5C,OAAO,GAAG,CAAC,aAAa,CAAC,YAAY,iCAAe,CAAA;AACtD,CAAC;AAFD,sDAEC;AAED,SAAgB,yBAAyB,CAGvC,SAAkB,EAClB,WAA4B;IAG5B,IAAM,SAAS,GAAG,EAAE,WAAW,aAAA,EAAE,CAAA;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AATD,8DASC"}
\ No newline at end of file \ No newline at end of file
...@@ -7,4 +7,5 @@ export declare type WithFaceLandmarks<TSource extends WithFaceDetection<{}>, TFa ...@@ -7,4 +7,5 @@ export declare type WithFaceLandmarks<TSource extends WithFaceDetection<{}>, TFa
unshiftedLandmarks: TFaceLandmarks; unshiftedLandmarks: TFaceLandmarks;
alignedRect: FaceDetection; alignedRect: FaceDetection;
}; };
export declare function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks<WithFaceDetection<{}>, FaceLandmarks>;
export declare function extendWithFaceLandmarks<TSource extends WithFaceDetection<{}>, TFaceLandmarks extends FaceLandmarks = FaceLandmarks68>(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks<TSource, TFaceLandmarks>; export declare function extendWithFaceLandmarks<TSource extends WithFaceDetection<{}>, TFaceLandmarks extends FaceLandmarks = FaceLandmarks68>(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks<TSource, TFaceLandmarks>;
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var FaceDetection_1 = require("../classes/FaceDetection"); var FaceDetection_1 = require("../classes/FaceDetection");
var FaceLandmarks_1 = require("../classes/FaceLandmarks");
var WithFaceDetection_1 = require("./WithFaceDetection");
function isWithFaceLandmarks(obj) {
return WithFaceDetection_1.isWithFaceDetection(obj)
&& obj['landmarks'] instanceof FaceLandmarks_1.FaceLandmarks
&& obj['unshiftedLandmarks'] instanceof FaceLandmarks_1.FaceLandmarks
&& obj['alignedRect'] instanceof FaceDetection_1.FaceDetection;
}
exports.isWithFaceLandmarks = isWithFaceLandmarks;
function extendWithFaceLandmarks(sourceObj, unshiftedLandmarks) { function extendWithFaceLandmarks(sourceObj, unshiftedLandmarks) {
var shift = sourceObj.detection.box; var shift = sourceObj.detection.box;
var landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y); var landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y);
......
{"version":3,"file":"WithFaceLandmarks.js","sourceRoot":"","sources":["../../../src/factories/WithFaceLandmarks.ts"],"names":[],"mappings":";;AAAA,0DAAyD;AAczD,SAAgB,uBAAuB,CAIrC,SAAkB,EAClB,kBAAkC;IAG1B,IAAA,+BAAU,CAAwB;IAC1C,IAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAiB,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAE9E,IAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;IACtB,IAAA,yCAAS,CAAwB;IACzC,IAAM,WAAW,GAAG,IAAI,6BAAa,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;IAE9G,IAAM,SAAS,GAAG;QAChB,SAAS,WAAA;QACT,kBAAkB,oBAAA;QAClB,WAAW,aAAA;KACZ,CAAA;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AAtBD,0DAsBC"} {"version":3,"file":"WithFaceLandmarks.js","sourceRoot":"","sources":["../../../src/factories/WithFaceLandmarks.ts"],"names":[],"mappings":";;AAAA,0DAAyD;AACzD,0DAAyD;AAEzD,yDAA6E;AAW7E,SAAgB,mBAAmB,CAAC,GAAQ;IAC1C,OAAO,uCAAmB,CAAC,GAAG,CAAC;WAC1B,GAAG,CAAC,WAAW,CAAC,YAAY,6BAAa;WACzC,GAAG,CAAC,oBAAoB,CAAC,YAAY,6BAAa;WAClD,GAAG,CAAC,aAAa,CAAC,YAAY,6BAAa,CAAA;AAClD,CAAC;AALD,kDAKC;AAED,SAAgB,uBAAuB,CAIrC,SAAkB,EAClB,kBAAkC;IAG1B,IAAA,+BAAU,CAAwB;IAC1C,IAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAiB,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAE9E,IAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;IACtB,IAAA,yCAAS,CAAwB;IACzC,IAAM,WAAW,GAAG,IAAI,6BAAa,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;IAE9G,IAAM,SAAS,GAAG;QAChB,SAAS,WAAA;QACT,kBAAkB,oBAAA;QAClB,WAAW,aAAA;KACZ,CAAA;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AAtBD,0DAsBC"}
\ No newline at end of file \ No newline at end of file
import { Gender } from '../ageGenderNet/types';
export declare type WithGender<TSource> = TSource & {
gender: Gender;
genderProbability: number;
};
export declare function isWithGender(obj: any): obj is WithGender<{}>;
export declare function extendWithGender<TSource>(sourceObj: TSource, gender: Gender, genderProbability: number): WithGender<TSource>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
var types_1 = require("../ageGenderNet/types");
function isWithGender(obj) {
return (obj['gender'] === types_1.Gender.MALE || obj['gender'] === types_1.Gender.FEMALE)
&& tfjs_image_recognition_base_1.isValidProbablitiy(obj['genderProbability']);
}
exports.isWithGender = isWithGender;
function extendWithGender(sourceObj, gender, genderProbability) {
var extension = { gender: gender, genderProbability: genderProbability };
return Object.assign({}, sourceObj, extension);
}
exports.extendWithGender = extendWithGender;
//# sourceMappingURL=WithGender.js.map
\ No newline at end of file
{"version":3,"file":"WithGender.js","sourceRoot":"","sources":["../../../src/factories/WithGender.ts"],"names":[],"mappings":";;AAAA,2EAAiE;AAEjE,+CAA+C;AAO/C,SAAgB,YAAY,CAAC,GAAQ;IACnC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,cAAM,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,cAAM,CAAC,MAAM,CAAC;WACpE,gDAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAA;AACnD,CAAC;AAHD,oCAGC;AAED,SAAgB,gBAAgB,CAG9B,SAAkB,EAClB,MAAc,EACd,iBAAyB;IAGzB,IAAM,SAAS,GAAG,EAAE,MAAM,QAAA,EAAE,iBAAiB,mBAAA,EAAE,CAAA;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AAVD,4CAUC"}
\ No newline at end of file
...@@ -3,6 +3,8 @@ import { WithFaceDescriptor } from '../factories/WithFaceDescriptor'; ...@@ -3,6 +3,8 @@ import { WithFaceDescriptor } from '../factories/WithFaceDescriptor';
import { WithFaceDetection } from '../factories/WithFaceDetection'; import { WithFaceDetection } from '../factories/WithFaceDetection';
import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; import { WithFaceLandmarks } from '../factories/WithFaceLandmarks';
import { ComposableTask } from './ComposableTask'; import { ComposableTask } from './ComposableTask';
import { PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from './PredictAgeAndGenderTask';
import { PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from './PredictFaceExpressionsTask';
export declare class ComputeFaceDescriptorsTaskBase<TReturn, TParentReturn> extends ComposableTask<TReturn> { export declare class ComputeFaceDescriptorsTaskBase<TReturn, TParentReturn> extends ComposableTask<TReturn> {
protected parentTask: ComposableTask<TParentReturn> | Promise<TParentReturn>; protected parentTask: ComposableTask<TParentReturn> | Promise<TParentReturn>;
protected input: TNetInput; protected input: TNetInput;
...@@ -10,7 +12,11 @@ export declare class ComputeFaceDescriptorsTaskBase<TReturn, TParentReturn> exte ...@@ -10,7 +12,11 @@ export declare class ComputeFaceDescriptorsTaskBase<TReturn, TParentReturn> exte
} }
export declare class ComputeAllFaceDescriptorsTask<TSource extends WithFaceLandmarks<WithFaceDetection<{}>>> extends ComputeFaceDescriptorsTaskBase<WithFaceDescriptor<TSource>[], TSource[]> { export declare class ComputeAllFaceDescriptorsTask<TSource extends WithFaceLandmarks<WithFaceDetection<{}>>> extends ComputeFaceDescriptorsTaskBase<WithFaceDescriptor<TSource>[], TSource[]> {
run(): Promise<WithFaceDescriptor<TSource>[]>; run(): Promise<WithFaceDescriptor<TSource>[]>;
withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask<WithFaceDescriptor<TSource>>;
withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask<WithFaceDescriptor<TSource>>;
} }
export declare class ComputeSingleFaceDescriptorTask<TSource extends WithFaceLandmarks<WithFaceDetection<{}>>> extends ComputeFaceDescriptorsTaskBase<WithFaceDescriptor<TSource> | undefined, TSource | undefined> { export declare class ComputeSingleFaceDescriptorTask<TSource extends WithFaceLandmarks<WithFaceDetection<{}>>> extends ComputeFaceDescriptorsTaskBase<WithFaceDescriptor<TSource> | undefined, TSource | undefined> {
run(): Promise<WithFaceDescriptor<TSource> | undefined>; run(): Promise<WithFaceDescriptor<TSource> | undefined>;
withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask<WithFaceDescriptor<TSource>>;
withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask<WithFaceDescriptor<TSource>>;
} }
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib"); var tslib_1 = require("tslib");
var tf = require("@tensorflow/tfjs-core");
var dom_1 = require("../dom");
var WithFaceDescriptor_1 = require("../factories/WithFaceDescriptor"); var WithFaceDescriptor_1 = require("../factories/WithFaceDescriptor");
var ComposableTask_1 = require("./ComposableTask"); var ComposableTask_1 = require("./ComposableTask");
var extractFacesAndComputeResults_1 = require("./extractFacesAndComputeResults");
var nets_1 = require("./nets"); var nets_1 = require("./nets");
var PredictAgeAndGenderTask_1 = require("./PredictAgeAndGenderTask");
var PredictFaceExpressionsTask_1 = require("./PredictFaceExpressionsTask");
var ComputeFaceDescriptorsTaskBase = /** @class */ (function (_super) { var ComputeFaceDescriptorsTaskBase = /** @class */ (function (_super) {
tslib_1.__extends(ComputeFaceDescriptorsTaskBase, _super); tslib_1.__extends(ComputeFaceDescriptorsTaskBase, _super);
function ComputeFaceDescriptorsTaskBase(parentTask, input) { function ComputeFaceDescriptorsTaskBase(parentTask, input) {
...@@ -24,47 +25,28 @@ var ComputeAllFaceDescriptorsTask = /** @class */ (function (_super) { ...@@ -24,47 +25,28 @@ var ComputeAllFaceDescriptorsTask = /** @class */ (function (_super) {
} }
ComputeAllFaceDescriptorsTask.prototype.run = function () { ComputeAllFaceDescriptorsTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var parentResults, alignedRects, alignedFaces, _a, results; var parentResults, descriptors;
var _this = this; return tslib_1.__generator(this, function (_a) {
return tslib_1.__generator(this, function (_b) { switch (_a.label) {
switch (_b.label) {
case 0: return [4 /*yield*/, this.parentTask]; case 0: return [4 /*yield*/, this.parentTask];
case 1: case 1:
parentResults = _b.sent(); parentResults = _a.sent();
alignedRects = parentResults.map(function (_a) { return [4 /*yield*/, extractFacesAndComputeResults_1.extractAllFacesAndComputeResults(parentResults, this.input, function (faces) { return Promise.all(faces.map(function (face) {
var alignedRect = _a.alignedRect; return nets_1.nets.faceRecognitionNet.computeFaceDescriptor(face);
return alignedRect; })); }, null, function (parentResult) { return parentResult.landmarks.align(null, { useDlibAlignment: true }); })];
});
if (!(this.input instanceof tf.Tensor)) return [3 /*break*/, 3];
return [4 /*yield*/, dom_1.extractFaceTensors(this.input, alignedRects)];
case 2: case 2:
_a = _b.sent(); descriptors = _a.sent();
return [3 /*break*/, 5]; return [2 /*return*/, descriptors.map(function (descriptor, i) { return WithFaceDescriptor_1.extendWithFaceDescriptor(parentResults[i], descriptor); })];
case 3: return [4 /*yield*/, dom_1.extractFaces(this.input, alignedRects)];
case 4:
_a = _b.sent();
_b.label = 5;
case 5:
alignedFaces = _a;
return [4 /*yield*/, Promise.all(parentResults.map(function (parentResult, i) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var descriptor;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, nets_1.nets.faceRecognitionNet.computeFaceDescriptor(alignedFaces[i])];
case 1:
descriptor = _a.sent();
return [2 /*return*/, WithFaceDescriptor_1.extendWithFaceDescriptor(parentResult, descriptor)];
}
});
}); }))];
case 6:
results = _b.sent();
alignedFaces.forEach(function (f) { return f instanceof tf.Tensor && f.dispose(); });
return [2 /*return*/, results];
} }
}); });
}); });
}; };
ComputeAllFaceDescriptorsTask.prototype.withFaceExpressions = function () {
return new PredictFaceExpressionsTask_1.PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);
};
ComputeAllFaceDescriptorsTask.prototype.withAgeAndGender = function () {
return new PredictAgeAndGenderTask_1.PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);
};
return ComputeAllFaceDescriptorsTask; return ComputeAllFaceDescriptorsTask;
}(ComputeFaceDescriptorsTaskBase)); }(ComputeFaceDescriptorsTaskBase));
exports.ComputeAllFaceDescriptorsTask = ComputeAllFaceDescriptorsTask; exports.ComputeAllFaceDescriptorsTask = ComputeAllFaceDescriptorsTask;
...@@ -75,36 +57,29 @@ var ComputeSingleFaceDescriptorTask = /** @class */ (function (_super) { ...@@ -75,36 +57,29 @@ var ComputeSingleFaceDescriptorTask = /** @class */ (function (_super) {
} }
ComputeSingleFaceDescriptorTask.prototype.run = function () { ComputeSingleFaceDescriptorTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var parentResult, alignedRect, alignedFaces, _a, descriptor; var parentResult, descriptor;
return tslib_1.__generator(this, function (_b) { return tslib_1.__generator(this, function (_a) {
switch (_b.label) { switch (_a.label) {
case 0: return [4 /*yield*/, this.parentTask]; case 0: return [4 /*yield*/, this.parentTask];
case 1: case 1:
parentResult = _b.sent(); parentResult = _a.sent();
if (!parentResult) { if (!parentResult) {
return [2 /*return*/]; return [2 /*return*/];
} }
alignedRect = parentResult.alignedRect; return [4 /*yield*/, extractFacesAndComputeResults_1.extractSingleFaceAndComputeResult(parentResult, this.input, function (face) { return nets_1.nets.faceRecognitionNet.computeFaceDescriptor(face); }, null, function (parentResult) { return parentResult.landmarks.align(null, { useDlibAlignment: true }); })];
if (!(this.input instanceof tf.Tensor)) return [3 /*break*/, 3];
return [4 /*yield*/, dom_1.extractFaceTensors(this.input, [alignedRect])];
case 2: case 2:
_a = _b.sent(); descriptor = _a.sent();
return [3 /*break*/, 5];
case 3: return [4 /*yield*/, dom_1.extractFaces(this.input, [alignedRect])];
case 4:
_a = _b.sent();
_b.label = 5;
case 5:
alignedFaces = _a;
return [4 /*yield*/, nets_1.nets.faceRecognitionNet.computeFaceDescriptor(alignedFaces[0])];
case 6:
descriptor = _b.sent();
alignedFaces.forEach(function (f) { return f instanceof tf.Tensor && f.dispose(); });
return [2 /*return*/, WithFaceDescriptor_1.extendWithFaceDescriptor(parentResult, descriptor)]; return [2 /*return*/, WithFaceDescriptor_1.extendWithFaceDescriptor(parentResult, descriptor)];
} }
}); });
}); });
}; };
ComputeSingleFaceDescriptorTask.prototype.withFaceExpressions = function () {
return new PredictFaceExpressionsTask_1.PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);
};
ComputeSingleFaceDescriptorTask.prototype.withAgeAndGender = function () {
return new PredictAgeAndGenderTask_1.PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);
};
return ComputeSingleFaceDescriptorTask; return ComputeSingleFaceDescriptorTask;
}(ComputeFaceDescriptorsTaskBase)); }(ComputeFaceDescriptorsTaskBase));
exports.ComputeSingleFaceDescriptorTask = ComputeSingleFaceDescriptorTask; exports.ComputeSingleFaceDescriptorTask = ComputeSingleFaceDescriptorTask;
......
{"version":3,"file":"ComputeFaceDescriptorsTasks.js","sourceRoot":"","sources":["../../../src/globalApi/ComputeFaceDescriptorsTasks.ts"],"names":[],"mappings":"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"} {"version":3,"file":"ComputeFaceDescriptorsTasks.js","sourceRoot":"","sources":["../../../src/globalApi/ComputeFaceDescriptorsTasks.ts"],"names":[],"mappings":";;;AAEA,sEAA+F;AAG/F,mDAAkD;AAClD,iFAAsH;AACtH,+BAA8B;AAC9B,qEAGmC;AACnC,2EAGsC;AAEtC;IAA4E,0DAAuB;IACjG,wCACY,UAAkE,EAClE,KAAgB;QAF5B,YAIE,iBAAO,SACR;QAJW,gBAAU,GAAV,UAAU,CAAwD;QAClE,WAAK,GAAL,KAAK,CAAW;;IAG5B,CAAC;IACH,qCAAC;AAAD,CAAC,AAPD,CAA4E,+BAAc,GAOzF;AAPY,wEAA8B;AAS3C;IAEU,yDAAwE;IAFlF;;IA4BA,CAAC;IAxBc,2CAAG,GAAhB;;;;;4BAEwB,qBAAM,IAAI,CAAC,UAAU,EAAA;;wBAArC,aAAa,GAAG,SAAqB;wBAEvB,qBAAM,gEAAgC,CACxD,aAAa,EACb,IAAI,CAAC,KAAK,EACV,UAAA,KAAK,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI;gCACjC,OAAA,WAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAA0B;4BAA5E,CAA4E,CAC7E,CAAC,EAFO,CAEP,EACF,IAAI,EACJ,UAAA,YAAY,IAAI,OAAA,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAA9D,CAA8D,CAC/E,EAAA;;wBARK,WAAW,GAAG,SAQnB;wBAED,sBAAO,WAAW,CAAC,GAAG,CAAC,UAAC,UAAU,EAAE,CAAC,IAAK,OAAA,6CAAwB,CAAU,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAA/D,CAA+D,CAAC,EAAA;;;;KAC3G;IAED,2DAAmB,GAAnB;QACE,OAAO,IAAI,2EAA8C,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7E,CAAC;IAED,wDAAgB,GAAhB;QACE,OAAO,IAAI,qEAA2C,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1E,CAAC;IACH,oCAAC;AAAD,CAAC,AA5BD,CAEU,8BAA8B,GA0BvC;AA5BY,sEAA6B;AA8B1C;IAEU,2DAA4F;IAFtG;;IA4BA,CAAC;IAxBc,6CAAG,GAAhB;;;;;4BAEuB,qBAAM,IAAI,CAAC,UAAU,EAAA;;wBAApC,YAAY,GAAG,SAAqB;wBAC1C,IAAI,CAAC,YAAY,EAAE;4BACjB,sBAAM;yBACP;wBACkB,qBAAM,iEAAiC,CACxD,YAAY,EACZ,IAAI,CAAC,KAAK,EACV,UAAA,IAAI,IAAI,OAAA,WAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAA0B,EAA5E,CAA4E,EACpF,IAAI,EACJ,UAAA,YAAY,IAAI,OAAA,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAA9D,CAA8D,CAC/E,EAAA;;wBANK,UAAU,GAAG,SAMlB;wBAED,sBAAO,6CAAwB,CAAC,YAAY,EAAE,UAAU,CAAC,EAAA;;;;KAC1D;IAED,6DAAmB,GAAnB;QACE,OAAO,IAAI,8EAAiD,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAChF,CAAC;IAED,0DAAgB,GAAhB;QACE,OAAO,IAAI,wEAA8C,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7E,CAAC;IACH,sCAAC;AAAD,CAAC,AA5BD,CAEU,8BAA8B,GA0BvC;AA5BY,0EAA+B"}
\ No newline at end of file \ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base'; import { TNetInput } from 'tfjs-image-recognition-base';
import { FaceLandmarks68 } from '../classes/FaceLandmarks68';
import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net'; import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';
import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet'; import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';
import { WithFaceDetection } from '../factories/WithFaceDetection'; import { WithFaceDetection } from '../factories/WithFaceDetection';
import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; import { WithFaceLandmarks } from '../factories/WithFaceLandmarks';
import { ComposableTask } from './ComposableTask'; import { ComposableTask } from './ComposableTask';
import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';
import { PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from './PredictAgeAndGenderTask';
import { PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from './PredictFaceExpressionsTask';
export declare class DetectFaceLandmarksTaskBase<TReturn, TParentReturn> extends ComposableTask<TReturn> { export declare class DetectFaceLandmarksTaskBase<TReturn, TParentReturn> extends ComposableTask<TReturn> {
protected parentTask: ComposableTask<TParentReturn> | Promise<TParentReturn>; protected parentTask: ComposableTask<TParentReturn> | Promise<TParentReturn>;
protected input: TNetInput; protected input: TNetInput;
...@@ -14,9 +17,13 @@ export declare class DetectFaceLandmarksTaskBase<TReturn, TParentReturn> extends ...@@ -14,9 +17,13 @@ export declare class DetectFaceLandmarksTaskBase<TReturn, TParentReturn> extends
} }
export declare class DetectAllFaceLandmarksTask<TSource extends WithFaceDetection<{}>> extends DetectFaceLandmarksTaskBase<WithFaceLandmarks<TSource>[], TSource[]> { export declare class DetectAllFaceLandmarksTask<TSource extends WithFaceDetection<{}>> extends DetectFaceLandmarksTaskBase<WithFaceLandmarks<TSource>[], TSource[]> {
run(): Promise<WithFaceLandmarks<TSource>[]>; run(): Promise<WithFaceLandmarks<TSource>[]>;
withFaceDescriptors(): ComputeAllFaceDescriptorsTask<WithFaceLandmarks<TSource>>; withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask<WithFaceLandmarks<TSource, FaceLandmarks68>>;
withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask<WithFaceLandmarks<TSource, FaceLandmarks68>>;
withFaceDescriptors(): ComputeAllFaceDescriptorsTask<WithFaceLandmarks<TSource, FaceLandmarks68>>;
} }
export declare class DetectSingleFaceLandmarksTask<TSource extends WithFaceDetection<{}>> extends DetectFaceLandmarksTaskBase<WithFaceLandmarks<TSource> | undefined, TSource | undefined> { export declare class DetectSingleFaceLandmarksTask<TSource extends WithFaceDetection<{}>> extends DetectFaceLandmarksTaskBase<WithFaceLandmarks<TSource> | undefined, TSource | undefined> {
run(): Promise<WithFaceLandmarks<TSource> | undefined>; run(): Promise<WithFaceLandmarks<TSource> | undefined>;
withFaceDescriptor(): ComputeSingleFaceDescriptorTask<WithFaceLandmarks<TSource>>; withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask<WithFaceLandmarks<TSource, FaceLandmarks68>>;
withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask<WithFaceLandmarks<TSource, FaceLandmarks68>>;
withFaceDescriptor(): ComputeSingleFaceDescriptorTask<WithFaceLandmarks<TSource, FaceLandmarks68>>;
} }
...@@ -7,6 +7,8 @@ var WithFaceLandmarks_1 = require("../factories/WithFaceLandmarks"); ...@@ -7,6 +7,8 @@ var WithFaceLandmarks_1 = require("../factories/WithFaceLandmarks");
var ComposableTask_1 = require("./ComposableTask"); var ComposableTask_1 = require("./ComposableTask");
var ComputeFaceDescriptorsTasks_1 = require("./ComputeFaceDescriptorsTasks"); var ComputeFaceDescriptorsTasks_1 = require("./ComputeFaceDescriptorsTasks");
var nets_1 = require("./nets"); var nets_1 = require("./nets");
var PredictAgeAndGenderTask_1 = require("./PredictAgeAndGenderTask");
var PredictFaceExpressionsTask_1 = require("./PredictFaceExpressionsTask");
var DetectFaceLandmarksTaskBase = /** @class */ (function (_super) { var DetectFaceLandmarksTaskBase = /** @class */ (function (_super) {
tslib_1.__extends(DetectFaceLandmarksTaskBase, _super); tslib_1.__extends(DetectFaceLandmarksTaskBase, _super);
function DetectFaceLandmarksTaskBase(parentTask, input, useTinyLandmarkNet) { function DetectFaceLandmarksTaskBase(parentTask, input, useTinyLandmarkNet) {
...@@ -65,6 +67,12 @@ var DetectAllFaceLandmarksTask = /** @class */ (function (_super) { ...@@ -65,6 +67,12 @@ var DetectAllFaceLandmarksTask = /** @class */ (function (_super) {
}); });
}); });
}; };
DetectAllFaceLandmarksTask.prototype.withFaceExpressions = function () {
return new PredictFaceExpressionsTask_1.PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);
};
DetectAllFaceLandmarksTask.prototype.withAgeAndGender = function () {
return new PredictAgeAndGenderTask_1.PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);
};
DetectAllFaceLandmarksTask.prototype.withFaceDescriptors = function () { DetectAllFaceLandmarksTask.prototype.withFaceDescriptors = function () {
return new ComputeFaceDescriptorsTasks_1.ComputeAllFaceDescriptorsTask(this, this.input); return new ComputeFaceDescriptorsTasks_1.ComputeAllFaceDescriptorsTask(this, this.input);
}; };
...@@ -108,6 +116,12 @@ var DetectSingleFaceLandmarksTask = /** @class */ (function (_super) { ...@@ -108,6 +116,12 @@ var DetectSingleFaceLandmarksTask = /** @class */ (function (_super) {
}); });
}); });
}; };
DetectSingleFaceLandmarksTask.prototype.withFaceExpressions = function () {
return new PredictFaceExpressionsTask_1.PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);
};
DetectSingleFaceLandmarksTask.prototype.withAgeAndGender = function () {
return new PredictAgeAndGenderTask_1.PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);
};
DetectSingleFaceLandmarksTask.prototype.withFaceDescriptor = function () { DetectSingleFaceLandmarksTask.prototype.withFaceDescriptor = function () {
return new ComputeFaceDescriptorsTasks_1.ComputeSingleFaceDescriptorTask(this, this.input); return new ComputeFaceDescriptorsTasks_1.ComputeSingleFaceDescriptorTask(this, this.input);
}; };
......
{"version":3,"file":"DetectFaceLandmarksTasks.js","sourceRoot":"","sources":["../../../src/globalApi/DetectFaceLandmarksTasks.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAI5C,8BAA0D;AAI1D,oEAA4F;AAC5F,mDAAkD;AAClD,6EAA+G;AAC/G,+BAA8B;AAG9B;IAAyE,uDAAuB;IAC9F,qCACY,UAAkE,EAClE,KAAgB,EAChB,kBAA2B;QAHvC,YAKE,iBAAO,SACR;QALW,gBAAU,GAAV,UAAU,CAAwD;QAClE,WAAK,GAAL,KAAK,CAAW;QAChB,wBAAkB,GAAlB,kBAAkB,CAAS;;IAGvC,CAAC;IAED,sBAAc,oDAAW;aAAzB;YACE,OAAO,IAAI,CAAC,kBAAkB;gBAC5B,CAAC,CAAC,WAAI,CAAC,qBAAqB;gBAC5B,CAAC,CAAC,WAAI,CAAC,iBAAiB,CAAA;QAC5B,CAAC;;;OAAA;IACH,kCAAC;AAAD,CAAC,AAdD,CAAyE,+BAAc,GActF;AAdY,kEAA2B;AAgBxC;IAEU,sDAAoE;IAF9E;;IA2BA,CAAC;IAvBc,wCAAG,GAAhB;;;;;;4BAEwB,qBAAM,IAAI,CAAC,UAAU,EAAA;;wBAArC,aAAa,GAAG,SAAqB;wBACrC,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,SAAS,EAAb,CAAa,CAAC,CAAA;6BAEJ,CAAA,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC,MAAM,CAAA,EAA/B,wBAA+B;wBACjF,qBAAM,wBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAAA;;wBAAhD,KAAA,SAAgD,CAAA;;4BAChD,qBAAM,kBAAY,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAAA;;wBAA1C,KAAA,SAA0C,CAAA;;;wBAFxC,KAAK,KAEmC;wBAElB,qBAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CACrD,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,EAAtC,CAAsC,CAC/C,CAAC,EAAA;;wBAFI,mBAAmB,GAAG,SAEL;wBAEvB,KAAK,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,YAAY,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,EAArC,CAAqC,CAAC,CAAA;wBAEzD,sBAAO,aAAa,CAAC,GAAG,CAAC,UAAC,YAAY,EAAE,CAAC;gCACvC,OAAA,2CAAuB,CAAU,YAAY,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;4BAAtE,CAAsE,CACvE,EAAA;;;;KACF;IAED,wDAAmB,GAAnB;QACE,OAAO,IAAI,2DAA6B,CAA6B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IACxF,CAAC;IACH,iCAAC;AAAD,CAAC,AA3BD,CAEU,2BAA2B,GAyBpC;AA3BY,gEAA0B;AA6BvC;IAEW,yDAAwF;IAFnG;;IA0BA,CAAC;IAtBc,2CAAG,GAAhB;;;;;4BAEuB,qBAAM,IAAI,CAAC,UAAU,EAAA;;wBAApC,YAAY,GAAG,SAAqB;wBAC1C,IAAI,CAAC,YAAY,EAAE;4BACjB,sBAAM;yBACP;wBAEO,SAAS,GAAK,YAAY,UAAjB,CAAiB;6BACoB,CAAA,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC,MAAM,CAAA,EAA/B,wBAA+B;wBACjF,qBAAM,wBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,EAAA;;wBAAjD,KAAA,SAAiD,CAAA;;4BACjD,qBAAM,kBAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,EAAA;;wBAA3C,KAAA,SAA2C,CAAA;;;wBAFzC,KAAK,KAEoC;wBAE7B,qBAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAA;;wBAA5D,SAAS,GAAG,SAAmE;wBAErF,KAAK,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,YAAY,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,EAArC,CAAqC,CAAC,CAAA;wBAEzD,sBAAO,2CAAuB,CAAU,YAAY,EAAE,SAAS,CAAC,EAAA;;;;KACjE;IAED,0DAAkB,GAAlB;QACE,OAAO,IAAI,6DAA+B,CAA6B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1F,CAAC;IACH,oCAAC;AAAD,CAAC,AA1BD,CAEW,2BAA2B,GAwBrC;AA1BY,sEAA6B"} {"version":3,"file":"DetectFaceLandmarksTasks.js","sourceRoot":"","sources":["../../../src/globalApi/DetectFaceLandmarksTasks.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base'; import { TNetInput } from 'tfjs-image-recognition-base';
import { FaceDetection } from '../classes/FaceDetection'; import { FaceDetection } from '../classes/FaceDetection';
import { WithFaceDetection } from '../factories/WithFaceDetection';
import { ComposableTask } from './ComposableTask'; import { ComposableTask } from './ComposableTask';
import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks'; import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';
import { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionTask } from './PredictFaceExpressionsTask'; import { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';
import { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';
import { FaceDetectionOptions } from './types'; import { FaceDetectionOptions } from './types';
export declare class DetectFacesTaskBase<TReturn> extends ComposableTask<TReturn> { export declare class DetectFacesTaskBase<TReturn> extends ComposableTask<TReturn> {
protected input: TNetInput; protected input: TNetInput;
...@@ -13,12 +13,26 @@ export declare class DetectFacesTaskBase<TReturn> extends ComposableTask<TReturn ...@@ -13,12 +13,26 @@ export declare class DetectFacesTaskBase<TReturn> extends ComposableTask<TReturn
export declare class DetectAllFacesTask extends DetectFacesTaskBase<FaceDetection[]> { export declare class DetectAllFacesTask extends DetectFacesTaskBase<FaceDetection[]> {
run(): Promise<FaceDetection[]>; run(): Promise<FaceDetection[]>;
private runAndExtendWithFaceDetections; private runAndExtendWithFaceDetections;
withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectAllFaceLandmarksTask<WithFaceDetection<{}>>; withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectAllFaceLandmarksTask<{
withFaceExpressions(): PredictAllFaceExpressionsTask<WithFaceDetection<{}>>; detection: FaceDetection;
}>;
withFaceExpressions(): PredictAllFaceExpressionsTask<{
detection: FaceDetection;
}>;
withAgeAndGender(): PredictAllAgeAndGenderTask<{
detection: FaceDetection;
}>;
} }
export declare class DetectSingleFaceTask extends DetectFacesTaskBase<FaceDetection | undefined> { export declare class DetectSingleFaceTask extends DetectFacesTaskBase<FaceDetection | undefined> {
run(): Promise<FaceDetection | undefined>; run(): Promise<FaceDetection | undefined>;
private runAndExtendWithFaceDetection; private runAndExtendWithFaceDetection;
withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectSingleFaceLandmarksTask<WithFaceDetection<{}>>; withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectSingleFaceLandmarksTask<{
withFaceExpressions(): PredictSingleFaceExpressionTask<WithFaceDetection<{}>>; detection: FaceDetection;
}>;
withFaceExpressions(): PredictSingleFaceExpressionsTask<{
detection: FaceDetection;
}>;
withAgeAndGender(): PredictSingleAgeAndGenderTask<{
detection: FaceDetection;
}>;
} }
...@@ -9,6 +9,7 @@ var TinyFaceDetectorOptions_1 = require("../tinyFaceDetector/TinyFaceDetectorOpt ...@@ -9,6 +9,7 @@ var TinyFaceDetectorOptions_1 = require("../tinyFaceDetector/TinyFaceDetectorOpt
var ComposableTask_1 = require("./ComposableTask"); var ComposableTask_1 = require("./ComposableTask");
var DetectFaceLandmarksTasks_1 = require("./DetectFaceLandmarksTasks"); var DetectFaceLandmarksTasks_1 = require("./DetectFaceLandmarksTasks");
var nets_1 = require("./nets"); var nets_1 = require("./nets");
var PredictAgeAndGenderTask_1 = require("./PredictAgeAndGenderTask");
var PredictFaceExpressionsTask_1 = require("./PredictFaceExpressionsTask"); var PredictFaceExpressionsTask_1 = require("./PredictFaceExpressionsTask");
var DetectFacesTaskBase = /** @class */ (function (_super) { var DetectFacesTaskBase = /** @class */ (function (_super) {
tslib_1.__extends(DetectFacesTaskBase, _super); tslib_1.__extends(DetectFacesTaskBase, _super);
...@@ -75,6 +76,9 @@ var DetectAllFacesTask = /** @class */ (function (_super) { ...@@ -75,6 +76,9 @@ var DetectAllFacesTask = /** @class */ (function (_super) {
DetectAllFacesTask.prototype.withFaceExpressions = function () { DetectAllFacesTask.prototype.withFaceExpressions = function () {
return new PredictFaceExpressionsTask_1.PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(), this.input); return new PredictFaceExpressionsTask_1.PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(), this.input);
}; };
DetectAllFacesTask.prototype.withAgeAndGender = function () {
return new PredictAgeAndGenderTask_1.PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(), this.input);
};
return DetectAllFacesTask; return DetectAllFacesTask;
}(DetectFacesTaskBase)); }(DetectFacesTaskBase));
exports.DetectAllFacesTask = DetectAllFacesTask; exports.DetectAllFacesTask = DetectAllFacesTask;
...@@ -121,7 +125,10 @@ var DetectSingleFaceTask = /** @class */ (function (_super) { ...@@ -121,7 +125,10 @@ var DetectSingleFaceTask = /** @class */ (function (_super) {
return new DetectFaceLandmarksTasks_1.DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(), this.input, useTinyLandmarkNet); return new DetectFaceLandmarksTasks_1.DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(), this.input, useTinyLandmarkNet);
}; };
DetectSingleFaceTask.prototype.withFaceExpressions = function () { DetectSingleFaceTask.prototype.withFaceExpressions = function () {
return new PredictFaceExpressionsTask_1.PredictSingleFaceExpressionTask(this.runAndExtendWithFaceDetection(), this.input); return new PredictFaceExpressionsTask_1.PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(), this.input);
};
DetectSingleFaceTask.prototype.withAgeAndGender = function () {
return new PredictAgeAndGenderTask_1.PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(), this.input);
}; };
return DetectSingleFaceTask; return DetectSingleFaceTask;
}(DetectFacesTaskBase)); }(DetectFacesTaskBase));
......
{"version":3,"file":"DetectFacesTasks.js","sourceRoot":"","sources":["../../../src/globalApi/DetectFacesTasks.ts"],"names":[],"mappings":"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"} {"version":3,"file":"DetectFacesTasks.js","sourceRoot":"","sources":["../../../src/globalApi/DetectFacesTasks.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { TNetInput } from 'tfjs-image-recognition-base';
import { WithAge } from '../factories/WithAge';
import { WithFaceDetection } from '../factories/WithFaceDetection';
import { WithFaceLandmarks } from '../factories/WithFaceLandmarks';
import { WithGender } from '../factories/WithGender';
import { ComposableTask } from './ComposableTask';
import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';
import { PredictAllFaceExpressionsTask, PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from './PredictFaceExpressionsTask';
export declare class PredictAgeAndGenderTaskBase<TReturn, TParentReturn> extends ComposableTask<TReturn> {
protected parentTask: ComposableTask<TParentReturn> | Promise<TParentReturn>;
protected input: TNetInput;
protected extractedFaces?: (HTMLCanvasElement | tf.Tensor<tf.Rank.R3>)[] | undefined;
constructor(parentTask: ComposableTask<TParentReturn> | Promise<TParentReturn>, input: TNetInput, extractedFaces?: (HTMLCanvasElement | tf.Tensor<tf.Rank.R3>)[] | undefined);
}
export declare class PredictAllAgeAndGenderTask<TSource extends WithFaceDetection<{}>> extends PredictAgeAndGenderTaskBase<WithAge<WithGender<TSource>>[], TSource[]> {
run(): Promise<WithAge<WithGender<TSource>>[]>;
withFaceExpressions(): PredictAllFaceExpressionsTask<WithAge<WithGender<TSource>>>;
}
export declare class PredictSingleAgeAndGenderTask<TSource extends WithFaceDetection<{}>> extends PredictAgeAndGenderTaskBase<WithAge<WithGender<TSource>> | undefined, TSource | undefined> {
run(): Promise<WithAge<WithGender<TSource>> | undefined>;
withFaceExpressions(): PredictSingleFaceExpressionsTask<WithAge<WithGender<TSource>>>;
}
export declare class PredictAllAgeAndGenderWithFaceAlignmentTask<TSource extends WithFaceLandmarks<WithFaceDetection<{}>>> extends PredictAllAgeAndGenderTask<TSource> {
withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask<WithAge<WithGender<TSource>>>;
withFaceDescriptors(): ComputeAllFaceDescriptorsTask<WithAge<WithGender<TSource>>>;
}
export declare class PredictSingleAgeAndGenderWithFaceAlignmentTask<TSource extends WithFaceLandmarks<WithFaceDetection<{}>>> extends PredictSingleAgeAndGenderTask<TSource> {
withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask<WithAge<WithGender<TSource>>>;
withFaceDescriptor(): ComputeSingleFaceDescriptorTask<WithAge<WithGender<TSource>>>;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var WithAge_1 = require("../factories/WithAge");
var WithGender_1 = require("../factories/WithGender");
var ComposableTask_1 = require("./ComposableTask");
var ComputeFaceDescriptorsTasks_1 = require("./ComputeFaceDescriptorsTasks");
var extractFacesAndComputeResults_1 = require("./extractFacesAndComputeResults");
var nets_1 = require("./nets");
var PredictFaceExpressionsTask_1 = require("./PredictFaceExpressionsTask");
var PredictAgeAndGenderTaskBase = /** @class */ (function (_super) {
tslib_1.__extends(PredictAgeAndGenderTaskBase, _super);
function PredictAgeAndGenderTaskBase(parentTask, input, extractedFaces) {
var _this = _super.call(this) || this;
_this.parentTask = parentTask;
_this.input = input;
_this.extractedFaces = extractedFaces;
return _this;
}
return PredictAgeAndGenderTaskBase;
}(ComposableTask_1.ComposableTask));
exports.PredictAgeAndGenderTaskBase = PredictAgeAndGenderTaskBase;
var PredictAllAgeAndGenderTask = /** @class */ (function (_super) {
tslib_1.__extends(PredictAllAgeAndGenderTask, _super);
function PredictAllAgeAndGenderTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
PredictAllAgeAndGenderTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var parentResults, ageAndGenderByFace;
var _this = this;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.parentTask];
case 1:
parentResults = _a.sent();
return [4 /*yield*/, extractFacesAndComputeResults_1.extractAllFacesAndComputeResults(parentResults, this.input, function (faces) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, Promise.all(faces.map(function (face) { return nets_1.nets.ageGenderNet.predictAgeAndGender(face); }))];
case 1: return [2 /*return*/, _a.sent()];
}
});
}); }, this.extractedFaces)];
case 2:
ageAndGenderByFace = _a.sent();
return [2 /*return*/, parentResults.map(function (parentResult, i) {
var _a = ageAndGenderByFace[i], age = _a.age, gender = _a.gender, genderProbability = _a.genderProbability;
return WithAge_1.extendWithAge(WithGender_1.extendWithGender(parentResult, gender, genderProbability), age);
})];
}
});
});
};
PredictAllAgeAndGenderTask.prototype.withFaceExpressions = function () {
return new PredictFaceExpressionsTask_1.PredictAllFaceExpressionsTask(this, this.input);
};
return PredictAllAgeAndGenderTask;
}(PredictAgeAndGenderTaskBase));
exports.PredictAllAgeAndGenderTask = PredictAllAgeAndGenderTask;
var PredictSingleAgeAndGenderTask = /** @class */ (function (_super) {
tslib_1.__extends(PredictSingleAgeAndGenderTask, _super);
function PredictSingleAgeAndGenderTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
PredictSingleAgeAndGenderTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var parentResult, _a, age, gender, genderProbability;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0: return [4 /*yield*/, this.parentTask];
case 1:
parentResult = _b.sent();
if (!parentResult) {
return [2 /*return*/];
}
return [4 /*yield*/, extractFacesAndComputeResults_1.extractSingleFaceAndComputeResult(parentResult, this.input, function (face) { return nets_1.nets.ageGenderNet.predictAgeAndGender(face); }, this.extractedFaces)];
case 2:
_a = _b.sent(), age = _a.age, gender = _a.gender, genderProbability = _a.genderProbability;
return [2 /*return*/, WithAge_1.extendWithAge(WithGender_1.extendWithGender(parentResult, gender, genderProbability), age)];
}
});
});
};
PredictSingleAgeAndGenderTask.prototype.withFaceExpressions = function () {
return new PredictFaceExpressionsTask_1.PredictSingleFaceExpressionsTask(this, this.input);
};
return PredictSingleAgeAndGenderTask;
}(PredictAgeAndGenderTaskBase));
exports.PredictSingleAgeAndGenderTask = PredictSingleAgeAndGenderTask;
var PredictAllAgeAndGenderWithFaceAlignmentTask = /** @class */ (function (_super) {
tslib_1.__extends(PredictAllAgeAndGenderWithFaceAlignmentTask, _super);
function PredictAllAgeAndGenderWithFaceAlignmentTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
PredictAllAgeAndGenderWithFaceAlignmentTask.prototype.withFaceExpressions = function () {
return new PredictFaceExpressionsTask_1.PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);
};
PredictAllAgeAndGenderWithFaceAlignmentTask.prototype.withFaceDescriptors = function () {
return new ComputeFaceDescriptorsTasks_1.ComputeAllFaceDescriptorsTask(this, this.input);
};
return PredictAllAgeAndGenderWithFaceAlignmentTask;
}(PredictAllAgeAndGenderTask));
exports.PredictAllAgeAndGenderWithFaceAlignmentTask = PredictAllAgeAndGenderWithFaceAlignmentTask;
var PredictSingleAgeAndGenderWithFaceAlignmentTask = /** @class */ (function (_super) {
tslib_1.__extends(PredictSingleAgeAndGenderWithFaceAlignmentTask, _super);
function PredictSingleAgeAndGenderWithFaceAlignmentTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
PredictSingleAgeAndGenderWithFaceAlignmentTask.prototype.withFaceExpressions = function () {
return new PredictFaceExpressionsTask_1.PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);
};
PredictSingleAgeAndGenderWithFaceAlignmentTask.prototype.withFaceDescriptor = function () {
return new ComputeFaceDescriptorsTasks_1.ComputeSingleFaceDescriptorTask(this, this.input);
};
return PredictSingleAgeAndGenderWithFaceAlignmentTask;
}(PredictSingleAgeAndGenderTask));
exports.PredictSingleAgeAndGenderWithFaceAlignmentTask = PredictSingleAgeAndGenderWithFaceAlignmentTask;
//# sourceMappingURL=PredictAgeAndGenderTask.js.map
\ No newline at end of file
{"version":3,"file":"PredictAgeAndGenderTask.js","sourceRoot":"","sources":["../../../src/globalApi/PredictAgeAndGenderTask.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { TNetInput } from 'tfjs-image-recognition-base'; import { TNetInput } from 'tfjs-image-recognition-base';
import { WithFaceDetection } from '../factories/WithFaceDetection'; import { WithFaceDetection } from '../factories/WithFaceDetection';
import { WithFaceExpressions } from '../factories/WithFaceExpressions'; import { WithFaceExpressions } from '../factories/WithFaceExpressions';
import { WithFaceLandmarks } from '../factories/WithFaceLandmarks';
import { ComposableTask } from './ComposableTask'; import { ComposableTask } from './ComposableTask';
import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks'; import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';
import { PredictAllAgeAndGenderTask, PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from './PredictAgeAndGenderTask';
export declare class PredictFaceExpressionsTaskBase<TReturn, TParentReturn> extends ComposableTask<TReturn> { export declare class PredictFaceExpressionsTaskBase<TReturn, TParentReturn> extends ComposableTask<TReturn> {
protected parentTask: ComposableTask<TParentReturn> | Promise<TParentReturn>; protected parentTask: ComposableTask<TParentReturn> | Promise<TParentReturn>;
protected input: TNetInput; protected input: TNetInput;
constructor(parentTask: ComposableTask<TParentReturn> | Promise<TParentReturn>, input: TNetInput); protected extractedFaces?: (HTMLCanvasElement | tf.Tensor<tf.Rank.R3>)[] | undefined;
constructor(parentTask: ComposableTask<TParentReturn> | Promise<TParentReturn>, input: TNetInput, extractedFaces?: (HTMLCanvasElement | tf.Tensor<tf.Rank.R3>)[] | undefined);
} }
export declare class PredictAllFaceExpressionsTask<TSource extends WithFaceDetection<{}>> extends PredictFaceExpressionsTaskBase<WithFaceExpressions<TSource>[], TSource[]> { export declare class PredictAllFaceExpressionsTask<TSource extends WithFaceDetection<{}>> extends PredictFaceExpressionsTaskBase<WithFaceExpressions<TSource>[], TSource[]> {
run(): Promise<WithFaceExpressions<TSource>[]>; run(): Promise<WithFaceExpressions<TSource>[]>;
withFaceLandmarks(): DetectAllFaceLandmarksTask<WithFaceExpressions<TSource>>; withAgeAndGender(): PredictAllAgeAndGenderTask<WithFaceExpressions<TSource>>;
} }
export declare class PredictSingleFaceExpressionTask<TSource extends WithFaceDetection<{}>> extends PredictFaceExpressionsTaskBase<WithFaceExpressions<TSource> | undefined, TSource | undefined> { export declare class PredictSingleFaceExpressionsTask<TSource extends WithFaceDetection<{}>> extends PredictFaceExpressionsTaskBase<WithFaceExpressions<TSource> | undefined, TSource | undefined> {
run(): Promise<WithFaceExpressions<TSource> | undefined>; run(): Promise<WithFaceExpressions<TSource> | undefined>;
withFaceLandmarks(): DetectSingleFaceLandmarksTask<WithFaceExpressions<TSource>>; withAgeAndGender(): PredictSingleAgeAndGenderTask<WithFaceExpressions<TSource>>;
}
export declare class PredictAllFaceExpressionsWithFaceAlignmentTask<TSource extends WithFaceLandmarks<WithFaceDetection<{}>>> extends PredictAllFaceExpressionsTask<TSource> {
withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask<WithFaceExpressions<TSource>>;
withFaceDescriptors(): ComputeAllFaceDescriptorsTask<WithFaceExpressions<TSource>>;
}
export declare class PredictSingleFaceExpressionsWithFaceAlignmentTask<TSource extends WithFaceLandmarks<WithFaceDetection<{}>>> extends PredictSingleFaceExpressionsTask<TSource> {
withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask<WithFaceExpressions<TSource>>;
withFaceDescriptor(): ComputeSingleFaceDescriptorTask<WithFaceExpressions<TSource>>;
} }
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib"); var tslib_1 = require("tslib");
var tf = require("@tensorflow/tfjs-core");
var dom_1 = require("../dom");
var WithFaceExpressions_1 = require("../factories/WithFaceExpressions"); var WithFaceExpressions_1 = require("../factories/WithFaceExpressions");
var ComposableTask_1 = require("./ComposableTask"); var ComposableTask_1 = require("./ComposableTask");
var DetectFaceLandmarksTasks_1 = require("./DetectFaceLandmarksTasks"); var ComputeFaceDescriptorsTasks_1 = require("./ComputeFaceDescriptorsTasks");
var extractFacesAndComputeResults_1 = require("./extractFacesAndComputeResults");
var nets_1 = require("./nets"); var nets_1 = require("./nets");
var PredictAgeAndGenderTask_1 = require("./PredictAgeAndGenderTask");
var PredictFaceExpressionsTaskBase = /** @class */ (function (_super) { var PredictFaceExpressionsTaskBase = /** @class */ (function (_super) {
tslib_1.__extends(PredictFaceExpressionsTaskBase, _super); tslib_1.__extends(PredictFaceExpressionsTaskBase, _super);
function PredictFaceExpressionsTaskBase(parentTask, input) { function PredictFaceExpressionsTaskBase(parentTask, input, extractedFaces) {
var _this = _super.call(this) || this; var _this = _super.call(this) || this;
_this.parentTask = parentTask; _this.parentTask = parentTask;
_this.input = input; _this.input = input;
_this.extractedFaces = extractedFaces;
return _this; return _this;
} }
return PredictFaceExpressionsTaskBase; return PredictFaceExpressionsTaskBase;
...@@ -25,80 +26,90 @@ var PredictAllFaceExpressionsTask = /** @class */ (function (_super) { ...@@ -25,80 +26,90 @@ var PredictAllFaceExpressionsTask = /** @class */ (function (_super) {
} }
PredictAllFaceExpressionsTask.prototype.run = function () { PredictAllFaceExpressionsTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var parentResults, detections, faces, _a, faceExpressionsByFace; var parentResults, faceExpressionsByFace;
return tslib_1.__generator(this, function (_b) { var _this = this;
switch (_b.label) { return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.parentTask]; case 0: return [4 /*yield*/, this.parentTask];
case 1: case 1:
parentResults = _b.sent(); parentResults = _a.sent();
detections = parentResults.map(function (parentResult) { return parentResult.detection; }); return [4 /*yield*/, extractFacesAndComputeResults_1.extractAllFacesAndComputeResults(parentResults, this.input, function (faces) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
if (!(this.input instanceof tf.Tensor)) return [3 /*break*/, 3]; return tslib_1.__generator(this, function (_a) {
return [4 /*yield*/, dom_1.extractFaceTensors(this.input, detections)]; switch (_a.label) {
case 0: return [4 /*yield*/, Promise.all(faces.map(function (face) { return nets_1.nets.faceExpressionNet.predictExpressions(face); }))];
case 1: return [2 /*return*/, _a.sent()];
}
});
}); }, this.extractedFaces)];
case 2: case 2:
_a = _b.sent(); faceExpressionsByFace = _a.sent();
return [3 /*break*/, 5];
case 3: return [4 /*yield*/, dom_1.extractFaces(this.input, detections)];
case 4:
_a = _b.sent();
_b.label = 5;
case 5:
faces = _a;
return [4 /*yield*/, Promise.all(faces.map(function (face) { return nets_1.nets.faceExpressionNet.predictExpressions(face); }))];
case 6:
faceExpressionsByFace = _b.sent();
faces.forEach(function (f) { return f instanceof tf.Tensor && f.dispose(); });
return [2 /*return*/, parentResults.map(function (parentResult, i) { return WithFaceExpressions_1.extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]); })]; return [2 /*return*/, parentResults.map(function (parentResult, i) { return WithFaceExpressions_1.extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]); })];
} }
}); });
}); });
}; };
PredictAllFaceExpressionsTask.prototype.withFaceLandmarks = function () { PredictAllFaceExpressionsTask.prototype.withAgeAndGender = function () {
return new DetectFaceLandmarksTasks_1.DetectAllFaceLandmarksTask(this, this.input, false); return new PredictAgeAndGenderTask_1.PredictAllAgeAndGenderTask(this, this.input);
}; };
return PredictAllFaceExpressionsTask; return PredictAllFaceExpressionsTask;
}(PredictFaceExpressionsTaskBase)); }(PredictFaceExpressionsTaskBase));
exports.PredictAllFaceExpressionsTask = PredictAllFaceExpressionsTask; exports.PredictAllFaceExpressionsTask = PredictAllFaceExpressionsTask;
var PredictSingleFaceExpressionTask = /** @class */ (function (_super) { var PredictSingleFaceExpressionsTask = /** @class */ (function (_super) {
tslib_1.__extends(PredictSingleFaceExpressionTask, _super); tslib_1.__extends(PredictSingleFaceExpressionsTask, _super);
function PredictSingleFaceExpressionTask() { function PredictSingleFaceExpressionsTask() {
return _super !== null && _super.apply(this, arguments) || this; return _super !== null && _super.apply(this, arguments) || this;
} }
PredictSingleFaceExpressionTask.prototype.run = function () { PredictSingleFaceExpressionsTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var parentResult, detection, faces, _a, faceExpressions; var parentResult, faceExpressions;
return tslib_1.__generator(this, function (_b) { return tslib_1.__generator(this, function (_a) {
switch (_b.label) { switch (_a.label) {
case 0: return [4 /*yield*/, this.parentTask]; case 0: return [4 /*yield*/, this.parentTask];
case 1: case 1:
parentResult = _b.sent(); parentResult = _a.sent();
if (!parentResult) { if (!parentResult) {
return [2 /*return*/]; return [2 /*return*/];
} }
detection = parentResult.detection; return [4 /*yield*/, extractFacesAndComputeResults_1.extractSingleFaceAndComputeResult(parentResult, this.input, function (face) { return nets_1.nets.faceExpressionNet.predictExpressions(face); }, this.extractedFaces)];
if (!(this.input instanceof tf.Tensor)) return [3 /*break*/, 3];
return [4 /*yield*/, dom_1.extractFaceTensors(this.input, [detection])];
case 2: case 2:
_a = _b.sent(); faceExpressions = _a.sent();
return [3 /*break*/, 5];
case 3: return [4 /*yield*/, dom_1.extractFaces(this.input, [detection])];
case 4:
_a = _b.sent();
_b.label = 5;
case 5:
faces = _a;
return [4 /*yield*/, nets_1.nets.faceExpressionNet.predictExpressions(faces[0])];
case 6:
faceExpressions = _b.sent();
faces.forEach(function (f) { return f instanceof tf.Tensor && f.dispose(); });
return [2 /*return*/, WithFaceExpressions_1.extendWithFaceExpressions(parentResult, faceExpressions)]; return [2 /*return*/, WithFaceExpressions_1.extendWithFaceExpressions(parentResult, faceExpressions)];
} }
}); });
}); });
}; };
PredictSingleFaceExpressionTask.prototype.withFaceLandmarks = function () { PredictSingleFaceExpressionsTask.prototype.withAgeAndGender = function () {
return new DetectFaceLandmarksTasks_1.DetectSingleFaceLandmarksTask(this, this.input, false); return new PredictAgeAndGenderTask_1.PredictSingleAgeAndGenderTask(this, this.input);
}; };
return PredictSingleFaceExpressionTask; return PredictSingleFaceExpressionsTask;
}(PredictFaceExpressionsTaskBase)); }(PredictFaceExpressionsTaskBase));
exports.PredictSingleFaceExpressionTask = PredictSingleFaceExpressionTask; exports.PredictSingleFaceExpressionsTask = PredictSingleFaceExpressionsTask;
var PredictAllFaceExpressionsWithFaceAlignmentTask = /** @class */ (function (_super) {
tslib_1.__extends(PredictAllFaceExpressionsWithFaceAlignmentTask, _super);
function PredictAllFaceExpressionsWithFaceAlignmentTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
PredictAllFaceExpressionsWithFaceAlignmentTask.prototype.withAgeAndGender = function () {
return new PredictAgeAndGenderTask_1.PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);
};
PredictAllFaceExpressionsWithFaceAlignmentTask.prototype.withFaceDescriptors = function () {
return new ComputeFaceDescriptorsTasks_1.ComputeAllFaceDescriptorsTask(this, this.input);
};
return PredictAllFaceExpressionsWithFaceAlignmentTask;
}(PredictAllFaceExpressionsTask));
exports.PredictAllFaceExpressionsWithFaceAlignmentTask = PredictAllFaceExpressionsWithFaceAlignmentTask;
var PredictSingleFaceExpressionsWithFaceAlignmentTask = /** @class */ (function (_super) {
tslib_1.__extends(PredictSingleFaceExpressionsWithFaceAlignmentTask, _super);
function PredictSingleFaceExpressionsWithFaceAlignmentTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
PredictSingleFaceExpressionsWithFaceAlignmentTask.prototype.withAgeAndGender = function () {
return new PredictAgeAndGenderTask_1.PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);
};
PredictSingleFaceExpressionsWithFaceAlignmentTask.prototype.withFaceDescriptor = function () {
return new ComputeFaceDescriptorsTasks_1.ComputeSingleFaceDescriptorTask(this, this.input);
};
return PredictSingleFaceExpressionsWithFaceAlignmentTask;
}(PredictSingleFaceExpressionsTask));
exports.PredictSingleFaceExpressionsWithFaceAlignmentTask = PredictSingleFaceExpressionsWithFaceAlignmentTask;
//# sourceMappingURL=PredictFaceExpressionsTask.js.map //# sourceMappingURL=PredictFaceExpressionsTask.js.map
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment