Unverified Commit 59711e69 by justadudewhohacks Committed by GitHub

Merge pull request #19 from justadudewhohacks/commonjs

commonjs
parents 42dddcb3 77e5cbf5
import { createCanvasFromMedia, getElement } from './utils'; "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var utils_1 = require("./utils");
var NetInput = /** @class */ (function () { var NetInput = /** @class */ (function () {
function NetInput(mediaArg, dims) { function NetInput(mediaArg, dims) {
var _this = this; var _this = this;
...@@ -8,7 +10,7 @@ var NetInput = /** @class */ (function () { ...@@ -8,7 +10,7 @@ var NetInput = /** @class */ (function () {
if (!mediaArgArray.length) { if (!mediaArgArray.length) {
throw new Error('NetInput - empty array passed as input'); throw new Error('NetInput - empty array passed as input');
} }
var medias = mediaArgArray.map(getElement); var medias = mediaArgArray.map(utils_1.getElement);
medias.forEach(function (media, i) { medias.forEach(function (media, i) {
if (!(media instanceof HTMLImageElement || media instanceof HTMLVideoElement || media instanceof HTMLCanvasElement)) { if (!(media instanceof HTMLImageElement || media instanceof HTMLVideoElement || media instanceof HTMLCanvasElement)) {
var idxHint = Array.isArray(mediaArg) ? " at input index " + i + ":" : ''; var idxHint = Array.isArray(mediaArg) ? " at input index " + i + ":" : '';
...@@ -28,7 +30,7 @@ var NetInput = /** @class */ (function () { ...@@ -28,7 +30,7 @@ var NetInput = /** @class */ (function () {
} }
// if input is batch type, make sure every canvas has the same dimensions // if input is batch type, make sure every canvas has the same dimensions
var canvasDims = this.dims || dims; var canvasDims = this.dims || dims;
this._canvases.push(createCanvasFromMedia(media, canvasDims)); this._canvases.push(utils_1.createCanvasFromMedia(media, canvasDims));
}; };
Object.defineProperty(NetInput.prototype, "canvases", { Object.defineProperty(NetInput.prototype, "canvases", {
get: function () { get: function () {
...@@ -61,5 +63,5 @@ var NetInput = /** @class */ (function () { ...@@ -61,5 +63,5 @@ var NetInput = /** @class */ (function () {
}); });
return NetInput; return NetInput;
}()); }());
export { NetInput }; exports.NetInput = NetInput;
//# sourceMappingURL=NetInput.js.map //# sourceMappingURL=NetInput.js.map
\ No newline at end of file
{"version":3,"file":"NetInput.js","sourceRoot":"","sources":["../src/NetInput.ts"],"names":[],"mappings":";;AACA,iCAAqG;AAErG;IAGE,kBACE,QAAmB,EACnB,IAAiB;QAFnB,iBA2BC;QAvBC,IAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC3C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QAEd,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;SAC1D;QAED,IAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,kBAAU,CAAC,CAAA;QAG5C,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,KAAK,YAAY,gBAAgB,IAAI,KAAK,YAAY,gBAAgB,IAAI,KAAK,YAAY,iBAAiB,CAAC,EAAE;gBACnH,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAmB,CAAC,MAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBACtE,IAAI,OAAO,aAAa,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oBACxC,MAAM,IAAI,KAAK,CAAC,eAAa,OAAO,qEAAkE,CAAC,CAAA;iBACxG;gBACD,MAAM,IAAI,KAAK,CAAC,eAAa,OAAO,kHAA+G,CAAC,CAAA;aACrJ;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QACnB,MAAM,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,EAAxB,CAAwB,CAAC,CAAA;IAC/C,CAAC;IAEO,6BAAU,GAAlB,UAAmB,KAAoB,EAAE,IAAiB;QACxD,IAAI,KAAK,YAAY,iBAAiB,EAAE;YACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1B,OAAM;SACP;QAED,yEAAyE;QACzE,IAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAA;QACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,6BAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,sBAAW,8BAAQ;aAAnB;YACE,OAAO,IAAI,CAAC,SAAS,CAAA;QACvB,CAAC;;;OAAA;IAED,sBAAW,2BAAK;aAAhB;YACE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAA;QACxC,CAAC;;;OAAA;IAED,sBAAW,4BAAM;aAAjB;YACE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAA;QACzC,CAAC;;;OAAA;IAED,sBAAW,0BAAI;aAAf;YACQ,IAAA,SAAwB,EAAtB,gBAAK,EAAE,kBAAM,CAAS;YAC9B,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;QAC7D,CAAC;;;OAAA;IACH,eAAC;AAAD,CAAC,AA3DD,IA2DC;AA3DY,4BAAQ"}
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Point = /** @class */ (function () { var Point = /** @class */ (function () {
function Point(x, y) { function Point(x, y) {
this.x = x; this.x = x;
...@@ -26,5 +28,5 @@ var Point = /** @class */ (function () { ...@@ -26,5 +28,5 @@ var Point = /** @class */ (function () {
}; };
return Point; return Point;
}()); }());
export { Point }; exports.Point = Point;
//# sourceMappingURL=Point.js.map //# sourceMappingURL=Point.js.map
\ No newline at end of file
{"version":3,"file":"Point.js","sourceRoot":"","sources":["../src/Point.ts"],"names":[],"mappings":";;AAKA;IAIE,eAAY,CAAS,EAAE,CAAS;QAC9B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;IAEM,mBAAG,GAAV,UAAW,EAAU;QACnB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAEM,mBAAG,GAAV,UAAW,EAAU;QACnB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAEM,mBAAG,GAAV,UAAW,EAAU;QACnB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAEM,mBAAG,GAAV,UAAW,EAAU;QACnB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAEM,mBAAG,GAAV;QACE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,CAAC;IAEM,yBAAS,GAAhB;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7D,CAAC;IAEM,qBAAK,GAAZ;QACE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC;IACH,YAAC;AAAD,CAAC,AApCD,IAoCC;AApCY,sBAAK"}
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Rect = /** @class */ (function () { var Rect = /** @class */ (function () {
function Rect(x, y, width, height) { function Rect(x, y, width, height) {
this.x = x; this.x = x;
...@@ -10,5 +12,5 @@ var Rect = /** @class */ (function () { ...@@ -10,5 +12,5 @@ var Rect = /** @class */ (function () {
}; };
return Rect; return Rect;
}()); }());
export { Rect }; exports.Rect = Rect;
//# sourceMappingURL=Rect.js.map //# sourceMappingURL=Rect.js.map
\ No newline at end of file
{"version":3,"file":"Rect.js","sourceRoot":"","sources":["../src/Rect.ts"],"names":[],"mappings":";;AAOA;IAME,cAAY,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;QAC7D,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAEM,oBAAK,GAAZ;QACE,OAAO,IAAI,IAAI,CACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CACxB,CAAA;IACH,CAAC;IACH,WAAC;AAAD,CAAC,AArBD,IAqBC;AArBY,oBAAI"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; "use strict";
export function convLayer(x, params, padding, withRelu) { Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function convLayer(x, params, padding, withRelu) {
if (padding === void 0) { padding = 'same'; } if (padding === void 0) { padding = 'same'; }
if (withRelu === void 0) { withRelu = false; } if (withRelu === void 0) { withRelu = false; }
return tf.tidy(function () { return tf.tidy(function () {
...@@ -7,4 +9,5 @@ export function convLayer(x, params, padding, withRelu) { ...@@ -7,4 +9,5 @@ export function convLayer(x, params, padding, withRelu) {
return withRelu ? tf.relu(out) : out; return withRelu ? tf.relu(out) : out;
}); });
} }
exports.convLayer = convLayer;
//# sourceMappingURL=convLayer.js.map //# sourceMappingURL=convLayer.js.map
\ No newline at end of file
{"version":3,"file":"convLayer.js","sourceRoot":"","sources":["../../src/commons/convLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAI5C,mBACE,CAAc,EACd,MAAkB,EAClB,OAAkC,EAClC,QAAyB;IADzB,wBAAA,EAAA,gBAAkC;IAClC,yBAAA,EAAA,gBAAyB;IAEzB,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAChB,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAC7C,MAAM,CAAC,IAAI,CACG,CAAA;QAEhB,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACtC,CAAC,CAAC,CAAA;AACJ,CAAC;AAdD,8BAcC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; "use strict";
export function extractConvParamsFactory(extractWeights) { Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function extractConvParamsFactory(extractWeights) {
return function (channelsIn, channelsOut, filterSize) { return function (channelsIn, channelsOut, filterSize) {
var filters = tf.tensor4d(extractWeights(channelsIn * channelsOut * filterSize * filterSize), [filterSize, filterSize, channelsIn, channelsOut]); var filters = tf.tensor4d(extractWeights(channelsIn * channelsOut * filterSize * filterSize), [filterSize, filterSize, channelsIn, channelsOut]);
var bias = tf.tensor1d(extractWeights(channelsOut)); var bias = tf.tensor1d(extractWeights(channelsOut));
...@@ -9,4 +11,5 @@ export function extractConvParamsFactory(extractWeights) { ...@@ -9,4 +11,5 @@ export function extractConvParamsFactory(extractWeights) {
}; };
}; };
} }
exports.extractConvParamsFactory = extractConvParamsFactory;
//# sourceMappingURL=extractConvParamsFactory.js.map //# sourceMappingURL=extractConvParamsFactory.js.map
\ No newline at end of file
{"version":3,"file":"extractConvParamsFactory.js","sourceRoot":"","sources":["../../src/commons/extractConvParamsFactory.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAI5C,kCAAyC,cAAsC;IAC7E,OAAO,UACL,UAAkB,EAClB,WAAmB,EACnB,UAAkB;QAElB,IAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CACzB,cAAc,CAAC,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC,EAClE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAClD,CAAA;QACD,IAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAA;QAErD,OAAO;YACL,OAAO,SAAA;YACP,IAAI,MAAA;SACL,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAjBD,4DAiBC"}
\ No newline at end of file
export function extractWeightsFactory(weights) { "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function extractWeightsFactory(weights) {
var remainingWeights = weights; var remainingWeights = weights;
function extractWeights(numWeights) { function extractWeights(numWeights) {
var ret = remainingWeights.slice(0, numWeights); var ret = remainingWeights.slice(0, numWeights);
...@@ -13,4 +15,5 @@ export function extractWeightsFactory(weights) { ...@@ -13,4 +15,5 @@ export function extractWeightsFactory(weights) {
getRemainingWeights: getRemainingWeights getRemainingWeights: getRemainingWeights
}; };
} }
exports.extractWeightsFactory = extractWeightsFactory;
//# sourceMappingURL=extractWeightsFactory.js.map //# sourceMappingURL=extractWeightsFactory.js.map
\ No newline at end of file
{"version":3,"file":"extractWeightsFactory.js","sourceRoot":"","sources":["../../src/commons/extractWeightsFactory.ts"],"names":[],"mappings":";;AAAA,+BAAsC,OAAqB;IACzD,IAAI,gBAAgB,GAAG,OAAO,CAAA;IAE9B,wBAAwB,UAAkB;QACxC,IAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;QACjD,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACrD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED;QACE,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,OAAO;QACL,cAAc,gBAAA;QACd,mBAAmB,qBAAA;KACpB,CAAA;AACH,CAAC;AAjBD,sDAiBC"}
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Point_1 = require("../Point");
function getCenterPoint(pts) {
return pts.reduce(function (sum, pt) { return sum.add(pt); }, new Point_1.Point(0, 0))
.div(new Point_1.Point(pts.length, pts.length));
}
exports.getCenterPoint = getCenterPoint;
//# sourceMappingURL=getCenterPoint.js.map
\ No newline at end of file
{"version":3,"file":"getCenterPoint.js","sourceRoot":"","sources":["../../src/commons/getCenterPoint.ts"],"names":[],"mappings":";;AAAA,kCAAiC;AAEjC,wBAA+B,GAAY;IACzC,OAAO,GAAG,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,EAAE,IAAK,OAAA,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAX,CAAW,EAAE,IAAI,aAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACzD,GAAG,CAAC,IAAI,aAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AAC3C,CAAC;AAHD,wCAGC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; "use strict";
export function isTensor(tensor, dim) { Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function isTensor(tensor, dim) {
return tensor instanceof tf.Tensor && tensor.shape.length === dim; return tensor instanceof tf.Tensor && tensor.shape.length === dim;
} }
export function isTensor1D(tensor) { exports.isTensor = isTensor;
function isTensor1D(tensor) {
return isTensor(tensor, 1); return isTensor(tensor, 1);
} }
export function isTensor2D(tensor) { exports.isTensor1D = isTensor1D;
function isTensor2D(tensor) {
return isTensor(tensor, 2); return isTensor(tensor, 2);
} }
export function isTensor3D(tensor) { exports.isTensor2D = isTensor2D;
function isTensor3D(tensor) {
return isTensor(tensor, 3); return isTensor(tensor, 3);
} }
export function isTensor4D(tensor) { exports.isTensor3D = isTensor3D;
function isTensor4D(tensor) {
return isTensor(tensor, 4); return isTensor(tensor, 4);
} }
exports.isTensor4D = isTensor4D;
//# sourceMappingURL=isTensor.js.map //# sourceMappingURL=isTensor.js.map
\ No newline at end of file
{"version":3,"file":"isTensor.js","sourceRoot":"","sources":["../../src/commons/isTensor.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,kBAAyB,MAAiB,EAAE,GAAW;IACrD,OAAO,MAAM,YAAY,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,CAAA;AACnE,CAAC;AAFD,4BAEC;AAED,oBAA2B,MAAiB;IAC1C,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC5B,CAAC;AAFD,gCAEC;AAED,oBAA2B,MAAiB;IAC1C,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC5B,CAAC;AAFD,gCAEC;AAED,oBAA2B,MAAiB;IAC1C,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC5B,CAAC;AAFD,gCAEC;AAED,oBAA2B,MAAiB;IAC1C,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC5B,CAAC;AAFD,gCAEC"}
\ No newline at end of file
import * as tslib_1 from "tslib"; "use strict";
import * as tf from '@tensorflow/tfjs-core'; Object.defineProperty(exports, "__esModule", { value: true });
export function getModelUris(uri, defaultModelName) { var tslib_1 = require("tslib");
var tf = require("@tensorflow/tfjs-core");
function getModelUris(uri, defaultModelName) {
var parts = (uri || '').split('/'); var parts = (uri || '').split('/');
var modelBaseUri = ((uri || '').endsWith('.json') var modelBaseUri = ((uri || '').endsWith('.json')
? parts.slice(0, parts.length - 1) ? parts.slice(0, parts.length - 1)
...@@ -13,7 +15,8 @@ export function getModelUris(uri, defaultModelName) { ...@@ -13,7 +15,8 @@ export function getModelUris(uri, defaultModelName) {
: modelBaseUri + "/" + defaultManifestFilename); : modelBaseUri + "/" + defaultManifestFilename);
return { manifestUri: manifestUri, modelBaseUri: modelBaseUri }; return { manifestUri: manifestUri, modelBaseUri: modelBaseUri };
} }
export function loadWeightMap(uri, defaultModelName) { exports.getModelUris = getModelUris;
function loadWeightMap(uri, defaultModelName) {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, manifestUri, modelBaseUri, manifest; var _a, manifestUri, modelBaseUri, manifest;
return tslib_1.__generator(this, function (_b) { return tslib_1.__generator(this, function (_b) {
...@@ -29,4 +32,5 @@ export function loadWeightMap(uri, defaultModelName) { ...@@ -29,4 +32,5 @@ export function loadWeightMap(uri, defaultModelName) {
}); });
}); });
} }
exports.loadWeightMap = loadWeightMap;
//# sourceMappingURL=loadWeightMap.js.map //# sourceMappingURL=loadWeightMap.js.map
\ No newline at end of file
{"version":3,"file":"loadWeightMap.js","sourceRoot":"","sources":["../../src/commons/loadWeightMap.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAE5C,sBAA6B,GAAuB,EAAE,gBAAwB;IAC5E,IAAM,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAEpC,IAAM,YAAY,GAAG,CACnB,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC3B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC,KAAK,CACV,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAE1B,IAAM,uBAAuB,GAAM,gBAAgB,2BAAwB,CAAA;IAC3E,IAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY;QACvC,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,CACA,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;YACnB,CAAC,CAAC,GAAG;YACL,CAAC,CAAI,YAAY,SAAI,uBAAyB,CACjD,CAAA;IAEH,OAAO,EAAE,WAAW,aAAA,EAAE,YAAY,cAAA,EAAE,CAAA;AACtC,CAAC;AAnBD,oCAmBC;AAED,uBACE,GAAuB,EACvB,gBAAwB;;;;;;oBAGlB,KAAgC,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAjE,WAAW,iBAAA,EAAE,YAAY,kBAAA,CAAwC;oBAEjD,qBAAM,KAAK,CAAC,WAAW,CAAC,EAAA;wBAA/B,qBAAM,CAAC,SAAwB,CAAC,CAAC,IAAI,EAAE,EAAA;;oBAAlD,QAAQ,GAAG,SAAuC;oBAExD,sBAAO,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAA;;;;CACjD;AAVD,sCAUC"}
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map //# sourceMappingURL=types.js.map
\ No newline at end of file
export function euclideanDistance(arr1, arr2) { "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function euclideanDistance(arr1, arr2) {
if (arr1.length !== arr2.length) if (arr1.length !== arr2.length)
throw new Error('euclideanDistance: arr1.length !== arr2.length'); throw new Error('euclideanDistance: arr1.length !== arr2.length');
var desc1 = Array.from(arr1); var desc1 = Array.from(arr1);
...@@ -7,4 +9,5 @@ export function euclideanDistance(arr1, arr2) { ...@@ -7,4 +9,5 @@ export function euclideanDistance(arr1, arr2) {
.map(function (val, i) { return val - desc2[i]; }) .map(function (val, i) { return val - desc2[i]; })
.reduce(function (res, diff) { return res + Math.pow(diff, 2); }, 0)); .reduce(function (res, diff) { return res + Math.pow(diff, 2); }, 0));
} }
exports.euclideanDistance = euclideanDistance;
//# sourceMappingURL=euclideanDistance.js.map //# sourceMappingURL=euclideanDistance.js.map
\ No newline at end of file
{"version":3,"file":"euclideanDistance.js","sourceRoot":"","sources":["../src/euclideanDistance.ts"],"names":[],"mappings":";;AAAA,2BAAkC,IAA6B,EAAE,IAA6B;IAC5F,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAC7B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IAEnE,IAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE9B,OAAO,IAAI,CAAC,IAAI,CACd,KAAK;SACF,GAAG,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAd,CAAc,CAAC;SAC/B,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAvB,CAAuB,EAAE,CAAC,CAAC,CACrD,CAAA;AACH,CAAC;AAZD,8CAYC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; "use strict";
import { FaceDetection } from './faceDetectionNet/FaceDetection'; Object.defineProperty(exports, "__esModule", { value: true });
import { getImageTensor } from './getImageTensor'; var tf = require("@tensorflow/tfjs-core");
var FaceDetection_1 = require("./faceDetectionNet/FaceDetection");
var getImageTensor_1 = require("./getImageTensor");
/** /**
* Extracts the tensors of the image regions containing the detected faces. * Extracts the tensors of the image regions containing the detected faces.
* Useful if you want to compute the face descriptors for the face images. * Useful if you want to compute the face descriptors for the face images.
...@@ -11,12 +13,12 @@ import { getImageTensor } from './getImageTensor'; ...@@ -11,12 +13,12 @@ import { getImageTensor } from './getImageTensor';
* @param detections The face detection results or face bounding boxes for that image. * @param detections The face detection results or face bounding boxes for that image.
* @returns Tensors of the corresponding image region for each detected face. * @returns Tensors of the corresponding image region for each detected face.
*/ */
export function extractFaceTensors(image, detections) { function extractFaceTensors(image, detections) {
return tf.tidy(function () { return tf.tidy(function () {
var imgTensor = getImageTensor(image); var imgTensor = getImageTensor_1.getImageTensor(image);
// TODO handle batches // TODO handle batches
var _a = imgTensor.shape, batchSize = _a[0], imgHeight = _a[1], imgWidth = _a[2], numChannels = _a[3]; var _a = imgTensor.shape, batchSize = _a[0], imgHeight = _a[1], imgWidth = _a[2], numChannels = _a[3];
var boxes = detections.map(function (det) { return det instanceof FaceDetection var boxes = detections.map(function (det) { return det instanceof FaceDetection_1.FaceDetection
? det.forSize(imgWidth, imgHeight).getBox().floor() ? det.forSize(imgWidth, imgHeight).getBox().floor()
: det; }); : det; });
var faceTensors = boxes.map(function (_a) { var faceTensors = boxes.map(function (_a) {
...@@ -26,4 +28,5 @@ export function extractFaceTensors(image, detections) { ...@@ -26,4 +28,5 @@ export function extractFaceTensors(image, detections) {
return faceTensors; return faceTensors;
}); });
} }
exports.extractFaceTensors = extractFaceTensors;
//# sourceMappingURL=extractFaceTensors.js.map //# sourceMappingURL=extractFaceTensors.js.map
\ No newline at end of file
{"version":3,"file":"extractFaceTensors.js","sourceRoot":"","sources":["../src/extractFaceTensors.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,kEAAiE;AACjE,mDAAkD;AAKlD;;;;;;;;;GASG;AACH,4BACE,KAAuC,EACvC,UAAqC;IAErC,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAM,SAAS,GAAG,+BAAc,CAAC,KAAK,CAAC,CAAA;QAEvC,sBAAsB;QAChB,IAAA,oBAA+D,EAA9D,iBAAS,EAAE,iBAAS,EAAE,gBAAQ,EAAE,mBAAW,CAAmB;QAErE,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,6BAAa;YACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;YACnD,CAAC,CAAC,GAAG,EAFA,CAEA,CACR,CAAA;QACD,IAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;gBAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;YAClD,OAAA,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAAlE,CAAkE,CACnE,CAAA;QAED,OAAO,WAAW,CAAA;IACpB,CAAC,CAAC,CAAA;AACJ,CAAC;AArBD,gDAqBC"}
\ No newline at end of file
import { FaceDetection } from './faceDetectionNet/FaceDetection'; "use strict";
import { createCanvas, getContext2dOrThrow } from './utils'; Object.defineProperty(exports, "__esModule", { value: true });
var FaceDetection_1 = require("./faceDetectionNet/FaceDetection");
var utils_1 = require("./utils");
/** /**
* Extracts the image regions containing the detected faces. * Extracts the image regions containing the detected faces.
* *
...@@ -7,17 +9,18 @@ import { createCanvas, getContext2dOrThrow } from './utils'; ...@@ -7,17 +9,18 @@ import { createCanvas, getContext2dOrThrow } from './utils';
* @param detections The face detection results or face bounding boxes for that image. * @param detections The face detection results or face bounding boxes for that image.
* @returns The Canvases of the corresponding image region for each detected face. * @returns The Canvases of the corresponding image region for each detected face.
*/ */
export function extractFaces(image, detections) { function extractFaces(image, detections) {
var ctx = getContext2dOrThrow(image); var ctx = utils_1.getContext2dOrThrow(image);
var boxes = detections.map(function (det) { return det instanceof FaceDetection var boxes = detections.map(function (det) { return det instanceof FaceDetection_1.FaceDetection
? det.forSize(image.width, image.height).getBox().floor() ? det.forSize(image.width, image.height).getBox().floor()
: det; }); : det; });
return boxes.map(function (_a) { return boxes.map(function (_a) {
var x = _a.x, y = _a.y, width = _a.width, height = _a.height; var x = _a.x, y = _a.y, width = _a.width, height = _a.height;
var faceImg = createCanvas({ width: width, height: height }); var faceImg = utils_1.createCanvas({ width: width, height: height });
getContext2dOrThrow(faceImg) utils_1.getContext2dOrThrow(faceImg)
.putImageData(ctx.getImageData(x, y, width, height), 0, 0); .putImageData(ctx.getImageData(x, y, width, height), 0, 0);
return faceImg; return faceImg;
}); });
} }
exports.extractFaces = extractFaces;
//# sourceMappingURL=extractFaces.js.map //# sourceMappingURL=extractFaces.js.map
\ No newline at end of file
{"version":3,"file":"extractFaces.js","sourceRoot":"","sources":["../src/extractFaces.ts"],"names":[],"mappings":";;AAAA,kEAAiE;AAEjE,iCAA4D;AAE5D;;;;;;GAMG;AACH,sBACE,KAAwB,EACxB,UAAqC;IAErC,IAAM,GAAG,GAAG,2BAAmB,CAAC,KAAK,CAAC,CAAA;IAEtC,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,6BAAa;QACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;QACzD,CAAC,CAAC,GAAG,EAFA,CAEA,CACR,CAAA;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;YAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;QACrC,IAAM,OAAO,GAAG,oBAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;QAC/C,2BAAmB,CAAC,OAAO,CAAC;aACzB,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5D,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAA;AACJ,CAAC;AAjBD,oCAiBC"}
\ No newline at end of file
import { Rect } from '../Rect'; "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Rect_1 = require("../Rect");
var FaceDetection = /** @class */ (function () { var FaceDetection = /** @class */ (function () {
function FaceDetection(score, relativeBox, imageDims) { function FaceDetection(score, relativeBox, imageDims) {
var width = imageDims.width, height = imageDims.height; var width = imageDims.width, height = imageDims.height;
this._imageWidth = width; this._imageWidth = width;
this._imageHeight = height; this._imageHeight = height;
this._score = score; this._score = score;
this._box = new Rect(relativeBox.x * width, relativeBox.y * height, relativeBox.width * width, relativeBox.height * height); this._box = new Rect_1.Rect(relativeBox.x * width, relativeBox.y * height, relativeBox.width * width, relativeBox.height * height);
} }
FaceDetection.prototype.getScore = function () { FaceDetection.prototype.getScore = function () {
return this._score; return this._score;
...@@ -20,12 +22,12 @@ var FaceDetection = /** @class */ (function () { ...@@ -20,12 +22,12 @@ var FaceDetection = /** @class */ (function () {
return this._imageHeight; return this._imageHeight;
}; };
FaceDetection.prototype.getRelativeBox = function () { FaceDetection.prototype.getRelativeBox = function () {
return new Rect(this._box.x / this._imageWidth, this._box.y / this._imageHeight, this._box.width / this._imageWidth, this._box.height / this._imageHeight); return new Rect_1.Rect(this._box.x / this._imageWidth, this._box.y / this._imageHeight, this._box.width / this._imageWidth, this._box.height / this._imageHeight);
}; };
FaceDetection.prototype.forSize = function (width, height) { FaceDetection.prototype.forSize = function (width, height) {
return new FaceDetection(this._score, this.getRelativeBox(), { width: width, height: height }); return new FaceDetection(this._score, this.getRelativeBox(), { width: width, height: height });
}; };
return FaceDetection; return FaceDetection;
}()); }());
export { FaceDetection }; exports.FaceDetection = FaceDetection;
//# sourceMappingURL=FaceDetection.js.map //# sourceMappingURL=FaceDetection.js.map
\ No newline at end of file
{"version":3,"file":"FaceDetection.js","sourceRoot":"","sources":["../../src/faceDetectionNet/FaceDetection.ts"],"names":[],"mappings":";;AAAA,gCAA+B;AAG/B;IAME,uBACE,KAAa,EACb,WAAiB,EACjB,SAAqB;QAEb,IAAA,uBAAK,EAAE,yBAAM,CAAc;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,WAAI,CAClB,WAAW,CAAC,CAAC,GAAG,KAAK,EACrB,WAAW,CAAC,CAAC,GAAG,MAAM,EACtB,WAAW,CAAC,KAAK,GAAG,KAAK,EACzB,WAAW,CAAC,MAAM,GAAG,MAAM,CAC5B,CAAA;IACH,CAAC;IAEM,gCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAEM,8BAAM,GAAb;QACE,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAEM,qCAAa,GAApB;QACE,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,sCAAc,GAArB;QACE,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAEM,sCAAc,GAArB;QACE,OAAO,IAAI,WAAI,CACb,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAC9B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,EAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAClC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CACrC,CAAA;IACH,CAAC;IAEM,+BAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,EAAE,EACrB,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAC,CACjB,CAAA;IACH,CAAC;IACH,oBAAC;AAAD,CAAC,AAvDD,IAuDC;AAvDY,sCAAa"}
\ No newline at end of file
import * as tslib_1 from "tslib"; "use strict";
import * as tf from '@tensorflow/tfjs-core'; Object.defineProperty(exports, "__esModule", { value: true });
import { getImageTensor } from '../getImageTensor'; var tslib_1 = require("tslib");
import { padToSquare } from '../padToSquare'; var tf = require("@tensorflow/tfjs-core");
import { Rect } from '../Rect'; var getImageTensor_1 = require("../getImageTensor");
import { extractParams } from './extractParams'; var padToSquare_1 = require("../padToSquare");
import { FaceDetection } from './FaceDetection'; var Rect_1 = require("../Rect");
import { loadQuantizedParams } from './loadQuantizedParams'; var extractParams_1 = require("./extractParams");
import { mobileNetV1 } from './mobileNetV1'; var FaceDetection_1 = require("./FaceDetection");
import { nonMaxSuppression } from './nonMaxSuppression'; var loadQuantizedParams_1 = require("./loadQuantizedParams");
import { outputLayer } from './outputLayer'; var mobileNetV1_1 = require("./mobileNetV1");
import { predictionLayer } from './predictionLayer'; var nonMaxSuppression_1 = require("./nonMaxSuppression");
import { resizeLayer } from './resizeLayer'; var outputLayer_1 = require("./outputLayer");
var predictionLayer_1 = require("./predictionLayer");
var resizeLayer_1 = require("./resizeLayer");
var FaceDetectionNet = /** @class */ (function () { var FaceDetectionNet = /** @class */ (function () {
function FaceDetectionNet() { function FaceDetectionNet() {
} }
...@@ -28,7 +30,7 @@ var FaceDetectionNet = /** @class */ (function () { ...@@ -28,7 +30,7 @@ var FaceDetectionNet = /** @class */ (function () {
throw new Error('FaceDetectionNet.load - expected model uri, or weights as Float32Array'); throw new Error('FaceDetectionNet.load - expected model uri, or weights as Float32Array');
} }
_a = this; _a = this;
return [4 /*yield*/, loadQuantizedParams(weightsOrUrl)]; return [4 /*yield*/, loadQuantizedParams_1.loadQuantizedParams(weightsOrUrl)];
case 1: case 1:
_a._params = _b.sent(); _a._params = _b.sent();
return [2 /*return*/]; return [2 /*return*/];
...@@ -37,7 +39,7 @@ var FaceDetectionNet = /** @class */ (function () { ...@@ -37,7 +39,7 @@ var FaceDetectionNet = /** @class */ (function () {
}); });
}; };
FaceDetectionNet.prototype.extractWeights = function (weights) { FaceDetectionNet.prototype.extractWeights = function (weights) {
this._params = extractParams(weights); this._params = extractParams_1.extractParams(weights);
}; };
FaceDetectionNet.prototype.forwardTensor = function (imgTensor) { FaceDetectionNet.prototype.forwardTensor = function (imgTensor) {
var _this = this; var _this = this;
...@@ -45,15 +47,15 @@ var FaceDetectionNet = /** @class */ (function () { ...@@ -45,15 +47,15 @@ var FaceDetectionNet = /** @class */ (function () {
throw new Error('FaceDetectionNet - load model before inference'); throw new Error('FaceDetectionNet - load model before inference');
} }
return tf.tidy(function () { return tf.tidy(function () {
var resized = resizeLayer(imgTensor); var resized = resizeLayer_1.resizeLayer(imgTensor);
var features = mobileNetV1(resized, _this._params.mobilenetv1_params); var features = mobileNetV1_1.mobileNetV1(resized, _this._params.mobilenetv1_params);
var _a = predictionLayer(features.out, features.conv11, _this._params.prediction_layer_params), boxPredictions = _a.boxPredictions, classPredictions = _a.classPredictions; var _a = predictionLayer_1.predictionLayer(features.out, features.conv11, _this._params.prediction_layer_params), boxPredictions = _a.boxPredictions, classPredictions = _a.classPredictions;
return outputLayer(boxPredictions, classPredictions, _this._params.output_layer_params); return outputLayer_1.outputLayer(boxPredictions, classPredictions, _this._params.output_layer_params);
}); });
}; };
FaceDetectionNet.prototype.forward = function (input) { FaceDetectionNet.prototype.forward = function (input) {
var _this = this; var _this = this;
return tf.tidy(function () { return _this.forwardTensor(padToSquare(getImageTensor(input))); }); return tf.tidy(function () { return _this.forwardTensor(padToSquare_1.padToSquare(getImageTensor_1.getImageTensor(input))); });
}; };
FaceDetectionNet.prototype.locateFaces = function (input, minConfidence, maxResults) { FaceDetectionNet.prototype.locateFaces = function (input, minConfidence, maxResults) {
if (minConfidence === void 0) { minConfidence = 0.8; } if (minConfidence === void 0) { minConfidence = 0.8; }
...@@ -66,10 +68,10 @@ var FaceDetectionNet = /** @class */ (function () { ...@@ -66,10 +68,10 @@ var FaceDetectionNet = /** @class */ (function () {
case 0: case 0:
paddedHeightRelative = 1, paddedWidthRelative = 1; paddedHeightRelative = 1, paddedWidthRelative = 1;
_a = tf.tidy(function () { _a = tf.tidy(function () {
var imgTensor = getImageTensor(input); var imgTensor = getImageTensor_1.getImageTensor(input);
var _a = imgTensor.shape.slice(1), height = _a[0], width = _a[1]; var _a = imgTensor.shape.slice(1), height = _a[0], width = _a[1];
imageDimensions = { width: width, height: height }; imageDimensions = { width: width, height: height };
imgTensor = padToSquare(imgTensor); imgTensor = padToSquare_1.padToSquare(imgTensor);
paddedHeightRelative = imgTensor.shape[1] / height; paddedHeightRelative = imgTensor.shape[1] / height;
paddedWidthRelative = imgTensor.shape[2] / width; paddedWidthRelative = imgTensor.shape[2] / width;
return _this.forwardTensor(imgTensor); return _this.forwardTensor(imgTensor);
...@@ -85,7 +87,7 @@ var FaceDetectionNet = /** @class */ (function () { ...@@ -85,7 +87,7 @@ var FaceDetectionNet = /** @class */ (function () {
case 1: case 1:
scoresData = _c.apply(_b, [_d.sent()]); scoresData = _c.apply(_b, [_d.sent()]);
iouThreshold = 0.5; iouThreshold = 0.5;
indices = nonMaxSuppression(boxes, scoresData, maxResults, iouThreshold, minConfidence); indices = nonMaxSuppression_1.nonMaxSuppression(boxes, scoresData, maxResults, iouThreshold, minConfidence);
results = indices results = indices
.map(function (idx) { .map(function (idx) {
var _a = [ var _a = [
...@@ -96,7 +98,7 @@ var FaceDetectionNet = /** @class */ (function () { ...@@ -96,7 +98,7 @@ var FaceDetectionNet = /** @class */ (function () {
Math.max(0, boxes.get(idx, 1)), Math.max(0, boxes.get(idx, 1)),
Math.min(1.0, boxes.get(idx, 3)) Math.min(1.0, boxes.get(idx, 3))
].map(function (val) { return val * paddedWidthRelative; }), left = _b[0], right = _b[1]; ].map(function (val) { return val * paddedWidthRelative; }), left = _b[0], right = _b[1];
return new FaceDetection(scoresData[idx], new Rect(left, top, right - left, bottom - top), imageDimensions); return new FaceDetection_1.FaceDetection(scoresData[idx], new Rect_1.Rect(left, top, right - left, bottom - top), imageDimensions);
}); });
boxes.dispose(); boxes.dispose();
scores.dispose(); scores.dispose();
...@@ -107,5 +109,5 @@ var FaceDetectionNet = /** @class */ (function () { ...@@ -107,5 +109,5 @@ var FaceDetectionNet = /** @class */ (function () {
}; };
return FaceDetectionNet; return FaceDetectionNet;
}()); }());
export { FaceDetectionNet }; exports.FaceDetectionNet = FaceDetectionNet;
//# sourceMappingURL=FaceDetectionNet.js.map //# sourceMappingURL=FaceDetectionNet.js.map
\ No newline at end of file
{"version":3,"file":"FaceDetectionNet.js","sourceRoot":"","sources":["../../src/faceDetectionNet/FaceDetectionNet.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; "use strict";
import { convLayer } from '../commons/convLayer'; Object.defineProperty(exports, "__esModule", { value: true });
export function boxPredictionLayer(x, params) { var tf = require("@tensorflow/tfjs-core");
var convLayer_1 = require("../commons/convLayer");
function boxPredictionLayer(x, params) {
return tf.tidy(function () { return tf.tidy(function () {
var batchSize = x.shape[0]; var batchSize = x.shape[0];
var boxPredictionEncoding = tf.reshape(convLayer(x, params.box_encoding_predictor_params), [batchSize, -1, 1, 4]); var boxPredictionEncoding = tf.reshape(convLayer_1.convLayer(x, params.box_encoding_predictor_params), [batchSize, -1, 1, 4]);
var classPrediction = tf.reshape(convLayer(x, params.class_predictor_params), [batchSize, -1, 3]); var classPrediction = tf.reshape(convLayer_1.convLayer(x, params.class_predictor_params), [batchSize, -1, 3]);
return { return {
boxPredictionEncoding: boxPredictionEncoding, boxPredictionEncoding: boxPredictionEncoding,
classPrediction: classPrediction classPrediction: classPrediction
}; };
}); });
} }
exports.boxPredictionLayer = boxPredictionLayer;
//# sourceMappingURL=boxPredictionLayer.js.map //# sourceMappingURL=boxPredictionLayer.js.map
\ No newline at end of file
{"version":3,"file":"boxPredictionLayer.js","sourceRoot":"","sources":["../../src/faceDetectionNet/boxPredictionLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,kDAAiD;AAIjD,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,qBAAS,CAAC,CAAC,EAAE,MAAM,CAAC,6BAA6B,CAAC,EAClD,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACtB,CAAA;QACD,IAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC,qBAAS,CAAC,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,EAC3C,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 * as tf from '@tensorflow/tfjs-core'; "use strict";
import { extractWeightsFactory } from '../commons/extractWeightsFactory'; Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var extractWeightsFactory_1 = require("../commons/extractWeightsFactory");
function extractorsFactory(extractWeights) { function extractorsFactory(extractWeights) {
function extractDepthwiseConvParams(numChannels) { function extractDepthwiseConvParams(numChannels) {
var filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]); var filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);
...@@ -131,8 +133,8 @@ function extractorsFactory(extractWeights) { ...@@ -131,8 +133,8 @@ function extractorsFactory(extractWeights) {
extractPredictionLayerParams: extractPredictionLayerParams extractPredictionLayerParams: extractPredictionLayerParams
}; };
} }
export function extractParams(weights) { function extractParams(weights) {
var _a = extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; var _a = extractWeightsFactory_1.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights;
var _b = extractorsFactory(extractWeights), extractMobilenetV1Params = _b.extractMobilenetV1Params, extractPredictionLayerParams = _b.extractPredictionLayerParams; var _b = extractorsFactory(extractWeights), extractMobilenetV1Params = _b.extractMobilenetV1Params, extractPredictionLayerParams = _b.extractPredictionLayerParams;
var mobilenetv1_params = extractMobilenetV1Params(); var mobilenetv1_params = extractMobilenetV1Params();
var prediction_layer_params = extractPredictionLayerParams(); var prediction_layer_params = extractPredictionLayerParams();
...@@ -149,4 +151,5 @@ export function extractParams(weights) { ...@@ -149,4 +151,5 @@ export function extractParams(weights) {
output_layer_params: output_layer_params output_layer_params: output_layer_params
}; };
} }
exports.extractParams = extractParams;
//# sourceMappingURL=extractParams.js.map //# sourceMappingURL=extractParams.js.map
\ No newline at end of file
{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../src/faceDetectionNet/extractParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var FaceDetectionNet_1 = require("./FaceDetectionNet");
tslib_1.__exportStar(require("./FaceDetectionNet"), exports);
function faceDetectionNet(weights) {
var net = new FaceDetectionNet_1.FaceDetectionNet();
net.extractWeights(weights);
return net;
}
exports.faceDetectionNet = faceDetectionNet;
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/faceDetectionNet/index.ts"],"names":[],"mappings":";;;AAAA,uDAAsD;AAEtD,6DAAmC;AAEnC,0BAAiC,OAAqB;IACpD,IAAM,GAAG,GAAG,IAAI,mCAAgB,EAAE,CAAA;IAClC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,4CAIC"}
\ No newline at end of file
import * as tslib_1 from "tslib"; "use strict";
import { isTensor1D, isTensor4D, isTensor3D } from '../commons/isTensor'; Object.defineProperty(exports, "__esModule", { value: true });
import { loadWeightMap } from '../commons/loadWeightMap'; var tslib_1 = require("tslib");
var isTensor_1 = require("../commons/isTensor");
var loadWeightMap_1 = require("../commons/loadWeightMap");
var DEFAULT_MODEL_NAME = 'face_detection_model'; var DEFAULT_MODEL_NAME = 'face_detection_model';
function extractorsFactory(weightMap) { function extractorsFactory(weightMap) {
function extractPointwiseConvParams(prefix, idx) { function extractPointwiseConvParams(prefix, idx) {
...@@ -8,10 +10,10 @@ function extractorsFactory(weightMap) { ...@@ -8,10 +10,10 @@ function extractorsFactory(weightMap) {
filters: weightMap[prefix + "/Conv2d_" + idx + "_pointwise/weights"], filters: weightMap[prefix + "/Conv2d_" + idx + "_pointwise/weights"],
batch_norm_offset: weightMap[prefix + "/Conv2d_" + idx + "_pointwise/convolution_bn_offset"] batch_norm_offset: weightMap[prefix + "/Conv2d_" + idx + "_pointwise/convolution_bn_offset"]
}; };
if (!isTensor4D(pointwise_conv_params.filters)) { if (!isTensor_1.isTensor4D(pointwise_conv_params.filters)) {
throw new Error("expected weightMap[" + prefix + "/Conv2d_" + idx + "_pointwise/weights] to be a Tensor4D, instead have " + pointwise_conv_params.filters); throw new Error("expected weightMap[" + prefix + "/Conv2d_" + idx + "_pointwise/weights] to be a Tensor4D, instead have " + pointwise_conv_params.filters);
} }
if (!isTensor1D(pointwise_conv_params.batch_norm_offset)) { if (!isTensor_1.isTensor1D(pointwise_conv_params.batch_norm_offset)) {
throw new Error("expected weightMap[" + prefix + "/Conv2d_" + idx + "_pointwise/convolution_bn_offset] to be a Tensor1D, instead have " + pointwise_conv_params.batch_norm_offset); throw new Error("expected weightMap[" + prefix + "/Conv2d_" + idx + "_pointwise/convolution_bn_offset] to be a Tensor1D, instead have " + pointwise_conv_params.batch_norm_offset);
} }
return pointwise_conv_params; return pointwise_conv_params;
...@@ -24,19 +26,19 @@ function extractorsFactory(weightMap) { ...@@ -24,19 +26,19 @@ function extractorsFactory(weightMap) {
batch_norm_mean: weightMap["MobilenetV1/Conv2d_" + idx + "_depthwise/BatchNorm/moving_mean"], batch_norm_mean: weightMap["MobilenetV1/Conv2d_" + idx + "_depthwise/BatchNorm/moving_mean"],
batch_norm_variance: weightMap["MobilenetV1/Conv2d_" + idx + "_depthwise/BatchNorm/moving_variance"], batch_norm_variance: weightMap["MobilenetV1/Conv2d_" + idx + "_depthwise/BatchNorm/moving_variance"],
}; };
if (!isTensor4D(depthwise_conv_params.filters)) { if (!isTensor_1.isTensor4D(depthwise_conv_params.filters)) {
throw new Error("expected weightMap[MobilenetV1/Conv2d_" + idx + "_depthwise/depthwise_weights] to be a Tensor4D, instead have " + depthwise_conv_params.filters); throw new Error("expected weightMap[MobilenetV1/Conv2d_" + idx + "_depthwise/depthwise_weights] to be a Tensor4D, instead have " + depthwise_conv_params.filters);
} }
if (!isTensor1D(depthwise_conv_params.batch_norm_scale)) { if (!isTensor_1.isTensor1D(depthwise_conv_params.batch_norm_scale)) {
throw new Error("expected weightMap[MobilenetV1/Conv2d_" + idx + "_depthwise/BatchNorm/gamma] to be a Tensor1D, instead have " + depthwise_conv_params.batch_norm_scale); throw new Error("expected weightMap[MobilenetV1/Conv2d_" + idx + "_depthwise/BatchNorm/gamma] to be a Tensor1D, instead have " + depthwise_conv_params.batch_norm_scale);
} }
if (!isTensor1D(depthwise_conv_params.batch_norm_offset)) { if (!isTensor_1.isTensor1D(depthwise_conv_params.batch_norm_offset)) {
throw new Error("expected weightMap[MobilenetV1/Conv2d_" + idx + "_depthwise/BatchNorm/beta] to be a Tensor1D, instead have " + depthwise_conv_params.batch_norm_offset); throw new Error("expected weightMap[MobilenetV1/Conv2d_" + idx + "_depthwise/BatchNorm/beta] to be a Tensor1D, instead have " + depthwise_conv_params.batch_norm_offset);
} }
if (!isTensor1D(depthwise_conv_params.batch_norm_mean)) { if (!isTensor_1.isTensor1D(depthwise_conv_params.batch_norm_mean)) {
throw new Error("expected weightMap[MobilenetV1/Conv2d_" + idx + "_depthwise/BatchNorm/moving_mean] to be a Tensor1D, instead have " + depthwise_conv_params.batch_norm_mean); throw new Error("expected weightMap[MobilenetV1/Conv2d_" + idx + "_depthwise/BatchNorm/moving_mean] to be a Tensor1D, instead have " + depthwise_conv_params.batch_norm_mean);
} }
if (!isTensor1D(depthwise_conv_params.batch_norm_variance)) { if (!isTensor_1.isTensor1D(depthwise_conv_params.batch_norm_variance)) {
throw new Error("expected weightMap[MobilenetV1/Conv2d_" + idx + "_depthwise/BatchNorm/moving_variance] to be a Tensor1D, instead have " + depthwise_conv_params.batch_norm_variance); throw new Error("expected weightMap[MobilenetV1/Conv2d_" + idx + "_depthwise/BatchNorm/moving_variance] to be a Tensor1D, instead have " + depthwise_conv_params.batch_norm_variance);
} }
return { return {
...@@ -61,16 +63,16 @@ function extractorsFactory(weightMap) { ...@@ -61,16 +63,16 @@ function extractorsFactory(weightMap) {
bias: weightMap["Prediction/BoxPredictor_" + idx + "/ClassPredictor/biases"] bias: weightMap["Prediction/BoxPredictor_" + idx + "/ClassPredictor/biases"]
} }
}; };
if (!isTensor4D(params.box_encoding_predictor_params.filters)) { if (!isTensor_1.isTensor4D(params.box_encoding_predictor_params.filters)) {
throw new Error("expected weightMap[Prediction/BoxPredictor_" + idx + "/BoxEncodingPredictor/weights] to be a Tensor4D, instead have " + params.box_encoding_predictor_params.filters); throw new Error("expected weightMap[Prediction/BoxPredictor_" + idx + "/BoxEncodingPredictor/weights] to be a Tensor4D, instead have " + params.box_encoding_predictor_params.filters);
} }
if (!isTensor1D(params.box_encoding_predictor_params.bias)) { if (!isTensor_1.isTensor1D(params.box_encoding_predictor_params.bias)) {
throw new Error("expected weightMap[Prediction/BoxPredictor_" + idx + "/BoxEncodingPredictor/biases] to be a Tensor1D, instead have " + params.box_encoding_predictor_params.bias); throw new Error("expected weightMap[Prediction/BoxPredictor_" + idx + "/BoxEncodingPredictor/biases] to be a Tensor1D, instead have " + params.box_encoding_predictor_params.bias);
} }
if (!isTensor4D(params.class_predictor_params.filters)) { if (!isTensor_1.isTensor4D(params.class_predictor_params.filters)) {
throw new Error("expected weightMap[Prediction/BoxPredictor_" + idx + "/ClassPredictor/weights] to be a Tensor4D, instead have " + params.class_predictor_params.filters); throw new Error("expected weightMap[Prediction/BoxPredictor_" + idx + "/ClassPredictor/weights] to be a Tensor4D, instead have " + params.class_predictor_params.filters);
} }
if (!isTensor1D(params.class_predictor_params.bias)) { if (!isTensor_1.isTensor1D(params.class_predictor_params.bias)) {
throw new Error("expected weightMap[Prediction/BoxPredictor_" + idx + "/ClassPredictor/biases] to be a Tensor1D, instead have " + params.class_predictor_params.bias); throw new Error("expected weightMap[Prediction/BoxPredictor_" + idx + "/ClassPredictor/biases] to be a Tensor1D, instead have " + params.class_predictor_params.bias);
} }
return params; return params;
...@@ -98,17 +100,17 @@ function extractorsFactory(weightMap) { ...@@ -98,17 +100,17 @@ function extractorsFactory(weightMap) {
extractPredictionLayerParams: extractPredictionLayerParams extractPredictionLayerParams: extractPredictionLayerParams
}; };
} }
export function loadQuantizedParams(uri) { function loadQuantizedParams(uri) {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var weightMap, _a, extractMobilenetV1Params, extractPredictionLayerParams, extra_dim; var weightMap, _a, extractMobilenetV1Params, extractPredictionLayerParams, extra_dim;
return tslib_1.__generator(this, function (_b) { return tslib_1.__generator(this, function (_b) {
switch (_b.label) { switch (_b.label) {
case 0: return [4 /*yield*/, loadWeightMap(uri, DEFAULT_MODEL_NAME)]; case 0: return [4 /*yield*/, loadWeightMap_1.loadWeightMap(uri, DEFAULT_MODEL_NAME)];
case 1: case 1:
weightMap = _b.sent(); weightMap = _b.sent();
_a = extractorsFactory(weightMap), extractMobilenetV1Params = _a.extractMobilenetV1Params, extractPredictionLayerParams = _a.extractPredictionLayerParams; _a = extractorsFactory(weightMap), extractMobilenetV1Params = _a.extractMobilenetV1Params, extractPredictionLayerParams = _a.extractPredictionLayerParams;
extra_dim = weightMap['Output/extra_dim']; extra_dim = weightMap['Output/extra_dim'];
if (!isTensor3D(extra_dim)) { if (!isTensor_1.isTensor3D(extra_dim)) {
throw new Error("expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have " + extra_dim); throw new Error("expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have " + extra_dim);
} }
return [2 /*return*/, { return [2 /*return*/, {
...@@ -122,4 +124,5 @@ export function loadQuantizedParams(uri) { ...@@ -122,4 +124,5 @@ export function loadQuantizedParams(uri) {
}); });
}); });
} }
exports.loadQuantizedParams = loadQuantizedParams;
//# sourceMappingURL=loadQuantizedParams.js.map //# sourceMappingURL=loadQuantizedParams.js.map
\ No newline at end of file
{"version":3,"file":"loadQuantizedParams.js","sourceRoot":"","sources":["../../src/faceDetectionNet/loadQuantizedParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; "use strict";
import { pointwiseConvLayer } from './pointwiseConvLayer'; Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var pointwiseConvLayer_1 = require("./pointwiseConvLayer");
var epsilon = 0.0010000000474974513; var epsilon = 0.0010000000474974513;
function depthwiseConvLayer(x, params, strides) { function depthwiseConvLayer(x, params, strides) {
return tf.tidy(function () { return tf.tidy(function () {
...@@ -11,15 +13,15 @@ function depthwiseConvLayer(x, params, strides) { ...@@ -11,15 +13,15 @@ function depthwiseConvLayer(x, params, strides) {
function getStridesForLayerIdx(layerIdx) { function getStridesForLayerIdx(layerIdx) {
return [2, 4, 6, 12].some(function (idx) { return idx === layerIdx; }) ? [2, 2] : [1, 1]; return [2, 4, 6, 12].some(function (idx) { return idx === layerIdx; }) ? [2, 2] : [1, 1];
} }
export function mobileNetV1(x, params) { function mobileNetV1(x, params) {
return tf.tidy(function () { return tf.tidy(function () {
var conv11 = null; var conv11 = null;
var out = pointwiseConvLayer(x, params.conv_0_params, [2, 2]); var out = pointwiseConvLayer_1.pointwiseConvLayer(x, params.conv_0_params, [2, 2]);
params.conv_pair_params.forEach(function (param, i) { params.conv_pair_params.forEach(function (param, i) {
var layerIdx = i + 1; var layerIdx = i + 1;
var depthwiseConvStrides = getStridesForLayerIdx(layerIdx); var depthwiseConvStrides = getStridesForLayerIdx(layerIdx);
out = depthwiseConvLayer(out, param.depthwise_conv_params, depthwiseConvStrides); out = depthwiseConvLayer(out, param.depthwise_conv_params, depthwiseConvStrides);
out = pointwiseConvLayer(out, param.pointwise_conv_params, [1, 1]); out = pointwiseConvLayer_1.pointwiseConvLayer(out, param.pointwise_conv_params, [1, 1]);
if (layerIdx === 11) { if (layerIdx === 11) {
conv11 = out; conv11 = out;
} }
...@@ -33,4 +35,5 @@ export function mobileNetV1(x, params) { ...@@ -33,4 +35,5 @@ export function mobileNetV1(x, params) {
}; };
}); });
} }
exports.mobileNetV1 = mobileNetV1;
//# sourceMappingURL=mobileNetV1.js.map //# sourceMappingURL=mobileNetV1.js.map
\ No newline at end of file
{"version":3,"file":"mobileNetV1.js","sourceRoot":"","sources":["../../src/faceDetectionNet/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,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAE7D,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,CAAC;YACvC,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,qBAAqB,EAAE,oBAAoB,CAAC,CAAA;YAChF,GAAG,GAAG,uCAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAClE,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;AA1BD,kCA0BC"}
\ No newline at end of file
export function nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) { "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) {
var numBoxes = boxes.shape[0]; var numBoxes = boxes.shape[0];
var outputSize = Math.min(maxOutputSize, numBoxes); var outputSize = Math.min(maxOutputSize, numBoxes);
var candidates = scores var candidates = scores
...@@ -28,6 +30,7 @@ export function nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, sc ...@@ -28,6 +30,7 @@ export function nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, sc
}); });
return selected; return selected;
} }
exports.nonMaxSuppression = nonMaxSuppression;
function IOU(boxes, i, j) { function IOU(boxes, i, j) {
var yminI = Math.min(boxes.get(i, 0), boxes.get(i, 2)); 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 xminI = Math.min(boxes.get(i, 1), boxes.get(i, 3));
......
{"version":3,"file":"nonMaxSuppression.js","sourceRoot":"","sources":["../../src/faceDetectionNet/nonMaxSuppression.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function getCenterCoordinatesAndSizesLayer(x) { function getCenterCoordinatesAndSizesLayer(x) {
var vec = tf.unstack(tf.transpose(x, [1, 0])); var vec = tf.unstack(tf.transpose(x, [1, 0]));
var sizes = [ var sizes = [
...@@ -28,7 +30,7 @@ function decodeBoxesLayer(x0, x1) { ...@@ -28,7 +30,7 @@ function decodeBoxesLayer(x0, x1) {
tf.add(add1_out, div1_out) tf.add(add1_out, div1_out)
]), [1, 0]); ]), [1, 0]);
} }
export function outputLayer(boxPredictions, classPredictions, params) { function outputLayer(boxPredictions, classPredictions, params) {
return tf.tidy(function () { return tf.tidy(function () {
var batchSize = boxPredictions.shape[0]; 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])); var boxes = decodeBoxesLayer(tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]), tf.reshape(boxPredictions, [-1, 4]));
...@@ -44,4 +46,5 @@ export function outputLayer(boxPredictions, classPredictions, params) { ...@@ -44,4 +46,5 @@ export function outputLayer(boxPredictions, classPredictions, params) {
}; };
}); });
} }
exports.outputLayer = outputLayer;
//# sourceMappingURL=outputLayer.js.map //# sourceMappingURL=outputLayer.js.map
\ No newline at end of file
{"version":3,"file":"outputLayer.js","sourceRoot":"","sources":["../../src/faceDetectionNet/outputLayer.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; "use strict";
export function pointwiseConvLayer(x, params, strides) { Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function pointwiseConvLayer(x, params, strides) {
return tf.tidy(function () { return tf.tidy(function () {
var out = tf.conv2d(x, params.filters, strides, 'same'); var out = tf.conv2d(x, params.filters, strides, 'same');
out = tf.add(out, params.batch_norm_offset); out = tf.add(out, params.batch_norm_offset);
return tf.clipByValue(out, 0, 6); return tf.clipByValue(out, 0, 6);
}); });
} }
exports.pointwiseConvLayer = pointwiseConvLayer;
//# sourceMappingURL=pointwiseConvLayer.js.map //# sourceMappingURL=pointwiseConvLayer.js.map
\ No newline at end of file
{"version":3,"file":"pointwiseConvLayer.js","sourceRoot":"","sources":["../../src/faceDetectionNet/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
"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_params, [1, 1]);
var conv1 = pointwiseConvLayer_1.pointwiseConvLayer(conv0, params.conv_1_params, [2, 2]);
var conv2 = pointwiseConvLayer_1.pointwiseConvLayer(conv1, params.conv_2_params, [1, 1]);
var conv3 = pointwiseConvLayer_1.pointwiseConvLayer(conv2, params.conv_3_params, [2, 2]);
var conv4 = pointwiseConvLayer_1.pointwiseConvLayer(conv3, params.conv_4_params, [1, 1]);
var conv5 = pointwiseConvLayer_1.pointwiseConvLayer(conv4, params.conv_5_params, [2, 2]);
var conv6 = pointwiseConvLayer_1.pointwiseConvLayer(conv5, params.conv_6_params, [1, 1]);
var conv7 = pointwiseConvLayer_1.pointwiseConvLayer(conv6, params.conv_7_params, [2, 2]);
var boxPrediction0 = boxPredictionLayer_1.boxPredictionLayer(conv11, params.box_predictor_0_params);
var boxPrediction1 = boxPredictionLayer_1.boxPredictionLayer(x, params.box_predictor_1_params);
var boxPrediction2 = boxPredictionLayer_1.boxPredictionLayer(conv1, params.box_predictor_2_params);
var boxPrediction3 = boxPredictionLayer_1.boxPredictionLayer(conv3, params.box_predictor_3_params);
var boxPrediction4 = boxPredictionLayer_1.boxPredictionLayer(conv5, params.box_predictor_4_params);
var boxPrediction5 = boxPredictionLayer_1.boxPredictionLayer(conv7, params.box_predictor_5_params);
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/faceDetectionNet/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,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACjE,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACrE,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACrE,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACrE,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACrE,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACrE,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACrE,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAErE,IAAM,cAAc,GAAG,uCAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAA;QAChF,IAAM,cAAc,GAAG,uCAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAA;QAC3E,IAAM,cAAc,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAA;QAC/E,IAAM,cAAc,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAA;QAC/E,IAAM,cAAc,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAA;QAC/E,IAAM,cAAc,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAA;QAE/E,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'; "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var resizedImageSize = [512, 512]; var resizedImageSize = [512, 512];
var weight = tf.scalar(0.007843137718737125); var weight = tf.scalar(0.007843137718737125);
var bias = tf.scalar(1); var bias = tf.scalar(1);
export function resizeLayer(x) { function resizeLayer(x) {
return tf.tidy(function () { return tf.tidy(function () {
var resized = tf.image.resizeBilinear(x, resizedImageSize, false); var resized = tf.image.resizeBilinear(x, resizedImageSize, false);
return tf.sub(tf.mul(resized, weight), bias); return tf.sub(tf.mul(resized, weight), bias);
}); });
} }
exports.resizeLayer = resizeLayer;
//# sourceMappingURL=resizeLayer.js.map //# sourceMappingURL=resizeLayer.js.map
\ No newline at end of file
{"version":3,"file":"resizeLayer.js","sourceRoot":"","sources":["../../src/faceDetectionNet/resizeLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,IAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAqB,CAAA;AACvD,IAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;AAC9C,IAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAEzB,qBAA4B,CAAc;IACxC,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;QACnE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;IAE9C,CAAC,CAAC,CAAA;AACJ,CAAC;AAPD,kCAOC"}
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map //# sourceMappingURL=types.js.map
\ No newline at end of file
import * as tslib_1 from "tslib"; "use strict";
import * as tf from '@tensorflow/tfjs-core'; Object.defineProperty(exports, "__esModule", { value: true });
import { convLayer } from '../commons/convLayer'; var tslib_1 = require("tslib");
import { getImageTensor } from '../getImageTensor'; var tf = require("@tensorflow/tfjs-core");
import { Point } from '../Point'; var convLayer_1 = require("../commons/convLayer");
import { extractParams } from './extractParams'; var getImageTensor_1 = require("../getImageTensor");
import { FaceLandmarks } from './FaceLandmarks'; var Point_1 = require("../Point");
import { fullyConnectedLayer } from './fullyConnectedLayer'; var extractParams_1 = require("./extractParams");
import { loadQuantizedParams } from './loadQuantizedParams'; var FaceLandmarks_1 = require("./FaceLandmarks");
var fullyConnectedLayer_1 = require("./fullyConnectedLayer");
var loadQuantizedParams_1 = require("./loadQuantizedParams");
function conv(x, params) { function conv(x, params) {
return convLayer(x, params, 'valid', true); return convLayer_1.convLayer(x, params, 'valid', true);
} }
function maxPool(x, strides) { function maxPool(x, strides) {
if (strides === void 0) { strides = [2, 2]; } if (strides === void 0) { strides = [2, 2]; }
...@@ -31,7 +33,7 @@ var FaceLandmarkNet = /** @class */ (function () { ...@@ -31,7 +33,7 @@ var FaceLandmarkNet = /** @class */ (function () {
throw new Error('FaceLandmarkNet.load - expected model uri, or weights as Float32Array'); throw new Error('FaceLandmarkNet.load - expected model uri, or weights as Float32Array');
} }
_a = this; _a = this;
return [4 /*yield*/, loadQuantizedParams(weightsOrUrl)]; return [4 /*yield*/, loadQuantizedParams_1.loadQuantizedParams(weightsOrUrl)];
case 1: case 1:
_a._params = _b.sent(); _a._params = _b.sent();
return [2 /*return*/]; return [2 /*return*/];
...@@ -40,7 +42,7 @@ var FaceLandmarkNet = /** @class */ (function () { ...@@ -40,7 +42,7 @@ var FaceLandmarkNet = /** @class */ (function () {
}); });
}; };
FaceLandmarkNet.prototype.extractWeights = function (weights) { FaceLandmarkNet.prototype.extractWeights = function (weights) {
this._params = extractParams(weights); this._params = extractParams_1.extractParams(weights);
}; };
FaceLandmarkNet.prototype.detectLandmarks = function (input) { FaceLandmarkNet.prototype.detectLandmarks = function (input) {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
...@@ -54,7 +56,7 @@ var FaceLandmarkNet = /** @class */ (function () { ...@@ -54,7 +56,7 @@ var FaceLandmarkNet = /** @class */ (function () {
} }
outTensor = tf.tidy(function () { outTensor = tf.tidy(function () {
var params = _this._params; var params = _this._params;
var imgTensor = getImageTensor(input); var imgTensor = getImageTensor_1.getImageTensor(input);
var _a = imgTensor.shape.slice(1), height = _a[0], width = _a[1]; var _a = imgTensor.shape.slice(1), height = _a[0], width = _a[1];
imageDimensions = { width: width, height: height }; imageDimensions = { width: width, height: height };
// work with 128 x 128 sized face images // work with 128 x 128 sized face images
...@@ -73,8 +75,8 @@ var FaceLandmarkNet = /** @class */ (function () { ...@@ -73,8 +75,8 @@ var FaceLandmarkNet = /** @class */ (function () {
out = conv(out, params.conv6_params); out = conv(out, params.conv6_params);
out = maxPool(out, [1, 1]); out = maxPool(out, [1, 1]);
out = conv(out, params.conv7_params); out = conv(out, params.conv7_params);
var fc0 = tf.relu(fullyConnectedLayer(out.as2D(out.shape[0], -1), params.fc0_params)); var fc0 = tf.relu(fullyConnectedLayer_1.fullyConnectedLayer(out.as2D(out.shape[0], -1), params.fc0_params));
var fc1 = fullyConnectedLayer(fc0, params.fc1_params); var fc1 = fullyConnectedLayer_1.fullyConnectedLayer(fc0, params.fc1_params);
return fc1; return fc1;
}); });
_b = (_a = Array).from; _b = (_a = Array).from;
...@@ -84,12 +86,12 @@ var FaceLandmarkNet = /** @class */ (function () { ...@@ -84,12 +86,12 @@ var FaceLandmarkNet = /** @class */ (function () {
outTensor.dispose(); outTensor.dispose();
xCoords = faceLandmarksArray.filter(function (c, i) { return (i - 1) % 2; }); xCoords = faceLandmarksArray.filter(function (c, i) { return (i - 1) % 2; });
yCoords = faceLandmarksArray.filter(function (c, i) { return i % 2; }); yCoords = faceLandmarksArray.filter(function (c, i) { return i % 2; });
return [2 /*return*/, new FaceLandmarks(Array(68).fill(0).map(function (_, i) { return new Point(xCoords[i], yCoords[i]); }), imageDimensions)]; return [2 /*return*/, new FaceLandmarks_1.FaceLandmarks(Array(68).fill(0).map(function (_, i) { return new Point_1.Point(xCoords[i], yCoords[i]); }), imageDimensions)];
} }
}); });
}); });
}; };
return FaceLandmarkNet; return FaceLandmarkNet;
}()); }());
export { FaceLandmarkNet }; exports.FaceLandmarkNet = FaceLandmarkNet;
//# sourceMappingURL=FaceLandmarkNet.js.map //# sourceMappingURL=FaceLandmarkNet.js.map
\ No newline at end of file
{"version":3,"file":"FaceLandmarkNet.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/FaceLandmarkNet.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import { getCenterPoint } from '../commons/getCenterPoint'; "use strict";
import { FaceDetection } from '../faceDetectionNet/FaceDetection'; Object.defineProperty(exports, "__esModule", { value: true });
import { Point } from '../Point'; var getCenterPoint_1 = require("../commons/getCenterPoint");
import { Rect } from '../Rect'; var FaceDetection_1 = require("../faceDetectionNet/FaceDetection");
var Point_1 = require("../Point");
var Rect_1 = require("../Rect");
// face alignment constants // face alignment constants
var relX = 0.5; var relX = 0.5;
var relY = 0.43; var relY = 0.43;
var relScale = 0.45; var relScale = 0.45;
var FaceLandmarks = /** @class */ (function () { var FaceLandmarks = /** @class */ (function () {
function FaceLandmarks(relativeFaceLandmarkPositions, imageDims, shift) { function FaceLandmarks(relativeFaceLandmarkPositions, imageDims, shift) {
if (shift === void 0) { shift = new Point(0, 0); } if (shift === void 0) { shift = new Point_1.Point(0, 0); }
var width = imageDims.width, height = imageDims.height; var width = imageDims.width, height = imageDims.height;
this._imageWidth = width; this._imageWidth = width;
this._imageHeight = height; this._imageHeight = height;
this._shift = shift; this._shift = shift;
this._faceLandmarks = relativeFaceLandmarkPositions.map(function (pt) { return pt.mul(new Point(width, height)).add(shift); }); this._faceLandmarks = relativeFaceLandmarkPositions.map(function (pt) { return pt.mul(new Point_1.Point(width, height)).add(shift); });
} }
FaceLandmarks.prototype.getShift = function () { FaceLandmarks.prototype.getShift = function () {
return new Point(this._shift.x, this._shift.y); return new Point_1.Point(this._shift.x, this._shift.y);
}; };
FaceLandmarks.prototype.getImageWidth = function () { FaceLandmarks.prototype.getImageWidth = function () {
return this._imageWidth; return this._imageWidth;
...@@ -29,7 +31,7 @@ var FaceLandmarks = /** @class */ (function () { ...@@ -29,7 +31,7 @@ var FaceLandmarks = /** @class */ (function () {
}; };
FaceLandmarks.prototype.getRelativePositions = function () { FaceLandmarks.prototype.getRelativePositions = function () {
var _this = this; var _this = this;
return this._faceLandmarks.map(function (pt) { return pt.sub(_this._shift).div(new Point(_this._imageWidth, _this._imageHeight)); }); return this._faceLandmarks.map(function (pt) { return pt.sub(_this._shift).div(new Point_1.Point(_this._imageWidth, _this._imageHeight)); });
}; };
FaceLandmarks.prototype.getJawOutline = function () { FaceLandmarks.prototype.getJawOutline = function () {
return this._faceLandmarks.slice(0, 17); return this._faceLandmarks.slice(0, 17);
...@@ -56,7 +58,7 @@ var FaceLandmarks = /** @class */ (function () { ...@@ -56,7 +58,7 @@ var FaceLandmarks = /** @class */ (function () {
return new FaceLandmarks(this.getRelativePositions(), { width: width, height: height }); return new FaceLandmarks(this.getRelativePositions(), { width: width, height: height });
}; };
FaceLandmarks.prototype.shift = function (x, y) { FaceLandmarks.prototype.shift = function (x, y) {
return new FaceLandmarks(this.getRelativePositions(), { width: this._imageWidth, height: this._imageHeight }, new Point(x, y)); return new FaceLandmarks(this.getRelativePositions(), { width: this._imageWidth, height: this._imageHeight }, new Point_1.Point(x, y));
}; };
/** /**
* Aligns the face landmarks after face detection from the relative positions of the faces * Aligns the face landmarks after face detection from the relative positions of the faces
...@@ -71,7 +73,7 @@ var FaceLandmarks = /** @class */ (function () { ...@@ -71,7 +73,7 @@ var FaceLandmarks = /** @class */ (function () {
*/ */
FaceLandmarks.prototype.align = function (detection) { FaceLandmarks.prototype.align = function (detection) {
if (detection) { if (detection) {
var box = detection instanceof FaceDetection var box = detection instanceof FaceDetection_1.FaceDetection
? detection.getBox().floor() ? detection.getBox().floor()
: detection; : detection;
return this.shift(box.x, box.y).align(); return this.shift(box.x, box.y).align();
...@@ -80,18 +82,18 @@ var FaceLandmarks = /** @class */ (function () { ...@@ -80,18 +82,18 @@ var FaceLandmarks = /** @class */ (function () {
this.getLeftEye(), this.getLeftEye(),
this.getRightEye(), this.getRightEye(),
this.getMouth() this.getMouth()
].map(getCenterPoint); ].map(getCenterPoint_1.getCenterPoint);
var leftEyeCenter = centers[0], rightEyeCenter = centers[1], mouthCenter = centers[2]; var leftEyeCenter = centers[0], rightEyeCenter = centers[1], mouthCenter = centers[2];
var distToMouth = function (pt) { return mouthCenter.sub(pt).magnitude(); }; var distToMouth = function (pt) { return mouthCenter.sub(pt).magnitude(); };
var eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2; var eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2;
var size = Math.floor(eyeToMouthDist / relScale); var size = Math.floor(eyeToMouthDist / relScale);
var refPoint = getCenterPoint(centers); var refPoint = getCenterPoint_1.getCenterPoint(centers);
// TODO: pad in case rectangle is out of image bounds // TODO: pad in case rectangle is out of image bounds
var x = Math.floor(Math.max(0, refPoint.x - (relX * size))); var x = Math.floor(Math.max(0, refPoint.x - (relX * size)));
var y = Math.floor(Math.max(0, refPoint.y - (relY * size))); var y = Math.floor(Math.max(0, refPoint.y - (relY * size)));
return new Rect(x, y, size, size); return new Rect_1.Rect(x, y, size, size);
}; };
return FaceLandmarks; return FaceLandmarks;
}()); }());
export { FaceLandmarks }; exports.FaceLandmarks = FaceLandmarks;
//# sourceMappingURL=FaceLandmarks.js.map //# sourceMappingURL=FaceLandmarks.js.map
\ No newline at end of file
{"version":3,"file":"FaceLandmarks.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/FaceLandmarks.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; "use strict";
import { extractConvParamsFactory } from '../commons/extractConvParamsFactory'; Object.defineProperty(exports, "__esModule", { value: true });
import { extractWeightsFactory } from '../commons/extractWeightsFactory'; var tf = require("@tensorflow/tfjs-core");
export function extractParams(weights) { var extractConvParamsFactory_1 = require("../commons/extractConvParamsFactory");
var _a = extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; var extractWeightsFactory_1 = require("../commons/extractWeightsFactory");
var extractConvParams = extractConvParamsFactory(extractWeights); function extractParams(weights) {
var _a = extractWeightsFactory_1.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights;
var extractConvParams = extractConvParamsFactory_1.extractConvParamsFactory(extractWeights);
function extractFcParams(channelsIn, channelsOut) { function extractFcParams(channelsIn, channelsOut) {
var fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]); var fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]);
var fc_bias = tf.tensor1d(extractWeights(channelsOut)); var fc_bias = tf.tensor1d(extractWeights(channelsOut));
...@@ -38,4 +40,5 @@ export function extractParams(weights) { ...@@ -38,4 +40,5 @@ export function extractParams(weights) {
fc1_params: fc1_params fc1_params: fc1_params
}; };
} }
exports.extractParams = extractParams;
//# sourceMappingURL=extractParams.js.map //# sourceMappingURL=extractParams.js.map
\ No newline at end of file
{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/extractParams.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,gFAA+E;AAC/E,0EAAyE;AAGzE,uBAA8B,OAAqB;IAC3C,IAAA,2DAG4B,EAFhC,kCAAc,EACd,4CAAmB,CACa;IAElC,IAAM,iBAAiB,GAAG,mDAAwB,CAAC,cAAc,CAAC,CAAA;IAElE,yBAAyB,UAAkB,EAAE,WAAmB;QAC9D,IAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;QACnG,IAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAA;QACxD,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,OAAO;SACd,CAAA;IACH,CAAC;IAED,IAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAChD,IAAM,YAAY,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACjD,IAAM,YAAY,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACjD,IAAM,YAAY,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACjD,IAAM,YAAY,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACjD,IAAM,YAAY,GAAG,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IAClD,IAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IACnD,IAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IACnD,IAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC9C,IAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAE7C,IAAI,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAkC,mBAAmB,EAAE,CAAC,MAAQ,CAAC,CAAA;KAClF;IAED,OAAO;QACL,YAAY,cAAA;QACZ,YAAY,cAAA;QACZ,YAAY,cAAA;QACZ,YAAY,cAAA;QACZ,YAAY,cAAA;QACZ,YAAY,cAAA;QACZ,YAAY,cAAA;QACZ,YAAY,cAAA;QACZ,UAAU,YAAA;QACV,UAAU,YAAA;KACX,CAAA;AACH,CAAC;AA5CD,sCA4CC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; "use strict";
export function fullyConnectedLayer(x, params) { Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function fullyConnectedLayer(x, params) {
return tf.tidy(function () { return tf.tidy(function () {
return tf.add(tf.matMul(x, params.weights), params.bias); return tf.add(tf.matMul(x, params.weights), params.bias);
}); });
} }
exports.fullyConnectedLayer = fullyConnectedLayer;
//# sourceMappingURL=fullyConnectedLayer.js.map //# sourceMappingURL=fullyConnectedLayer.js.map
\ No newline at end of file
{"version":3,"file":"fullyConnectedLayer.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/fullyConnectedLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAI5C,6BACE,CAAc,EACd,MAAgB;IAEhB,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,OAAA,EAAE,CAAC,GAAG,CACJ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAC5B,MAAM,CAAC,IAAI,CACZ;IAHD,CAGC,CACF,CAAA;AACH,CAAC;AAVD,kDAUC"}
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var FaceLandmarkNet_1 = require("./FaceLandmarkNet");
tslib_1.__exportStar(require("./FaceLandmarkNet"), exports);
function faceLandmarkNet(weights) {
var net = new FaceLandmarkNet_1.FaceLandmarkNet();
net.extractWeights(weights);
return net;
}
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,qDAAoD;AAEpD,4DAAkC;AAElC,yBAAgC,OAAqB;IACnD,IAAM,GAAG,GAAG,IAAI,iCAAe,EAAE,CAAA;IACjC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,0CAIC"}
\ No newline at end of file
import * as tslib_1 from "tslib"; "use strict";
import { loadWeightMap } from '../commons/loadWeightMap'; Object.defineProperty(exports, "__esModule", { value: true });
import { isTensor4D, isTensor1D, isTensor2D } from '../commons/isTensor'; var tslib_1 = require("tslib");
var loadWeightMap_1 = require("../commons/loadWeightMap");
var isTensor_1 = require("../commons/isTensor");
var DEFAULT_MODEL_NAME = 'face_landmark_68_model'; var DEFAULT_MODEL_NAME = 'face_landmark_68_model';
function extractorsFactory(weightMap) { function extractorsFactory(weightMap) {
function extractConvParams(prefix) { function extractConvParams(prefix) {
...@@ -8,10 +10,10 @@ function extractorsFactory(weightMap) { ...@@ -8,10 +10,10 @@ function extractorsFactory(weightMap) {
filters: weightMap[prefix + "/kernel"], filters: weightMap[prefix + "/kernel"],
bias: weightMap[prefix + "/bias"] bias: weightMap[prefix + "/bias"]
}; };
if (!isTensor4D(params.filters)) { if (!isTensor_1.isTensor4D(params.filters)) {
throw new Error("expected weightMap[" + prefix + "/kernel] to be a Tensor4D, instead have " + params.filters); throw new Error("expected weightMap[" + prefix + "/kernel] to be a Tensor4D, instead have " + params.filters);
} }
if (!isTensor1D(params.bias)) { if (!isTensor_1.isTensor1D(params.bias)) {
throw new Error("expected weightMap[" + prefix + "/bias] to be a Tensor1D, instead have " + params.bias); throw new Error("expected weightMap[" + prefix + "/bias] to be a Tensor1D, instead have " + params.bias);
} }
return params; return params;
...@@ -21,10 +23,10 @@ function extractorsFactory(weightMap) { ...@@ -21,10 +23,10 @@ function extractorsFactory(weightMap) {
weights: weightMap[prefix + "/kernel"], weights: weightMap[prefix + "/kernel"],
bias: weightMap[prefix + "/bias"] bias: weightMap[prefix + "/bias"]
}; };
if (!isTensor2D(params.weights)) { if (!isTensor_1.isTensor2D(params.weights)) {
throw new Error("expected weightMap[" + prefix + "/kernel] to be a Tensor2D, instead have " + params.weights); throw new Error("expected weightMap[" + prefix + "/kernel] to be a Tensor2D, instead have " + params.weights);
} }
if (!isTensor1D(params.bias)) { if (!isTensor_1.isTensor1D(params.bias)) {
throw new Error("expected weightMap[" + prefix + "/bias] to be a Tensor1D, instead have " + params.bias); throw new Error("expected weightMap[" + prefix + "/bias] to be a Tensor1D, instead have " + params.bias);
} }
return params; return params;
...@@ -34,12 +36,12 @@ function extractorsFactory(weightMap) { ...@@ -34,12 +36,12 @@ function extractorsFactory(weightMap) {
extractFcParams: extractFcParams extractFcParams: extractFcParams
}; };
} }
export function loadQuantizedParams(uri) { function loadQuantizedParams(uri) {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var weightMap, _a, extractConvParams, extractFcParams; var weightMap, _a, extractConvParams, extractFcParams;
return tslib_1.__generator(this, function (_b) { return tslib_1.__generator(this, function (_b) {
switch (_b.label) { switch (_b.label) {
case 0: return [4 /*yield*/, loadWeightMap(uri, DEFAULT_MODEL_NAME)]; case 0: return [4 /*yield*/, loadWeightMap_1.loadWeightMap(uri, DEFAULT_MODEL_NAME)];
case 1: case 1:
weightMap = _b.sent(); weightMap = _b.sent();
_a = extractorsFactory(weightMap), extractConvParams = _a.extractConvParams, extractFcParams = _a.extractFcParams; _a = extractorsFactory(weightMap), extractConvParams = _a.extractConvParams, extractFcParams = _a.extractFcParams;
...@@ -59,4 +61,5 @@ export function loadQuantizedParams(uri) { ...@@ -59,4 +61,5 @@ export function loadQuantizedParams(uri) {
}); });
}); });
} }
exports.loadQuantizedParams = loadQuantizedParams;
//# sourceMappingURL=loadQuantizedParams.js.map //# sourceMappingURL=loadQuantizedParams.js.map
\ No newline at end of file
{"version":3,"file":"loadQuantizedParams.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/loadQuantizedParams.ts"],"names":[],"mappings":";;;AAEA,0DAAyD;AAGzD,gDAAyE;AAEzE,IAAM,kBAAkB,GAAG,wBAAwB,CAAA;AAEnD,2BAA2B,SAAc;IAEvC,2BAA2B,MAAc;QACvC,IAAM,MAAM,GAAG;YACb,OAAO,EAAE,SAAS,CAAI,MAAM,YAAS,CAAgB;YACrD,IAAI,EAAE,SAAS,CAAI,MAAM,UAAO,CAAgB;SACjD,CAAA;QAED,IAAI,CAAC,qBAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,wBAAsB,MAAM,gDAA2C,MAAM,CAAC,OAAS,CAAC,CAAA;SACzG;QAED,IAAI,CAAC,qBAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,wBAAsB,MAAM,8CAAyC,MAAM,CAAC,IAAM,CAAC,CAAA;SACpG;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,yBAAyB,MAAc;QACrC,IAAM,MAAM,GAAG;YACb,OAAO,EAAE,SAAS,CAAI,MAAM,YAAS,CAAgB;YACrD,IAAI,EAAE,SAAS,CAAI,MAAM,UAAO,CAAgB;SACjD,CAAA;QAED,IAAI,CAAC,qBAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,wBAAsB,MAAM,gDAA2C,MAAM,CAAC,OAAS,CAAC,CAAA;SACzG;QAED,IAAI,CAAC,qBAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,wBAAsB,MAAM,8CAAyC,MAAM,CAAC,IAAM,CAAC,CAAA;SACpG;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO;QACL,iBAAiB,mBAAA;QACjB,eAAe,iBAAA;KAChB,CAAA;AACH,CAAC;AAED,6BAA0C,GAAuB;;;;;wBAC7C,qBAAM,6BAAa,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAA;;oBAAxD,SAAS,GAAG,SAA4C;oBAExD,KAGF,iBAAiB,CAAC,SAAS,CAAC,EAF9B,iBAAiB,uBAAA,EACjB,eAAe,qBAAA,CACe;oBAEhC,sBAAO;4BACL,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC;4BAC3C,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC;4BAC3C,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC;4BAC3C,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC;4BAC3C,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC;4BAC3C,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC;4BAC3C,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC;4BAC3C,YAAY,EAAE,iBAAiB,CAAC,UAAU,CAAC;4BAC3C,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC;4BACpC,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC;yBACtC,EAAA;;;;CACF;AApBD,kDAoBC"}
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map //# sourceMappingURL=types.js.map
\ No newline at end of file
This diff is collapsed. Click to expand it.
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