Commit f8a9c0ad by vincent

check in latest build

parent 5a066131
import { Dimensions, ObjectDetection, Rect } from 'tfjs-image-recognition-base';
export declare class FaceDetection extends ObjectDetection {
constructor(score: number, relativeBox: Rect, imageDims: Dimensions);
import { Box, IDimensions, ObjectDetection, Rect } from 'tfjs-image-recognition-base';
export interface IFaceDetecion {
score: number;
box: Box;
}
export declare class FaceDetection extends ObjectDetection implements IFaceDetecion {
constructor(score: number, relativeBox: Rect, imageDims: IDimensions);
}
{"version":3,"file":"FaceDetection.js","sourceRoot":"","sources":["../../../src/classes/FaceDetection.ts"],"names":[],"mappings":";;;AAAA,2EAAgF;AAEhF;IAAmC,yCAAe;IAChD,uBACE,KAAa,EACb,WAAiB,EACjB,SAAqB;eAErB,kBAAM,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC;IACjD,CAAC;IACH,oBAAC;AAAD,CAAC,AARD,CAAmC,6CAAe,GAQjD;AARY,sCAAa"}
\ No newline at end of file
{"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;IACH,oBAAC;AAAD,CAAC,AARD,CAAmC,6CAAe,GAQjD;AARY,sCAAa"}
\ No newline at end of file
import { FaceDetection } from './FaceDetection';
import { FaceLandmarks } from './FaceLandmarks';
import { FaceLandmarks68 } from './FaceLandmarks68';
export interface IFaceDetectionWithLandmarks<TFaceLandmarks extends FaceLandmarks = FaceLandmarks68> {
detection: FaceDetection;
landmarks: TFaceLandmarks;
}
export declare class FaceDetectionWithLandmarks<TFaceLandmarks extends FaceLandmarks = FaceLandmarks68> implements IFaceDetectionWithLandmarks<TFaceLandmarks> {
private _detection;
private _unshiftedLandmarks;
constructor(detection: FaceDetection, unshiftedLandmarks: TFaceLandmarks);
readonly detection: FaceDetection;
readonly unshiftedLandmarks: TFaceLandmarks;
readonly alignedRect: FaceDetection;
readonly landmarks: TFaceLandmarks;
readonly faceDetection: FaceDetection;
readonly faceLandmarks: TFaceLandmarks;
forSize(width: number, height: number): FaceDetectionWithLandmarks<TFaceLandmarks>;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var FaceDetection_1 = require("./FaceDetection");
var FaceDetectionWithLandmarks = /** @class */ (function () {
function FaceDetectionWithLandmarks(detection, unshiftedLandmarks) {
this._detection = detection;
this._unshiftedLandmarks = unshiftedLandmarks;
}
Object.defineProperty(FaceDetectionWithLandmarks.prototype, "detection", {
get: function () { return this._detection; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetectionWithLandmarks.prototype, "unshiftedLandmarks", {
get: function () { return this._unshiftedLandmarks; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetectionWithLandmarks.prototype, "alignedRect", {
get: function () {
var rect = this.landmarks.align();
var imageDims = this.detection.imageDims;
return new FaceDetection_1.FaceDetection(this._detection.score, rect.rescale(imageDims.reverse()), imageDims);
},
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetectionWithLandmarks.prototype, "landmarks", {
get: function () {
var _a = this.detection.box, x = _a.x, y = _a.y;
return this._unshiftedLandmarks.shiftBy(x, y);
},
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetectionWithLandmarks.prototype, "faceDetection", {
// aliases for backward compatibily
get: function () { return this.detection; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetectionWithLandmarks.prototype, "faceLandmarks", {
get: function () { return this.landmarks; },
enumerable: true,
configurable: true
});
FaceDetectionWithLandmarks.prototype.forSize = function (width, height) {
var resizedDetection = this._detection.forSize(width, height);
var resizedLandmarks = this._unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height);
return new FaceDetectionWithLandmarks(resizedDetection, resizedLandmarks);
};
return FaceDetectionWithLandmarks;
}());
exports.FaceDetectionWithLandmarks = FaceDetectionWithLandmarks;
//# sourceMappingURL=FaceDetectionWithLandmarks.js.map
\ No newline at end of file
{"version":3,"file":"FaceDetectionWithLandmarks.js","sourceRoot":"","sources":["../../../src/classes/FaceDetectionWithLandmarks.ts"],"names":[],"mappings":";;AAAA,iDAAgD;AAShD;IAME,oCACE,SAAwB,EACxB,kBAAkC;QAElC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC3B,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAA;IAC/C,CAAC;IAED,sBAAW,iDAAS;aAApB,cAAwC,OAAO,IAAI,CAAC,UAAU,CAAA,CAAC,CAAC;;;OAAA;IAChE,sBAAW,0DAAkB;aAA7B,cAAkD,OAAO,IAAI,CAAC,mBAAmB,CAAA,CAAC,CAAC;;;OAAA;IAEnF,sBAAW,mDAAW;aAAtB;YACE,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;YAC3B,IAAA,oCAAS,CAAmB;YACpC,OAAO,IAAI,6BAAa,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;QAC/F,CAAC;;;OAAA;IAED,sBAAW,iDAAS;aAApB;YACQ,IAAA,uBAA6B,EAA3B,QAAC,EAAE,QAAC,CAAuB;YACnC,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC/C,CAAC;;;OAAA;IAGD,sBAAI,qDAAa;QADjB,mCAAmC;aACnC,cAAqC,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;;;OAAA;IAC5D,sBAAI,qDAAa;aAAjB,cAAsC,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;;;OAAA;IAEtD,4CAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QAC1C,IAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC/D,IAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAiB,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAClI,OAAO,IAAI,0BAA0B,CAAiB,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;IAC3F,CAAC;IACH,iCAAC;AAAD,CAAC,AArCD,IAqCC;AArCY,gEAA0B"}
\ No newline at end of file
import { Dimensions, Point, Rect } from 'tfjs-image-recognition-base';
import { Dimensions, IDimensions, Point, Rect } from 'tfjs-image-recognition-base';
import { FaceDetection } from './FaceDetection';
export declare class FaceLandmarks {
protected _imageWidth: number;
protected _imageHeight: number;
export interface IFaceLandmarks {
positions: Point[];
shift: Point;
}
export declare class FaceLandmarks implements IFaceLandmarks {
protected _shift: Point;
protected _faceLandmarks: Point[];
constructor(relativeFaceLandmarkPositions: Point[], imageDims: Dimensions, shift?: Point);
getShift(): Point;
getImageWidth(): number;
getImageHeight(): number;
getPositions(): Point[];
getRelativePositions(): Point[];
protected _positions: Point[];
protected _imgDims: Dimensions;
constructor(relativeFaceLandmarkPositions: Point[], imgDims: IDimensions, shift?: Point);
readonly shift: Point;
readonly imageWidth: number;
readonly imageHeight: number;
readonly positions: Point[];
readonly relativePositions: Point[];
forSize<T extends FaceLandmarks>(width: number, height: number): T;
shift<T extends FaceLandmarks>(x: number, y: number): T;
shiftBy<T extends FaceLandmarks>(x: number, y: number): T;
shiftByPoint<T extends FaceLandmarks>(pt: Point): T;
/**
* Aligns the face landmarks after face detection from the relative positions of the faces
......
......@@ -7,38 +7,49 @@ var relX = 0.5;
var relY = 0.43;
var relScale = 0.45;
var FaceLandmarks = /** @class */ (function () {
function FaceLandmarks(relativeFaceLandmarkPositions, imageDims, shift) {
function FaceLandmarks(relativeFaceLandmarkPositions, imgDims, shift) {
if (shift === void 0) { shift = new tfjs_image_recognition_base_1.Point(0, 0); }
var width = imageDims.width, height = imageDims.height;
this._imageWidth = width;
this._imageHeight = height;
var width = imgDims.width, height = imgDims.height;
this._imgDims = new tfjs_image_recognition_base_1.Dimensions(width, height);
this._shift = shift;
this._faceLandmarks = relativeFaceLandmarkPositions.map(function (pt) { return pt.mul(new tfjs_image_recognition_base_1.Point(width, height)).add(shift); });
this._positions = relativeFaceLandmarkPositions.map(function (pt) { return pt.mul(new tfjs_image_recognition_base_1.Point(width, height)).add(shift); });
}
FaceLandmarks.prototype.getShift = function () {
return new tfjs_image_recognition_base_1.Point(this._shift.x, this._shift.y);
};
FaceLandmarks.prototype.getImageWidth = function () {
return this._imageWidth;
};
FaceLandmarks.prototype.getImageHeight = function () {
return this._imageHeight;
};
FaceLandmarks.prototype.getPositions = function () {
return this._faceLandmarks;
};
FaceLandmarks.prototype.getRelativePositions = function () {
Object.defineProperty(FaceLandmarks.prototype, "shift", {
get: function () { return new tfjs_image_recognition_base_1.Point(this._shift.x, this._shift.y); },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceLandmarks.prototype, "imageWidth", {
get: function () { return this._imgDims.width; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceLandmarks.prototype, "imageHeight", {
get: function () { return this._imgDims.height; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceLandmarks.prototype, "positions", {
get: function () { return this._positions; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceLandmarks.prototype, "relativePositions", {
get: function () {
var _this = this;
return this._faceLandmarks.map(function (pt) { return pt.sub(_this._shift).div(new tfjs_image_recognition_base_1.Point(_this._imageWidth, _this._imageHeight)); });
};
return this._positions.map(function (pt) { return pt.sub(_this._shift).div(new tfjs_image_recognition_base_1.Point(_this.imageWidth, _this.imageHeight)); });
},
enumerable: true,
configurable: true
});
FaceLandmarks.prototype.forSize = function (width, height) {
return new this.constructor(this.getRelativePositions(), { width: width, height: height });
return new this.constructor(this.relativePositions, { width: width, height: height });
};
FaceLandmarks.prototype.shift = function (x, y) {
return new this.constructor(this.getRelativePositions(), { width: this._imageWidth, height: this._imageHeight }, new tfjs_image_recognition_base_1.Point(x, y));
FaceLandmarks.prototype.shiftBy = function (x, y) {
return new this.constructor(this.relativePositions, this._imgDims, new tfjs_image_recognition_base_1.Point(x, y));
};
FaceLandmarks.prototype.shiftByPoint = function (pt) {
return this.shift(pt.x, pt.y);
return this.shiftBy(pt.x, pt.y);
};
/**
* Aligns the face landmarks after face detection from the relative positions of the faces
......@@ -54,9 +65,9 @@ var FaceLandmarks = /** @class */ (function () {
FaceLandmarks.prototype.align = function (detection) {
if (detection) {
var box = detection instanceof FaceDetection_1.FaceDetection
? detection.getBox().floor()
? detection.box.floor()
: detection;
return this.shift(box.x, box.y).align();
return this.shiftBy(box.x, box.y).align();
}
var centers = this.getRefPointsForAlignment();
var leftEyeCenter = centers[0], rightEyeCenter = centers[1], mouthCenter = centers[2];
......@@ -67,7 +78,7 @@ var FaceLandmarks = /** @class */ (function () {
// TODO: pad in case rectangle is out of image bounds
var x = Math.floor(Math.max(0, refPoint.x - (relX * 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.getRefPointsForAlignment = function () {
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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"}
\ No newline at end of file
{"version":3,"file":"FaceLandmarks.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
......@@ -9,7 +9,7 @@ var FaceLandmarks5 = /** @class */ (function (_super) {
return _super !== null && _super.apply(this, arguments) || this;
}
FaceLandmarks5.prototype.getRefPointsForAlignment = function () {
var pts = this.getPositions();
var pts = this.positions;
return [
pts[0],
pts[1],
......
{"version":3,"file":"FaceLandmarks5.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks5.ts"],"names":[],"mappings":";;;AAAA,2EAAoE;AAEpE,iDAAgD;AAEhD;IAAoC,0CAAa;IAAjD;;IAUA,CAAC;IARW,iDAAwB,GAAlC;QACE,IAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAC/B,OAAO;YACL,GAAG,CAAC,CAAC,CAAC;YACN,GAAG,CAAC,CAAC,CAAC;YACN,4CAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC,CAAA;IACH,CAAC;IACH,qBAAC;AAAD,CAAC,AAVD,CAAoC,6BAAa,GAUhD;AAVY,wCAAc"}
\ No newline at end of file
{"version":3,"file":"FaceLandmarks5.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks5.ts"],"names":[],"mappings":";;;AAAA,2EAAoE;AAEpE,iDAAgD;AAEhD;IAAoC,0CAAa;IAAjD;;IAUA,CAAC;IARW,iDAAwB,GAAlC;QACE,IAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAA;QAC1B,OAAO;YACL,GAAG,CAAC,CAAC,CAAC;YACN,GAAG,CAAC,CAAC,CAAC;YACN,4CAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC,CAAA;IACH,CAAC;IACH,qBAAC;AAAD,CAAC,AAVD,CAAoC,6BAAa,GAUhD;AAVY,wCAAc"}
\ No newline at end of file
......@@ -9,25 +9,25 @@ var FaceLandmarks68 = /** @class */ (function (_super) {
return _super !== null && _super.apply(this, arguments) || this;
}
FaceLandmarks68.prototype.getJawOutline = function () {
return this._faceLandmarks.slice(0, 17);
return this.positions.slice(0, 17);
};
FaceLandmarks68.prototype.getLeftEyeBrow = function () {
return this._faceLandmarks.slice(17, 22);
return this.positions.slice(17, 22);
};
FaceLandmarks68.prototype.getRightEyeBrow = function () {
return this._faceLandmarks.slice(22, 27);
return this.positions.slice(22, 27);
};
FaceLandmarks68.prototype.getNose = function () {
return this._faceLandmarks.slice(27, 36);
return this.positions.slice(27, 36);
};
FaceLandmarks68.prototype.getLeftEye = function () {
return this._faceLandmarks.slice(36, 42);
return this.positions.slice(36, 42);
};
FaceLandmarks68.prototype.getRightEye = function () {
return this._faceLandmarks.slice(42, 48);
return this.positions.slice(42, 48);
};
FaceLandmarks68.prototype.getMouth = function () {
return this._faceLandmarks.slice(48, 68);
return this.positions.slice(48, 68);
};
FaceLandmarks68.prototype.getRefPointsForAlignment = function () {
return [
......
{"version":3,"file":"FaceLandmarks68.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks68.ts"],"names":[],"mappings":";;;AAAA,2EAAoE;AAEpE,0DAAyD;AAGzD;IAAqC,2CAAa;IAAlD;;IAoCA,CAAC;IAnCQ,uCAAa,GAApB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACzC,CAAC;IAEM,wCAAc,GAArB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,yCAAe,GAAtB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,iCAAO,GAAd;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,oCAAU,GAAjB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,qCAAW,GAAlB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,kCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAES,kDAAwB,GAAlC;QACE,OAAO;YACL,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE;SAChB,CAAC,GAAG,CAAC,4CAAc,CAAC,CAAA;IACvB,CAAC;IACH,sBAAC;AAAD,CAAC,AApCD,CAAqC,6BAAa,GAoCjD;AApCY,0CAAe"}
\ No newline at end of file
{"version":3,"file":"FaceLandmarks68.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks68.ts"],"names":[],"mappings":";;;AAAA,2EAAoE;AAEpE,0DAAyD;AAEzD;IAAqC,2CAAa;IAAlD;;IAoCA,CAAC;IAnCQ,uCAAa,GAApB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACpC,CAAC;IAEM,wCAAc,GAArB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,yCAAe,GAAtB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,iCAAO,GAAd;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,oCAAU,GAAjB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,qCAAW,GAAlB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,kCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAES,kDAAwB,GAAlC;QACE,OAAO;YACL,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE;SAChB,CAAC,GAAG,CAAC,4CAAc,CAAC,CAAA;IACvB,CAAC;IACH,sBAAC;AAAD,CAAC,AApCD,CAAqC,6BAAa,GAoCjD;AApCY,0CAAe"}
\ No newline at end of file
export interface IFaceMatch {
label: string;
distance: number;
}
export declare class FaceMatch implements IFaceMatch {
private _label;
private _distance;
constructor(label: string, distance: number);
readonly label: string;
readonly distance: number;
toString(withDistance?: boolean): string;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
var FaceMatch = /** @class */ (function () {
function FaceMatch(label, distance) {
this._label = label;
this._distance = distance;
}
Object.defineProperty(FaceMatch.prototype, "label", {
get: function () { return this._label; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceMatch.prototype, "distance", {
get: function () { return this._distance; },
enumerable: true,
configurable: true
});
FaceMatch.prototype.toString = function (withDistance) {
if (withDistance === void 0) { withDistance = true; }
return "" + this.label + (withDistance ? " (" + tfjs_image_recognition_base_1.round(this.distance) + ")" : '');
};
return FaceMatch;
}());
exports.FaceMatch = FaceMatch;
//# sourceMappingURL=FaceMatch.js.map
\ No newline at end of file
{"version":3,"file":"FaceMatch.js","sourceRoot":"","sources":["../../../src/classes/FaceMatch.ts"],"names":[],"mappings":";;AAAA,2EAAoD;AAOpD;IAIE,mBAAY,KAAa,EAAE,QAAgB;QACzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;IAC3B,CAAC;IAED,sBAAW,4BAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IACjD,sBAAW,+BAAQ;aAAnB,cAAgC,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;;;OAAA;IAEhD,4BAAQ,GAAf,UAAgB,YAA4B;QAA5B,6BAAA,EAAA,mBAA4B;QAC1C,OAAO,KAAG,IAAI,CAAC,KAAK,IAAG,YAAY,CAAC,CAAC,CAAC,OAAK,mCAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAA;IAC3E,CAAC;IACH,gBAAC;AAAD,CAAC,AAfD,IAeC;AAfY,8BAAS"}
\ No newline at end of file
import { FaceDetection } from './FaceDetection';
import { FaceDetectionWithLandmarks, IFaceDetectionWithLandmarks } from './FaceDetectionWithLandmarks';
import { FaceLandmarks } from './FaceLandmarks';
export declare class FullFaceDescription {
private _detection;
private _landmarks;
import { FaceLandmarks68 } from './FaceLandmarks68';
export interface IFullFaceDescription<TFaceLandmarks extends FaceLandmarks = FaceLandmarks68> extends IFaceDetectionWithLandmarks<TFaceLandmarks> {
detection: FaceDetection;
landmarks: TFaceLandmarks;
descriptor: Float32Array;
}
export declare class FullFaceDescription<TFaceLandmarks extends FaceLandmarks = FaceLandmarks68> extends FaceDetectionWithLandmarks<TFaceLandmarks> implements IFullFaceDescription<TFaceLandmarks> {
private _descriptor;
constructor(_detection: FaceDetection, _landmarks: FaceLandmarks, _descriptor: Float32Array);
readonly detection: FaceDetection;
readonly landmarks: FaceLandmarks;
constructor(detection: FaceDetection, unshiftedLandmarks: TFaceLandmarks, descriptor: Float32Array);
readonly descriptor: Float32Array;
forSize(width: number, height: number): FullFaceDescription;
forSize(width: number, height: number): FullFaceDescription<TFaceLandmarks>;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var FullFaceDescription = /** @class */ (function () {
function FullFaceDescription(_detection, _landmarks, _descriptor) {
this._detection = _detection;
this._landmarks = _landmarks;
this._descriptor = _descriptor;
var tslib_1 = require("tslib");
var FaceDetectionWithLandmarks_1 = require("./FaceDetectionWithLandmarks");
var FullFaceDescription = /** @class */ (function (_super) {
tslib_1.__extends(FullFaceDescription, _super);
function FullFaceDescription(detection, unshiftedLandmarks, descriptor) {
var _this = _super.call(this, detection, unshiftedLandmarks) || this;
_this._descriptor = descriptor;
return _this;
}
Object.defineProperty(FullFaceDescription.prototype, "detection", {
get: function () {
return this._detection;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FullFaceDescription.prototype, "landmarks", {
get: function () {
return this._landmarks;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FullFaceDescription.prototype, "descriptor", {
get: function () {
return this._descriptor;
......@@ -28,9 +17,10 @@ var FullFaceDescription = /** @class */ (function () {
configurable: true
});
FullFaceDescription.prototype.forSize = function (width, height) {
return new FullFaceDescription(this._detection.forSize(width, height), this._landmarks.forSize(width, height), this._descriptor);
var _a = _super.prototype.forSize.call(this, width, height), detection = _a.detection, landmarks = _a.landmarks;
return new FullFaceDescription(detection, landmarks, this.descriptor);
};
return FullFaceDescription;
}());
}(FaceDetectionWithLandmarks_1.FaceDetectionWithLandmarks));
exports.FullFaceDescription = FullFaceDescription;
//# sourceMappingURL=FullFaceDescription.js.map
\ No newline at end of file
{"version":3,"file":"FullFaceDescription.js","sourceRoot":"","sources":["../../../src/classes/FullFaceDescription.ts"],"names":[],"mappings":";;AAGA;IACE,6BACU,UAAyB,EACzB,UAAyB,EACzB,WAAyB;QAFzB,eAAU,GAAV,UAAU,CAAe;QACzB,eAAU,GAAV,UAAU,CAAe;QACzB,gBAAW,GAAX,WAAW,CAAc;IAChC,CAAC;IAEJ,sBAAW,0CAAS;aAApB;YACE,OAAO,IAAI,CAAC,UAAU,CAAA;QACxB,CAAC;;;OAAA;IAED,sBAAW,0CAAS;aAApB;YACE,OAAO,IAAI,CAAC,UAAU,CAAA;QACxB,CAAC;;;OAAA;IAED,sBAAW,2CAAU;aAArB;YACE,OAAO,IAAI,CAAC,WAAW,CAAA;QACzB,CAAC;;;OAAA;IAEM,qCAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,mBAAmB,CAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EACtC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EACtC,IAAI,CAAC,WAAW,CACjB,CAAA;IACH,CAAC;IACH,0BAAC;AAAD,CAAC,AA1BD,IA0BC;AA1BY,kDAAmB"}
\ No newline at end of file
{"version":3,"file":"FullFaceDescription.js","sourceRoot":"","sources":["../../../src/classes/FullFaceDescription.ts"],"names":[],"mappings":";;;AACA,2EAAuG;AAYvG;IACU,+CAA0C;IAKlD,6BACE,SAAwB,EACxB,kBAAkC,EAClC,UAAwB;QAH1B,YAKE,kBAAM,SAAS,EAAE,kBAAkB,CAAC,SAErC;QADC,KAAI,CAAC,WAAW,GAAG,UAAU,CAAA;;IAC/B,CAAC;IAED,sBAAW,2CAAU;aAArB;YACE,OAAO,IAAI,CAAC,WAAW,CAAA;QACzB,CAAC;;;OAAA;IAEM,qCAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QACpC,IAAA,uDAAuD,EAArD,wBAAS,EAAE,wBAAS,CAAiC;QAC7D,OAAO,IAAI,mBAAmB,CAAiB,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACvF,CAAC;IACH,0BAAC;AAAD,CAAC,AAvBD,CACU,uDAA0B,GAsBnC;AAvBY,kDAAmB"}
\ No newline at end of file
export declare class LabeledFaceDescriptors {
private _label;
private _descriptors;
constructor(label: string, descriptors: Float32Array[]);
readonly label: string;
readonly descriptors: Float32Array[];
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var LabeledFaceDescriptors = /** @class */ (function () {
function LabeledFaceDescriptors(label, descriptors) {
if (!(typeof label === 'string')) {
throw new Error('LabeledFaceDescriptors - constructor expected label to be a string');
}
if (!Array.isArray(descriptors) || descriptors.some(function (desc) { return !(desc instanceof Float32Array); })) {
throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array');
}
this._label = label;
this._descriptors = descriptors;
}
Object.defineProperty(LabeledFaceDescriptors.prototype, "label", {
get: function () { return this._label; },
enumerable: true,
configurable: true
});
Object.defineProperty(LabeledFaceDescriptors.prototype, "descriptors", {
get: function () { return this._descriptors; },
enumerable: true,
configurable: true
});
return LabeledFaceDescriptors;
}());
exports.LabeledFaceDescriptors = LabeledFaceDescriptors;
//# sourceMappingURL=LabeledFaceDescriptors.js.map
\ No newline at end of file
{"version":3,"file":"LabeledFaceDescriptors.js","sourceRoot":"","sources":["../../../src/classes/LabeledFaceDescriptors.ts"],"names":[],"mappings":";;AAAA;IAIE,gCAAY,KAAa,EAAE,WAA2B;QACpD,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;SACtF;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,CAAC,IAAI,YAAY,YAAY,CAAC,EAA/B,CAA+B,CAAC,EAAE;YAC5F,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;SAC5G;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;IACjC,CAAC;IAED,sBAAW,yCAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IACjD,sBAAW,+CAAW;aAAtB,cAA2C,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;;;OAAA;IACvE,6BAAC;AAAD,CAAC,AAnBD,IAmBC;AAnBY,wDAAsB"}
\ No newline at end of file
export * from './FaceDetection';
export * from './FaceDetectionWithLandmarks';
export * from './FaceLandmarks';
export * from './FaceLandmarks5';
export * from './FaceLandmarks68';
export * from './FaceMatch';
export * from './FullFaceDescription';
export * from './LabeledFaceDescriptors';
......@@ -2,8 +2,11 @@
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
tslib_1.__exportStar(require("./FaceDetection"), exports);
tslib_1.__exportStar(require("./FaceDetectionWithLandmarks"), exports);
tslib_1.__exportStar(require("./FaceLandmarks"), exports);
tslib_1.__exportStar(require("./FaceLandmarks5"), exports);
tslib_1.__exportStar(require("./FaceLandmarks68"), exports);
tslib_1.__exportStar(require("./FaceMatch"), exports);
tslib_1.__exportStar(require("./FullFaceDescription"), exports);
tslib_1.__exportStar(require("./LabeledFaceDescriptors"), exports);
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/classes/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,0DAAgC;AAChC,2DAAiC;AACjC,4DAAkC;AAClC,gEAAsC"}
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/classes/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,uEAA6C;AAC7C,0DAAgC;AAChC,2DAAiC;AACjC,4DAAkC;AAClC,sDAA4B;AAC5B,gEAAsC;AACtC,mEAAyC"}
\ No newline at end of file
......@@ -29,7 +29,7 @@ function drawLandmarks(canvasArg, faceLandmarks, options) {
// else draw points
var ptOffset = lineWidth / 2;
ctx.fillStyle = color;
landmarks.getPositions().forEach(function (pt) { return ctx.fillRect(pt.x - ptOffset, pt.y - ptOffset, lineWidth, lineWidth); });
landmarks.positions.forEach(function (pt) { return ctx.fillRect(pt.x - ptOffset, pt.y - ptOffset, lineWidth, lineWidth); });
});
}
exports.drawLandmarks = drawLandmarks;
......
{"version":3,"file":"drawLandmarks.js","sourceRoot":"","sources":["../../../src/dom/drawLandmarks.ts"],"names":[],"mappings":";;AAAA,2EAAuG;AAGvG,8DAA6D;AAC7D,6CAA4C;AAG5C,uBACE,SAAqC,EACrC,aAA8C,EAC9C,OAA8B;IAE9B,IAAM,MAAM,GAAG,0CAAY,CAAC,SAAS,CAAC,CAAA;IACtC,IAAI,CAAC,CAAC,MAAM,YAAY,iBAAiB,CAAC,EAAE;QAC1C,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,YAAY,EAAE,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;IAC9G,CAAC,CAAC,CAAA;AACJ,CAAC;AAzCD,sCAyCC"}
\ No newline at end of file
{"version":3,"file":"drawLandmarks.js","sourceRoot":"","sources":["../../../src/dom/drawLandmarks.ts"],"names":[],"mappings":";;AAAA,2EAAuG;AAGvG,8DAA6D;AAC7D,6CAA4C;AAG5C,uBACE,SAAqC,EACrC,aAA8C,EAC9C,OAA8B;IAE9B,IAAM,MAAM,GAAG,0CAAY,CAAC,SAAS,CAAC,CAAA;IACtC,IAAI,CAAC,CAAC,MAAM,YAAY,iBAAiB,CAAC,EAAE;QAC1C,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
......@@ -23,7 +23,7 @@ function extractFaceTensors(imageTensor, detections) {
return [2 /*return*/, tf.tidy(function () {
var _a = imageTensor.shape.slice(tfjs_image_recognition_base_1.isTensor4D(imageTensor) ? 1 : 0), imgHeight = _a[0], imgWidth = _a[1], numChannels = _a[2];
var boxes = detections.map(function (det) { return det instanceof FaceDetection_1.FaceDetection
? det.forSize(imgWidth, imgHeight).getBox()
? det.forSize(imgWidth, imgHeight).box
: det; })
.map(function (box) { return box.clipAtImageBorders(imgWidth, imgHeight); });
var faceTensors = boxes.map(function (_a) {
......
{"version":3,"file":"extractFaceTensors.js","sourceRoot":"","sources":["../../../src/dom/extractFaceTensors.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAA+D;AAE/D,0DAAyD;AAEzD;;;;;;;;;GASG;AACH,4BACE,WAAsC,EACtC,UAAuC;;;YAGvC,IAAI,wCAAU,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACvD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;aACpE;YAED,sBAAO,EAAE,CAAC,IAAI,CAAC;oBACP,IAAA,2FAA6F,EAA5F,iBAAS,EAAE,gBAAQ,EAAE,mBAAW,CAA4D;oBAEnG,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,6BAAa;wBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE;wBAC3C,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;yBACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAA;oBAE1D,IAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;4BAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;wBAClD,OAAA,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;oBAAvG,CAAuG,CACxG,CAAA;oBAED,OAAO,WAAW,CAAA;gBACpB,CAAC,CAAC,EAAA;;;CACH;AAzBD,gDAyBC"}
\ No newline at end of file
{"version":3,"file":"extractFaceTensors.js","sourceRoot":"","sources":["../../../src/dom/extractFaceTensors.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAA+D;AAE/D,0DAAyD;AAEzD;;;;;;;;;GASG;AACH,4BACE,WAAsC,EACtC,UAAuC;;;YAGvC,IAAI,wCAAU,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACvD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;aACpE;YAED,sBAAO,EAAE,CAAC,IAAI,CAAC;oBACP,IAAA,2FAA6F,EAA5F,iBAAS,EAAE,gBAAQ,EAAE,mBAAW,CAA4D;oBAEnG,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,6BAAa;wBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,GAAG;wBACtC,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;yBACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAA;oBAE1D,IAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;4BAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;wBAClD,OAAA,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;oBAAvG,CAAuG,CACxG,CAAA;oBAED,OAAO,WAAW,CAAA;gBACpB,CAAC,CAAC,EAAA;;;CACH;AAzBD,gDAyBC"}
\ No newline at end of file
......@@ -38,7 +38,7 @@ function extractFaces(input, detections) {
case 5:
ctx = tfjs_image_recognition_base_1.getContext2dOrThrow(canvas);
boxes = detections.map(function (det) { return det instanceof FaceDetection_1.FaceDetection
? det.forSize(canvas.width, canvas.height).getBox().floor()
? det.forSize(canvas.width, canvas.height).box.floor()
: det; })
.map(function (box) { return box.clipAtImageBorders(canvas.width, canvas.height); });
return [2 /*return*/, boxes.map(function (_a) {
......
{"version":3,"file":"extractFaces.js","sourceRoot":"","sources":["../../../src/dom/extractFaces.ts"],"names":[],"mappings":";;;AAAA,2EAOqC;AAErC,0DAAyD;AAEzD;;;;;;GAMG;AACH,sBACE,KAAgB,EAChB,UAAuC;;;;;;oBAGnC,MAAM,GAAG,KAA0B,CAAA;yBAEnC,CAAC,CAAC,KAAK,YAAY,iBAAiB,CAAC,EAArC,wBAAqC;oBACtB,qBAAM,wCAAU,CAAC,KAAK,CAAC,EAAA;;oBAAlC,QAAQ,GAAG,SAAuB;oBAExC,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC1B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;qBAC9D;oBAEK,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;yBAClC,CAAA,cAAc,YAAY,iBAAiB,CAAA,EAA3C,wBAA2C;oBAChD,KAAA,cAAc,CAAA;;wBACd,qBAAM,iDAAmB,CAAC,cAAc,CAAC,EAAA;;oBAAzC,KAAA,SAAyC,CAAA;;;oBAF7C,MAAM,KAEuC,CAAA;;;oBAGzC,GAAG,GAAG,iDAAmB,CAAC,MAAM,CAAC,CAAA;oBACjC,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,6BAAa;wBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;wBAC3D,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;yBACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAnD,CAAmD,CAAC,CAAA;oBAElE,sBAAO,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;gCAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;4BACrC,IAAM,OAAO,GAAG,0CAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;4BAC/C,iDAAmB,CAAC,OAAO,CAAC;iCACzB,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;4BAC5D,OAAO,OAAO,CAAA;wBAChB,CAAC,CAAC,EAAA;;;;CACH;AAlCD,oCAkCC"}
\ No newline at end of file
{"version":3,"file":"extractFaces.js","sourceRoot":"","sources":["../../../src/dom/extractFaces.ts"],"names":[],"mappings":";;;AAAA,2EAOqC;AAErC,0DAAyD;AAEzD;;;;;;GAMG;AACH,sBACE,KAAgB,EAChB,UAAuC;;;;;;oBAGnC,MAAM,GAAG,KAA0B,CAAA;yBAEnC,CAAC,CAAC,KAAK,YAAY,iBAAiB,CAAC,EAArC,wBAAqC;oBACtB,qBAAM,wCAAU,CAAC,KAAK,CAAC,EAAA;;oBAAlC,QAAQ,GAAG,SAAuB;oBAExC,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC1B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;qBAC9D;oBAEK,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;yBAClC,CAAA,cAAc,YAAY,iBAAiB,CAAA,EAA3C,wBAA2C;oBAChD,KAAA,cAAc,CAAA;;wBACd,qBAAM,iDAAmB,CAAC,cAAc,CAAC,EAAA;;oBAAzC,KAAA,SAAyC,CAAA;;;oBAF7C,MAAM,KAEuC,CAAA;;;oBAGzC,GAAG,GAAG,iDAAmB,CAAC,MAAM,CAAC,CAAA;oBACjC,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,6BAAa;wBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE;wBACtD,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;yBACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAnD,CAAmD,CAAC,CAAA;oBAElE,sBAAO,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;gCAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;4BACrC,IAAM,OAAO,GAAG,0CAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;4BAC/C,iDAAmB,CAAC,OAAO,CAAC;iCACzB,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;4BAC5D,OAAO,OAAO,CAAA;wBAChB,CAAC,CAAC,EAAA;;;;CACH;AAlCD,oCAkCC"}
\ No newline at end of file
......@@ -25,12 +25,12 @@ function denseBlock(x, denseBlockParams, isFirstLayer) {
var FaceLandmark68Net = /** @class */ (function (_super) {
tslib_1.__extends(FaceLandmark68Net, _super);
function FaceLandmark68Net() {
return _super.call(this, 'FaceLandmark68LargeNet') || this;
return _super.call(this, 'FaceLandmark68Net') || this;
}
FaceLandmark68Net.prototype.runNet = function (input) {
var params = this.params;
if (!params) {
throw new Error('FaceLandmark68LargeNet - load model before inference');
throw new Error('FaceLandmark68Net - load model before inference');
}
return tf.tidy(function () {
var batchTensor = input.toBatchTensor(112, true);
......
{"version":3,"file":"FaceLandmark68Net.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68Net.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"FaceLandmark68Net.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68Net.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { NetInput, NeuralNetwork, TNetInput, Dimensions } from 'tfjs-image-recognition-base';
import { IDimensions, NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base';
import { FaceLandmarks68 } from '../classes/FaceLandmarks68';
export declare class FaceLandmark68NetBase<NetParams> extends NeuralNetwork<NetParams> {
private __name;
constructor(_name: string);
runNet(_: NetInput): tf.Tensor2D;
postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: Dimensions[]): tf.Tensor2D;
postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D;
forwardInput(input: NetInput): tf.Tensor2D;
forward(input: TNetInput): Promise<tf.Tensor2D>;
detectLandmarks(input: TNetInput): Promise<FaceLandmarks68 | FaceLandmarks68[]>;
......
{"version":3,"file":"FaceLandmark68NetBase.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68NetBase.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAAwH;AAExH,8DAA6D;AAE7D;IAAsD,iDAAwB;IAK5E,+BAAY,KAAa;QAAzB,YACE,kBAAM,KAAK,CAAC,SAEb;QADC,KAAI,CAAC,MAAM,GAAG,KAAK,CAAA;;IACrB,CAAC;IAEM,sCAAM,GAAb,UAAc,CAAW;QACvB,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,MAAM,8BAA2B,CAAC,CAAA;IAC5D,CAAC;IAEM,2CAAW,GAAlB,UAAmB,MAAmB,EAAE,SAAiB,EAAE,kBAAgC;QAEzF,IAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAC,EAAiB;gBAAf,gBAAK,EAAE,kBAAM;YAC7D,IAAM,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YACjD,OAAO;gBACL,KAAK,EAAE,KAAK,GAAG,KAAK;gBACpB,MAAM,EAAE,MAAM,GAAG,KAAK;aACvB,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,IAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAA;QAExC,OAAO,EAAE,CAAC,IAAI,CAAC;YACb,IAAM,uBAAuB,GAAG,UAAC,KAAa,EAAE,KAAa;gBAC3D,OAAA,EAAE,CAAC,KAAK,CAAC;oBACP,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;oBACpB,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;iBACrB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;YAHzB,CAGyB,CAAA;YAE3B,IAAM,UAAU,GAAG,UAAC,QAAgB,EAAE,IAAuC;gBACrE,IAAA,8BAA6C,EAA3C,gBAAK,EAAE,kBAAM,CAA8B;gBACnD,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/D,CAAC,CAAA;YACD,IAAM,WAAW,GAAG,UAAC,QAAgB,IAAK,OAAA,UAAU,CAAC,QAAQ,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC,EAArC,CAAqC,CAAA;YAC/E,IAAM,WAAW,GAAG,UAAC,QAAgB,IAAK,OAAA,UAAU,CAAC,QAAQ,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC,EAArC,CAAqC,CAAA;YAE/E,IAAM,eAAe,GAAG,MAAM;iBAC3B,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;iBACzC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAC,CAAC,EAAE,QAAQ;gBACrD,OAAA,uBAAuB,CACrB,WAAW,CAAC,QAAQ,CAAC,EACrB,WAAW,CAAC,QAAQ,CAAC,CACtB;YAHD,CAGC,CACF,CAAC,CAAC;iBACF,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAC,CAAC,EAAE,QAAQ;gBACrD,OAAA,uBAAuB,CACrB,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,EAC/B,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,CACjC;YAHD,CAGC,CACF,CAAC,CAAC,CAAA;YAEL,OAAO,eAA8B,CAAA;QACvC,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,4CAAY,GAAnB,UAAoB,KAAe;QAAnC,iBASC;QARC,OAAO,EAAE,CAAC,IAAI,CAAC;YACb,IAAM,GAAG,GAAG,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC9B,OAAO,KAAI,CAAC,WAAW,CACrB,GAAG,EACH,KAAK,CAAC,SAAmB,EACzB,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,UAAC,EAAe;oBAAd,cAAM,EAAE,aAAK;gBAAM,OAAA,CAAC,EAAE,MAAM,QAAA,EAAE,KAAK,OAAA,EAAE,CAAC;YAAnB,CAAmB,CAAC,CACpE,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEY,uCAAO,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,+CAAe,GAA5B,UAA6B,KAAgB;;;;;;4BAC1B,qBAAM,wCAAU,CAAC,KAAK,CAAC,EAAA;;wBAAlC,QAAQ,GAAG,SAAuB;wBAClC,eAAe,GAAG,EAAE,CAAC,IAAI,CAC7B,cAAM,OAAA,EAAE,CAAC,OAAO,CAAC,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAvC,CAAuC,CAC9C,CAAA;wBAEyB,qBAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAC7D,UAAO,cAAc,EAAE,QAAQ;;;;;4CACN,KAAA,CAAA,KAAA,KAAK,CAAA,CAAC,IAAI,CAAA;4CAAC,qBAAM,cAAc,CAAC,IAAI,EAAE,EAAA;;4CAAvD,cAAc,GAAG,cAAW,SAA2B,EAAC;4CACxD,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,oCAAM,CAAC,CAAC,CAAC,EAAT,CAAS,CAAC,CAAA;4CACpD,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,oCAAM,CAAC,CAAC,CAAC,EAAV,CAAU,CAAC,CAAA;4CAE3D,sBAAO,IAAI,iCAAe,CACxB,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,IAAI,mCAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAjC,CAAiC,CAAC,EAClE;oDACE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;oDACzC,KAAK,EAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;iDACzC,CACF,EAAA;;;iCACF,CACF,CAAC,EAAA;;wBAdI,iBAAiB,GAAG,SAcxB;wBAEF,eAAe,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,EAAE,EAAX,CAAW,CAAC,CAAA;wBAEzC,sBAAO,QAAQ,CAAC,YAAY;gCAC1B,CAAC,CAAC,iBAAiB;gCACnB,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAA;;;;KACzB;IACH,4BAAC;AAAD,CAAC,AAtGD,CAAsD,2CAAa,GAsGlE;AAtGY,sDAAqB"}
\ No newline at end of file
{"version":3,"file":"FaceLandmark68NetBase.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68NetBase.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
......@@ -4,4 +4,3 @@ export * from './FaceLandmark68TinyNet';
export declare class FaceLandmarkNet extends FaceLandmark68Net {
}
export declare function createFaceLandmarkNet(weights: Float32Array): FaceLandmarkNet;
export declare function faceLandmarkNet(weights: Float32Array): FaceLandmarkNet;
......@@ -18,9 +18,4 @@ function createFaceLandmarkNet(weights) {
return net;
}
exports.createFaceLandmarkNet = createFaceLandmarkNet;
function faceLandmarkNet(weights) {
console.warn('faceLandmarkNet(weights: Float32Array) will be deprecated in future, use createFaceLandmarkNet instead');
return createFaceLandmarkNet(weights);
}
exports.faceLandmarkNet = faceLandmarkNet;
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/index.ts"],"names":[],"mappings":";;;AAAA,yDAAwD;AAExD,8DAAoC;AACpC,kEAAwC;AAExC;IAAqC,2CAAiB;IAAtD;;IAAwD,CAAC;IAAD,sBAAC;AAAD,CAAC,AAAzD,CAAqC,qCAAiB,GAAG;AAA5C,0CAAe;AAE5B,+BAAsC,OAAqB;IACzD,IAAM,GAAG,GAAG,IAAI,eAAe,EAAE,CAAA;IACjC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,sDAIC;AAED,yBAAgC,OAAqB;IACnD,OAAO,CAAC,IAAI,CAAC,wGAAwG,CAAC,CAAA;IACtH,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAA;AACvC,CAAC;AAHD,0CAGC"}
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/index.ts"],"names":[],"mappings":";;;AAAA,yDAAwD;AAExD,8DAAoC;AACpC,kEAAwC;AAExC;IAAqC,2CAAiB;IAAtD;;IAAwD,CAAC;IAAD,sBAAC;AAAD,CAAC,AAAzD,CAAqC,qCAAiB,GAAG;AAA5C,0CAAe;AAE5B,+BAAsC,OAAqB;IACzD,IAAM,GAAG,GAAG,IAAI,eAAe,EAAE,CAAA;IACjC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,sDAIC"}
\ No newline at end of file
import { FaceRecognitionNet } from './FaceRecognitionNet';
export * from './FaceRecognitionNet';
export declare function createFaceRecognitionNet(weights: Float32Array): FaceRecognitionNet;
export declare function faceRecognitionNet(weights: Float32Array): FaceRecognitionNet;
......@@ -9,9 +9,4 @@ function createFaceRecognitionNet(weights) {
return net;
}
exports.createFaceRecognitionNet = createFaceRecognitionNet;
function faceRecognitionNet(weights) {
console.warn('faceRecognitionNet(weights: Float32Array) will be deprecated in future, use createFaceRecognitionNet instead');
return createFaceRecognitionNet(weights);
}
exports.faceRecognitionNet = faceRecognitionNet;
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/index.ts"],"names":[],"mappings":";;;AAAA,2DAA0D;AAE1D,+DAAqC;AAErC,kCAAyC,OAAqB;IAC5D,IAAM,GAAG,GAAG,IAAI,uCAAkB,EAAE,CAAA;IACpC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,4DAIC;AAED,4BAAmC,OAAqB;IACtD,OAAO,CAAC,IAAI,CAAC,8GAA8G,CAAC,CAAA;IAC5H,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAA;AAC1C,CAAC;AAHD,gDAGC"}
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/index.ts"],"names":[],"mappings":";;;AAAA,2DAA0D;AAE1D,+DAAqC;AAErC,kCAAyC,OAAqB;IAC5D,IAAM,GAAG,GAAG,IAAI,uCAAkB,EAAE,CAAA;IACpC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,4DAIC"}
\ No newline at end of file
export declare class ComposableTask<T> {
then(onfulfilled: (value: T) => T | PromiseLike<T>): Promise<T>;
run(): Promise<T>;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var ComposableTask = /** @class */ (function () {
function ComposableTask() {
}
ComposableTask.prototype.then = function (onfulfilled) {
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 = onfulfilled;
return [4 /*yield*/, this.run()];
case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];
}
});
});
};
ComposableTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
throw new Error('ComposableTask - run is not implemented');
});
});
};
return ComposableTask;
}());
exports.ComposableTask = ComposableTask;
//# sourceMappingURL=ComposableTask.js.map
\ No newline at end of file
{"version":3,"file":"ComposableTask.js","sourceRoot":"","sources":["../../../src/globalApi/ComposableTask.ts"],"names":[],"mappings":";;;AAAA;IAAA;IAWA,CAAC;IATc,6BAAI,GAAjB,UACE,WAA6C;;;;;;wBAEtC,KAAA,WAAW,CAAA;wBAAC,qBAAM,IAAI,CAAC,GAAG,EAAE,EAAA;4BAAnC,sBAAO,kBAAY,SAAgB,EAAC,EAAA;;;;KACrC;IAEY,4BAAG,GAAhB;;;gBACE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;;;KAC3D;IACH,qBAAC;AAAD,CAAC,AAXD,IAWC;AAXY,wCAAc"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { FaceDetectionWithLandmarks } from '../classes/FaceDetectionWithLandmarks';
import { FullFaceDescription } from '../classes/FullFaceDescription';
import { ComposableTask } from './ComposableTask';
export declare class ComputeFaceDescriptorsTaskBase<TReturn, DetectFaceLandmarksReturnType> extends ComposableTask<TReturn> {
protected detectFaceLandmarksTask: ComposableTask<DetectFaceLandmarksReturnType> | Promise<DetectFaceLandmarksReturnType>;
protected input: TNetInput;
constructor(detectFaceLandmarksTask: ComposableTask<DetectFaceLandmarksReturnType> | Promise<DetectFaceLandmarksReturnType>, input: TNetInput);
}
export declare class ComputeAllFaceDescriptorsTask extends ComputeFaceDescriptorsTaskBase<FullFaceDescription[], FaceDetectionWithLandmarks[]> {
run(): Promise<FullFaceDescription[]>;
}
export declare class ComputeSingleFaceDescriptorTask extends ComputeFaceDescriptorsTaskBase<FullFaceDescription | undefined, FaceDetectionWithLandmarks | undefined> {
run(): Promise<FullFaceDescription | undefined>;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var FullFaceDescription_1 = require("../classes/FullFaceDescription");
var dom_1 = require("../dom");
var ComposableTask_1 = require("./ComposableTask");
var nets_1 = require("./nets");
var ComputeFaceDescriptorsTaskBase = /** @class */ (function (_super) {
tslib_1.__extends(ComputeFaceDescriptorsTaskBase, _super);
function ComputeFaceDescriptorsTaskBase(detectFaceLandmarksTask, input) {
var _this = _super.call(this) || this;
_this.detectFaceLandmarksTask = detectFaceLandmarksTask;
_this.input = input;
return _this;
}
return ComputeFaceDescriptorsTaskBase;
}(ComposableTask_1.ComposableTask));
exports.ComputeFaceDescriptorsTaskBase = ComputeFaceDescriptorsTaskBase;
var ComputeAllFaceDescriptorsTask = /** @class */ (function (_super) {
tslib_1.__extends(ComputeAllFaceDescriptorsTask, _super);
function ComputeAllFaceDescriptorsTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
ComputeAllFaceDescriptorsTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _this = this;
var facesWithLandmarks, alignedFaceCanvases;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.detectFaceLandmarksTask];
case 1:
facesWithLandmarks = _a.sent();
return [4 /*yield*/, dom_1.extractFaces(this.input, facesWithLandmarks.map(function (_a) {
var landmarks = _a.landmarks;
return landmarks.align();
}))];
case 2:
alignedFaceCanvases = _a.sent();
return [4 /*yield*/, Promise.all(facesWithLandmarks.map(function (_a, i) {
var detection = _a.detection, landmarks = _a.landmarks;
return tslib_1.__awaiter(_this, void 0, void 0, function () {
var descriptor;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0: return [4 /*yield*/, nets_1.nets.faceRecognitionNet.computeFaceDescriptor(alignedFaceCanvases[i])];
case 1:
descriptor = _b.sent();
return [2 /*return*/, new FullFaceDescription_1.FullFaceDescription(detection, landmarks, descriptor)];
}
});
});
}))];
case 3: return [2 /*return*/, _a.sent()];
}
});
});
};
return ComputeAllFaceDescriptorsTask;
}(ComputeFaceDescriptorsTaskBase));
exports.ComputeAllFaceDescriptorsTask = ComputeAllFaceDescriptorsTask;
var ComputeSingleFaceDescriptorTask = /** @class */ (function (_super) {
tslib_1.__extends(ComputeSingleFaceDescriptorTask, _super);
function ComputeSingleFaceDescriptorTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
ComputeSingleFaceDescriptorTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var detectionWithLandmarks, detection, landmarks, alignedRect, alignedFaceCanvas, descriptor;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.detectFaceLandmarksTask];
case 1:
detectionWithLandmarks = _a.sent();
if (!detectionWithLandmarks) {
return [2 /*return*/];
}
detection = detectionWithLandmarks.detection, landmarks = detectionWithLandmarks.landmarks, alignedRect = detectionWithLandmarks.alignedRect;
return [4 /*yield*/, dom_1.extractFaces(this.input, [alignedRect])];
case 2:
alignedFaceCanvas = (_a.sent())[0];
return [4 /*yield*/, nets_1.nets.faceRecognitionNet.computeFaceDescriptor(alignedFaceCanvas)];
case 3:
descriptor = _a.sent();
return [2 /*return*/, new FullFaceDescription_1.FullFaceDescription(detection, landmarks, descriptor)];
}
});
});
};
return ComputeSingleFaceDescriptorTask;
}(ComputeFaceDescriptorsTaskBase));
exports.ComputeSingleFaceDescriptorTask = ComputeSingleFaceDescriptorTask;
//# sourceMappingURL=ComputeFaceDescriptorsTasks.js.map
\ No newline at end of file
{"version":3,"file":"ComputeFaceDescriptorsTasks.js","sourceRoot":"","sources":["../../../src/globalApi/ComputeFaceDescriptorsTasks.ts"],"names":[],"mappings":";;;AAGA,sEAAqE;AACrE,8BAAsC;AACtC,mDAAkD;AAClD,+BAA8B;AAE9B;IAA4F,0DAAuB;IACjH,wCACY,uBAA+G,EAC/G,KAAgB;QAF5B,YAIE,iBAAO,SACR;QAJW,6BAAuB,GAAvB,uBAAuB,CAAwF;QAC/G,WAAK,GAAL,KAAK,CAAW;;IAG5B,CAAC;IACH,qCAAC;AAAD,CAAC,AAPD,CAA4F,+BAAc,GAOzG;AAPY,wEAA8B;AAS3C;IAAmD,yDAAmF;IAAtI;;IAeA,CAAC;IAbc,2CAAG,GAAhB;;;;;;4BAE6B,qBAAM,IAAI,CAAC,uBAAuB,EAAA;;wBAAvD,kBAAkB,GAAG,SAAkC;wBACjC,qBAAM,kBAAY,CAC5C,IAAI,CAAC,KAAK,EACV,kBAAkB,CAAC,GAAG,CAAC,UAAC,EAAa;oCAAX,wBAAS;gCAAO,OAAA,SAAS,CAAC,KAAK,EAAE;4BAAjB,CAAiB,CAAC,CAC7D,EAAA;;wBAHK,mBAAmB,GAAG,SAG3B;wBAEM,qBAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAO,EAAwB,EAAE,CAAC;oCAAzB,wBAAS,EAAE,wBAAS;;;;;oDACxD,qBAAM,WAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAA;;gDAAxF,UAAU,GAAG,SAA2F;gDAC9G,sBAAO,IAAI,yCAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAA;;;;6BACjE,CAAC,CAAC,EAAA;4BAHH,sBAAO,SAGJ,EAAA;;;;KACJ;IACH,oCAAC;AAAD,CAAC,AAfD,CAAmD,8BAA8B,GAehF;AAfY,sEAA6B;AAiB1C;IAAqD,2DAAuG;IAA5J;;IAeA,CAAC;IAbc,6CAAG,GAAhB;;;;;4BAEiC,qBAAM,IAAI,CAAC,uBAAuB,EAAA;;wBAA3D,sBAAsB,GAAG,SAAkC;wBACjE,IAAI,CAAC,sBAAsB,EAAE;4BAC3B,sBAAM;yBACP;wBAEO,SAAS,GAA6B,sBAAsB,UAAnD,EAAE,SAAS,GAAkB,sBAAsB,UAAxC,EAAE,WAAW,GAAK,sBAAsB,YAA3B,CAA2B;wBACzC,qBAAM,kBAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,EAAA;;wBAAlE,iBAAiB,GAAG,CAAC,SAA6C,CAAC,CAAC,CAAC,CAAC;wBACzD,qBAAM,WAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,EAAA;;wBAAnF,UAAU,GAAG,SAAsF;wBAEzG,sBAAO,IAAI,yCAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAA;;;;KACjE;IACH,sCAAC;AAAD,CAAC,AAfD,CAAqD,8BAA8B,GAelF;AAfY,0EAA+B"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { FaceDetection } from '../classes/FaceDetection';
import { FaceDetectionWithLandmarks } from '../classes/FaceDetectionWithLandmarks';
import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';
import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';
import { ComposableTask } from './ComposableTask';
import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';
export declare class DetectFaceLandmarksTaskBase<ReturnType, DetectFacesReturnType> extends ComposableTask<ReturnType> {
protected detectFacesTask: ComposableTask<DetectFacesReturnType> | Promise<DetectFacesReturnType>;
protected input: TNetInput;
protected useTinyLandmarkNet: boolean;
constructor(detectFacesTask: ComposableTask<DetectFacesReturnType> | Promise<DetectFacesReturnType>, input: TNetInput, useTinyLandmarkNet: boolean);
protected readonly landmarkNet: FaceLandmark68Net | FaceLandmark68TinyNet;
}
export declare class DetectAllFaceLandmarksTask extends DetectFaceLandmarksTaskBase<FaceDetectionWithLandmarks[], FaceDetection[]> {
run(): Promise<FaceDetectionWithLandmarks[]>;
withFaceDescriptors(): ComputeAllFaceDescriptorsTask;
}
export declare class DetectSingleFaceLandmarksTask extends DetectFaceLandmarksTaskBase<FaceDetectionWithLandmarks | undefined, FaceDetection | undefined> {
run(): Promise<FaceDetectionWithLandmarks | undefined>;
withFaceDescriptor(): ComputeSingleFaceDescriptorTask;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var FaceDetectionWithLandmarks_1 = require("../classes/FaceDetectionWithLandmarks");
var dom_1 = require("../dom");
var ComposableTask_1 = require("./ComposableTask");
var ComputeFaceDescriptorsTasks_1 = require("./ComputeFaceDescriptorsTasks");
var nets_1 = require("./nets");
var DetectFaceLandmarksTaskBase = /** @class */ (function (_super) {
tslib_1.__extends(DetectFaceLandmarksTaskBase, _super);
function DetectFaceLandmarksTaskBase(detectFacesTask, input, useTinyLandmarkNet) {
var _this = _super.call(this) || this;
_this.detectFacesTask = detectFacesTask;
_this.input = input;
_this.useTinyLandmarkNet = useTinyLandmarkNet;
return _this;
}
Object.defineProperty(DetectFaceLandmarksTaskBase.prototype, "landmarkNet", {
get: function () {
return this.useTinyLandmarkNet
? nets_1.nets.faceLandmark68TinyNet
: nets_1.nets.faceLandmark68Net;
},
enumerable: true,
configurable: true
});
return DetectFaceLandmarksTaskBase;
}(ComposableTask_1.ComposableTask));
exports.DetectFaceLandmarksTaskBase = DetectFaceLandmarksTaskBase;
var DetectAllFaceLandmarksTask = /** @class */ (function (_super) {
tslib_1.__extends(DetectAllFaceLandmarksTask, _super);
function DetectAllFaceLandmarksTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
DetectAllFaceLandmarksTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _this = this;
var detections, faceCanvases, faceLandmarksByFace;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.detectFacesTask];
case 1:
detections = _a.sent();
return [4 /*yield*/, dom_1.extractFaces(this.input, detections)];
case 2:
faceCanvases = _a.sent();
return [4 /*yield*/, Promise.all(faceCanvases.map(function (canvas) { return _this.landmarkNet.detectLandmarks(canvas); }))];
case 3:
faceLandmarksByFace = _a.sent();
return [2 /*return*/, detections.map(function (detection, i) {
return new FaceDetectionWithLandmarks_1.FaceDetectionWithLandmarks(detection, faceLandmarksByFace[i]);
})];
}
});
});
};
DetectAllFaceLandmarksTask.prototype.withFaceDescriptors = function () {
return new ComputeFaceDescriptorsTasks_1.ComputeAllFaceDescriptorsTask(this, this.input);
};
return DetectAllFaceLandmarksTask;
}(DetectFaceLandmarksTaskBase));
exports.DetectAllFaceLandmarksTask = DetectAllFaceLandmarksTask;
var DetectSingleFaceLandmarksTask = /** @class */ (function (_super) {
tslib_1.__extends(DetectSingleFaceLandmarksTask, _super);
function DetectSingleFaceLandmarksTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
DetectSingleFaceLandmarksTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var detection, faceCanvas, _a, _b;
return tslib_1.__generator(this, function (_c) {
switch (_c.label) {
case 0: return [4 /*yield*/, this.detectFacesTask];
case 1:
detection = _c.sent();
if (!detection) {
return [2 /*return*/];
}
return [4 /*yield*/, dom_1.extractFaces(this.input, [detection])];
case 2:
faceCanvas = (_c.sent())[0];
_a = FaceDetectionWithLandmarks_1.FaceDetectionWithLandmarks.bind;
_b = [void 0, detection];
return [4 /*yield*/, this.landmarkNet.detectLandmarks(faceCanvas)];
case 3: return [2 /*return*/, new (_a.apply(FaceDetectionWithLandmarks_1.FaceDetectionWithLandmarks, _b.concat([_c.sent()])))()];
}
});
});
};
DetectSingleFaceLandmarksTask.prototype.withFaceDescriptor = function () {
return new ComputeFaceDescriptorsTasks_1.ComputeSingleFaceDescriptorTask(this, this.input);
};
return DetectSingleFaceLandmarksTask;
}(DetectFaceLandmarksTaskBase));
exports.DetectSingleFaceLandmarksTask = DetectSingleFaceLandmarksTask;
//# sourceMappingURL=DetectFaceLandmarksTasks.js.map
\ No newline at end of file
{"version":3,"file":"DetectFaceLandmarksTasks.js","sourceRoot":"","sources":["../../../src/globalApi/DetectFaceLandmarksTasks.ts"],"names":[],"mappings":";;;AAGA,oFAAmF;AAEnF,8BAAsC;AAGtC,mDAAkD;AAClD,6EAA+G;AAC/G,+BAA8B;AAE9B;IAAoF,uDAA0B;IAC5G,qCACY,eAAuF,EACvF,KAAgB,EAChB,kBAA2B;QAHvC,YAKE,iBAAO,SACR;QALW,qBAAe,GAAf,eAAe,CAAwE;QACvF,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,CAAoF,+BAAc,GAcjG;AAdY,kEAA2B;AAgBxC;IAAgD,sDAA0E;IAA1H;;IAmBA,CAAC;IAjBc,wCAAG,GAAhB;;;;;;4BAEqB,qBAAM,IAAI,CAAC,eAAe,EAAA;;wBAAvC,UAAU,GAAG,SAA0B;wBACxB,qBAAM,kBAAY,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAAA;;wBAAzD,YAAY,GAAG,SAA0C;wBAEnC,qBAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAC5D,UAAA,MAAM,IAAI,OAAA,KAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,EAAxC,CAAwC,CACnD,CAAC,EAAA;;wBAFI,mBAAmB,GAAG,SAEL;wBAEvB,sBAAO,UAAU,CAAC,GAAG,CAAC,UAAC,SAAS,EAAE,CAAC;gCACjC,OAAA,IAAI,uDAA0B,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;4BAAjE,CAAiE,CAClE,EAAA;;;;KACF;IAED,wDAAmB,GAAnB;QACE,OAAO,IAAI,2DAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5D,CAAC;IACH,iCAAC;AAAD,CAAC,AAnBD,CAAgD,2BAA2B,GAmB1E;AAnBY,gEAA0B;AAqBvC;IAAmD,yDAA8F;IAAjJ;;IAmBA,CAAC;IAjBc,2CAAG,GAAhB;;;;;4BAEoB,qBAAM,IAAI,CAAC,eAAe,EAAA;;wBAAtC,SAAS,GAAG,SAA0B;wBAC5C,IAAI,CAAC,SAAS,EAAE;4BACd,sBAAM;yBACP;wBAEmB,qBAAM,kBAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,EAAA;;wBAAzD,UAAU,GAAG,CAAC,SAA2C,CAAC,CAAC,CAAC,CAAC;6BACxD,uDAA0B;sCACnC,SAAS;wBACT,qBAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,EAAA;4BAFpD,sBAAO,cAAI,uDAA0B,aAEnC,SAAqE,MACtE,EAAA;;;;KACF;IAED,0DAAkB,GAAlB;QACE,OAAO,IAAI,6DAA+B,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9D,CAAC;IACH,oCAAC;AAAD,CAAC,AAnBD,CAAmD,2BAA2B,GAmB7E;AAnBY,sEAA6B"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { FaceDetection } from '../classes/FaceDetection';
import { ComposableTask } from './ComposableTask';
import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';
import { FaceDetectionOptions } from './types';
export declare function detectSingleFace(input: TNetInput, options?: FaceDetectionOptions): DetectSingleFaceTask;
export declare function detectAllFaces(input: TNetInput, options?: FaceDetectionOptions): DetectAllFacesTask;
export declare class DetectFacesTaskBase<TReturn> extends ComposableTask<TReturn> {
protected input: TNetInput;
protected options: FaceDetectionOptions;
constructor(input: TNetInput, options?: FaceDetectionOptions);
}
export declare class DetectAllFacesTask extends DetectFacesTaskBase<FaceDetection[]> {
run(): Promise<FaceDetection[]>;
withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectAllFaceLandmarksTask;
}
export declare class DetectSingleFaceTask extends DetectFacesTaskBase<FaceDetection | undefined> {
run(): Promise<FaceDetection | undefined>;
withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectSingleFaceLandmarksTask;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var tfjs_tiny_yolov2_1 = require("tfjs-tiny-yolov2");
var MtcnnOptions_1 = require("../mtcnn/MtcnnOptions");
var SsdMobilenetv1Options_1 = require("../ssdMobilenetv1/SsdMobilenetv1Options");
var TinyFaceDetectorOptions_1 = require("../tinyFaceDetector/TinyFaceDetectorOptions");
var ComposableTask_1 = require("./ComposableTask");
var DetectFaceLandmarksTasks_1 = require("./DetectFaceLandmarksTasks");
var nets_1 = require("./nets");
function detectSingleFace(input, options) {
if (options === void 0) { options = new SsdMobilenetv1Options_1.SsdMobilenetv1Options(); }
return new DetectSingleFaceTask(input, options);
}
exports.detectSingleFace = detectSingleFace;
function detectAllFaces(input, options) {
if (options === void 0) { options = new SsdMobilenetv1Options_1.SsdMobilenetv1Options(); }
return new DetectAllFacesTask(input, options);
}
exports.detectAllFaces = detectAllFaces;
var DetectFacesTaskBase = /** @class */ (function (_super) {
tslib_1.__extends(DetectFacesTaskBase, _super);
function DetectFacesTaskBase(input, options) {
if (options === void 0) { options = new SsdMobilenetv1Options_1.SsdMobilenetv1Options(); }
var _this = _super.call(this) || this;
_this.input = input;
_this.options = options;
return _this;
}
return DetectFacesTaskBase;
}(ComposableTask_1.ComposableTask));
exports.DetectFacesTaskBase = DetectFacesTaskBase;
var DetectAllFacesTask = /** @class */ (function (_super) {
tslib_1.__extends(DetectAllFacesTask, _super);
function DetectAllFacesTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
DetectAllFacesTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, input, options, faceDetectionFunction;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = this, input = _a.input, options = _a.options;
if (!(options instanceof MtcnnOptions_1.MtcnnOptions)) return [3 /*break*/, 2];
return [4 /*yield*/, nets_1.nets.mtcnn.forward(input, options)];
case 1: return [2 /*return*/, (_b.sent())
.map(function (result) { return result.faceDetection; })];
case 2:
faceDetectionFunction = options instanceof TinyFaceDetectorOptions_1.TinyFaceDetectorOptions
? function (input) { return nets_1.nets.tinyFaceDetector.locateFaces(input, options); }
: (options instanceof SsdMobilenetv1Options_1.SsdMobilenetv1Options
? function (input) { return nets_1.nets.ssdMobilenetv1.locateFaces(input, options); }
: (options instanceof tfjs_tiny_yolov2_1.TinyYolov2Options
? function (input) { return nets_1.nets.tinyYolov2.locateFaces(input, options); }
: null));
if (!faceDetectionFunction) {
throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options');
}
return [2 /*return*/, faceDetectionFunction(input)];
}
});
});
};
DetectAllFacesTask.prototype.withFaceLandmarks = function (useTinyLandmarkNet) {
if (useTinyLandmarkNet === void 0) { useTinyLandmarkNet = false; }
return new DetectFaceLandmarksTasks_1.DetectAllFaceLandmarksTask(this, this.input, useTinyLandmarkNet);
};
return DetectAllFacesTask;
}(DetectFacesTaskBase));
exports.DetectAllFacesTask = DetectAllFacesTask;
var DetectSingleFaceTask = /** @class */ (function (_super) {
tslib_1.__extends(DetectSingleFaceTask, _super);
function DetectSingleFaceTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
DetectSingleFaceTask.prototype.run = function () {
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*/, new DetectAllFacesTask(this.input, this.options)];
case 1: return [2 /*return*/, (_a.sent())
.sort(function (f1, f2) { return f1.score - f2.score; })[0]];
}
});
});
};
DetectSingleFaceTask.prototype.withFaceLandmarks = function (useTinyLandmarkNet) {
if (useTinyLandmarkNet === void 0) { useTinyLandmarkNet = false; }
return new DetectFaceLandmarksTasks_1.DetectSingleFaceLandmarksTask(this, this.input, useTinyLandmarkNet);
};
return DetectSingleFaceTask;
}(DetectFacesTaskBase));
exports.DetectSingleFaceTask = DetectSingleFaceTask;
//# sourceMappingURL=DetectFacesTasks.js.map
\ No newline at end of file
{"version":3,"file":"DetectFacesTasks.js","sourceRoot":"","sources":["../../../src/globalApi/DetectFacesTasks.ts"],"names":[],"mappings":";;;AACA,qDAAqD;AAGrD,sDAAqD;AACrD,iFAAgF;AAChF,uFAAsF;AACtF,mDAAkD;AAClD,uEAAuG;AACvG,+BAA8B;AAG9B,0BACE,KAAgB,EAChB,OAA2D;IAA3D,wBAAA,EAAA,cAAoC,6CAAqB,EAAE;IAE3D,OAAO,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AACjD,CAAC;AALD,4CAKC;AAED,wBACE,KAAgB,EAChB,OAA2D;IAA3D,wBAAA,EAAA,cAAoC,6CAAqB,EAAE;IAE3D,OAAO,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC;AALD,wCAKC;AAED;IAAkD,+CAAuB;IACvE,6BACY,KAAgB,EAChB,OAA2D;QAA3D,wBAAA,EAAA,cAAoC,6CAAqB,EAAE;QAFvE,YAIE,iBAAO,SACR;QAJW,WAAK,GAAL,KAAK,CAAW;QAChB,aAAO,GAAP,OAAO,CAAoD;;IAGvE,CAAC;IACH,0BAAC;AAAD,CAAC,AAPD,CAAkD,+BAAc,GAO/D;AAPY,kDAAmB;AAShC;IAAwC,8CAAoC;IAA5E;;IAkCA,CAAC;IAhCc,gCAAG,GAAhB;;;;;;wBAEQ,KAAqB,IAAI,EAAvB,KAAK,WAAA,EAAE,OAAO,aAAA,CAAS;6BAE3B,CAAA,OAAO,YAAY,2BAAY,CAAA,EAA/B,wBAA+B;wBACzB,qBAAM,WAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAA;4BAAhD,sBAAO,CAAC,SAAwC,CAAC;6BAC9C,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,aAAa,EAApB,CAAoB,CAAC,EAAA;;wBAGlC,qBAAqB,GAAG,OAAO,YAAY,iDAAuB;4BACtE,CAAC,CAAC,UAAC,KAAgB,IAAK,OAAA,WAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAAjD,CAAiD;4BACzE,CAAC,CAAC,CACA,OAAO,YAAY,6CAAqB;gCACtC,CAAC,CAAC,UAAC,KAAgB,IAAK,OAAA,WAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAA/C,CAA+C;gCACvE,CAAC,CAAC,CACA,OAAO,YAAY,oCAAiB;oCAClC,CAAC,CAAC,UAAC,KAAgB,IAAK,OAAA,WAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAA3C,CAA2C;oCACnE,CAAC,CAAC,IAAI,CACT,CACJ,CAAA;wBAEH,IAAI,CAAC,qBAAqB,EAAE;4BAC1B,MAAM,IAAI,KAAK,CAAC,qIAAqI,CAAC,CAAA;yBACvJ;wBAED,sBAAO,qBAAqB,CAAC,KAAK,CAAC,EAAA;;;;KACpC;IAED,8CAAiB,GAAjB,UAAkB,kBAAmC;QAAnC,mCAAA,EAAA,0BAAmC;QACnD,OAAO,IAAI,qDAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;IAC7E,CAAC;IAEH,yBAAC;AAAD,CAAC,AAlCD,CAAwC,mBAAmB,GAkC1D;AAlCY,gDAAkB;AAoC/B;IAA0C,gDAA8C;IAAxF;;IAWA,CAAC;IATc,kCAAG,GAAhB;;;;4BACU,qBAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAA;4BAA9D,sBAAO,CAAC,SAAsD,CAAC;6BAC5D,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,OAAA,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,EAAnB,CAAmB,CAAC,CAAC,CAAC,CAAC,EAAA;;;;KAC5C;IAED,gDAAiB,GAAjB,UAAkB,kBAAmC;QAAnC,mCAAA,EAAA,0BAAmC;QACnD,OAAO,IAAI,wDAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;IAChF,CAAC;IAEH,2BAAC;AAAD,CAAC,AAXD,CAA0C,mBAAmB,GAW5D;AAXY,oDAAoB"}
\ No newline at end of file
import { FaceMatch } from '../classes/FaceMatch';
import { FullFaceDescription } from '../classes/FullFaceDescription';
import { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';
export declare class FaceMatcher {
private _labeledDescriptors;
private _distanceThreshold;
constructor(inputs: LabeledFaceDescriptors | FullFaceDescription | Float32Array | Array<LabeledFaceDescriptors | FullFaceDescription | Float32Array>, distanceThreshold?: number);
readonly labeledDescriptors: LabeledFaceDescriptors[];
readonly distanceThreshold: number;
computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number;
matchDescriptor(queryDescriptor: Float32Array): FaceMatch;
findBestMatch(queryDescriptor: Float32Array): FaceMatch;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var FaceMatch_1 = require("../classes/FaceMatch");
var FullFaceDescription_1 = require("../classes/FullFaceDescription");
var LabeledFaceDescriptors_1 = require("../classes/LabeledFaceDescriptors");
var euclideanDistance_1 = require("../euclideanDistance");
var FaceMatcher = /** @class */ (function () {
function FaceMatcher(inputs, distanceThreshold) {
if (distanceThreshold === void 0) { distanceThreshold = 0.6; }
this._distanceThreshold = distanceThreshold;
var inputArray = Array.isArray(inputs) ? inputs : [inputs];
if (!inputArray.length) {
throw new Error("FaceRecognizer.constructor - expected atleast one input");
}
var count = 1;
var createUniqueLabel = function () { return "person " + count++; };
this._labeledDescriptors = inputArray.map(function (desc) {
if (desc instanceof LabeledFaceDescriptors_1.LabeledFaceDescriptors) {
return desc;
}
if (desc instanceof FullFaceDescription_1.FullFaceDescription) {
return new LabeledFaceDescriptors_1.LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]);
}
if (desc instanceof Float32Array) {
return new LabeledFaceDescriptors_1.LabeledFaceDescriptors(createUniqueLabel(), [desc]);
}
throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | FullFaceDescription | Float32Array | Array<LabeledFaceDescriptors | FullFaceDescription | Float32Array>");
});
}
Object.defineProperty(FaceMatcher.prototype, "labeledDescriptors", {
get: function () { return this._labeledDescriptors; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceMatcher.prototype, "distanceThreshold", {
get: function () { return this._distanceThreshold; },
enumerable: true,
configurable: true
});
FaceMatcher.prototype.computeMeanDistance = function (queryDescriptor, descriptors) {
return descriptors
.map(function (d) { return euclideanDistance_1.euclideanDistance(d, queryDescriptor); })
.reduce(function (d1, d2) { return d1 + d2; }, 0)
/ (descriptors.length || 1);
};
FaceMatcher.prototype.matchDescriptor = function (queryDescriptor) {
var _this = this;
return this.labeledDescriptors
.map(function (_a) {
var descriptors = _a.descriptors, label = _a.label;
return new FaceMatch_1.FaceMatch(label, _this.computeMeanDistance(queryDescriptor, descriptors));
})
.reduce(function (best, curr) { return best.distance < curr.distance ? best : curr; });
};
FaceMatcher.prototype.findBestMatch = function (queryDescriptor) {
var bestMatch = this.matchDescriptor(queryDescriptor);
return bestMatch.distance < this.distanceThreshold
? bestMatch
: new FaceMatch_1.FaceMatch('unknown', bestMatch.distance);
};
return FaceMatcher;
}());
exports.FaceMatcher = FaceMatcher;
//# sourceMappingURL=FaceMatcher.js.map
\ No newline at end of file
{"version":3,"file":"FaceMatcher.js","sourceRoot":"","sources":["../../../src/globalApi/FaceMatcher.ts"],"names":[],"mappings":";;AAAA,kDAAiD;AACjD,sEAAqE;AACrE,4EAA2E;AAC3E,0DAAyD;AAEzD;IAKE,qBACE,MAAwI,EACxI,iBAA+B;QAA/B,kCAAA,EAAA,uBAA+B;QAG/B,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAA;QAE3C,IAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAE5D,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;SAC3E;QAED,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAM,iBAAiB,GAAG,cAAM,OAAA,YAAU,KAAK,EAAI,EAAnB,CAAmB,CAAA;QAEnD,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,GAAG,CAAC,UAAC,IAAI;YAC7C,IAAI,IAAI,YAAY,+CAAsB,EAAE;gBAC1C,OAAO,IAAI,CAAA;aACZ;YAED,IAAI,IAAI,YAAY,yCAAmB,EAAE;gBACvC,OAAO,IAAI,+CAAsB,CAAC,iBAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;aAC1E;YAED,IAAI,IAAI,YAAY,YAAY,EAAE;gBAChC,OAAO,IAAI,+CAAsB,CAAC,iBAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;aAC/D;YAED,MAAM,IAAI,KAAK,CAAC,6LAA6L,CAAC,CAAA;QAChN,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,sBAAW,2CAAkB;aAA7B,cAA4D,OAAO,IAAI,CAAC,mBAAmB,CAAA,CAAC,CAAC;;;OAAA;IAC7F,sBAAW,0CAAiB;aAA5B,cAAyC,OAAO,IAAI,CAAC,kBAAkB,CAAA,CAAC,CAAC;;;OAAA;IAElE,yCAAmB,GAA1B,UAA2B,eAA6B,EAAE,WAA2B;QACnF,OAAO,WAAW;aACf,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,qCAAiB,CAAC,CAAC,EAAE,eAAe,CAAC,EAArC,CAAqC,CAAC;aAC/C,MAAM,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,OAAA,EAAE,GAAG,EAAE,EAAP,CAAO,EAAE,CAAC,CAAC;cAC3B,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IACjC,CAAC;IAEM,qCAAe,GAAtB,UAAuB,eAA6B;QAApD,iBAOC;QANC,OAAO,IAAI,CAAC,kBAAkB;aAC3B,GAAG,CAAC,UAAC,EAAsB;gBAApB,4BAAW,EAAE,gBAAK;YAAO,OAAA,IAAI,qBAAS,CAC1C,KAAK,EACL,KAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,WAAW,CAAC,CACzD;QAHgC,CAGhC,CAAC;aACD,MAAM,CAAC,UAAC,IAAI,EAAE,IAAI,IAAK,OAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAA3C,CAA2C,CAAC,CAAA;IACxE,CAAC;IAEM,mCAAa,GAApB,UAAqB,eAA6B;QAChD,IAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;QACvD,OAAO,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB;YAChD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,qBAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC;IAEH,kBAAC;AAAD,CAAC,AAhED,IAgEC;AAhEY,kCAAW"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { ITinyYolov2Options } from 'tfjs-tiny-yolov2';
import { FullFaceDescription } from '../classes';
import { IMtcnnOptions } from '../mtcnn/MtcnnOptions';
export declare function allFacesSsdMobilenetv1(input: TNetInput, minConfidence?: number): Promise<FullFaceDescription[]>;
export declare function allFacesTinyYolov2(input: TNetInput, forwardParams?: ITinyYolov2Options): Promise<FullFaceDescription[]>;
export declare function allFacesMtcnn(input: TNetInput, forwardParams?: IMtcnnOptions): Promise<FullFaceDescription[]>;
export declare const allFaces: typeof allFacesSsdMobilenetv1;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var tfjs_tiny_yolov2_1 = require("tfjs-tiny-yolov2");
var MtcnnOptions_1 = require("../mtcnn/MtcnnOptions");
var ssdMobilenetv1_1 = require("../ssdMobilenetv1");
var DetectFacesTasks_1 = require("./DetectFacesTasks");
// export allFaces API for backward compatibility
function allFacesSsdMobilenetv1(input, minConfidence) {
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*/, DetectFacesTasks_1.detectAllFaces(input, new ssdMobilenetv1_1.SsdMobilenetv1Options(minConfidence ? { minConfidence: minConfidence } : {}))
.withFaceLandmarks()
.withFaceDescriptors()];
case 1: return [2 /*return*/, _a.sent()];
}
});
});
}
exports.allFacesSsdMobilenetv1 = allFacesSsdMobilenetv1;
function allFacesTinyYolov2(input, forwardParams) {
if (forwardParams === void 0) { forwardParams = {}; }
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*/, DetectFacesTasks_1.detectAllFaces(input, new tfjs_tiny_yolov2_1.TinyYolov2Options(forwardParams))
.withFaceLandmarks()
.withFaceDescriptors()];
case 1: return [2 /*return*/, _a.sent()];
}
});
});
}
exports.allFacesTinyYolov2 = allFacesTinyYolov2;
function allFacesMtcnn(input, forwardParams) {
if (forwardParams === void 0) { forwardParams = {}; }
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*/, DetectFacesTasks_1.detectAllFaces(input, new MtcnnOptions_1.MtcnnOptions(forwardParams))
.withFaceLandmarks()
.withFaceDescriptors()];
case 1: return [2 /*return*/, _a.sent()];
}
});
});
}
exports.allFacesMtcnn = allFacesMtcnn;
exports.allFaces = allFacesSsdMobilenetv1;
//# sourceMappingURL=allFaces.js.map
\ No newline at end of file
{"version":3,"file":"allFaces.js","sourceRoot":"","sources":["../../../src/globalApi/allFaces.ts"],"names":[],"mappings":";;;AACA,qDAAyE;AAGzE,sDAAoE;AACpE,oDAA0D;AAC1D,uDAAoD;AAEpD,iDAAiD;AAEjD,gCACE,KAAgB,EAChB,aAAsB;;;;wBAEf,qBAAM,iCAAc,CAAC,KAAK,EAAE,IAAI,sCAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,eAAA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;yBAClG,iBAAiB,EAAE;yBACnB,mBAAmB,EAAE,EAAA;wBAFxB,sBAAO,SAEiB,EAAA;;;;CACzB;AAPD,wDAOC;AAED,4BACE,KAAgB,EAChB,aAAsC;IAAtC,8BAAA,EAAA,kBAAsC;;;;wBAE/B,qBAAM,iCAAc,CAAC,KAAK,EAAE,IAAI,oCAAiB,CAAC,aAAa,CAAC,CAAC;yBACrE,iBAAiB,EAAE;yBACnB,mBAAmB,EAAE,EAAA;wBAFxB,sBAAO,SAEiB,EAAA;;;;CACzB;AAPD,gDAOC;AAED,uBACE,KAAgB,EAChB,aAAiC;IAAjC,8BAAA,EAAA,kBAAiC;;;;wBAE1B,qBAAM,iCAAc,CAAC,KAAK,EAAE,IAAI,2BAAY,CAAC,aAAa,CAAC,CAAC;yBAChE,iBAAiB,EAAE;yBACnB,mBAAmB,EAAE,EAAA;wBAFxB,sBAAO,SAEiB,EAAA;;;;CACzB;AAPD,sCAOC;AAEY,QAAA,QAAQ,GAAG,sBAAsB,CAAA"}
\ No newline at end of file
export * from './allFaces';
export * from './ComposableTask';
export * from './ComputeFaceDescriptorsTasks';
export * from './DetectFacesTasks';
export * from './DetectFaceLandmarksTasks';
export * from './FaceMatcher';
export * from './nets';
export * from './types';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
tslib_1.__exportStar(require("./allFaces"), exports);
tslib_1.__exportStar(require("./ComposableTask"), exports);
tslib_1.__exportStar(require("./ComputeFaceDescriptorsTasks"), exports);
tslib_1.__exportStar(require("./DetectFacesTasks"), exports);
tslib_1.__exportStar(require("./DetectFaceLandmarksTasks"), exports);
tslib_1.__exportStar(require("./FaceMatcher"), exports);
tslib_1.__exportStar(require("./nets"), exports);
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/globalApi/index.ts"],"names":[],"mappings":";;;AAAA,qDAA0B;AAC1B,2DAAgC;AAChC,wEAA6C;AAC7C,6DAAkC;AAClC,qEAA0C;AAC1C,wDAA6B;AAC7B,iDAAsB"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { ITinyYolov2Options } from 'tfjs-tiny-yolov2';
import { FaceDetection } from '../classes/FaceDetection';
import { FaceDetectionWithLandmarks } from '../classes/FaceDetectionWithLandmarks';
import { FaceLandmarks5 } from '../classes/FaceLandmarks5';
import { FaceLandmarks68 } from '../classes/FaceLandmarks68';
import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';
import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';
import { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';
import { Mtcnn } from '../mtcnn/Mtcnn';
import { MtcnnOptions } from '../mtcnn/MtcnnOptions';
import { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';
import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';
import { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';
import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';
import { TinyYolov2 } from '../tinyYolov2/TinyYolov2';
export declare const nets: {
ssdMobilenetv1: SsdMobilenetv1;
tinyFaceDetector: TinyFaceDetector;
tinyYolov2: TinyYolov2;
mtcnn: Mtcnn;
faceLandmark68Net: FaceLandmark68Net;
faceLandmark68TinyNet: FaceLandmark68TinyNet;
faceRecognitionNet: FaceRecognitionNet;
};
/**
* Attempts to detect all faces in an image using SSD Mobilenetv1 Network.
*
* @param input The input image.
* @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).
* @returns Bounding box of each face with score.
*/
export declare const ssdMobilenetv1: (input: TNetInput, options: SsdMobilenetv1Options) => Promise<FaceDetection[]>;
/**
* Attempts to detect all faces in an image using the Tiny Face Detector.
*
* @param input The input image.
* @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).
* @returns Bounding box of each face with score.
*/
export declare const tinyFaceDetector: (input: TNetInput, options: TinyFaceDetectorOptions) => Promise<FaceDetection[]>;
/**
* Attempts to detect all faces in an image using the Tiny Yolov2 Network.
*
* @param input The input image.
* @param options (optional, default: see TinyYolov2Options constructor for default parameters).
* @returns Bounding box of each face with score.
*/
export declare const tinyYolov2: (input: TNetInput, options: ITinyYolov2Options) => Promise<FaceDetection[]>;
/**
* Attempts to detect all faces in an image and the 5 point face landmarks
* of each detected face using the MTCNN Network.
*
* @param input The input image.
* @param options (optional, default: see MtcnnOptions constructor for default parameters).
* @returns Bounding box of each face with score and 5 point face landmarks.
*/
export declare const mtcnn: (input: TNetInput, options: MtcnnOptions) => Promise<FaceDetectionWithLandmarks<FaceLandmarks5>[]>;
/**
* Detects the 68 point face landmark positions of the face shown in an image.
*
* @param inputs The face image extracted from the bounding box of a face. Can
* also be an array of input images, which will be batch processed.
* @returns 68 point face landmarks or array thereof in case of batch input.
*/
export declare const detectFaceLandmarks: (input: TNetInput) => Promise<FaceLandmarks68 | FaceLandmarks68[]>;
/**
* Detects the 68 point face landmark positions of the face shown in an image
* using a tinier version of the 68 point face landmark model, which is slightly
* faster at inference, but also slightly less accurate.
*
* @param inputs The face image extracted from the bounding box of a face. Can
* also be an array of input images, which will be batch processed.
* @returns 68 point face landmarks or array thereof in case of batch input.
*/
export declare const detectFaceLandmarksTiny: (input: TNetInput) => Promise<FaceLandmarks68 | FaceLandmarks68[]>;
/**
* Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,
* which uniquely represents the features of that persons face. The computed face descriptor can
* be used to measure the similarity between faces, by computing the euclidean distance of two
* face descriptors.
*
* @param inputs The face image extracted from the aligned bounding box of a face. Can
* also be an array of input images, which will be batch processed.
* @returns Face descriptor with 128 entries or array thereof in case of batch input.
*/
export declare const computeFaceDescriptor: (input: TNetInput) => Promise<Float32Array | Float32Array[]>;
export declare const loadSsdMobilenetv1Model: (url: string) => Promise<void>;
export declare const loadTinyFaceDetectorModel: (url: string) => Promise<void>;
export declare const loadMtcnnModel: (url: string) => Promise<void>;
export declare const loadTinyYolov2Model: (url: string) => Promise<void>;
export declare const loadFaceLandmarkModel: (url: string) => Promise<void>;
export declare const loadFaceLandmarkTinyModel: (url: string) => Promise<void>;
export declare const loadFaceRecognitionModel: (url: string) => Promise<void>;
export declare const loadFaceDetectionModel: (url: string) => Promise<void>;
export declare const locateFaces: (input: TNetInput, options: SsdMobilenetv1Options) => Promise<FaceDetection[]>;
export declare const detectLandmarks: (input: TNetInput) => Promise<FaceLandmarks68 | FaceLandmarks68[]>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var FaceLandmark68Net_1 = require("../faceLandmarkNet/FaceLandmark68Net");
var FaceLandmark68TinyNet_1 = require("../faceLandmarkNet/FaceLandmark68TinyNet");
var FaceRecognitionNet_1 = require("../faceRecognitionNet/FaceRecognitionNet");
var Mtcnn_1 = require("../mtcnn/Mtcnn");
var SsdMobilenetv1_1 = require("../ssdMobilenetv1/SsdMobilenetv1");
var TinyFaceDetector_1 = require("../tinyFaceDetector/TinyFaceDetector");
var TinyYolov2_1 = require("../tinyYolov2/TinyYolov2");
exports.nets = {
ssdMobilenetv1: new SsdMobilenetv1_1.SsdMobilenetv1(),
tinyFaceDetector: new TinyFaceDetector_1.TinyFaceDetector(),
tinyYolov2: new TinyYolov2_1.TinyYolov2(),
mtcnn: new Mtcnn_1.Mtcnn(),
faceLandmark68Net: new FaceLandmark68Net_1.FaceLandmark68Net(),
faceLandmark68TinyNet: new FaceLandmark68TinyNet_1.FaceLandmark68TinyNet(),
faceRecognitionNet: new FaceRecognitionNet_1.FaceRecognitionNet()
};
/**
* Attempts to detect all faces in an image using SSD Mobilenetv1 Network.
*
* @param input The input image.
* @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).
* @returns Bounding box of each face with score.
*/
exports.ssdMobilenetv1 = function (input, options) {
return exports.nets.ssdMobilenetv1.locateFaces(input, options);
};
/**
* Attempts to detect all faces in an image using the Tiny Face Detector.
*
* @param input The input image.
* @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).
* @returns Bounding box of each face with score.
*/
exports.tinyFaceDetector = function (input, options) {
return exports.nets.tinyFaceDetector.locateFaces(input, options);
};
/**
* Attempts to detect all faces in an image using the Tiny Yolov2 Network.
*
* @param input The input image.
* @param options (optional, default: see TinyYolov2Options constructor for default parameters).
* @returns Bounding box of each face with score.
*/
exports.tinyYolov2 = function (input, options) {
return exports.nets.tinyYolov2.locateFaces(input, options);
};
/**
* Attempts to detect all faces in an image and the 5 point face landmarks
* of each detected face using the MTCNN Network.
*
* @param input The input image.
* @param options (optional, default: see MtcnnOptions constructor for default parameters).
* @returns Bounding box of each face with score and 5 point face landmarks.
*/
exports.mtcnn = function (input, options) {
return exports.nets.mtcnn.forward(input, options);
};
/**
* Detects the 68 point face landmark positions of the face shown in an image.
*
* @param inputs The face image extracted from the bounding box of a face. Can
* also be an array of input images, which will be batch processed.
* @returns 68 point face landmarks or array thereof in case of batch input.
*/
exports.detectFaceLandmarks = function (input) {
return exports.nets.faceLandmark68Net.detectLandmarks(input);
};
/**
* Detects the 68 point face landmark positions of the face shown in an image
* using a tinier version of the 68 point face landmark model, which is slightly
* faster at inference, but also slightly less accurate.
*
* @param inputs The face image extracted from the bounding box of a face. Can
* also be an array of input images, which will be batch processed.
* @returns 68 point face landmarks or array thereof in case of batch input.
*/
exports.detectFaceLandmarksTiny = function (input) {
return exports.nets.faceLandmark68TinyNet.detectLandmarks(input);
};
/**
* Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,
* which uniquely represents the features of that persons face. The computed face descriptor can
* be used to measure the similarity between faces, by computing the euclidean distance of two
* face descriptors.
*
* @param inputs The face image extracted from the aligned bounding box of a face. Can
* also be an array of input images, which will be batch processed.
* @returns Face descriptor with 128 entries or array thereof in case of batch input.
*/
exports.computeFaceDescriptor = function (input) {
return exports.nets.faceRecognitionNet.computeFaceDescriptor(input);
};
exports.loadSsdMobilenetv1Model = function (url) { return exports.nets.ssdMobilenetv1.load(url); };
exports.loadTinyFaceDetectorModel = function (url) { return exports.nets.tinyFaceDetector.load(url); };
exports.loadMtcnnModel = function (url) { return exports.nets.mtcnn.load(url); };
exports.loadTinyYolov2Model = function (url) { return exports.nets.tinyYolov2.load(url); };
exports.loadFaceLandmarkModel = function (url) { return exports.nets.faceLandmark68Net.load(url); };
exports.loadFaceLandmarkTinyModel = function (url) { return exports.nets.faceLandmark68TinyNet.load(url); };
exports.loadFaceRecognitionModel = function (url) { return exports.nets.faceRecognitionNet.load(url); };
// backward compatibility
exports.loadFaceDetectionModel = exports.loadSsdMobilenetv1Model;
exports.locateFaces = exports.ssdMobilenetv1;
exports.detectLandmarks = exports.detectFaceLandmarks;
//# sourceMappingURL=nets.js.map
\ No newline at end of file
{"version":3,"file":"nets.js","sourceRoot":"","sources":["../../../src/globalApi/nets.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { TinyYolov2Options } from 'tfjs-tiny-yolov2';
import { FaceDetection } from '../classes/FaceDetection';
import { MtcnnOptions } from '../mtcnn/MtcnnOptions';
import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';
import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';
export declare type FaceDetectionOptions = TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options;
export declare type FaceDetectionFunction = (input: TNetInput) => Promise<FaceDetection[]>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map
\ No newline at end of file
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/globalApi/types.ts"],"names":[],"mappings":""}
\ No newline at end of file
......@@ -4,9 +4,10 @@ export * from 'tfjs-image-recognition-base';
export * from './classes';
export * from './dom';
export * from './euclideanDistance';
export * from './faceDetectionNet';
export * from './faceLandmarkNet';
export * from './faceRecognitionNet';
export * from './globalApi';
export * from './mtcnn';
export * from './ssdMobilenetv1';
export * from './tinyFaceDetector';
export * from './tinyYolov2';
......@@ -7,10 +7,11 @@ tslib_1.__exportStar(require("tfjs-image-recognition-base"), exports);
tslib_1.__exportStar(require("./classes"), exports);
tslib_1.__exportStar(require("./dom"), exports);
tslib_1.__exportStar(require("./euclideanDistance"), exports);
tslib_1.__exportStar(require("./faceDetectionNet"), exports);
tslib_1.__exportStar(require("./faceLandmarkNet"), exports);
tslib_1.__exportStar(require("./faceRecognitionNet"), exports);
tslib_1.__exportStar(require("./globalApi"), exports);
tslib_1.__exportStar(require("./mtcnn"), exports);
tslib_1.__exportStar(require("./ssdMobilenetv1"), exports);
tslib_1.__exportStar(require("./tinyFaceDetector"), exports);
tslib_1.__exportStar(require("./tinyYolov2"), exports);
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAG1C,gBAAE;AAGJ,sEAA4C;AAE5C,oDAA0B;AAE1B,gDAAqB;AACrB,8DAAoC;AACpC,6DAAmC;AACnC,4DAAkC;AAClC,+DAAqC;AACrC,sDAA4B;AAC5B,kDAAwB;AACxB,uDAA6B"}
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAG1C,gBAAE;AAGJ,sEAA4C;AAE5C,oDAA0B;AAE1B,gDAAqB;AACrB,8DAAoC;AACpC,4DAAkC;AAClC,+DAAqC;AACrC,sDAA4B;AAC5B,kDAAwB;AACxB,2DAAiC;AACjC,6DAAmC;AACnC,uDAA6B"}
\ No newline at end of file
import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base';
import { MtcnnForwardParams, MtcnnResult, NetParams } from './types';
import { FaceDetectionWithLandmarks } from '../classes/FaceDetectionWithLandmarks';
import { FaceLandmarks5 } from '../classes/FaceLandmarks5';
import { IMtcnnOptions } from './MtcnnOptions';
import { NetParams } from './types';
export declare class Mtcnn extends NeuralNetwork<NetParams> {
constructor();
forwardInput(input: NetInput, forwardParams?: MtcnnForwardParams): Promise<{
results: MtcnnResult[];
forwardInput(input: NetInput, forwardParams?: IMtcnnOptions): Promise<{
results: FaceDetectionWithLandmarks<FaceLandmarks5>[];
stats: any;
}>;
forward(input: TNetInput, forwardParams?: MtcnnForwardParams): Promise<MtcnnResult[]>;
forwardWithStats(input: TNetInput, forwardParams?: MtcnnForwardParams): Promise<{
results: MtcnnResult[];
forward(input: TNetInput, forwardParams?: IMtcnnOptions): Promise<FaceDetectionWithLandmarks<FaceLandmarks5>[]>;
forwardWithStats(input: TNetInput, forwardParams?: IMtcnnOptions): Promise<{
results: FaceDetectionWithLandmarks<FaceLandmarks5>[];
stats: any;
}>;
protected loadQuantizedParams(uri: string | undefined): Promise<{
......
......@@ -4,13 +4,14 @@ var tslib_1 = require("tslib");
var tf = require("@tensorflow/tfjs-core");
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
var FaceDetection_1 = require("../classes/FaceDetection");
var FaceDetectionWithLandmarks_1 = require("../classes/FaceDetectionWithLandmarks");
var FaceLandmarks5_1 = require("../classes/FaceLandmarks5");
var bgrToRgbTensor_1 = require("./bgrToRgbTensor");
var config_1 = require("./config");
var extractParams_1 = require("./extractParams");
var getDefaultMtcnnForwardParams_1 = require("./getDefaultMtcnnForwardParams");
var getSizesForScale_1 = require("./getSizesForScale");
var loadQuantizedParams_1 = require("./loadQuantizedParams");
var MtcnnOptions_1 = require("./MtcnnOptions");
var pyramidDown_1 = require("./pyramidDown");
var stage1_1 = require("./stage1");
var stage2_1 = require("./stage2");
......@@ -47,7 +48,7 @@ var Mtcnn = /** @class */ (function (_super) {
return results;
};
_a = imgTensor.shape.slice(1), height = _a[0], width = _a[1];
_b = Object.assign({}, getDefaultMtcnnForwardParams_1.getDefaultMtcnnForwardParams(), forwardParams), minFaceSize = _b.minFaceSize, scaleFactor = _b.scaleFactor, maxNumScales = _b.maxNumScales, scoreThresholds = _b.scoreThresholds, scaleSteps = _b.scaleSteps;
_b = new MtcnnOptions_1.MtcnnOptions(forwardParams), minFaceSize = _b.minFaceSize, scaleFactor = _b.scaleFactor, maxNumScales = _b.maxNumScales, scoreThresholds = _b.scoreThresholds, scaleSteps = _b.scaleSteps;
scales = (scaleSteps || pyramidDown_1.pyramidDown(minFaceSize, scaleFactor, [height, width]))
.filter(function (scale) {
var sizes = getSizesForScale_1.getSizesForScale(scale, [height, width]);
......@@ -81,13 +82,10 @@ var Mtcnn = /** @class */ (function (_super) {
case 3:
out3 = _c.sent();
stats.total_stage3 = Date.now() - ts;
results = out3.boxes.map(function (box, idx) { return ({
faceDetection: new FaceDetection_1.FaceDetection(out3.scores[idx], new tfjs_image_recognition_base_1.Rect(box.left / width, box.top / height, box.width / width, box.height / height), {
results = out3.boxes.map(function (box, idx) { return new FaceDetectionWithLandmarks_1.FaceDetectionWithLandmarks(new FaceDetection_1.FaceDetection(out3.scores[idx], new tfjs_image_recognition_base_1.Rect(box.left / width, box.top / height, box.width / width, box.height / height), {
height: height,
width: width
}),
faceLandmarks: new FaceLandmarks5_1.FaceLandmarks5(out3.points[idx].map(function (pt) { return pt.div(new tfjs_image_recognition_base_1.Point(width, height)); }), { width: width, height: height })
}); });
}), new FaceLandmarks5_1.FaceLandmarks5(out3.points[idx].map(function (pt) { return pt.sub(new tfjs_image_recognition_base_1.Point(box.left, box.top)).div(new tfjs_image_recognition_base_1.Point(box.width, box.height)); }), { width: box.width, height: box.height })); });
return [2 /*return*/, onReturn({ results: results, stats: stats })];
}
});
......
{"version":3,"file":"Mtcnn.js","sourceRoot":"","sources":["../../../src/mtcnn/Mtcnn.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"Mtcnn.js","sourceRoot":"","sources":["../../../src/mtcnn/Mtcnn.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
export interface IMtcnnOptions {
minFaceSize?: number;
scaleFactor?: number;
maxNumScales?: number;
scoreThresholds?: number[];
scaleSteps?: number[];
}
export declare class MtcnnOptions {
protected _name: string;
private _minFaceSize;
private _scaleFactor;
private _maxNumScales;
private _scoreThresholds;
private _scaleSteps;
constructor({minFaceSize, scaleFactor, maxNumScales, scoreThresholds, scaleSteps}?: IMtcnnOptions);
readonly minFaceSize: number;
readonly scaleFactor: number;
readonly maxNumScales: number;
readonly scoreThresholds: number[];
readonly scaleSteps: number[] | undefined;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var MtcnnOptions = /** @class */ (function () {
function MtcnnOptions(_a) {
var _b = _a === void 0 ? {} : _a, minFaceSize = _b.minFaceSize, scaleFactor = _b.scaleFactor, maxNumScales = _b.maxNumScales, scoreThresholds = _b.scoreThresholds, scaleSteps = _b.scaleSteps;
this._name = 'MtcnnOptions';
this._minFaceSize = minFaceSize || 20;
this._scaleFactor = scaleFactor || 0.709;
this._maxNumScales = maxNumScales || 10;
this._scoreThresholds = scoreThresholds || [0.6, 0.7, 0.7];
this._scaleSteps = scaleSteps;
if (typeof this._minFaceSize !== 'number' || this._minFaceSize < 0) {
throw new Error(this._name + " - expected minFaceSize to be a number > 0");
}
if (typeof this._scaleFactor !== 'number' || this._scaleFactor <= 0 || this._scaleFactor >= 1) {
throw new Error(this._name + " - expected scaleFactor to be a number between 0 and 1");
}
if (typeof this._maxNumScales !== 'number' || this._maxNumScales < 0) {
throw new Error(this._name + " - expected maxNumScales to be a number > 0");
}
if (!Array.isArray(this._scoreThresholds)
|| this._scoreThresholds.length !== 3
|| this._scoreThresholds.some(function (th) { return typeof th !== 'number'; })) {
throw new Error(this._name + " - expected scoreThresholds to be an array of numbers of length 3");
}
if (this._scaleSteps
&& (!Array.isArray(this._scaleSteps) || this._scaleSteps.some(function (th) { return typeof th !== 'number'; }))) {
throw new Error(this._name + " - expected scaleSteps to be an array of numbers");
}
}
Object.defineProperty(MtcnnOptions.prototype, "minFaceSize", {
get: function () { return this._minFaceSize; },
enumerable: true,
configurable: true
});
Object.defineProperty(MtcnnOptions.prototype, "scaleFactor", {
get: function () { return this._scaleFactor; },
enumerable: true,
configurable: true
});
Object.defineProperty(MtcnnOptions.prototype, "maxNumScales", {
get: function () { return this._maxNumScales; },
enumerable: true,
configurable: true
});
Object.defineProperty(MtcnnOptions.prototype, "scoreThresholds", {
get: function () { return this._scoreThresholds; },
enumerable: true,
configurable: true
});
Object.defineProperty(MtcnnOptions.prototype, "scaleSteps", {
get: function () { return this._scaleSteps; },
enumerable: true,
configurable: true
});
return MtcnnOptions;
}());
exports.MtcnnOptions = MtcnnOptions;
//# sourceMappingURL=MtcnnOptions.js.map
\ No newline at end of file
{"version":3,"file":"MtcnnOptions.js","sourceRoot":"","sources":["../../../src/mtcnn/MtcnnOptions.ts"],"names":[],"mappings":";;AAQA;IASE,sBAAY,EAA2F;YAA3F,4BAA2F,EAAzF,4BAAW,EAAE,4BAAW,EAAE,8BAAY,EAAE,oCAAe,EAAE,0BAAU;QARvE,UAAK,GAAW,cAAc,CAAA;QAStC,IAAI,CAAC,YAAY,GAAG,WAAW,IAAI,EAAE,CAAA;QACrC,IAAI,CAAC,YAAY,GAAG,WAAW,IAAI,KAAK,CAAA;QACxC,IAAI,CAAC,aAAa,GAAG,YAAY,IAAI,EAAE,CAAA;QACvC,IAAI,CAAC,gBAAgB,GAAG,eAAe,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QAC1D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;QAE7B,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;YAClE,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,+CAA4C,CAAC,CAAA;SAC3E;QAED,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE;YAC7F,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,2DAAwD,CAAC,CAAA;SACvF;QAED,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;YACpE,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,gDAA6C,CAAC,CAAA;SAC5E;QAED,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;eAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;eAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,OAAO,EAAE,KAAK,QAAQ,EAAtB,CAAsB,CAAC,EAC7D;YACA,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,sEAAmE,CAAC,CAAA;SAClG;QAED,IACE,IAAI,CAAC,WAAW;eACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,OAAO,EAAE,KAAK,QAAQ,EAAtB,CAAsB,CAAC,CAAC,EAC9F;YACA,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,qDAAkD,CAAC,CAAA;SACjF;IACH,CAAC;IAED,sBAAI,qCAAW;aAAf,cAA4B,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;;;OAAA;IACtD,sBAAI,qCAAW;aAAf,cAA4B,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;;;OAAA;IACtD,sBAAI,sCAAY;aAAhB,cAA6B,OAAO,IAAI,CAAC,aAAa,CAAA,CAAC,CAAC;;;OAAA;IACxD,sBAAI,yCAAe;aAAnB,cAAkC,OAAO,IAAI,CAAC,gBAAgB,CAAA,CAAC,CAAC;;;OAAA;IAChE,sBAAI,oCAAU;aAAd,cAAyC,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;;;OAAA;IACpE,mBAAC;AAAD,CAAC,AAjDD,IAiDC;AAjDY,oCAAY"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { Box, Dimensions } from 'tfjs-image-recognition-base';
export declare function extractImagePatches(img: HTMLCanvasElement, boxes: Box[], {width, height}: Dimensions): Promise<tf.Tensor4D[]>;
import { Box, IDimensions } from 'tfjs-image-recognition-base';
export declare function extractImagePatches(img: HTMLCanvasElement, boxes: Box[], {width, height}: IDimensions): Promise<tf.Tensor4D[]>;
{"version":3,"file":"extractImagePatches.js","sourceRoot":"","sources":["../../../src/mtcnn/extractImagePatches.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAAiG;AAEjG,yCAAwC;AAExC,6BACE,GAAsB,EACtB,KAAY,EACZ,EAA6B;QAA3B,gBAAK,EAAE,kBAAM;;;;;;;oBAIT,MAAM,GAAG,iDAAmB,CAAC,GAAG,CAAC,CAAA;oBAEvB,qBAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAM,GAAG;;;gCAE7C,KAAmB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAxD,CAAC,OAAA,EAAE,EAAE,QAAA,EAAE,CAAC,OAAA,EAAE,EAAE,QAAA,CAA4C;gCAE1D,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;gCACb,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;gCACb,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;gCAE7E,sBAAO,iBAAiB,CAAC,OAAO,CAAC,EAAA;;6BAClC,CAAC,CAAC,EAAA;;oBATG,OAAO,GAAG,SASb;oBAEG,iBAAiB,GAAe,EAAE,CAAA;oBAExC,OAAO,CAAC,OAAO,CAAC,UAAA,GAAG;wBACjB,IAAM,KAAK,GAAG,0CAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;wBAC7C,IAAM,QAAQ,GAAG,iDAAmB,CAAC,KAAK,CAAC,CAAA;wBAC3C,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;wBACpC,IAAA,sDAAI,CAA+C;wBAE3D,IAAM,QAAQ,GAAG,EAAE,CAAA;wBACnB,cAAc;wBACd,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAE,CAAC,EAAE;4BACpC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;4BAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;4BAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;yBACvB;wBACD,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBAClC,CAAC,CAAC,CAAA;oBAGF,sBAAO,iBAAiB,CAAC,GAAG,CAAC,UAAA,IAAI;4BAC/B,IAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gCAChB,IAAM,gBAAgB,GAAG,EAAE,CAAC,SAAS,CACnC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EACxC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACb,CAAC,OAAO,EAAiB,CAAA;gCAE1B,OAAO,qBAAS,CAAC,gBAAgB,CAAC,CAAA;4BACpC,CAAC,CAAC,CAAA;4BACF,OAAO,CAAC,CAAA;wBACV,CAAC,CAAC,EAAA;;;;CACH;AAlDD,kDAkDC"}
\ No newline at end of file
{"version":3,"file":"extractImagePatches.js","sourceRoot":"","sources":["../../../src/mtcnn/extractImagePatches.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAAkG;AAElG,yCAAwC;AAExC,6BACE,GAAsB,EACtB,KAAY,EACZ,EAA8B;QAA5B,gBAAK,EAAE,kBAAM;;;;;;;oBAIT,MAAM,GAAG,iDAAmB,CAAC,GAAG,CAAC,CAAA;oBAEvB,qBAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAM,GAAG;;;gCAE7C,KAAmB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAxD,CAAC,OAAA,EAAE,EAAE,QAAA,EAAE,CAAC,OAAA,EAAE,EAAE,QAAA,CAA4C;gCAE1D,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;gCACb,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;gCACb,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;gCAE7E,sBAAO,iBAAiB,CAAC,OAAO,CAAC,EAAA;;6BAClC,CAAC,CAAC,EAAA;;oBATG,OAAO,GAAG,SASb;oBAEG,iBAAiB,GAAe,EAAE,CAAA;oBAExC,OAAO,CAAC,OAAO,CAAC,UAAA,GAAG;wBACjB,IAAM,KAAK,GAAG,0CAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;wBAC7C,IAAM,QAAQ,GAAG,iDAAmB,CAAC,KAAK,CAAC,CAAA;wBAC3C,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;wBACpC,IAAA,sDAAI,CAA+C;wBAE3D,IAAM,QAAQ,GAAG,EAAE,CAAA;wBACnB,cAAc;wBACd,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAE,CAAC,EAAE;4BACpC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;4BAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;4BAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;yBACvB;wBACD,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBAClC,CAAC,CAAC,CAAA;oBAGF,sBAAO,iBAAiB,CAAC,GAAG,CAAC,UAAA,IAAI;4BAC/B,IAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gCAChB,IAAM,gBAAgB,GAAG,EAAE,CAAC,SAAS,CACnC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EACxC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACb,CAAC,OAAO,EAAiB,CAAA;gCAE1B,OAAO,qBAAS,CAAC,gBAAgB,CAAC,CAAA;4BACpC,CAAC,CAAC,CAAA;4BACF,OAAO,CAAC,CAAA;wBACV,CAAC,CAAC,EAAA;;;;CACH;AAlDD,kDAkDC"}
\ No newline at end of file
import { Mtcnn } from './Mtcnn';
export * from './Mtcnn';
export * from './MtcnnOptions';
export declare function createMtcnn(weights: Float32Array): Mtcnn;
......@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var Mtcnn_1 = require("./Mtcnn");
tslib_1.__exportStar(require("./Mtcnn"), exports);
tslib_1.__exportStar(require("./MtcnnOptions"), exports);
function createMtcnn(weights) {
var net = new Mtcnn_1.Mtcnn();
net.extractWeights(weights);
......
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mtcnn/index.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAEhC,kDAAwB;AAExB,qBAA4B,OAAqB;IAC/C,IAAM,GAAG,GAAG,IAAI,aAAK,EAAE,CAAA;IACvB,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,kCAIC"}
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mtcnn/index.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAEhC,kDAAwB;AACxB,yDAA+B;AAE/B,qBAA4B,OAAqB;IAC/C,IAAM,GAAG,GAAG,IAAI,aAAK,EAAE,CAAA;IACvB,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,kCAIC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { ConvParams, FCParams } from 'tfjs-tiny-yolov2';
import { FaceDetection } from '../classes/FaceDetection';
import { FaceLandmarks5 } from '../classes/FaceLandmarks5';
export declare type SharedParams = {
conv1: ConvParams;
prelu1_alpha: tf.Tensor1D;
......@@ -34,14 +32,3 @@ export declare type NetParams = {
rnet: RNetParams;
onet: ONetParams;
};
export declare type MtcnnResult = {
faceDetection: FaceDetection;
faceLandmarks: FaceLandmarks5;
};
export declare type MtcnnForwardParams = {
minFaceSize?: number;
scaleFactor?: number;
maxNumScales?: number;
scoreThresholds?: number[];
scaleSteps?: number[];
};
import * as tf from '@tensorflow/tfjs-core';
import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base';
import { FaceDetection } from '../classes/FaceDetection';
import { ISsdMobilenetv1Options } from './SsdMobilenetv1Options';
import { NetParams } from './types';
export declare class SsdMobilenetv1 extends NeuralNetwork<NetParams> {
constructor();
forwardInput(input: NetInput): {
boxes: tf.Tensor<tf.Rank.R2>[];
scores: tf.Tensor<tf.Rank.R1>[];
};
forward(input: TNetInput): Promise<{
boxes: tf.Tensor<tf.Rank.R2>[];
scores: tf.Tensor<tf.Rank.R1>[];
}>;
locateFaces(input: TNetInput, options?: ISsdMobilenetv1Options): Promise<FaceDetection[]>;
protected loadQuantizedParams(uri: string | undefined): Promise<{
params: NetParams;
paramMappings: {
originalPath?: string | undefined;
paramPath: string;
}[];
}>;
protected extractParams(weights: Float32Array): {
params: NetParams;
paramMappings: {
originalPath?: string | undefined;
paramPath: string;
}[];
};
}
"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 FaceDetection_1 = require("../classes/FaceDetection");
var extractParams_1 = require("./extractParams");
var loadQuantizedParams_1 = require("./loadQuantizedParams");
var mobileNetV1_1 = require("./mobileNetV1");
var nonMaxSuppression_1 = require("./nonMaxSuppression");
var outputLayer_1 = require("./outputLayer");
var predictionLayer_1 = require("./predictionLayer");
var SsdMobilenetv1Options_1 = require("./SsdMobilenetv1Options");
var SsdMobilenetv1 = /** @class */ (function (_super) {
tslib_1.__extends(SsdMobilenetv1, _super);
function SsdMobilenetv1() {
return _super.call(this, 'SsdMobilenetv1') || this;
}
SsdMobilenetv1.prototype.forwardInput = function (input) {
var params = this.params;
if (!params) {
throw new Error('SsdMobilenetv1 - load model before inference');
}
return tf.tidy(function () {
var batchTensor = input.toBatchTensor(512, false).toFloat();
var x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1));
var features = mobileNetV1_1.mobileNetV1(x, params.mobilenetv1);
var _a = predictionLayer_1.predictionLayer(features.out, features.conv11, params.prediction_layer), boxPredictions = _a.boxPredictions, classPredictions = _a.classPredictions;
return outputLayer_1.outputLayer(boxPredictions, classPredictions, params.output_layer);
});
};
SsdMobilenetv1.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()])];
}
});
});
};
SsdMobilenetv1.prototype.locateFaces = function (input, options) {
if (options === void 0) { options = {}; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, maxResults, minConfidence, netInput, _b, _boxes, _scores, boxes, scores, i, scoresData, _c, _d, iouThreshold, indices, reshapedDims, inputSize, padX, padY, results;
return tslib_1.__generator(this, function (_e) {
switch (_e.label) {
case 0:
_a = new SsdMobilenetv1Options_1.SsdMobilenetv1Options(options), maxResults = _a.maxResults, minConfidence = _a.minConfidence;
return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)];
case 1:
netInput = _e.sent();
_b = this.forwardInput(netInput), _boxes = _b.boxes, _scores = _b.scores;
boxes = _boxes[0];
scores = _scores[0];
for (i = 1; i < _boxes.length; i++) {
_boxes[i].dispose();
_scores[i].dispose();
}
_d = (_c = Array).from;
return [4 /*yield*/, scores.data()];
case 2:
scoresData = _d.apply(_c, [_e.sent()]);
iouThreshold = 0.5;
indices = nonMaxSuppression_1.nonMaxSuppression(boxes, scoresData, maxResults, iouThreshold, minConfidence);
reshapedDims = netInput.getReshapedInputDimensions(0);
inputSize = netInput.inputSize;
padX = inputSize / reshapedDims.width;
padY = inputSize / reshapedDims.height;
results = indices
.map(function (idx) {
var _a = [
Math.max(0, boxes.get(idx, 0)),
Math.min(1.0, boxes.get(idx, 2))
].map(function (val) { return val * padY; }), top = _a[0], bottom = _a[1];
var _b = [
Math.max(0, boxes.get(idx, 1)),
Math.min(1.0, boxes.get(idx, 3))
].map(function (val) { return val * padX; }), left = _b[0], right = _b[1];
return new FaceDetection_1.FaceDetection(scoresData[idx], new tfjs_image_recognition_base_1.Rect(left, top, right - left, bottom - top), {
height: netInput.getInputHeight(0),
width: netInput.getInputWidth(0)
});
});
boxes.dispose();
scores.dispose();
return [2 /*return*/, results];
}
});
});
};
SsdMobilenetv1.prototype.loadQuantizedParams = function (uri) {
return loadQuantizedParams_1.loadQuantizedParams(uri);
};
SsdMobilenetv1.prototype.extractParams = function (weights) {
return extractParams_1.extractParams(weights);
};
return SsdMobilenetv1;
}(tfjs_image_recognition_base_1.NeuralNetwork));
exports.SsdMobilenetv1 = SsdMobilenetv1;
//# sourceMappingURL=SsdMobilenetv1.js.map
\ No newline at end of file
{"version":3,"file":"SsdMobilenetv1.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/SsdMobilenetv1.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
export interface ISsdMobilenetv1Options {
minConfidence?: number;
maxResults?: number;
}
export declare class SsdMobilenetv1Options {
protected _name: string;
private _minConfidence;
private _maxResults;
constructor({minConfidence, maxResults}?: ISsdMobilenetv1Options);
readonly minConfidence: number;
readonly maxResults: number;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var SsdMobilenetv1Options = /** @class */ (function () {
function SsdMobilenetv1Options(_a) {
var _b = _a === void 0 ? {} : _a, minConfidence = _b.minConfidence, maxResults = _b.maxResults;
this._name = 'SsdMobilenetv1Options';
this._minConfidence = minConfidence || 0.5;
this._maxResults = maxResults || 100;
if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {
throw new Error(this._name + " - expected minConfidence to be a number between 0 and 1");
}
if (typeof this._maxResults !== 'number') {
throw new Error(this._name + " - expected maxResults to be a number");
}
}
Object.defineProperty(SsdMobilenetv1Options.prototype, "minConfidence", {
get: function () { return this._minConfidence; },
enumerable: true,
configurable: true
});
Object.defineProperty(SsdMobilenetv1Options.prototype, "maxResults", {
get: function () { return this._maxResults; },
enumerable: true,
configurable: true
});
return SsdMobilenetv1Options;
}());
exports.SsdMobilenetv1Options = SsdMobilenetv1Options;
//# sourceMappingURL=SsdMobilenetv1Options.js.map
\ No newline at end of file
{"version":3,"file":"SsdMobilenetv1Options.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/SsdMobilenetv1Options.ts"],"names":[],"mappings":";;AAKA;IAME,+BAAY,EAA0D;YAA1D,4BAA0D,EAAxD,gCAAa,EAAE,0BAAU;QAL7B,UAAK,GAAW,uBAAuB,CAAA;QAM/C,IAAI,CAAC,cAAc,GAAG,aAAa,IAAI,GAAG,CAAA;QAC1C,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,GAAG,CAAA;QAEpC,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,EAAE;YACnG,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,6DAA0D,CAAC,CAAA;SACzF;QAED,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;YACxC,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,0CAAuC,CAAC,CAAA;SACtE;IACH,CAAC;IAED,sBAAI,gDAAa;aAAjB,cAA8B,OAAO,IAAI,CAAC,cAAc,CAAA,CAAC,CAAC;;;OAAA;IAC1D,sBAAI,6CAAU;aAAd,cAA2B,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;;;OAAA;IACtD,4BAAC;AAAD,CAAC,AArBD,IAqBC;AArBY,sDAAqB"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { BoxPredictionParams } from './types';
export declare function boxPredictionLayer(x: tf.Tensor4D, params: BoxPredictionParams): {
boxPredictionEncoding: tf.Tensor<tf.Rank>;
classPrediction: tf.Tensor<tf.Rank>;
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var tfjs_tiny_yolov2_1 = require("tfjs-tiny-yolov2");
function boxPredictionLayer(x, params) {
return tf.tidy(function () {
var batchSize = x.shape[0];
var boxPredictionEncoding = tf.reshape(tfjs_tiny_yolov2_1.convLayer(x, params.box_encoding_predictor), [batchSize, -1, 1, 4]);
var classPrediction = tf.reshape(tfjs_tiny_yolov2_1.convLayer(x, params.class_predictor), [batchSize, -1, 3]);
return {
boxPredictionEncoding: boxPredictionEncoding,
classPrediction: classPrediction
};
});
}
exports.boxPredictionLayer = boxPredictionLayer;
//# sourceMappingURL=boxPredictionLayer.js.map
\ No newline at end of file
{"version":3,"file":"boxPredictionLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/boxPredictionLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAC5C,qDAA6C;AAK7C,4BACE,CAAc,EACd,MAA2B;IAE3B,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAE5B,IAAM,qBAAqB,GAAG,EAAE,CAAC,OAAO,CACtC,4BAAS,CAAC,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,EAC3C,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACtB,CAAA;QACD,IAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC,4BAAS,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,EACpC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACnB,CAAA;QAED,OAAO;YACL,qBAAqB,uBAAA;YACrB,eAAe,iBAAA;SAChB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAtBD,gDAsBC"}
\ No newline at end of file
import { ParamMapping } from 'tfjs-image-recognition-base';
import { NetParams } from './types';
export declare function extractParams(weights: Float32Array): {
params: NetParams;
paramMappings: ParamMapping[];
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
function extractorsFactory(extractWeights, paramMappings) {
function extractDepthwiseConvParams(numChannels, mappedPrefix) {
var filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);
var batch_norm_scale = tf.tensor1d(extractWeights(numChannels));
var batch_norm_offset = tf.tensor1d(extractWeights(numChannels));
var batch_norm_mean = tf.tensor1d(extractWeights(numChannels));
var batch_norm_variance = tf.tensor1d(extractWeights(numChannels));
paramMappings.push({ paramPath: mappedPrefix + "/filters" }, { paramPath: mappedPrefix + "/batch_norm_scale" }, { paramPath: mappedPrefix + "/batch_norm_offset" }, { paramPath: mappedPrefix + "/batch_norm_mean" }, { paramPath: mappedPrefix + "/batch_norm_variance" });
return {
filters: filters,
batch_norm_scale: batch_norm_scale,
batch_norm_offset: batch_norm_offset,
batch_norm_mean: batch_norm_mean,
batch_norm_variance: batch_norm_variance
};
}
function extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, isPointwiseConv) {
var filters = tf.tensor4d(extractWeights(channelsIn * channelsOut * filterSize * filterSize), [filterSize, filterSize, channelsIn, channelsOut]);
var bias = tf.tensor1d(extractWeights(channelsOut));
paramMappings.push({ paramPath: mappedPrefix + "/filters" }, { paramPath: mappedPrefix + "/" + (isPointwiseConv ? 'batch_norm_offset' : 'bias') });
return { filters: filters, bias: bias };
}
function extractPointwiseConvParams(channelsIn, channelsOut, filterSize, mappedPrefix) {
var _a = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true), filters = _a.filters, bias = _a.bias;
return {
filters: filters,
batch_norm_offset: bias
};
}
function extractConvPairParams(channelsIn, channelsOut, mappedPrefix) {
var depthwise_conv = extractDepthwiseConvParams(channelsIn, mappedPrefix + "/depthwise_conv");
var pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, mappedPrefix + "/pointwise_conv");
return { depthwise_conv: depthwise_conv, pointwise_conv: pointwise_conv };
}
function extractMobilenetV1Params() {
var conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0');
var conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1');
var conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2');
var conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3');
var conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4');
var conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5');
var conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6');
var conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7');
var conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8');
var conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9');
var conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10');
var conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11');
var conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12');
var conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13');
return {
conv_0: conv_0,
conv_1: conv_1,
conv_2: conv_2,
conv_3: conv_3,
conv_4: conv_4,
conv_5: conv_5,
conv_6: conv_6,
conv_7: conv_7,
conv_8: conv_8,
conv_9: conv_9,
conv_10: conv_10,
conv_11: conv_11,
conv_12: conv_12,
conv_13: conv_13
};
}
function extractPredictionLayerParams() {
var conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0');
var conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1');
var conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2');
var conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3');
var conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4');
var conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5');
var conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6');
var conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7');
var box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor');
var class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor');
var box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor');
var class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor');
var box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor');
var class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor');
var box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor');
var class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor');
var box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor');
var class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor');
var box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor');
var class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor');
var box_predictor_0 = {
box_encoding_predictor: box_encoding_0_predictor,
class_predictor: class_predictor_0
};
var box_predictor_1 = {
box_encoding_predictor: box_encoding_1_predictor,
class_predictor: class_predictor_1
};
var box_predictor_2 = {
box_encoding_predictor: box_encoding_2_predictor,
class_predictor: class_predictor_2
};
var box_predictor_3 = {
box_encoding_predictor: box_encoding_3_predictor,
class_predictor: class_predictor_3
};
var box_predictor_4 = {
box_encoding_predictor: box_encoding_4_predictor,
class_predictor: class_predictor_4
};
var box_predictor_5 = {
box_encoding_predictor: box_encoding_5_predictor,
class_predictor: class_predictor_5
};
return {
conv_0: conv_0,
conv_1: conv_1,
conv_2: conv_2,
conv_3: conv_3,
conv_4: conv_4,
conv_5: conv_5,
conv_6: conv_6,
conv_7: conv_7,
box_predictor_0: box_predictor_0,
box_predictor_1: box_predictor_1,
box_predictor_2: box_predictor_2,
box_predictor_3: box_predictor_3,
box_predictor_4: box_predictor_4,
box_predictor_5: box_predictor_5
};
}
return {
extractMobilenetV1Params: extractMobilenetV1Params,
extractPredictionLayerParams: extractPredictionLayerParams
};
}
function extractParams(weights) {
var paramMappings = [];
var _a = tfjs_image_recognition_base_1.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights;
var _b = extractorsFactory(extractWeights, paramMappings), extractMobilenetV1Params = _b.extractMobilenetV1Params, extractPredictionLayerParams = _b.extractPredictionLayerParams;
var mobilenetv1 = extractMobilenetV1Params();
var prediction_layer = extractPredictionLayerParams();
var extra_dim = tf.tensor3d(extractWeights(5118 * 4), [1, 5118, 4]);
var output_layer = {
extra_dim: extra_dim
};
paramMappings.push({ paramPath: 'output_layer/extra_dim' });
if (getRemainingWeights().length !== 0) {
throw new Error("weights remaing after extract: " + getRemainingWeights().length);
}
return {
params: {
mobilenetv1: mobilenetv1,
prediction_layer: prediction_layer,
output_layer: output_layer
},
paramMappings: paramMappings
};
}
exports.extractParams = extractParams;
//# sourceMappingURL=extractParams.js.map
\ No newline at end of file
{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/extractParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import { SsdMobilenetv1 } from './SsdMobilenetv1';
export * from './SsdMobilenetv1';
export * from './SsdMobilenetv1Options';
export declare function createSsdMobilenetv1(weights: Float32Array): SsdMobilenetv1;
export declare function createFaceDetectionNet(weights: Float32Array): SsdMobilenetv1;
export declare class FaceDetectionNet extends SsdMobilenetv1 {
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var SsdMobilenetv1_1 = require("./SsdMobilenetv1");
tslib_1.__exportStar(require("./SsdMobilenetv1"), exports);
tslib_1.__exportStar(require("./SsdMobilenetv1Options"), exports);
function createSsdMobilenetv1(weights) {
var net = new SsdMobilenetv1_1.SsdMobilenetv1();
net.extractWeights(weights);
return net;
}
exports.createSsdMobilenetv1 = createSsdMobilenetv1;
function createFaceDetectionNet(weights) {
return createSsdMobilenetv1(weights);
}
exports.createFaceDetectionNet = createFaceDetectionNet;
// alias for backward compatibily
var FaceDetectionNet = /** @class */ (function (_super) {
tslib_1.__extends(FaceDetectionNet, _super);
function FaceDetectionNet() {
return _super !== null && _super.apply(this, arguments) || this;
}
return FaceDetectionNet;
}(SsdMobilenetv1_1.SsdMobilenetv1));
exports.FaceDetectionNet = FaceDetectionNet;
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAElD,2DAAiC;AACjC,kEAAwC;AAExC,8BAAqC,OAAqB;IACxD,IAAM,GAAG,GAAG,IAAI,+BAAc,EAAE,CAAA;IAChC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,oDAIC;AAED,gCAAuC,OAAqB;IAC1D,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC;AAFD,wDAEC;AAED,iCAAiC;AACjC;IAAsC,4CAAc;IAApD;;IAAsD,CAAC;IAAD,uBAAC;AAAD,CAAC,AAAvD,CAAsC,+BAAc,GAAG;AAA1C,4CAAgB"}
\ No newline at end of file
import { ParamMapping } from 'tfjs-image-recognition-base';
import { NetParams } from './types';
export declare function loadQuantizedParams(uri: string | undefined): Promise<{
params: NetParams;
paramMappings: ParamMapping[];
}>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
var DEFAULT_MODEL_NAME = 'ssd_mobilenetv1_model';
function extractorsFactory(weightMap, paramMappings) {
var extractWeightEntry = tfjs_image_recognition_base_1.extractWeightEntryFactory(weightMap, paramMappings);
function extractPointwiseConvParams(prefix, idx, mappedPrefix) {
var filters = extractWeightEntry(prefix + "/Conv2d_" + idx + "_pointwise/weights", 4, mappedPrefix + "/filters");
var batch_norm_offset = extractWeightEntry(prefix + "/Conv2d_" + idx + "_pointwise/convolution_bn_offset", 1, mappedPrefix + "/batch_norm_offset");
return { filters: filters, batch_norm_offset: batch_norm_offset };
}
function extractConvPairParams(idx) {
var mappedPrefix = "mobilenetv1/conv_" + idx;
var prefixDepthwiseConv = "MobilenetV1/Conv2d_" + idx + "_depthwise";
var mappedPrefixDepthwiseConv = mappedPrefix + "/depthwise_conv";
var mappedPrefixPointwiseConv = mappedPrefix + "/pointwise_conv";
var filters = extractWeightEntry(prefixDepthwiseConv + "/depthwise_weights", 4, mappedPrefixDepthwiseConv + "/filters");
var batch_norm_scale = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/gamma", 1, mappedPrefixDepthwiseConv + "/batch_norm_scale");
var batch_norm_offset = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/beta", 1, mappedPrefixDepthwiseConv + "/batch_norm_offset");
var batch_norm_mean = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/moving_mean", 1, mappedPrefixDepthwiseConv + "/batch_norm_mean");
var batch_norm_variance = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/moving_variance", 1, mappedPrefixDepthwiseConv + "/batch_norm_variance");
return {
depthwise_conv: {
filters: filters,
batch_norm_scale: batch_norm_scale,
batch_norm_offset: batch_norm_offset,
batch_norm_mean: batch_norm_mean,
batch_norm_variance: batch_norm_variance
},
pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv)
};
}
function extractMobilenetV1Params() {
return {
conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),
conv_1: extractConvPairParams(1),
conv_2: extractConvPairParams(2),
conv_3: extractConvPairParams(3),
conv_4: extractConvPairParams(4),
conv_5: extractConvPairParams(5),
conv_6: extractConvPairParams(6),
conv_7: extractConvPairParams(7),
conv_8: extractConvPairParams(8),
conv_9: extractConvPairParams(9),
conv_10: extractConvPairParams(10),
conv_11: extractConvPairParams(11),
conv_12: extractConvPairParams(12),
conv_13: extractConvPairParams(13)
};
}
function extractConvParams(prefix, mappedPrefix) {
var filters = extractWeightEntry(prefix + "/weights", 4, mappedPrefix + "/filters");
var bias = extractWeightEntry(prefix + "/biases", 1, mappedPrefix + "/bias");
return { filters: filters, bias: bias };
}
function extractBoxPredictorParams(idx) {
var box_encoding_predictor = extractConvParams("Prediction/BoxPredictor_" + idx + "/BoxEncodingPredictor", "prediction_layer/box_predictor_" + idx + "/box_encoding_predictor");
var class_predictor = extractConvParams("Prediction/BoxPredictor_" + idx + "/ClassPredictor", "prediction_layer/box_predictor_" + idx + "/class_predictor");
return { box_encoding_predictor: box_encoding_predictor, class_predictor: class_predictor };
}
function extractPredictionLayerParams() {
return {
conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),
conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),
conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),
conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),
conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),
conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),
conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),
conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),
box_predictor_0: extractBoxPredictorParams(0),
box_predictor_1: extractBoxPredictorParams(1),
box_predictor_2: extractBoxPredictorParams(2),
box_predictor_3: extractBoxPredictorParams(3),
box_predictor_4: extractBoxPredictorParams(4),
box_predictor_5: extractBoxPredictorParams(5)
};
}
return {
extractMobilenetV1Params: extractMobilenetV1Params,
extractPredictionLayerParams: extractPredictionLayerParams
};
}
function loadQuantizedParams(uri) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var weightMap, paramMappings, _a, extractMobilenetV1Params, extractPredictionLayerParams, extra_dim, params;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0: return [4 /*yield*/, tfjs_image_recognition_base_1.loadWeightMap(uri, DEFAULT_MODEL_NAME)];
case 1:
weightMap = _b.sent();
paramMappings = [];
_a = extractorsFactory(weightMap, paramMappings), extractMobilenetV1Params = _a.extractMobilenetV1Params, extractPredictionLayerParams = _a.extractPredictionLayerParams;
extra_dim = weightMap['Output/extra_dim'];
paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });
if (!tfjs_image_recognition_base_1.isTensor3D(extra_dim)) {
throw new Error("expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have " + extra_dim);
}
params = {
mobilenetv1: extractMobilenetV1Params(),
prediction_layer: extractPredictionLayerParams(),
output_layer: {
extra_dim: extra_dim
}
};
tfjs_image_recognition_base_1.disposeUnusedWeightTensors(weightMap, paramMappings);
return [2 /*return*/, { params: params, paramMappings: paramMappings }];
}
});
});
}
exports.loadQuantizedParams = loadQuantizedParams;
//# sourceMappingURL=loadQuantizedParams.js.map
\ No newline at end of file
{"version":3,"file":"loadQuantizedParams.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/loadQuantizedParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { MobileNetV1 } from './types';
export declare function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params): {
out: tf.Tensor<tf.Rank.R4>;
conv11: any;
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var pointwiseConvLayer_1 = require("./pointwiseConvLayer");
var epsilon = 0.0010000000474974513;
function depthwiseConvLayer(x, params, strides) {
return tf.tidy(function () {
var out = tf.depthwiseConv2d(x, params.filters, strides, 'same');
out = tf.batchNormalization(out, params.batch_norm_mean, params.batch_norm_variance, epsilon, params.batch_norm_scale, params.batch_norm_offset);
return tf.clipByValue(out, 0, 6);
});
}
function getStridesForLayerIdx(layerIdx) {
return [2, 4, 6, 12].some(function (idx) { return idx === layerIdx; }) ? [2, 2] : [1, 1];
}
function mobileNetV1(x, params) {
return tf.tidy(function () {
var conv11 = null;
var out = pointwiseConvLayer_1.pointwiseConvLayer(x, params.conv_0, [2, 2]);
var convPairParams = [
params.conv_1,
params.conv_2,
params.conv_3,
params.conv_4,
params.conv_5,
params.conv_6,
params.conv_7,
params.conv_8,
params.conv_9,
params.conv_10,
params.conv_11,
params.conv_12,
params.conv_13
];
convPairParams.forEach(function (param, i) {
var layerIdx = i + 1;
var depthwiseConvStrides = getStridesForLayerIdx(layerIdx);
out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);
out = pointwiseConvLayer_1.pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);
if (layerIdx === 11) {
conv11 = out;
}
});
if (conv11 === null) {
throw new Error('mobileNetV1 - output of conv layer 11 is null');
}
return {
out: out,
conv11: conv11
};
});
}
exports.mobileNetV1 = mobileNetV1;
//# sourceMappingURL=mobileNetV1.js.map
\ No newline at end of file
{"version":3,"file":"mobileNetV1.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/mobileNetV1.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,2DAA0D;AAG1D,IAAM,OAAO,GAAG,qBAAqB,CAAA;AAErC,4BACE,CAAc,EACd,MAAuC,EACvC,OAAyB;IAEzB,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAChE,GAAG,GAAG,EAAE,CAAC,kBAAkB,CACzB,GAAG,EACH,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,mBAAmB,EAC1B,OAAO,EACP,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,iBAAiB,CACzB,CAAA;QACD,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,+BAA+B,QAAgB;IAC7C,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,KAAK,QAAQ,EAAhB,CAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,qBAA4B,CAAc,EAAE,MAA0B;IACpE,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,MAAM,GAAG,IAAI,CAAA;QACjB,IAAI,GAAG,GAAG,uCAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAEtD,IAAM,cAAc,GAAG;YACrB,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;SACf,CAAA;QAED,cAAc,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,CAAC;YAC9B,IAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;YACtB,IAAM,oBAAoB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;YAC5D,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAA;YACzE,GAAG,GAAG,uCAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC3D,IAAI,QAAQ,KAAK,EAAE,EAAE;gBACnB,MAAM,GAAG,GAAG,CAAA;aACb;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;SACjE;QAED,OAAO;YACL,GAAG,KAAA;YACH,MAAM,EAAE,MAAa;SACtB,CAAA;IAEH,CAAC,CAAC,CAAA;AACJ,CAAC;AA1CD,kCA0CC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
export declare function nonMaxSuppression(boxes: tf.Tensor2D, scores: number[], maxOutputSize: number, iouThreshold: number, scoreThreshold: number): number[];
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) {
var numBoxes = boxes.shape[0];
var outputSize = Math.min(maxOutputSize, numBoxes);
var candidates = scores
.map(function (score, boxIndex) { return ({ score: score, boxIndex: boxIndex }); })
.filter(function (c) { return c.score > scoreThreshold; })
.sort(function (c1, c2) { return c2.score - c1.score; });
var suppressFunc = function (x) { return x <= iouThreshold ? 1 : 0; };
var selected = [];
candidates.forEach(function (c) {
if (selected.length >= outputSize) {
return;
}
var originalScore = c.score;
for (var j = selected.length - 1; j >= 0; --j) {
var iou = IOU(boxes, c.boxIndex, selected[j]);
if (iou === 0.0) {
continue;
}
c.score *= suppressFunc(iou);
if (c.score <= scoreThreshold) {
break;
}
}
if (originalScore === c.score) {
selected.push(c.boxIndex);
}
});
return selected;
}
exports.nonMaxSuppression = nonMaxSuppression;
function IOU(boxes, i, j) {
var yminI = Math.min(boxes.get(i, 0), boxes.get(i, 2));
var xminI = Math.min(boxes.get(i, 1), boxes.get(i, 3));
var ymaxI = Math.max(boxes.get(i, 0), boxes.get(i, 2));
var xmaxI = Math.max(boxes.get(i, 1), boxes.get(i, 3));
var yminJ = Math.min(boxes.get(j, 0), boxes.get(j, 2));
var xminJ = Math.min(boxes.get(j, 1), boxes.get(j, 3));
var ymaxJ = Math.max(boxes.get(j, 0), boxes.get(j, 2));
var xmaxJ = Math.max(boxes.get(j, 1), boxes.get(j, 3));
var areaI = (ymaxI - yminI) * (xmaxI - xminI);
var areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);
if (areaI <= 0 || areaJ <= 0) {
return 0.0;
}
var intersectionYmin = Math.max(yminI, yminJ);
var intersectionXmin = Math.max(xminI, xminJ);
var intersectionYmax = Math.min(ymaxI, ymaxJ);
var intersectionXmax = Math.min(xmaxI, xmaxJ);
var intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0) *
Math.max(intersectionXmax - intersectionXmin, 0.0);
return intersectionArea / (areaI + areaJ - intersectionArea);
}
//# sourceMappingURL=nonMaxSuppression.js.map
\ No newline at end of file
{"version":3,"file":"nonMaxSuppression.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/nonMaxSuppression.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { OutputLayerParams } from './types';
export declare function outputLayer(boxPredictions: tf.Tensor4D, classPredictions: tf.Tensor4D, params: OutputLayerParams): {
boxes: tf.Tensor<tf.Rank.R2>[];
scores: tf.Tensor<tf.Rank.R1>[];
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function getCenterCoordinatesAndSizesLayer(x) {
var vec = tf.unstack(tf.transpose(x, [1, 0]));
var sizes = [
tf.sub(vec[2], vec[0]),
tf.sub(vec[3], vec[1])
];
var centers = [
tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),
tf.add(vec[1], tf.div(sizes[1], tf.scalar(2)))
];
return {
sizes: sizes,
centers: centers
};
}
function decodeBoxesLayer(x0, x1) {
var _a = getCenterCoordinatesAndSizesLayer(x0), sizes = _a.sizes, centers = _a.centers;
var vec = tf.unstack(tf.transpose(x1, [1, 0]));
var div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2));
var add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]);
var div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2));
var add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]);
return tf.transpose(tf.stack([
tf.sub(add0_out, div0_out),
tf.sub(add1_out, div1_out),
tf.add(add0_out, div0_out),
tf.add(add1_out, div1_out)
]), [1, 0]);
}
function outputLayer(boxPredictions, classPredictions, params) {
return tf.tidy(function () {
var batchSize = boxPredictions.shape[0];
var boxes = decodeBoxesLayer(tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]), tf.reshape(boxPredictions, [-1, 4]));
boxes = tf.reshape(boxes, [batchSize, (boxes.shape[0] / batchSize), 4]);
var scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]));
var scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]);
scores = tf.reshape(scores, [batchSize, scores.shape[1]]);
var boxesByBatch = tf.unstack(boxes);
var scoresByBatch = tf.unstack(scores);
return {
boxes: boxesByBatch,
scores: scoresByBatch
};
});
}
exports.outputLayer = outputLayer;
//# sourceMappingURL=outputLayer.js.map
\ No newline at end of file
{"version":3,"file":"outputLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/outputLayer.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { PointwiseConvParams } from './types';
export declare function pointwiseConvLayer(x: tf.Tensor4D, params: PointwiseConvParams, strides: [number, number]): tf.Tensor<tf.Rank.R4>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function pointwiseConvLayer(x, params, strides) {
return tf.tidy(function () {
var out = tf.conv2d(x, params.filters, strides, 'same');
out = tf.add(out, params.batch_norm_offset);
return tf.clipByValue(out, 0, 6);
});
}
exports.pointwiseConvLayer = pointwiseConvLayer;
//# sourceMappingURL=pointwiseConvLayer.js.map
\ No newline at end of file
{"version":3,"file":"pointwiseConvLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/pointwiseConvLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAI5C,4BACE,CAAc,EACd,MAA2B,EAC3B,OAAyB;IAEzB,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QACvD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAC3C,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,CAAC,CAAC,CAAA;AACJ,CAAC;AAZD,gDAYC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { PredictionLayerParams } from './types';
export declare function predictionLayer(x: tf.Tensor4D, conv11: tf.Tensor4D, params: PredictionLayerParams): {
boxPredictions: tf.Tensor<tf.Rank.R4>;
classPredictions: tf.Tensor<tf.Rank.R4>;
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var boxPredictionLayer_1 = require("./boxPredictionLayer");
var pointwiseConvLayer_1 = require("./pointwiseConvLayer");
function predictionLayer(x, conv11, params) {
return tf.tidy(function () {
var conv0 = pointwiseConvLayer_1.pointwiseConvLayer(x, params.conv_0, [1, 1]);
var conv1 = pointwiseConvLayer_1.pointwiseConvLayer(conv0, params.conv_1, [2, 2]);
var conv2 = pointwiseConvLayer_1.pointwiseConvLayer(conv1, params.conv_2, [1, 1]);
var conv3 = pointwiseConvLayer_1.pointwiseConvLayer(conv2, params.conv_3, [2, 2]);
var conv4 = pointwiseConvLayer_1.pointwiseConvLayer(conv3, params.conv_4, [1, 1]);
var conv5 = pointwiseConvLayer_1.pointwiseConvLayer(conv4, params.conv_5, [2, 2]);
var conv6 = pointwiseConvLayer_1.pointwiseConvLayer(conv5, params.conv_6, [1, 1]);
var conv7 = pointwiseConvLayer_1.pointwiseConvLayer(conv6, params.conv_7, [2, 2]);
var boxPrediction0 = boxPredictionLayer_1.boxPredictionLayer(conv11, params.box_predictor_0);
var boxPrediction1 = boxPredictionLayer_1.boxPredictionLayer(x, params.box_predictor_1);
var boxPrediction2 = boxPredictionLayer_1.boxPredictionLayer(conv1, params.box_predictor_2);
var boxPrediction3 = boxPredictionLayer_1.boxPredictionLayer(conv3, params.box_predictor_3);
var boxPrediction4 = boxPredictionLayer_1.boxPredictionLayer(conv5, params.box_predictor_4);
var boxPrediction5 = boxPredictionLayer_1.boxPredictionLayer(conv7, params.box_predictor_5);
var boxPredictions = tf.concat([
boxPrediction0.boxPredictionEncoding,
boxPrediction1.boxPredictionEncoding,
boxPrediction2.boxPredictionEncoding,
boxPrediction3.boxPredictionEncoding,
boxPrediction4.boxPredictionEncoding,
boxPrediction5.boxPredictionEncoding
], 1);
var classPredictions = tf.concat([
boxPrediction0.classPrediction,
boxPrediction1.classPrediction,
boxPrediction2.classPrediction,
boxPrediction3.classPrediction,
boxPrediction4.classPrediction,
boxPrediction5.classPrediction
], 1);
return {
boxPredictions: boxPredictions,
classPredictions: classPredictions
};
});
}
exports.predictionLayer = predictionLayer;
//# sourceMappingURL=predictionLayer.js.map
\ No newline at end of file
{"version":3,"file":"predictionLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/predictionLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,2DAA0D;AAC1D,2DAA0D;AAG1D,yBACE,CAAc,EACd,MAAmB,EACnB,MAA6B;IAE7B,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAM,KAAK,GAAG,uCAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAE9D,IAAM,cAAc,GAAG,uCAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACzE,IAAM,cAAc,GAAG,uCAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACpE,IAAM,cAAc,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxE,IAAM,cAAc,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxE,IAAM,cAAc,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxE,IAAM,cAAc,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QAExE,IAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC;YAC/B,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;SACrC,EAAE,CAAC,CAAgB,CAAA;QAEpB,IAAM,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC;YACjC,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;SAC/B,EAAE,CAAC,CAAgB,CAAA;QAEpB,OAAO;YACL,cAAc,gBAAA;YACd,gBAAgB,kBAAA;SACjB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AA9CD,0CA8CC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { ConvParams } from 'tfjs-tiny-yolov2';
export declare type PointwiseConvParams = {
filters: tf.Tensor4D;
batch_norm_offset: tf.Tensor1D;
};
export declare namespace MobileNetV1 {
type DepthwiseConvParams = {
filters: tf.Tensor4D;
batch_norm_scale: tf.Tensor1D;
batch_norm_offset: tf.Tensor1D;
batch_norm_mean: tf.Tensor1D;
batch_norm_variance: tf.Tensor1D;
};
type ConvPairParams = {
depthwise_conv: DepthwiseConvParams;
pointwise_conv: PointwiseConvParams;
};
type Params = {
conv_0: PointwiseConvParams;
conv_1: ConvPairParams;
conv_2: ConvPairParams;
conv_3: ConvPairParams;
conv_4: ConvPairParams;
conv_5: ConvPairParams;
conv_6: ConvPairParams;
conv_7: ConvPairParams;
conv_8: ConvPairParams;
conv_9: ConvPairParams;
conv_10: ConvPairParams;
conv_11: ConvPairParams;
conv_12: ConvPairParams;
conv_13: ConvPairParams;
};
}
export declare type BoxPredictionParams = {
box_encoding_predictor: ConvParams;
class_predictor: ConvParams;
};
export declare type PredictionLayerParams = {
conv_0: PointwiseConvParams;
conv_1: PointwiseConvParams;
conv_2: PointwiseConvParams;
conv_3: PointwiseConvParams;
conv_4: PointwiseConvParams;
conv_5: PointwiseConvParams;
conv_6: PointwiseConvParams;
conv_7: PointwiseConvParams;
box_predictor_0: BoxPredictionParams;
box_predictor_1: BoxPredictionParams;
box_predictor_2: BoxPredictionParams;
box_predictor_3: BoxPredictionParams;
box_predictor_4: BoxPredictionParams;
box_predictor_5: BoxPredictionParams;
};
export declare type OutputLayerParams = {
extra_dim: tf.Tensor3D;
};
export declare type NetParams = {
mobilenetv1: MobileNetV1.Params;
prediction_layer: PredictionLayerParams;
output_layer: OutputLayerParams;
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map
\ No newline at end of file
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/types.ts"],"names":[],"mappings":""}
\ No newline at end of file
import { Point, TNetInput } from 'tfjs-image-recognition-base';
import { TinyYolov2 as TinyYolov2Base, ITinyYolov2Options } from 'tfjs-tiny-yolov2';
import { FaceDetection } from '../classes';
export declare class TinyFaceDetector extends TinyYolov2Base {
constructor();
readonly anchors: Point[];
locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise<FaceDetection[]>;
protected loadQuantizedParams(modelUri: string | undefined): any;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var tfjs_tiny_yolov2_1 = require("tfjs-tiny-yolov2");
var classes_1 = require("../classes");
var const_1 = require("./const");
var TinyFaceDetector = /** @class */ (function (_super) {
tslib_1.__extends(TinyFaceDetector, _super);
function TinyFaceDetector() {
var _this = this;
var config = {
withSeparableConvs: true,
iouThreshold: const_1.IOU_THRESHOLD,
classes: ['face'],
anchors: const_1.BOX_ANCHORS,
meanRgb: const_1.MEAN_RGB,
isFirstLayerConv2d: true,
filterSizes: [3, 16, 32, 64, 128, 256, 512]
};
_this = _super.call(this, config) || this;
return _this;
}
Object.defineProperty(TinyFaceDetector.prototype, "anchors", {
get: function () {
return this.config.anchors;
},
enumerable: true,
configurable: true
});
TinyFaceDetector.prototype.locateFaces = function (input, forwardParams) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var objectDetections;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.detect(input, forwardParams)];
case 1:
objectDetections = _a.sent();
return [2 /*return*/, objectDetections.map(function (det) { return new classes_1.FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }); })];
}
});
});
};
TinyFaceDetector.prototype.loadQuantizedParams = function (modelUri) {
var defaultModelName = const_1.DEFAULT_MODEL_NAME;
return _super.prototype.loadQuantizedParams.call(this, modelUri, defaultModelName);
};
return TinyFaceDetector;
}(tfjs_tiny_yolov2_1.TinyYolov2));
exports.TinyFaceDetector = TinyFaceDetector;
//# sourceMappingURL=TinyFaceDetector.js.map
\ No newline at end of file
{"version":3,"file":"TinyFaceDetector.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/TinyFaceDetector.ts"],"names":[],"mappings":";;;AACA,qDAAoF;AAEpF,sCAA2C;AAC3C,iCAAmF;AAEnF;IAAsC,4CAAc;IAElD;QAAA,iBAYC;QAXC,IAAM,MAAM,GAAG;YACb,kBAAkB,EAAE,IAAI;YACxB,YAAY,EAAE,qBAAa;YAC3B,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,mBAAW;YACpB,OAAO,EAAE,gBAAQ;YACjB,kBAAkB,EAAE,IAAI;YACxB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;SAC5C,CAAA;QAED,QAAA,kBAAM,MAAM,CAAC,SAAA;;IACf,CAAC;IAED,sBAAW,qCAAO;aAAlB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QAC5B,CAAC;;;OAAA;IAEY,sCAAW,GAAxB,UAAyB,KAAgB,EAAE,aAAiC;;;;;4BACjD,qBAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,EAAA;;wBAA1D,gBAAgB,GAAG,SAAuC;wBAChE,sBAAO,gBAAgB,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,IAAI,uBAAa,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAAjG,CAAiG,CAAC,EAAA;;;;KACtI;IAES,8CAAmB,GAA7B,UAA8B,QAA4B;QACxD,IAAM,gBAAgB,GAAG,0BAAkB,CAAA;QAC3C,OAAO,iBAAM,mBAAmB,YAAC,QAAQ,EAAE,gBAAgB,CAAQ,CAAA;IACrE,CAAC;IACH,uBAAC;AAAD,CAAC,AA7BD,CAAsC,6BAAc,GA6BnD;AA7BY,4CAAgB"}
\ No newline at end of file
import { ITinyYolov2Options, TinyYolov2Options } from 'tfjs-tiny-yolov2';
export interface ITinyFaceDetectorOptions extends ITinyYolov2Options {
}
export declare class TinyFaceDetectorOptions extends TinyYolov2Options {
protected _name: string;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var tfjs_tiny_yolov2_1 = require("tfjs-tiny-yolov2");
var TinyFaceDetectorOptions = /** @class */ (function (_super) {
tslib_1.__extends(TinyFaceDetectorOptions, _super);
function TinyFaceDetectorOptions() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this._name = 'TinyFaceDetectorOptions';
return _this;
}
return TinyFaceDetectorOptions;
}(tfjs_tiny_yolov2_1.TinyYolov2Options));
exports.TinyFaceDetectorOptions = TinyFaceDetectorOptions;
//# sourceMappingURL=TinyFaceDetectorOptions.js.map
\ No newline at end of file
{"version":3,"file":"TinyFaceDetectorOptions.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/TinyFaceDetectorOptions.ts"],"names":[],"mappings":";;;AAAA,qDAAyE;AAIzE;IAA6C,mDAAiB;IAA9D;QAAA,qEAEC;QADW,WAAK,GAAW,yBAAyB,CAAA;;IACrD,CAAC;IAAD,8BAAC;AAAD,CAAC,AAFD,CAA6C,oCAAiB,GAE7D;AAFY,0DAAuB"}
\ No newline at end of file
import { Point } from 'tfjs-image-recognition-base';
export declare const IOU_THRESHOLD = 0.4;
export declare const BOX_ANCHORS: Point[];
export declare const MEAN_RGB: [number, number, number];
export declare const DEFAULT_MODEL_NAME = "tiny_face_detector_model";
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base");
exports.IOU_THRESHOLD = 0.4;
exports.BOX_ANCHORS = [
new tfjs_image_recognition_base_1.Point(1.603231, 2.094468),
new tfjs_image_recognition_base_1.Point(6.041143, 7.080126),
new tfjs_image_recognition_base_1.Point(2.882459, 3.518061),
new tfjs_image_recognition_base_1.Point(4.266906, 5.178857),
new tfjs_image_recognition_base_1.Point(9.041765, 10.66308)
];
exports.MEAN_RGB = [117.001, 114.697, 97.404];
exports.DEFAULT_MODEL_NAME = 'tiny_face_detector_model';
//# sourceMappingURL=const.js.map
\ No newline at end of file
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/const.ts"],"names":[],"mappings":";;AAAA,2EAAoD;AAEvC,QAAA,aAAa,GAAG,GAAG,CAAA;AAEnB,QAAA,WAAW,GAAG;IACzB,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC9B,CAAA;AAEY,QAAA,QAAQ,GAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAE/D,QAAA,kBAAkB,GAAG,0BAA0B,CAAA"}
\ No newline at end of file
import { TinyFaceDetector } from './TinyFaceDetector';
export * from './TinyFaceDetector';
export * from './TinyFaceDetectorOptions';
export declare function createTinyFaceDetector(weights: Float32Array): TinyFaceDetector;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var TinyFaceDetector_1 = require("./TinyFaceDetector");
tslib_1.__exportStar(require("./TinyFaceDetector"), exports);
tslib_1.__exportStar(require("./TinyFaceDetectorOptions"), exports);
function createTinyFaceDetector(weights) {
var net = new TinyFaceDetector_1.TinyFaceDetector();
net.extractWeights(weights);
return net;
}
exports.createTinyFaceDetector = createTinyFaceDetector;
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/index.ts"],"names":[],"mappings":";;;AAAA,uDAAsD;AAEtD,6DAAmC;AACnC,oEAA0C;AAE1C,gCAAuC,OAAqB;IAC1D,IAAM,GAAG,GAAG,IAAI,mCAAgB,EAAE,CAAA;IAClC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,wDAIC"}
\ No newline at end of file
import { Point, TNetInput } from 'tfjs-image-recognition-base';
import { TinyYolov2 as TinyYolov2Base, TinyYolov2Types } from 'tfjs-tiny-yolov2';
import { ITinyYolov2Options, TinyYolov2 as TinyYolov2Base } from 'tfjs-tiny-yolov2';
import { FaceDetection } from '../classes';
export declare class TinyYolov2 extends TinyYolov2Base {
constructor(withSeparableConvs?: boolean);
readonly withSeparableConvs: boolean;
readonly anchors: Point[];
locateFaces(input: TNetInput, forwardParams: TinyYolov2Types.TinyYolov2ForwardParams): Promise<FaceDetection[]>;
locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise<FaceDetection[]>;
protected loadQuantizedParams(modelUri: string | undefined): any;
}
{"version":3,"file":"TinyYolov2.js","sourceRoot":"","sources":["../../../src/tinyYolov2/TinyYolov2.ts"],"names":[],"mappings":";;;AACA,qDAAiF;AAEjF,sCAA2C;AAC3C,iCAOiB;AAEjB;IAAgC,sCAAc;IAE5C,oBAAY,kBAAkC;QAAlC,mCAAA,EAAA,yBAAkC;QAA9C,iBAkBC;QAjBC,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;YAC/B,kBAAkB,oBAAA;YAClB,YAAY,EAAE,qBAAa;YAC3B,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,EACD,kBAAkB;YAChB,CAAC,CAAC;gBACA,OAAO,EAAE,6BAAqB;gBAC9B,OAAO,EAAE,0BAAkB;aAC5B;YACD,CAAC,CAAC;gBACA,OAAO,EAAE,mBAAW;gBACpB,eAAe,EAAE,IAAI;aACtB,CACF,CAAA;QAED,QAAA,kBAAM,MAAM,CAAC,SAAA;;IACf,CAAC;IAED,sBAAW,0CAAkB;aAA7B;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAA;QACvC,CAAC;;;OAAA;IAED,sBAAW,+BAAO;aAAlB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QAC5B,CAAC;;;OAAA;IAEY,gCAAW,GAAxB,UAAyB,KAAgB,EAAE,aAAsD;;;;;4BACtE,qBAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,EAAA;;wBAA1D,gBAAgB,GAAG,SAAuC;wBAChE,sBAAO,gBAAgB,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,IAAI,uBAAa,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAAjG,CAAiG,CAAC,EAAA;;;;KACtI;IAES,wCAAmB,GAA7B,UAA8B,QAA4B;QACxD,IAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,yCAAiC,CAAC,CAAC,CAAC,0BAAkB,CAAA;QACzG,OAAO,iBAAM,mBAAmB,YAAC,QAAQ,EAAE,gBAAgB,CAAQ,CAAA;IACrE,CAAC;IACH,iBAAC;AAAD,CAAC,AAvCD,CAAgC,6BAAc,GAuC7C;AAvCY,gCAAU"}
\ No newline at end of file
{"version":3,"file":"TinyYolov2.js","sourceRoot":"","sources":["../../../src/tinyYolov2/TinyYolov2.ts"],"names":[],"mappings":";;;AACA,qDAAoF;AAEpF,sCAA2C;AAC3C,iCAOiB;AAEjB;IAAgC,sCAAc;IAE5C,oBAAY,kBAAkC;QAAlC,mCAAA,EAAA,yBAAkC;QAA9C,iBAkBC;QAjBC,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;YAC/B,kBAAkB,oBAAA;YAClB,YAAY,EAAE,qBAAa;YAC3B,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,EACD,kBAAkB;YAChB,CAAC,CAAC;gBACA,OAAO,EAAE,6BAAqB;gBAC9B,OAAO,EAAE,0BAAkB;aAC5B;YACD,CAAC,CAAC;gBACA,OAAO,EAAE,mBAAW;gBACpB,eAAe,EAAE,IAAI;aACtB,CACF,CAAA;QAED,QAAA,kBAAM,MAAM,CAAC,SAAA;;IACf,CAAC;IAED,sBAAW,0CAAkB;aAA7B;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAA;QACvC,CAAC;;;OAAA;IAED,sBAAW,+BAAO;aAAlB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QAC5B,CAAC;;;OAAA;IAEY,gCAAW,GAAxB,UAAyB,KAAgB,EAAE,aAAiC;;;;;4BACjD,qBAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,EAAA;;wBAA1D,gBAAgB,GAAG,SAAuC;wBAChE,sBAAO,gBAAgB,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,IAAI,uBAAa,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAAjG,CAAiG,CAAC,EAAA;;;;KACtI;IAES,wCAAmB,GAA7B,UAA8B,QAA4B;QACxD,IAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,yCAAiC,CAAC,CAAC,CAAC,0BAAkB,CAAA;QACzG,OAAO,iBAAM,mBAAmB,YAAC,QAAQ,EAAE,gBAAgB,CAAQ,CAAA;IACrE,CAAC;IACH,iBAAC;AAAD,CAAC,AAvCD,CAAgC,6BAAc,GAuC7C;AAvCY,gCAAU"}
\ No newline at end of file
import { Dimensions, ObjectDetection, Rect } from 'tfjs-image-recognition-base';
export declare class FaceDetection extends ObjectDetection {
constructor(score: number, relativeBox: Rect, imageDims: Dimensions);
import { Box, IDimensions, ObjectDetection, Rect } from 'tfjs-image-recognition-base';
export interface IFaceDetecion {
score: number;
box: Box;
}
export declare class FaceDetection extends ObjectDetection implements IFaceDetecion {
constructor(score: number, relativeBox: Rect, imageDims: IDimensions);
}
{"version":3,"file":"FaceDetection.js","sourceRoot":"","sources":["../../../src/classes/FaceDetection.ts"],"names":[],"mappings":";AAAA,OAAO,EAAc,eAAe,EAAQ,MAAM,6BAA6B,CAAC;AAEhF;IAAmC,yCAAe;IAChD,uBACE,KAAa,EACb,WAAiB,EACjB,SAAqB;eAErB,kBAAM,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC;IACjD,CAAC;IACH,oBAAC;AAAD,CAAC,AARD,CAAmC,eAAe,GAQjD"}
\ No newline at end of file
{"version":3,"file":"FaceDetection.js","sourceRoot":"","sources":["../../../src/classes/FaceDetection.ts"],"names":[],"mappings":";AAAA,OAAO,EAAoB,eAAe,EAAQ,MAAM,6BAA6B,CAAC;AAOtF;IAAmC,yCAAe;IAChD,uBACE,KAAa,EACb,WAAiB,EACjB,SAAsB;eAEtB,kBAAM,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC;IACjD,CAAC;IACH,oBAAC;AAAD,CAAC,AARD,CAAmC,eAAe,GAQjD"}
\ No newline at end of file
import { FaceDetection } from './FaceDetection';
import { FaceLandmarks } from './FaceLandmarks';
import { FaceLandmarks68 } from './FaceLandmarks68';
export interface IFaceDetectionWithLandmarks<TFaceLandmarks extends FaceLandmarks = FaceLandmarks68> {
detection: FaceDetection;
landmarks: TFaceLandmarks;
}
export declare class FaceDetectionWithLandmarks<TFaceLandmarks extends FaceLandmarks = FaceLandmarks68> implements IFaceDetectionWithLandmarks<TFaceLandmarks> {
private _detection;
private _unshiftedLandmarks;
constructor(detection: FaceDetection, unshiftedLandmarks: TFaceLandmarks);
readonly detection: FaceDetection;
readonly unshiftedLandmarks: TFaceLandmarks;
readonly alignedRect: FaceDetection;
readonly landmarks: TFaceLandmarks;
readonly faceDetection: FaceDetection;
readonly faceLandmarks: TFaceLandmarks;
forSize(width: number, height: number): FaceDetectionWithLandmarks<TFaceLandmarks>;
}
import { FaceDetection } from './FaceDetection';
var FaceDetectionWithLandmarks = /** @class */ (function () {
function FaceDetectionWithLandmarks(detection, unshiftedLandmarks) {
this._detection = detection;
this._unshiftedLandmarks = unshiftedLandmarks;
}
Object.defineProperty(FaceDetectionWithLandmarks.prototype, "detection", {
get: function () { return this._detection; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetectionWithLandmarks.prototype, "unshiftedLandmarks", {
get: function () { return this._unshiftedLandmarks; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetectionWithLandmarks.prototype, "alignedRect", {
get: function () {
var rect = this.landmarks.align();
var imageDims = this.detection.imageDims;
return new FaceDetection(this._detection.score, rect.rescale(imageDims.reverse()), imageDims);
},
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetectionWithLandmarks.prototype, "landmarks", {
get: function () {
var _a = this.detection.box, x = _a.x, y = _a.y;
return this._unshiftedLandmarks.shiftBy(x, y);
},
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetectionWithLandmarks.prototype, "faceDetection", {
// aliases for backward compatibily
get: function () { return this.detection; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetectionWithLandmarks.prototype, "faceLandmarks", {
get: function () { return this.landmarks; },
enumerable: true,
configurable: true
});
FaceDetectionWithLandmarks.prototype.forSize = function (width, height) {
var resizedDetection = this._detection.forSize(width, height);
var resizedLandmarks = this._unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height);
return new FaceDetectionWithLandmarks(resizedDetection, resizedLandmarks);
};
return FaceDetectionWithLandmarks;
}());
export { FaceDetectionWithLandmarks };
//# sourceMappingURL=FaceDetectionWithLandmarks.js.map
\ No newline at end of file
{"version":3,"file":"FaceDetectionWithLandmarks.js","sourceRoot":"","sources":["../../../src/classes/FaceDetectionWithLandmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAShD;IAME,oCACE,SAAwB,EACxB,kBAAkC;QAElC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC3B,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAA;IAC/C,CAAC;IAED,sBAAW,iDAAS;aAApB,cAAwC,OAAO,IAAI,CAAC,UAAU,CAAA,CAAC,CAAC;;;OAAA;IAChE,sBAAW,0DAAkB;aAA7B,cAAkD,OAAO,IAAI,CAAC,mBAAmB,CAAA,CAAC,CAAC;;;OAAA;IAEnF,sBAAW,mDAAW;aAAtB;YACE,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;YAC3B,IAAA,oCAAS,CAAmB;YACpC,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;QAC/F,CAAC;;;OAAA;IAED,sBAAW,iDAAS;aAApB;YACQ,IAAA,uBAA6B,EAA3B,QAAC,EAAE,QAAC,CAAuB;YACnC,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC/C,CAAC;;;OAAA;IAGD,sBAAI,qDAAa;QADjB,mCAAmC;aACnC,cAAqC,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;;;OAAA;IAC5D,sBAAI,qDAAa;aAAjB,cAAsC,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;;;OAAA;IAEtD,4CAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QAC1C,IAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC/D,IAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAiB,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAClI,OAAO,IAAI,0BAA0B,CAAiB,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;IAC3F,CAAC;IACH,iCAAC;AAAD,CAAC,AArCD,IAqCC"}
\ No newline at end of file
import { Dimensions, Point, Rect } from 'tfjs-image-recognition-base';
import { Dimensions, IDimensions, Point, Rect } from 'tfjs-image-recognition-base';
import { FaceDetection } from './FaceDetection';
export declare class FaceLandmarks {
protected _imageWidth: number;
protected _imageHeight: number;
export interface IFaceLandmarks {
positions: Point[];
shift: Point;
}
export declare class FaceLandmarks implements IFaceLandmarks {
protected _shift: Point;
protected _faceLandmarks: Point[];
constructor(relativeFaceLandmarkPositions: Point[], imageDims: Dimensions, shift?: Point);
getShift(): Point;
getImageWidth(): number;
getImageHeight(): number;
getPositions(): Point[];
getRelativePositions(): Point[];
protected _positions: Point[];
protected _imgDims: Dimensions;
constructor(relativeFaceLandmarkPositions: Point[], imgDims: IDimensions, shift?: Point);
readonly shift: Point;
readonly imageWidth: number;
readonly imageHeight: number;
readonly positions: Point[];
readonly relativePositions: Point[];
forSize<T extends FaceLandmarks>(width: number, height: number): T;
shift<T extends FaceLandmarks>(x: number, y: number): T;
shiftBy<T extends FaceLandmarks>(x: number, y: number): T;
shiftByPoint<T extends FaceLandmarks>(pt: Point): T;
/**
* Aligns the face landmarks after face detection from the relative positions of the faces
......
import { getCenterPoint, Point, Rect } from 'tfjs-image-recognition-base';
import { Dimensions, getCenterPoint, Point, Rect } from 'tfjs-image-recognition-base';
import { FaceDetection } from './FaceDetection';
// face alignment constants
var relX = 0.5;
var relY = 0.43;
var relScale = 0.45;
var FaceLandmarks = /** @class */ (function () {
function FaceLandmarks(relativeFaceLandmarkPositions, imageDims, shift) {
function FaceLandmarks(relativeFaceLandmarkPositions, imgDims, shift) {
if (shift === void 0) { shift = new Point(0, 0); }
var width = imageDims.width, height = imageDims.height;
this._imageWidth = width;
this._imageHeight = height;
var width = imgDims.width, height = imgDims.height;
this._imgDims = new Dimensions(width, height);
this._shift = shift;
this._faceLandmarks = relativeFaceLandmarkPositions.map(function (pt) { return pt.mul(new Point(width, height)).add(shift); });
this._positions = relativeFaceLandmarkPositions.map(function (pt) { return pt.mul(new Point(width, height)).add(shift); });
}
FaceLandmarks.prototype.getShift = function () {
return new Point(this._shift.x, this._shift.y);
};
FaceLandmarks.prototype.getImageWidth = function () {
return this._imageWidth;
};
FaceLandmarks.prototype.getImageHeight = function () {
return this._imageHeight;
};
FaceLandmarks.prototype.getPositions = function () {
return this._faceLandmarks;
};
FaceLandmarks.prototype.getRelativePositions = function () {
Object.defineProperty(FaceLandmarks.prototype, "shift", {
get: function () { return new Point(this._shift.x, this._shift.y); },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceLandmarks.prototype, "imageWidth", {
get: function () { return this._imgDims.width; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceLandmarks.prototype, "imageHeight", {
get: function () { return this._imgDims.height; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceLandmarks.prototype, "positions", {
get: function () { return this._positions; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceLandmarks.prototype, "relativePositions", {
get: function () {
var _this = this;
return this._faceLandmarks.map(function (pt) { return pt.sub(_this._shift).div(new Point(_this._imageWidth, _this._imageHeight)); });
};
return this._positions.map(function (pt) { return pt.sub(_this._shift).div(new Point(_this.imageWidth, _this.imageHeight)); });
},
enumerable: true,
configurable: true
});
FaceLandmarks.prototype.forSize = function (width, height) {
return new this.constructor(this.getRelativePositions(), { width: width, height: height });
return new this.constructor(this.relativePositions, { width: width, height: height });
};
FaceLandmarks.prototype.shift = function (x, y) {
return new this.constructor(this.getRelativePositions(), { width: this._imageWidth, height: this._imageHeight }, new Point(x, y));
FaceLandmarks.prototype.shiftBy = function (x, y) {
return new this.constructor(this.relativePositions, this._imgDims, new Point(x, y));
};
FaceLandmarks.prototype.shiftByPoint = function (pt) {
return this.shift(pt.x, pt.y);
return this.shiftBy(pt.x, pt.y);
};
/**
* Aligns the face landmarks after face detection from the relative positions of the faces
......@@ -52,9 +63,9 @@ var FaceLandmarks = /** @class */ (function () {
FaceLandmarks.prototype.align = function (detection) {
if (detection) {
var box = detection instanceof FaceDetection
? detection.getBox().floor()
? detection.box.floor()
: detection;
return this.shift(box.x, box.y).align();
return this.shiftBy(box.x, box.y).align();
}
var centers = this.getRefPointsForAlignment();
var leftEyeCenter = centers[0], rightEyeCenter = centers[1], mouthCenter = centers[2];
......@@ -65,7 +76,7 @@ var FaceLandmarks = /** @class */ (function () {
// TODO: pad in case rectangle is out of image bounds
var x = Math.floor(Math.max(0, refPoint.x - (relX * size)));
var y = Math.floor(Math.max(0, refPoint.y - (relY * size)));
return new Rect(x, y, Math.min(size, this._imageWidth + x), Math.min(size, this._imageHeight + y));
return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y));
};
FaceLandmarks.prototype.getRefPointsForAlignment = function () {
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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"}
\ No newline at end of file
{"version":3,"file":"FaceLandmarks.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
......@@ -7,7 +7,7 @@ var FaceLandmarks5 = /** @class */ (function (_super) {
return _super !== null && _super.apply(this, arguments) || this;
}
FaceLandmarks5.prototype.getRefPointsForAlignment = function () {
var pts = this.getPositions();
var pts = this.positions;
return [
pts[0],
pts[1],
......
{"version":3,"file":"FaceLandmarks5.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks5.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAS,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;IAAoC,0CAAa;IAAjD;;IAUA,CAAC;IARW,iDAAwB,GAAlC;QACE,IAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAC/B,OAAO;YACL,GAAG,CAAC,CAAC,CAAC;YACN,GAAG,CAAC,CAAC,CAAC;YACN,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC,CAAA;IACH,CAAC;IACH,qBAAC;AAAD,CAAC,AAVD,CAAoC,aAAa,GAUhD"}
\ No newline at end of file
{"version":3,"file":"FaceLandmarks5.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks5.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAS,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;IAAoC,0CAAa;IAAjD;;IAUA,CAAC;IARW,iDAAwB,GAAlC;QACE,IAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAA;QAC1B,OAAO;YACL,GAAG,CAAC,CAAC,CAAC;YACN,GAAG,CAAC,CAAC,CAAC;YACN,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC,CAAA;IACH,CAAC;IACH,qBAAC;AAAD,CAAC,AAVD,CAAoC,aAAa,GAUhD"}
\ No newline at end of file
......@@ -7,25 +7,25 @@ var FaceLandmarks68 = /** @class */ (function (_super) {
return _super !== null && _super.apply(this, arguments) || this;
}
FaceLandmarks68.prototype.getJawOutline = function () {
return this._faceLandmarks.slice(0, 17);
return this.positions.slice(0, 17);
};
FaceLandmarks68.prototype.getLeftEyeBrow = function () {
return this._faceLandmarks.slice(17, 22);
return this.positions.slice(17, 22);
};
FaceLandmarks68.prototype.getRightEyeBrow = function () {
return this._faceLandmarks.slice(22, 27);
return this.positions.slice(22, 27);
};
FaceLandmarks68.prototype.getNose = function () {
return this._faceLandmarks.slice(27, 36);
return this.positions.slice(27, 36);
};
FaceLandmarks68.prototype.getLeftEye = function () {
return this._faceLandmarks.slice(36, 42);
return this.positions.slice(36, 42);
};
FaceLandmarks68.prototype.getRightEye = function () {
return this._faceLandmarks.slice(42, 48);
return this.positions.slice(42, 48);
};
FaceLandmarks68.prototype.getMouth = function () {
return this._faceLandmarks.slice(48, 68);
return this.positions.slice(48, 68);
};
FaceLandmarks68.prototype.getRefPointsForAlignment = function () {
return [
......
{"version":3,"file":"FaceLandmarks68.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks68.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAS,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD;IAAqC,2CAAa;IAAlD;;IAoCA,CAAC;IAnCQ,uCAAa,GAApB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACzC,CAAC;IAEM,wCAAc,GAArB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,yCAAe,GAAtB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,iCAAO,GAAd;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,oCAAU,GAAjB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,qCAAW,GAAlB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAEM,kCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IAES,kDAAwB,GAAlC;QACE,OAAO;YACL,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE;SAChB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACvB,CAAC;IACH,sBAAC;AAAD,CAAC,AApCD,CAAqC,aAAa,GAoCjD"}
\ No newline at end of file
{"version":3,"file":"FaceLandmarks68.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks68.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAS,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;IAAqC,2CAAa;IAAlD;;IAoCA,CAAC;IAnCQ,uCAAa,GAApB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACpC,CAAC;IAEM,wCAAc,GAArB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,yCAAe,GAAtB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,iCAAO,GAAd;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,oCAAU,GAAjB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,qCAAW,GAAlB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,kCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAES,kDAAwB,GAAlC;QACE,OAAO;YACL,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE;SAChB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACvB,CAAC;IACH,sBAAC;AAAD,CAAC,AApCD,CAAqC,aAAa,GAoCjD"}
\ No newline at end of file
export interface IFaceMatch {
label: string;
distance: number;
}
export declare class FaceMatch implements IFaceMatch {
private _label;
private _distance;
constructor(label: string, distance: number);
readonly label: string;
readonly distance: number;
toString(withDistance?: boolean): string;
}
import { round } from 'tfjs-image-recognition-base';
var FaceMatch = /** @class */ (function () {
function FaceMatch(label, distance) {
this._label = label;
this._distance = distance;
}
Object.defineProperty(FaceMatch.prototype, "label", {
get: function () { return this._label; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceMatch.prototype, "distance", {
get: function () { return this._distance; },
enumerable: true,
configurable: true
});
FaceMatch.prototype.toString = function (withDistance) {
if (withDistance === void 0) { withDistance = true; }
return "" + this.label + (withDistance ? " (" + round(this.distance) + ")" : '');
};
return FaceMatch;
}());
export { FaceMatch };
//# sourceMappingURL=FaceMatch.js.map
\ No newline at end of file
{"version":3,"file":"FaceMatch.js","sourceRoot":"","sources":["../../../src/classes/FaceMatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAOpD;IAIE,mBAAY,KAAa,EAAE,QAAgB;QACzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;IAC3B,CAAC;IAED,sBAAW,4BAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IACjD,sBAAW,+BAAQ;aAAnB,cAAgC,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;;;OAAA;IAEhD,4BAAQ,GAAf,UAAgB,YAA4B;QAA5B,6BAAA,EAAA,mBAA4B;QAC1C,OAAO,KAAG,IAAI,CAAC,KAAK,IAAG,YAAY,CAAC,CAAC,CAAC,OAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAA;IAC3E,CAAC;IACH,gBAAC;AAAD,CAAC,AAfD,IAeC"}
\ No newline at end of file
import { FaceDetection } from './FaceDetection';
import { FaceDetectionWithLandmarks, IFaceDetectionWithLandmarks } from './FaceDetectionWithLandmarks';
import { FaceLandmarks } from './FaceLandmarks';
export declare class FullFaceDescription {
private _detection;
private _landmarks;
import { FaceLandmarks68 } from './FaceLandmarks68';
export interface IFullFaceDescription<TFaceLandmarks extends FaceLandmarks = FaceLandmarks68> extends IFaceDetectionWithLandmarks<TFaceLandmarks> {
detection: FaceDetection;
landmarks: TFaceLandmarks;
descriptor: Float32Array;
}
export declare class FullFaceDescription<TFaceLandmarks extends FaceLandmarks = FaceLandmarks68> extends FaceDetectionWithLandmarks<TFaceLandmarks> implements IFullFaceDescription<TFaceLandmarks> {
private _descriptor;
constructor(_detection: FaceDetection, _landmarks: FaceLandmarks, _descriptor: Float32Array);
readonly detection: FaceDetection;
readonly landmarks: FaceLandmarks;
constructor(detection: FaceDetection, unshiftedLandmarks: TFaceLandmarks, descriptor: Float32Array);
readonly descriptor: Float32Array;
forSize(width: number, height: number): FullFaceDescription;
forSize(width: number, height: number): FullFaceDescription<TFaceLandmarks>;
}
var FullFaceDescription = /** @class */ (function () {
function FullFaceDescription(_detection, _landmarks, _descriptor) {
this._detection = _detection;
this._landmarks = _landmarks;
this._descriptor = _descriptor;
import * as tslib_1 from "tslib";
import { FaceDetectionWithLandmarks } from './FaceDetectionWithLandmarks';
var FullFaceDescription = /** @class */ (function (_super) {
tslib_1.__extends(FullFaceDescription, _super);
function FullFaceDescription(detection, unshiftedLandmarks, descriptor) {
var _this = _super.call(this, detection, unshiftedLandmarks) || this;
_this._descriptor = descriptor;
return _this;
}
Object.defineProperty(FullFaceDescription.prototype, "detection", {
get: function () {
return this._detection;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FullFaceDescription.prototype, "landmarks", {
get: function () {
return this._landmarks;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FullFaceDescription.prototype, "descriptor", {
get: function () {
return this._descriptor;
......@@ -26,9 +15,10 @@ var FullFaceDescription = /** @class */ (function () {
configurable: true
});
FullFaceDescription.prototype.forSize = function (width, height) {
return new FullFaceDescription(this._detection.forSize(width, height), this._landmarks.forSize(width, height), this._descriptor);
var _a = _super.prototype.forSize.call(this, width, height), detection = _a.detection, landmarks = _a.landmarks;
return new FullFaceDescription(detection, landmarks, this.descriptor);
};
return FullFaceDescription;
}());
}(FaceDetectionWithLandmarks));
export { FullFaceDescription };
//# sourceMappingURL=FullFaceDescription.js.map
\ No newline at end of file
{"version":3,"file":"FullFaceDescription.js","sourceRoot":"","sources":["../../../src/classes/FullFaceDescription.ts"],"names":[],"mappings":"AAGA;IACE,6BACU,UAAyB,EACzB,UAAyB,EACzB,WAAyB;QAFzB,eAAU,GAAV,UAAU,CAAe;QACzB,eAAU,GAAV,UAAU,CAAe;QACzB,gBAAW,GAAX,WAAW,CAAc;IAChC,CAAC;IAEJ,sBAAW,0CAAS;aAApB;YACE,OAAO,IAAI,CAAC,UAAU,CAAA;QACxB,CAAC;;;OAAA;IAED,sBAAW,0CAAS;aAApB;YACE,OAAO,IAAI,CAAC,UAAU,CAAA;QACxB,CAAC;;;OAAA;IAED,sBAAW,2CAAU;aAArB;YACE,OAAO,IAAI,CAAC,WAAW,CAAA;QACzB,CAAC;;;OAAA;IAEM,qCAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,mBAAmB,CAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EACtC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EACtC,IAAI,CAAC,WAAW,CACjB,CAAA;IACH,CAAC;IACH,0BAAC;AAAD,CAAC,AA1BD,IA0BC"}
\ No newline at end of file
{"version":3,"file":"FullFaceDescription.js","sourceRoot":"","sources":["../../../src/classes/FullFaceDescription.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,0BAA0B,EAA+B,MAAM,8BAA8B,CAAC;AAYvG;IACU,+CAA0C;IAKlD,6BACE,SAAwB,EACxB,kBAAkC,EAClC,UAAwB;QAH1B,YAKE,kBAAM,SAAS,EAAE,kBAAkB,CAAC,SAErC;QADC,KAAI,CAAC,WAAW,GAAG,UAAU,CAAA;;IAC/B,CAAC;IAED,sBAAW,2CAAU;aAArB;YACE,OAAO,IAAI,CAAC,WAAW,CAAA;QACzB,CAAC;;;OAAA;IAEM,qCAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QACpC,IAAA,uDAAuD,EAArD,wBAAS,EAAE,wBAAS,CAAiC;QAC7D,OAAO,IAAI,mBAAmB,CAAiB,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACvF,CAAC;IACH,0BAAC;AAAD,CAAC,AAvBD,CACU,0BAA0B,GAsBnC"}
\ No newline at end of file
export declare class LabeledFaceDescriptors {
private _label;
private _descriptors;
constructor(label: string, descriptors: Float32Array[]);
readonly label: string;
readonly descriptors: Float32Array[];
}
var LabeledFaceDescriptors = /** @class */ (function () {
function LabeledFaceDescriptors(label, descriptors) {
if (!(typeof label === 'string')) {
throw new Error('LabeledFaceDescriptors - constructor expected label to be a string');
}
if (!Array.isArray(descriptors) || descriptors.some(function (desc) { return !(desc instanceof Float32Array); })) {
throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array');
}
this._label = label;
this._descriptors = descriptors;
}
Object.defineProperty(LabeledFaceDescriptors.prototype, "label", {
get: function () { return this._label; },
enumerable: true,
configurable: true
});
Object.defineProperty(LabeledFaceDescriptors.prototype, "descriptors", {
get: function () { return this._descriptors; },
enumerable: true,
configurable: true
});
return LabeledFaceDescriptors;
}());
export { LabeledFaceDescriptors };
//# sourceMappingURL=LabeledFaceDescriptors.js.map
\ No newline at end of file
{"version":3,"file":"LabeledFaceDescriptors.js","sourceRoot":"","sources":["../../../src/classes/LabeledFaceDescriptors.ts"],"names":[],"mappings":"AAAA;IAIE,gCAAY,KAAa,EAAE,WAA2B;QACpD,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;SACtF;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,CAAC,IAAI,YAAY,YAAY,CAAC,EAA/B,CAA+B,CAAC,EAAE;YAC5F,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;SAC5G;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;IACjC,CAAC;IAED,sBAAW,yCAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IACjD,sBAAW,+CAAW;aAAtB,cAA2C,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;;;OAAA;IACvE,6BAAC;AAAD,CAAC,AAnBD,IAmBC"}
\ No newline at end of file
export * from './FaceDetection';
export * from './FaceDetectionWithLandmarks';
export * from './FaceLandmarks';
export * from './FaceLandmarks5';
export * from './FaceLandmarks68';
export * from './FaceMatch';
export * from './FullFaceDescription';
export * from './LabeledFaceDescriptors';
export * from './FaceDetection';
export * from './FaceDetectionWithLandmarks';
export * from './FaceLandmarks';
export * from './FaceLandmarks5';
export * from './FaceLandmarks68';
export * from './FaceMatch';
export * from './FullFaceDescription';
export * from './LabeledFaceDescriptors';
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/classes/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/classes/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC"}
\ No newline at end of file
......@@ -27,7 +27,7 @@ export function drawLandmarks(canvasArg, faceLandmarks, options) {
// else draw points
var ptOffset = lineWidth / 2;
ctx.fillStyle = color;
landmarks.getPositions().forEach(function (pt) { return ctx.fillRect(pt.x - ptOffset, pt.y - ptOffset, lineWidth, lineWidth); });
landmarks.positions.forEach(function (pt) { return ctx.fillRect(pt.x - ptOffset, pt.y - ptOffset, lineWidth, lineWidth); });
});
}
//# sourceMappingURL=drawLandmarks.js.map
\ No newline at end of file
{"version":3,"file":"drawLandmarks.js","sourceRoot":"","sources":["../../../src/dom/drawLandmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGvG,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,MAAM,wBACJ,SAAqC,EACrC,aAA8C,EAC9C,OAA8B;IAE9B,IAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACtC,IAAI,CAAC,CAAC,MAAM,YAAY,iBAAiB,CAAC,EAAE;QAC1C,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;KACpF;IAED,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAC/B,qBAAqB,CAAC,OAAO,CAAC,EAC9B,CAAC,OAAO,IAAI,EAAE,CAAC,CAChB,CAAA;IAEO,IAAA,0EAAS,CAAyD;IAE1E,IAAM,GAAG,GAAG,mBAAmB,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,eAAe,EAAE;YACrD,GAAG,CAAC,WAAW,GAAG,KAAK,CAAA;YACvB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;YACzB,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC,CAAA;YAC3C,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,cAAc,EAAE,CAAC,CAAA;YAC5C,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC,CAAA;YAC7C,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;YACrC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAA;YAC9C,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAA;YAC/C,WAAW,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,YAAY,EAAE,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;IAC9G,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file
{"version":3,"file":"drawLandmarks.js","sourceRoot":"","sources":["../../../src/dom/drawLandmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGvG,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,MAAM,wBACJ,SAAqC,EACrC,aAA8C,EAC9C,OAA8B;IAE9B,IAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACtC,IAAI,CAAC,CAAC,MAAM,YAAY,iBAAiB,CAAC,EAAE;QAC1C,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;KACpF;IAED,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAC/B,qBAAqB,CAAC,OAAO,CAAC,EAC9B,CAAC,OAAO,IAAI,EAAE,CAAC,CAChB,CAAA;IAEO,IAAA,0EAAS,CAAyD;IAE1E,IAAM,GAAG,GAAG,mBAAmB,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,eAAe,EAAE;YACrD,GAAG,CAAC,WAAW,GAAG,KAAK,CAAA;YACvB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;YACzB,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC,CAAA;YAC3C,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,cAAc,EAAE,CAAC,CAAA;YAC5C,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC,CAAA;YAC7C,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;YACrC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAA;YAC9C,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAA;YAC/C,WAAW,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"}
\ No newline at end of file
......@@ -21,7 +21,7 @@ export function extractFaceTensors(imageTensor, detections) {
return [2 /*return*/, tf.tidy(function () {
var _a = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0), imgHeight = _a[0], imgWidth = _a[1], numChannels = _a[2];
var boxes = detections.map(function (det) { return det instanceof FaceDetection
? det.forSize(imgWidth, imgHeight).getBox()
? det.forSize(imgWidth, imgHeight).box
: det; })
.map(function (box) { return box.clipAtImageBorders(imgWidth, imgHeight); });
var faceTensors = boxes.map(function (_a) {
......
{"version":3,"file":"extractFaceTensors.js","sourceRoot":"","sources":["../../../src/dom/extractFaceTensors.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAQ,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,6BACJ,WAAsC,EACtC,UAAuC;;;YAGvC,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACvD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;aACpE;YAED,sBAAO,EAAE,CAAC,IAAI,CAAC;oBACP,IAAA,6DAA6F,EAA5F,iBAAS,EAAE,gBAAQ,EAAE,mBAAW,CAA4D;oBAEnG,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,aAAa;wBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE;wBAC3C,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;yBACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAA;oBAE1D,IAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;4BAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;wBAClD,OAAA,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;oBAAvG,CAAuG,CACxG,CAAA;oBAED,OAAO,WAAW,CAAA;gBACpB,CAAC,CAAC,EAAA;;;CACH"}
\ No newline at end of file
{"version":3,"file":"extractFaceTensors.js","sourceRoot":"","sources":["../../../src/dom/extractFaceTensors.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAQ,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,6BACJ,WAAsC,EACtC,UAAuC;;;YAGvC,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACvD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;aACpE;YAED,sBAAO,EAAE,CAAC,IAAI,CAAC;oBACP,IAAA,6DAA6F,EAA5F,iBAAS,EAAE,gBAAQ,EAAE,mBAAW,CAA4D;oBAEnG,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,aAAa;wBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,GAAG;wBACtC,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;yBACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAA;oBAE1D,IAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;4BAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;wBAClD,OAAA,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;oBAAvG,CAAuG,CACxG,CAAA;oBAED,OAAO,WAAW,CAAA;gBACpB,CAAC,CAAC,EAAA;;;CACH"}
\ No newline at end of file
......@@ -36,7 +36,7 @@ export function extractFaces(input, detections) {
case 5:
ctx = getContext2dOrThrow(canvas);
boxes = detections.map(function (det) { return det instanceof FaceDetection
? det.forSize(canvas.width, canvas.height).getBox().floor()
? det.forSize(canvas.width, canvas.height).box.floor()
: det; })
.map(function (box) { return box.clipAtImageBorders(canvas.width, canvas.height); });
return [2 /*return*/, boxes.map(function (_a) {
......
{"version":3,"file":"extractFaces.js","sourceRoot":"","sources":["../../../src/dom/extractFaces.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EAGnB,UAAU,GACX,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,uBACJ,KAAgB,EAChB,UAAuC;;;;;;oBAGnC,MAAM,GAAG,KAA0B,CAAA;yBAEnC,CAAC,CAAC,KAAK,YAAY,iBAAiB,CAAC,EAArC,wBAAqC;oBACtB,qBAAM,UAAU,CAAC,KAAK,CAAC,EAAA;;oBAAlC,QAAQ,GAAG,SAAuB;oBAExC,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC1B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;qBAC9D;oBAEK,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;yBAClC,CAAA,cAAc,YAAY,iBAAiB,CAAA,EAA3C,wBAA2C;oBAChD,KAAA,cAAc,CAAA;;wBACd,qBAAM,mBAAmB,CAAC,cAAc,CAAC,EAAA;;oBAAzC,KAAA,SAAyC,CAAA;;;oBAF7C,MAAM,KAEuC,CAAA;;;oBAGzC,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;oBACjC,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,aAAa;wBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;wBAC3D,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;yBACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAnD,CAAmD,CAAC,CAAA;oBAElE,sBAAO,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;gCAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;4BACrC,IAAM,OAAO,GAAG,YAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;4BAC/C,mBAAmB,CAAC,OAAO,CAAC;iCACzB,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;4BAC5D,OAAO,OAAO,CAAA;wBAChB,CAAC,CAAC,EAAA;;;;CACH"}
\ No newline at end of file
{"version":3,"file":"extractFaces.js","sourceRoot":"","sources":["../../../src/dom/extractFaces.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EAGnB,UAAU,GACX,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,uBACJ,KAAgB,EAChB,UAAuC;;;;;;oBAGnC,MAAM,GAAG,KAA0B,CAAA;yBAEnC,CAAC,CAAC,KAAK,YAAY,iBAAiB,CAAC,EAArC,wBAAqC;oBACtB,qBAAM,UAAU,CAAC,KAAK,CAAC,EAAA;;oBAAlC,QAAQ,GAAG,SAAuB;oBAExC,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC1B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;qBAC9D;oBAEK,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;yBAClC,CAAA,cAAc,YAAY,iBAAiB,CAAA,EAA3C,wBAA2C;oBAChD,KAAA,cAAc,CAAA;;wBACd,qBAAM,mBAAmB,CAAC,cAAc,CAAC,EAAA;;oBAAzC,KAAA,SAAyC,CAAA;;;oBAF7C,MAAM,KAEuC,CAAA;;;oBAGzC,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;oBACjC,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,aAAa;wBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE;wBACtD,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;yBACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAnD,CAAmD,CAAC,CAAA;oBAElE,sBAAO,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;gCAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;4BACrC,IAAM,OAAO,GAAG,YAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;4BAC/C,mBAAmB,CAAC,OAAO,CAAC;iCACzB,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;4BAC5D,OAAO,OAAO,CAAA;wBAChB,CAAC,CAAC,EAAA;;;;CACH"}
\ No newline at end of file
......@@ -23,12 +23,12 @@ function denseBlock(x, denseBlockParams, isFirstLayer) {
var FaceLandmark68Net = /** @class */ (function (_super) {
tslib_1.__extends(FaceLandmark68Net, _super);
function FaceLandmark68Net() {
return _super.call(this, 'FaceLandmark68LargeNet') || this;
return _super.call(this, 'FaceLandmark68Net') || this;
}
FaceLandmark68Net.prototype.runNet = function (input) {
var params = this.params;
if (!params) {
throw new Error('FaceLandmark68LargeNet - load model before inference');
throw new Error('FaceLandmark68Net - load model before inference');
}
return tf.tidy(function () {
var batchTensor = input.toBatchTensor(112, true);
......
{"version":3,"file":"FaceLandmark68Net.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68Net.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"FaceLandmark68Net.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68Net.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { NetInput, NeuralNetwork, TNetInput, Dimensions } from 'tfjs-image-recognition-base';
import { IDimensions, NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base';
import { FaceLandmarks68 } from '../classes/FaceLandmarks68';
export declare class FaceLandmark68NetBase<NetParams> extends NeuralNetwork<NetParams> {
private __name;
constructor(_name: string);
runNet(_: NetInput): tf.Tensor2D;
postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: Dimensions[]): tf.Tensor2D;
postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D;
forwardInput(input: NetInput): tf.Tensor2D;
forward(input: TNetInput): Promise<tf.Tensor2D>;
detectLandmarks(input: TNetInput): Promise<FaceLandmarks68 | FaceLandmarks68[]>;
......
{"version":3,"file":"FaceLandmark68NetBase.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68NetBase.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"FaceLandmark68NetBase.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68NetBase.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
......@@ -4,4 +4,3 @@ export * from './FaceLandmark68TinyNet';
export declare class FaceLandmarkNet extends FaceLandmark68Net {
}
export declare function createFaceLandmarkNet(weights: Float32Array): FaceLandmarkNet;
export declare function faceLandmarkNet(weights: Float32Array): FaceLandmarkNet;
......@@ -15,8 +15,4 @@ export function createFaceLandmarkNet(weights) {
net.extractWeights(weights);
return net;
}
export function faceLandmarkNet(weights) {
console.warn('faceLandmarkNet(weights: Float32Array) will be deprecated in future, use createFaceLandmarkNet instead');
return createFaceLandmarkNet(weights);
}
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AAExC;IAAqC,2CAAiB;IAAtD;;IAAwD,CAAC;IAAD,sBAAC;AAAD,CAAC,AAAzD,CAAqC,iBAAiB,GAAG;;AAEzD,MAAM,gCAAgC,OAAqB;IACzD,IAAM,GAAG,GAAG,IAAI,eAAe,EAAE,CAAA;IACjC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,0BAA0B,OAAqB;IACnD,OAAO,CAAC,IAAI,CAAC,wGAAwG,CAAC,CAAA;IACtH,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAA;AACvC,CAAC"}
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AAExC;IAAqC,2CAAiB;IAAtD;;IAAwD,CAAC;IAAD,sBAAC;AAAD,CAAC,AAAzD,CAAqC,iBAAiB,GAAG;;AAEzD,MAAM,gCAAgC,OAAqB;IACzD,IAAM,GAAG,GAAG,IAAI,eAAe,EAAE,CAAA;IACjC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC"}
\ No newline at end of file
import { FaceRecognitionNet } from './FaceRecognitionNet';
export * from './FaceRecognitionNet';
export declare function createFaceRecognitionNet(weights: Float32Array): FaceRecognitionNet;
export declare function faceRecognitionNet(weights: Float32Array): FaceRecognitionNet;
......@@ -5,8 +5,4 @@ export function createFaceRecognitionNet(weights) {
net.extractWeights(weights);
return net;
}
export function faceRecognitionNet(weights) {
console.warn('faceRecognitionNet(weights: Float32Array) will be deprecated in future, use createFaceRecognitionNet instead');
return createFaceRecognitionNet(weights);
}
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,cAAc,sBAAsB,CAAC;AAErC,MAAM,mCAAmC,OAAqB;IAC5D,IAAM,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAA;IACpC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,6BAA6B,OAAqB;IACtD,OAAO,CAAC,IAAI,CAAC,8GAA8G,CAAC,CAAA;IAC5H,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAA;AAC1C,CAAC"}
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,cAAc,sBAAsB,CAAC;AAErC,MAAM,mCAAmC,OAAqB;IAC5D,IAAM,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAA;IACpC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC"}
\ No newline at end of file
export declare class ComposableTask<T> {
then(onfulfilled: (value: T) => T | PromiseLike<T>): Promise<T>;
run(): Promise<T>;
}
import * as tslib_1 from "tslib";
var ComposableTask = /** @class */ (function () {
function ComposableTask() {
}
ComposableTask.prototype.then = function (onfulfilled) {
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 = onfulfilled;
return [4 /*yield*/, this.run()];
case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];
}
});
});
};
ComposableTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
throw new Error('ComposableTask - run is not implemented');
});
});
};
return ComposableTask;
}());
export { ComposableTask };
//# sourceMappingURL=ComposableTask.js.map
\ No newline at end of file
{"version":3,"file":"ComposableTask.js","sourceRoot":"","sources":["../../../src/globalApi/ComposableTask.ts"],"names":[],"mappings":";AAAA;IAAA;IAWA,CAAC;IATc,6BAAI,GAAjB,UACE,WAA6C;;;;;;wBAEtC,KAAA,WAAW,CAAA;wBAAC,qBAAM,IAAI,CAAC,GAAG,EAAE,EAAA;4BAAnC,sBAAO,kBAAY,SAAgB,EAAC,EAAA;;;;KACrC;IAEY,4BAAG,GAAhB;;;gBACE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;;;KAC3D;IACH,qBAAC;AAAD,CAAC,AAXD,IAWC"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { FaceDetectionWithLandmarks } from '../classes/FaceDetectionWithLandmarks';
import { FullFaceDescription } from '../classes/FullFaceDescription';
import { ComposableTask } from './ComposableTask';
export declare class ComputeFaceDescriptorsTaskBase<TReturn, DetectFaceLandmarksReturnType> extends ComposableTask<TReturn> {
protected detectFaceLandmarksTask: ComposableTask<DetectFaceLandmarksReturnType> | Promise<DetectFaceLandmarksReturnType>;
protected input: TNetInput;
constructor(detectFaceLandmarksTask: ComposableTask<DetectFaceLandmarksReturnType> | Promise<DetectFaceLandmarksReturnType>, input: TNetInput);
}
export declare class ComputeAllFaceDescriptorsTask extends ComputeFaceDescriptorsTaskBase<FullFaceDescription[], FaceDetectionWithLandmarks[]> {
run(): Promise<FullFaceDescription[]>;
}
export declare class ComputeSingleFaceDescriptorTask extends ComputeFaceDescriptorsTaskBase<FullFaceDescription | undefined, FaceDetectionWithLandmarks | undefined> {
run(): Promise<FullFaceDescription | undefined>;
}
import * as tslib_1 from "tslib";
import { FullFaceDescription } from '../classes/FullFaceDescription';
import { extractFaces } from '../dom';
import { ComposableTask } from './ComposableTask';
import { nets } from './nets';
var ComputeFaceDescriptorsTaskBase = /** @class */ (function (_super) {
tslib_1.__extends(ComputeFaceDescriptorsTaskBase, _super);
function ComputeFaceDescriptorsTaskBase(detectFaceLandmarksTask, input) {
var _this = _super.call(this) || this;
_this.detectFaceLandmarksTask = detectFaceLandmarksTask;
_this.input = input;
return _this;
}
return ComputeFaceDescriptorsTaskBase;
}(ComposableTask));
export { ComputeFaceDescriptorsTaskBase };
var ComputeAllFaceDescriptorsTask = /** @class */ (function (_super) {
tslib_1.__extends(ComputeAllFaceDescriptorsTask, _super);
function ComputeAllFaceDescriptorsTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
ComputeAllFaceDescriptorsTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _this = this;
var facesWithLandmarks, alignedFaceCanvases;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.detectFaceLandmarksTask];
case 1:
facesWithLandmarks = _a.sent();
return [4 /*yield*/, extractFaces(this.input, facesWithLandmarks.map(function (_a) {
var landmarks = _a.landmarks;
return landmarks.align();
}))];
case 2:
alignedFaceCanvases = _a.sent();
return [4 /*yield*/, Promise.all(facesWithLandmarks.map(function (_a, i) {
var detection = _a.detection, landmarks = _a.landmarks;
return tslib_1.__awaiter(_this, void 0, void 0, function () {
var descriptor;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0: return [4 /*yield*/, nets.faceRecognitionNet.computeFaceDescriptor(alignedFaceCanvases[i])];
case 1:
descriptor = _b.sent();
return [2 /*return*/, new FullFaceDescription(detection, landmarks, descriptor)];
}
});
});
}))];
case 3: return [2 /*return*/, _a.sent()];
}
});
});
};
return ComputeAllFaceDescriptorsTask;
}(ComputeFaceDescriptorsTaskBase));
export { ComputeAllFaceDescriptorsTask };
var ComputeSingleFaceDescriptorTask = /** @class */ (function (_super) {
tslib_1.__extends(ComputeSingleFaceDescriptorTask, _super);
function ComputeSingleFaceDescriptorTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
ComputeSingleFaceDescriptorTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var detectionWithLandmarks, detection, landmarks, alignedRect, alignedFaceCanvas, descriptor;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.detectFaceLandmarksTask];
case 1:
detectionWithLandmarks = _a.sent();
if (!detectionWithLandmarks) {
return [2 /*return*/];
}
detection = detectionWithLandmarks.detection, landmarks = detectionWithLandmarks.landmarks, alignedRect = detectionWithLandmarks.alignedRect;
return [4 /*yield*/, extractFaces(this.input, [alignedRect])];
case 2:
alignedFaceCanvas = (_a.sent())[0];
return [4 /*yield*/, nets.faceRecognitionNet.computeFaceDescriptor(alignedFaceCanvas)];
case 3:
descriptor = _a.sent();
return [2 /*return*/, new FullFaceDescription(detection, landmarks, descriptor)];
}
});
});
};
return ComputeSingleFaceDescriptorTask;
}(ComputeFaceDescriptorsTaskBase));
export { ComputeSingleFaceDescriptorTask };
//# sourceMappingURL=ComputeFaceDescriptorsTasks.js.map
\ No newline at end of file
{"version":3,"file":"ComputeFaceDescriptorsTasks.js","sourceRoot":"","sources":["../../../src/globalApi/ComputeFaceDescriptorsTasks.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;IAA4F,0DAAuB;IACjH,wCACY,uBAA+G,EAC/G,KAAgB;QAF5B,YAIE,iBAAO,SACR;QAJW,6BAAuB,GAAvB,uBAAuB,CAAwF;QAC/G,WAAK,GAAL,KAAK,CAAW;;IAG5B,CAAC;IACH,qCAAC;AAAD,CAAC,AAPD,CAA4F,cAAc,GAOzG;;AAED;IAAmD,yDAAmF;IAAtI;;IAeA,CAAC;IAbc,2CAAG,GAAhB;;;;;;4BAE6B,qBAAM,IAAI,CAAC,uBAAuB,EAAA;;wBAAvD,kBAAkB,GAAG,SAAkC;wBACjC,qBAAM,YAAY,CAC5C,IAAI,CAAC,KAAK,EACV,kBAAkB,CAAC,GAAG,CAAC,UAAC,EAAa;oCAAX,wBAAS;gCAAO,OAAA,SAAS,CAAC,KAAK,EAAE;4BAAjB,CAAiB,CAAC,CAC7D,EAAA;;wBAHK,mBAAmB,GAAG,SAG3B;wBAEM,qBAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAO,EAAwB,EAAE,CAAC;oCAAzB,wBAAS,EAAE,wBAAS;;;;;oDACxD,qBAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAA;;gDAAxF,UAAU,GAAG,SAA2F;gDAC9G,sBAAO,IAAI,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAA;;;;6BACjE,CAAC,CAAC,EAAA;4BAHH,sBAAO,SAGJ,EAAA;;;;KACJ;IACH,oCAAC;AAAD,CAAC,AAfD,CAAmD,8BAA8B,GAehF;;AAED;IAAqD,2DAAuG;IAA5J;;IAeA,CAAC;IAbc,6CAAG,GAAhB;;;;;4BAEiC,qBAAM,IAAI,CAAC,uBAAuB,EAAA;;wBAA3D,sBAAsB,GAAG,SAAkC;wBACjE,IAAI,CAAC,sBAAsB,EAAE;4BAC3B,sBAAM;yBACP;wBAEO,SAAS,GAA6B,sBAAsB,UAAnD,EAAE,SAAS,GAAkB,sBAAsB,UAAxC,EAAE,WAAW,GAAK,sBAAsB,YAA3B,CAA2B;wBACzC,qBAAM,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,EAAA;;wBAAlE,iBAAiB,GAAG,CAAC,SAA6C,CAAC,CAAC,CAAC,CAAC;wBACzD,qBAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,EAAA;;wBAAnF,UAAU,GAAG,SAAsF;wBAEzG,sBAAO,IAAI,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAA;;;;KACjE;IACH,sCAAC;AAAD,CAAC,AAfD,CAAqD,8BAA8B,GAelF"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { FaceDetection } from '../classes/FaceDetection';
import { FaceDetectionWithLandmarks } from '../classes/FaceDetectionWithLandmarks';
import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';
import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';
import { ComposableTask } from './ComposableTask';
import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';
export declare class DetectFaceLandmarksTaskBase<ReturnType, DetectFacesReturnType> extends ComposableTask<ReturnType> {
protected detectFacesTask: ComposableTask<DetectFacesReturnType> | Promise<DetectFacesReturnType>;
protected input: TNetInput;
protected useTinyLandmarkNet: boolean;
constructor(detectFacesTask: ComposableTask<DetectFacesReturnType> | Promise<DetectFacesReturnType>, input: TNetInput, useTinyLandmarkNet: boolean);
protected readonly landmarkNet: FaceLandmark68Net | FaceLandmark68TinyNet;
}
export declare class DetectAllFaceLandmarksTask extends DetectFaceLandmarksTaskBase<FaceDetectionWithLandmarks[], FaceDetection[]> {
run(): Promise<FaceDetectionWithLandmarks[]>;
withFaceDescriptors(): ComputeAllFaceDescriptorsTask;
}
export declare class DetectSingleFaceLandmarksTask extends DetectFaceLandmarksTaskBase<FaceDetectionWithLandmarks | undefined, FaceDetection | undefined> {
run(): Promise<FaceDetectionWithLandmarks | undefined>;
withFaceDescriptor(): ComputeSingleFaceDescriptorTask;
}
import * as tslib_1 from "tslib";
import { FaceDetectionWithLandmarks } from '../classes/FaceDetectionWithLandmarks';
import { extractFaces } from '../dom';
import { ComposableTask } from './ComposableTask';
import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';
import { nets } from './nets';
var DetectFaceLandmarksTaskBase = /** @class */ (function (_super) {
tslib_1.__extends(DetectFaceLandmarksTaskBase, _super);
function DetectFaceLandmarksTaskBase(detectFacesTask, input, useTinyLandmarkNet) {
var _this = _super.call(this) || this;
_this.detectFacesTask = detectFacesTask;
_this.input = input;
_this.useTinyLandmarkNet = useTinyLandmarkNet;
return _this;
}
Object.defineProperty(DetectFaceLandmarksTaskBase.prototype, "landmarkNet", {
get: function () {
return this.useTinyLandmarkNet
? nets.faceLandmark68TinyNet
: nets.faceLandmark68Net;
},
enumerable: true,
configurable: true
});
return DetectFaceLandmarksTaskBase;
}(ComposableTask));
export { DetectFaceLandmarksTaskBase };
var DetectAllFaceLandmarksTask = /** @class */ (function (_super) {
tslib_1.__extends(DetectAllFaceLandmarksTask, _super);
function DetectAllFaceLandmarksTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
DetectAllFaceLandmarksTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _this = this;
var detections, faceCanvases, faceLandmarksByFace;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.detectFacesTask];
case 1:
detections = _a.sent();
return [4 /*yield*/, extractFaces(this.input, detections)];
case 2:
faceCanvases = _a.sent();
return [4 /*yield*/, Promise.all(faceCanvases.map(function (canvas) { return _this.landmarkNet.detectLandmarks(canvas); }))];
case 3:
faceLandmarksByFace = _a.sent();
return [2 /*return*/, detections.map(function (detection, i) {
return new FaceDetectionWithLandmarks(detection, faceLandmarksByFace[i]);
})];
}
});
});
};
DetectAllFaceLandmarksTask.prototype.withFaceDescriptors = function () {
return new ComputeAllFaceDescriptorsTask(this, this.input);
};
return DetectAllFaceLandmarksTask;
}(DetectFaceLandmarksTaskBase));
export { DetectAllFaceLandmarksTask };
var DetectSingleFaceLandmarksTask = /** @class */ (function (_super) {
tslib_1.__extends(DetectSingleFaceLandmarksTask, _super);
function DetectSingleFaceLandmarksTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
DetectSingleFaceLandmarksTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var detection, faceCanvas, _a, _b;
return tslib_1.__generator(this, function (_c) {
switch (_c.label) {
case 0: return [4 /*yield*/, this.detectFacesTask];
case 1:
detection = _c.sent();
if (!detection) {
return [2 /*return*/];
}
return [4 /*yield*/, extractFaces(this.input, [detection])];
case 2:
faceCanvas = (_c.sent())[0];
_a = FaceDetectionWithLandmarks.bind;
_b = [void 0, detection];
return [4 /*yield*/, this.landmarkNet.detectLandmarks(faceCanvas)];
case 3: return [2 /*return*/, new (_a.apply(FaceDetectionWithLandmarks, _b.concat([_c.sent()])))()];
}
});
});
};
DetectSingleFaceLandmarksTask.prototype.withFaceDescriptor = function () {
return new ComputeSingleFaceDescriptorTask(this, this.input);
};
return DetectSingleFaceLandmarksTask;
}(DetectFaceLandmarksTaskBase));
export { DetectSingleFaceLandmarksTask };
//# sourceMappingURL=DetectFaceLandmarksTasks.js.map
\ No newline at end of file
{"version":3,"file":"DetectFaceLandmarksTasks.js","sourceRoot":"","sources":["../../../src/globalApi/DetectFaceLandmarksTasks.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAC/G,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;IAAoF,uDAA0B;IAC5G,qCACY,eAAuF,EACvF,KAAgB,EAChB,kBAA2B;QAHvC,YAKE,iBAAO,SACR;QALW,qBAAe,GAAf,eAAe,CAAwE;QACvF,WAAK,GAAL,KAAK,CAAW;QAChB,wBAAkB,GAAlB,kBAAkB,CAAS;;IAGvC,CAAC;IAED,sBAAc,oDAAW;aAAzB;YACE,OAAO,IAAI,CAAC,kBAAkB;gBAC5B,CAAC,CAAC,IAAI,CAAC,qBAAqB;gBAC5B,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAA;QAC5B,CAAC;;;OAAA;IACH,kCAAC;AAAD,CAAC,AAdD,CAAoF,cAAc,GAcjG;;AAED;IAAgD,sDAA0E;IAA1H;;IAmBA,CAAC;IAjBc,wCAAG,GAAhB;;;;;;4BAEqB,qBAAM,IAAI,CAAC,eAAe,EAAA;;wBAAvC,UAAU,GAAG,SAA0B;wBACxB,qBAAM,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAAA;;wBAAzD,YAAY,GAAG,SAA0C;wBAEnC,qBAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAC5D,UAAA,MAAM,IAAI,OAAA,KAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,EAAxC,CAAwC,CACnD,CAAC,EAAA;;wBAFI,mBAAmB,GAAG,SAEL;wBAEvB,sBAAO,UAAU,CAAC,GAAG,CAAC,UAAC,SAAS,EAAE,CAAC;gCACjC,OAAA,IAAI,0BAA0B,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;4BAAjE,CAAiE,CAClE,EAAA;;;;KACF;IAED,wDAAmB,GAAnB;QACE,OAAO,IAAI,6BAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5D,CAAC;IACH,iCAAC;AAAD,CAAC,AAnBD,CAAgD,2BAA2B,GAmB1E;;AAED;IAAmD,yDAA8F;IAAjJ;;IAmBA,CAAC;IAjBc,2CAAG,GAAhB;;;;;4BAEoB,qBAAM,IAAI,CAAC,eAAe,EAAA;;wBAAtC,SAAS,GAAG,SAA0B;wBAC5C,IAAI,CAAC,SAAS,EAAE;4BACd,sBAAM;yBACP;wBAEmB,qBAAM,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,EAAA;;wBAAzD,UAAU,GAAG,CAAC,SAA2C,CAAC,CAAC,CAAC,CAAC;6BACxD,0BAA0B;sCACnC,SAAS;wBACT,qBAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,EAAA;4BAFpD,sBAAO,cAAI,0BAA0B,aAEnC,SAAqE,MACtE,EAAA;;;;KACF;IAED,0DAAkB,GAAlB;QACE,OAAO,IAAI,+BAA+B,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9D,CAAC;IACH,oCAAC;AAAD,CAAC,AAnBD,CAAmD,2BAA2B,GAmB7E"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { FaceDetection } from '../classes/FaceDetection';
import { ComposableTask } from './ComposableTask';
import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';
import { FaceDetectionOptions } from './types';
export declare function detectSingleFace(input: TNetInput, options?: FaceDetectionOptions): DetectSingleFaceTask;
export declare function detectAllFaces(input: TNetInput, options?: FaceDetectionOptions): DetectAllFacesTask;
export declare class DetectFacesTaskBase<TReturn> extends ComposableTask<TReturn> {
protected input: TNetInput;
protected options: FaceDetectionOptions;
constructor(input: TNetInput, options?: FaceDetectionOptions);
}
export declare class DetectAllFacesTask extends DetectFacesTaskBase<FaceDetection[]> {
run(): Promise<FaceDetection[]>;
withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectAllFaceLandmarksTask;
}
export declare class DetectSingleFaceTask extends DetectFacesTaskBase<FaceDetection | undefined> {
run(): Promise<FaceDetection | undefined>;
withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectSingleFaceLandmarksTask;
}
import * as tslib_1 from "tslib";
import { TinyYolov2Options } from 'tfjs-tiny-yolov2';
import { MtcnnOptions } from '../mtcnn/MtcnnOptions';
import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';
import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';
import { ComposableTask } from './ComposableTask';
import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';
import { nets } from './nets';
export function detectSingleFace(input, options) {
if (options === void 0) { options = new SsdMobilenetv1Options(); }
return new DetectSingleFaceTask(input, options);
}
export function detectAllFaces(input, options) {
if (options === void 0) { options = new SsdMobilenetv1Options(); }
return new DetectAllFacesTask(input, options);
}
var DetectFacesTaskBase = /** @class */ (function (_super) {
tslib_1.__extends(DetectFacesTaskBase, _super);
function DetectFacesTaskBase(input, options) {
if (options === void 0) { options = new SsdMobilenetv1Options(); }
var _this = _super.call(this) || this;
_this.input = input;
_this.options = options;
return _this;
}
return DetectFacesTaskBase;
}(ComposableTask));
export { DetectFacesTaskBase };
var DetectAllFacesTask = /** @class */ (function (_super) {
tslib_1.__extends(DetectAllFacesTask, _super);
function DetectAllFacesTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
DetectAllFacesTask.prototype.run = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, input, options, faceDetectionFunction;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = this, input = _a.input, options = _a.options;
if (!(options instanceof MtcnnOptions)) return [3 /*break*/, 2];
return [4 /*yield*/, nets.mtcnn.forward(input, options)];
case 1: return [2 /*return*/, (_b.sent())
.map(function (result) { return result.faceDetection; })];
case 2:
faceDetectionFunction = options instanceof TinyFaceDetectorOptions
? function (input) { return nets.tinyFaceDetector.locateFaces(input, options); }
: (options instanceof SsdMobilenetv1Options
? function (input) { return nets.ssdMobilenetv1.locateFaces(input, options); }
: (options instanceof TinyYolov2Options
? function (input) { return nets.tinyYolov2.locateFaces(input, options); }
: null));
if (!faceDetectionFunction) {
throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options');
}
return [2 /*return*/, faceDetectionFunction(input)];
}
});
});
};
DetectAllFacesTask.prototype.withFaceLandmarks = function (useTinyLandmarkNet) {
if (useTinyLandmarkNet === void 0) { useTinyLandmarkNet = false; }
return new DetectAllFaceLandmarksTask(this, this.input, useTinyLandmarkNet);
};
return DetectAllFacesTask;
}(DetectFacesTaskBase));
export { DetectAllFacesTask };
var DetectSingleFaceTask = /** @class */ (function (_super) {
tslib_1.__extends(DetectSingleFaceTask, _super);
function DetectSingleFaceTask() {
return _super !== null && _super.apply(this, arguments) || this;
}
DetectSingleFaceTask.prototype.run = function () {
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*/, new DetectAllFacesTask(this.input, this.options)];
case 1: return [2 /*return*/, (_a.sent())
.sort(function (f1, f2) { return f1.score - f2.score; })[0]];
}
});
});
};
DetectSingleFaceTask.prototype.withFaceLandmarks = function (useTinyLandmarkNet) {
if (useTinyLandmarkNet === void 0) { useTinyLandmarkNet = false; }
return new DetectSingleFaceLandmarksTask(this, this.input, useTinyLandmarkNet);
};
return DetectSingleFaceTask;
}(DetectFacesTaskBase));
export { DetectSingleFaceTask };
//# sourceMappingURL=DetectFacesTasks.js.map
\ No newline at end of file
{"version":3,"file":"DetectFacesTasks.js","sourceRoot":"","sources":["../../../src/globalApi/DetectFacesTasks.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import { FaceMatch } from '../classes/FaceMatch';
import { FullFaceDescription } from '../classes/FullFaceDescription';
import { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';
export declare class FaceMatcher {
private _labeledDescriptors;
private _distanceThreshold;
constructor(inputs: LabeledFaceDescriptors | FullFaceDescription | Float32Array | Array<LabeledFaceDescriptors | FullFaceDescription | Float32Array>, distanceThreshold?: number);
readonly labeledDescriptors: LabeledFaceDescriptors[];
readonly distanceThreshold: number;
computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number;
matchDescriptor(queryDescriptor: Float32Array): FaceMatch;
findBestMatch(queryDescriptor: Float32Array): FaceMatch;
}
import { FaceMatch } from '../classes/FaceMatch';
import { FullFaceDescription } from '../classes/FullFaceDescription';
import { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';
import { euclideanDistance } from '../euclideanDistance';
var FaceMatcher = /** @class */ (function () {
function FaceMatcher(inputs, distanceThreshold) {
if (distanceThreshold === void 0) { distanceThreshold = 0.6; }
this._distanceThreshold = distanceThreshold;
var inputArray = Array.isArray(inputs) ? inputs : [inputs];
if (!inputArray.length) {
throw new Error("FaceRecognizer.constructor - expected atleast one input");
}
var count = 1;
var createUniqueLabel = function () { return "person " + count++; };
this._labeledDescriptors = inputArray.map(function (desc) {
if (desc instanceof LabeledFaceDescriptors) {
return desc;
}
if (desc instanceof FullFaceDescription) {
return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]);
}
if (desc instanceof Float32Array) {
return new LabeledFaceDescriptors(createUniqueLabel(), [desc]);
}
throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | FullFaceDescription | Float32Array | Array<LabeledFaceDescriptors | FullFaceDescription | Float32Array>");
});
}
Object.defineProperty(FaceMatcher.prototype, "labeledDescriptors", {
get: function () { return this._labeledDescriptors; },
enumerable: true,
configurable: true
});
Object.defineProperty(FaceMatcher.prototype, "distanceThreshold", {
get: function () { return this._distanceThreshold; },
enumerable: true,
configurable: true
});
FaceMatcher.prototype.computeMeanDistance = function (queryDescriptor, descriptors) {
return descriptors
.map(function (d) { return euclideanDistance(d, queryDescriptor); })
.reduce(function (d1, d2) { return d1 + d2; }, 0)
/ (descriptors.length || 1);
};
FaceMatcher.prototype.matchDescriptor = function (queryDescriptor) {
var _this = this;
return this.labeledDescriptors
.map(function (_a) {
var descriptors = _a.descriptors, label = _a.label;
return new FaceMatch(label, _this.computeMeanDistance(queryDescriptor, descriptors));
})
.reduce(function (best, curr) { return best.distance < curr.distance ? best : curr; });
};
FaceMatcher.prototype.findBestMatch = function (queryDescriptor) {
var bestMatch = this.matchDescriptor(queryDescriptor);
return bestMatch.distance < this.distanceThreshold
? bestMatch
: new FaceMatch('unknown', bestMatch.distance);
};
return FaceMatcher;
}());
export { FaceMatcher };
//# sourceMappingURL=FaceMatcher.js.map
\ No newline at end of file
{"version":3,"file":"FaceMatcher.js","sourceRoot":"","sources":["../../../src/globalApi/FaceMatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD;IAKE,qBACE,MAAwI,EACxI,iBAA+B;QAA/B,kCAAA,EAAA,uBAA+B;QAG/B,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAA;QAE3C,IAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAE5D,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;SAC3E;QAED,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAM,iBAAiB,GAAG,cAAM,OAAA,YAAU,KAAK,EAAI,EAAnB,CAAmB,CAAA;QAEnD,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,GAAG,CAAC,UAAC,IAAI;YAC7C,IAAI,IAAI,YAAY,sBAAsB,EAAE;gBAC1C,OAAO,IAAI,CAAA;aACZ;YAED,IAAI,IAAI,YAAY,mBAAmB,EAAE;gBACvC,OAAO,IAAI,sBAAsB,CAAC,iBAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;aAC1E;YAED,IAAI,IAAI,YAAY,YAAY,EAAE;gBAChC,OAAO,IAAI,sBAAsB,CAAC,iBAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;aAC/D;YAED,MAAM,IAAI,KAAK,CAAC,6LAA6L,CAAC,CAAA;QAChN,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,sBAAW,2CAAkB;aAA7B,cAA4D,OAAO,IAAI,CAAC,mBAAmB,CAAA,CAAC,CAAC;;;OAAA;IAC7F,sBAAW,0CAAiB;aAA5B,cAAyC,OAAO,IAAI,CAAC,kBAAkB,CAAA,CAAC,CAAC;;;OAAA;IAElE,yCAAmB,GAA1B,UAA2B,eAA6B,EAAE,WAA2B;QACnF,OAAO,WAAW;aACf,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,iBAAiB,CAAC,CAAC,EAAE,eAAe,CAAC,EAArC,CAAqC,CAAC;aAC/C,MAAM,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,OAAA,EAAE,GAAG,EAAE,EAAP,CAAO,EAAE,CAAC,CAAC;cAC3B,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IACjC,CAAC;IAEM,qCAAe,GAAtB,UAAuB,eAA6B;QAApD,iBAOC;QANC,OAAO,IAAI,CAAC,kBAAkB;aAC3B,GAAG,CAAC,UAAC,EAAsB;gBAApB,4BAAW,EAAE,gBAAK;YAAO,OAAA,IAAI,SAAS,CAC1C,KAAK,EACL,KAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,WAAW,CAAC,CACzD;QAHgC,CAGhC,CAAC;aACD,MAAM,CAAC,UAAC,IAAI,EAAE,IAAI,IAAK,OAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAA3C,CAA2C,CAAC,CAAA;IACxE,CAAC;IAEM,mCAAa,GAApB,UAAqB,eAA6B;QAChD,IAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;QACvD,OAAO,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB;YAChD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC;IAEH,kBAAC;AAAD,CAAC,AAhED,IAgEC"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { ITinyYolov2Options } from 'tfjs-tiny-yolov2';
import { FullFaceDescription } from '../classes';
import { IMtcnnOptions } from '../mtcnn/MtcnnOptions';
export declare function allFacesSsdMobilenetv1(input: TNetInput, minConfidence?: number): Promise<FullFaceDescription[]>;
export declare function allFacesTinyYolov2(input: TNetInput, forwardParams?: ITinyYolov2Options): Promise<FullFaceDescription[]>;
export declare function allFacesMtcnn(input: TNetInput, forwardParams?: IMtcnnOptions): Promise<FullFaceDescription[]>;
export declare const allFaces: typeof allFacesSsdMobilenetv1;
import * as tslib_1 from "tslib";
import { TinyYolov2Options } from 'tfjs-tiny-yolov2';
import { MtcnnOptions } from '../mtcnn/MtcnnOptions';
import { SsdMobilenetv1Options } from '../ssdMobilenetv1';
import { detectAllFaces } from './DetectFacesTasks';
// export allFaces API for backward compatibility
export function allFacesSsdMobilenetv1(input, minConfidence) {
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*/, detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence: minConfidence } : {}))
.withFaceLandmarks()
.withFaceDescriptors()];
case 1: return [2 /*return*/, _a.sent()];
}
});
});
}
export function allFacesTinyYolov2(input, forwardParams) {
if (forwardParams === void 0) { forwardParams = {}; }
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*/, detectAllFaces(input, new TinyYolov2Options(forwardParams))
.withFaceLandmarks()
.withFaceDescriptors()];
case 1: return [2 /*return*/, _a.sent()];
}
});
});
}
export function allFacesMtcnn(input, forwardParams) {
if (forwardParams === void 0) { forwardParams = {}; }
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*/, detectAllFaces(input, new MtcnnOptions(forwardParams))
.withFaceLandmarks()
.withFaceDescriptors()];
case 1: return [2 /*return*/, _a.sent()];
}
});
});
}
export var allFaces = allFacesSsdMobilenetv1;
//# sourceMappingURL=allFaces.js.map
\ No newline at end of file
{"version":3,"file":"allFaces.js","sourceRoot":"","sources":["../../../src/globalApi/allFaces.ts"],"names":[],"mappings":";AACA,OAAO,EAAsB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGzE,OAAO,EAAiB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,iDAAiD;AAEjD,MAAM,iCACJ,KAAgB,EAChB,aAAsB;;;;wBAEf,qBAAM,cAAc,CAAC,KAAK,EAAE,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,eAAA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;yBAClG,iBAAiB,EAAE;yBACnB,mBAAmB,EAAE,EAAA;wBAFxB,sBAAO,SAEiB,EAAA;;;;CACzB;AAED,MAAM,6BACJ,KAAgB,EAChB,aAAsC;IAAtC,8BAAA,EAAA,kBAAsC;;;;wBAE/B,qBAAM,cAAc,CAAC,KAAK,EAAE,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC;yBACrE,iBAAiB,EAAE;yBACnB,mBAAmB,EAAE,EAAA;wBAFxB,sBAAO,SAEiB,EAAA;;;;CACzB;AAED,MAAM,wBACJ,KAAgB,EAChB,aAAiC;IAAjC,8BAAA,EAAA,kBAAiC;;;;wBAE1B,qBAAM,cAAc,CAAC,KAAK,EAAE,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;yBAChE,iBAAiB,EAAE;yBACnB,mBAAmB,EAAE,EAAA;wBAFxB,sBAAO,SAEiB,EAAA;;;;CACzB;AAED,MAAM,CAAC,IAAM,QAAQ,GAAG,sBAAsB,CAAA"}
\ No newline at end of file
export * from './allFaces';
export * from './ComposableTask';
export * from './ComputeFaceDescriptorsTasks';
export * from './DetectFacesTasks';
export * from './DetectFaceLandmarksTasks';
export * from './FaceMatcher';
export * from './nets';
export * from './types';
export * from './allFaces';
export * from './ComposableTask';
export * from './ComputeFaceDescriptorsTasks';
export * from './DetectFacesTasks';
export * from './DetectFaceLandmarksTasks';
export * from './FaceMatcher';
export * from './nets';
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/globalApi/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { ITinyYolov2Options } from 'tfjs-tiny-yolov2';
import { FaceDetection } from '../classes/FaceDetection';
import { FaceDetectionWithLandmarks } from '../classes/FaceDetectionWithLandmarks';
import { FaceLandmarks5 } from '../classes/FaceLandmarks5';
import { FaceLandmarks68 } from '../classes/FaceLandmarks68';
import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';
import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';
import { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';
import { Mtcnn } from '../mtcnn/Mtcnn';
import { MtcnnOptions } from '../mtcnn/MtcnnOptions';
import { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';
import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';
import { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';
import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';
import { TinyYolov2 } from '../tinyYolov2/TinyYolov2';
export declare const nets: {
ssdMobilenetv1: SsdMobilenetv1;
tinyFaceDetector: TinyFaceDetector;
tinyYolov2: TinyYolov2;
mtcnn: Mtcnn;
faceLandmark68Net: FaceLandmark68Net;
faceLandmark68TinyNet: FaceLandmark68TinyNet;
faceRecognitionNet: FaceRecognitionNet;
};
/**
* Attempts to detect all faces in an image using SSD Mobilenetv1 Network.
*
* @param input The input image.
* @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).
* @returns Bounding box of each face with score.
*/
export declare const ssdMobilenetv1: (input: TNetInput, options: SsdMobilenetv1Options) => Promise<FaceDetection[]>;
/**
* Attempts to detect all faces in an image using the Tiny Face Detector.
*
* @param input The input image.
* @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).
* @returns Bounding box of each face with score.
*/
export declare const tinyFaceDetector: (input: TNetInput, options: TinyFaceDetectorOptions) => Promise<FaceDetection[]>;
/**
* Attempts to detect all faces in an image using the Tiny Yolov2 Network.
*
* @param input The input image.
* @param options (optional, default: see TinyYolov2Options constructor for default parameters).
* @returns Bounding box of each face with score.
*/
export declare const tinyYolov2: (input: TNetInput, options: ITinyYolov2Options) => Promise<FaceDetection[]>;
/**
* Attempts to detect all faces in an image and the 5 point face landmarks
* of each detected face using the MTCNN Network.
*
* @param input The input image.
* @param options (optional, default: see MtcnnOptions constructor for default parameters).
* @returns Bounding box of each face with score and 5 point face landmarks.
*/
export declare const mtcnn: (input: TNetInput, options: MtcnnOptions) => Promise<FaceDetectionWithLandmarks<FaceLandmarks5>[]>;
/**
* Detects the 68 point face landmark positions of the face shown in an image.
*
* @param inputs The face image extracted from the bounding box of a face. Can
* also be an array of input images, which will be batch processed.
* @returns 68 point face landmarks or array thereof in case of batch input.
*/
export declare const detectFaceLandmarks: (input: TNetInput) => Promise<FaceLandmarks68 | FaceLandmarks68[]>;
/**
* Detects the 68 point face landmark positions of the face shown in an image
* using a tinier version of the 68 point face landmark model, which is slightly
* faster at inference, but also slightly less accurate.
*
* @param inputs The face image extracted from the bounding box of a face. Can
* also be an array of input images, which will be batch processed.
* @returns 68 point face landmarks or array thereof in case of batch input.
*/
export declare const detectFaceLandmarksTiny: (input: TNetInput) => Promise<FaceLandmarks68 | FaceLandmarks68[]>;
/**
* Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,
* which uniquely represents the features of that persons face. The computed face descriptor can
* be used to measure the similarity between faces, by computing the euclidean distance of two
* face descriptors.
*
* @param inputs The face image extracted from the aligned bounding box of a face. Can
* also be an array of input images, which will be batch processed.
* @returns Face descriptor with 128 entries or array thereof in case of batch input.
*/
export declare const computeFaceDescriptor: (input: TNetInput) => Promise<Float32Array | Float32Array[]>;
export declare const loadSsdMobilenetv1Model: (url: string) => Promise<void>;
export declare const loadTinyFaceDetectorModel: (url: string) => Promise<void>;
export declare const loadMtcnnModel: (url: string) => Promise<void>;
export declare const loadTinyYolov2Model: (url: string) => Promise<void>;
export declare const loadFaceLandmarkModel: (url: string) => Promise<void>;
export declare const loadFaceLandmarkTinyModel: (url: string) => Promise<void>;
export declare const loadFaceRecognitionModel: (url: string) => Promise<void>;
export declare const loadFaceDetectionModel: (url: string) => Promise<void>;
export declare const locateFaces: (input: TNetInput, options: SsdMobilenetv1Options) => Promise<FaceDetection[]>;
export declare const detectLandmarks: (input: TNetInput) => Promise<FaceLandmarks68 | FaceLandmarks68[]>;
import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';
import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';
import { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';
import { Mtcnn } from '../mtcnn/Mtcnn';
import { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';
import { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';
import { TinyYolov2 } from '../tinyYolov2/TinyYolov2';
export var nets = {
ssdMobilenetv1: new SsdMobilenetv1(),
tinyFaceDetector: new TinyFaceDetector(),
tinyYolov2: new TinyYolov2(),
mtcnn: new Mtcnn(),
faceLandmark68Net: new FaceLandmark68Net(),
faceLandmark68TinyNet: new FaceLandmark68TinyNet(),
faceRecognitionNet: new FaceRecognitionNet()
};
/**
* Attempts to detect all faces in an image using SSD Mobilenetv1 Network.
*
* @param input The input image.
* @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).
* @returns Bounding box of each face with score.
*/
export var ssdMobilenetv1 = function (input, options) {
return nets.ssdMobilenetv1.locateFaces(input, options);
};
/**
* Attempts to detect all faces in an image using the Tiny Face Detector.
*
* @param input The input image.
* @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).
* @returns Bounding box of each face with score.
*/
export var tinyFaceDetector = function (input, options) {
return nets.tinyFaceDetector.locateFaces(input, options);
};
/**
* Attempts to detect all faces in an image using the Tiny Yolov2 Network.
*
* @param input The input image.
* @param options (optional, default: see TinyYolov2Options constructor for default parameters).
* @returns Bounding box of each face with score.
*/
export var tinyYolov2 = function (input, options) {
return nets.tinyYolov2.locateFaces(input, options);
};
/**
* Attempts to detect all faces in an image and the 5 point face landmarks
* of each detected face using the MTCNN Network.
*
* @param input The input image.
* @param options (optional, default: see MtcnnOptions constructor for default parameters).
* @returns Bounding box of each face with score and 5 point face landmarks.
*/
export var mtcnn = function (input, options) {
return nets.mtcnn.forward(input, options);
};
/**
* Detects the 68 point face landmark positions of the face shown in an image.
*
* @param inputs The face image extracted from the bounding box of a face. Can
* also be an array of input images, which will be batch processed.
* @returns 68 point face landmarks or array thereof in case of batch input.
*/
export var detectFaceLandmarks = function (input) {
return nets.faceLandmark68Net.detectLandmarks(input);
};
/**
* Detects the 68 point face landmark positions of the face shown in an image
* using a tinier version of the 68 point face landmark model, which is slightly
* faster at inference, but also slightly less accurate.
*
* @param inputs The face image extracted from the bounding box of a face. Can
* also be an array of input images, which will be batch processed.
* @returns 68 point face landmarks or array thereof in case of batch input.
*/
export var detectFaceLandmarksTiny = function (input) {
return nets.faceLandmark68TinyNet.detectLandmarks(input);
};
/**
* Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,
* which uniquely represents the features of that persons face. The computed face descriptor can
* be used to measure the similarity between faces, by computing the euclidean distance of two
* face descriptors.
*
* @param inputs The face image extracted from the aligned bounding box of a face. Can
* also be an array of input images, which will be batch processed.
* @returns Face descriptor with 128 entries or array thereof in case of batch input.
*/
export var computeFaceDescriptor = function (input) {
return nets.faceRecognitionNet.computeFaceDescriptor(input);
};
export var loadSsdMobilenetv1Model = function (url) { return nets.ssdMobilenetv1.load(url); };
export var loadTinyFaceDetectorModel = function (url) { return nets.tinyFaceDetector.load(url); };
export var loadMtcnnModel = function (url) { return nets.mtcnn.load(url); };
export var loadTinyYolov2Model = function (url) { return nets.tinyYolov2.load(url); };
export var loadFaceLandmarkModel = function (url) { return nets.faceLandmark68Net.load(url); };
export var loadFaceLandmarkTinyModel = function (url) { return nets.faceLandmark68TinyNet.load(url); };
export var loadFaceRecognitionModel = function (url) { return nets.faceRecognitionNet.load(url); };
// backward compatibility
export var loadFaceDetectionModel = loadSsdMobilenetv1Model;
export var locateFaces = ssdMobilenetv1;
export var detectLandmarks = detectFaceLandmarks;
//# sourceMappingURL=nets.js.map
\ No newline at end of file
{"version":3,"file":"nets.js","sourceRoot":"","sources":["../../../src/globalApi/nets.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { TinyYolov2Options } from 'tfjs-tiny-yolov2';
import { FaceDetection } from '../classes/FaceDetection';
import { MtcnnOptions } from '../mtcnn/MtcnnOptions';
import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';
import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';
export declare type FaceDetectionOptions = TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options;
export declare type FaceDetectionFunction = (input: TNetInput) => Promise<FaceDetection[]>;
//# sourceMappingURL=types.js.map
\ No newline at end of file
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/globalApi/types.ts"],"names":[],"mappings":""}
\ No newline at end of file
......@@ -4,9 +4,10 @@ export * from 'tfjs-image-recognition-base';
export * from './classes';
export * from './dom';
export * from './euclideanDistance';
export * from './faceDetectionNet';
export * from './faceLandmarkNet';
export * from './faceRecognitionNet';
export * from './globalApi';
export * from './mtcnn';
export * from './ssdMobilenetv1';
export * from './tinyFaceDetector';
export * from './tinyYolov2';
......@@ -4,10 +4,11 @@ export * from 'tfjs-image-recognition-base';
export * from './classes';
export * from './dom';
export * from './euclideanDistance';
export * from './faceDetectionNet';
export * from './faceLandmarkNet';
export * from './faceRecognitionNet';
export * from './globalApi';
export * from './mtcnn';
export * from './ssdMobilenetv1';
export * from './tinyFaceDetector';
export * from './tinyYolov2';
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EACL,EAAE,EACH,CAAA;AAED,cAAc,6BAA6B,CAAC;AAE5C,cAAc,WAAW,CAAC;AAE1B,cAAc,OAAO,CAAA;AACrB,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EACL,EAAE,EACH,CAAA;AAED,cAAc,6BAA6B,CAAC;AAE5C,cAAc,WAAW,CAAC;AAE1B,cAAc,OAAO,CAAA;AACrB,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
\ No newline at end of file
import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base';
import { MtcnnForwardParams, MtcnnResult, NetParams } from './types';
import { FaceDetectionWithLandmarks } from '../classes/FaceDetectionWithLandmarks';
import { FaceLandmarks5 } from '../classes/FaceLandmarks5';
import { IMtcnnOptions } from './MtcnnOptions';
import { NetParams } from './types';
export declare class Mtcnn extends NeuralNetwork<NetParams> {
constructor();
forwardInput(input: NetInput, forwardParams?: MtcnnForwardParams): Promise<{
results: MtcnnResult[];
forwardInput(input: NetInput, forwardParams?: IMtcnnOptions): Promise<{
results: FaceDetectionWithLandmarks<FaceLandmarks5>[];
stats: any;
}>;
forward(input: TNetInput, forwardParams?: MtcnnForwardParams): Promise<MtcnnResult[]>;
forwardWithStats(input: TNetInput, forwardParams?: MtcnnForwardParams): Promise<{
results: MtcnnResult[];
forward(input: TNetInput, forwardParams?: IMtcnnOptions): Promise<FaceDetectionWithLandmarks<FaceLandmarks5>[]>;
forwardWithStats(input: TNetInput, forwardParams?: IMtcnnOptions): Promise<{
results: FaceDetectionWithLandmarks<FaceLandmarks5>[];
stats: any;
}>;
protected loadQuantizedParams(uri: string | undefined): Promise<{
......
......@@ -2,13 +2,14 @@ import * as tslib_1 from "tslib";
import * as tf from '@tensorflow/tfjs-core';
import { NeuralNetwork, Point, Rect, toNetInput } from 'tfjs-image-recognition-base';
import { FaceDetection } from '../classes/FaceDetection';
import { FaceDetectionWithLandmarks } from '../classes/FaceDetectionWithLandmarks';
import { FaceLandmarks5 } from '../classes/FaceLandmarks5';
import { bgrToRgbTensor } from './bgrToRgbTensor';
import { CELL_SIZE } from './config';
import { extractParams } from './extractParams';
import { getDefaultMtcnnForwardParams } from './getDefaultMtcnnForwardParams';
import { getSizesForScale } from './getSizesForScale';
import { loadQuantizedParams } from './loadQuantizedParams';
import { MtcnnOptions } from './MtcnnOptions';
import { pyramidDown } from './pyramidDown';
import { stage1 } from './stage1';
import { stage2 } from './stage2';
......@@ -45,7 +46,7 @@ var Mtcnn = /** @class */ (function (_super) {
return results;
};
_a = imgTensor.shape.slice(1), height = _a[0], width = _a[1];
_b = Object.assign({}, getDefaultMtcnnForwardParams(), forwardParams), minFaceSize = _b.minFaceSize, scaleFactor = _b.scaleFactor, maxNumScales = _b.maxNumScales, scoreThresholds = _b.scoreThresholds, scaleSteps = _b.scaleSteps;
_b = new MtcnnOptions(forwardParams), minFaceSize = _b.minFaceSize, scaleFactor = _b.scaleFactor, maxNumScales = _b.maxNumScales, scoreThresholds = _b.scoreThresholds, scaleSteps = _b.scaleSteps;
scales = (scaleSteps || pyramidDown(minFaceSize, scaleFactor, [height, width]))
.filter(function (scale) {
var sizes = getSizesForScale(scale, [height, width]);
......@@ -79,13 +80,10 @@ var Mtcnn = /** @class */ (function (_super) {
case 3:
out3 = _c.sent();
stats.total_stage3 = Date.now() - ts;
results = out3.boxes.map(function (box, idx) { return ({
faceDetection: new FaceDetection(out3.scores[idx], new Rect(box.left / width, box.top / height, box.width / width, box.height / height), {
results = out3.boxes.map(function (box, idx) { return new FaceDetectionWithLandmarks(new FaceDetection(out3.scores[idx], new Rect(box.left / width, box.top / height, box.width / width, box.height / height), {
height: height,
width: width
}),
faceLandmarks: new FaceLandmarks5(out3.points[idx].map(function (pt) { return pt.div(new Point(width, height)); }), { width: width, height: height })
}); });
}), new FaceLandmarks5(out3.points[idx].map(function (pt) { return pt.sub(new Point(box.left, box.top)).div(new Point(box.width, box.height)); }), { width: box.width, height: box.height })); });
return [2 /*return*/, onReturn({ results: results, stats: stats })];
}
});
......
{"version":3,"file":"Mtcnn.js","sourceRoot":"","sources":["../../../src/mtcnn/Mtcnn.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"Mtcnn.js","sourceRoot":"","sources":["../../../src/mtcnn/Mtcnn.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
export interface IMtcnnOptions {
minFaceSize?: number;
scaleFactor?: number;
maxNumScales?: number;
scoreThresholds?: number[];
scaleSteps?: number[];
}
export declare class MtcnnOptions {
protected _name: string;
private _minFaceSize;
private _scaleFactor;
private _maxNumScales;
private _scoreThresholds;
private _scaleSteps;
constructor({minFaceSize, scaleFactor, maxNumScales, scoreThresholds, scaleSteps}?: IMtcnnOptions);
readonly minFaceSize: number;
readonly scaleFactor: number;
readonly maxNumScales: number;
readonly scoreThresholds: number[];
readonly scaleSteps: number[] | undefined;
}
var MtcnnOptions = /** @class */ (function () {
function MtcnnOptions(_a) {
var _b = _a === void 0 ? {} : _a, minFaceSize = _b.minFaceSize, scaleFactor = _b.scaleFactor, maxNumScales = _b.maxNumScales, scoreThresholds = _b.scoreThresholds, scaleSteps = _b.scaleSteps;
this._name = 'MtcnnOptions';
this._minFaceSize = minFaceSize || 20;
this._scaleFactor = scaleFactor || 0.709;
this._maxNumScales = maxNumScales || 10;
this._scoreThresholds = scoreThresholds || [0.6, 0.7, 0.7];
this._scaleSteps = scaleSteps;
if (typeof this._minFaceSize !== 'number' || this._minFaceSize < 0) {
throw new Error(this._name + " - expected minFaceSize to be a number > 0");
}
if (typeof this._scaleFactor !== 'number' || this._scaleFactor <= 0 || this._scaleFactor >= 1) {
throw new Error(this._name + " - expected scaleFactor to be a number between 0 and 1");
}
if (typeof this._maxNumScales !== 'number' || this._maxNumScales < 0) {
throw new Error(this._name + " - expected maxNumScales to be a number > 0");
}
if (!Array.isArray(this._scoreThresholds)
|| this._scoreThresholds.length !== 3
|| this._scoreThresholds.some(function (th) { return typeof th !== 'number'; })) {
throw new Error(this._name + " - expected scoreThresholds to be an array of numbers of length 3");
}
if (this._scaleSteps
&& (!Array.isArray(this._scaleSteps) || this._scaleSteps.some(function (th) { return typeof th !== 'number'; }))) {
throw new Error(this._name + " - expected scaleSteps to be an array of numbers");
}
}
Object.defineProperty(MtcnnOptions.prototype, "minFaceSize", {
get: function () { return this._minFaceSize; },
enumerable: true,
configurable: true
});
Object.defineProperty(MtcnnOptions.prototype, "scaleFactor", {
get: function () { return this._scaleFactor; },
enumerable: true,
configurable: true
});
Object.defineProperty(MtcnnOptions.prototype, "maxNumScales", {
get: function () { return this._maxNumScales; },
enumerable: true,
configurable: true
});
Object.defineProperty(MtcnnOptions.prototype, "scoreThresholds", {
get: function () { return this._scoreThresholds; },
enumerable: true,
configurable: true
});
Object.defineProperty(MtcnnOptions.prototype, "scaleSteps", {
get: function () { return this._scaleSteps; },
enumerable: true,
configurable: true
});
return MtcnnOptions;
}());
export { MtcnnOptions };
//# sourceMappingURL=MtcnnOptions.js.map
\ No newline at end of file
{"version":3,"file":"MtcnnOptions.js","sourceRoot":"","sources":["../../../src/mtcnn/MtcnnOptions.ts"],"names":[],"mappings":"AAQA;IASE,sBAAY,EAA2F;YAA3F,4BAA2F,EAAzF,4BAAW,EAAE,4BAAW,EAAE,8BAAY,EAAE,oCAAe,EAAE,0BAAU;QARvE,UAAK,GAAW,cAAc,CAAA;QAStC,IAAI,CAAC,YAAY,GAAG,WAAW,IAAI,EAAE,CAAA;QACrC,IAAI,CAAC,YAAY,GAAG,WAAW,IAAI,KAAK,CAAA;QACxC,IAAI,CAAC,aAAa,GAAG,YAAY,IAAI,EAAE,CAAA;QACvC,IAAI,CAAC,gBAAgB,GAAG,eAAe,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QAC1D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;QAE7B,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;YAClE,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,+CAA4C,CAAC,CAAA;SAC3E;QAED,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE;YAC7F,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,2DAAwD,CAAC,CAAA;SACvF;QAED,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;YACpE,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,gDAA6C,CAAC,CAAA;SAC5E;QAED,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;eAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;eAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,OAAO,EAAE,KAAK,QAAQ,EAAtB,CAAsB,CAAC,EAC7D;YACA,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,sEAAmE,CAAC,CAAA;SAClG;QAED,IACE,IAAI,CAAC,WAAW;eACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,OAAO,EAAE,KAAK,QAAQ,EAAtB,CAAsB,CAAC,CAAC,EAC9F;YACA,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,qDAAkD,CAAC,CAAA;SACjF;IACH,CAAC;IAED,sBAAI,qCAAW;aAAf,cAA4B,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;;;OAAA;IACtD,sBAAI,qCAAW;aAAf,cAA4B,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;;;OAAA;IACtD,sBAAI,sCAAY;aAAhB,cAA6B,OAAO,IAAI,CAAC,aAAa,CAAA,CAAC,CAAC;;;OAAA;IACxD,sBAAI,yCAAe;aAAnB,cAAkC,OAAO,IAAI,CAAC,gBAAgB,CAAA,CAAC,CAAC;;;OAAA;IAChE,sBAAI,oCAAU;aAAd,cAAyC,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;;;OAAA;IACpE,mBAAC;AAAD,CAAC,AAjDD,IAiDC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { Box, Dimensions } from 'tfjs-image-recognition-base';
export declare function extractImagePatches(img: HTMLCanvasElement, boxes: Box[], {width, height}: Dimensions): Promise<tf.Tensor4D[]>;
import { Box, IDimensions } from 'tfjs-image-recognition-base';
export declare function extractImagePatches(img: HTMLCanvasElement, boxes: Box[], {width, height}: IDimensions): Promise<tf.Tensor4D[]>;
{"version":3,"file":"extractImagePatches.js","sourceRoot":"","sources":["../../../src/mtcnn/extractImagePatches.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAO,YAAY,EAAc,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEjG,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,8BACJ,GAAsB,EACtB,KAAY,EACZ,EAA6B;QAA3B,gBAAK,EAAE,kBAAM;;;;;;;oBAIT,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;oBAEvB,qBAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAM,GAAG;;;gCAE7C,KAAmB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAxD,CAAC,OAAA,EAAE,EAAE,QAAA,EAAE,CAAC,OAAA,EAAE,EAAE,QAAA,CAA4C;gCAE1D,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;gCACb,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;gCACb,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;gCAE7E,sBAAO,iBAAiB,CAAC,OAAO,CAAC,EAAA;;6BAClC,CAAC,CAAC,EAAA;;oBATG,OAAO,GAAG,SASb;oBAEG,iBAAiB,GAAe,EAAE,CAAA;oBAExC,OAAO,CAAC,OAAO,CAAC,UAAA,GAAG;wBACjB,IAAM,KAAK,GAAG,YAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;wBAC7C,IAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;wBAC3C,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;wBACpC,IAAA,sDAAI,CAA+C;wBAE3D,IAAM,QAAQ,GAAG,EAAE,CAAA;wBACnB,cAAc;wBACd,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAE,CAAC,EAAE;4BACpC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;4BAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;4BAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;yBACvB;wBACD,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBAClC,CAAC,CAAC,CAAA;oBAGF,sBAAO,iBAAiB,CAAC,GAAG,CAAC,UAAA,IAAI;4BAC/B,IAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gCAChB,IAAM,gBAAgB,GAAG,EAAE,CAAC,SAAS,CACnC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EACxC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACb,CAAC,OAAO,EAAiB,CAAA;gCAE1B,OAAO,SAAS,CAAC,gBAAgB,CAAC,CAAA;4BACpC,CAAC,CAAC,CAAA;4BACF,OAAO,CAAC,CAAA;wBACV,CAAC,CAAC,EAAA;;;;CACH"}
\ No newline at end of file
{"version":3,"file":"extractImagePatches.js","sourceRoot":"","sources":["../../../src/mtcnn/extractImagePatches.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAO,YAAY,EAAE,mBAAmB,EAAe,MAAM,6BAA6B,CAAC;AAElG,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,8BACJ,GAAsB,EACtB,KAAY,EACZ,EAA8B;QAA5B,gBAAK,EAAE,kBAAM;;;;;;;oBAIT,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;oBAEvB,qBAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAM,GAAG;;;gCAE7C,KAAmB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAxD,CAAC,OAAA,EAAE,EAAE,QAAA,EAAE,CAAC,OAAA,EAAE,EAAE,QAAA,CAA4C;gCAE1D,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;gCACb,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;gCACb,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;gCAE7E,sBAAO,iBAAiB,CAAC,OAAO,CAAC,EAAA;;6BAClC,CAAC,CAAC,EAAA;;oBATG,OAAO,GAAG,SASb;oBAEG,iBAAiB,GAAe,EAAE,CAAA;oBAExC,OAAO,CAAC,OAAO,CAAC,UAAA,GAAG;wBACjB,IAAM,KAAK,GAAG,YAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;wBAC7C,IAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;wBAC3C,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;wBACpC,IAAA,sDAAI,CAA+C;wBAE3D,IAAM,QAAQ,GAAG,EAAE,CAAA;wBACnB,cAAc;wBACd,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAE,CAAC,EAAE;4BACpC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;4BAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;4BAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;yBACvB;wBACD,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBAClC,CAAC,CAAC,CAAA;oBAGF,sBAAO,iBAAiB,CAAC,GAAG,CAAC,UAAA,IAAI;4BAC/B,IAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gCAChB,IAAM,gBAAgB,GAAG,EAAE,CAAC,SAAS,CACnC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EACxC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACb,CAAC,OAAO,EAAiB,CAAA;gCAE1B,OAAO,SAAS,CAAC,gBAAgB,CAAC,CAAA;4BACpC,CAAC,CAAC,CAAA;4BACF,OAAO,CAAC,CAAA;wBACV,CAAC,CAAC,EAAA;;;;CACH"}
\ No newline at end of file
import { Mtcnn } from './Mtcnn';
export * from './Mtcnn';
export * from './MtcnnOptions';
export declare function createMtcnn(weights: Float32Array): Mtcnn;
import { Mtcnn } from './Mtcnn';
export * from './Mtcnn';
export * from './MtcnnOptions';
export function createMtcnn(weights) {
var net = new Mtcnn();
net.extractWeights(weights);
......
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mtcnn/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,cAAc,SAAS,CAAC;AAExB,MAAM,sBAAsB,OAAqB;IAC/C,IAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAA;IACvB,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC"}
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mtcnn/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAE/B,MAAM,sBAAsB,OAAqB;IAC/C,IAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAA;IACvB,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { ConvParams, FCParams } from 'tfjs-tiny-yolov2';
import { FaceDetection } from '../classes/FaceDetection';
import { FaceLandmarks5 } from '../classes/FaceLandmarks5';
export declare type SharedParams = {
conv1: ConvParams;
prelu1_alpha: tf.Tensor1D;
......@@ -34,14 +32,3 @@ export declare type NetParams = {
rnet: RNetParams;
onet: ONetParams;
};
export declare type MtcnnResult = {
faceDetection: FaceDetection;
faceLandmarks: FaceLandmarks5;
};
export declare type MtcnnForwardParams = {
minFaceSize?: number;
scaleFactor?: number;
maxNumScales?: number;
scoreThresholds?: number[];
scaleSteps?: number[];
};
import * as tf from '@tensorflow/tfjs-core';
import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base';
import { FaceDetection } from '../classes/FaceDetection';
import { ISsdMobilenetv1Options } from './SsdMobilenetv1Options';
import { NetParams } from './types';
export declare class SsdMobilenetv1 extends NeuralNetwork<NetParams> {
constructor();
forwardInput(input: NetInput): {
boxes: tf.Tensor<tf.Rank.R2>[];
scores: tf.Tensor<tf.Rank.R1>[];
};
forward(input: TNetInput): Promise<{
boxes: tf.Tensor<tf.Rank.R2>[];
scores: tf.Tensor<tf.Rank.R1>[];
}>;
locateFaces(input: TNetInput, options?: ISsdMobilenetv1Options): Promise<FaceDetection[]>;
protected loadQuantizedParams(uri: string | undefined): Promise<{
params: NetParams;
paramMappings: {
originalPath?: string | undefined;
paramPath: string;
}[];
}>;
protected extractParams(weights: Float32Array): {
params: NetParams;
paramMappings: {
originalPath?: string | undefined;
paramPath: string;
}[];
};
}
import * as tslib_1 from "tslib";
import * as tf from '@tensorflow/tfjs-core';
import { NeuralNetwork, Rect, toNetInput } from 'tfjs-image-recognition-base';
import { FaceDetection } from '../classes/FaceDetection';
import { extractParams } from './extractParams';
import { loadQuantizedParams } from './loadQuantizedParams';
import { mobileNetV1 } from './mobileNetV1';
import { nonMaxSuppression } from './nonMaxSuppression';
import { outputLayer } from './outputLayer';
import { predictionLayer } from './predictionLayer';
import { SsdMobilenetv1Options } from './SsdMobilenetv1Options';
var SsdMobilenetv1 = /** @class */ (function (_super) {
tslib_1.__extends(SsdMobilenetv1, _super);
function SsdMobilenetv1() {
return _super.call(this, 'SsdMobilenetv1') || this;
}
SsdMobilenetv1.prototype.forwardInput = function (input) {
var params = this.params;
if (!params) {
throw new Error('SsdMobilenetv1 - load model before inference');
}
return tf.tidy(function () {
var batchTensor = input.toBatchTensor(512, false).toFloat();
var x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1));
var features = mobileNetV1(x, params.mobilenetv1);
var _a = predictionLayer(features.out, features.conv11, params.prediction_layer), boxPredictions = _a.boxPredictions, classPredictions = _a.classPredictions;
return outputLayer(boxPredictions, classPredictions, params.output_layer);
});
};
SsdMobilenetv1.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*/, toNetInput(input)];
case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])];
}
});
});
};
SsdMobilenetv1.prototype.locateFaces = function (input, options) {
if (options === void 0) { options = {}; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, maxResults, minConfidence, netInput, _b, _boxes, _scores, boxes, scores, i, scoresData, _c, _d, iouThreshold, indices, reshapedDims, inputSize, padX, padY, results;
return tslib_1.__generator(this, function (_e) {
switch (_e.label) {
case 0:
_a = new SsdMobilenetv1Options(options), maxResults = _a.maxResults, minConfidence = _a.minConfidence;
return [4 /*yield*/, toNetInput(input)];
case 1:
netInput = _e.sent();
_b = this.forwardInput(netInput), _boxes = _b.boxes, _scores = _b.scores;
boxes = _boxes[0];
scores = _scores[0];
for (i = 1; i < _boxes.length; i++) {
_boxes[i].dispose();
_scores[i].dispose();
}
_d = (_c = Array).from;
return [4 /*yield*/, scores.data()];
case 2:
scoresData = _d.apply(_c, [_e.sent()]);
iouThreshold = 0.5;
indices = nonMaxSuppression(boxes, scoresData, maxResults, iouThreshold, minConfidence);
reshapedDims = netInput.getReshapedInputDimensions(0);
inputSize = netInput.inputSize;
padX = inputSize / reshapedDims.width;
padY = inputSize / reshapedDims.height;
results = indices
.map(function (idx) {
var _a = [
Math.max(0, boxes.get(idx, 0)),
Math.min(1.0, boxes.get(idx, 2))
].map(function (val) { return val * padY; }), top = _a[0], bottom = _a[1];
var _b = [
Math.max(0, boxes.get(idx, 1)),
Math.min(1.0, boxes.get(idx, 3))
].map(function (val) { return val * padX; }), left = _b[0], right = _b[1];
return new FaceDetection(scoresData[idx], new Rect(left, top, right - left, bottom - top), {
height: netInput.getInputHeight(0),
width: netInput.getInputWidth(0)
});
});
boxes.dispose();
scores.dispose();
return [2 /*return*/, results];
}
});
});
};
SsdMobilenetv1.prototype.loadQuantizedParams = function (uri) {
return loadQuantizedParams(uri);
};
SsdMobilenetv1.prototype.extractParams = function (weights) {
return extractParams(weights);
};
return SsdMobilenetv1;
}(NeuralNetwork));
export { SsdMobilenetv1 };
//# sourceMappingURL=SsdMobilenetv1.js.map
\ No newline at end of file
{"version":3,"file":"SsdMobilenetv1.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/SsdMobilenetv1.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
export interface ISsdMobilenetv1Options {
minConfidence?: number;
maxResults?: number;
}
export declare class SsdMobilenetv1Options {
protected _name: string;
private _minConfidence;
private _maxResults;
constructor({minConfidence, maxResults}?: ISsdMobilenetv1Options);
readonly minConfidence: number;
readonly maxResults: number;
}
var SsdMobilenetv1Options = /** @class */ (function () {
function SsdMobilenetv1Options(_a) {
var _b = _a === void 0 ? {} : _a, minConfidence = _b.minConfidence, maxResults = _b.maxResults;
this._name = 'SsdMobilenetv1Options';
this._minConfidence = minConfidence || 0.5;
this._maxResults = maxResults || 100;
if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {
throw new Error(this._name + " - expected minConfidence to be a number between 0 and 1");
}
if (typeof this._maxResults !== 'number') {
throw new Error(this._name + " - expected maxResults to be a number");
}
}
Object.defineProperty(SsdMobilenetv1Options.prototype, "minConfidence", {
get: function () { return this._minConfidence; },
enumerable: true,
configurable: true
});
Object.defineProperty(SsdMobilenetv1Options.prototype, "maxResults", {
get: function () { return this._maxResults; },
enumerable: true,
configurable: true
});
return SsdMobilenetv1Options;
}());
export { SsdMobilenetv1Options };
//# sourceMappingURL=SsdMobilenetv1Options.js.map
\ No newline at end of file
{"version":3,"file":"SsdMobilenetv1Options.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/SsdMobilenetv1Options.ts"],"names":[],"mappings":"AAKA;IAME,+BAAY,EAA0D;YAA1D,4BAA0D,EAAxD,gCAAa,EAAE,0BAAU;QAL7B,UAAK,GAAW,uBAAuB,CAAA;QAM/C,IAAI,CAAC,cAAc,GAAG,aAAa,IAAI,GAAG,CAAA;QAC1C,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,GAAG,CAAA;QAEpC,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,EAAE;YACnG,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,6DAA0D,CAAC,CAAA;SACzF;QAED,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;YACxC,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,0CAAuC,CAAC,CAAA;SACtE;IACH,CAAC;IAED,sBAAI,gDAAa;aAAjB,cAA8B,OAAO,IAAI,CAAC,cAAc,CAAA,CAAC,CAAC;;;OAAA;IAC1D,sBAAI,6CAAU;aAAd,cAA2B,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;;;OAAA;IACtD,4BAAC;AAAD,CAAC,AArBD,IAqBC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { BoxPredictionParams } from './types';
export declare function boxPredictionLayer(x: tf.Tensor4D, params: BoxPredictionParams): {
boxPredictionEncoding: tf.Tensor<tf.Rank>;
classPrediction: tf.Tensor<tf.Rank>;
};
import * as tf from '@tensorflow/tfjs-core';
import { convLayer } from 'tfjs-tiny-yolov2';
export function boxPredictionLayer(x, params) {
return tf.tidy(function () {
var batchSize = x.shape[0];
var boxPredictionEncoding = tf.reshape(convLayer(x, params.box_encoding_predictor), [batchSize, -1, 1, 4]);
var classPrediction = tf.reshape(convLayer(x, params.class_predictor), [batchSize, -1, 3]);
return {
boxPredictionEncoding: boxPredictionEncoding,
classPrediction: classPrediction
};
});
}
//# sourceMappingURL=boxPredictionLayer.js.map
\ No newline at end of file
{"version":3,"file":"boxPredictionLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/boxPredictionLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7C,MAAM,6BACJ,CAAc,EACd,MAA2B;IAE3B,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAE5B,IAAM,qBAAqB,GAAG,EAAE,CAAC,OAAO,CACtC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,EAC3C,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACtB,CAAA;QACD,IAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,EACpC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACnB,CAAA;QAED,OAAO;YACL,qBAAqB,uBAAA;YACrB,eAAe,iBAAA;SAChB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file
import { ParamMapping } from 'tfjs-image-recognition-base';
import { NetParams } from './types';
export declare function extractParams(weights: Float32Array): {
params: NetParams;
paramMappings: ParamMapping[];
};
import * as tf from '@tensorflow/tfjs-core';
import { extractWeightsFactory } from 'tfjs-image-recognition-base';
function extractorsFactory(extractWeights, paramMappings) {
function extractDepthwiseConvParams(numChannels, mappedPrefix) {
var filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);
var batch_norm_scale = tf.tensor1d(extractWeights(numChannels));
var batch_norm_offset = tf.tensor1d(extractWeights(numChannels));
var batch_norm_mean = tf.tensor1d(extractWeights(numChannels));
var batch_norm_variance = tf.tensor1d(extractWeights(numChannels));
paramMappings.push({ paramPath: mappedPrefix + "/filters" }, { paramPath: mappedPrefix + "/batch_norm_scale" }, { paramPath: mappedPrefix + "/batch_norm_offset" }, { paramPath: mappedPrefix + "/batch_norm_mean" }, { paramPath: mappedPrefix + "/batch_norm_variance" });
return {
filters: filters,
batch_norm_scale: batch_norm_scale,
batch_norm_offset: batch_norm_offset,
batch_norm_mean: batch_norm_mean,
batch_norm_variance: batch_norm_variance
};
}
function extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, isPointwiseConv) {
var filters = tf.tensor4d(extractWeights(channelsIn * channelsOut * filterSize * filterSize), [filterSize, filterSize, channelsIn, channelsOut]);
var bias = tf.tensor1d(extractWeights(channelsOut));
paramMappings.push({ paramPath: mappedPrefix + "/filters" }, { paramPath: mappedPrefix + "/" + (isPointwiseConv ? 'batch_norm_offset' : 'bias') });
return { filters: filters, bias: bias };
}
function extractPointwiseConvParams(channelsIn, channelsOut, filterSize, mappedPrefix) {
var _a = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true), filters = _a.filters, bias = _a.bias;
return {
filters: filters,
batch_norm_offset: bias
};
}
function extractConvPairParams(channelsIn, channelsOut, mappedPrefix) {
var depthwise_conv = extractDepthwiseConvParams(channelsIn, mappedPrefix + "/depthwise_conv");
var pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, mappedPrefix + "/pointwise_conv");
return { depthwise_conv: depthwise_conv, pointwise_conv: pointwise_conv };
}
function extractMobilenetV1Params() {
var conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0');
var conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1');
var conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2');
var conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3');
var conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4');
var conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5');
var conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6');
var conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7');
var conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8');
var conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9');
var conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10');
var conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11');
var conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12');
var conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13');
return {
conv_0: conv_0,
conv_1: conv_1,
conv_2: conv_2,
conv_3: conv_3,
conv_4: conv_4,
conv_5: conv_5,
conv_6: conv_6,
conv_7: conv_7,
conv_8: conv_8,
conv_9: conv_9,
conv_10: conv_10,
conv_11: conv_11,
conv_12: conv_12,
conv_13: conv_13
};
}
function extractPredictionLayerParams() {
var conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0');
var conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1');
var conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2');
var conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3');
var conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4');
var conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5');
var conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6');
var conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7');
var box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor');
var class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor');
var box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor');
var class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor');
var box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor');
var class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor');
var box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor');
var class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor');
var box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor');
var class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor');
var box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor');
var class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor');
var box_predictor_0 = {
box_encoding_predictor: box_encoding_0_predictor,
class_predictor: class_predictor_0
};
var box_predictor_1 = {
box_encoding_predictor: box_encoding_1_predictor,
class_predictor: class_predictor_1
};
var box_predictor_2 = {
box_encoding_predictor: box_encoding_2_predictor,
class_predictor: class_predictor_2
};
var box_predictor_3 = {
box_encoding_predictor: box_encoding_3_predictor,
class_predictor: class_predictor_3
};
var box_predictor_4 = {
box_encoding_predictor: box_encoding_4_predictor,
class_predictor: class_predictor_4
};
var box_predictor_5 = {
box_encoding_predictor: box_encoding_5_predictor,
class_predictor: class_predictor_5
};
return {
conv_0: conv_0,
conv_1: conv_1,
conv_2: conv_2,
conv_3: conv_3,
conv_4: conv_4,
conv_5: conv_5,
conv_6: conv_6,
conv_7: conv_7,
box_predictor_0: box_predictor_0,
box_predictor_1: box_predictor_1,
box_predictor_2: box_predictor_2,
box_predictor_3: box_predictor_3,
box_predictor_4: box_predictor_4,
box_predictor_5: box_predictor_5
};
}
return {
extractMobilenetV1Params: extractMobilenetV1Params,
extractPredictionLayerParams: extractPredictionLayerParams
};
}
export function extractParams(weights) {
var paramMappings = [];
var _a = extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights;
var _b = extractorsFactory(extractWeights, paramMappings), extractMobilenetV1Params = _b.extractMobilenetV1Params, extractPredictionLayerParams = _b.extractPredictionLayerParams;
var mobilenetv1 = extractMobilenetV1Params();
var prediction_layer = extractPredictionLayerParams();
var extra_dim = tf.tensor3d(extractWeights(5118 * 4), [1, 5118, 4]);
var output_layer = {
extra_dim: extra_dim
};
paramMappings.push({ paramPath: 'output_layer/extra_dim' });
if (getRemainingWeights().length !== 0) {
throw new Error("weights remaing after extract: " + getRemainingWeights().length);
}
return {
params: {
mobilenetv1: mobilenetv1,
prediction_layer: prediction_layer,
output_layer: output_layer
},
paramMappings: paramMappings
};
}
//# sourceMappingURL=extractParams.js.map
\ No newline at end of file
{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/extractParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import { SsdMobilenetv1 } from './SsdMobilenetv1';
export * from './SsdMobilenetv1';
export * from './SsdMobilenetv1Options';
export declare function createSsdMobilenetv1(weights: Float32Array): SsdMobilenetv1;
export declare function createFaceDetectionNet(weights: Float32Array): SsdMobilenetv1;
export declare class FaceDetectionNet extends SsdMobilenetv1 {
}
import * as tslib_1 from "tslib";
import { SsdMobilenetv1 } from './SsdMobilenetv1';
export * from './SsdMobilenetv1';
export * from './SsdMobilenetv1Options';
export function createSsdMobilenetv1(weights) {
var net = new SsdMobilenetv1();
net.extractWeights(weights);
return net;
}
export function createFaceDetectionNet(weights) {
return createSsdMobilenetv1(weights);
}
// alias for backward compatibily
var FaceDetectionNet = /** @class */ (function (_super) {
tslib_1.__extends(FaceDetectionNet, _super);
function FaceDetectionNet() {
return _super !== null && _super.apply(this, arguments) || this;
}
return FaceDetectionNet;
}(SsdMobilenetv1));
export { FaceDetectionNet };
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AAExC,MAAM,+BAA+B,OAAqB;IACxD,IAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAA;IAChC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,iCAAiC,OAAqB;IAC1D,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC;AAED,iCAAiC;AACjC;IAAsC,4CAAc;IAApD;;IAAsD,CAAC;IAAD,uBAAC;AAAD,CAAC,AAAvD,CAAsC,cAAc,GAAG"}
\ No newline at end of file
import { ParamMapping } from 'tfjs-image-recognition-base';
import { NetParams } from './types';
export declare function loadQuantizedParams(uri: string | undefined): Promise<{
params: NetParams;
paramMappings: ParamMapping[];
}>;
import * as tslib_1 from "tslib";
import { disposeUnusedWeightTensors, extractWeightEntryFactory, isTensor3D, loadWeightMap, } from 'tfjs-image-recognition-base';
var DEFAULT_MODEL_NAME = 'ssd_mobilenetv1_model';
function extractorsFactory(weightMap, paramMappings) {
var extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);
function extractPointwiseConvParams(prefix, idx, mappedPrefix) {
var filters = extractWeightEntry(prefix + "/Conv2d_" + idx + "_pointwise/weights", 4, mappedPrefix + "/filters");
var batch_norm_offset = extractWeightEntry(prefix + "/Conv2d_" + idx + "_pointwise/convolution_bn_offset", 1, mappedPrefix + "/batch_norm_offset");
return { filters: filters, batch_norm_offset: batch_norm_offset };
}
function extractConvPairParams(idx) {
var mappedPrefix = "mobilenetv1/conv_" + idx;
var prefixDepthwiseConv = "MobilenetV1/Conv2d_" + idx + "_depthwise";
var mappedPrefixDepthwiseConv = mappedPrefix + "/depthwise_conv";
var mappedPrefixPointwiseConv = mappedPrefix + "/pointwise_conv";
var filters = extractWeightEntry(prefixDepthwiseConv + "/depthwise_weights", 4, mappedPrefixDepthwiseConv + "/filters");
var batch_norm_scale = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/gamma", 1, mappedPrefixDepthwiseConv + "/batch_norm_scale");
var batch_norm_offset = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/beta", 1, mappedPrefixDepthwiseConv + "/batch_norm_offset");
var batch_norm_mean = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/moving_mean", 1, mappedPrefixDepthwiseConv + "/batch_norm_mean");
var batch_norm_variance = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/moving_variance", 1, mappedPrefixDepthwiseConv + "/batch_norm_variance");
return {
depthwise_conv: {
filters: filters,
batch_norm_scale: batch_norm_scale,
batch_norm_offset: batch_norm_offset,
batch_norm_mean: batch_norm_mean,
batch_norm_variance: batch_norm_variance
},
pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv)
};
}
function extractMobilenetV1Params() {
return {
conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),
conv_1: extractConvPairParams(1),
conv_2: extractConvPairParams(2),
conv_3: extractConvPairParams(3),
conv_4: extractConvPairParams(4),
conv_5: extractConvPairParams(5),
conv_6: extractConvPairParams(6),
conv_7: extractConvPairParams(7),
conv_8: extractConvPairParams(8),
conv_9: extractConvPairParams(9),
conv_10: extractConvPairParams(10),
conv_11: extractConvPairParams(11),
conv_12: extractConvPairParams(12),
conv_13: extractConvPairParams(13)
};
}
function extractConvParams(prefix, mappedPrefix) {
var filters = extractWeightEntry(prefix + "/weights", 4, mappedPrefix + "/filters");
var bias = extractWeightEntry(prefix + "/biases", 1, mappedPrefix + "/bias");
return { filters: filters, bias: bias };
}
function extractBoxPredictorParams(idx) {
var box_encoding_predictor = extractConvParams("Prediction/BoxPredictor_" + idx + "/BoxEncodingPredictor", "prediction_layer/box_predictor_" + idx + "/box_encoding_predictor");
var class_predictor = extractConvParams("Prediction/BoxPredictor_" + idx + "/ClassPredictor", "prediction_layer/box_predictor_" + idx + "/class_predictor");
return { box_encoding_predictor: box_encoding_predictor, class_predictor: class_predictor };
}
function extractPredictionLayerParams() {
return {
conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),
conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),
conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),
conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),
conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),
conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),
conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),
conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),
box_predictor_0: extractBoxPredictorParams(0),
box_predictor_1: extractBoxPredictorParams(1),
box_predictor_2: extractBoxPredictorParams(2),
box_predictor_3: extractBoxPredictorParams(3),
box_predictor_4: extractBoxPredictorParams(4),
box_predictor_5: extractBoxPredictorParams(5)
};
}
return {
extractMobilenetV1Params: extractMobilenetV1Params,
extractPredictionLayerParams: extractPredictionLayerParams
};
}
export function loadQuantizedParams(uri) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var weightMap, paramMappings, _a, extractMobilenetV1Params, extractPredictionLayerParams, extra_dim, params;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0: return [4 /*yield*/, loadWeightMap(uri, DEFAULT_MODEL_NAME)];
case 1:
weightMap = _b.sent();
paramMappings = [];
_a = extractorsFactory(weightMap, paramMappings), extractMobilenetV1Params = _a.extractMobilenetV1Params, extractPredictionLayerParams = _a.extractPredictionLayerParams;
extra_dim = weightMap['Output/extra_dim'];
paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });
if (!isTensor3D(extra_dim)) {
throw new Error("expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have " + extra_dim);
}
params = {
mobilenetv1: extractMobilenetV1Params(),
prediction_layer: extractPredictionLayerParams(),
output_layer: {
extra_dim: extra_dim
}
};
disposeUnusedWeightTensors(weightMap, paramMappings);
return [2 /*return*/, { params: params, paramMappings: paramMappings }];
}
});
});
}
//# sourceMappingURL=loadQuantizedParams.js.map
\ No newline at end of file
{"version":3,"file":"loadQuantizedParams.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/loadQuantizedParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { MobileNetV1 } from './types';
export declare function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params): {
out: tf.Tensor<tf.Rank.R4>;
conv11: any;
};
import * as tf from '@tensorflow/tfjs-core';
import { pointwiseConvLayer } from './pointwiseConvLayer';
var epsilon = 0.0010000000474974513;
function depthwiseConvLayer(x, params, strides) {
return tf.tidy(function () {
var out = tf.depthwiseConv2d(x, params.filters, strides, 'same');
out = tf.batchNormalization(out, params.batch_norm_mean, params.batch_norm_variance, epsilon, params.batch_norm_scale, params.batch_norm_offset);
return tf.clipByValue(out, 0, 6);
});
}
function getStridesForLayerIdx(layerIdx) {
return [2, 4, 6, 12].some(function (idx) { return idx === layerIdx; }) ? [2, 2] : [1, 1];
}
export function mobileNetV1(x, params) {
return tf.tidy(function () {
var conv11 = null;
var out = pointwiseConvLayer(x, params.conv_0, [2, 2]);
var convPairParams = [
params.conv_1,
params.conv_2,
params.conv_3,
params.conv_4,
params.conv_5,
params.conv_6,
params.conv_7,
params.conv_8,
params.conv_9,
params.conv_10,
params.conv_11,
params.conv_12,
params.conv_13
];
convPairParams.forEach(function (param, i) {
var layerIdx = i + 1;
var depthwiseConvStrides = getStridesForLayerIdx(layerIdx);
out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);
out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);
if (layerIdx === 11) {
conv11 = out;
}
});
if (conv11 === null) {
throw new Error('mobileNetV1 - output of conv layer 11 is null');
}
return {
out: out,
conv11: conv11
};
});
}
//# sourceMappingURL=mobileNetV1.js.map
\ No newline at end of file
{"version":3,"file":"mobileNetV1.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/mobileNetV1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,IAAM,OAAO,GAAG,qBAAqB,CAAA;AAErC,4BACE,CAAc,EACd,MAAuC,EACvC,OAAyB;IAEzB,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAChE,GAAG,GAAG,EAAE,CAAC,kBAAkB,CACzB,GAAG,EACH,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,mBAAmB,EAC1B,OAAO,EACP,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,iBAAiB,CACzB,CAAA;QACD,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,+BAA+B,QAAgB;IAC7C,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,KAAK,QAAQ,EAAhB,CAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,sBAAsB,CAAc,EAAE,MAA0B;IACpE,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,MAAM,GAAG,IAAI,CAAA;QACjB,IAAI,GAAG,GAAG,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAEtD,IAAM,cAAc,GAAG;YACrB,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;SACf,CAAA;QAED,cAAc,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,CAAC;YAC9B,IAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;YACtB,IAAM,oBAAoB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;YAC5D,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAA;YACzE,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC3D,IAAI,QAAQ,KAAK,EAAE,EAAE;gBACnB,MAAM,GAAG,GAAG,CAAA;aACb;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;SACjE;QAED,OAAO;YACL,GAAG,KAAA;YACH,MAAM,EAAE,MAAa;SACtB,CAAA;IAEH,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
export declare function nonMaxSuppression(boxes: tf.Tensor2D, scores: number[], maxOutputSize: number, iouThreshold: number, scoreThreshold: number): number[];
export function nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) {
var numBoxes = boxes.shape[0];
var outputSize = Math.min(maxOutputSize, numBoxes);
var candidates = scores
.map(function (score, boxIndex) { return ({ score: score, boxIndex: boxIndex }); })
.filter(function (c) { return c.score > scoreThreshold; })
.sort(function (c1, c2) { return c2.score - c1.score; });
var suppressFunc = function (x) { return x <= iouThreshold ? 1 : 0; };
var selected = [];
candidates.forEach(function (c) {
if (selected.length >= outputSize) {
return;
}
var originalScore = c.score;
for (var j = selected.length - 1; j >= 0; --j) {
var iou = IOU(boxes, c.boxIndex, selected[j]);
if (iou === 0.0) {
continue;
}
c.score *= suppressFunc(iou);
if (c.score <= scoreThreshold) {
break;
}
}
if (originalScore === c.score) {
selected.push(c.boxIndex);
}
});
return selected;
}
function IOU(boxes, i, j) {
var yminI = Math.min(boxes.get(i, 0), boxes.get(i, 2));
var xminI = Math.min(boxes.get(i, 1), boxes.get(i, 3));
var ymaxI = Math.max(boxes.get(i, 0), boxes.get(i, 2));
var xmaxI = Math.max(boxes.get(i, 1), boxes.get(i, 3));
var yminJ = Math.min(boxes.get(j, 0), boxes.get(j, 2));
var xminJ = Math.min(boxes.get(j, 1), boxes.get(j, 3));
var ymaxJ = Math.max(boxes.get(j, 0), boxes.get(j, 2));
var xmaxJ = Math.max(boxes.get(j, 1), boxes.get(j, 3));
var areaI = (ymaxI - yminI) * (xmaxI - xminI);
var areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);
if (areaI <= 0 || areaJ <= 0) {
return 0.0;
}
var intersectionYmin = Math.max(yminI, yminJ);
var intersectionXmin = Math.max(xminI, xminJ);
var intersectionYmax = Math.min(ymaxI, ymaxJ);
var intersectionXmax = Math.min(xmaxI, xmaxJ);
var intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0) *
Math.max(intersectionXmax - intersectionXmin, 0.0);
return intersectionArea / (areaI + areaJ - intersectionArea);
}
//# sourceMappingURL=nonMaxSuppression.js.map
\ No newline at end of file
{"version":3,"file":"nonMaxSuppression.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/nonMaxSuppression.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { OutputLayerParams } from './types';
export declare function outputLayer(boxPredictions: tf.Tensor4D, classPredictions: tf.Tensor4D, params: OutputLayerParams): {
boxes: tf.Tensor<tf.Rank.R2>[];
scores: tf.Tensor<tf.Rank.R1>[];
};
import * as tf from '@tensorflow/tfjs-core';
function getCenterCoordinatesAndSizesLayer(x) {
var vec = tf.unstack(tf.transpose(x, [1, 0]));
var sizes = [
tf.sub(vec[2], vec[0]),
tf.sub(vec[3], vec[1])
];
var centers = [
tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),
tf.add(vec[1], tf.div(sizes[1], tf.scalar(2)))
];
return {
sizes: sizes,
centers: centers
};
}
function decodeBoxesLayer(x0, x1) {
var _a = getCenterCoordinatesAndSizesLayer(x0), sizes = _a.sizes, centers = _a.centers;
var vec = tf.unstack(tf.transpose(x1, [1, 0]));
var div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2));
var add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]);
var div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2));
var add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]);
return tf.transpose(tf.stack([
tf.sub(add0_out, div0_out),
tf.sub(add1_out, div1_out),
tf.add(add0_out, div0_out),
tf.add(add1_out, div1_out)
]), [1, 0]);
}
export function outputLayer(boxPredictions, classPredictions, params) {
return tf.tidy(function () {
var batchSize = boxPredictions.shape[0];
var boxes = decodeBoxesLayer(tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]), tf.reshape(boxPredictions, [-1, 4]));
boxes = tf.reshape(boxes, [batchSize, (boxes.shape[0] / batchSize), 4]);
var scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]));
var scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]);
scores = tf.reshape(scores, [batchSize, scores.shape[1]]);
var boxesByBatch = tf.unstack(boxes);
var scoresByBatch = tf.unstack(scores);
return {
boxes: boxesByBatch,
scores: scoresByBatch
};
});
}
//# sourceMappingURL=outputLayer.js.map
\ No newline at end of file
{"version":3,"file":"outputLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/outputLayer.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { PointwiseConvParams } from './types';
export declare function pointwiseConvLayer(x: tf.Tensor4D, params: PointwiseConvParams, strides: [number, number]): tf.Tensor<tf.Rank.R4>;
import * as tf from '@tensorflow/tfjs-core';
export function pointwiseConvLayer(x, params, strides) {
return tf.tidy(function () {
var out = tf.conv2d(x, params.filters, strides, 'same');
out = tf.add(out, params.batch_norm_offset);
return tf.clipByValue(out, 0, 6);
});
}
//# sourceMappingURL=pointwiseConvLayer.js.map
\ No newline at end of file
{"version":3,"file":"pointwiseConvLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/pointwiseConvLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI5C,MAAM,6BACJ,CAAc,EACd,MAA2B,EAC3B,OAAyB;IAEzB,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QACvD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAC3C,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { PredictionLayerParams } from './types';
export declare function predictionLayer(x: tf.Tensor4D, conv11: tf.Tensor4D, params: PredictionLayerParams): {
boxPredictions: tf.Tensor<tf.Rank.R4>;
classPredictions: tf.Tensor<tf.Rank.R4>;
};
import * as tf from '@tensorflow/tfjs-core';
import { boxPredictionLayer } from './boxPredictionLayer';
import { pointwiseConvLayer } from './pointwiseConvLayer';
export function predictionLayer(x, conv11, params) {
return tf.tidy(function () {
var conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]);
var conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]);
var conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]);
var conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]);
var conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]);
var conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]);
var conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]);
var conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]);
var boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0);
var boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1);
var boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2);
var boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3);
var boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4);
var boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5);
var boxPredictions = tf.concat([
boxPrediction0.boxPredictionEncoding,
boxPrediction1.boxPredictionEncoding,
boxPrediction2.boxPredictionEncoding,
boxPrediction3.boxPredictionEncoding,
boxPrediction4.boxPredictionEncoding,
boxPrediction5.boxPredictionEncoding
], 1);
var classPredictions = tf.concat([
boxPrediction0.classPrediction,
boxPrediction1.classPrediction,
boxPrediction2.classPrediction,
boxPrediction3.classPrediction,
boxPrediction4.classPrediction,
boxPrediction5.classPrediction
], 1);
return {
boxPredictions: boxPredictions,
classPredictions: classPredictions
};
});
}
//# sourceMappingURL=predictionLayer.js.map
\ No newline at end of file
{"version":3,"file":"predictionLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/predictionLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,0BACJ,CAAc,EACd,MAAmB,EACnB,MAA6B;IAE7B,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1D,IAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAE9D,IAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACzE,IAAM,cAAc,GAAG,kBAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACpE,IAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxE,IAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxE,IAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxE,IAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QAExE,IAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC;YAC/B,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;SACrC,EAAE,CAAC,CAAgB,CAAA;QAEpB,IAAM,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC;YACjC,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;SAC/B,EAAE,CAAC,CAAgB,CAAA;QAEpB,OAAO;YACL,cAAc,gBAAA;YACd,gBAAgB,kBAAA;SACjB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { ConvParams } from 'tfjs-tiny-yolov2';
export declare type PointwiseConvParams = {
filters: tf.Tensor4D;
batch_norm_offset: tf.Tensor1D;
};
export declare namespace MobileNetV1 {
type DepthwiseConvParams = {
filters: tf.Tensor4D;
batch_norm_scale: tf.Tensor1D;
batch_norm_offset: tf.Tensor1D;
batch_norm_mean: tf.Tensor1D;
batch_norm_variance: tf.Tensor1D;
};
type ConvPairParams = {
depthwise_conv: DepthwiseConvParams;
pointwise_conv: PointwiseConvParams;
};
type Params = {
conv_0: PointwiseConvParams;
conv_1: ConvPairParams;
conv_2: ConvPairParams;
conv_3: ConvPairParams;
conv_4: ConvPairParams;
conv_5: ConvPairParams;
conv_6: ConvPairParams;
conv_7: ConvPairParams;
conv_8: ConvPairParams;
conv_9: ConvPairParams;
conv_10: ConvPairParams;
conv_11: ConvPairParams;
conv_12: ConvPairParams;
conv_13: ConvPairParams;
};
}
export declare type BoxPredictionParams = {
box_encoding_predictor: ConvParams;
class_predictor: ConvParams;
};
export declare type PredictionLayerParams = {
conv_0: PointwiseConvParams;
conv_1: PointwiseConvParams;
conv_2: PointwiseConvParams;
conv_3: PointwiseConvParams;
conv_4: PointwiseConvParams;
conv_5: PointwiseConvParams;
conv_6: PointwiseConvParams;
conv_7: PointwiseConvParams;
box_predictor_0: BoxPredictionParams;
box_predictor_1: BoxPredictionParams;
box_predictor_2: BoxPredictionParams;
box_predictor_3: BoxPredictionParams;
box_predictor_4: BoxPredictionParams;
box_predictor_5: BoxPredictionParams;
};
export declare type OutputLayerParams = {
extra_dim: tf.Tensor3D;
};
export declare type NetParams = {
mobilenetv1: MobileNetV1.Params;
prediction_layer: PredictionLayerParams;
output_layer: OutputLayerParams;
};
//# sourceMappingURL=types.js.map
\ No newline at end of file
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/types.ts"],"names":[],"mappings":""}
\ No newline at end of file
import { Point, TNetInput } from 'tfjs-image-recognition-base';
import { TinyYolov2 as TinyYolov2Base, ITinyYolov2Options } from 'tfjs-tiny-yolov2';
import { FaceDetection } from '../classes';
export declare class TinyFaceDetector extends TinyYolov2Base {
constructor();
readonly anchors: Point[];
locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise<FaceDetection[]>;
protected loadQuantizedParams(modelUri: string | undefined): any;
}
import * as tslib_1 from "tslib";
import { TinyYolov2 as TinyYolov2Base } from 'tfjs-tiny-yolov2';
import { FaceDetection } from '../classes';
import { BOX_ANCHORS, DEFAULT_MODEL_NAME, IOU_THRESHOLD, MEAN_RGB } from './const';
var TinyFaceDetector = /** @class */ (function (_super) {
tslib_1.__extends(TinyFaceDetector, _super);
function TinyFaceDetector() {
var _this = this;
var config = {
withSeparableConvs: true,
iouThreshold: IOU_THRESHOLD,
classes: ['face'],
anchors: BOX_ANCHORS,
meanRgb: MEAN_RGB,
isFirstLayerConv2d: true,
filterSizes: [3, 16, 32, 64, 128, 256, 512]
};
_this = _super.call(this, config) || this;
return _this;
}
Object.defineProperty(TinyFaceDetector.prototype, "anchors", {
get: function () {
return this.config.anchors;
},
enumerable: true,
configurable: true
});
TinyFaceDetector.prototype.locateFaces = function (input, forwardParams) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var objectDetections;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.detect(input, forwardParams)];
case 1:
objectDetections = _a.sent();
return [2 /*return*/, objectDetections.map(function (det) { return new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }); })];
}
});
});
};
TinyFaceDetector.prototype.loadQuantizedParams = function (modelUri) {
var defaultModelName = DEFAULT_MODEL_NAME;
return _super.prototype.loadQuantizedParams.call(this, modelUri, defaultModelName);
};
return TinyFaceDetector;
}(TinyYolov2Base));
export { TinyFaceDetector };
//# sourceMappingURL=TinyFaceDetector.js.map
\ No newline at end of file
{"version":3,"file":"TinyFaceDetector.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/TinyFaceDetector.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,IAAI,cAAc,EAAsB,MAAM,kBAAkB,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnF;IAAsC,4CAAc;IAElD;QAAA,iBAYC;QAXC,IAAM,MAAM,GAAG;YACb,kBAAkB,EAAE,IAAI;YACxB,YAAY,EAAE,aAAa;YAC3B,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,QAAQ;YACjB,kBAAkB,EAAE,IAAI;YACxB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;SAC5C,CAAA;QAED,QAAA,kBAAM,MAAM,CAAC,SAAA;;IACf,CAAC;IAED,sBAAW,qCAAO;aAAlB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QAC5B,CAAC;;;OAAA;IAEY,sCAAW,GAAxB,UAAyB,KAAgB,EAAE,aAAiC;;;;;4BACjD,qBAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,EAAA;;wBAA1D,gBAAgB,GAAG,SAAuC;wBAChE,sBAAO,gBAAgB,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAAjG,CAAiG,CAAC,EAAA;;;;KACtI;IAES,8CAAmB,GAA7B,UAA8B,QAA4B;QACxD,IAAM,gBAAgB,GAAG,kBAAkB,CAAA;QAC3C,OAAO,iBAAM,mBAAmB,YAAC,QAAQ,EAAE,gBAAgB,CAAQ,CAAA;IACrE,CAAC;IACH,uBAAC;AAAD,CAAC,AA7BD,CAAsC,cAAc,GA6BnD"}
\ No newline at end of file
import { ITinyYolov2Options, TinyYolov2Options } from 'tfjs-tiny-yolov2';
export interface ITinyFaceDetectorOptions extends ITinyYolov2Options {
}
export declare class TinyFaceDetectorOptions extends TinyYolov2Options {
protected _name: string;
}
import * as tslib_1 from "tslib";
import { TinyYolov2Options } from 'tfjs-tiny-yolov2';
var TinyFaceDetectorOptions = /** @class */ (function (_super) {
tslib_1.__extends(TinyFaceDetectorOptions, _super);
function TinyFaceDetectorOptions() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this._name = 'TinyFaceDetectorOptions';
return _this;
}
return TinyFaceDetectorOptions;
}(TinyYolov2Options));
export { TinyFaceDetectorOptions };
//# sourceMappingURL=TinyFaceDetectorOptions.js.map
\ No newline at end of file
{"version":3,"file":"TinyFaceDetectorOptions.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/TinyFaceDetectorOptions.ts"],"names":[],"mappings":";AAAA,OAAO,EAAsB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIzE;IAA6C,mDAAiB;IAA9D;QAAA,qEAEC;QADW,WAAK,GAAW,yBAAyB,CAAA;;IACrD,CAAC;IAAD,8BAAC;AAAD,CAAC,AAFD,CAA6C,iBAAiB,GAE7D"}
\ No newline at end of file
import { Point } from 'tfjs-image-recognition-base';
export declare const IOU_THRESHOLD = 0.4;
export declare const BOX_ANCHORS: Point[];
export declare const MEAN_RGB: [number, number, number];
export declare const DEFAULT_MODEL_NAME = "tiny_face_detector_model";
import { Point } from 'tfjs-image-recognition-base';
export var IOU_THRESHOLD = 0.4;
export var BOX_ANCHORS = [
new Point(1.603231, 2.094468),
new Point(6.041143, 7.080126),
new Point(2.882459, 3.518061),
new Point(4.266906, 5.178857),
new Point(9.041765, 10.66308)
];
export var MEAN_RGB = [117.001, 114.697, 97.404];
export var DEFAULT_MODEL_NAME = 'tiny_face_detector_model';
//# sourceMappingURL=const.js.map
\ No newline at end of file
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,MAAM,CAAC,IAAM,aAAa,GAAG,GAAG,CAAA;AAEhC,MAAM,CAAC,IAAM,WAAW,GAAG;IACzB,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC9B,CAAA;AAED,MAAM,CAAC,IAAM,QAAQ,GAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAE5E,MAAM,CAAC,IAAM,kBAAkB,GAAG,0BAA0B,CAAA"}
\ No newline at end of file
import { TinyFaceDetector } from './TinyFaceDetector';
export * from './TinyFaceDetector';
export * from './TinyFaceDetectorOptions';
export declare function createTinyFaceDetector(weights: Float32Array): TinyFaceDetector;
import { TinyFaceDetector } from './TinyFaceDetector';
export * from './TinyFaceDetector';
export * from './TinyFaceDetectorOptions';
export function createTinyFaceDetector(weights) {
var net = new TinyFaceDetector();
net.extractWeights(weights);
return net;
}
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAE1C,MAAM,iCAAiC,OAAqB;IAC1D,IAAM,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAA;IAClC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC"}
\ No newline at end of file
import { Point, TNetInput } from 'tfjs-image-recognition-base';
import { TinyYolov2 as TinyYolov2Base, TinyYolov2Types } from 'tfjs-tiny-yolov2';
import { ITinyYolov2Options, TinyYolov2 as TinyYolov2Base } from 'tfjs-tiny-yolov2';
import { FaceDetection } from '../classes';
export declare class TinyYolov2 extends TinyYolov2Base {
constructor(withSeparableConvs?: boolean);
readonly withSeparableConvs: boolean;
readonly anchors: Point[];
locateFaces(input: TNetInput, forwardParams: TinyYolov2Types.TinyYolov2ForwardParams): Promise<FaceDetection[]>;
locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise<FaceDetection[]>;
protected loadQuantizedParams(modelUri: string | undefined): any;
}
{"version":3,"file":"TinyYolov2.js","sourceRoot":"","sources":["../../../src/tinyYolov2/TinyYolov2.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,IAAI,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,iCAAiC,EACjC,aAAa,EACb,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB;IAAgC,sCAAc;IAE5C,oBAAY,kBAAkC;QAAlC,mCAAA,EAAA,yBAAkC;QAA9C,iBAkBC;QAjBC,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;YAC/B,kBAAkB,oBAAA;YAClB,YAAY,EAAE,aAAa;YAC3B,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,EACD,kBAAkB;YAChB,CAAC,CAAC;gBACA,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,kBAAkB;aAC5B;YACD,CAAC,CAAC;gBACA,OAAO,EAAE,WAAW;gBACpB,eAAe,EAAE,IAAI;aACtB,CACF,CAAA;QAED,QAAA,kBAAM,MAAM,CAAC,SAAA;;IACf,CAAC;IAED,sBAAW,0CAAkB;aAA7B;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAA;QACvC,CAAC;;;OAAA;IAED,sBAAW,+BAAO;aAAlB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QAC5B,CAAC;;;OAAA;IAEY,gCAAW,GAAxB,UAAyB,KAAgB,EAAE,aAAsD;;;;;4BACtE,qBAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,EAAA;;wBAA1D,gBAAgB,GAAG,SAAuC;wBAChE,sBAAO,gBAAgB,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAAjG,CAAiG,CAAC,EAAA;;;;KACtI;IAES,wCAAmB,GAA7B,UAA8B,QAA4B;QACxD,IAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,kBAAkB,CAAA;QACzG,OAAO,iBAAM,mBAAmB,YAAC,QAAQ,EAAE,gBAAgB,CAAQ,CAAA;IACrE,CAAC;IACH,iBAAC;AAAD,CAAC,AAvCD,CAAgC,cAAc,GAuC7C"}
\ No newline at end of file
{"version":3,"file":"TinyYolov2.js","sourceRoot":"","sources":["../../../src/tinyYolov2/TinyYolov2.ts"],"names":[],"mappings":";AACA,OAAO,EAAsB,UAAU,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,iCAAiC,EACjC,aAAa,EACb,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB;IAAgC,sCAAc;IAE5C,oBAAY,kBAAkC;QAAlC,mCAAA,EAAA,yBAAkC;QAA9C,iBAkBC;QAjBC,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;YAC/B,kBAAkB,oBAAA;YAClB,YAAY,EAAE,aAAa;YAC3B,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,EACD,kBAAkB;YAChB,CAAC,CAAC;gBACA,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,kBAAkB;aAC5B;YACD,CAAC,CAAC;gBACA,OAAO,EAAE,WAAW;gBACpB,eAAe,EAAE,IAAI;aACtB,CACF,CAAA;QAED,QAAA,kBAAM,MAAM,CAAC,SAAA;;IACf,CAAC;IAED,sBAAW,0CAAkB;aAA7B;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAA;QACvC,CAAC;;;OAAA;IAED,sBAAW,+BAAO;aAAlB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QAC5B,CAAC;;;OAAA;IAEY,gCAAW,GAAxB,UAAyB,KAAgB,EAAE,aAAiC;;;;;4BACjD,qBAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,EAAA;;wBAA1D,gBAAgB,GAAG,SAAuC;wBAChE,sBAAO,gBAAgB,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAAjG,CAAiG,CAAC,EAAA;;;;KACtI;IAES,wCAAmB,GAA7B,UAA8B,QAA4B;QACxD,IAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,kBAAkB,CAAA;QACzG,OAAO,iBAAM,mBAAmB,YAAC,QAAQ,EAAE,gBAAgB,CAAQ,CAAA;IACrE,CAAC;IACH,iBAAC;AAAD,CAAC,AAvCD,CAAgC,cAAc,GAuC7C"}
\ 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