Commit 8c2d4602 by vincent

check in latest build

parent 03ed2598
import { Rect } from './Rect';
import { Dimensions } from './types';
export declare class BoundingBox {
private _left;
private _top;
private _right;
private _bottom;
constructor(_left: number, _top: number, _right: number, _bottom: number);
readonly left: number;
readonly top: number;
readonly right: number;
readonly bottom: number;
readonly width: number;
readonly height: number;
readonly area: number;
toSquare(): BoundingBox;
round(): BoundingBox;
padAtBorders(imageHeight: number, imageWidth: number): {
dy: number;
edy: number;
dx: number;
edx: number;
y: number;
ey: number;
x: number;
ex: number;
w: number;
h: number;
};
calibrate(region: BoundingBox): BoundingBox;
rescale(s: Dimensions | number): BoundingBox;
toRect(): Rect;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Rect_1 = require("./Rect");
var utils_1 = require("./utils");
var BoundingBox = /** @class */ (function () {
function BoundingBox(_left, _top, _right, _bottom) {
this._left = _left;
this._top = _top;
this._right = _right;
this._bottom = _bottom;
}
Object.defineProperty(BoundingBox.prototype, "left", {
get: function () {
return this._left;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BoundingBox.prototype, "top", {
get: function () {
return this._top;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BoundingBox.prototype, "right", {
get: function () {
return this._right;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BoundingBox.prototype, "bottom", {
get: function () {
return this._bottom;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BoundingBox.prototype, "width", {
get: function () {
return this.right - this.left;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BoundingBox.prototype, "height", {
get: function () {
return this.bottom - this.top;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BoundingBox.prototype, "area", {
get: function () {
return this.width * this.height;
},
enumerable: true,
configurable: true
});
BoundingBox.prototype.toSquare = function () {
var _a = this, left = _a.left, top = _a.top, right = _a.right, bottom = _a.bottom;
var off = (Math.abs(this.width - this.height) / 2);
if (this.width < this.height) {
left -= off;
right += off;
}
if (this.height < this.width) {
top -= off;
bottom += off;
}
return new BoundingBox(left, top, right, bottom);
};
BoundingBox.prototype.round = function () {
return new BoundingBox(Math.round(this.left), Math.round(this.top), Math.round(this.right), Math.round(this.bottom));
};
BoundingBox.prototype.padAtBorders = function (imageHeight, imageWidth) {
var w = this.width + 1;
var h = this.height + 1;
var dx = 1;
var dy = 1;
var edx = w;
var edy = h;
var x = this.left;
var y = this.top;
var ex = this.right;
var ey = this.bottom;
if (ex > imageWidth) {
edx = -ex + imageWidth + w;
ex = imageWidth;
}
if (ey > imageHeight) {
edy = -ey + imageHeight + h;
ey = imageHeight;
}
if (x < 1) {
edy = 2 - x;
x = 1;
}
if (y < 1) {
edy = 2 - y;
y = 1;
}
return { dy: dy, edy: edy, dx: dx, edx: edx, y: y, ey: ey, x: x, ex: ex, w: w, h: h };
};
BoundingBox.prototype.calibrate = function (region) {
return new BoundingBox(this.left + (region.left * this.width), this.top + (region.top * this.height), this.right + (region.right * this.width), this.bottom + (region.bottom * this.height)).toSquare().round();
};
BoundingBox.prototype.rescale = function (s) {
var scaleX = utils_1.isDimensions(s) ? s.width : s;
var scaleY = utils_1.isDimensions(s) ? s.height : s;
return new BoundingBox(this.left * scaleX, this.top * scaleY, this.right * scaleX, this.bottom * scaleY);
};
BoundingBox.prototype.toRect = function () {
return new Rect_1.Rect(this.left, this.top, this.width, this.height);
};
return BoundingBox;
}());
exports.BoundingBox = BoundingBox;
//# sourceMappingURL=BoundingBox.js.map
\ No newline at end of file
{"version":3,"file":"BoundingBox.js","sourceRoot":"","sources":["../src/BoundingBox.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,iCAAuC;AAEvC;IACE,qBACU,KAAa,EACb,IAAY,EACZ,MAAc,EACd,OAAe;QAHf,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAQ;IACtB,CAAC;IAGJ,sBAAW,6BAAI;aAAf;YACE,OAAO,IAAI,CAAC,KAAK,CAAA;QACnB,CAAC;;;OAAA;IAED,sBAAW,4BAAG;aAAd;YACE,OAAO,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;;;OAAA;IAED,sBAAW,8BAAK;aAAhB;YACE,OAAO,IAAI,CAAC,MAAM,CAAA;QACpB,CAAC;;;OAAA;IAED,sBAAW,+BAAM;aAAjB;YACE,OAAO,IAAI,CAAC,OAAO,CAAA;QACrB,CAAC;;;OAAA;IAED,sBAAW,8BAAK;aAAhB;YACE,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA;QAC/B,CAAC;;;OAAA;IAED,sBAAW,+BAAM;aAAjB;YACE,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAA;QAC/B,CAAC;;;OAAA;IAED,sBAAW,6BAAI;aAAf;YACE,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;QACjC,CAAC;;;OAAA;IAEM,8BAAQ,GAAf;QACM,IAAA,SAAmC,EAAjC,cAAI,EAAE,YAAG,EAAE,gBAAK,EAAE,kBAAM,CAAS;QAEvC,IAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACpD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;YAC5B,IAAI,IAAI,GAAG,CAAA;YACX,KAAK,IAAI,GAAG,CAAA;SACb;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;YAC5B,GAAG,IAAI,GAAG,CAAA;YACV,MAAM,IAAI,GAAG,CAAA;SACd;QACD,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAClD,CAAC;IAEM,2BAAK,GAAZ;QACE,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CACxB,CAAA;IACH,CAAC;IAEM,kCAAY,GAAnB,UAAoB,WAAmB,EAAE,UAAkB;QACzD,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QACxB,IAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QAEzB,IAAI,EAAE,GAAG,CAAC,CAAA;QACV,IAAI,EAAE,GAAG,CAAC,CAAA;QACV,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,IAAI,GAAG,GAAG,CAAC,CAAA;QAEX,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAA;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAA;QAChB,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QACnB,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAEpB,IAAI,EAAE,GAAG,UAAU,EAAE;YACnB,GAAG,GAAG,CAAC,EAAE,GAAG,UAAU,GAAG,CAAC,CAAA;YAC1B,EAAE,GAAG,UAAU,CAAA;SAChB;QACD,IAAI,EAAE,GAAG,WAAW,EAAE;YACpB,GAAG,GAAG,CAAC,EAAE,GAAG,WAAW,GAAG,CAAC,CAAA;YAC3B,EAAE,GAAG,WAAW,CAAA;SACjB;QACD,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;YACX,CAAC,GAAG,CAAC,CAAA;SACN;QACD,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;YACX,CAAC,GAAG,CAAC,CAAA;SACN;QAED,OAAO,EAAE,EAAE,IAAA,EAAE,GAAG,KAAA,EAAE,EAAE,IAAA,EAAE,GAAG,KAAA,EAAE,CAAC,GAAA,EAAE,EAAE,IAAA,EAAE,CAAC,GAAA,EAAE,EAAE,IAAA,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,CAAA;IACjD,CAAC;IAEM,+BAAS,GAAhB,UAAiB,MAAmB;QAClC,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EACtC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EACrC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EACxC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAC5C,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IAEM,6BAAO,GAAd,UAAe,CAAsB;QACnC,IAAM,MAAM,GAAG,oBAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAW,CAAA;QACtE,IAAM,MAAM,GAAG,oBAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAW,CAAA;QACvE,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAC1G,CAAC;IAEM,4BAAM,GAAb;QACE,OAAO,IAAI,WAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC/D,CAAC;IACH,kBAAC;AAAD,CAAC,AAjHD,IAiHC;AAjHY,kCAAW"}
\ No newline at end of file
import { Rect } from './Rect';
import { Dimensions } from './types';
export declare class FaceDetection {
private _score;
private _box;
private _imageWidth;
private _imageHeight;
constructor(score: number, relativeBox: Rect, imageDims: Dimensions);
readonly score: number;
readonly box: Rect;
readonly imageWidth: number;
readonly imageHeight: number;
readonly relativeBox: Rect;
getScore(): number;
getBox(): Rect;
getImageWidth(): number;
getImageHeight(): number;
getRelativeBox(): Rect;
forSize(width: number, height: number): FaceDetection;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Rect_1 = require("./Rect");
var FaceDetection = /** @class */ (function () {
function FaceDetection(score, relativeBox, imageDims) {
var width = imageDims.width, height = imageDims.height;
this._imageWidth = width;
this._imageHeight = height;
this._score = score;
this._box = new Rect_1.Rect(relativeBox.x * width, relativeBox.y * height, relativeBox.width * width, relativeBox.height * height);
}
Object.defineProperty(FaceDetection.prototype, "score", {
get: function () {
return this._score;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetection.prototype, "box", {
get: function () {
return this._box;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetection.prototype, "imageWidth", {
get: function () {
return this._imageWidth;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetection.prototype, "imageHeight", {
get: function () {
return this._imageHeight;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FaceDetection.prototype, "relativeBox", {
get: function () {
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);
},
enumerable: true,
configurable: true
});
FaceDetection.prototype.getScore = function () {
return this.score;
};
FaceDetection.prototype.getBox = function () {
return this.box;
};
FaceDetection.prototype.getImageWidth = function () {
return this.imageWidth;
};
FaceDetection.prototype.getImageHeight = function () {
return this.imageHeight;
};
FaceDetection.prototype.getRelativeBox = function () {
return this.relativeBox;
};
FaceDetection.prototype.forSize = function (width, height) {
return new FaceDetection(this._score, this.getRelativeBox(), { width: width, height: height });
};
return FaceDetection;
}());
exports.FaceDetection = FaceDetection;
//# sourceMappingURL=FaceDetection.js.map
\ No newline at end of file
{"version":3,"file":"FaceDetection.js","sourceRoot":"","sources":["../src/FaceDetection.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAG9B;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;IAED,sBAAW,gCAAK;aAAhB;YACE,OAAO,IAAI,CAAC,MAAM,CAAA;QACpB,CAAC;;;OAAA;IAED,sBAAW,8BAAG;aAAd;YACE,OAAO,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;;;OAAA;IAED,sBAAW,qCAAU;aAArB;YACE,OAAO,IAAI,CAAC,WAAW,CAAA;QACzB,CAAC;;;OAAA;IAED,sBAAW,sCAAW;aAAtB;YACE,OAAO,IAAI,CAAC,YAAY,CAAA;QAC1B,CAAC;;;OAAA;IAED,sBAAW,sCAAW;aAAtB;YACE,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;QACH,CAAC;;;OAAA;IAEM,gCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAEM,8BAAM,GAAb;QACE,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAEM,qCAAa,GAApB;QACE,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAEM,sCAAc,GAArB;QACE,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,sCAAc,GAArB;QACE,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,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,AA3ED,IA2EC;AA3EY,sCAAa"}
\ No newline at end of file
{"version":3,"file":"FaceLandmarks.js","sourceRoot":"","sources":["../src/FaceLandmarks.ts"],"names":[],"mappings":";;AAAA,2DAA0D;AAC1D,iDAAgD;AAChD,iCAAwC;AACxC,+BAA8B;AAG9B,2BAA2B;AAC3B,IAAM,IAAI,GAAG,GAAG,CAAA;AAChB,IAAM,IAAI,GAAG,IAAI,CAAA;AACjB,IAAM,QAAQ,GAAG,IAAI,CAAA;AAErB;IAME,uBACE,6BAAsC,EACtC,SAAqB,EACrB,KAA8B;QAA9B,sBAAA,EAAA,YAAmB,aAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAEtB,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,cAAc,GAAG,6BAA6B,CAAC,GAAG,CACrD,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,GAAG,CAAC,IAAI,aAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAA3C,CAA2C,CAClD,CAAA;IACH,CAAC;IAEM,gCAAQ,GAAf;QACE,OAAO,IAAI,aAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAEM,qCAAa,GAApB;QACE,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEM,sCAAc,GAArB;QACE,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAEM,oCAAY,GAAnB;QACE,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAEM,4CAAoB,GAA3B;QAAA,iBAIC;QAHC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAC5B,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,GAAG,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,aAAK,CAAC,KAAI,CAAC,WAAW,EAAE,KAAI,CAAC,YAAY,CAAC,CAAC,EAAvE,CAAuE,CAC9E,CAAA;IACH,CAAC;IAEM,+BAAO,GAAd,UAAwC,KAAa,EAAE,MAAc;QACnE,OAAO,IAAK,IAAI,CAAC,WAAmB,CAClC,IAAI,CAAC,oBAAoB,EAAE,EAC3B,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAClB,CAAA;IACH,CAAC;IAEM,6BAAK,GAAZ,UAAsC,CAAS,EAAE,CAAS;QACxD,OAAO,IAAK,IAAI,CAAC,WAAmB,CAClC,IAAI,CAAC,oBAAoB,EAAE,EAC3B,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,EACtD,IAAI,aAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAChB,CAAA;IACH,CAAC;IAEM,oCAAY,GAAnB,UAA6C,EAAU;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;IAED;;;;;;;;;;OAUG;IACI,6BAAK,GAAZ,UACE,SAAgC;QAEhC,IAAI,SAAS,EAAE;YACb,IAAM,GAAG,GAAG,SAAS,YAAY,6BAAa;gBAC5C,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;gBAC5B,CAAC,CAAC,SAAS,CAAA;YAEb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;SACxC;QAED,IAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAExC,IAAA,0BAAa,EAAE,2BAAc,EAAE,wBAAW,CAAW;QAC5D,IAAM,WAAW,GAAG,UAAC,EAAS,IAAK,OAAA,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,EAA/B,CAA+B,CAAA;QAClE,IAAM,cAAc,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAA;QAErF,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAA;QAElD,IAAM,QAAQ,GAAG,+BAAc,CAAC,OAAO,CAAC,CAAA;QACxC,qDAAqD;QACrD,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAC7D,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAE7D,OAAO,IAAI,WAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAA;IACpG,CAAC;IAES,gDAAwB,GAAlC;QACE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IACH,oBAAC;AAAD,CAAC,AAtGD,IAsGC;AAtGY,sCAAa"}
\ No newline at end of file
{"version":3,"file":"FullFaceDescription.js","sourceRoot":"","sources":["../src/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
import * as tf from '@tensorflow/tfjs-core';
import { Point } from './Point';
import { TResolvedNetInput, Dimensions } from './types';
export declare class NetInput {
private _inputs;
private _canvases;
private _isManaged;
private _isBatchInput;
private _inputDimensions;
private _paddings;
private _inputSize;
constructor(inputs: tf.Tensor4D | Array<TResolvedNetInput>, isBatchInput?: boolean, keepCanvases?: boolean);
readonly inputs: tf.Tensor3D[];
readonly canvases: HTMLCanvasElement[];
readonly isManaged: boolean;
readonly isBatchInput: boolean;
readonly batchSize: number;
readonly inputDimensions: number[][];
readonly paddings: Point[];
readonly inputSize: number;
readonly relativePaddings: Point[];
readonly reshapedInputDimensions: Dimensions[];
getInputDimensions(batchIdx: number): number[];
getInputHeight(batchIdx: number): number;
getInputWidth(batchIdx: number): number;
getPaddings(batchIdx: number): Point;
getRelativePaddings(batchIdx: number): Point;
getReshapedInputDimensions(batchIdx: number): Dimensions;
toBatchTensor(inputSize: number, isCenterInputs?: boolean): tf.Tensor4D;
/**
* By setting the isManaged flag, all newly created tensors will be
* automatically disposed after the batch tensor has been created
*/
managed(): this;
dispose(): void;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var isTensor_1 = require("./commons/isTensor");
var padToSquare_1 = require("./padToSquare");
var Point_1 = require("./Point");
var utils_1 = require("./utils");
var NetInput = /** @class */ (function () {
function NetInput(inputs, isBatchInput, keepCanvases) {
if (isBatchInput === void 0) { isBatchInput = false; }
if (keepCanvases === void 0) { keepCanvases = false; }
var _this = this;
this._inputs = [];
this._canvases = [];
this._isManaged = false;
this._isBatchInput = false;
this._inputDimensions = [];
this._paddings = [];
this._inputSize = 0;
if (isTensor_1.isTensor4D(inputs)) {
this._inputs = tf.unstack(inputs);
}
if (Array.isArray(inputs)) {
this._inputs = inputs.map(function (input, idx) {
if (isTensor_1.isTensor3D(input)) {
// TODO: make sure not to dispose original tensors passed in by the user
return tf.clone(input);
}
if (isTensor_1.isTensor4D(input)) {
var shape = input.shape;
var batchSize = shape[0];
if (batchSize !== 1) {
throw new Error("NetInput - tf.Tensor4D with batchSize " + batchSize + " passed, but not supported in input array");
}
return input.reshape(shape.slice(1));
}
var canvas = input instanceof HTMLCanvasElement ? input : utils_1.createCanvasFromMedia(input);
if (keepCanvases) {
_this._canvases[idx] = canvas;
}
return tf.fromPixels(canvas);
});
}
this._isBatchInput = this.batchSize > 1 || isBatchInput;
this._inputDimensions = this._inputs.map(function (t) { return t.shape; });
}
Object.defineProperty(NetInput.prototype, "inputs", {
get: function () {
return this._inputs;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NetInput.prototype, "canvases", {
get: function () {
return this._canvases;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NetInput.prototype, "isManaged", {
get: function () {
return this._isManaged;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NetInput.prototype, "isBatchInput", {
get: function () {
return this._isBatchInput;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NetInput.prototype, "batchSize", {
get: function () {
return this._inputs.length;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NetInput.prototype, "inputDimensions", {
get: function () {
return this._inputDimensions;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NetInput.prototype, "paddings", {
get: function () {
return this._paddings;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NetInput.prototype, "inputSize", {
get: function () {
return this._inputSize;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NetInput.prototype, "relativePaddings", {
get: function () {
var _this = this;
return Array(this.inputs.length).fill(0).map(function (_, batchIdx) { return _this.getRelativePaddings(batchIdx); });
},
enumerable: true,
configurable: true
});
Object.defineProperty(NetInput.prototype, "reshapedInputDimensions", {
get: function () {
var _this = this;
return Array(this.inputs.length).fill(0).map(function (_, batchIdx) { return _this.getReshapedInputDimensions(batchIdx); });
},
enumerable: true,
configurable: true
});
NetInput.prototype.getInputDimensions = function (batchIdx) {
return this._inputDimensions[batchIdx];
};
NetInput.prototype.getInputHeight = function (batchIdx) {
return this._inputDimensions[batchIdx][0];
};
NetInput.prototype.getInputWidth = function (batchIdx) {
return this._inputDimensions[batchIdx][1];
};
NetInput.prototype.getPaddings = function (batchIdx) {
return this._paddings[batchIdx];
};
NetInput.prototype.getRelativePaddings = function (batchIdx) {
return new Point_1.Point((this.getPaddings(batchIdx).x + this.getInputWidth(batchIdx)) / this.getInputWidth(batchIdx), (this.getPaddings(batchIdx).y + this.getInputHeight(batchIdx)) / this.getInputHeight(batchIdx));
};
NetInput.prototype.getReshapedInputDimensions = function (batchIdx) {
var _a = [this.getInputHeight(batchIdx), this.getInputWidth(batchIdx)], h = _a[0], w = _a[1];
var f = this.inputSize / Math.max(h, w);
return {
height: Math.floor(h * f),
width: Math.floor(w * f)
};
};
NetInput.prototype.toBatchTensor = function (inputSize, isCenterInputs) {
var _this = this;
if (isCenterInputs === void 0) { isCenterInputs = true; }
this._inputSize = inputSize;
return tf.tidy(function () {
var inputTensors = _this._inputs.map(function (inputTensor) {
var _a = inputTensor.shape, originalHeight = _a[0], originalWidth = _a[1];
var imgTensor = inputTensor.expandDims().toFloat();
imgTensor = padToSquare_1.padToSquare(imgTensor, isCenterInputs);
var _b = imgTensor.shape.slice(1), heightAfterPadding = _b[0], widthAfterPadding = _b[1];
if (heightAfterPadding !== inputSize || widthAfterPadding !== inputSize) {
imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]);
}
_this._paddings.push(new Point_1.Point(widthAfterPadding - originalWidth, heightAfterPadding - originalHeight));
return imgTensor;
});
var batchTensor = tf.stack(inputTensors).as4D(_this.batchSize, inputSize, inputSize, 3);
if (_this.isManaged) {
_this.dispose();
}
return batchTensor;
});
};
/**
* By setting the isManaged flag, all newly created tensors will be
* automatically disposed after the batch tensor has been created
*/
NetInput.prototype.managed = function () {
this._isManaged = true;
return this;
};
NetInput.prototype.dispose = function () {
this._inputs.forEach(function (t) { return t.dispose(); });
};
return NetInput;
}());
exports.NetInput = NetInput;
//# sourceMappingURL=NetInput.js.map
\ No newline at end of file
{"version":3,"file":"NetInput.js","sourceRoot":"","sources":["../src/NetInput.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
export interface IPoint {
x: number;
y: number;
}
export declare class Point implements IPoint {
x: number;
y: number;
constructor(x: number, y: number);
add(pt: IPoint): Point;
sub(pt: IPoint): Point;
mul(pt: IPoint): Point;
div(pt: IPoint): Point;
abs(): Point;
magnitude(): number;
floor(): Point;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Point = /** @class */ (function () {
function Point(x, y) {
this.x = x;
this.y = y;
}
Point.prototype.add = function (pt) {
return new Point(this.x + pt.x, this.y + pt.y);
};
Point.prototype.sub = function (pt) {
return new Point(this.x - pt.x, this.y - pt.y);
};
Point.prototype.mul = function (pt) {
return new Point(this.x * pt.x, this.y * pt.y);
};
Point.prototype.div = function (pt) {
return new Point(this.x / pt.x, this.y / pt.y);
};
Point.prototype.abs = function () {
return new Point(Math.abs(this.x), Math.abs(this.y));
};
Point.prototype.magnitude = function () {
return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2));
};
Point.prototype.floor = function () {
return new Point(Math.floor(this.x), Math.floor(this.y));
};
return Point;
}());
exports.Point = Point;
//# 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
import { BoundingBox } from './BoundingBox';
export interface IRect {
x: number;
y: number;
width: number;
height: number;
}
export declare class Rect implements IRect {
x: number;
y: number;
width: number;
height: number;
constructor(x: number, y: number, width: number, height: number);
readonly right: number;
readonly bottom: number;
toSquare(): Rect;
pad(padX: number, padY: number): Rect;
floor(): Rect;
toBoundingBox(): BoundingBox;
clipAtImageBorders(imgWidth: number, imgHeight: number): Rect;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var BoundingBox_1 = require("./BoundingBox");
var Rect = /** @class */ (function () {
function Rect(x, y, width, height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
Object.defineProperty(Rect.prototype, "right", {
get: function () {
return this.x + this.width;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Rect.prototype, "bottom", {
get: function () {
return this.y + this.height;
},
enumerable: true,
configurable: true
});
Rect.prototype.toSquare = function () {
var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height;
var diff = Math.abs(width - height);
if (width < height) {
x -= (diff / 2);
width += diff;
}
if (height < width) {
y -= (diff / 2);
height += diff;
}
return new Rect(x, y, width, height);
};
Rect.prototype.pad = function (padX, padY) {
var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height;
return new Rect(x - (padX / 2), y - (padY / 2), width + padX, height + padY);
};
Rect.prototype.floor = function () {
return new Rect(Math.floor(this.x), Math.floor(this.y), Math.floor(this.width), Math.floor(this.height));
};
Rect.prototype.toBoundingBox = function () {
return new BoundingBox_1.BoundingBox(this.x, this.y, this.x + this.width, this.y + this.height);
};
Rect.prototype.clipAtImageBorders = function (imgWidth, imgHeight) {
var _a = this, x = _a.x, y = _a.y, right = _a.right, bottom = _a.bottom;
var clippedX = Math.max(x, 0);
var clippedY = Math.max(y, 0);
var newWidth = right - clippedX;
var newHeight = bottom - clippedY;
var clippedWidth = Math.min(newWidth, imgWidth - clippedX);
var clippedHeight = Math.min(newHeight, imgHeight - clippedY);
return (new Rect(clippedX, clippedY, clippedWidth, clippedHeight)).floor();
};
return Rect;
}());
exports.Rect = Rect;
//# sourceMappingURL=Rect.js.map
\ No newline at end of file
{"version":3,"file":"Rect.js","sourceRoot":"","sources":["../src/Rect.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import { TNetInput } from 'tfjs-image-recognition-base';
import { TinyYolov2Types } from 'tfjs-tiny-yolov2';
import { TinyYolov2 } from '.'; import { TinyYolov2 } from '.';
import { FullFaceDescription } from './classes/FullFaceDescription';
import { FaceDetectionNet } from './faceDetectionNet/FaceDetectionNet'; import { FaceDetectionNet } from './faceDetectionNet/FaceDetectionNet';
import { FaceLandmarkNet } from './faceLandmarkNet/FaceLandmarkNet'; import { FaceLandmarkNet } from './faceLandmarkNet/FaceLandmarkNet';
import { FaceRecognitionNet } from './faceRecognitionNet/FaceRecognitionNet'; import { FaceRecognitionNet } from './faceRecognitionNet/FaceRecognitionNet';
import { FullFaceDescription } from './FullFaceDescription';
import { Mtcnn } from './mtcnn/Mtcnn'; import { Mtcnn } from './mtcnn/Mtcnn';
import { MtcnnForwardParams } from './mtcnn/types'; import { MtcnnForwardParams } from './mtcnn/types';
import { TinyYolov2ForwardParams } from './tinyYolov2/types';
import { TNetInput } from './types';
export declare function allFacesSsdMobilenetv1Factory(ssdMobilenetv1: FaceDetectionNet, landmarkNet: FaceLandmarkNet, recognitionNet: FaceRecognitionNet): (input: TNetInput, minConfidence?: number, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>; export declare function allFacesSsdMobilenetv1Factory(ssdMobilenetv1: FaceDetectionNet, landmarkNet: FaceLandmarkNet, recognitionNet: FaceRecognitionNet): (input: TNetInput, minConfidence?: number, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>;
export declare function allFacesTinyYolov2Factory(tinyYolov2: TinyYolov2, landmarkNet: FaceLandmarkNet, recognitionNet: FaceRecognitionNet): (input: TNetInput, forwardParams?: TinyYolov2ForwardParams, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>; export declare function allFacesTinyYolov2Factory(tinyYolov2: TinyYolov2, landmarkNet: FaceLandmarkNet, recognitionNet: FaceRecognitionNet): (input: TNetInput, forwardParams?: TinyYolov2Types.TinyYolov2ForwardParams, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>;
export declare function allFacesMtcnnFactory(mtcnn: Mtcnn, recognitionNet: FaceRecognitionNet): (input: TNetInput, mtcnnForwardParams?: MtcnnForwardParams, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>; export declare function allFacesMtcnnFactory(mtcnn: Mtcnn, recognitionNet: FaceRecognitionNet): (input: TNetInput, mtcnnForwardParams?: MtcnnForwardParams, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>;
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import { Point } from 'tfjs-image-recognition-base';
var tslib_1 = require("tslib"); import { FullFaceDescription } from './classes/FullFaceDescription';
var extractFaceTensors_1 = require("./extractFaceTensors"); import { extractFaceTensors } from './dom';
var FullFaceDescription_1 = require("./FullFaceDescription");
function computeDescriptorsFactory(recognitionNet) { function computeDescriptorsFactory(recognitionNet) {
return function (input, alignedFaceBoxes, useBatchProcessing) { return function (input, alignedFaceBoxes, useBatchProcessing) {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var alignedFaceTensors, descriptors, _a; var alignedFaceTensors, descriptors, _a;
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*/, extractFaceTensors_1.extractFaceTensors(input, alignedFaceBoxes)]; case 0: return [4 /*yield*/, extractFaceTensors(input, alignedFaceBoxes)];
case 1: case 1:
alignedFaceTensors = _b.sent(); alignedFaceTensors = _b.sent();
if (!useBatchProcessing) return [3 /*break*/, 3]; if (!useBatchProcessing) return [3 /*break*/, 3];
...@@ -41,7 +40,7 @@ function allFacesFactory(detectFaces, landmarkNet, recognitionNet) { ...@@ -41,7 +40,7 @@ function allFacesFactory(detectFaces, landmarkNet, recognitionNet) {
case 0: return [4 /*yield*/, detectFaces(input)]; case 0: return [4 /*yield*/, detectFaces(input)];
case 1: case 1:
detections = _b.sent(); detections = _b.sent();
return [4 /*yield*/, extractFaceTensors_1.extractFaceTensors(input, detections)]; return [4 /*yield*/, extractFaceTensors(input, detections)];
case 2: case 2:
faceTensors = _b.sent(); faceTensors = _b.sent();
if (!useBatchProcessing) return [3 /*break*/, 4]; if (!useBatchProcessing) return [3 /*break*/, 4];
...@@ -61,14 +60,14 @@ function allFacesFactory(detectFaces, landmarkNet, recognitionNet) { ...@@ -61,14 +60,14 @@ function allFacesFactory(detectFaces, landmarkNet, recognitionNet) {
case 7: case 7:
descriptors = _b.sent(); descriptors = _b.sent();
return [2 /*return*/, detections.map(function (detection, i) { return [2 /*return*/, detections.map(function (detection, i) {
return new FullFaceDescription_1.FullFaceDescription(detection, faceLandmarksByFace[i].shiftByPoint(detection.getBox()), descriptors[i]); return new FullFaceDescription(detection, faceLandmarksByFace[i].shiftByPoint(new Point(detection.box.x, detection.box.y)), descriptors[i]);
})]; })];
} }
}); });
}); });
}; };
} }
function allFacesSsdMobilenetv1Factory(ssdMobilenetv1, landmarkNet, recognitionNet) { export function allFacesSsdMobilenetv1Factory(ssdMobilenetv1, landmarkNet, recognitionNet) {
return function (input, minConfidence, useBatchProcessing) { return function (input, minConfidence, useBatchProcessing) {
if (minConfidence === void 0) { minConfidence = 0.8; } if (minConfidence === void 0) { minConfidence = 0.8; }
if (useBatchProcessing === void 0) { useBatchProcessing = false; } if (useBatchProcessing === void 0) { useBatchProcessing = false; }
...@@ -82,8 +81,7 @@ function allFacesSsdMobilenetv1Factory(ssdMobilenetv1, landmarkNet, recognitionN ...@@ -82,8 +81,7 @@ function allFacesSsdMobilenetv1Factory(ssdMobilenetv1, landmarkNet, recognitionN
}); });
}; };
} }
exports.allFacesSsdMobilenetv1Factory = allFacesSsdMobilenetv1Factory; export function allFacesTinyYolov2Factory(tinyYolov2, landmarkNet, recognitionNet) {
function allFacesTinyYolov2Factory(tinyYolov2, landmarkNet, recognitionNet) {
return function (input, forwardParams, useBatchProcessing) { return function (input, forwardParams, useBatchProcessing) {
if (forwardParams === void 0) { forwardParams = {}; } if (forwardParams === void 0) { forwardParams = {}; }
if (useBatchProcessing === void 0) { useBatchProcessing = false; } if (useBatchProcessing === void 0) { useBatchProcessing = false; }
...@@ -97,8 +95,7 @@ function allFacesTinyYolov2Factory(tinyYolov2, landmarkNet, recognitionNet) { ...@@ -97,8 +95,7 @@ function allFacesTinyYolov2Factory(tinyYolov2, landmarkNet, recognitionNet) {
}); });
}; };
} }
exports.allFacesTinyYolov2Factory = allFacesTinyYolov2Factory; export function allFacesMtcnnFactory(mtcnn, recognitionNet) {
function allFacesMtcnnFactory(mtcnn, recognitionNet) {
var computeDescriptors = computeDescriptorsFactory(recognitionNet); var computeDescriptors = computeDescriptorsFactory(recognitionNet);
return function (input, mtcnnForwardParams, useBatchProcessing) { return function (input, mtcnnForwardParams, useBatchProcessing) {
if (mtcnnForwardParams === void 0) { mtcnnForwardParams = {}; } if (mtcnnForwardParams === void 0) { mtcnnForwardParams = {}; }
...@@ -119,12 +116,11 @@ function allFacesMtcnnFactory(mtcnn, recognitionNet) { ...@@ -119,12 +116,11 @@ function allFacesMtcnnFactory(mtcnn, recognitionNet) {
descriptors = _a.sent(); descriptors = _a.sent();
return [2 /*return*/, results.map(function (_a, i) { return [2 /*return*/, results.map(function (_a, i) {
var faceDetection = _a.faceDetection, faceLandmarks = _a.faceLandmarks; var faceDetection = _a.faceDetection, faceLandmarks = _a.faceLandmarks;
return new FullFaceDescription_1.FullFaceDescription(faceDetection, faceLandmarks, descriptors[i]); return new FullFaceDescription(faceDetection, faceLandmarks, descriptors[i]);
})]; })];
} }
}); });
}); });
}; };
} }
exports.allFacesMtcnnFactory = allFacesMtcnnFactory;
//# sourceMappingURL=allFacesFactory.js.map //# sourceMappingURL=allFacesFactory.js.map
\ No newline at end of file
{"version":3,"file":"allFacesFactory.js","sourceRoot":"","sources":["../src/allFacesFactory.ts"],"names":[],"mappings":"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"} {"version":3,"file":"allFacesFactory.js","sourceRoot":"","sources":["../src/allFacesFactory.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ 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 * as tslib_1 from "tslib";
import { ObjectDetection } from 'tfjs-image-recognition-base';
var FaceDetection = /** @class */ (function (_super) {
tslib_1.__extends(FaceDetection, _super);
function FaceDetection(score, relativeBox, imageDims) {
return _super.call(this, score, score, '', relativeBox, imageDims) || this;
}
return FaceDetection;
}(ObjectDetection));
export { FaceDetection };
//# sourceMappingURL=FaceDetection.js.map
\ No newline at end of file
{"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
import { Dimensions, Point, Rect } from 'tfjs-image-recognition-base';
import { FaceDetection } from './FaceDetection'; import { FaceDetection } from './FaceDetection';
import { IPoint, Point } from './Point';
import { Rect } from './Rect';
import { Dimensions } from './types';
export declare class FaceLandmarks { export declare class FaceLandmarks {
protected _imageWidth: number; protected _imageWidth: number;
protected _imageHeight: number; protected _imageHeight: number;
...@@ -15,7 +13,7 @@ export declare class FaceLandmarks { ...@@ -15,7 +13,7 @@ export declare class FaceLandmarks {
getRelativePositions(): Point[]; getRelativePositions(): Point[];
forSize<T extends FaceLandmarks>(width: number, height: number): T; forSize<T extends FaceLandmarks>(width: number, height: number): T;
shift<T extends FaceLandmarks>(x: number, y: number): T; shift<T extends FaceLandmarks>(x: number, y: number): T;
shiftByPoint<T extends FaceLandmarks>(pt: IPoint): T; shiftByPoint<T extends FaceLandmarks>(pt: Point): T;
/** /**
* 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
* bounding box, or it's current shift. This function should be used to align the face images * bounding box, or it's current shift. This function should be used to align the face images
......
"use strict"; import { getCenterPoint, Point, Rect } from 'tfjs-image-recognition-base';
Object.defineProperty(exports, "__esModule", { value: true }); import { FaceDetection } from './FaceDetection';
var getCenterPoint_1 = require("./commons/getCenterPoint");
var FaceDetection_1 = require("./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_1.Point(0, 0); } if (shift === void 0) { shift = new 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_1.Point(width, height)).add(shift); }); this._faceLandmarks = relativeFaceLandmarkPositions.map(function (pt) { return pt.mul(new Point(width, height)).add(shift); });
} }
FaceLandmarks.prototype.getShift = function () { FaceLandmarks.prototype.getShift = function () {
return new Point_1.Point(this._shift.x, this._shift.y); return new Point(this._shift.x, this._shift.y);
}; };
FaceLandmarks.prototype.getImageWidth = function () { FaceLandmarks.prototype.getImageWidth = function () {
return this._imageWidth; return this._imageWidth;
...@@ -31,13 +27,13 @@ var FaceLandmarks = /** @class */ (function () { ...@@ -31,13 +27,13 @@ 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_1.Point(_this._imageWidth, _this._imageHeight)); }); return this._faceLandmarks.map(function (pt) { return pt.sub(_this._shift).div(new Point(_this._imageWidth, _this._imageHeight)); });
}; };
FaceLandmarks.prototype.forSize = function (width, height) { FaceLandmarks.prototype.forSize = function (width, height) {
return new this.constructor(this.getRelativePositions(), { width: width, height: height }); return new this.constructor(this.getRelativePositions(), { width: width, height: height });
}; };
FaceLandmarks.prototype.shift = function (x, y) { FaceLandmarks.prototype.shift = function (x, y) {
return new this.constructor(this.getRelativePositions(), { width: this._imageWidth, height: this._imageHeight }, new Point_1.Point(x, y)); return new this.constructor(this.getRelativePositions(), { width: this._imageWidth, height: this._imageHeight }, new Point(x, y));
}; };
FaceLandmarks.prototype.shiftByPoint = function (pt) { FaceLandmarks.prototype.shiftByPoint = function (pt) {
return this.shift(pt.x, pt.y); return this.shift(pt.x, pt.y);
...@@ -55,7 +51,7 @@ var FaceLandmarks = /** @class */ (function () { ...@@ -55,7 +51,7 @@ var FaceLandmarks = /** @class */ (function () {
*/ */
FaceLandmarks.prototype.align = function (detection) { FaceLandmarks.prototype.align = function (detection) {
if (detection) { if (detection) {
var box = detection instanceof FaceDetection_1.FaceDetection var box = detection instanceof 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();
...@@ -65,16 +61,16 @@ var FaceLandmarks = /** @class */ (function () { ...@@ -65,16 +61,16 @@ var FaceLandmarks = /** @class */ (function () {
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_1.getCenterPoint(centers); var refPoint = 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_1.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 () { FaceLandmarks.prototype.getRefPointsForAlignment = function () {
throw new Error('getRefPointsForAlignment not implemented by base class'); throw new Error('getRefPointsForAlignment not implemented by base class');
}; };
return FaceLandmarks; return FaceLandmarks;
}()); }());
exports.FaceLandmarks = FaceLandmarks; export { FaceLandmarks };
//# sourceMappingURL=FaceLandmarks.js.map //# sourceMappingURL=FaceLandmarks.js.map
\ 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
import { FaceLandmarks } from '../FaceLandmarks'; import { Point } from 'tfjs-image-recognition-base';
import { Point } from '../Point'; import { FaceLandmarks } from './FaceLandmarks';
export declare class FaceLandmarks5 extends FaceLandmarks { export declare class FaceLandmarks5 extends FaceLandmarks {
protected getRefPointsForAlignment(): Point[]; protected getRefPointsForAlignment(): Point[];
} }
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import { getCenterPoint } from 'tfjs-image-recognition-base';
var tslib_1 = require("tslib"); import { FaceLandmarks } from './FaceLandmarks';
var getCenterPoint_1 = require("../commons/getCenterPoint");
var FaceLandmarks_1 = require("../FaceLandmarks");
var FaceLandmarks5 = /** @class */ (function (_super) { var FaceLandmarks5 = /** @class */ (function (_super) {
tslib_1.__extends(FaceLandmarks5, _super); tslib_1.__extends(FaceLandmarks5, _super);
function FaceLandmarks5() { function FaceLandmarks5() {
...@@ -13,10 +11,10 @@ var FaceLandmarks5 = /** @class */ (function (_super) { ...@@ -13,10 +11,10 @@ var FaceLandmarks5 = /** @class */ (function (_super) {
return [ return [
pts[0], pts[0],
pts[1], pts[1],
getCenterPoint_1.getCenterPoint([pts[3], pts[4]]) getCenterPoint([pts[3], pts[4]])
]; ];
}; };
return FaceLandmarks5; return FaceLandmarks5;
}(FaceLandmarks_1.FaceLandmarks)); }(FaceLandmarks));
exports.FaceLandmarks5 = FaceLandmarks5; export { FaceLandmarks5 };
//# sourceMappingURL=FaceLandmarks5.js.map //# sourceMappingURL=FaceLandmarks5.js.map
\ 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,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
import { FaceLandmarks } from '../FaceLandmarks'; import { Point } from 'tfjs-image-recognition-base';
import { Point } from '../Point'; import { FaceLandmarks } from '../classes/FaceLandmarks';
export declare class FaceLandmarks68 extends FaceLandmarks { export declare class FaceLandmarks68 extends FaceLandmarks {
getJawOutline(): Point[]; getJawOutline(): Point[];
getLeftEyeBrow(): Point[]; getLeftEyeBrow(): Point[];
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import { getCenterPoint } from 'tfjs-image-recognition-base';
var tslib_1 = require("tslib"); import { FaceLandmarks } from '../classes/FaceLandmarks';
var getCenterPoint_1 = require("../commons/getCenterPoint");
var FaceLandmarks_1 = require("../FaceLandmarks");
var FaceLandmarks68 = /** @class */ (function (_super) { var FaceLandmarks68 = /** @class */ (function (_super) {
tslib_1.__extends(FaceLandmarks68, _super); tslib_1.__extends(FaceLandmarks68, _super);
function FaceLandmarks68() { function FaceLandmarks68() {
...@@ -34,9 +32,9 @@ var FaceLandmarks68 = /** @class */ (function (_super) { ...@@ -34,9 +32,9 @@ var FaceLandmarks68 = /** @class */ (function (_super) {
this.getLeftEye(), this.getLeftEye(),
this.getRightEye(), this.getRightEye(),
this.getMouth() this.getMouth()
].map(getCenterPoint_1.getCenterPoint); ].map(getCenterPoint);
}; };
return FaceLandmarks68; return FaceLandmarks68;
}(FaceLandmarks_1.FaceLandmarks)); }(FaceLandmarks));
exports.FaceLandmarks68 = FaceLandmarks68; export { FaceLandmarks68 };
//# sourceMappingURL=FaceLandmarks68.js.map //# sourceMappingURL=FaceLandmarks68.js.map
\ 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;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
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var FullFaceDescription = /** @class */ (function () { var FullFaceDescription = /** @class */ (function () {
function FullFaceDescription(_detection, _landmarks, _descriptor) { function FullFaceDescription(_detection, _landmarks, _descriptor) {
this._detection = _detection; this._detection = _detection;
...@@ -32,5 +30,5 @@ var FullFaceDescription = /** @class */ (function () { ...@@ -32,5 +30,5 @@ var FullFaceDescription = /** @class */ (function () {
}; };
return FullFaceDescription; return FullFaceDescription;
}()); }());
exports.FullFaceDescription = FullFaceDescription; export { FullFaceDescription };
//# sourceMappingURL=FullFaceDescription.js.map //# 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
export * from './FaceDetection';
export * from './FaceLandmarks';
export * from './FaceLandmarks5';
export * from './FaceLandmarks68';
export * from './FullFaceDescription';
export * from './FaceDetection';
export * from './FaceLandmarks';
export * from './FaceLandmarks5';
export * from './FaceLandmarks68';
export * from './FullFaceDescription';
//# 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
import * as tf from '@tensorflow/tfjs-core';
import { ParamMapping } from './types';
export declare class NeuralNetwork<TNetParams> {
private _name;
protected _params: TNetParams | undefined;
protected _paramMappings: ParamMapping[];
constructor(_name: string);
readonly params: TNetParams | undefined;
readonly paramMappings: ParamMapping[];
getParamFromPath(paramPath: string): tf.Tensor;
reassignParamFromPath(paramPath: string, tensor: tf.Tensor): void;
getParamList(): {
path: string;
tensor: tf.Tensor<tf.Rank>;
}[];
getTrainableParams(): {
path: string;
tensor: tf.Tensor<tf.Rank>;
}[];
getFrozenParams(): {
path: string;
tensor: tf.Tensor<tf.Rank>;
}[];
variable(): void;
freeze(): void;
dispose(throwOnRedispose?: boolean): void;
load(weightsOrUrl: Float32Array | string | undefined): Promise<void>;
extractWeights(weights: Float32Array): void;
private traversePropertyPath(paramPath);
protected loadQuantizedParams(_: any): Promise<{
params: TNetParams;
paramMappings: ParamMapping[];
}>;
protected extractParams(_: any): {
params: TNetParams;
paramMappings: ParamMapping[];
};
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var tf = require("@tensorflow/tfjs-core");
var NeuralNetwork = /** @class */ (function () {
function NeuralNetwork(_name) {
this._name = _name;
this._params = undefined;
this._paramMappings = [];
}
Object.defineProperty(NeuralNetwork.prototype, "params", {
get: function () {
return this._params;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NeuralNetwork.prototype, "paramMappings", {
get: function () {
return this._paramMappings;
},
enumerable: true,
configurable: true
});
NeuralNetwork.prototype.getParamFromPath = function (paramPath) {
var _a = this.traversePropertyPath(paramPath), obj = _a.obj, objProp = _a.objProp;
return obj[objProp];
};
NeuralNetwork.prototype.reassignParamFromPath = function (paramPath, tensor) {
var _a = this.traversePropertyPath(paramPath), obj = _a.obj, objProp = _a.objProp;
obj[objProp].dispose();
obj[objProp] = tensor;
};
NeuralNetwork.prototype.getParamList = function () {
var _this = this;
return this._paramMappings.map(function (_a) {
var paramPath = _a.paramPath;
return ({
path: paramPath,
tensor: _this.getParamFromPath(paramPath)
});
});
};
NeuralNetwork.prototype.getTrainableParams = function () {
return this.getParamList().filter(function (param) { return param.tensor instanceof tf.Variable; });
};
NeuralNetwork.prototype.getFrozenParams = function () {
return this.getParamList().filter(function (param) { return !(param.tensor instanceof tf.Variable); });
};
NeuralNetwork.prototype.variable = function () {
var _this = this;
this.getFrozenParams().forEach(function (_a) {
var path = _a.path, tensor = _a.tensor;
_this.reassignParamFromPath(path, tf.variable(tensor));
});
};
NeuralNetwork.prototype.freeze = function () {
var _this = this;
this.getTrainableParams().forEach(function (_a) {
var path = _a.path, tensor = _a.tensor;
_this.reassignParamFromPath(path, tf.tensor(tensor));
});
};
NeuralNetwork.prototype.dispose = function (throwOnRedispose) {
if (throwOnRedispose === void 0) { throwOnRedispose = true; }
this.getParamList().forEach(function (param) {
if (throwOnRedispose && param.tensor.isDisposed) {
throw new Error("param tensor has already been disposed for path " + param.path);
}
param.tensor.dispose();
});
this._params = undefined;
};
NeuralNetwork.prototype.load = function (weightsOrUrl) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, paramMappings, params;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
if (weightsOrUrl instanceof Float32Array) {
this.extractWeights(weightsOrUrl);
return [2 /*return*/];
}
if (weightsOrUrl && typeof weightsOrUrl !== 'string') {
throw new Error(this._name + ".load - expected model uri, or weights as Float32Array");
}
return [4 /*yield*/, this.loadQuantizedParams(weightsOrUrl)];
case 1:
_a = _b.sent(), paramMappings = _a.paramMappings, params = _a.params;
this._paramMappings = paramMappings;
this._params = params;
return [2 /*return*/];
}
});
});
};
NeuralNetwork.prototype.extractWeights = function (weights) {
var _a = this.extractParams(weights), paramMappings = _a.paramMappings, params = _a.params;
this._paramMappings = paramMappings;
this._params = params;
};
NeuralNetwork.prototype.traversePropertyPath = function (paramPath) {
if (!this.params) {
throw new Error("traversePropertyPath - model has no loaded params");
}
var result = paramPath.split('/').reduce(function (res, objProp) {
if (!res.nextObj.hasOwnProperty(objProp)) {
throw new Error("traversePropertyPath - object does not have property " + objProp + ", for path " + paramPath);
}
return { obj: res.nextObj, objProp: objProp, nextObj: res.nextObj[objProp] };
}, { nextObj: this.params });
var obj = result.obj, objProp = result.objProp;
if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {
throw new Error("traversePropertyPath - parameter is not a tensor, for path " + paramPath);
}
return { obj: obj, objProp: objProp };
};
NeuralNetwork.prototype.loadQuantizedParams = function (_) {
throw new Error(this._name + ".loadQuantizedParams - not implemented");
};
NeuralNetwork.prototype.extractParams = function (_) {
throw new Error(this._name + ".extractParams - not implemented");
};
return NeuralNetwork;
}());
exports.NeuralNetwork = NeuralNetwork;
//# sourceMappingURL=NeuralNetwork.js.map
\ No newline at end of file
{"version":3,"file":"NeuralNetwork.js","sourceRoot":"","sources":["../../src/commons/NeuralNetwork.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { ConvParams } from './types';
export declare function convLayer(x: tf.Tensor4D, params: ConvParams, padding?: 'valid' | 'same', withRelu?: boolean): tf.Tensor4D;
"use strict";
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 (withRelu === void 0) { withRelu = false; }
return tf.tidy(function () {
var out = tf.add(tf.conv2d(x, params.filters, [1, 1], padding), params.bias);
return withRelu ? tf.relu(out) : out;
});
}
exports.convLayer = convLayer;
//# 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 { ParamMapping } from './types';
export declare function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]): void;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function disposeUnusedWeightTensors(weightMap, paramMappings) {
Object.keys(weightMap).forEach(function (path) {
if (!paramMappings.some(function (pm) { return pm.originalPath === path; })) {
weightMap[path].dispose();
}
});
}
exports.disposeUnusedWeightTensors = disposeUnusedWeightTensors;
//# sourceMappingURL=disposeUnusedWeightTensors.js.map
\ No newline at end of file
{"version":3,"file":"disposeUnusedWeightTensors.js","sourceRoot":"","sources":["../../src/commons/disposeUnusedWeightTensors.ts"],"names":[],"mappings":";;AAEA,oCAA2C,SAAc,EAAE,aAA6B;IACtF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,YAAY,KAAK,IAAI,EAAxB,CAAwB,CAAC,EAAE;YACvD,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;SAC1B;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAND,gEAMC"}
\ No newline at end of file
import { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';
export declare function extractConvParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, filterSize: number, mappedPrefix: string) => ConvParams;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function extractConvParamsFactory(extractWeights, paramMappings) {
return function (channelsIn, channelsOut, filterSize, mappedPrefix) {
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 + "/bias" });
return { filters: filters, bias: bias };
};
}
exports.extractConvParamsFactory = extractConvParamsFactory;
//# 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,kCACE,cAAsC,EACtC,aAA6B;IAG7B,OAAO,UACL,UAAkB,EAClB,WAAmB,EACnB,UAAkB,EAClB,YAAoB;QAGpB,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,aAAa,CAAC,IAAI,CAChB,EAAE,SAAS,EAAK,YAAY,aAAU,EAAE,EACxC,EAAE,SAAS,EAAK,YAAY,UAAO,EAAE,CACtC,CAAA;QAED,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC,CAAA;AAEH,CAAC;AA1BD,4DA0BC"}
\ No newline at end of file
import { ExtractWeightsFunction, FCParams, ParamMapping } from './types';
export declare function extractFCParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, mappedPrefix: string) => FCParams;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function extractFCParamsFactory(extractWeights, paramMappings) {
return function (channelsIn, channelsOut, mappedPrefix) {
var fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]);
var fc_bias = tf.tensor1d(extractWeights(channelsOut));
paramMappings.push({ paramPath: mappedPrefix + "/weights" }, { paramPath: mappedPrefix + "/bias" });
return {
weights: fc_weights,
bias: fc_bias
};
};
}
exports.extractFCParamsFactory = extractFCParamsFactory;
//# sourceMappingURL=extractFCParamsFactory.js.map
\ No newline at end of file
{"version":3,"file":"extractFCParamsFactory.js","sourceRoot":"","sources":["../../src/commons/extractFCParamsFactory.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAI5C,gCACE,cAAsC,EACtC,aAA6B;IAG7B,OAAO,UACL,UAAkB,EAClB,WAAmB,EACnB,YAAoB;QAGpB,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;QAExD,aAAa,CAAC,IAAI,CAChB,EAAE,SAAS,EAAK,YAAY,aAAU,EAAE,EACxC,EAAE,SAAS,EAAK,YAAY,UAAO,EAAE,CACtC,CAAA;QAED,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,OAAO;SACd,CAAA;IACH,CAAC,CAAA;AAEH,CAAC;AAzBD,wDAyBC"}
\ No newline at end of file
export declare function extractWeightEntry(weightMap: any, path: string, paramRank: number): {
path: string;
tensor: any;
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var isTensor_1 = require("./isTensor");
function extractWeightEntry(weightMap, path, paramRank) {
var tensor = weightMap[path];
if (!isTensor_1.isTensor(tensor, paramRank)) {
throw new Error("expected weightMap[" + path + "] to be a Tensor" + paramRank + "D, instead have " + tensor);
}
return { path: path, tensor: tensor };
}
exports.extractWeightEntry = extractWeightEntry;
//# sourceMappingURL=extractWeightEntry.js.map
\ No newline at end of file
{"version":3,"file":"extractWeightEntry.js","sourceRoot":"","sources":["../../src/commons/extractWeightEntry.ts"],"names":[],"mappings":";;AAAA,uCAAsC;AAEtC,4BAAmC,SAAc,EAAE,IAAY,EAAE,SAAiB;IAChF,IAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAE9B,IAAI,CAAC,mBAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,wBAAsB,IAAI,wBAAmB,SAAS,wBAAmB,MAAQ,CAAC,CAAA;KACnG;IAED,OAAO,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAA;AACzB,CAAC;AARD,gDAQC"}
\ No newline at end of file
import { ParamMapping } from './types';
export declare function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]): <T>(originalPath: string, paramRank: number, mappedPath?: string | undefined) => T;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var isTensor_1 = require("./isTensor");
function extractWeightEntryFactory(weightMap, paramMappings) {
return function (originalPath, paramRank, mappedPath) {
var tensor = weightMap[originalPath];
if (!isTensor_1.isTensor(tensor, paramRank)) {
throw new Error("expected weightMap[" + originalPath + "] to be a Tensor" + paramRank + "D, instead have " + tensor);
}
paramMappings.push({ originalPath: originalPath, paramPath: mappedPath || originalPath });
return tensor;
};
}
exports.extractWeightEntryFactory = extractWeightEntryFactory;
//# sourceMappingURL=extractWeightEntryFactory.js.map
\ No newline at end of file
{"version":3,"file":"extractWeightEntryFactory.js","sourceRoot":"","sources":["../../src/commons/extractWeightEntryFactory.ts"],"names":[],"mappings":";;AAAA,uCAAsC;AAGtC,mCAA0C,SAAc,EAAE,aAA6B;IAErF,OAAO,UAAa,YAAoB,EAAE,SAAiB,EAAE,UAAmB;QAC9E,IAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAAA;QAEtC,IAAI,CAAC,mBAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,wBAAsB,YAAY,wBAAmB,SAAS,wBAAmB,MAAQ,CAAC,CAAA;SAC3G;QAED,aAAa,CAAC,IAAI,CAChB,EAAE,YAAY,cAAA,EAAE,SAAS,EAAE,UAAU,IAAI,YAAY,EAAE,CACxD,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AAEH,CAAC;AAhBD,8DAgBC"}
\ No newline at end of file
export declare function extractWeightsFactory(weights: Float32Array): {
extractWeights: (numWeights: number) => Float32Array;
getRemainingWeights: () => Float32Array;
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function extractWeightsFactory(weights) {
var remainingWeights = weights;
function extractWeights(numWeights) {
var ret = remainingWeights.slice(0, numWeights);
remainingWeights = remainingWeights.slice(numWeights);
return ret;
}
function getRemainingWeights() {
return remainingWeights;
}
return {
extractWeights: extractWeights,
getRemainingWeights: getRemainingWeights
};
}
exports.extractWeightsFactory = extractWeightsFactory;
//# 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
import { Point } from '../Point';
export declare function getCenterPoint(pts: Point[]): Point;
"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 { BoundingBox } from '../BoundingBox';
export declare function iou(box1: BoundingBox, box2: BoundingBox, isIOU?: boolean): number;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function iou(box1, box2, isIOU) {
if (isIOU === void 0) { isIOU = true; }
var width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left) + 1);
var height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top) + 1);
var interSection = width * height;
return isIOU
? interSection / (box1.area + box2.area - interSection)
: interSection / Math.min(box1.area, box2.area);
}
exports.iou = iou;
//# sourceMappingURL=iou.js.map
\ No newline at end of file
{"version":3,"file":"iou.js","sourceRoot":"","sources":["../../src/commons/iou.ts"],"names":[],"mappings":";;AAEA,aAAoB,IAAiB,EAAE,IAAiB,EAAE,KAAqB;IAArB,sBAAA,EAAA,YAAqB;IAC7E,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAClG,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACnG,IAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAA;IAEnC,OAAO,KAAK;QACV,CAAC,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACvD,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AACnD,CAAC;AARD,kBAQC"}
\ No newline at end of file
export declare function isMediaElement(input: any): boolean;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function isMediaElement(input) {
return input instanceof HTMLImageElement
|| input instanceof HTMLVideoElement
|| input instanceof HTMLCanvasElement;
}
exports.isMediaElement = isMediaElement;
//# sourceMappingURL=isMediaElement.js.map
\ No newline at end of file
{"version":3,"file":"isMediaElement.js","sourceRoot":"","sources":["../../src/commons/isMediaElement.ts"],"names":[],"mappings":";;AAAA,wBAA+B,KAAU;IACvC,OAAO,KAAK,YAAY,gBAAgB;WACnC,KAAK,YAAY,gBAAgB;WACjC,KAAK,YAAY,iBAAiB,CAAA;AACzC,CAAC;AAJD,wCAIC"}
\ No newline at end of file
export declare function isTensor(tensor: any, dim: number): boolean;
export declare function isTensor1D(tensor: any): boolean;
export declare function isTensor2D(tensor: any): boolean;
export declare function isTensor3D(tensor: any): boolean;
export declare function isTensor4D(tensor: any): boolean;
"use strict";
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;
}
exports.isTensor = isTensor;
function isTensor1D(tensor) {
return isTensor(tensor, 1);
}
exports.isTensor1D = isTensor1D;
function isTensor2D(tensor) {
return isTensor(tensor, 2);
}
exports.isTensor2D = isTensor2D;
function isTensor3D(tensor) {
return isTensor(tensor, 3);
}
exports.isTensor3D = isTensor3D;
function isTensor4D(tensor) {
return isTensor(tensor, 4);
}
exports.isTensor4D = isTensor4D;
//# 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,MAAW,EAAE,GAAW;IAC/C,OAAO,MAAM,YAAY,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,CAAA;AACnE,CAAC;AAFD,4BAEC;AAED,oBAA2B,MAAW;IACpC,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC5B,CAAC;AAFD,gCAEC;AAED,oBAA2B,MAAW;IACpC,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC5B,CAAC;AAFD,gCAEC;AAED,oBAA2B,MAAW;IACpC,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC5B,CAAC;AAFD,gCAEC;AAED,oBAA2B,MAAW;IACpC,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC5B,CAAC;AAFD,gCAEC"}
\ No newline at end of file
export declare function getModelUris(uri: string | undefined, defaultModelName: string): {
modelBaseUri: string;
manifestUri: string;
};
export declare function loadWeightMap(uri: string | undefined, defaultModelName: string): Promise<any>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var tf = require("@tensorflow/tfjs-core");
function getModelUris(uri, defaultModelName) {
var defaultManifestFilename = defaultModelName + "-weights_manifest.json";
if (!uri) {
return {
modelBaseUri: '',
manifestUri: defaultManifestFilename
};
}
if (uri === '/') {
return {
modelBaseUri: '/',
manifestUri: "/" + defaultManifestFilename
};
}
var protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';
uri = uri.replace(protocol, '');
var parts = uri.split('/').filter(function (s) { return s; });
var manifestFile = uri.endsWith('.json')
? parts[parts.length - 1]
: defaultManifestFilename;
var modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/');
modelBaseUri = uri.startsWith('/') ? "/" + modelBaseUri : modelBaseUri;
return {
modelBaseUri: modelBaseUri,
manifestUri: modelBaseUri === '/' ? "/" + manifestFile : modelBaseUri + "/" + manifestFile
};
}
exports.getModelUris = getModelUris;
function loadWeightMap(uri, defaultModelName) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, manifestUri, modelBaseUri, manifest;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = getModelUris(uri, defaultModelName), manifestUri = _a.manifestUri, modelBaseUri = _a.modelBaseUri;
return [4 /*yield*/, fetch(manifestUri)];
case 1: return [4 /*yield*/, (_b.sent()).json()];
case 2:
manifest = _b.sent();
return [2 /*return*/, tf.io.loadWeights(manifest, modelBaseUri)];
}
});
});
}
exports.loadWeightMap = loadWeightMap;
//# 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,uBAAuB,GAAM,gBAAgB,2BAAwB,CAAA;IAE3E,IAAI,CAAC,GAAG,EAAE;QACR,OAAO;YACL,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,uBAAuB;SACrC,CAAA;KACF;IAED,IAAI,GAAG,KAAK,GAAG,EAAE;QACf,OAAO;YACL,YAAY,EAAE,GAAG;YACjB,WAAW,EAAE,MAAI,uBAAyB;SAC3C,CAAA;KACF;IACD,IAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACtG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEhC,IAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAC,CAAA;IAE3C,IAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,uBAAuB,CAAA;IAE3B,IAAI,YAAY,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC1G,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAI,YAAc,CAAC,CAAC,CAAC,YAAY,CAAA;IAEtE,OAAO;QACL,YAAY,cAAA;QACZ,WAAW,EAAE,YAAY,KAAK,GAAG,CAAC,CAAC,CAAC,MAAI,YAAc,CAAC,CAAC,CAAI,YAAY,SAAI,YAAc;KAC3F,CAAA;AACH,CAAC;AAhCD,oCAgCC;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
import { BoundingBox } from '../BoundingBox';
export declare function nonMaxSuppression(boxes: BoundingBox[], scores: number[], iouThreshold: number, isIOU?: boolean): number[];
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var iou_1 = require("../iou");
function nonMaxSuppression(boxes, scores, iouThreshold, isIOU) {
if (isIOU === void 0) { isIOU = true; }
var indicesSortedByScore = scores
.map(function (score, boxIndex) { return ({ score: score, boxIndex: boxIndex }); })
.sort(function (c1, c2) { return c1.score - c2.score; })
.map(function (c) { return c.boxIndex; });
var pick = [];
var _loop_1 = function () {
var curr = indicesSortedByScore.pop();
pick.push(curr);
var indices = indicesSortedByScore;
var outputs = [];
for (var i = 0; i < indices.length; i++) {
var idx = indices[i];
var currBox = boxes[curr];
var idxBox = boxes[idx];
outputs.push(iou_1.iou(currBox, idxBox, isIOU));
}
indicesSortedByScore = indicesSortedByScore.filter(function (_, j) { return outputs[j] <= iouThreshold; });
};
while (indicesSortedByScore.length > 0) {
_loop_1();
}
return pick;
}
exports.nonMaxSuppression = nonMaxSuppression;
//# sourceMappingURL=nonMaxSuppression.js.map
\ No newline at end of file
{"version":3,"file":"nonMaxSuppression.js","sourceRoot":"","sources":["../../src/commons/nonMaxSuppression.ts"],"names":[],"mappings":";;AACA,8BAA6B;AAE7B,2BACE,KAAoB,EACpB,MAAgB,EAChB,YAAoB,EACpB,KAAqB;IAArB,sBAAA,EAAA,YAAqB;IAGrB,IAAI,oBAAoB,GAAG,MAAM;SAC9B,GAAG,CAAC,UAAC,KAAK,EAAE,QAAQ,IAAK,OAAA,CAAC,EAAE,KAAK,OAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,EAArB,CAAqB,CAAC;SAC/C,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,OAAA,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,EAAnB,CAAmB,CAAC;SACrC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,EAAV,CAAU,CAAC,CAAA;IAEvB,IAAM,IAAI,GAAa,EAAE,CAAA;;QAGvB,IAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,EAAY,CAAA;QACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEf,IAAM,OAAO,GAAG,oBAAoB,CAAA;QAEpC,IAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,IAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAEtB,IAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;YAC3B,IAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;YAEzB,OAAO,CAAC,IAAI,CAAC,SAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;SAC1C;QAED,oBAAoB,GAAG,oBAAoB,CAAC,MAAM,CAChD,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,EAA1B,CAA0B,CACrC,CAAA;IACH,CAAC;IAnBD,OAAM,oBAAoB,CAAC,MAAM,GAAG,CAAC;;KAmBpC;IAED,OAAO,IAAI,CAAA;AAEb,CAAC;AArCD,8CAqCC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
export declare function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function normalize(x, meanRgb) {
return tf.tidy(function () {
var r = meanRgb[0], g = meanRgb[1], b = meanRgb[2];
var avg_r = tf.fill(x.shape.slice(0, 3).concat([1]), r);
var avg_g = tf.fill(x.shape.slice(0, 3).concat([1]), g);
var avg_b = tf.fill(x.shape.slice(0, 3).concat([1]), b);
var avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);
return tf.sub(x, avg_rgb);
});
}
exports.normalize = normalize;
//# sourceMappingURL=normalize.js.map
\ No newline at end of file
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/commons/normalize.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,mBAA0B,CAAc,EAAE,OAAiB;IACzD,OAAO,EAAE,CAAC,IAAI,CAAC;QACN,IAAA,cAAC,EAAE,cAAC,EAAE,cAAC,CAAW;QACzB,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAE,CAAC,IAAG,CAAC,CAAC,CAAA;QACrD,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAE,CAAC,IAAG,CAAC,CAAC,CAAA;QACrD,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAE,CAAC,IAAG,CAAC,CAAC,CAAA;QACrD,IAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QAEnD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC;AAVD,8BAUC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
export declare type ConvParams = {
filters: tf.Tensor4D;
bias: tf.Tensor1D;
};
export declare type FCParams = {
weights: tf.Tensor2D;
bias: tf.Tensor1D;
};
export declare type ExtractWeightsFunction = (numWeights: number) => Float32Array;
export declare type BatchReshapeInfo = {
originalWidth: number;
originalHeight: number;
paddingX: number;
paddingY: number;
};
export declare type ParamMapping = {
originalPath?: string;
paramPath: string;
};
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/commons/types.ts"],"names":[],"mappings":""}
\ No newline at end of file
import { Point } from 'tfjs-image-recognition-base';
export declare function drawContour(ctx: CanvasRenderingContext2D, points: Point[], isClosed?: boolean): void;
export function drawContour(ctx, points, isClosed) {
if (isClosed === void 0) { isClosed = false; }
ctx.beginPath();
points.slice(1).forEach(function (_a, prevIdx) {
var x = _a.x, y = _a.y;
var from = points[prevIdx];
ctx.moveTo(from.x, from.y);
ctx.lineTo(x, y);
});
if (isClosed) {
var from = points[points.length - 1];
var to = points[0];
if (!from || !to) {
return;
}
ctx.moveTo(from.x, from.y);
ctx.lineTo(to.x, to.y);
}
ctx.stroke();
}
//# sourceMappingURL=drawContour.js.map
\ No newline at end of file
{"version":3,"file":"drawContour.js","sourceRoot":"","sources":["../../src/dom/drawContour.ts"],"names":[],"mappings":"AAEA,MAAM,sBACJ,GAA6B,EAC7B,MAAe,EACf,QAAyB;IAAzB,yBAAA,EAAA,gBAAyB;IAEzB,GAAG,CAAC,SAAS,EAAE,CAAA;IAEf,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAC,EAAQ,EAAE,OAAO;YAAf,QAAC,EAAE,QAAC;QAC7B,IAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,IAAI,QAAQ,EAAE;QACZ,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtC,IAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE;YAChB,OAAM;SACP;QAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;KACvB;IAED,GAAG,CAAC,MAAM,EAAE,CAAA;AACd,CAAC"}
\ No newline at end of file
import { FaceLandmarks } from '../classes/FaceLandmarks';
import { DrawLandmarksOptions } from './types';
export declare function drawLandmarks(canvasArg: string | HTMLCanvasElement, faceLandmarks: FaceLandmarks | FaceLandmarks[], options?: DrawLandmarksOptions): void;
import { getContext2dOrThrow, getDefaultDrawOptions, resolveInput } from 'tfjs-image-recognition-base';
import { FaceLandmarks68 } from '../classes/FaceLandmarks68';
import { drawContour } from './drawContour';
export function drawLandmarks(canvasArg, faceLandmarks, options) {
var canvas = resolveInput(canvasArg);
if (!(canvas instanceof HTMLCanvasElement)) {
throw new Error('drawLandmarks - expected canvas to be of type: HTMLCanvasElement');
}
var drawOptions = Object.assign(getDefaultDrawOptions(options), (options || {}));
var drawLines = Object.assign({ drawLines: false }, (options || {})).drawLines;
var ctx = getContext2dOrThrow(canvas);
var lineWidth = drawOptions.lineWidth, _a = drawOptions.color, color = _a === void 0 ? 'blue' : _a;
var faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];
faceLandmarksArray.forEach(function (landmarks) {
if (drawLines && landmarks instanceof FaceLandmarks68) {
ctx.strokeStyle = color;
ctx.lineWidth = lineWidth;
drawContour(ctx, landmarks.getJawOutline());
drawContour(ctx, landmarks.getLeftEyeBrow());
drawContour(ctx, landmarks.getRightEyeBrow());
drawContour(ctx, landmarks.getNose());
drawContour(ctx, landmarks.getLeftEye(), true);
drawContour(ctx, landmarks.getRightEye(), true);
drawContour(ctx, landmarks.getMouth(), true);
return;
}
// 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); });
});
}
//# 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
import * as tf from '@tensorflow/tfjs-core'; import * as tf from '@tensorflow/tfjs-core';
import { FaceDetection } from './FaceDetection'; import { Rect, TNetInput } from 'tfjs-image-recognition-base';
import { Rect } from './Rect'; import { FaceDetection } from '../classes/FaceDetection';
import { TNetInput } from './types';
/** /**
* 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.
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import * as tf from '@tensorflow/tfjs-core';
var tslib_1 = require("tslib"); import { toNetInput } from 'tfjs-image-recognition-base';
var tf = require("@tensorflow/tfjs-core"); import { FaceDetection } from '../classes/FaceDetection';
var FaceDetection_1 = require("./FaceDetection");
var toNetInput_1 = require("./toNetInput");
/** /**
* 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.
...@@ -14,12 +12,12 @@ var toNetInput_1 = require("./toNetInput"); ...@@ -14,12 +12,12 @@ var toNetInput_1 = require("./toNetInput");
* @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.
*/ */
function extractFaceTensors(input, detections) { export function extractFaceTensors(input, detections) {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var netInput; var netInput;
return tslib_1.__generator(this, function (_a) { return tslib_1.__generator(this, function (_a) {
switch (_a.label) { switch (_a.label) {
case 0: return [4 /*yield*/, toNetInput_1.toNetInput(input, true)]; case 0: return [4 /*yield*/, toNetInput(input, true)];
case 1: case 1:
netInput = _a.sent(); netInput = _a.sent();
if (netInput.batchSize > 1) { if (netInput.batchSize > 1) {
...@@ -31,13 +29,13 @@ function extractFaceTensors(input, detections) { ...@@ -31,13 +29,13 @@ function extractFaceTensors(input, detections) {
return [2 /*return*/, tf.tidy(function () { return [2 /*return*/, tf.tidy(function () {
var imgTensor = netInput.inputs[0].expandDims().toFloat(); var imgTensor = netInput.inputs[0].expandDims().toFloat();
var _a = imgTensor.shape.slice(1), imgHeight = _a[0], imgWidth = _a[1], numChannels = _a[2]; var _a = imgTensor.shape.slice(1), imgHeight = _a[0], imgWidth = _a[1], numChannels = _a[2];
var boxes = detections.map(function (det) { return det instanceof FaceDetection_1.FaceDetection var boxes = detections.map(function (det) { return det instanceof FaceDetection
? det.forSize(imgWidth, imgHeight).getBox() ? det.forSize(imgWidth, imgHeight).getBox()
: det; }) : det; })
.map(function (box) { return box.clipAtImageBorders(imgWidth, imgHeight); }); .map(function (box) { return box.clipAtImageBorders(imgWidth, imgHeight); });
var faceTensors = boxes.map(function (_a) { var faceTensors = 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;
return tf.slice(imgTensor, [0, y, x, 0], [1, height, width, numChannels]); return tf.slice4d(imgTensor, [0, y, x, 0], [1, height, width, numChannels]);
}); });
if (netInput.isManaged) { if (netInput.isManaged) {
netInput.dispose(); netInput.dispose();
...@@ -48,5 +46,4 @@ function extractFaceTensors(input, detections) { ...@@ -48,5 +46,4 @@ function extractFaceTensors(input, detections) {
}); });
}); });
} }
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/dom/extractFaceTensors.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAmB,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,6BACJ,KAAgB,EAChB,UAAuC;;;;;wBAGtB,qBAAM,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,EAAA;;oBAAxC,QAAQ,GAAG,SAA6B;oBAE9C,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC1B,IAAI,QAAQ,CAAC,SAAS,EAAE;4BACtB,QAAQ,CAAC,OAAO,EAAE,CAAA;yBACnB;wBACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;qBACpE;oBAED,sBAAO,EAAE,CAAC,IAAI,CAAC;4BACb,IAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAiB,CAAA;4BAEpE,IAAA,6BAA6D,EAA5D,iBAAS,EAAE,gBAAQ,EAAE,mBAAW,CAA4B;4BAEnE,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,aAAa;gCACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE;gCAC3C,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;iCACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAA;4BAE1D,IAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;oCAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;gCAClD,OAAA,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;4BAApE,CAAoE,CACrE,CAAA;4BAED,IAAI,QAAQ,CAAC,SAAS,EAAE;gCACtB,QAAQ,CAAC,OAAO,EAAE,CAAA;6BACnB;4BACD,OAAO,WAAW,CAAA;wBACpB,CAAC,CAAC,EAAA;;;;CACH"}
\ No newline at end of file
import { FaceDetection } from './FaceDetection'; import { Rect, TNetInput } from 'tfjs-image-recognition-base';
import { Rect } from './Rect'; import { FaceDetection } from '../classes/FaceDetection';
import { TNetInput } from './types';
/** /**
* Extracts the image regions containing the detected faces. * Extracts the image regions containing the detected faces.
* *
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import { createCanvas, getContext2dOrThrow, imageTensorToCanvas, toNetInput, } from 'tfjs-image-recognition-base';
var tslib_1 = require("tslib"); import { FaceDetection } from '../classes/FaceDetection';
var FaceDetection_1 = require("./FaceDetection");
var toNetInput_1 = require("./toNetInput");
var utils_1 = require("./utils");
/** /**
* Extracts the image regions containing the detected faces. * Extracts the image regions containing the detected faces.
* *
...@@ -11,7 +8,7 @@ var utils_1 = require("./utils"); ...@@ -11,7 +8,7 @@ var utils_1 = require("./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.
*/ */
function extractFaces(input, detections) { export function extractFaces(input, detections) {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var canvas, netInput, ctx, boxes; var canvas, netInput, ctx, boxes;
return tslib_1.__generator(this, function (_a) { return tslib_1.__generator(this, function (_a) {
...@@ -19,7 +16,7 @@ function extractFaces(input, detections) { ...@@ -19,7 +16,7 @@ function extractFaces(input, detections) {
case 0: case 0:
canvas = input; canvas = input;
if (!!(input instanceof HTMLCanvasElement)) return [3 /*break*/, 3]; if (!!(input instanceof HTMLCanvasElement)) return [3 /*break*/, 3];
return [4 /*yield*/, toNetInput_1.toNetInput(input, true)]; return [4 /*yield*/, toNetInput(input, true)];
case 1: case 1:
netInput = _a.sent(); netInput = _a.sent();
if (netInput.batchSize > 1) { if (netInput.batchSize > 1) {
...@@ -28,7 +25,7 @@ function extractFaces(input, detections) { ...@@ -28,7 +25,7 @@ function extractFaces(input, detections) {
} }
throw new Error('extractFaces - batchSize > 1 not supported'); throw new Error('extractFaces - batchSize > 1 not supported');
} }
return [4 /*yield*/, utils_1.imageTensorToCanvas(netInput.inputs[0])]; return [4 /*yield*/, imageTensorToCanvas(netInput.inputs[0])];
case 2: case 2:
canvas = _a.sent(); canvas = _a.sent();
if (netInput.isManaged) { if (netInput.isManaged) {
...@@ -36,15 +33,15 @@ function extractFaces(input, detections) { ...@@ -36,15 +33,15 @@ function extractFaces(input, detections) {
} }
_a.label = 3; _a.label = 3;
case 3: case 3:
ctx = utils_1.getContext2dOrThrow(canvas); ctx = getContext2dOrThrow(canvas);
boxes = detections.map(function (det) { return det instanceof FaceDetection_1.FaceDetection boxes = detections.map(function (det) { return det instanceof FaceDetection
? det.forSize(canvas.width, canvas.height).getBox().floor() ? det.forSize(canvas.width, canvas.height).getBox().floor()
: det; }) : det; })
.map(function (box) { return box.clipAtImageBorders(canvas.width, canvas.height); }); .map(function (box) { return box.clipAtImageBorders(canvas.width, canvas.height); });
return [2 /*return*/, boxes.map(function (_a) { return [2 /*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 = utils_1.createCanvas({ width: width, height: height }); var faceImg = createCanvas({ width: width, height: height });
utils_1.getContext2dOrThrow(faceImg) getContext2dOrThrow(faceImg)
.putImageData(ctx.getImageData(x, y, width, height), 0, 0); .putImageData(ctx.getImageData(x, y, width, height), 0, 0);
return faceImg; return faceImg;
})]; })];
...@@ -52,5 +49,4 @@ function extractFaces(input, detections) { ...@@ -52,5 +49,4 @@ function extractFaces(input, detections) {
}); });
}); });
} }
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/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,EAAE,IAAI,CAAC,EAAA;;oBAAxC,QAAQ,GAAG,SAA6B;oBAE9C,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC1B,IAAI,QAAQ,CAAC,SAAS,EAAE;4BACtB,QAAQ,CAAC,OAAO,EAAE,CAAA;yBACnB;wBACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;qBAC9D;oBAEQ,qBAAM,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAA;;oBAAtD,MAAM,GAAG,SAA6C,CAAA;oBAEtD,IAAI,QAAQ,CAAC,SAAS,EAAE;wBACtB,QAAQ,CAAC,OAAO,EAAE,CAAA;qBACnB;;;oBAGG,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;oBAEjC,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
export * from './drawContour';
export * from './drawLandmarks';
export * from './extractFaces';
export * from './extractFaceTensors';
export * from './types';
export * from './drawContour';
export * from './drawLandmarks';
export * from './extractFaces';
export * from './extractFaceTensors';
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dom/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA"}
\ No newline at end of file
export declare type DrawLandmarksOptions = {
lineWidth?: number;
color?: string;
drawLines?: boolean;
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map //# sourceMappingURL=types.js.map
\ No newline at end of file
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dom/types.ts"],"names":[],"mappings":""}
\ No newline at end of file
import { FaceDetection } from '../FaceDetection';
import { FaceLandmarks } from '../FaceLandmarks';
import { DrawBoxOptions, DrawLandmarksOptions, DrawOptions, DrawTextOptions } from './types';
export declare function getDefaultDrawOptions(): DrawOptions;
export declare function drawBox(ctx: CanvasRenderingContext2D, x: number, y: number, w: number, h: number, options: DrawBoxOptions): void;
export declare function drawText(ctx: CanvasRenderingContext2D, x: number, y: number, text: string, options: DrawTextOptions): void;
export declare function drawDetection(canvasArg: string | HTMLCanvasElement, detection: FaceDetection | FaceDetection[], options?: DrawBoxOptions & DrawTextOptions & {
withScore: boolean;
}): void;
export declare function drawLandmarks(canvasArg: string | HTMLCanvasElement, faceLandmarks: FaceLandmarks | FaceLandmarks[], options?: DrawLandmarksOptions & {
drawLines: boolean;
}): void;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var faceLandmarkNet_1 = require("../faceLandmarkNet");
var utils_1 = require("../utils");
function getDefaultDrawOptions() {
return {
color: 'blue',
lineWidth: 2,
fontSize: 20,
fontStyle: 'Georgia'
};
}
exports.getDefaultDrawOptions = getDefaultDrawOptions;
function drawBox(ctx, x, y, w, h, options) {
var drawOptions = Object.assign(getDefaultDrawOptions(), (options || {}));
ctx.strokeStyle = drawOptions.color;
ctx.lineWidth = drawOptions.lineWidth;
ctx.strokeRect(x, y, w, h);
}
exports.drawBox = drawBox;
function drawText(ctx, x, y, text, options) {
var drawOptions = Object.assign(getDefaultDrawOptions(), (options || {}));
var padText = 2 + drawOptions.lineWidth;
ctx.fillStyle = drawOptions.color;
ctx.font = drawOptions.fontSize + "px " + drawOptions.fontStyle;
ctx.fillText(text, x + padText, y + padText + (drawOptions.fontSize * 0.6));
}
exports.drawText = drawText;
function drawDetection(canvasArg, detection, options) {
var canvas = utils_1.resolveInput(canvasArg);
if (!(canvas instanceof HTMLCanvasElement)) {
throw new Error('drawBox - expected canvas to be of type: HTMLCanvasElement');
}
var detectionArray = Array.isArray(detection)
? detection
: [detection];
detectionArray.forEach(function (det) {
var _a = det.getBox(), x = _a.x, y = _a.y, width = _a.width, height = _a.height;
var drawOptions = Object.assign(getDefaultDrawOptions(), (options || {}));
var withScore = Object.assign({ withScore: true }, (options || {})).withScore;
var ctx = utils_1.getContext2dOrThrow(canvas);
drawBox(ctx, x, y, width, height, drawOptions);
if (withScore) {
drawText(ctx, x, y, "" + utils_1.round(det.getScore()), drawOptions);
}
});
}
exports.drawDetection = drawDetection;
function drawContour(ctx, points, isClosed) {
if (isClosed === void 0) { isClosed = false; }
ctx.beginPath();
points.slice(1).forEach(function (_a, prevIdx) {
var x = _a.x, y = _a.y;
var from = points[prevIdx];
ctx.moveTo(from.x, from.y);
ctx.lineTo(x, y);
});
if (isClosed) {
var from = points[points.length - 1];
var to = points[0];
if (!from || !to) {
return;
}
ctx.moveTo(from.x, from.y);
ctx.lineTo(to.x, to.y);
}
ctx.stroke();
}
function drawLandmarks(canvasArg, faceLandmarks, options) {
var canvas = utils_1.resolveInput(canvasArg);
if (!(canvas instanceof HTMLCanvasElement)) {
throw new Error('drawLandmarks - expected canvas to be of type: HTMLCanvasElement');
}
var drawOptions = Object.assign(getDefaultDrawOptions(), (options || {}));
var drawLines = Object.assign({ drawLines: false }, (options || {})).drawLines;
var ctx = utils_1.getContext2dOrThrow(canvas);
var lineWidth = drawOptions.lineWidth, color = drawOptions.color;
var faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];
faceLandmarksArray.forEach(function (landmarks) {
if (drawLines && landmarks instanceof faceLandmarkNet_1.FaceLandmarks68) {
ctx.strokeStyle = color;
ctx.lineWidth = lineWidth;
drawContour(ctx, landmarks.getJawOutline());
drawContour(ctx, landmarks.getLeftEyeBrow());
drawContour(ctx, landmarks.getRightEyeBrow());
drawContour(ctx, landmarks.getNose());
drawContour(ctx, landmarks.getLeftEye(), true);
drawContour(ctx, landmarks.getRightEye(), true);
drawContour(ctx, landmarks.getMouth(), true);
return;
}
// 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); });
});
}
exports.drawLandmarks = drawLandmarks;
//# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drawing/index.ts"],"names":[],"mappings":";;AACA,sDAAqD;AAGrD,kCAAoE;AAGpE;IACE,OAAO;QACL,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,SAAS;KACrB,CAAA;AACH,CAAC;AAPD,sDAOC;AAED,iBACE,GAA6B,EAC7B,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,OAAuB;IAEvB,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAC/B,qBAAqB,EAAE,EACvB,CAAC,OAAO,IAAI,EAAE,CAAC,CAChB,CAAA;IAED,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAA;IACnC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAA;IACrC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC5B,CAAC;AAhBD,0BAgBC;AAED,kBACE,GAA6B,EAC7B,CAAS,EACT,CAAS,EACT,IAAY,EACZ,OAAwB;IAExB,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAC/B,qBAAqB,EAAE,EACvB,CAAC,OAAO,IAAI,EAAE,CAAC,CAChB,CAAA;IAED,IAAM,OAAO,GAAG,CAAC,GAAG,WAAW,CAAC,SAAS,CAAA;IAEzC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,KAAK,CAAA;IACjC,GAAG,CAAC,IAAI,GAAM,WAAW,CAAC,QAAQ,WAAM,WAAW,CAAC,SAAW,CAAA;IAC/D,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,WAAW,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAA;AAC7E,CAAC;AAjBD,4BAiBC;AAED,uBACE,SAAqC,EACrC,SAA0C,EAC1C,OAAmE;IAEnE,IAAM,MAAM,GAAG,oBAAY,CAAC,SAAS,CAAC,CAAA;IACtC,IAAI,CAAC,CAAC,MAAM,YAAY,iBAAiB,CAAC,EAAE;QAC1C,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;KAC9E;IAED,IAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAEf,cAAc,CAAC,OAAO,CAAC,UAAC,GAAG;QACnB,IAAA,iBAKU,EAJd,QAAC,EACD,QAAC,EACD,gBAAK,EACL,kBAAM,CACQ;QAEhB,IAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAC/B,qBAAqB,EAAE,EACvB,CAAC,OAAO,IAAI,EAAE,CAAC,CAChB,CAAA;QAEO,IAAA,yEAAS,CAAwD;QAEzE,IAAM,GAAG,GAAG,2BAAmB,CAAC,MAAM,CAAC,CAAA;QACvC,OAAO,CACL,GAAG,EACH,CAAC,EACD,CAAC,EACD,KAAK,EACL,MAAM,EACN,WAAW,CACZ,CAAA;QACD,IAAI,SAAS,EAAE;YACb,QAAQ,CACN,GAAG,EACH,CAAC,EACD,CAAC,EACD,KAAG,aAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAG,EAC1B,WAAW,CACZ,CAAA;SACF;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAhDD,sCAgDC;AAED,qBACE,GAA6B,EAC7B,MAAe,EACf,QAAyB;IAAzB,yBAAA,EAAA,gBAAyB;IAEzB,GAAG,CAAC,SAAS,EAAE,CAAA;IAEf,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAC,EAAQ,EAAE,OAAO;YAAf,QAAC,EAAE,QAAC;QAC7B,IAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,IAAI,QAAQ,EAAE;QACZ,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtC,IAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE;YAChB,OAAM;SACP;QAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;KACvB;IAED,GAAG,CAAC,MAAM,EAAE,CAAA;AACd,CAAC;AAED,uBACE,SAAqC,EACrC,aAA8C,EAC9C,OAAuD;IAEvD,IAAM,MAAM,GAAG,oBAAY,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,EAAE,EACvB,CAAC,OAAO,IAAI,EAAE,CAAC,CAChB,CAAA;IAEO,IAAA,0EAAS,CAAyD;IAE1E,IAAM,GAAG,GAAG,2BAAmB,CAAC,MAAM,CAAC,CAAA;IAC/B,IAAA,iCAAS,EAAE,yBAAK,CAAgB;IAExC,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,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;AAzCD,sCAyCC"}
\ No newline at end of file
export declare type DrawBoxOptions = {
lineWidth?: number;
color?: string;
};
export declare type DrawTextOptions = {
lineWidth?: number;
fontSize?: number;
fontStyle?: string;
color?: string;
};
export declare type DrawLandmarksOptions = {
lineWidth?: number;
color?: string;
};
export declare type DrawOptions = {
lineWidth: number;
fontSize: number;
fontStyle: string;
color: string;
};
"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/drawing/types.ts"],"names":[],"mappings":""}
\ No newline at end of file
"use strict"; export function euclideanDistance(arr1, arr2) {
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);
...@@ -9,5 +7,4 @@ function euclideanDistance(arr1, arr2) { ...@@ -9,5 +7,4 @@ 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"} {"version":3,"file":"euclideanDistance.js","sourceRoot":"","sources":["../src/euclideanDistance.ts"],"names":[],"mappings":"AAAA,MAAM,4BAA4B,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"}
\ No newline at end of file \ No newline at end of file
{"version":3,"file":"extractFaceTensors.js","sourceRoot":"","sources":["../src/extractFaceTensors.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAE5C,iDAAgD;AAEhD,2CAA0C;AAG1C;;;;;;;;;GASG;AACH,4BACE,KAAgB,EAChB,UAAuC;;;;;wBAGtB,qBAAM,uBAAU,CAAC,KAAK,EAAE,IAAI,CAAC,EAAA;;oBAAxC,QAAQ,GAAG,SAA6B;oBAE9C,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC1B,IAAI,QAAQ,CAAC,SAAS,EAAE;4BACtB,QAAQ,CAAC,OAAO,EAAE,CAAA;yBACnB;wBACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;qBACpE;oBAED,sBAAO,EAAE,CAAC,IAAI,CAAC;4BACb,IAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,OAAO,EAAiB,CAAA;4BAEpE,IAAA,6BAA6D,EAA5D,iBAAS,EAAE,gBAAQ,EAAE,mBAAW,CAA4B;4BAEnE,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,6BAAa;gCACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE;gCAC3C,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;iCACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAA;4BAE1D,IAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;oCAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;gCAClD,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;4BAAlE,CAAkE,CACnE,CAAA;4BAED,IAAI,QAAQ,CAAC,SAAS,EAAE;gCACtB,QAAQ,CAAC,OAAO,EAAE,CAAA;6BACnB;4BACD,OAAO,WAAW,CAAA;wBACpB,CAAC,CAAC,EAAA;;;;CACH;AAnCD,gDAmCC"}
\ No newline at end of file
{"version":3,"file":"extractFaces.js","sourceRoot":"","sources":["../src/extractFaces.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAEhD,2CAA0C;AAE1C,iCAAiF;AAEjF;;;;;;GAMG;AACH,sBACE,KAAgB,EAChB,UAAuC;;;;;;oBAGnC,MAAM,GAAG,KAA0B,CAAA;yBAEnC,CAAC,CAAC,KAAK,YAAY,iBAAiB,CAAC,EAArC,wBAAqC;oBACtB,qBAAM,uBAAU,CAAC,KAAK,EAAE,IAAI,CAAC,EAAA;;oBAAxC,QAAQ,GAAG,SAA6B;oBAE9C,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC1B,IAAI,QAAQ,CAAC,SAAS,EAAE;4BACtB,QAAQ,CAAC,OAAO,EAAE,CAAA;yBACnB;wBACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;qBAC9D;oBAEQ,qBAAM,2BAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAA;;oBAAtD,MAAM,GAAG,SAA6C,CAAA;oBAEtD,IAAI,QAAQ,CAAC,SAAS,EAAE;wBACtB,QAAQ,CAAC,OAAO,EAAE,CAAA;qBACnB;;;oBAGG,GAAG,GAAG,2BAAmB,CAAC,MAAM,CAAC,CAAA;oBAEjC,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,oBAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;4BAC/C,2BAAmB,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;AAvCD,oCAuCC"}
\ No newline at end of file
import { Rect } from '../Rect';
import { Dimensions } from '../types';
export declare class FaceDetection {
private _score;
private _box;
private _imageWidth;
private _imageHeight;
constructor(score: number, relativeBox: Rect, imageDims: Dimensions);
getScore(): number;
getBox(): Rect;
getImageWidth(): number;
getImageHeight(): number;
getRelativeBox(): Rect;
forSize(width: number, height: number): FaceDetection;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Rect_1 = require("../Rect");
var FaceDetection = /** @class */ (function () {
function FaceDetection(score, relativeBox, imageDims) {
var width = imageDims.width, height = imageDims.height;
this._imageWidth = width;
this._imageHeight = height;
this._score = score;
this._box = new Rect_1.Rect(relativeBox.x * width, relativeBox.y * height, relativeBox.width * width, relativeBox.height * height);
}
FaceDetection.prototype.getScore = function () {
return this._score;
};
FaceDetection.prototype.getBox = function () {
return this._box;
};
FaceDetection.prototype.getImageWidth = function () {
return this._imageWidth;
};
FaceDetection.prototype.getImageHeight = function () {
return this._imageHeight;
};
FaceDetection.prototype.getRelativeBox = function () {
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) {
return new FaceDetection(this._score, this.getRelativeBox(), { width: width, height: height });
};
return FaceDetection;
}());
exports.FaceDetection = FaceDetection;
//# 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 tf from '@tensorflow/tfjs-core'; import * as tf from '@tensorflow/tfjs-core';
import { NeuralNetwork } from '../commons/NeuralNetwork'; import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base';
import { FaceDetection } from '../FaceDetection'; import { FaceDetection } from '../classes/FaceDetection';
import { NetInput } from '../NetInput';
import { TNetInput } from '../types';
import { NetParams } from './types'; import { NetParams } from './types';
export declare class FaceDetectionNet extends NeuralNetwork<NetParams> { export declare class FaceDetectionNet extends NeuralNetwork<NetParams> {
constructor(); constructor();
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import * as tf from '@tensorflow/tfjs-core';
var tslib_1 = require("tslib"); import { NeuralNetwork, Rect, toNetInput } from 'tfjs-image-recognition-base';
var tf = require("@tensorflow/tfjs-core"); import { FaceDetection } from '../classes/FaceDetection';
var NeuralNetwork_1 = require("../commons/NeuralNetwork"); import { extractParams } from './extractParams';
var FaceDetection_1 = require("../FaceDetection"); import { loadQuantizedParams } from './loadQuantizedParams';
var Rect_1 = require("../Rect"); import { mobileNetV1 } from './mobileNetV1';
var toNetInput_1 = require("../toNetInput"); import { nonMaxSuppression } from './nonMaxSuppression';
var extractParams_1 = require("./extractParams"); import { outputLayer } from './outputLayer';
var loadQuantizedParams_1 = require("./loadQuantizedParams"); import { predictionLayer } from './predictionLayer';
var mobileNetV1_1 = require("./mobileNetV1");
var nonMaxSuppression_1 = require("./nonMaxSuppression");
var outputLayer_1 = require("./outputLayer");
var predictionLayer_1 = require("./predictionLayer");
var FaceDetectionNet = /** @class */ (function (_super) { var FaceDetectionNet = /** @class */ (function (_super) {
tslib_1.__extends(FaceDetectionNet, _super); tslib_1.__extends(FaceDetectionNet, _super);
function FaceDetectionNet() { function FaceDetectionNet() {
...@@ -25,9 +21,9 @@ var FaceDetectionNet = /** @class */ (function (_super) { ...@@ -25,9 +21,9 @@ var FaceDetectionNet = /** @class */ (function (_super) {
return tf.tidy(function () { return tf.tidy(function () {
var batchTensor = input.toBatchTensor(512, false); var batchTensor = input.toBatchTensor(512, false);
var x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)); var x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1));
var features = mobileNetV1_1.mobileNetV1(x, params.mobilenetv1); var features = mobileNetV1(x, params.mobilenetv1);
var _a = predictionLayer_1.predictionLayer(features.out, features.conv11, params.prediction_layer), boxPredictions = _a.boxPredictions, classPredictions = _a.classPredictions; var _a = predictionLayer(features.out, features.conv11, params.prediction_layer), boxPredictions = _a.boxPredictions, classPredictions = _a.classPredictions;
return outputLayer_1.outputLayer(boxPredictions, classPredictions, params.output_layer); return outputLayer(boxPredictions, classPredictions, params.output_layer);
}); });
}; };
FaceDetectionNet.prototype.forward = function (input) { FaceDetectionNet.prototype.forward = function (input) {
...@@ -37,7 +33,7 @@ var FaceDetectionNet = /** @class */ (function (_super) { ...@@ -37,7 +33,7 @@ var FaceDetectionNet = /** @class */ (function (_super) {
switch (_b.label) { switch (_b.label) {
case 0: case 0:
_a = this.forwardInput; _a = this.forwardInput;
return [4 /*yield*/, toNetInput_1.toNetInput(input, true)]; return [4 /*yield*/, toNetInput(input, true)];
case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])];
} }
}); });
...@@ -50,7 +46,7 @@ var FaceDetectionNet = /** @class */ (function (_super) { ...@@ -50,7 +46,7 @@ var FaceDetectionNet = /** @class */ (function (_super) {
var netInput, _a, _boxes, _scores, boxes, scores, i, scoresData, _b, _c, iouThreshold, indices, paddings, results; var netInput, _a, _boxes, _scores, boxes, scores, i, scoresData, _b, _c, iouThreshold, indices, paddings, results;
return tslib_1.__generator(this, function (_d) { return tslib_1.__generator(this, function (_d) {
switch (_d.label) { switch (_d.label) {
case 0: return [4 /*yield*/, toNetInput_1.toNetInput(input, true)]; case 0: return [4 /*yield*/, toNetInput(input, true)];
case 1: case 1:
netInput = _d.sent(); netInput = _d.sent();
_a = this.forwardInput(netInput), _boxes = _a.boxes, _scores = _a.scores; _a = this.forwardInput(netInput), _boxes = _a.boxes, _scores = _a.scores;
...@@ -65,7 +61,7 @@ var FaceDetectionNet = /** @class */ (function (_super) { ...@@ -65,7 +61,7 @@ var FaceDetectionNet = /** @class */ (function (_super) {
case 2: case 2:
scoresData = _c.apply(_b, [_d.sent()]); scoresData = _c.apply(_b, [_d.sent()]);
iouThreshold = 0.5; iouThreshold = 0.5;
indices = nonMaxSuppression_1.nonMaxSuppression(boxes, scoresData, maxResults, iouThreshold, minConfidence); indices = nonMaxSuppression(boxes, scoresData, maxResults, iouThreshold, minConfidence);
paddings = netInput.getRelativePaddings(0); paddings = netInput.getRelativePaddings(0);
results = indices results = indices
.map(function (idx) { .map(function (idx) {
...@@ -77,7 +73,7 @@ var FaceDetectionNet = /** @class */ (function (_super) { ...@@ -77,7 +73,7 @@ var FaceDetectionNet = /** @class */ (function (_super) {
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 * paddings.x; }), left = _b[0], right = _b[1]; ].map(function (val) { return val * paddings.x; }), left = _b[0], right = _b[1];
return new FaceDetection_1.FaceDetection(scoresData[idx], new Rect_1.Rect(left, top, right - left, bottom - top), { return new FaceDetection(scoresData[idx], new Rect(left, top, right - left, bottom - top), {
height: netInput.getInputHeight(0), height: netInput.getInputHeight(0),
width: netInput.getInputWidth(0) width: netInput.getInputWidth(0)
}); });
...@@ -90,12 +86,12 @@ var FaceDetectionNet = /** @class */ (function (_super) { ...@@ -90,12 +86,12 @@ var FaceDetectionNet = /** @class */ (function (_super) {
}); });
}; };
FaceDetectionNet.prototype.loadQuantizedParams = function (uri) { FaceDetectionNet.prototype.loadQuantizedParams = function (uri) {
return loadQuantizedParams_1.loadQuantizedParams(uri); return loadQuantizedParams(uri);
}; };
FaceDetectionNet.prototype.extractParams = function (weights) { FaceDetectionNet.prototype.extractParams = function (weights) {
return extractParams_1.extractParams(weights); return extractParams(weights);
}; };
return FaceDetectionNet; return FaceDetectionNet;
}(NeuralNetwork_1.NeuralNetwork)); }(NeuralNetwork));
exports.FaceDetectionNet = FaceDetectionNet; export { 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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"} {"version":3,"file":"FaceDetectionNet.js","sourceRoot":"","sources":["../../src/faceDetectionNet/FaceDetectionNet.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAY,aAAa,EAAE,IAAI,EAAa,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEnG,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;IAAsC,4CAAwB;IAE5D;eACE,kBAAM,kBAAkB,CAAC;IAC3B,CAAC;IAEM,uCAAY,GAAnB,UAAoB,KAAe;QAEzB,IAAA,oBAAM,CAAS;QAEvB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;SAClE;QAED,OAAO,EAAE,CAAC,IAAI,CAAC;YACb,IAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YAEnD,IAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAgB,CAAA;YACnG,IAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;YAE7C,IAAA,4EAGqE,EAFzE,kCAAc,EACd,sCAAgB,CACyD;YAE3E,OAAO,WAAW,CAAC,cAAc,EAAE,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAC3E,CAAC,CAAC,CAAA;IACJ,CAAC;IAEY,kCAAO,GAApB,UAAqB,KAAgB;;;;;;wBAC5B,KAAA,IAAI,CAAC,YAAY,CAAA;wBAAC,qBAAM,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,EAAA;4BAAtD,sBAAO,SAAA,IAAI,GAAc,SAA6B,EAAC,EAAA;;;;KACxD;IAEY,sCAAW,GAAxB,UACE,KAAgB,EAChB,aAA2B,EAC3B,UAAwB;QADxB,8BAAA,EAAA,mBAA2B;QAC3B,2BAAA,EAAA,gBAAwB;;;;;4BAGP,qBAAM,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,EAAA;;wBAAxC,QAAQ,GAAG,SAA6B;wBAExC,KAGF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAFtB,MAAM,WAAA,EACL,OAAO,YAAA,CACc;wBAIzB,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;wBACjB,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;wBACzB,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACtC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;4BACnB,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;yBACrB;wBAGkB,KAAA,CAAA,KAAA,KAAK,CAAA,CAAC,IAAI,CAAA;wBAAC,qBAAM,MAAM,CAAC,IAAI,EAAE,EAAA;;wBAA3C,UAAU,GAAG,cAAW,SAAmB,EAAC;wBAE5C,YAAY,GAAG,GAAG,CAAA;wBAClB,OAAO,GAAG,iBAAiB,CAC/B,KAAK,EACL,UAAU,EACV,UAAU,EACV,YAAY,EACZ,aAAa,CACd,CAAA;wBAEK,QAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAA;wBAE1C,OAAO,GAAG,OAAO;6BACpB,GAAG,CAAC,UAAA,GAAG;4BACA,IAAA;;;8EAGwB,EAHvB,WAAG,EAAE,cAAM,CAGY;4BACxB,IAAA;;;8EAGwB,EAHvB,YAAI,EAAE,aAAK,CAGY;4BAC9B,OAAO,IAAI,aAAa,CACtB,UAAU,CAAC,GAAG,CAAC,EACf,IAAI,IAAI,CACN,IAAI,EACJ,GAAG,EACH,KAAK,GAAG,IAAI,EACZ,MAAM,GAAG,GAAG,CACb,EACD;gCACE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;gCAClC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;6BACjC,CACF,CAAA;wBACH,CAAC,CAAC,CAAA;wBAEJ,KAAK,CAAC,OAAO,EAAE,CAAA;wBACf,MAAM,CAAC,OAAO,EAAE,CAAA;wBAEhB,sBAAO,OAAO,EAAA;;;;KACf;IAES,8CAAmB,GAA7B,UAA8B,GAAuB;QACnD,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;IAES,wCAAa,GAAvB,UAAwB,OAAqB;QAC3C,OAAO,aAAa,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;IACH,uBAAC;AAAD,CAAC,AA3GD,CAAsC,aAAa,GA2GlD"}
\ No newline at end of file \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); import { convLayer } from 'tfjs-tiny-yolov2';
var tf = require("@tensorflow/tfjs-core"); export function boxPredictionLayer(x, params) {
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_1.convLayer(x, params.box_encoding_predictor), [batchSize, -1, 1, 4]); var boxPredictionEncoding = tf.reshape(convLayer(x, params.box_encoding_predictor), [batchSize, -1, 1, 4]);
var classPrediction = tf.reshape(convLayer_1.convLayer(x, params.class_predictor), [batchSize, -1, 3]); var classPrediction = tf.reshape(convLayer(x, params.class_predictor), [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,sBAAsB,CAAC,EAC3C,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,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"} {"version":3,"file":"boxPredictionLayer.js","sourceRoot":"","sources":["../../src/faceDetectionNet/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 \ No newline at end of file
import { ParamMapping } from '../commons/types'; import { ParamMapping } from 'tfjs-image-recognition-base';
import { NetParams } from './types'; import { NetParams } from './types';
export declare function extractParams(weights: Float32Array): { export declare function extractParams(weights: Float32Array): {
params: NetParams; params: NetParams;
......
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); import { extractWeightsFactory } from 'tfjs-image-recognition-base';
var tf = require("@tensorflow/tfjs-core");
var extractWeightsFactory_1 = require("../commons/extractWeightsFactory");
function extractorsFactory(extractWeights, paramMappings) { function extractorsFactory(extractWeights, paramMappings) {
function extractDepthwiseConvParams(numChannels, mappedPrefix) { function extractDepthwiseConvParams(numChannels, mappedPrefix) {
var filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]); var filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);
...@@ -135,9 +133,9 @@ function extractorsFactory(extractWeights, paramMappings) { ...@@ -135,9 +133,9 @@ function extractorsFactory(extractWeights, paramMappings) {
extractPredictionLayerParams: extractPredictionLayerParams extractPredictionLayerParams: extractPredictionLayerParams
}; };
} }
function extractParams(weights) { export function extractParams(weights) {
var paramMappings = []; var paramMappings = [];
var _a = extractWeightsFactory_1.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; var _a = extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights;
var _b = extractorsFactory(extractWeights, paramMappings), extractMobilenetV1Params = _b.extractMobilenetV1Params, extractPredictionLayerParams = _b.extractPredictionLayerParams; var _b = extractorsFactory(extractWeights, paramMappings), extractMobilenetV1Params = _b.extractMobilenetV1Params, extractPredictionLayerParams = _b.extractPredictionLayerParams;
var mobilenetv1 = extractMobilenetV1Params(); var mobilenetv1 = extractMobilenetV1Params();
var prediction_layer = extractPredictionLayerParams(); var prediction_layer = extractPredictionLayerParams();
...@@ -158,5 +156,4 @@ function extractParams(weights) { ...@@ -158,5 +156,4 @@ function extractParams(weights) {
paramMappings: paramMappings paramMappings: paramMappings
}; };
} }
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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"} {"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../src/faceDetectionNet/extractParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
"use strict"; import { FaceDetectionNet } from './FaceDetectionNet';
Object.defineProperty(exports, "__esModule", { value: true }); export * from './FaceDetectionNet';
var tslib_1 = require("tslib"); export function createFaceDetectionNet(weights) {
var FaceDetectionNet_1 = require("./FaceDetectionNet"); var net = new FaceDetectionNet();
tslib_1.__exportStar(require("./FaceDetectionNet"), exports);
function createFaceDetectionNet(weights) {
var net = new FaceDetectionNet_1.FaceDetectionNet();
net.extractWeights(weights); net.extractWeights(weights);
return net; return net;
} }
exports.createFaceDetectionNet = createFaceDetectionNet; export function faceDetectionNet(weights) {
function faceDetectionNet(weights) {
console.warn('faceDetectionNet(weights: Float32Array) will be deprecated in future, use createFaceDetectionNet instead'); console.warn('faceDetectionNet(weights: Float32Array) will be deprecated in future, use createFaceDetectionNet instead');
return createFaceDetectionNet(weights); return createFaceDetectionNet(weights);
} }
exports.faceDetectionNet = faceDetectionNet;
//# sourceMappingURL=index.js.map //# 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,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;AAED,0BAAiC,OAAqB;IACpD,OAAO,CAAC,IAAI,CAAC,0GAA0G,CAAC,CAAA;IACxH,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAA;AACxC,CAAC;AAHD,4CAGC"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/faceDetectionNet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,cAAc,oBAAoB,CAAC;AAEnC,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;AAED,MAAM,2BAA2B,OAAqB;IACpD,OAAO,CAAC,IAAI,CAAC,0GAA0G,CAAC,CAAA;IACxH,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAA;AACxC,CAAC"}
\ No newline at end of file \ No newline at end of file
import { ParamMapping } from '../commons/types'; import { ParamMapping } from 'tfjs-image-recognition-base';
import { NetParams } from './types'; import { NetParams } from './types';
export declare function loadQuantizedParams(uri: string | undefined): Promise<{ export declare function loadQuantizedParams(uri: string | undefined): Promise<{
params: NetParams; params: NetParams;
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import { disposeUnusedWeightTensors, extractWeightEntryFactory, isTensor3D, loadWeightMap, } from 'tfjs-image-recognition-base';
var tslib_1 = require("tslib");
var disposeUnusedWeightTensors_1 = require("../commons/disposeUnusedWeightTensors");
var extractWeightEntryFactory_1 = require("../commons/extractWeightEntryFactory");
var isTensor_1 = require("../commons/isTensor");
var loadWeightMap_1 = require("../commons/loadWeightMap");
var DEFAULT_MODEL_NAME = 'ssd_mobilenetv1_model'; var DEFAULT_MODEL_NAME = 'ssd_mobilenetv1_model';
function extractorsFactory(weightMap, paramMappings) { function extractorsFactory(weightMap, paramMappings) {
var extractWeightEntry = extractWeightEntryFactory_1.extractWeightEntryFactory(weightMap, paramMappings); var extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);
function extractPointwiseConvParams(prefix, idx, mappedPrefix) { function extractPointwiseConvParams(prefix, idx, mappedPrefix) {
var filters = extractWeightEntry(prefix + "/Conv2d_" + idx + "_pointwise/weights", 4, mappedPrefix + "/filters"); 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"); var batch_norm_offset = extractWeightEntry(prefix + "/Conv2d_" + idx + "_pointwise/convolution_bn_offset", 1, mappedPrefix + "/batch_norm_offset");
...@@ -85,19 +80,19 @@ function extractorsFactory(weightMap, paramMappings) { ...@@ -85,19 +80,19 @@ function extractorsFactory(weightMap, paramMappings) {
extractPredictionLayerParams: extractPredictionLayerParams extractPredictionLayerParams: extractPredictionLayerParams
}; };
} }
function loadQuantizedParams(uri) { export 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, paramMappings, _a, extractMobilenetV1Params, extractPredictionLayerParams, extra_dim, params; var weightMap, paramMappings, _a, extractMobilenetV1Params, extractPredictionLayerParams, extra_dim, params;
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_1.loadWeightMap(uri, DEFAULT_MODEL_NAME)]; case 0: return [4 /*yield*/, loadWeightMap(uri, DEFAULT_MODEL_NAME)];
case 1: case 1:
weightMap = _b.sent(); weightMap = _b.sent();
paramMappings = []; paramMappings = [];
_a = extractorsFactory(weightMap, paramMappings), extractMobilenetV1Params = _a.extractMobilenetV1Params, extractPredictionLayerParams = _a.extractPredictionLayerParams; _a = extractorsFactory(weightMap, paramMappings), extractMobilenetV1Params = _a.extractMobilenetV1Params, extractPredictionLayerParams = _a.extractPredictionLayerParams;
extra_dim = weightMap['Output/extra_dim']; extra_dim = weightMap['Output/extra_dim'];
paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' }); paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });
if (!isTensor_1.isTensor3D(extra_dim)) { if (!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);
} }
params = { params = {
...@@ -107,11 +102,10 @@ function loadQuantizedParams(uri) { ...@@ -107,11 +102,10 @@ function loadQuantizedParams(uri) {
extra_dim: extra_dim extra_dim: extra_dim
} }
}; };
disposeUnusedWeightTensors_1.disposeUnusedWeightTensors(weightMap, paramMappings); disposeUnusedWeightTensors(weightMap, paramMappings);
return [2 /*return*/, { params: params, paramMappings: paramMappings }]; return [2 /*return*/, { params: params, paramMappings: paramMappings }];
} }
}); });
}); });
} }
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":";;;AAEA,oFAAmF;AACnF,kFAAiF;AACjF,gDAAiD;AACjD,0DAAyD;AAIzD,IAAM,kBAAkB,GAAG,uBAAuB,CAAA;AAElD,2BAA2B,SAAc,EAAE,aAA6B;IAEtE,IAAM,kBAAkB,GAAG,qDAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE9E,oCAAoC,MAAc,EAAE,GAAW,EAAE,YAAoB;QAEnF,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,gBAAW,GAAG,uBAAoB,EAAE,CAAC,EAAK,YAAY,aAAU,CAAC,CAAA;QAC1H,IAAM,iBAAiB,GAAG,kBAAkB,CAAiB,MAAM,gBAAW,GAAG,qCAAkC,EAAE,CAAC,EAAK,YAAY,uBAAoB,CAAC,CAAA;QAE5J,OAAO,EAAE,OAAO,SAAA,EAAE,iBAAiB,mBAAA,EAAE,CAAA;IACvC,CAAC;IAED,+BAA+B,GAAW;QAExC,IAAM,YAAY,GAAG,sBAAoB,GAAK,CAAA;QAC9C,IAAM,mBAAmB,GAAG,wBAAsB,GAAG,eAAY,CAAA;QACjE,IAAM,yBAAyB,GAAM,YAAY,oBAAiB,CAAA;QAClE,IAAM,yBAAyB,GAAM,YAAY,oBAAiB,CAAA;QAElE,IAAM,OAAO,GAAG,kBAAkB,CAAiB,mBAAmB,uBAAoB,EAAE,CAAC,EAAK,yBAAyB,aAAU,CAAC,CAAA;QACtI,IAAM,gBAAgB,GAAG,kBAAkB,CAAiB,mBAAmB,qBAAkB,EAAE,CAAC,EAAK,yBAAyB,sBAAmB,CAAC,CAAA;QACtJ,IAAM,iBAAiB,GAAG,kBAAkB,CAAiB,mBAAmB,oBAAiB,EAAE,CAAC,EAAK,yBAAyB,uBAAoB,CAAC,CAAA;QACvJ,IAAM,eAAe,GAAG,kBAAkB,CAAiB,mBAAmB,2BAAwB,EAAE,CAAC,EAAK,yBAAyB,qBAAkB,CAAC,CAAA;QAC1J,IAAM,mBAAmB,GAAG,kBAAkB,CAAiB,mBAAmB,+BAA4B,EAAE,CAAC,EAAK,yBAAyB,yBAAsB,CAAC,CAAA;QAEtK,OAAO;YACL,cAAc,EAAE;gBACd,OAAO,SAAA;gBACP,gBAAgB,kBAAA;gBAChB,iBAAiB,mBAAA;gBACjB,eAAe,iBAAA;gBACf,mBAAmB,qBAAA;aACpB;YACD,cAAc,EAAE,0BAA0B,CAAC,aAAa,EAAE,GAAG,EAAE,yBAAyB,CAAC;SAC1F,CAAA;IACH,CAAC;IAED;QACE,OAAO;YACL,MAAM,EAAE,0BAA0B,CAAC,aAAa,EAAE,CAAC,EAAE,oBAAoB,CAAC;YAC1E,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;YAChC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;YAChC,OAAO,EAAE,qBAAqB,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,qBAAqB,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,qBAAqB,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,qBAAqB,CAAC,EAAE,CAAC;SACnC,CAAA;IACH,CAAC;IAED,2BAA2B,MAAc,EAAE,YAAoB;QAC7D,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,aAAU,EAAE,CAAC,EAAK,YAAY,aAAU,CAAC,CAAA;QAClG,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,YAAS,EAAE,CAAC,EAAK,YAAY,UAAO,CAAC,CAAA;QAE3F,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC;IAED,mCAAmC,GAAW;QAE5C,IAAM,sBAAsB,GAAG,iBAAiB,CAC9C,6BAA2B,GAAG,0BAAuB,EACrD,oCAAkC,GAAG,4BAAyB,CAC/D,CAAA;QACD,IAAM,eAAe,GAAG,iBAAiB,CACvC,6BAA2B,GAAG,oBAAiB,EAC/C,oCAAkC,GAAG,qBAAkB,CACxD,CAAA;QAED,OAAO,EAAE,sBAAsB,wBAAA,EAAE,eAAe,iBAAA,EAAE,CAAA;IACpD,CAAC;IAED;QACE,OAAO;YACL,MAAM,EAAE,0BAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,yBAAyB,CAAC;YAC9E,MAAM,EAAE,0BAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,yBAAyB,CAAC;YAC9E,MAAM,EAAE,0BAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,yBAAyB,CAAC;YAC9E,MAAM,EAAE,0BAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,yBAAyB,CAAC;YAC9E,MAAM,EAAE,0BAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,yBAAyB,CAAC;YAC9E,MAAM,EAAE,0BAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,yBAAyB,CAAC;YAC9E,MAAM,EAAE,0BAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,yBAAyB,CAAC;YAC9E,MAAM,EAAE,0BAA0B,CAAC,YAAY,EAAE,CAAC,EAAE,yBAAyB,CAAC;YAC9E,eAAe,EAAE,yBAAyB,CAAC,CAAC,CAAC;YAC7C,eAAe,EAAE,yBAAyB,CAAC,CAAC,CAAC;YAC7C,eAAe,EAAE,yBAAyB,CAAC,CAAC,CAAC;YAC7C,eAAe,EAAE,yBAAyB,CAAC,CAAC,CAAC;YAC7C,eAAe,EAAE,yBAAyB,CAAC,CAAC,CAAC;YAC7C,eAAe,EAAE,yBAAyB,CAAC,CAAC,CAAC;SAC9C,CAAA;IACH,CAAC;IAED,OAAO;QACL,wBAAwB,0BAAA;QACxB,4BAA4B,8BAAA;KAC7B,CAAA;AACH,CAAC;AAED,6BACE,GAAuB;;;;;wBAGL,qBAAM,6BAAa,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAA;;oBAAxD,SAAS,GAAG,SAA4C;oBACxD,aAAa,GAAmB,EAAE,CAAA;oBAElC,KAGF,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC,EAF7C,wBAAwB,8BAAA,EACxB,4BAA4B,kCAAA,CACiB;oBAEzC,SAAS,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAA;oBAC/C,aAAa,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC,CAAA;oBAE7F,IAAI,CAAC,qBAAU,CAAC,SAAS,CAAC,EAAE;wBAC1B,MAAM,IAAI,KAAK,CAAC,2EAAyE,SAAW,CAAC,CAAA;qBACtG;oBAEK,MAAM,GAAG;wBACb,WAAW,EAAE,wBAAwB,EAAE;wBACvC,gBAAgB,EAAE,4BAA4B,EAAE;wBAChD,YAAY,EAAE;4BACZ,SAAS,WAAA;yBACV;qBACF,CAAA;oBAED,uDAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;oBAEpD,sBAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,EAAA;;;;CACjC;AA9BD,kDA8BC"} {"version":3,"file":"loadQuantizedParams.js","sourceRoot":"","sources":["../../src/faceDetectionNet/loadQuantizedParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); import { pointwiseConvLayer } from './pointwiseConvLayer';
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 () {
...@@ -13,10 +11,10 @@ function depthwiseConvLayer(x, params, strides) { ...@@ -13,10 +11,10 @@ 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];
} }
function mobileNetV1(x, params) { export function mobileNetV1(x, params) {
return tf.tidy(function () { return tf.tidy(function () {
var conv11 = null; var conv11 = null;
var out = pointwiseConvLayer_1.pointwiseConvLayer(x, params.conv_0, [2, 2]); var out = pointwiseConvLayer(x, params.conv_0, [2, 2]);
var convPairParams = [ var convPairParams = [
params.conv_1, params.conv_1,
params.conv_2, params.conv_2,
...@@ -36,7 +34,7 @@ function mobileNetV1(x, params) { ...@@ -36,7 +34,7 @@ function mobileNetV1(x, params) {
var layerIdx = i + 1; var layerIdx = i + 1;
var depthwiseConvStrides = getStridesForLayerIdx(layerIdx); var depthwiseConvStrides = getStridesForLayerIdx(layerIdx);
out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides); out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);
out = pointwiseConvLayer_1.pointwiseConvLayer(out, param.pointwise_conv, [1, 1]); out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);
if (layerIdx === 11) { if (layerIdx === 11) {
conv11 = out; conv11 = out;
} }
...@@ -50,5 +48,4 @@ function mobileNetV1(x, params) { ...@@ -50,5 +48,4 @@ 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,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"} {"version":3,"file":"mobileNetV1.js","sourceRoot":"","sources":["../../src/faceDetectionNet/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 \ No newline at end of file
"use strict"; export function nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) {
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
...@@ -30,7 +28,6 @@ function nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, scoreThre ...@@ -30,7 +28,6 @@ function nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, scoreThre
}); });
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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"} {"version":3,"file":"nonMaxSuppression.js","sourceRoot":"","sources":["../../src/faceDetectionNet/nonMaxSuppression.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
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 = [
...@@ -30,7 +28,7 @@ function decodeBoxesLayer(x0, x1) { ...@@ -30,7 +28,7 @@ function decodeBoxesLayer(x0, x1) {
tf.add(add1_out, div1_out) tf.add(add1_out, div1_out)
]), [1, 0]); ]), [1, 0]);
} }
function outputLayer(boxPredictions, classPredictions, params) { export 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]));
...@@ -46,5 +44,4 @@ function outputLayer(boxPredictions, classPredictions, params) { ...@@ -46,5 +44,4 @@ 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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"} {"version":3,"file":"outputLayer.js","sourceRoot":"","sources":["../../src/faceDetectionNet/outputLayer.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); export function pointwiseConvLayer(x, params, strides) {
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"} {"version":3,"file":"pointwiseConvLayer.js","sourceRoot":"","sources":["../../src/faceDetectionNet/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 \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); import { boxPredictionLayer } from './boxPredictionLayer';
var tf = require("@tensorflow/tfjs-core"); import { pointwiseConvLayer } from './pointwiseConvLayer';
var boxPredictionLayer_1 = require("./boxPredictionLayer"); export function predictionLayer(x, conv11, params) {
var pointwiseConvLayer_1 = require("./pointwiseConvLayer");
function predictionLayer(x, conv11, params) {
return tf.tidy(function () { return tf.tidy(function () {
var conv0 = pointwiseConvLayer_1.pointwiseConvLayer(x, params.conv_0, [1, 1]); var conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]);
var conv1 = pointwiseConvLayer_1.pointwiseConvLayer(conv0, params.conv_1, [2, 2]); var conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]);
var conv2 = pointwiseConvLayer_1.pointwiseConvLayer(conv1, params.conv_2, [1, 1]); var conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]);
var conv3 = pointwiseConvLayer_1.pointwiseConvLayer(conv2, params.conv_3, [2, 2]); var conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]);
var conv4 = pointwiseConvLayer_1.pointwiseConvLayer(conv3, params.conv_4, [1, 1]); var conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]);
var conv5 = pointwiseConvLayer_1.pointwiseConvLayer(conv4, params.conv_5, [2, 2]); var conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]);
var conv6 = pointwiseConvLayer_1.pointwiseConvLayer(conv5, params.conv_6, [1, 1]); var conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]);
var conv7 = pointwiseConvLayer_1.pointwiseConvLayer(conv6, params.conv_7, [2, 2]); var conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]);
var boxPrediction0 = boxPredictionLayer_1.boxPredictionLayer(conv11, params.box_predictor_0); var boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0);
var boxPrediction1 = boxPredictionLayer_1.boxPredictionLayer(x, params.box_predictor_1); var boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1);
var boxPrediction2 = boxPredictionLayer_1.boxPredictionLayer(conv1, params.box_predictor_2); var boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2);
var boxPrediction3 = boxPredictionLayer_1.boxPredictionLayer(conv3, params.box_predictor_3); var boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3);
var boxPrediction4 = boxPredictionLayer_1.boxPredictionLayer(conv5, params.box_predictor_4); var boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4);
var boxPrediction5 = boxPredictionLayer_1.boxPredictionLayer(conv7, params.box_predictor_5); var boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5);
var boxPredictions = tf.concat([ var boxPredictions = tf.concat([
boxPrediction0.boxPredictionEncoding, boxPrediction0.boxPredictionEncoding,
boxPrediction1.boxPredictionEncoding, boxPrediction1.boxPredictionEncoding,
...@@ -41,5 +39,4 @@ function predictionLayer(x, conv11, params) { ...@@ -41,5 +39,4 @@ function predictionLayer(x, conv11, params) {
}; };
}); });
} }
exports.predictionLayer = predictionLayer;
//# sourceMappingURL=predictionLayer.js.map //# 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,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"} {"version":3,"file":"predictionLayer.js","sourceRoot":"","sources":["../../src/faceDetectionNet/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 \ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; import * as tf from '@tensorflow/tfjs-core';
import { ConvParams } from '../commons/types'; import { ConvParams } from 'tfjs-tiny-yolov2';
export declare type PointwiseConvParams = { export declare type PointwiseConvParams = {
filters: tf.Tensor4D; filters: tf.Tensor4D;
batch_norm_offset: tf.Tensor1D; batch_norm_offset: tf.Tensor1D;
......
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map //# sourceMappingURL=types.js.map
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; import * as tf from '@tensorflow/tfjs-core';
import { NeuralNetwork } from '../commons/NeuralNetwork'; import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base';
import { NetInput } from '../NetInput'; import { FaceLandmarks68 } from '../classes/FaceLandmarks68';
import { TNetInput } from '../types';
import { FaceLandmarks68 } from './FaceLandmarks68';
import { NetParams } from './types'; import { NetParams } from './types';
export declare class FaceLandmarkNet extends NeuralNetwork<NetParams> { export declare class FaceLandmarkNet extends NeuralNetwork<NetParams> {
constructor(); constructor();
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import * as tf from '@tensorflow/tfjs-core';
var tslib_1 = require("tslib"); import { isEven, NeuralNetwork, Point, toNetInput } from 'tfjs-image-recognition-base';
var tf = require("@tensorflow/tfjs-core"); import { convLayer } from 'tfjs-tiny-yolov2';
var convLayer_1 = require("../commons/convLayer"); import { FaceLandmarks68 } from '../classes/FaceLandmarks68';
var NeuralNetwork_1 = require("../commons/NeuralNetwork"); import { extractParams } from './extractParams';
var Point_1 = require("../Point"); import { fullyConnectedLayer } from './fullyConnectedLayer';
var toNetInput_1 = require("../toNetInput"); import { loadQuantizedParams } from './loadQuantizedParams';
var utils_1 = require("../utils");
var extractParams_1 = require("./extractParams");
var FaceLandmarks68_1 = require("./FaceLandmarks68");
var fullyConnectedLayer_1 = require("./fullyConnectedLayer");
var loadQuantizedParams_1 = require("./loadQuantizedParams");
function conv(x, params) { function conv(x, params) {
return convLayer_1.convLayer(x, params, 'valid', true); return 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]; }
...@@ -42,8 +37,8 @@ var FaceLandmarkNet = /** @class */ (function (_super) { ...@@ -42,8 +37,8 @@ var FaceLandmarkNet = /** @class */ (function (_super) {
out = conv(out, params.conv6); out = conv(out, params.conv6);
out = maxPool(out, [1, 1]); out = maxPool(out, [1, 1]);
out = conv(out, params.conv7); out = conv(out, params.conv7);
var fc0 = tf.relu(fullyConnectedLayer_1.fullyConnectedLayer(out.as2D(out.shape[0], -1), params.fc0)); var fc0 = tf.relu(fullyConnectedLayer(out.as2D(out.shape[0], -1), params.fc0));
var fc1 = fullyConnectedLayer_1.fullyConnectedLayer(fc0, params.fc1); var fc1 = fullyConnectedLayer(fc0, params.fc1);
var createInterleavedTensor = function (fillX, fillY) { var createInterleavedTensor = function (fillX, fillY) {
return tf.stack([ return tf.stack([
tf.fill([68], fillX), tf.fill([68], fillX),
...@@ -74,7 +69,7 @@ var FaceLandmarkNet = /** @class */ (function (_super) { ...@@ -74,7 +69,7 @@ var FaceLandmarkNet = /** @class */ (function (_super) {
switch (_b.label) { switch (_b.label) {
case 0: case 0:
_a = this.forwardInput; _a = this.forwardInput;
return [4 /*yield*/, toNetInput_1.toNetInput(input, true)]; return [4 /*yield*/, toNetInput(input, true)];
case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])];
} }
}); });
...@@ -86,7 +81,7 @@ var FaceLandmarkNet = /** @class */ (function (_super) { ...@@ -86,7 +81,7 @@ var FaceLandmarkNet = /** @class */ (function (_super) {
var netInput, landmarkTensors, landmarksForBatch; var netInput, landmarkTensors, landmarksForBatch;
return tslib_1.__generator(this, function (_a) { return tslib_1.__generator(this, function (_a) {
switch (_a.label) { switch (_a.label) {
case 0: return [4 /*yield*/, toNetInput_1.toNetInput(input, true)]; case 0: return [4 /*yield*/, toNetInput(input, true)];
case 1: case 1:
netInput = _a.sent(); netInput = _a.sent();
landmarkTensors = tf.tidy(function () { return tf.unstack(_this.forwardInput(netInput)); }); landmarkTensors = tf.tidy(function () { return tf.unstack(_this.forwardInput(netInput)); });
...@@ -99,9 +94,9 @@ var FaceLandmarkNet = /** @class */ (function (_super) { ...@@ -99,9 +94,9 @@ var FaceLandmarkNet = /** @class */ (function (_super) {
return [4 /*yield*/, landmarkTensor.data()]; return [4 /*yield*/, landmarkTensor.data()];
case 1: case 1:
landmarksArray = _b.apply(_a, [_c.sent()]); landmarksArray = _b.apply(_a, [_c.sent()]);
xCoords = landmarksArray.filter(function (_, i) { return utils_1.isEven(i); }); xCoords = landmarksArray.filter(function (_, i) { return isEven(i); });
yCoords = landmarksArray.filter(function (_, i) { return !utils_1.isEven(i); }); yCoords = landmarksArray.filter(function (_, i) { return !isEven(i); });
return [2 /*return*/, new FaceLandmarks68_1.FaceLandmarks68(Array(68).fill(0).map(function (_, i) { return new Point_1.Point(xCoords[i], yCoords[i]); }), { return [2 /*return*/, new FaceLandmarks68(Array(68).fill(0).map(function (_, i) { return new Point(xCoords[i], yCoords[i]); }), {
height: netInput.getInputHeight(batchIdx), height: netInput.getInputHeight(batchIdx),
width: netInput.getInputWidth(batchIdx), width: netInput.getInputWidth(batchIdx),
})]; })];
...@@ -119,12 +114,12 @@ var FaceLandmarkNet = /** @class */ (function (_super) { ...@@ -119,12 +114,12 @@ var FaceLandmarkNet = /** @class */ (function (_super) {
}); });
}; };
FaceLandmarkNet.prototype.loadQuantizedParams = function (uri) { FaceLandmarkNet.prototype.loadQuantizedParams = function (uri) {
return loadQuantizedParams_1.loadQuantizedParams(uri); return loadQuantizedParams(uri);
}; };
FaceLandmarkNet.prototype.extractParams = function (weights) { FaceLandmarkNet.prototype.extractParams = function (weights) {
return extractParams_1.extractParams(weights); return extractParams(weights);
}; };
return FaceLandmarkNet; return FaceLandmarkNet;
}(NeuralNetwork_1.NeuralNetwork)); }(NeuralNetwork));
exports.FaceLandmarkNet = FaceLandmarkNet; export { 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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"} {"version":3,"file":"FaceLandmarkNet.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/FaceLandmarkNet.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
import { IPoint, Point } from '../Point';
import { Rect } from '../Rect';
import { Dimensions } from '../types';
export declare class FaceLandmarks {
private _imageWidth;
private _imageHeight;
private _shift;
private _faceLandmarks;
constructor(relativeFaceLandmarkPositions: Point[], imageDims: Dimensions, shift?: Point);
getShift(): Point;
getImageWidth(): number;
getImageHeight(): number;
getPositions(): Point[];
getRelativePositions(): Point[];
getJawOutline(): Point[];
getLeftEyeBrow(): Point[];
getRightEyeBrow(): Point[];
getNose(): Point[];
getLeftEye(): Point[];
getRightEye(): Point[];
getMouth(): Point[];
forSize(width: number, height: number): FaceLandmarks;
shift(x: number, y: number): FaceLandmarks;
shiftByPoint(pt: IPoint): FaceLandmarks;
/**
* Aligns the face landmarks after face detection from the relative positions of the faces
* bounding box, or it's current shift. This function should be used to align the face images
* after face detection has been performed, before they are passed to the face recognition net.
* This will make the computed face descriptor more accurate.
*
* @param detection (optional) The bounding box of the face or the face detection result. If
* no argument was passed the position of the face landmarks are assumed to be relative to
* it's current shift.
* @returns The bounding box of the aligned face.
*/
align(detection?: Rect): Rect;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var getCenterPoint_1 = require("../commons/getCenterPoint");
var FaceDetection_1 = require("../faceDetectionNet/FaceDetection");
var Point_1 = require("../Point");
var Rect_1 = require("../Rect");
// face alignment constants
var relX = 0.5;
var relY = 0.43;
var relScale = 0.45;
var FaceLandmarks = /** @class */ (function () {
function FaceLandmarks(relativeFaceLandmarkPositions, imageDims, shift) {
if (shift === void 0) { shift = new Point_1.Point(0, 0); }
var width = imageDims.width, height = imageDims.height;
this._imageWidth = width;
this._imageHeight = height;
this._shift = shift;
this._faceLandmarks = relativeFaceLandmarkPositions.map(function (pt) { return pt.mul(new Point_1.Point(width, height)).add(shift); });
}
FaceLandmarks.prototype.getShift = function () {
return new Point_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 () {
var _this = this;
return this._faceLandmarks.map(function (pt) { return pt.sub(_this._shift).div(new Point_1.Point(_this._imageWidth, _this._imageHeight)); });
};
FaceLandmarks.prototype.getJawOutline = function () {
return this._faceLandmarks.slice(0, 17);
};
FaceLandmarks.prototype.getLeftEyeBrow = function () {
return this._faceLandmarks.slice(17, 22);
};
FaceLandmarks.prototype.getRightEyeBrow = function () {
return this._faceLandmarks.slice(22, 27);
};
FaceLandmarks.prototype.getNose = function () {
return this._faceLandmarks.slice(27, 36);
};
FaceLandmarks.prototype.getLeftEye = function () {
return this._faceLandmarks.slice(36, 42);
};
FaceLandmarks.prototype.getRightEye = function () {
return this._faceLandmarks.slice(42, 48);
};
FaceLandmarks.prototype.getMouth = function () {
return this._faceLandmarks.slice(48, 68);
};
FaceLandmarks.prototype.forSize = function (width, height) {
return new FaceLandmarks(this.getRelativePositions(), { width: width, height: height });
};
FaceLandmarks.prototype.shift = function (x, y) {
return new FaceLandmarks(this.getRelativePositions(), { width: this._imageWidth, height: this._imageHeight }, new Point_1.Point(x, y));
};
FaceLandmarks.prototype.shiftByPoint = function (pt) {
return this.shift(pt.x, pt.y);
};
/**
* Aligns the face landmarks after face detection from the relative positions of the faces
* bounding box, or it's current shift. This function should be used to align the face images
* after face detection has been performed, before they are passed to the face recognition net.
* This will make the computed face descriptor more accurate.
*
* @param detection (optional) The bounding box of the face or the face detection result. If
* no argument was passed the position of the face landmarks are assumed to be relative to
* it's current shift.
* @returns The bounding box of the aligned face.
*/
FaceLandmarks.prototype.align = function (detection) {
if (detection) {
var box = detection instanceof FaceDetection_1.FaceDetection
? detection.getBox().floor()
: detection;
return this.shift(box.x, box.y).align();
}
var centers = [
this.getLeftEye(),
this.getRightEye(),
this.getMouth()
].map(getCenterPoint_1.getCenterPoint);
var leftEyeCenter = centers[0], rightEyeCenter = centers[1], mouthCenter = centers[2];
var distToMouth = function (pt) { return mouthCenter.sub(pt).magnitude(); };
var eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2;
var size = Math.floor(eyeToMouthDist / relScale);
var refPoint = getCenterPoint_1.getCenterPoint(centers);
// 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_1.Rect(x, y, size, size);
};
return FaceLandmarks;
}());
exports.FaceLandmarks = FaceLandmarks;
//# 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
{"version":3,"file":"FaceLandmarks68.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/FaceLandmarks68.ts"],"names":[],"mappings":";;;AAAA,4DAA2D;AAE3D,kDAAiD;AAIjD;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,+BAAc,CAAC,CAAA;IACvB,CAAC;IACH,sBAAC;AAAD,CAAC,AApCD,CAAqC,6BAAa,GAoCjD;AApCY,0CAAe"}
\ No newline at end of file
import { ParamMapping } from '../commons/types'; import { ParamMapping } from 'tfjs-image-recognition-base';
import { NetParams } from './types'; import { NetParams } from './types';
export declare function extractParams(weights: Float32Array): { export declare function extractParams(weights: Float32Array): {
params: NetParams; params: NetParams;
......
"use strict"; import { extractWeightsFactory } from 'tfjs-image-recognition-base';
Object.defineProperty(exports, "__esModule", { value: true }); import { extractConvParamsFactory, extractFCParamsFactory } from 'tfjs-tiny-yolov2';
var extractConvParamsFactory_1 = require("../commons/extractConvParamsFactory"); export function extractParams(weights) {
var extractFCParamsFactory_1 = require("../commons/extractFCParamsFactory");
var extractWeightsFactory_1 = require("../commons/extractWeightsFactory");
function extractParams(weights) {
var paramMappings = []; var paramMappings = [];
var _a = extractWeightsFactory_1.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; var _a = extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights;
var extractConvParams = extractConvParamsFactory_1.extractConvParamsFactory(extractWeights, paramMappings); var extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);
var extractFCParams = extractFCParamsFactory_1.extractFCParamsFactory(extractWeights, paramMappings); var extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);
var conv0 = extractConvParams(3, 32, 3, 'conv0'); var conv0 = extractConvParams(3, 32, 3, 'conv0');
var conv1 = extractConvParams(32, 64, 3, 'conv1'); var conv1 = extractConvParams(32, 64, 3, 'conv1');
var conv2 = extractConvParams(64, 64, 3, 'conv2'); var conv2 = extractConvParams(64, 64, 3, 'conv2');
...@@ -37,5 +34,4 @@ function extractParams(weights) { ...@@ -37,5 +34,4 @@ function extractParams(weights) {
} }
}; };
} }
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,gFAA+E;AAC/E,4EAA2E;AAC3E,0EAAyE;AAIzE,uBAA8B,OAAqB;IAEjD,IAAM,aAAa,GAAmB,EAAE,CAAA;IAElC,IAAA,2DAG4B,EAFhC,kCAAc,EACd,4CAAmB,CACa;IAElC,IAAM,iBAAiB,GAAG,mDAAwB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IACjF,IAAM,eAAe,GAAG,+CAAsB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAE7E,IAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IAClD,IAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACnD,IAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACnD,IAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACnD,IAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACnD,IAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACpD,IAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACrD,IAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACrD,IAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9C,IAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,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,aAAa,eAAA;QACb,MAAM,EAAE;YACN,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,OAAA;YACL,GAAG,KAAA;YACH,GAAG,KAAA;SACJ;KACF,CAAA;AACH,CAAC;AA1CD,sCA0CC"} {"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/extractParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAgB,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAIpF,MAAM,wBAAwB,OAAqB;IAEjD,IAAM,aAAa,GAAmB,EAAE,CAAA;IAElC,IAAA,mCAG4B,EAFhC,kCAAc,EACd,4CAAmB,CACa;IAElC,IAAM,iBAAiB,GAAG,wBAAwB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IACjF,IAAM,eAAe,GAAG,sBAAsB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAE7E,IAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IAClD,IAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACnD,IAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACnD,IAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACnD,IAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACnD,IAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACpD,IAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACrD,IAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IACrD,IAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9C,IAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,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,aAAa,eAAA;QACb,MAAM,EAAE;YACN,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,OAAA;YACL,KAAK,OAAA;YACL,GAAG,KAAA;YACH,GAAG,KAAA;SACJ;KACF,CAAA;AACH,CAAC"}
\ No newline at end of file \ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; import * as tf from '@tensorflow/tfjs-core';
import { FCParams } from '../commons/types'; import { FCParams } from 'tfjs-tiny-yolov2';
export declare function fullyConnectedLayer(x: tf.Tensor2D, params: FCParams): tf.Tensor2D; export declare function fullyConnectedLayer(x: tf.Tensor2D, params: FCParams): tf.Tensor2D;
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); export function fullyConnectedLayer(x, params) {
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"} {"version":3,"file":"fullyConnectedLayer.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/fullyConnectedLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG5C,MAAM,8BACJ,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"}
\ No newline at end of file \ No newline at end of file
import { FaceLandmarkNet } from './FaceLandmarkNet'; import { FaceLandmarkNet } from './FaceLandmarkNet';
export * from './FaceLandmarkNet'; export * from './FaceLandmarkNet';
export * from './FaceLandmarks68';
export declare function createFaceLandmarkNet(weights: Float32Array): FaceLandmarkNet; export declare function createFaceLandmarkNet(weights: Float32Array): FaceLandmarkNet;
export declare function faceLandmarkNet(weights: Float32Array): FaceLandmarkNet; export declare function faceLandmarkNet(weights: Float32Array): FaceLandmarkNet;
"use strict"; import { FaceLandmarkNet } from './FaceLandmarkNet';
Object.defineProperty(exports, "__esModule", { value: true }); export * from './FaceLandmarkNet';
var tslib_1 = require("tslib"); export function createFaceLandmarkNet(weights) {
var FaceLandmarkNet_1 = require("./FaceLandmarkNet"); var net = new FaceLandmarkNet();
tslib_1.__exportStar(require("./FaceLandmarkNet"), exports);
tslib_1.__exportStar(require("./FaceLandmarks68"), exports);
function createFaceLandmarkNet(weights) {
var net = new FaceLandmarkNet_1.FaceLandmarkNet();
net.extractWeights(weights); net.extractWeights(weights);
return net; return net;
} }
exports.createFaceLandmarkNet = createFaceLandmarkNet; export function faceLandmarkNet(weights) {
function faceLandmarkNet(weights) {
console.warn('faceLandmarkNet(weights: Float32Array) will be deprecated in future, use createFaceLandmarkNet instead'); console.warn('faceLandmarkNet(weights: Float32Array) will be deprecated in future, use createFaceLandmarkNet instead');
return createFaceLandmarkNet(weights); return createFaceLandmarkNet(weights);
} }
exports.faceLandmarkNet = faceLandmarkNet;
//# sourceMappingURL=index.js.map //# 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;AAClC,4DAAkC;AAElC,+BAAsC,OAAqB;IACzD,IAAM,GAAG,GAAG,IAAI,iCAAe,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"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,cAAc,mBAAmB,CAAC;AAElC,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 \ No newline at end of file
import { ParamMapping } from '../commons/types'; import { ParamMapping } from 'tfjs-image-recognition-base';
import { NetParams } from './types'; import { NetParams } from './types';
export declare function loadQuantizedParams(uri: string | undefined): Promise<{ export declare function loadQuantizedParams(uri: string | undefined): Promise<{
params: NetParams; params: NetParams;
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import { disposeUnusedWeightTensors, extractWeightEntryFactory, loadWeightMap, } from 'tfjs-image-recognition-base';
var tslib_1 = require("tslib");
var disposeUnusedWeightTensors_1 = require("../commons/disposeUnusedWeightTensors");
var extractWeightEntryFactory_1 = require("../commons/extractWeightEntryFactory");
var loadWeightMap_1 = require("../commons/loadWeightMap");
var DEFAULT_MODEL_NAME = 'face_landmark_68_model'; var DEFAULT_MODEL_NAME = 'face_landmark_68_model';
function extractorsFactory(weightMap, paramMappings) { function extractorsFactory(weightMap, paramMappings) {
var extractWeightEntry = extractWeightEntryFactory_1.extractWeightEntryFactory(weightMap, paramMappings); var extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);
function extractConvParams(prefix, mappedPrefix) { function extractConvParams(prefix, mappedPrefix) {
var filters = extractWeightEntry(prefix + "/kernel", 4, mappedPrefix + "/filters"); var filters = extractWeightEntry(prefix + "/kernel", 4, mappedPrefix + "/filters");
var bias = extractWeightEntry(prefix + "/bias", 1, mappedPrefix + "/bias"); var bias = extractWeightEntry(prefix + "/bias", 1, mappedPrefix + "/bias");
...@@ -22,12 +18,12 @@ function extractorsFactory(weightMap, paramMappings) { ...@@ -22,12 +18,12 @@ function extractorsFactory(weightMap, paramMappings) {
extractFcParams: extractFcParams extractFcParams: extractFcParams
}; };
} }
function loadQuantizedParams(uri) { export 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, paramMappings, _a, extractConvParams, extractFcParams, params; var weightMap, paramMappings, _a, extractConvParams, extractFcParams, params;
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_1.loadWeightMap(uri, DEFAULT_MODEL_NAME)]; case 0: return [4 /*yield*/, loadWeightMap(uri, DEFAULT_MODEL_NAME)];
case 1: case 1:
weightMap = _b.sent(); weightMap = _b.sent();
paramMappings = []; paramMappings = [];
...@@ -44,11 +40,10 @@ function loadQuantizedParams(uri) { ...@@ -44,11 +40,10 @@ function loadQuantizedParams(uri) {
fc0: extractFcParams('dense', 'fc0'), fc0: extractFcParams('dense', 'fc0'),
fc1: extractFcParams('logits', 'fc1') fc1: extractFcParams('logits', 'fc1')
}; };
disposeUnusedWeightTensors_1.disposeUnusedWeightTensors(weightMap, paramMappings); disposeUnusedWeightTensors(weightMap, paramMappings);
return [2 /*return*/, { params: params, paramMappings: paramMappings }]; return [2 /*return*/, { params: params, paramMappings: paramMappings }];
} }
}); });
}); });
} }
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,oFAAmF;AACnF,kFAAiF;AACjF,0DAAyD;AAIzD,IAAM,kBAAkB,GAAG,wBAAwB,CAAA;AAEnD,2BAA2B,SAAc,EAAE,aAA6B;IAEtE,IAAM,kBAAkB,GAAG,qDAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE9E,2BAA2B,MAAc,EAAE,YAAoB;QAC7D,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,YAAS,EAAE,CAAC,EAAK,YAAY,aAAU,CAAC,CAAA;QACjG,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,EAAK,YAAY,UAAO,CAAC,CAAA;QAEzF,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC;IAED,yBAAyB,MAAc,EAAE,YAAoB;QAC3D,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,YAAS,EAAE,CAAC,EAAK,YAAY,aAAU,CAAC,CAAA;QACjG,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,EAAK,YAAY,UAAO,CAAC,CAAA;QAEzF,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC;IAED,OAAO;QACL,iBAAiB,mBAAA;QACjB,eAAe,iBAAA;KAChB,CAAA;AACH,CAAC;AAED,6BACE,GAAuB;;;;;wBAGL,qBAAM,6BAAa,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAA;;oBAAxD,SAAS,GAAG,SAA4C;oBACxD,aAAa,GAAmB,EAAE,CAAA;oBAElC,KAGF,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC,EAF7C,iBAAiB,uBAAA,EACjB,eAAe,qBAAA,CAC8B;oBAEzC,MAAM,GAAG;wBACb,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,GAAG,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC;wBACpC,GAAG,EAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC;qBACtC,CAAA;oBAED,uDAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;oBAEpD,sBAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,EAAA;;;;CACjC;AA5BD,kDA4BC"} {"version":3,"file":"loadQuantizedParams.js","sourceRoot":"","sources":["../../src/faceLandmarkNet/loadQuantizedParams.ts"],"names":[],"mappings":";AACA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,aAAa,GAEd,MAAM,6BAA6B,CAAC;AAKrC,IAAM,kBAAkB,GAAG,wBAAwB,CAAA;AAEnD,2BAA2B,SAAc,EAAE,aAA6B;IAEtE,IAAM,kBAAkB,GAAG,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE9E,2BAA2B,MAAc,EAAE,YAAoB;QAC7D,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,YAAS,EAAE,CAAC,EAAK,YAAY,aAAU,CAAC,CAAA;QACjG,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,EAAK,YAAY,UAAO,CAAC,CAAA;QAEzF,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC;IAED,yBAAyB,MAAc,EAAE,YAAoB;QAC3D,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,YAAS,EAAE,CAAC,EAAK,YAAY,aAAU,CAAC,CAAA;QACjG,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,EAAK,YAAY,UAAO,CAAC,CAAA;QAEzF,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC;IAED,OAAO;QACL,iBAAiB,mBAAA;QACjB,eAAe,iBAAA;KAChB,CAAA;AACH,CAAC;AAED,MAAM,8BACJ,GAAuB;;;;;wBAGL,qBAAM,aAAa,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAA;;oBAAxD,SAAS,GAAG,SAA4C;oBACxD,aAAa,GAAmB,EAAE,CAAA;oBAElC,KAGF,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC,EAF7C,iBAAiB,uBAAA,EACjB,eAAe,qBAAA,CAC8B;oBAEzC,MAAM,GAAG;wBACb,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,KAAK,EAAE,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;wBAC7C,GAAG,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC;wBACpC,GAAG,EAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC;qBACtC,CAAA;oBAED,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;oBAEpD,sBAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,EAAA;;;;CACjC"}
\ No newline at end of file \ No newline at end of file
import { ConvParams, FCParams } from '../commons/types'; import { ConvParams, FCParams } from 'tfjs-tiny-yolov2';
export declare type NetParams = { export declare type NetParams = {
conv0: ConvParams; conv0: ConvParams;
conv1: ConvParams; conv1: ConvParams;
......
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map //# sourceMappingURL=types.js.map
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; import * as tf from '@tensorflow/tfjs-core';
import { NeuralNetwork } from '../commons/NeuralNetwork'; import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base';
import { NetInput } from '../NetInput';
import { TNetInput } from '../types';
import { NetParams } from './types'; import { NetParams } from './types';
export declare class FaceRecognitionNet extends NeuralNetwork<NetParams> { export declare class FaceRecognitionNet extends NeuralNetwork<NetParams> {
constructor(); constructor();
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import * as tf from '@tensorflow/tfjs-core';
var tslib_1 = require("tslib"); import { NeuralNetwork, normalize, toNetInput } from 'tfjs-image-recognition-base';
var tf = require("@tensorflow/tfjs-core"); import { convDown } from './convLayer';
var NeuralNetwork_1 = require("../commons/NeuralNetwork"); import { extractParams } from './extractParams';
var normalize_1 = require("../commons/normalize"); import { loadQuantizedParams } from './loadQuantizedParams';
var toNetInput_1 = require("../toNetInput"); import { residual, residualDown } from './residualLayer';
var convLayer_1 = require("./convLayer");
var extractParams_1 = require("./extractParams");
var loadQuantizedParams_1 = require("./loadQuantizedParams");
var residualLayer_1 = require("./residualLayer");
var FaceRecognitionNet = /** @class */ (function (_super) { var FaceRecognitionNet = /** @class */ (function (_super) {
tslib_1.__extends(FaceRecognitionNet, _super); tslib_1.__extends(FaceRecognitionNet, _super);
function FaceRecognitionNet() { function FaceRecognitionNet() {
...@@ -22,23 +18,23 @@ var FaceRecognitionNet = /** @class */ (function (_super) { ...@@ -22,23 +18,23 @@ var FaceRecognitionNet = /** @class */ (function (_super) {
return tf.tidy(function () { return tf.tidy(function () {
var batchTensor = input.toBatchTensor(150, true); var batchTensor = input.toBatchTensor(150, true);
var meanRgb = [122.782, 117.001, 104.298]; var meanRgb = [122.782, 117.001, 104.298];
var normalized = normalize_1.normalize(batchTensor, meanRgb).div(tf.scalar(256)); var normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256));
var out = convLayer_1.convDown(normalized, params.conv32_down); var out = convDown(normalized, params.conv32_down);
out = tf.maxPool(out, 3, 2, 'valid'); out = tf.maxPool(out, 3, 2, 'valid');
out = residualLayer_1.residual(out, params.conv32_1); out = residual(out, params.conv32_1);
out = residualLayer_1.residual(out, params.conv32_2); out = residual(out, params.conv32_2);
out = residualLayer_1.residual(out, params.conv32_3); out = residual(out, params.conv32_3);
out = residualLayer_1.residualDown(out, params.conv64_down); out = residualDown(out, params.conv64_down);
out = residualLayer_1.residual(out, params.conv64_1); out = residual(out, params.conv64_1);
out = residualLayer_1.residual(out, params.conv64_2); out = residual(out, params.conv64_2);
out = residualLayer_1.residual(out, params.conv64_3); out = residual(out, params.conv64_3);
out = residualLayer_1.residualDown(out, params.conv128_down); out = residualDown(out, params.conv128_down);
out = residualLayer_1.residual(out, params.conv128_1); out = residual(out, params.conv128_1);
out = residualLayer_1.residual(out, params.conv128_2); out = residual(out, params.conv128_2);
out = residualLayer_1.residualDown(out, params.conv256_down); out = residualDown(out, params.conv256_down);
out = residualLayer_1.residual(out, params.conv256_1); out = residual(out, params.conv256_1);
out = residualLayer_1.residual(out, params.conv256_2); out = residual(out, params.conv256_2);
out = residualLayer_1.residualDown(out, params.conv256_down_out); out = residualDown(out, params.conv256_down_out);
var globalAvg = out.mean([1, 2]); var globalAvg = out.mean([1, 2]);
var fullyConnected = tf.matMul(globalAvg, params.fc); var fullyConnected = tf.matMul(globalAvg, params.fc);
return fullyConnected; return fullyConnected;
...@@ -51,7 +47,7 @@ var FaceRecognitionNet = /** @class */ (function (_super) { ...@@ -51,7 +47,7 @@ var FaceRecognitionNet = /** @class */ (function (_super) {
switch (_b.label) { switch (_b.label) {
case 0: case 0:
_a = this.forwardInput; _a = this.forwardInput;
return [4 /*yield*/, toNetInput_1.toNetInput(input, true)]; return [4 /*yield*/, toNetInput(input, true)];
case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])];
} }
}); });
...@@ -63,7 +59,7 @@ var FaceRecognitionNet = /** @class */ (function (_super) { ...@@ -63,7 +59,7 @@ var FaceRecognitionNet = /** @class */ (function (_super) {
var netInput, faceDescriptorTensors, faceDescriptorsForBatch; var netInput, faceDescriptorTensors, faceDescriptorsForBatch;
return tslib_1.__generator(this, function (_a) { return tslib_1.__generator(this, function (_a) {
switch (_a.label) { switch (_a.label) {
case 0: return [4 /*yield*/, toNetInput_1.toNetInput(input, true)]; case 0: return [4 /*yield*/, toNetInput(input, true)];
case 1: case 1:
netInput = _a.sent(); netInput = _a.sent();
faceDescriptorTensors = tf.tidy(function () { return tf.unstack(_this.forwardInput(netInput)); }); faceDescriptorTensors = tf.tidy(function () { return tf.unstack(_this.forwardInput(netInput)); });
...@@ -79,12 +75,12 @@ var FaceRecognitionNet = /** @class */ (function (_super) { ...@@ -79,12 +75,12 @@ var FaceRecognitionNet = /** @class */ (function (_super) {
}); });
}; };
FaceRecognitionNet.prototype.loadQuantizedParams = function (uri) { FaceRecognitionNet.prototype.loadQuantizedParams = function (uri) {
return loadQuantizedParams_1.loadQuantizedParams(uri); return loadQuantizedParams(uri);
}; };
FaceRecognitionNet.prototype.extractParams = function (weights) { FaceRecognitionNet.prototype.extractParams = function (weights) {
return extractParams_1.extractParams(weights); return extractParams(weights);
}; };
return FaceRecognitionNet; return FaceRecognitionNet;
}(NeuralNetwork_1.NeuralNetwork)); }(NeuralNetwork));
exports.FaceRecognitionNet = FaceRecognitionNet; export { FaceRecognitionNet };
//# sourceMappingURL=FaceRecognitionNet.js.map //# sourceMappingURL=FaceRecognitionNet.js.map
\ No newline at end of file
{"version":3,"file":"FaceRecognitionNet.js","sourceRoot":"","sources":["../../src/faceRecognitionNet/FaceRecognitionNet.ts"],"names":[],"mappings":"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"} {"version":3,"file":"FaceRecognitionNet.js","sourceRoot":"","sources":["../../src/faceRecognitionNet/FaceRecognitionNet.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); import { scale } from './scaleLayer';
var tf = require("@tensorflow/tfjs-core");
var scaleLayer_1 = require("./scaleLayer");
function convLayer(x, params, strides, withRelu, padding) { function convLayer(x, params, strides, withRelu, padding) {
if (padding === void 0) { padding = 'same'; } if (padding === void 0) { padding = 'same'; }
var _a = params.conv, filters = _a.filters, bias = _a.bias; var _a = params.conv, filters = _a.filters, bias = _a.bias;
var out = tf.conv2d(x, filters, strides, padding); var out = tf.conv2d(x, filters, strides, padding);
out = tf.add(out, bias); out = tf.add(out, bias);
out = scaleLayer_1.scale(out, params.scale); out = scale(out, params.scale);
return withRelu ? tf.relu(out) : out; return withRelu ? tf.relu(out) : out;
} }
function conv(x, params) { export function conv(x, params) {
return convLayer(x, params, [1, 1], true); return convLayer(x, params, [1, 1], true);
} }
exports.conv = conv; export function convNoRelu(x, params) {
function convNoRelu(x, params) {
return convLayer(x, params, [1, 1], false); return convLayer(x, params, [1, 1], false);
} }
exports.convNoRelu = convNoRelu; export function convDown(x, params) {
function convDown(x, params) {
return convLayer(x, params, [2, 2], true, 'valid'); return convLayer(x, params, [2, 2], true, 'valid');
} }
exports.convDown = convDown;
//# sourceMappingURL=convLayer.js.map //# sourceMappingURL=convLayer.js.map
\ No newline at end of file
{"version":3,"file":"convLayer.js","sourceRoot":"","sources":["../../src/faceRecognitionNet/convLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,2CAAqC;AAIrC,mBACE,CAAc,EACd,MAAuB,EACvB,OAAyB,EACzB,QAAiB,EACjB,OAAkC;IAAlC,wBAAA,EAAA,gBAAkC;IAE5B,IAAA,gBAA+B,EAA7B,oBAAO,EAAE,cAAI,CAAgB;IAErC,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACjD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACvB,GAAG,GAAG,kBAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9B,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;AACtC,CAAC;AAED,cAAqB,CAAc,EAAE,MAAuB;IAC1D,OAAO,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC;AAFD,oBAEC;AAED,oBAA2B,CAAc,EAAE,MAAuB;IAChE,OAAO,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAC5C,CAAC;AAFD,gCAEC;AAED,kBAAyB,CAAc,EAAE,MAAuB;IAC9D,OAAO,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AACpD,CAAC;AAFD,4BAEC"} {"version":3,"file":"convLayer.js","sourceRoot":"","sources":["../../src/faceRecognitionNet/convLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAIrC,mBACE,CAAc,EACd,MAAuB,EACvB,OAAyB,EACzB,QAAiB,EACjB,OAAkC;IAAlC,wBAAA,EAAA,gBAAkC;IAE5B,IAAA,gBAA+B,EAA7B,oBAAO,EAAE,cAAI,CAAgB;IAErC,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACjD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACvB,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9B,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;AACtC,CAAC;AAED,MAAM,eAAe,CAAc,EAAE,MAAuB;IAC1D,OAAO,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC;AAED,MAAM,qBAAqB,CAAc,EAAE,MAAuB;IAChE,OAAO,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,mBAAmB,CAAc,EAAE,MAAuB;IAC9D,OAAO,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AACpD,CAAC"}
\ No newline at end of file \ No newline at end of file
import { ParamMapping } from '../commons/types'; import { ParamMapping } from 'tfjs-image-recognition-base';
import { NetParams } from './types'; import { NetParams } from './types';
export declare function extractParams(weights: Float32Array): { export declare function extractParams(weights: Float32Array): {
params: NetParams; params: NetParams;
......
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); import { extractWeightsFactory, isFloat } from 'tfjs-image-recognition-base';
var tf = require("@tensorflow/tfjs-core");
var extractWeightsFactory_1 = require("../commons/extractWeightsFactory");
var utils_1 = require("../utils");
function extractorsFactory(extractWeights, paramMappings) { function extractorsFactory(extractWeights, paramMappings) {
function extractFilterValues(numFilterValues, numFilters, filterSize) { function extractFilterValues(numFilterValues, numFilters, filterSize) {
var weights = extractWeights(numFilterValues); var weights = extractWeights(numFilterValues);
var depth = weights.length / (numFilters * filterSize * filterSize); var depth = weights.length / (numFilters * filterSize * filterSize);
if (utils_1.isFloat(depth)) { if (isFloat(depth)) {
throw new Error("depth has to be an integer: " + depth + ", weights.length: " + weights.length + ", numFilters: " + numFilters + ", filterSize: " + filterSize); throw new Error("depth has to be an integer: " + depth + ", weights.length: " + weights.length + ", numFilters: " + numFilters + ", filterSize: " + filterSize);
} }
return tf.tidy(function () { return tf.transpose(tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]), [2, 3, 1, 0]); }); return tf.tidy(function () { return tf.transpose(tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]), [2, 3, 1, 0]); });
...@@ -43,8 +40,8 @@ function extractorsFactory(extractWeights, paramMappings) { ...@@ -43,8 +40,8 @@ function extractorsFactory(extractWeights, paramMappings) {
extractResidualLayerParams: extractResidualLayerParams extractResidualLayerParams: extractResidualLayerParams
}; };
} }
function extractParams(weights) { export function extractParams(weights) {
var _a = extractWeightsFactory_1.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; var _a = extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights;
var paramMappings = []; var paramMappings = [];
var _b = extractorsFactory(extractWeights, paramMappings), extractConvLayerParams = _b.extractConvLayerParams, extractResidualLayerParams = _b.extractResidualLayerParams; var _b = extractorsFactory(extractWeights, paramMappings), extractConvLayerParams = _b.extractConvLayerParams, extractResidualLayerParams = _b.extractResidualLayerParams;
var conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down'); var conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down');
...@@ -87,5 +84,4 @@ function extractParams(weights) { ...@@ -87,5 +84,4 @@ function extractParams(weights) {
}; };
return { params: params, paramMappings: paramMappings }; return { params: params, paramMappings: paramMappings };
} }
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/faceRecognitionNet/extractParams.ts"],"names":[],"mappings":"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"} {"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../src/faceRecognitionNet/extractParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
"use strict"; import { FaceRecognitionNet } from './FaceRecognitionNet';
Object.defineProperty(exports, "__esModule", { value: true }); export * from './FaceRecognitionNet';
var tslib_1 = require("tslib"); export function createFaceRecognitionNet(weights) {
var FaceRecognitionNet_1 = require("./FaceRecognitionNet"); var net = new FaceRecognitionNet();
tslib_1.__exportStar(require("./FaceRecognitionNet"), exports);
function createFaceRecognitionNet(weights) {
var net = new FaceRecognitionNet_1.FaceRecognitionNet();
net.extractWeights(weights); net.extractWeights(weights);
return net; return net;
} }
exports.createFaceRecognitionNet = createFaceRecognitionNet; export function faceRecognitionNet(weights) {
function faceRecognitionNet(weights) {
console.warn('faceRecognitionNet(weights: Float32Array) will be deprecated in future, use createFaceRecognitionNet instead'); console.warn('faceRecognitionNet(weights: Float32Array) will be deprecated in future, use createFaceRecognitionNet instead');
return createFaceRecognitionNet(weights); return createFaceRecognitionNet(weights);
} }
exports.faceRecognitionNet = faceRecognitionNet;
//# sourceMappingURL=index.js.map //# 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"} {"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 \ No newline at end of file
import { ParamMapping } from '../commons/types'; import { ParamMapping } from 'tfjs-image-recognition-base';
import { NetParams } from './types'; import { NetParams } from './types';
export declare function loadQuantizedParams(uri: string | undefined): Promise<{ export declare function loadQuantizedParams(uri: string | undefined): Promise<{
params: NetParams; params: NetParams;
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import { disposeUnusedWeightTensors, extractWeightEntryFactory, isTensor2D, loadWeightMap, } from 'tfjs-image-recognition-base';
var tslib_1 = require("tslib");
var disposeUnusedWeightTensors_1 = require("../commons/disposeUnusedWeightTensors");
var extractWeightEntryFactory_1 = require("../commons/extractWeightEntryFactory");
var isTensor_1 = require("../commons/isTensor");
var loadWeightMap_1 = require("../commons/loadWeightMap");
var DEFAULT_MODEL_NAME = 'face_recognition_model'; var DEFAULT_MODEL_NAME = 'face_recognition_model';
function extractorsFactory(weightMap, paramMappings) { function extractorsFactory(weightMap, paramMappings) {
var extractWeightEntry = extractWeightEntryFactory_1.extractWeightEntryFactory(weightMap, paramMappings); var extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);
function extractScaleLayerParams(prefix) { function extractScaleLayerParams(prefix) {
var weights = extractWeightEntry(prefix + "/scale/weights", 1); var weights = extractWeightEntry(prefix + "/scale/weights", 1);
var biases = extractWeightEntry(prefix + "/scale/biases", 1); var biases = extractWeightEntry(prefix + "/scale/biases", 1);
...@@ -30,12 +25,12 @@ function extractorsFactory(weightMap, paramMappings) { ...@@ -30,12 +25,12 @@ function extractorsFactory(weightMap, paramMappings) {
extractResidualLayerParams: extractResidualLayerParams extractResidualLayerParams: extractResidualLayerParams
}; };
} }
function loadQuantizedParams(uri) { export 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, paramMappings, _a, extractConvLayerParams, extractResidualLayerParams, conv32_down, conv32_1, conv32_2, conv32_3, conv64_down, conv64_1, conv64_2, conv64_3, conv128_down, conv128_1, conv128_2, conv256_down, conv256_1, conv256_2, conv256_down_out, fc, params; var weightMap, paramMappings, _a, extractConvLayerParams, extractResidualLayerParams, conv32_down, conv32_1, conv32_2, conv32_3, conv64_down, conv64_1, conv64_2, conv64_3, conv128_down, conv128_1, conv128_2, conv256_down, conv256_1, conv256_2, conv256_down_out, fc, params;
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_1.loadWeightMap(uri, DEFAULT_MODEL_NAME)]; case 0: return [4 /*yield*/, loadWeightMap(uri, DEFAULT_MODEL_NAME)];
case 1: case 1:
weightMap = _b.sent(); weightMap = _b.sent();
paramMappings = []; paramMappings = [];
...@@ -57,7 +52,7 @@ function loadQuantizedParams(uri) { ...@@ -57,7 +52,7 @@ function loadQuantizedParams(uri) {
conv256_down_out = extractResidualLayerParams('conv256_down_out'); conv256_down_out = extractResidualLayerParams('conv256_down_out');
fc = weightMap['fc']; fc = weightMap['fc'];
paramMappings.push({ originalPath: 'fc', paramPath: 'fc' }); paramMappings.push({ originalPath: 'fc', paramPath: 'fc' });
if (!isTensor_1.isTensor2D(fc)) { if (!isTensor2D(fc)) {
throw new Error("expected weightMap[fc] to be a Tensor2D, instead have " + fc); throw new Error("expected weightMap[fc] to be a Tensor2D, instead have " + fc);
} }
params = { params = {
...@@ -78,11 +73,10 @@ function loadQuantizedParams(uri) { ...@@ -78,11 +73,10 @@ function loadQuantizedParams(uri) {
conv256_down_out: conv256_down_out, conv256_down_out: conv256_down_out,
fc: fc fc: fc
}; };
disposeUnusedWeightTensors_1.disposeUnusedWeightTensors(weightMap, paramMappings); disposeUnusedWeightTensors(weightMap, paramMappings);
return [2 /*return*/, { params: params, paramMappings: paramMappings }]; return [2 /*return*/, { params: params, paramMappings: paramMappings }];
} }
}); });
}); });
} }
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/faceRecognitionNet/loadQuantizedParams.ts"],"names":[],"mappings":"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"} {"version":3,"file":"loadQuantizedParams.js","sourceRoot":"","sources":["../../src/faceRecognitionNet/loadQuantizedParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
export declare function normalize(x: tf.Tensor4D): tf.Tensor4D;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function normalize(x) {
return tf.tidy(function () {
var avg_r = tf.fill(x.shape.slice(0, 3).concat([1]), 122.782);
var avg_g = tf.fill(x.shape.slice(0, 3).concat([1]), 117.001);
var avg_b = tf.fill(x.shape.slice(0, 3).concat([1]), 104.298);
var avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);
return tf.div(tf.sub(x, avg_rgb), tf.scalar(256));
});
}
exports.normalize = normalize;
//# sourceMappingURL=normalize.js.map
\ No newline at end of file
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/faceRecognitionNet/normalize.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,mBAA0B,CAAc;IACtC,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAE,CAAC,IAAG,OAAO,CAAC,CAAC;QAC5D,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAE,CAAC,IAAG,OAAO,CAAC,CAAC;QAC5D,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAE,CAAC,IAAG,OAAO,CAAC,CAAC;QAC5D,IAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QAEnD,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;AACJ,CAAC;AATD,8BASC"}
\ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); import { conv, convDown, convNoRelu } from './convLayer';
var tf = require("@tensorflow/tfjs-core"); export function residual(x, params) {
var convLayer_1 = require("./convLayer"); var out = conv(x, params.conv1);
function residual(x, params) { out = convNoRelu(out, params.conv2);
var out = convLayer_1.conv(x, params.conv1);
out = convLayer_1.convNoRelu(out, params.conv2);
out = tf.add(out, x); out = tf.add(out, x);
out = tf.relu(out); out = tf.relu(out);
return out; return out;
} }
exports.residual = residual; export function residualDown(x, params) {
function residualDown(x, params) { var out = convDown(x, params.conv1);
var out = convLayer_1.convDown(x, params.conv1); out = convNoRelu(out, params.conv2);
out = convLayer_1.convNoRelu(out, params.conv2);
var pooled = tf.avgPool(x, 2, 2, 'valid'); var pooled = tf.avgPool(x, 2, 2, 'valid');
var zeros = tf.zeros(pooled.shape); var zeros = tf.zeros(pooled.shape);
var isPad = pooled.shape[3] !== out.shape[3]; var isPad = pooled.shape[3] !== out.shape[3];
...@@ -32,5 +29,4 @@ function residualDown(x, params) { ...@@ -32,5 +29,4 @@ function residualDown(x, params) {
out = tf.relu(out); out = tf.relu(out);
return out; return out;
} }
exports.residualDown = residualDown;
//# sourceMappingURL=residualLayer.js.map //# sourceMappingURL=residualLayer.js.map
\ No newline at end of file
{"version":3,"file":"residualLayer.js","sourceRoot":"","sources":["../../src/faceRecognitionNet/residualLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,yCAAyD;AAGzD,kBAAyB,CAAc,EAAE,MAA2B;IAClE,IAAI,GAAG,GAAG,gBAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/B,GAAG,GAAG,sBAAU,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IACnC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IACpB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClB,OAAO,GAAG,CAAA;AACZ,CAAC;AAND,4BAMC;AAED,sBAA6B,CAAc,EAAE,MAA2B;IACtE,IAAI,GAAG,GAAG,oBAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IACnC,GAAG,GAAG,sBAAU,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAEnC,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAgB,CAAA;IACxD,IAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAa,MAAM,CAAC,KAAK,CAAC,CAAA;IAChD,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC9C,IAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAE1F,IAAI,aAAa,EAAE;QACjB,IAAM,SAAS,GAAO,GAAG,CAAC,KAAK,QAAqC,CAAA;QACpE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAChB,IAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAa,SAAS,CAAC,CAAA;QAC9C,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAEjC,IAAM,SAAS,GAAO,GAAG,CAAC,KAAK,QAAqC,CAAA;QACpE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAChB,IAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAa,SAAS,CAAC,CAAA;QAC9C,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;KAClC;IAED,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IACvD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAgB,CAAA;IAExC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClB,OAAO,GAAG,CAAA;AACZ,CAAC;AA1BD,oCA0BC"} {"version":3,"file":"residualLayer.js","sourceRoot":"","sources":["../../src/faceRecognitionNet/residualLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzD,MAAM,mBAAmB,CAAc,EAAE,MAA2B;IAClE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/B,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IACnC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IACpB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClB,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,uBAAuB,CAAc,EAAE,MAA2B;IACtE,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IACnC,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAEnC,IAAI,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAgB,CAAA;IACxD,IAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAa,MAAM,CAAC,KAAK,CAAC,CAAA;IAChD,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC9C,IAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAE1F,IAAI,aAAa,EAAE;QACjB,IAAM,SAAS,GAAO,GAAG,CAAC,KAAK,QAAqC,CAAA;QACpE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAChB,IAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAa,SAAS,CAAC,CAAA;QAC9C,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAEjC,IAAM,SAAS,GAAO,GAAG,CAAC,KAAK,QAAqC,CAAA;QACpE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAChB,IAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAa,SAAS,CAAC,CAAA;QAC9C,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;KAClC;IAED,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IACvD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAgB,CAAA;IAExC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClB,OAAO,GAAG,CAAA;AACZ,CAAC"}
\ No newline at end of file \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); export function scale(x, params) {
var tf = require("@tensorflow/tfjs-core");
function scale(x, params) {
return tf.add(tf.mul(x, params.weights), params.biases); return tf.add(tf.mul(x, params.weights), params.biases);
} }
exports.scale = scale;
//# sourceMappingURL=scaleLayer.js.map //# sourceMappingURL=scaleLayer.js.map
\ No newline at end of file
{"version":3,"file":"scaleLayer.js","sourceRoot":"","sources":["../../src/faceRecognitionNet/scaleLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAI5C,eAAsB,CAAc,EAAE,MAAwB;IAC5D,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;AACzD,CAAC;AAFD,sBAEC"} {"version":3,"file":"scaleLayer.js","sourceRoot":"","sources":["../../src/faceRecognitionNet/scaleLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI5C,MAAM,gBAAgB,CAAc,EAAE,MAAwB;IAC5D,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;AACzD,CAAC"}
\ No newline at end of file \ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; import * as tf from '@tensorflow/tfjs-core';
import { ConvParams } from '../commons/types'; import { ConvParams } from 'tfjs-tiny-yolov2';
export declare type ScaleLayerParams = { export declare type ScaleLayerParams = {
weights: tf.Tensor1D; weights: tf.Tensor1D;
biases: tf.Tensor1D; biases: tf.Tensor1D;
......
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map //# sourceMappingURL=types.js.map
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; import * as tf from '@tensorflow/tfjs-core';
import { FaceDetection } from './FaceDetection'; import { NetInput, TNetInput } from 'tfjs-image-recognition-base';
import { TinyYolov2Types } from 'tfjs-tiny-yolov2';
import { FaceDetection } from './classes/FaceDetection';
import { FaceLandmarks68 } from './classes/FaceLandmarks68';
import { FullFaceDescription } from './classes/FullFaceDescription';
import { FaceDetectionNet } from './faceDetectionNet/FaceDetectionNet'; import { FaceDetectionNet } from './faceDetectionNet/FaceDetectionNet';
import { FaceLandmarkNet } from './faceLandmarkNet/FaceLandmarkNet'; import { FaceLandmarkNet } from './faceLandmarkNet/FaceLandmarkNet';
import { FaceLandmarks68 } from './faceLandmarkNet/FaceLandmarks68';
import { FaceRecognitionNet } from './faceRecognitionNet/FaceRecognitionNet'; import { FaceRecognitionNet } from './faceRecognitionNet/FaceRecognitionNet';
import { FullFaceDescription } from './FullFaceDescription';
import { Mtcnn } from './mtcnn/Mtcnn'; import { Mtcnn } from './mtcnn/Mtcnn';
import { MtcnnForwardParams, MtcnnResult } from './mtcnn/types'; import { MtcnnForwardParams, MtcnnResult } from './mtcnn/types';
import { NetInput } from './NetInput';
import { TinyYolov2 } from './tinyYolov2/TinyYolov2'; import { TinyYolov2 } from './tinyYolov2/TinyYolov2';
import { TinyYolov2ForwardParams } from './tinyYolov2/types';
import { TNetInput } from './types';
export declare const detectionNet: FaceDetectionNet; export declare const detectionNet: FaceDetectionNet;
export declare const landmarkNet: FaceLandmarkNet; export declare const landmarkNet: FaceLandmarkNet;
export declare const recognitionNet: FaceRecognitionNet; export declare const recognitionNet: FaceRecognitionNet;
...@@ -32,10 +31,10 @@ export declare function locateFaces(input: TNetInput, minConfidence?: number, ma ...@@ -32,10 +31,10 @@ export declare function locateFaces(input: TNetInput, minConfidence?: number, ma
export declare function detectLandmarks(input: TNetInput): Promise<FaceLandmarks68 | FaceLandmarks68[]>; export declare function detectLandmarks(input: TNetInput): Promise<FaceLandmarks68 | FaceLandmarks68[]>;
export declare function computeFaceDescriptor(input: TNetInput): Promise<Float32Array | Float32Array[]>; export declare function computeFaceDescriptor(input: TNetInput): Promise<Float32Array | Float32Array[]>;
export declare function mtcnn(input: TNetInput, forwardParams: MtcnnForwardParams): Promise<MtcnnResult[]>; export declare function mtcnn(input: TNetInput, forwardParams: MtcnnForwardParams): Promise<MtcnnResult[]>;
export declare function tinyYolov2(input: TNetInput, forwardParams: TinyYolov2ForwardParams): Promise<FaceDetection[]>; export declare function tinyYolov2(input: TNetInput, forwardParams: TinyYolov2Types.TinyYolov2ForwardParams): Promise<FaceDetection[]>;
export declare type allFacesSsdMobilenetv1Function = (input: tf.Tensor | NetInput | TNetInput, minConfidence?: number, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>; export declare type allFacesSsdMobilenetv1Function = (input: tf.Tensor | NetInput | TNetInput, minConfidence?: number, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>;
export declare const allFacesSsdMobilenetv1: allFacesSsdMobilenetv1Function; export declare const allFacesSsdMobilenetv1: allFacesSsdMobilenetv1Function;
export declare type allFacesTinyYolov2Function = (input: tf.Tensor | NetInput | TNetInput, forwardParams?: TinyYolov2ForwardParams, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>; export declare type allFacesTinyYolov2Function = (input: tf.Tensor | NetInput | TNetInput, forwardParams?: TinyYolov2Types.TinyYolov2ForwardParams, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>;
export declare const allFacesTinyYolov2: allFacesTinyYolov2Function; export declare const allFacesTinyYolov2: allFacesTinyYolov2Function;
export declare type allFacesMtcnnFunction = (input: tf.Tensor | NetInput | TNetInput, mtcnnForwardParams?: MtcnnForwardParams, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>; export declare type allFacesMtcnnFunction = (input: tf.Tensor | NetInput | TNetInput, mtcnnForwardParams?: MtcnnForwardParams, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>;
export declare const allFacesMtcnn: allFacesMtcnnFunction; export declare const allFacesMtcnn: allFacesMtcnnFunction;
......
"use strict"; import { allFacesMtcnnFactory, allFacesSsdMobilenetv1Factory, allFacesTinyYolov2Factory } from './allFacesFactory';
Object.defineProperty(exports, "__esModule", { value: true }); import { FaceDetectionNet } from './faceDetectionNet/FaceDetectionNet';
var allFacesFactory_1 = require("./allFacesFactory"); import { FaceLandmarkNet } from './faceLandmarkNet/FaceLandmarkNet';
var FaceDetectionNet_1 = require("./faceDetectionNet/FaceDetectionNet"); import { FaceRecognitionNet } from './faceRecognitionNet/FaceRecognitionNet';
var FaceLandmarkNet_1 = require("./faceLandmarkNet/FaceLandmarkNet"); import { Mtcnn } from './mtcnn/Mtcnn';
var FaceRecognitionNet_1 = require("./faceRecognitionNet/FaceRecognitionNet"); import { TinyYolov2 } from './tinyYolov2/TinyYolov2';
var Mtcnn_1 = require("./mtcnn/Mtcnn"); export var detectionNet = new FaceDetectionNet();
var TinyYolov2_1 = require("./tinyYolov2/TinyYolov2"); export var landmarkNet = new FaceLandmarkNet();
exports.detectionNet = new FaceDetectionNet_1.FaceDetectionNet(); export var recognitionNet = new FaceRecognitionNet();
exports.landmarkNet = new FaceLandmarkNet_1.FaceLandmarkNet();
exports.recognitionNet = new FaceRecognitionNet_1.FaceRecognitionNet();
// nets need more specific names, to avoid ambiguity in future // nets need more specific names, to avoid ambiguity in future
// when alternative net implementations are provided // when alternative net implementations are provided
exports.nets = { export var nets = {
ssdMobilenetv1: exports.detectionNet, ssdMobilenetv1: detectionNet,
faceLandmark68Net: exports.landmarkNet, faceLandmark68Net: landmarkNet,
faceRecognitionNet: exports.recognitionNet, faceRecognitionNet: recognitionNet,
mtcnn: new Mtcnn_1.Mtcnn(), mtcnn: new Mtcnn(),
tinyYolov2: new TinyYolov2_1.TinyYolov2() tinyYolov2: new TinyYolov2()
}; };
function loadSsdMobilenetv1Model(url) { export function loadSsdMobilenetv1Model(url) {
return exports.nets.ssdMobilenetv1.load(url); return nets.ssdMobilenetv1.load(url);
} }
exports.loadSsdMobilenetv1Model = loadSsdMobilenetv1Model; export function loadFaceLandmarkModel(url) {
function loadFaceLandmarkModel(url) { return nets.faceLandmark68Net.load(url);
return exports.nets.faceLandmark68Net.load(url);
} }
exports.loadFaceLandmarkModel = loadFaceLandmarkModel; export function loadFaceRecognitionModel(url) {
function loadFaceRecognitionModel(url) { return nets.faceRecognitionNet.load(url);
return exports.nets.faceRecognitionNet.load(url);
} }
exports.loadFaceRecognitionModel = loadFaceRecognitionModel; export function loadMtcnnModel(url) {
function loadMtcnnModel(url) { return nets.mtcnn.load(url);
return exports.nets.mtcnn.load(url);
} }
exports.loadMtcnnModel = loadMtcnnModel; export function loadTinyYolov2Model(url) {
function loadTinyYolov2Model(url) { return nets.tinyYolov2.load(url);
return exports.nets.tinyYolov2.load(url);
} }
exports.loadTinyYolov2Model = loadTinyYolov2Model; export function loadFaceDetectionModel(url) {
function loadFaceDetectionModel(url) {
return loadSsdMobilenetv1Model(url); return loadSsdMobilenetv1Model(url);
} }
exports.loadFaceDetectionModel = loadFaceDetectionModel; export function loadModels(url) {
function loadModels(url) {
return Promise.all([ return Promise.all([
loadSsdMobilenetv1Model(url), loadSsdMobilenetv1Model(url),
loadFaceLandmarkModel(url), loadFaceLandmarkModel(url),
...@@ -51,29 +43,23 @@ function loadModels(url) { ...@@ -51,29 +43,23 @@ function loadModels(url) {
loadTinyYolov2Model(url) loadTinyYolov2Model(url)
]); ]);
} }
exports.loadModels = loadModels; export function locateFaces(input, minConfidence, maxResults) {
function locateFaces(input, minConfidence, maxResults) { return nets.ssdMobilenetv1.locateFaces(input, minConfidence, maxResults);
return exports.nets.ssdMobilenetv1.locateFaces(input, minConfidence, maxResults);
} }
exports.locateFaces = locateFaces; export function detectLandmarks(input) {
function detectLandmarks(input) { return nets.faceLandmark68Net.detectLandmarks(input);
return exports.nets.faceLandmark68Net.detectLandmarks(input);
} }
exports.detectLandmarks = detectLandmarks; export function computeFaceDescriptor(input) {
function computeFaceDescriptor(input) { return nets.faceRecognitionNet.computeFaceDescriptor(input);
return exports.nets.faceRecognitionNet.computeFaceDescriptor(input);
} }
exports.computeFaceDescriptor = computeFaceDescriptor; export function mtcnn(input, forwardParams) {
function mtcnn(input, forwardParams) { return nets.mtcnn.forward(input, forwardParams);
return exports.nets.mtcnn.forward(input, forwardParams);
} }
exports.mtcnn = mtcnn; export function tinyYolov2(input, forwardParams) {
function tinyYolov2(input, forwardParams) { return nets.tinyYolov2.locateFaces(input, forwardParams);
return exports.nets.tinyYolov2.locateFaces(input, forwardParams);
} }
exports.tinyYolov2 = tinyYolov2; export var allFacesSsdMobilenetv1 = allFacesSsdMobilenetv1Factory(nets.ssdMobilenetv1, nets.faceLandmark68Net, nets.faceRecognitionNet);
exports.allFacesSsdMobilenetv1 = allFacesFactory_1.allFacesSsdMobilenetv1Factory(exports.nets.ssdMobilenetv1, exports.nets.faceLandmark68Net, exports.nets.faceRecognitionNet); export var allFacesTinyYolov2 = allFacesTinyYolov2Factory(nets.tinyYolov2, nets.faceLandmark68Net, nets.faceRecognitionNet);
exports.allFacesTinyYolov2 = allFacesFactory_1.allFacesTinyYolov2Factory(exports.nets.tinyYolov2, exports.nets.faceLandmark68Net, exports.nets.faceRecognitionNet); export var allFacesMtcnn = allFacesMtcnnFactory(nets.mtcnn, nets.faceRecognitionNet);
exports.allFacesMtcnn = allFacesFactory_1.allFacesMtcnnFactory(exports.nets.mtcnn, exports.nets.faceRecognitionNet); export var allFaces = allFacesSsdMobilenetv1;
exports.allFaces = exports.allFacesSsdMobilenetv1;
//# sourceMappingURL=globalApi.js.map //# sourceMappingURL=globalApi.js.map
\ No newline at end of file
{"version":3,"file":"globalApi.js","sourceRoot":"","sources":["../src/globalApi.ts"],"names":[],"mappings":"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"} {"version":3,"file":"globalApi.js","sourceRoot":"","sources":["../src/globalApi.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; import * as tf from '@tensorflow/tfjs-core';
export { tf }; export { tf };
export * from './BoundingBox'; export * from 'tfjs-image-recognition-base';
export * from './FaceDetection'; export * from './classes';
export * from './FullFaceDescription'; export * from './dom';
export * from './NetInput';
export * from './Point';
export * from './Rect';
export * from './drawing';
export * from './euclideanDistance'; export * from './euclideanDistance';
export * from './extractFaces';
export * from './extractFaceTensors';
export * from './faceDetectionNet'; export * from './faceDetectionNet';
export * from './faceLandmarkNet'; export * from './faceLandmarkNet';
export * from './faceRecognitionNet'; export * from './faceRecognitionNet';
export * from './globalApi'; export * from './globalApi';
export * from './iou';
export * from './mtcnn'; export * from './mtcnn';
export * from './padToSquare';
export * from './tinyYolov2'; export * from './tinyYolov2';
export * from './toNetInput';
export * from './utils';
export * from './types';
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); export { tf };
var tslib_1 = require("tslib"); export * from 'tfjs-image-recognition-base';
var tf = require("@tensorflow/tfjs-core"); export * from './classes';
exports.tf = tf; export * from './dom';
tslib_1.__exportStar(require("./BoundingBox"), exports); export * from './euclideanDistance';
tslib_1.__exportStar(require("./FaceDetection"), exports); export * from './faceDetectionNet';
tslib_1.__exportStar(require("./FullFaceDescription"), exports); export * from './faceLandmarkNet';
tslib_1.__exportStar(require("./NetInput"), exports); export * from './faceRecognitionNet';
tslib_1.__exportStar(require("./Point"), exports); export * from './globalApi';
tslib_1.__exportStar(require("./Rect"), exports); export * from './mtcnn';
tslib_1.__exportStar(require("./drawing"), exports); export * from './tinyYolov2';
tslib_1.__exportStar(require("./euclideanDistance"), exports);
tslib_1.__exportStar(require("./extractFaces"), exports);
tslib_1.__exportStar(require("./extractFaceTensors"), 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("./iou"), exports);
tslib_1.__exportStar(require("./mtcnn"), exports);
tslib_1.__exportStar(require("./padToSquare"), exports);
tslib_1.__exportStar(require("./tinyYolov2"), exports);
tslib_1.__exportStar(require("./toNetInput"), exports);
tslib_1.__exportStar(require("./utils"), exports);
//# sourceMappingURL=index.js.map //# 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;AAIJ,wDAA8B;AAC9B,0DAAgC;AAChC,gEAAsC;AACtC,qDAA2B;AAC3B,kDAAwB;AACxB,iDAAuB;AAEvB,oDAA0B;AAC1B,8DAAoC;AACpC,yDAA8B;AAC9B,+DAAoC;AACpC,6DAAmC;AACnC,4DAAkC;AAClC,+DAAqC;AACrC,sDAA4B;AAC5B,gDAAsB;AACtB,kDAAwB;AACxB,wDAA8B;AAC9B,uDAA6B;AAC7B,uDAA6B;AAC7B,kDAAwB"} {"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 \ No newline at end of file
import { BoundingBox } from './BoundingBox';
export declare function iou(box1: BoundingBox, box2: BoundingBox, isIOU?: boolean): number;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function iou(box1, box2, isIOU) {
if (isIOU === void 0) { isIOU = true; }
var width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left) + 1);
var height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top) + 1);
var interSection = width * height;
return isIOU
? interSection / (box1.area + box2.area - interSection)
: interSection / Math.min(box1.area, box2.area);
}
exports.iou = iou;
//# sourceMappingURL=iou.js.map
\ No newline at end of file
{"version":3,"file":"iou.js","sourceRoot":"","sources":["../src/iou.ts"],"names":[],"mappings":";;AAEA,aAAoB,IAAiB,EAAE,IAAiB,EAAE,KAAqB;IAArB,sBAAA,EAAA,YAAqB;IAC7E,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAClG,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IACnG,IAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAA;IAEnC,OAAO,KAAK;QACV,CAAC,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACvD,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AACnD,CAAC;AARD,kBAQC"}
\ No newline at end of file
import { Rect } from '../Rect';
export declare class BoundingBox {
private _left;
private _top;
private _right;
private _bottom;
constructor(_left: number, _top: number, _right: number, _bottom: number);
readonly left: number;
readonly top: number;
readonly right: number;
readonly bottom: number;
readonly width: number;
readonly height: number;
toSquare(): BoundingBox;
round(): BoundingBox;
padAtBorders(imageHeight: number, imageWidth: number): {
dy: number;
edy: number;
dx: number;
edx: number;
y: number;
ey: number;
x: number;
ex: number;
w: number;
h: number;
};
calibrate(region: BoundingBox): BoundingBox;
toRect(): Rect;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Rect_1 = require("../Rect");
var BoundingBox = /** @class */ (function () {
function BoundingBox(_left, _top, _right, _bottom) {
this._left = _left;
this._top = _top;
this._right = _right;
this._bottom = _bottom;
}
Object.defineProperty(BoundingBox.prototype, "left", {
get: function () {
return this._left;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BoundingBox.prototype, "top", {
get: function () {
return this._top;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BoundingBox.prototype, "right", {
get: function () {
return this._right;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BoundingBox.prototype, "bottom", {
get: function () {
return this._bottom;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BoundingBox.prototype, "width", {
get: function () {
return this.right - this.left;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BoundingBox.prototype, "height", {
get: function () {
return this.bottom - this.top;
},
enumerable: true,
configurable: true
});
BoundingBox.prototype.toSquare = function () {
var _a = this, left = _a.left, top = _a.top, right = _a.right, bottom = _a.bottom;
var off = (Math.abs(this.width - this.height) / 2);
if (this.width < this.height) {
left -= off;
right += off;
}
if (this.height < this.width) {
top -= off;
bottom += off;
}
return new BoundingBox(left, top, right, bottom);
};
BoundingBox.prototype.round = function () {
return new BoundingBox(Math.round(this.left), Math.round(this.top), Math.round(this.right), Math.round(this.bottom));
};
BoundingBox.prototype.padAtBorders = function (imageHeight, imageWidth) {
var w = this.width + 1;
var h = this.height + 1;
var dx = 1;
var dy = 1;
var edx = w;
var edy = h;
var x = this.left;
var y = this.top;
var ex = this.right;
var ey = this.bottom;
if (ex > imageWidth) {
edx = -ex + imageWidth + w;
ex = imageWidth;
}
if (ey > imageHeight) {
edy = -ey + imageHeight + h;
ey = imageHeight;
}
if (x < 1) {
edy = 2 - x;
x = 1;
}
if (y < 1) {
edy = 2 - y;
y = 1;
}
return { dy: dy, edy: edy, dx: dx, edx: edx, y: y, ey: ey, x: x, ex: ex, w: w, h: h };
};
BoundingBox.prototype.calibrate = function (region) {
return new BoundingBox(this.left + (region.left * this.width), this.top + (region.top * this.height), this.right + (region.right * this.width), this.bottom + (region.bottom * this.height)).toSquare().round();
};
BoundingBox.prototype.toRect = function () {
return new Rect_1.Rect(this.left, this.top, this.width, this.height);
};
return BoundingBox;
}());
exports.BoundingBox = BoundingBox;
//# sourceMappingURL=BoundingBox.js.map
\ No newline at end of file
{"version":3,"file":"BoundingBox.js","sourceRoot":"","sources":["../../src/mtcnn/BoundingBox.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"FaceLandmarks5.js","sourceRoot":"","sources":["../../src/mtcnn/FaceLandmarks5.ts"],"names":[],"mappings":";;;AAAA,4DAA2D;AAC3D,kDAAiD;AAGjD;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,+BAAc,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
import { NeuralNetwork } from '../commons/NeuralNetwork'; import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base';
import { NetInput } from '../NetInput';
import { TNetInput } from '../types';
import { MtcnnForwardParams, MtcnnResult, NetParams } from './types'; import { MtcnnForwardParams, MtcnnResult, NetParams } from './types';
export declare class Mtcnn extends NeuralNetwork<NetParams> { export declare class Mtcnn extends NeuralNetwork<NetParams> {
constructor(); constructor();
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import * as tf from '@tensorflow/tfjs-core';
var tslib_1 = require("tslib"); import { NeuralNetwork, Point, Rect, toNetInput } from 'tfjs-image-recognition-base';
var tf = require("@tensorflow/tfjs-core"); import { FaceDetection } from '../classes/FaceDetection';
var NeuralNetwork_1 = require("../commons/NeuralNetwork"); import { FaceLandmarks5 } from '../classes/FaceLandmarks5';
var FaceDetection_1 = require("../FaceDetection"); import { bgrToRgbTensor } from './bgrToRgbTensor';
var Point_1 = require("../Point"); import { CELL_SIZE } from './config';
var Rect_1 = require("../Rect"); import { extractParams } from './extractParams';
var toNetInput_1 = require("../toNetInput"); import { getDefaultMtcnnForwardParams } from './getDefaultMtcnnForwardParams';
var bgrToRgbTensor_1 = require("./bgrToRgbTensor"); import { getSizesForScale } from './getSizesForScale';
var config_1 = require("./config"); import { loadQuantizedParams } from './loadQuantizedParams';
var extractParams_1 = require("./extractParams"); import { pyramidDown } from './pyramidDown';
var FaceLandmarks5_1 = require("./FaceLandmarks5"); import { stage1 } from './stage1';
var getDefaultMtcnnForwardParams_1 = require("./getDefaultMtcnnForwardParams"); import { stage2 } from './stage2';
var getSizesForScale_1 = require("./getSizesForScale"); import { stage3 } from './stage3';
var loadQuantizedParams_1 = require("./loadQuantizedParams");
var pyramidDown_1 = require("./pyramidDown");
var stage1_1 = require("./stage1");
var stage2_1 = require("./stage2");
var stage3_1 = require("./stage3");
var Mtcnn = /** @class */ (function (_super) { var Mtcnn = /** @class */ (function (_super) {
tslib_1.__extends(Mtcnn, _super); tslib_1.__extends(Mtcnn, _super);
function Mtcnn() { function Mtcnn() {
...@@ -42,7 +37,7 @@ var Mtcnn = /** @class */ (function (_super) { ...@@ -42,7 +37,7 @@ var Mtcnn = /** @class */ (function (_super) {
stats = {}; stats = {};
tsTotal = Date.now(); tsTotal = Date.now();
imgTensor = tf.tidy(function () { imgTensor = tf.tidy(function () {
return bgrToRgbTensor_1.bgrToRgbTensor(tf.expandDims(inputTensor).toFloat()); return bgrToRgbTensor(tf.expandDims(inputTensor).toFloat());
}); });
onReturn = function (results) { onReturn = function (results) {
// dispose tensors on return // dispose tensors on return
...@@ -52,17 +47,17 @@ var Mtcnn = /** @class */ (function (_super) { ...@@ -52,17 +47,17 @@ var Mtcnn = /** @class */ (function (_super) {
return results; return results;
}; };
_a = imgTensor.shape.slice(1), height = _a[0], width = _a[1]; _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 = Object.assign({}, getDefaultMtcnnForwardParams(), 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])) scales = (scaleSteps || pyramidDown(minFaceSize, scaleFactor, [height, width]))
.filter(function (scale) { .filter(function (scale) {
var sizes = getSizesForScale_1.getSizesForScale(scale, [height, width]); var sizes = getSizesForScale(scale, [height, width]);
return Math.min(sizes.width, sizes.height) > config_1.CELL_SIZE; return Math.min(sizes.width, sizes.height) > CELL_SIZE;
}) })
.slice(0, maxNumScales); .slice(0, maxNumScales);
stats.scales = scales; stats.scales = scales;
stats.pyramid = scales.map(function (scale) { return getSizesForScale_1.getSizesForScale(scale, [height, width]); }); stats.pyramid = scales.map(function (scale) { return getSizesForScale(scale, [height, width]); });
ts = Date.now(); ts = Date.now();
return [4 /*yield*/, stage1_1.stage1(imgTensor, scales, scoreThresholds[0], params.pnet, stats)]; return [4 /*yield*/, stage1(imgTensor, scales, scoreThresholds[0], params.pnet, stats)];
case 1: case 1:
out1 = _c.sent(); out1 = _c.sent();
stats.total_stage1 = Date.now() - ts; stats.total_stage1 = Date.now() - ts;
...@@ -73,7 +68,7 @@ var Mtcnn = /** @class */ (function (_super) { ...@@ -73,7 +68,7 @@ var Mtcnn = /** @class */ (function (_super) {
// using the inputCanvas to extract and resize the image patches, since it is faster // using the inputCanvas to extract and resize the image patches, since it is faster
// than doing this on the gpu // than doing this on the gpu
ts = Date.now(); ts = Date.now();
return [4 /*yield*/, stage2_1.stage2(inputCanvas, out1.boxes, scoreThresholds[1], params.rnet, stats)]; return [4 /*yield*/, stage2(inputCanvas, out1.boxes, scoreThresholds[1], params.rnet, stats)];
case 2: case 2:
out2 = _c.sent(); out2 = _c.sent();
stats.total_stage2 = Date.now() - ts; stats.total_stage2 = Date.now() - ts;
...@@ -82,16 +77,16 @@ var Mtcnn = /** @class */ (function (_super) { ...@@ -82,16 +77,16 @@ var Mtcnn = /** @class */ (function (_super) {
} }
stats.stage3_numInputBoxes = out2.boxes.length; stats.stage3_numInputBoxes = out2.boxes.length;
ts = Date.now(); ts = Date.now();
return [4 /*yield*/, stage3_1.stage3(inputCanvas, out2.boxes, scoreThresholds[2], params.onet, stats)]; return [4 /*yield*/, stage3(inputCanvas, out2.boxes, scoreThresholds[2], params.onet, stats)];
case 3: case 3:
out3 = _c.sent(); out3 = _c.sent();
stats.total_stage3 = Date.now() - ts; stats.total_stage3 = Date.now() - ts;
results = out3.boxes.map(function (box, idx) { return ({ results = out3.boxes.map(function (box, idx) { return ({
faceDetection: new FaceDetection_1.FaceDetection(out3.scores[idx], new Rect_1.Rect(box.left / width, box.top / height, box.width / width, box.height / height), { faceDetection: new FaceDetection(out3.scores[idx], new Rect(box.left / width, box.top / height, box.width / width, box.height / height), {
height: height, height: height,
width: width width: width
}), }),
faceLandmarks: new FaceLandmarks5_1.FaceLandmarks5(out3.points[idx].map(function (pt) { return pt.div(new Point_1.Point(width, height)); }), { width: width, height: height }) faceLandmarks: new FaceLandmarks5(out3.points[idx].map(function (pt) { return pt.div(new Point(width, height)); }), { width: width, height: height })
}); }); }); });
return [2 /*return*/, onReturn({ results: results, stats: stats })]; return [2 /*return*/, onReturn({ results: results, stats: stats })];
} }
...@@ -106,7 +101,7 @@ var Mtcnn = /** @class */ (function (_super) { ...@@ -106,7 +101,7 @@ var Mtcnn = /** @class */ (function (_super) {
switch (_b.label) { switch (_b.label) {
case 0: case 0:
_a = this.forwardInput; _a = this.forwardInput;
return [4 /*yield*/, toNetInput_1.toNetInput(input, true, true)]; return [4 /*yield*/, toNetInput(input, true, true)];
case 1: return [4 /*yield*/, _a.apply(this, [_b.sent(), case 1: return [4 /*yield*/, _a.apply(this, [_b.sent(),
forwardParams])]; forwardParams])];
case 2: return [2 /*return*/, (_b.sent()).results]; case 2: return [2 /*return*/, (_b.sent()).results];
...@@ -122,7 +117,7 @@ var Mtcnn = /** @class */ (function (_super) { ...@@ -122,7 +117,7 @@ var Mtcnn = /** @class */ (function (_super) {
switch (_b.label) { switch (_b.label) {
case 0: case 0:
_a = this.forwardInput; _a = this.forwardInput;
return [4 /*yield*/, toNetInput_1.toNetInput(input, true, true)]; return [4 /*yield*/, toNetInput(input, true, true)];
case 1: return [2 /*return*/, _a.apply(this, [_b.sent(), case 1: return [2 /*return*/, _a.apply(this, [_b.sent(),
forwardParams])]; forwardParams])];
} }
...@@ -131,12 +126,12 @@ var Mtcnn = /** @class */ (function (_super) { ...@@ -131,12 +126,12 @@ var Mtcnn = /** @class */ (function (_super) {
}; };
// none of the param tensors are quantized yet // none of the param tensors are quantized yet
Mtcnn.prototype.loadQuantizedParams = function (uri) { Mtcnn.prototype.loadQuantizedParams = function (uri) {
return loadQuantizedParams_1.loadQuantizedParams(uri); return loadQuantizedParams(uri);
}; };
Mtcnn.prototype.extractParams = function (weights) { Mtcnn.prototype.extractParams = function (weights) {
return extractParams_1.extractParams(weights); return extractParams(weights);
}; };
return Mtcnn; return Mtcnn;
}(NeuralNetwork_1.NeuralNetwork)); }(NeuralNetwork));
exports.Mtcnn = Mtcnn; export { Mtcnn };
//# sourceMappingURL=Mtcnn.js.map //# sourceMappingURL=Mtcnn.js.map
\ No newline at end of file
{"version":3,"file":"Mtcnn.js","sourceRoot":"","sources":["../../src/mtcnn/Mtcnn.ts"],"names":[],"mappings":"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"} {"version":3,"file":"Mtcnn.js","sourceRoot":"","sources":["../../src/mtcnn/Mtcnn.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); import { convLayer } from 'tfjs-tiny-yolov2';
var tf = require("@tensorflow/tfjs-core"); import { fullyConnectedLayer } from '../faceLandmarkNet/fullyConnectedLayer';
var convLayer_1 = require("../commons/convLayer"); import { prelu } from './prelu';
var fullyConnectedLayer_1 = require("../faceLandmarkNet/fullyConnectedLayer"); import { sharedLayer } from './sharedLayers';
var prelu_1 = require("./prelu"); export function ONet(x, params) {
var sharedLayers_1 = require("./sharedLayers");
function ONet(x, params) {
return tf.tidy(function () { return tf.tidy(function () {
var out = sharedLayers_1.sharedLayer(x, params); var out = sharedLayer(x, params);
out = tf.maxPool(out, [2, 2], [2, 2], 'same'); out = tf.maxPool(out, [2, 2], [2, 2], 'same');
out = convLayer_1.convLayer(out, params.conv4, 'valid'); out = convLayer(out, params.conv4, 'valid');
out = prelu_1.prelu(out, params.prelu4_alpha); out = prelu(out, params.prelu4_alpha);
var vectorized = tf.reshape(out, [out.shape[0], params.fc1.weights.shape[0]]); var vectorized = tf.reshape(out, [out.shape[0], params.fc1.weights.shape[0]]);
var fc1 = fullyConnectedLayer_1.fullyConnectedLayer(vectorized, params.fc1); var fc1 = fullyConnectedLayer(vectorized, params.fc1);
var prelu5 = prelu_1.prelu(fc1, params.prelu5_alpha); var prelu5 = prelu(fc1, params.prelu5_alpha);
var fc2_1 = fullyConnectedLayer_1.fullyConnectedLayer(prelu5, params.fc2_1); var fc2_1 = fullyConnectedLayer(prelu5, params.fc2_1);
var max = tf.expandDims(tf.max(fc2_1, 1), 1); var max = tf.expandDims(tf.max(fc2_1, 1), 1);
var prob = tf.softmax(tf.sub(fc2_1, max), 1); var prob = tf.softmax(tf.sub(fc2_1, max), 1);
var regions = fullyConnectedLayer_1.fullyConnectedLayer(prelu5, params.fc2_2); var regions = fullyConnectedLayer(prelu5, params.fc2_2);
var points = fullyConnectedLayer_1.fullyConnectedLayer(prelu5, params.fc2_3); var points = fullyConnectedLayer(prelu5, params.fc2_3);
var scores = tf.unstack(prob, 1)[1]; var scores = tf.unstack(prob, 1)[1];
return { scores: scores, regions: regions, points: points }; return { scores: scores, regions: regions, points: points };
}); });
} }
exports.ONet = ONet;
//# sourceMappingURL=ONet.js.map //# sourceMappingURL=ONet.js.map
\ No newline at end of file
{"version":3,"file":"ONet.js","sourceRoot":"","sources":["../../src/mtcnn/ONet.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,kDAAiD;AACjD,8EAA6E;AAC7E,iCAAgC;AAChC,+CAA6C;AAG7C,cAAqB,CAAc,EAAE,MAAkB;IACrD,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,0BAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAChC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAC7C,GAAG,GAAG,qBAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC3C,GAAG,GAAG,aAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAElD,IAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAgB,CAAA;QAC9F,IAAM,GAAG,GAAG,yCAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;QACvD,IAAM,MAAM,GAAG,aAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,yCAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACvD,IAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAE9C,IAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAgB,CAAA;QAC7D,IAAM,OAAO,GAAG,yCAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACzD,IAAM,MAAM,GAAG,yCAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QAExD,IAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAgB,CAAA;QACpD,OAAO,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,MAAM,QAAA,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC;AArBD,oBAqBC"} {"version":3,"file":"ONet.js","sourceRoot":"","sources":["../../src/mtcnn/ONet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,eAAe,CAAc,EAAE,MAAkB;IACrD,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAChC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAC7C,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC3C,GAAG,GAAG,KAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAElD,IAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAgB,CAAA;QAC9F,IAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;QACvD,IAAM,MAAM,GAAG,KAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACvD,IAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAE9C,IAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAgB,CAAA;QAC7D,IAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACzD,IAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QAExD,IAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAgB,CAAA;QACpD,OAAO,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,MAAM,QAAA,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); import { convLayer } from 'tfjs-tiny-yolov2';
var tf = require("@tensorflow/tfjs-core"); import { sharedLayer } from './sharedLayers';
var convLayer_1 = require("../commons/convLayer"); export function PNet(x, params) {
var sharedLayers_1 = require("./sharedLayers");
function PNet(x, params) {
return tf.tidy(function () { return tf.tidy(function () {
var out = sharedLayers_1.sharedLayer(x, params, true); var out = sharedLayer(x, params, true);
var conv = convLayer_1.convLayer(out, params.conv4_1, 'valid'); var conv = convLayer(out, params.conv4_1, 'valid');
var max = tf.expandDims(tf.max(conv, 3), 3); var max = tf.expandDims(tf.max(conv, 3), 3);
var prob = tf.softmax(tf.sub(conv, max), 3); var prob = tf.softmax(tf.sub(conv, max), 3);
var regions = convLayer_1.convLayer(out, params.conv4_2, 'valid'); var regions = convLayer(out, params.conv4_2, 'valid');
return { prob: prob, regions: regions }; return { prob: prob, regions: regions };
}); });
} }
exports.PNet = PNet;
//# sourceMappingURL=PNet.js.map //# sourceMappingURL=PNet.js.map
\ No newline at end of file
{"version":3,"file":"PNet.js","sourceRoot":"","sources":["../../src/mtcnn/PNet.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,kDAAiD;AACjD,+CAA6C;AAG7C,cAAqB,CAAc,EAAE,MAAkB;IACrD,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,0BAAW,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QACtC,IAAM,IAAI,GAAG,qBAAS,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACpD,IAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7C,IAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAgB,CAAA;QAC5D,IAAM,OAAO,GAAG,qBAAS,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAEvD,OAAO,EAAE,IAAI,MAAA,EAAE,OAAO,SAAA,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;AACJ,CAAC;AAXD,oBAWC"} {"version":3,"file":"PNet.js","sourceRoot":"","sources":["../../src/mtcnn/PNet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,eAAe,CAAc,EAAE,MAAkB;IACrD,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QACtC,IAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACpD,IAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7C,IAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAgB,CAAA;QAC5D,IAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAEvD,OAAO,EAAE,IAAI,MAAA,EAAE,OAAO,SAAA,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); import { fullyConnectedLayer } from '../faceLandmarkNet/fullyConnectedLayer';
var tf = require("@tensorflow/tfjs-core"); import { prelu } from './prelu';
var fullyConnectedLayer_1 = require("../faceLandmarkNet/fullyConnectedLayer"); import { sharedLayer } from './sharedLayers';
var prelu_1 = require("./prelu"); export function RNet(x, params) {
var sharedLayers_1 = require("./sharedLayers");
function RNet(x, params) {
return tf.tidy(function () { return tf.tidy(function () {
var convOut = sharedLayers_1.sharedLayer(x, params); var convOut = sharedLayer(x, params);
var vectorized = tf.reshape(convOut, [convOut.shape[0], params.fc1.weights.shape[0]]); var vectorized = tf.reshape(convOut, [convOut.shape[0], params.fc1.weights.shape[0]]);
var fc1 = fullyConnectedLayer_1.fullyConnectedLayer(vectorized, params.fc1); var fc1 = fullyConnectedLayer(vectorized, params.fc1);
var prelu4 = prelu_1.prelu(fc1, params.prelu4_alpha); var prelu4 = prelu(fc1, params.prelu4_alpha);
var fc2_1 = fullyConnectedLayer_1.fullyConnectedLayer(prelu4, params.fc2_1); var fc2_1 = fullyConnectedLayer(prelu4, params.fc2_1);
var max = tf.expandDims(tf.max(fc2_1, 1), 1); var max = tf.expandDims(tf.max(fc2_1, 1), 1);
var prob = tf.softmax(tf.sub(fc2_1, max), 1); var prob = tf.softmax(tf.sub(fc2_1, max), 1);
var regions = fullyConnectedLayer_1.fullyConnectedLayer(prelu4, params.fc2_2); var regions = fullyConnectedLayer(prelu4, params.fc2_2);
var scores = tf.unstack(prob, 1)[1]; var scores = tf.unstack(prob, 1)[1];
return { scores: scores, regions: regions }; return { scores: scores, regions: regions };
}); });
} }
exports.RNet = RNet;
//# sourceMappingURL=RNet.js.map //# sourceMappingURL=RNet.js.map
\ No newline at end of file
{"version":3,"file":"RNet.js","sourceRoot":"","sources":["../../src/mtcnn/RNet.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,8EAA6E;AAC7E,iCAAgC;AAChC,+CAA6C;AAG7C,cAAqB,CAAc,EAAE,MAAkB;IACrD,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAM,OAAO,GAAG,0BAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QACtC,IAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAgB,CAAA;QACtG,IAAM,GAAG,GAAG,yCAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;QACvD,IAAM,MAAM,GAAG,aAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,yCAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACvD,IAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC9C,IAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAgB,CAAA;QAC7D,IAAM,OAAO,GAAG,yCAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QAEzD,IAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAgB,CAAA;QACpD,OAAO,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC;AAfD,oBAeC"} {"version":3,"file":"RNet.js","sourceRoot":"","sources":["../../src/mtcnn/RNet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,eAAe,CAAc,EAAE,MAAkB;IACrD,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAM,OAAO,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QACtC,IAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAgB,CAAA;QACtG,IAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;QACvD,IAAM,MAAM,GAAG,KAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACvD,IAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC9C,IAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAgB,CAAA;QAC7D,IAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QAEzD,IAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAgB,CAAA;QACpD,OAAO,EAAE,MAAM,QAAA,EAAE,OAAO,SAAA,EAAE,CAAA;IAC5B,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); export function bgrToRgbTensor(tensor) {
var tf = require("@tensorflow/tfjs-core");
function bgrToRgbTensor(tensor) {
return tf.tidy(function () { return tf.stack(tf.unstack(tensor, 3).reverse(), 3); }); return tf.tidy(function () { return tf.stack(tf.unstack(tensor, 3).reverse(), 3); });
} }
exports.bgrToRgbTensor = bgrToRgbTensor;
//# sourceMappingURL=bgrToRgbTensor.js.map //# sourceMappingURL=bgrToRgbTensor.js.map
\ No newline at end of file
{"version":3,"file":"bgrToRgbTensor.js","sourceRoot":"","sources":["../../src/mtcnn/bgrToRgbTensor.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,wBAA+B,MAAmB;IAChD,OAAO,EAAE,CAAC,IAAI,CACZ,cAAM,OAAA,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAA5C,CAA4C,CACpC,CAAA;AAClB,CAAC;AAJD,wCAIC"} {"version":3,"file":"bgrToRgbTensor.js","sourceRoot":"","sources":["../../src/mtcnn/bgrToRgbTensor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,MAAM,yBAAyB,MAAmB;IAChD,OAAO,EAAE,CAAC,IAAI,CACZ,cAAM,OAAA,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAA5C,CAA4C,CACpC,CAAA;AAClB,CAAC"}
\ No newline at end of file \ No newline at end of file
export declare function calculateScaleSteps(numScales: number, minFaceSize: number, dims: number[]): number[];
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function calculateScaleSteps(numScales, minFaceSize, dims) {
var height = dims[0], width = dims[1];
var maxDim = Math.max(height, width);
if (Math.min(height, width) < minFaceSize) {
throw new Error("Image dimensions: " + height + " x " + width + " are smaller than specified minimum face size of " + minFaceSize);
}
var scaleStep = (maxDim - minFaceSize) / numScales;
return Array(numScales).fill(0).map(function (_, i) { return ((i + 1) * scaleStep + minFaceSize) / maxDim; }).reverse();
}
exports.calculateScaleSteps = calculateScaleSteps;
//# sourceMappingURL=calculateScaleSteps.js.map
\ No newline at end of file
{"version":3,"file":"calculateScaleSteps.js","sourceRoot":"","sources":["../../src/mtcnn/calculateScaleSteps.ts"],"names":[],"mappings":";;AAAA,6BAAoC,SAAiB,EAAE,WAAmB,EAAE,IAAc;IAEjF,IAAA,gBAAM,EAAE,eAAK,CAAQ;IAC5B,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAEtC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,WAAW,EAAE;QACzC,MAAM,IAAI,KAAK,CAAC,uBAAqB,MAAM,WAAM,KAAK,yDAAoD,WAAa,CAAC,CAAA;KACzH;IAED,IAAM,SAAS,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,SAAS,CAAA;IAEpD,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,GAAG,WAAW,CAAC,GAAG,MAAM,EAA5C,CAA4C,CAAC,CAAC,OAAO,EAAE,CAAA;AACvG,CAAC;AAZD,kDAYC"}
\ No newline at end of file
"use strict"; export var CELL_STRIDE = 2;
Object.defineProperty(exports, "__esModule", { value: true }); export var CELL_SIZE = 12;
exports.CELL_STRIDE = 2;
exports.CELL_SIZE = 12;
//# sourceMappingURL=config.js.map //# sourceMappingURL=config.js.map
\ No newline at end of file
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mtcnn/config.ts"],"names":[],"mappings":";;AAAa,QAAA,WAAW,GAAG,CAAC,CAAA;AACf,QAAA,SAAS,GAAG,EAAE,CAAA"} {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mtcnn/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,WAAW,GAAG,CAAC,CAAA;AAC5B,MAAM,CAAC,IAAM,SAAS,GAAG,EAAE,CAAA"}
\ No newline at end of file \ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; import * as tf from '@tensorflow/tfjs-core';
import { BoundingBox } from '../BoundingBox'; import { BoundingBox, Dimensions } from 'tfjs-image-recognition-base';
import { Dimensions } from '../types';
export declare function extractImagePatches(img: HTMLCanvasElement, boxes: BoundingBox[], {width, height}: Dimensions): Promise<tf.Tensor4D[]>; export declare function extractImagePatches(img: HTMLCanvasElement, boxes: BoundingBox[], {width, height}: Dimensions): Promise<tf.Tensor4D[]>;
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import * as tf from '@tensorflow/tfjs-core';
var tslib_1 = require("tslib"); import { normalize } from './normalize';
var tf = require("@tensorflow/tfjs-core"); import { getContext2dOrThrow, createCanvas } from 'tfjs-image-recognition-base';
var utils_1 = require("../utils"); export function extractImagePatches(img, boxes, _a) {
var normalize_1 = require("./normalize");
function extractImagePatches(img, boxes, _a) {
var width = _a.width, height = _a.height; var width = _a.width, height = _a.height;
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var _this = this; var _this = this;
...@@ -12,7 +10,7 @@ function extractImagePatches(img, boxes, _a) { ...@@ -12,7 +10,7 @@ function extractImagePatches(img, boxes, _a) {
return tslib_1.__generator(this, function (_b) { return tslib_1.__generator(this, function (_b) {
switch (_b.label) { switch (_b.label) {
case 0: case 0:
imgCtx = utils_1.getContext2dOrThrow(img); imgCtx = getContext2dOrThrow(img);
return [4 /*yield*/, Promise.all(boxes.map(function (box) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return [4 /*yield*/, Promise.all(boxes.map(function (box) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var _a, y, ey, x, ex, fromX, fromY, imgData; var _a, y, ey, x, ex, fromX, fromY, imgData;
return tslib_1.__generator(this, function (_b) { return tslib_1.__generator(this, function (_b) {
...@@ -27,8 +25,8 @@ function extractImagePatches(img, boxes, _a) { ...@@ -27,8 +25,8 @@ function extractImagePatches(img, boxes, _a) {
bitmaps = _b.sent(); bitmaps = _b.sent();
imagePatchesDatas = []; imagePatchesDatas = [];
bitmaps.forEach(function (bmp) { bitmaps.forEach(function (bmp) {
var patch = utils_1.createCanvas({ width: width, height: height }); var patch = createCanvas({ width: width, height: height });
var patchCtx = utils_1.getContext2dOrThrow(patch); var patchCtx = getContext2dOrThrow(patch);
patchCtx.drawImage(bmp, 0, 0, width, height); patchCtx.drawImage(bmp, 0, 0, width, height);
var data = patchCtx.getImageData(0, 0, width, height).data; var data = patchCtx.getImageData(0, 0, width, height).data;
var currData = []; var currData = [];
...@@ -43,7 +41,7 @@ function extractImagePatches(img, boxes, _a) { ...@@ -43,7 +41,7 @@ function extractImagePatches(img, boxes, _a) {
return [2 /*return*/, imagePatchesDatas.map(function (data) { return [2 /*return*/, imagePatchesDatas.map(function (data) {
var t = tf.tidy(function () { var t = tf.tidy(function () {
var imagePatchTensor = tf.transpose(tf.tensor4d(data, [1, width, height, 3]), [0, 2, 1, 3]).toFloat(); var imagePatchTensor = tf.transpose(tf.tensor4d(data, [1, width, height, 3]), [0, 2, 1, 3]).toFloat();
return normalize_1.normalize(imagePatchTensor); return normalize(imagePatchTensor);
}); });
return t; return t;
})]; })];
...@@ -51,5 +49,4 @@ function extractImagePatches(img, boxes, _a) { ...@@ -51,5 +49,4 @@ function extractImagePatches(img, boxes, _a) {
}); });
}); });
} }
exports.extractImagePatches = extractImagePatches;
//# sourceMappingURL=extractImagePatches.js.map //# sourceMappingURL=extractImagePatches.js.map
\ No newline at end of file
{"version":3,"file":"extractImagePatches.js","sourceRoot":"","sources":["../../src/mtcnn/extractImagePatches.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAI5C,kCAA6D;AAC7D,yCAAwC;AAExC,6BACE,GAAsB,EACtB,KAAoB,EACpB,EAA6B;QAA3B,gBAAK,EAAE,kBAAM;;;;;;;oBAIT,MAAM,GAAG,2BAAmB,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,oBAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;wBAC7C,IAAM,QAAQ,GAAG,2BAAmB,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"} {"version":3,"file":"extractImagePatches.js","sourceRoot":"","sources":["../../src/mtcnn/extractImagePatches.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAA2B,mBAAmB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEzG,MAAM,8BACJ,GAAsB,EACtB,KAAoB,EACpB,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 \ No newline at end of file
import { ParamMapping } from '../commons/types'; import { ParamMapping } from 'tfjs-image-recognition-base';
import { NetParams } from './types'; import { NetParams } from './types';
export declare function extractParams(weights: Float32Array): { export declare function extractParams(weights: Float32Array): {
params: NetParams; params: NetParams;
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import * as tf from '@tensorflow/tfjs-core';
var tslib_1 = require("tslib"); import { extractWeightsFactory } from 'tfjs-image-recognition-base';
var tf = require("@tensorflow/tfjs-core"); import { extractConvParamsFactory, extractFCParamsFactory } from 'tfjs-tiny-yolov2';
var extractConvParamsFactory_1 = require("../commons/extractConvParamsFactory");
var extractFCParamsFactory_1 = require("../commons/extractFCParamsFactory");
var extractWeightsFactory_1 = require("../commons/extractWeightsFactory");
function extractorsFactory(extractWeights, paramMappings) { function extractorsFactory(extractWeights, paramMappings) {
var extractConvParams = extractConvParamsFactory_1.extractConvParamsFactory(extractWeights, paramMappings); var extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);
var extractFCParams = extractFCParamsFactory_1.extractFCParamsFactory(extractWeights, paramMappings); var extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);
function extractPReluParams(size, paramPath) { function extractPReluParams(size, paramPath) {
var alpha = tf.tensor1d(extractWeights(size)); var alpha = tf.tensor1d(extractWeights(size));
paramMappings.push({ paramPath: paramPath }); paramMappings.push({ paramPath: paramPath });
...@@ -54,8 +51,8 @@ function extractorsFactory(extractWeights, paramMappings) { ...@@ -54,8 +51,8 @@ function extractorsFactory(extractWeights, paramMappings) {
extractONetParams: extractONetParams extractONetParams: extractONetParams
}; };
} }
function extractParams(weights) { export function extractParams(weights) {
var _a = extractWeightsFactory_1.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; var _a = extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights;
var paramMappings = []; var paramMappings = [];
var _b = extractorsFactory(extractWeights, paramMappings), extractPNetParams = _b.extractPNetParams, extractRNetParams = _b.extractRNetParams, extractONetParams = _b.extractONetParams; var _b = extractorsFactory(extractWeights, paramMappings), extractPNetParams = _b.extractPNetParams, extractRNetParams = _b.extractRNetParams, extractONetParams = _b.extractONetParams;
var pnet = extractPNetParams(); var pnet = extractPNetParams();
...@@ -66,5 +63,4 @@ function extractParams(weights) { ...@@ -66,5 +63,4 @@ function extractParams(weights) {
} }
return { params: { pnet: pnet, rnet: rnet, onet: onet }, paramMappings: paramMappings }; return { params: { pnet: pnet, rnet: rnet, onet: onet }, paramMappings: paramMappings };
} }
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/mtcnn/extractParams.ts"],"names":[],"mappings":"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"} {"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../src/mtcnn/extractParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
"use strict"; export function getDefaultMtcnnForwardParams() {
Object.defineProperty(exports, "__esModule", { value: true });
function getDefaultMtcnnForwardParams() {
return { return {
minFaceSize: 20, minFaceSize: 20,
scaleFactor: 0.709, scaleFactor: 0.709,
...@@ -8,5 +6,4 @@ function getDefaultMtcnnForwardParams() { ...@@ -8,5 +6,4 @@ function getDefaultMtcnnForwardParams() {
scoreThresholds: [0.6, 0.7, 0.7] scoreThresholds: [0.6, 0.7, 0.7]
}; };
} }
exports.getDefaultMtcnnForwardParams = getDefaultMtcnnForwardParams;
//# sourceMappingURL=getDefaultMtcnnForwardParams.js.map //# sourceMappingURL=getDefaultMtcnnForwardParams.js.map
\ No newline at end of file
{"version":3,"file":"getDefaultMtcnnForwardParams.js","sourceRoot":"","sources":["../../src/mtcnn/getDefaultMtcnnForwardParams.ts"],"names":[],"mappings":";;AAAA;IACE,OAAO;QACL,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;KACjC,CAAA;AACH,CAAC;AAPD,oEAOC"} {"version":3,"file":"getDefaultMtcnnForwardParams.js","sourceRoot":"","sources":["../../src/mtcnn/getDefaultMtcnnForwardParams.ts"],"names":[],"mappings":"AAAA,MAAM;IACJ,OAAO;QACL,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;KACjC,CAAA;AACH,CAAC"}
\ No newline at end of file \ No newline at end of file
"use strict"; export function getSizesForScale(scale, _a) {
Object.defineProperty(exports, "__esModule", { value: true });
function getSizesForScale(scale, _a) {
var height = _a[0], width = _a[1]; var height = _a[0], width = _a[1];
return { return {
height: Math.floor(height * scale), height: Math.floor(height * scale),
width: Math.floor(width * scale) width: Math.floor(width * scale)
}; };
} }
exports.getSizesForScale = getSizesForScale;
//# sourceMappingURL=getSizesForScale.js.map //# sourceMappingURL=getSizesForScale.js.map
\ No newline at end of file
{"version":3,"file":"getSizesForScale.js","sourceRoot":"","sources":["../../src/mtcnn/getSizesForScale.ts"],"names":[],"mappings":";;AAAA,0BAAiC,KAAa,EAAE,EAAyB;QAAxB,cAAM,EAAE,aAAK;IAC5D,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAClC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;KACjC,CAAA;AACH,CAAC;AALD,4CAKC"} {"version":3,"file":"getSizesForScale.js","sourceRoot":"","sources":["../../src/mtcnn/getSizesForScale.ts"],"names":[],"mappings":"AAAA,MAAM,2BAA2B,KAAa,EAAE,EAAyB;QAAxB,cAAM,EAAE,aAAK;IAC5D,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAClC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;KACjC,CAAA;AACH,CAAC"}
\ No newline at end of file \ No newline at end of file
import { Mtcnn } from './Mtcnn'; import { Mtcnn } from './Mtcnn';
export * from './Mtcnn'; export * from './Mtcnn';
export * from './FaceLandmarks5';
export declare function createMtcnn(weights: Float32Array): Mtcnn; export declare function createMtcnn(weights: Float32Array): Mtcnn;
"use strict"; import { Mtcnn } from './Mtcnn';
Object.defineProperty(exports, "__esModule", { value: true }); export * from './Mtcnn';
var tslib_1 = require("tslib"); export function createMtcnn(weights) {
var Mtcnn_1 = require("./Mtcnn"); var net = new Mtcnn();
tslib_1.__exportStar(require("./Mtcnn"), exports);
tslib_1.__exportStar(require("./FaceLandmarks5"), exports);
function createMtcnn(weights) {
var net = new Mtcnn_1.Mtcnn();
net.extractWeights(weights); net.extractWeights(weights);
return net; return net;
} }
exports.createMtcnn = createMtcnn;
//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mtcnn/index.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAEhC,kDAAwB;AACxB,2DAAiC;AAEjC,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"} {"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 \ No newline at end of file
import { ParamMapping } from '../commons/types'; import { ParamMapping } from 'tfjs-image-recognition-base';
import { NetParams } from './types'; import { NetParams } from './types';
export declare function loadQuantizedParams(uri: string | undefined): Promise<{ export declare function loadQuantizedParams(uri: string | undefined): Promise<{
params: NetParams; params: NetParams;
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import { disposeUnusedWeightTensors, extractWeightEntryFactory, loadWeightMap, } from 'tfjs-image-recognition-base';
var tslib_1 = require("tslib");
var disposeUnusedWeightTensors_1 = require("../commons/disposeUnusedWeightTensors");
var extractWeightEntryFactory_1 = require("../commons/extractWeightEntryFactory");
var loadWeightMap_1 = require("../commons/loadWeightMap");
var DEFAULT_MODEL_NAME = 'mtcnn_model'; var DEFAULT_MODEL_NAME = 'mtcnn_model';
function extractorsFactory(weightMap, paramMappings) { function extractorsFactory(weightMap, paramMappings) {
var extractWeightEntry = extractWeightEntryFactory_1.extractWeightEntryFactory(weightMap, paramMappings); var extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);
function extractConvParams(prefix) { function extractConvParams(prefix) {
var filters = extractWeightEntry(prefix + "/weights", 4, prefix + "/filters"); var filters = extractWeightEntry(prefix + "/weights", 4, prefix + "/filters");
var bias = extractWeightEntry(prefix + "/bias", 1); var bias = extractWeightEntry(prefix + "/bias", 1);
...@@ -60,12 +56,12 @@ function extractorsFactory(weightMap, paramMappings) { ...@@ -60,12 +56,12 @@ function extractorsFactory(weightMap, paramMappings) {
extractONetParams: extractONetParams extractONetParams: extractONetParams
}; };
} }
function loadQuantizedParams(uri) { export 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, paramMappings, _a, extractPNetParams, extractRNetParams, extractONetParams, pnet, rnet, onet; var weightMap, paramMappings, _a, extractPNetParams, extractRNetParams, extractONetParams, pnet, rnet, onet;
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_1.loadWeightMap(uri, DEFAULT_MODEL_NAME)]; case 0: return [4 /*yield*/, loadWeightMap(uri, DEFAULT_MODEL_NAME)];
case 1: case 1:
weightMap = _b.sent(); weightMap = _b.sent();
paramMappings = []; paramMappings = [];
...@@ -73,11 +69,10 @@ function loadQuantizedParams(uri) { ...@@ -73,11 +69,10 @@ function loadQuantizedParams(uri) {
pnet = extractPNetParams(); pnet = extractPNetParams();
rnet = extractRNetParams(); rnet = extractRNetParams();
onet = extractONetParams(); onet = extractONetParams();
disposeUnusedWeightTensors_1.disposeUnusedWeightTensors(weightMap, paramMappings); disposeUnusedWeightTensors(weightMap, paramMappings);
return [2 /*return*/, { params: { pnet: pnet, rnet: rnet, onet: onet }, paramMappings: paramMappings }]; return [2 /*return*/, { params: { pnet: pnet, rnet: rnet, onet: onet }, paramMappings: paramMappings }];
} }
}); });
}); });
} }
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/mtcnn/loadQuantizedParams.ts"],"names":[],"mappings":"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"} {"version":3,"file":"loadQuantizedParams.js","sourceRoot":"","sources":["../../src/mtcnn/loadQuantizedParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
import { BoundingBox } from './BoundingBox';
export declare function nms(boxes: BoundingBox[], scores: number[], iouThreshold: number, isIOU?: boolean): number[];
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function nms(boxes, scores, iouThreshold, isIOU) {
if (isIOU === void 0) { isIOU = true; }
var areas = boxes.map(function (box) { return (box.width + 1) * (box.height + 1); });
var indicesSortedByScore = scores
.map(function (score, boxIndex) { return ({ score: score, boxIndex: boxIndex }); })
.sort(function (c1, c2) { return c1.score - c2.score; })
.map(function (c) { return c.boxIndex; });
var pick = [];
var _loop_1 = function () {
var curr = indicesSortedByScore.pop();
pick.push(curr);
var indices = indicesSortedByScore;
var outputs = [];
for (var i = 0; i < indices.length; i++) {
var idx = indices[i];
var currBox = boxes[curr];
var idxBox = boxes[idx];
var width = Math.max(0.0, Math.min(currBox.right, idxBox.right) - Math.max(currBox.left, idxBox.left) + 1);
var height = Math.max(0.0, Math.min(currBox.bottom, idxBox.bottom) - Math.max(currBox.top, idxBox.top) + 1);
var interSection = width * height;
var out = isIOU
? interSection / (areas[curr] + areas[idx] - interSection)
: interSection / Math.min(areas[curr], areas[idx]);
outputs.push(out);
}
indicesSortedByScore = indicesSortedByScore.filter(function (_, j) { return outputs[j] <= iouThreshold; });
};
while (indicesSortedByScore.length > 0) {
_loop_1();
}
return pick;
}
exports.nms = nms;
//# sourceMappingURL=nms.js.map
\ No newline at end of file
{"version":3,"file":"nms.js","sourceRoot":"","sources":["../../src/mtcnn/nms.ts"],"names":[],"mappings":";;AAEA,aACE,KAAoB,EACpB,MAAgB,EAChB,YAAoB,EACpB,KAAqB;IAArB,sBAAA,EAAA,YAAqB;IAGrB,IAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CACrB,UAAA,GAAG,IAAI,OAAA,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAlC,CAAkC,CAC1C,CAAA;IAED,IAAI,oBAAoB,GAAG,MAAM;SAC9B,GAAG,CAAC,UAAC,KAAK,EAAE,QAAQ,IAAK,OAAA,CAAC,EAAE,KAAK,OAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,EAArB,CAAqB,CAAC;SAC/C,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,OAAA,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,EAAnB,CAAmB,CAAC;SACrC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,EAAV,CAAU,CAAC,CAAA;IAEvB,IAAM,IAAI,GAAa,EAAE,CAAA;;QAGvB,IAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,EAAY,CAAA;QACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEf,IAAM,OAAO,GAAG,oBAAoB,CAAA;QAEpC,IAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,IAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAEtB,IAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;YAC3B,IAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;YAEzB,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YAC5G,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAC7G,IAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAA;YAEnC,IAAM,GAAG,GAAG,KAAK;gBACf,CAAC,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;gBAC1D,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;YAEpD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SAClB;QAED,oBAAoB,GAAG,oBAAoB,CAAC,MAAM,CAChD,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,EAA1B,CAA0B,CACrC,CAAA;IACH,CAAC;IA3BD,OAAM,oBAAoB,CAAC,MAAM,GAAG,CAAC;;KA2BpC;IAED,OAAO,IAAI,CAAA;AAEb,CAAC;AAjDD,kBAiDC"}
\ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); export function normalize(x) {
var tf = require("@tensorflow/tfjs-core");
function normalize(x) {
return tf.tidy(function () { return tf.mul(tf.sub(x, tf.scalar(127.5)), tf.scalar(0.0078125)); }); return tf.tidy(function () { return tf.mul(tf.sub(x, tf.scalar(127.5)), tf.scalar(0.0078125)); });
} }
exports.normalize = normalize;
//# sourceMappingURL=normalize.js.map //# sourceMappingURL=normalize.js.map
\ No newline at end of file
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/mtcnn/normalize.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,mBAA0B,CAAc;IACtC,OAAO,EAAE,CAAC,IAAI,CACZ,cAAM,OAAA,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAzD,CAAyD,CAChE,CAAA;AACH,CAAC;AAJD,8BAIC"} {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/mtcnn/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,MAAM,oBAAoB,CAAc;IACtC,OAAO,EAAE,CAAC,IAAI,CACZ,cAAM,OAAA,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAzD,CAAyD,CAChE,CAAA;AACH,CAAC"}
\ No newline at end of file \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); export function prelu(x, alpha) {
var tf = require("@tensorflow/tfjs-core");
function prelu(x, alpha) {
return tf.tidy(function () { return tf.tidy(function () {
return tf.add(tf.relu(x), tf.mul(alpha, tf.neg(tf.relu(tf.neg(x))))); return tf.add(tf.relu(x), tf.mul(alpha, tf.neg(tf.relu(tf.neg(x)))));
}); });
} }
exports.prelu = prelu;
//# sourceMappingURL=prelu.js.map //# sourceMappingURL=prelu.js.map
\ No newline at end of file
{"version":3,"file":"prelu.js","sourceRoot":"","sources":["../../src/mtcnn/prelu.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,eAA2C,CAAI,EAAE,KAAkB;IACjE,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,OAAA,EAAE,CAAC,GAAG,CACJ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EACV,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1C;IAHD,CAGC,CACF,CAAA;AACH,CAAC;AAPD,sBAOC"} {"version":3,"file":"prelu.js","sourceRoot":"","sources":["../../src/mtcnn/prelu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,MAAM,gBAAqC,CAAI,EAAE,KAAkB;IACjE,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,OAAA,EAAE,CAAC,GAAG,CACJ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EACV,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1C;IAHD,CAGC,CACF,CAAA;AACH,CAAC"}
\ No newline at end of file \ No newline at end of file
"use strict"; import { CELL_SIZE } from './config';
Object.defineProperty(exports, "__esModule", { value: true }); export function pyramidDown(minFaceSize, scaleFactor, dims) {
var config_1 = require("./config");
function pyramidDown(minFaceSize, scaleFactor, dims) {
var height = dims[0], width = dims[1]; var height = dims[0], width = dims[1];
var m = config_1.CELL_SIZE / minFaceSize; var m = CELL_SIZE / minFaceSize;
var scales = []; var scales = [];
var minLayer = Math.min(height, width) * m; var minLayer = Math.min(height, width) * m;
var exp = 0; var exp = 0;
...@@ -14,5 +12,4 @@ function pyramidDown(minFaceSize, scaleFactor, dims) { ...@@ -14,5 +12,4 @@ function pyramidDown(minFaceSize, scaleFactor, dims) {
} }
return scales; return scales;
} }
exports.pyramidDown = pyramidDown;
//# sourceMappingURL=pyramidDown.js.map //# sourceMappingURL=pyramidDown.js.map
\ No newline at end of file
{"version":3,"file":"pyramidDown.js","sourceRoot":"","sources":["../../src/mtcnn/pyramidDown.ts"],"names":[],"mappings":";;AAAA,mCAAqC;AAErC,qBAA4B,WAAmB,EAAE,WAAmB,EAAE,IAAc;IAE3E,IAAA,gBAAM,EAAE,eAAK,CAAQ;IAC5B,IAAM,CAAC,GAAG,kBAAS,GAAG,WAAW,CAAA;IAEjC,IAAM,MAAM,GAAG,EAAE,CAAA;IAEjB,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1C,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,OAAO,QAAQ,IAAI,EAAE,EAAE;QACrB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAA;QAC3C,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAA;QACjC,GAAG,IAAI,CAAC,CAAA;KACT;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAhBD,kCAgBC"} {"version":3,"file":"pyramidDown.js","sourceRoot":"","sources":["../../src/mtcnn/pyramidDown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,sBAAsB,WAAmB,EAAE,WAAmB,EAAE,IAAc;IAE3E,IAAA,gBAAM,EAAE,eAAK,CAAQ;IAC5B,IAAM,CAAC,GAAG,SAAS,GAAG,WAAW,CAAA;IAEjC,IAAM,MAAM,GAAG,EAAE,CAAA;IAEjB,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1C,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,OAAO,QAAQ,IAAI,EAAE,EAAE;QACrB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAA;QAC3C,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAA;QACjC,GAAG,IAAI,CAAC,CAAA;KACT;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
\ No newline at end of file \ No newline at end of file
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); import { convLayer } from 'tfjs-tiny-yolov2';
var tf = require("@tensorflow/tfjs-core"); import { prelu } from './prelu';
var convLayer_1 = require("../commons/convLayer"); export function sharedLayer(x, params, isPnet) {
var prelu_1 = require("./prelu");
function sharedLayer(x, params, isPnet) {
if (isPnet === void 0) { isPnet = false; } if (isPnet === void 0) { isPnet = false; }
return tf.tidy(function () { return tf.tidy(function () {
var out = convLayer_1.convLayer(x, params.conv1, 'valid'); var out = convLayer(x, params.conv1, 'valid');
out = prelu_1.prelu(out, params.prelu1_alpha); out = prelu(out, params.prelu1_alpha);
out = tf.maxPool(out, isPnet ? [2, 2] : [3, 3], [2, 2], 'same'); out = tf.maxPool(out, isPnet ? [2, 2] : [3, 3], [2, 2], 'same');
out = convLayer_1.convLayer(out, params.conv2, 'valid'); out = convLayer(out, params.conv2, 'valid');
out = prelu_1.prelu(out, params.prelu2_alpha); out = prelu(out, params.prelu2_alpha);
out = isPnet ? out : tf.maxPool(out, [3, 3], [2, 2], 'valid'); out = isPnet ? out : tf.maxPool(out, [3, 3], [2, 2], 'valid');
out = convLayer_1.convLayer(out, params.conv3, 'valid'); out = convLayer(out, params.conv3, 'valid');
out = prelu_1.prelu(out, params.prelu3_alpha); out = prelu(out, params.prelu3_alpha);
return out; return out;
}); });
} }
exports.sharedLayer = sharedLayer;
//# sourceMappingURL=sharedLayers.js.map //# sourceMappingURL=sharedLayers.js.map
\ No newline at end of file
{"version":3,"file":"sharedLayers.js","sourceRoot":"","sources":["../../src/mtcnn/sharedLayers.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,kDAAiD;AACjD,iCAAgC;AAGhC,qBAA4B,CAAc,EAAE,MAAoB,EAAE,MAAuB;IAAvB,uBAAA,EAAA,cAAuB;IACvF,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,qBAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC7C,GAAG,GAAG,aAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAClD,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAC9D,GAAG,GAAG,qBAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC3C,GAAG,GAAG,aAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAClD,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC7D,GAAG,GAAG,qBAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC3C,GAAG,GAAG,aAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAElD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC;AAdD,kCAcC"} {"version":3,"file":"sharedLayers.js","sourceRoot":"","sources":["../../src/mtcnn/sharedLayers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,MAAM,sBAAsB,CAAc,EAAE,MAAoB,EAAE,MAAuB;IAAvB,uBAAA,EAAA,cAAuB;IACvF,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC7C,GAAG,GAAG,KAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAClD,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAC9D,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC3C,GAAG,GAAG,KAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAClD,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC7D,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC3C,GAAG,GAAG,KAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAElD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC"}
\ No newline at end of file \ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; import * as tf from '@tensorflow/tfjs-core';
import { BoundingBox } from '../BoundingBox'; import { BoundingBox } from 'tfjs-image-recognition-base';
import { PNetParams } from './types'; import { PNetParams } from './types';
export declare function stage1(imgTensor: tf.Tensor4D, scales: number[], scoreThreshold: number, params: PNetParams, stats: any): { export declare function stage1(imgTensor: tf.Tensor4D, scales: number[], scoreThreshold: number, params: PNetParams, stats: any): {
boxes: BoundingBox[]; boxes: BoundingBox[];
......
"use strict"; import * as tf from '@tensorflow/tfjs-core';
Object.defineProperty(exports, "__esModule", { value: true }); import { BoundingBox, nonMaxSuppression, Point } from 'tfjs-image-recognition-base';
var tf = require("@tensorflow/tfjs-core"); import { CELL_SIZE, CELL_STRIDE } from './config';
var BoundingBox_1 = require("../BoundingBox"); import { getSizesForScale } from './getSizesForScale';
var nonMaxSuppression_1 = require("../commons/nonMaxSuppression"); import { normalize } from './normalize';
var Point_1 = require("../Point"); import { PNet } from './PNet';
var config_1 = require("./config");
var getSizesForScale_1 = require("./getSizesForScale");
var normalize_1 = require("./normalize");
var PNet_1 = require("./PNet");
function rescaleAndNormalize(x, scale) { function rescaleAndNormalize(x, scale) {
return tf.tidy(function () { return tf.tidy(function () {
var _a = getSizesForScale_1.getSizesForScale(scale, x.shape.slice(1)), height = _a.height, width = _a.width; var _a = getSizesForScale(scale, x.shape.slice(1)), height = _a.height, width = _a.width;
var resized = tf.image.resizeBilinear(x, [height, width]); var resized = tf.image.resizeBilinear(x, [height, width]);
var normalized = normalize_1.normalize(resized); var normalized = normalize(resized);
return tf.transpose(normalized, [0, 2, 1, 3]); return tf.transpose(normalized, [0, 2, 1, 3]);
}); });
} }
...@@ -22,14 +18,14 @@ function extractBoundingBoxes(scoresTensor, regionsTensor, scale, scoreThreshold ...@@ -22,14 +18,14 @@ function extractBoundingBoxes(scoresTensor, regionsTensor, scale, scoreThreshold
for (var y = 0; y < scoresTensor.shape[0]; y++) { for (var y = 0; y < scoresTensor.shape[0]; y++) {
for (var x = 0; x < scoresTensor.shape[1]; x++) { for (var x = 0; x < scoresTensor.shape[1]; x++) {
if (scoresTensor.get(y, x) >= scoreThreshold) { if (scoresTensor.get(y, x) >= scoreThreshold) {
indices.push(new Point_1.Point(x, y)); indices.push(new Point(x, y));
} }
} }
} }
var boundingBoxes = indices.map(function (idx) { var boundingBoxes = indices.map(function (idx) {
var cell = new BoundingBox_1.BoundingBox(Math.round((idx.y * config_1.CELL_STRIDE + 1) / scale), Math.round((idx.x * config_1.CELL_STRIDE + 1) / scale), Math.round((idx.y * config_1.CELL_STRIDE + config_1.CELL_SIZE) / scale), Math.round((idx.x * config_1.CELL_STRIDE + config_1.CELL_SIZE) / scale)); var cell = new BoundingBox(Math.round((idx.y * CELL_STRIDE + 1) / scale), Math.round((idx.x * CELL_STRIDE + 1) / scale), Math.round((idx.y * CELL_STRIDE + CELL_SIZE) / scale), Math.round((idx.x * CELL_STRIDE + CELL_SIZE) / scale));
var score = scoresTensor.get(idx.y, idx.x); var score = scoresTensor.get(idx.y, idx.x);
var region = new BoundingBox_1.BoundingBox(regionsTensor.get(idx.y, idx.x, 0), regionsTensor.get(idx.y, idx.x, 1), regionsTensor.get(idx.y, idx.x, 2), regionsTensor.get(idx.y, idx.x, 3)); var region = new BoundingBox(regionsTensor.get(idx.y, idx.x, 0), regionsTensor.get(idx.y, idx.x, 1), regionsTensor.get(idx.y, idx.x, 2), regionsTensor.get(idx.y, idx.x, 3));
return { return {
cell: cell, cell: cell,
score: score, score: score,
...@@ -38,13 +34,13 @@ function extractBoundingBoxes(scoresTensor, regionsTensor, scale, scoreThreshold ...@@ -38,13 +34,13 @@ function extractBoundingBoxes(scoresTensor, regionsTensor, scale, scoreThreshold
}); });
return boundingBoxes; return boundingBoxes;
} }
function stage1(imgTensor, scales, scoreThreshold, params, stats) { export function stage1(imgTensor, scales, scoreThreshold, params, stats) {
stats.stage1 = []; stats.stage1 = [];
var pnetOutputs = scales.map(function (scale) { return tf.tidy(function () { var pnetOutputs = scales.map(function (scale) { return tf.tidy(function () {
var statsForScale = { scale: scale }; var statsForScale = { scale: scale };
var resized = rescaleAndNormalize(imgTensor, scale); var resized = rescaleAndNormalize(imgTensor, scale);
var ts = Date.now(); var ts = Date.now();
var _a = PNet_1.PNet(resized, params), prob = _a.prob, regions = _a.regions; var _a = PNet(resized, params), prob = _a.prob, regions = _a.regions;
statsForScale.pnet = Date.now() - ts; statsForScale.pnet = Date.now() - ts;
var scoresTensor = tf.unstack(tf.unstack(prob, 3)[1])[0]; var scoresTensor = tf.unstack(tf.unstack(prob, 3)[1])[0];
var regionsTensor = tf.unstack(regions)[0]; var regionsTensor = tf.unstack(regions)[0];
...@@ -65,7 +61,7 @@ function stage1(imgTensor, scales, scoreThreshold, params, stats) { ...@@ -65,7 +61,7 @@ function stage1(imgTensor, scales, scoreThreshold, params, stats) {
return []; return [];
} }
var ts = Date.now(); var ts = Date.now();
var indices = nonMaxSuppression_1.nonMaxSuppression(boundingBoxes.map(function (bbox) { return bbox.cell; }), boundingBoxes.map(function (bbox) { return bbox.score; }), 0.5); var indices = nonMaxSuppression(boundingBoxes.map(function (bbox) { return bbox.cell; }), boundingBoxes.map(function (bbox) { return bbox.score; }), 0.5);
statsForScale.nms = Date.now() - ts; statsForScale.nms = Date.now() - ts;
statsForScale.numBoxes = indices.length; statsForScale.numBoxes = indices.length;
stats.stage1.push(statsForScale); stats.stage1.push(statsForScale);
...@@ -76,14 +72,14 @@ function stage1(imgTensor, scales, scoreThreshold, params, stats) { ...@@ -76,14 +72,14 @@ function stage1(imgTensor, scales, scoreThreshold, params, stats) {
var finalScores = []; var finalScores = [];
if (allBoxes.length > 0) { if (allBoxes.length > 0) {
var ts = Date.now(); var ts = Date.now();
var indices = nonMaxSuppression_1.nonMaxSuppression(allBoxes.map(function (bbox) { return bbox.cell; }), allBoxes.map(function (bbox) { return bbox.score; }), 0.7); var indices = nonMaxSuppression(allBoxes.map(function (bbox) { return bbox.cell; }), allBoxes.map(function (bbox) { return bbox.score; }), 0.7);
stats.stage1_nms = Date.now() - ts; stats.stage1_nms = Date.now() - ts;
finalScores = indices.map(function (idx) { return allBoxes[idx].score; }); finalScores = indices.map(function (idx) { return allBoxes[idx].score; });
finalBoxes = indices finalBoxes = indices
.map(function (idx) { return allBoxes[idx]; }) .map(function (idx) { return allBoxes[idx]; })
.map(function (_a) { .map(function (_a) {
var cell = _a.cell, region = _a.region; var cell = _a.cell, region = _a.region;
return new BoundingBox_1.BoundingBox(cell.left + (region.left * cell.width), cell.top + (region.top * cell.height), cell.right + (region.right * cell.width), cell.bottom + (region.bottom * cell.height)).toSquare().round(); return new BoundingBox(cell.left + (region.left * cell.width), cell.top + (region.top * cell.height), cell.right + (region.right * cell.width), cell.bottom + (region.bottom * cell.height)).toSquare().round();
}); });
} }
return { return {
...@@ -91,5 +87,4 @@ function stage1(imgTensor, scales, scoreThreshold, params, stats) { ...@@ -91,5 +87,4 @@ function stage1(imgTensor, scales, scoreThreshold, params, stats) {
scores: finalScores scores: finalScores
}; };
} }
exports.stage1 = stage1;
//# sourceMappingURL=stage1.js.map //# sourceMappingURL=stage1.js.map
\ No newline at end of file
{"version":3,"file":"stage1.js","sourceRoot":"","sources":["../../src/mtcnn/stage1.ts"],"names":[],"mappings":"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"} {"version":3,"file":"stage1.js","sourceRoot":"","sources":["../../src/mtcnn/stage1.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
import { BoundingBox } from '../BoundingBox'; import { BoundingBox } from 'tfjs-image-recognition-base';
import { RNetParams } from './types'; import { RNetParams } from './types';
export declare function stage2(img: HTMLCanvasElement, inputBoxes: BoundingBox[], scoreThreshold: number, params: RNetParams, stats: any): Promise<{ export declare function stage2(img: HTMLCanvasElement, inputBoxes: BoundingBox[], scoreThreshold: number, params: RNetParams, stats: any): Promise<{
boxes: BoundingBox[]; boxes: BoundingBox[];
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import * as tf from '@tensorflow/tfjs-core';
var tslib_1 = require("tslib"); import { BoundingBox, nonMaxSuppression } from 'tfjs-image-recognition-base';
var tf = require("@tensorflow/tfjs-core"); import { extractImagePatches } from './extractImagePatches';
var BoundingBox_1 = require("../BoundingBox"); import { RNet } from './RNet';
var nonMaxSuppression_1 = require("../commons/nonMaxSuppression"); export function stage2(img, inputBoxes, scoreThreshold, params, stats) {
var extractImagePatches_1 = require("./extractImagePatches");
var RNet_1 = require("./RNet");
function stage2(img, inputBoxes, scoreThreshold, params, stats) {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var ts, rnetInputs, rnetOuts, scoresTensor, scores, _a, _b, indices, filteredBoxes, filteredScores, finalBoxes, finalScores, indicesNms, regions_1; var ts, rnetInputs, rnetOuts, scoresTensor, scores, _a, _b, indices, filteredBoxes, filteredScores, finalBoxes, finalScores, indicesNms, regions_1;
return tslib_1.__generator(this, function (_c) { return tslib_1.__generator(this, function (_c) {
switch (_c.label) { switch (_c.label) {
case 0: case 0:
ts = Date.now(); ts = Date.now();
return [4 /*yield*/, extractImagePatches_1.extractImagePatches(img, inputBoxes, { width: 24, height: 24 })]; return [4 /*yield*/, extractImagePatches(img, inputBoxes, { width: 24, height: 24 })];
case 1: case 1:
rnetInputs = _c.sent(); rnetInputs = _c.sent();
stats.stage2_extractImagePatches = Date.now() - ts; stats.stage2_extractImagePatches = Date.now() - ts;
ts = Date.now(); ts = Date.now();
rnetOuts = rnetInputs.map(function (rnetInput) { rnetOuts = rnetInputs.map(function (rnetInput) {
var out = RNet_1.RNet(rnetInput, params); var out = RNet(rnetInput, params);
rnetInput.dispose(); rnetInput.dispose();
return out; return out;
}); });
...@@ -45,10 +42,10 @@ function stage2(img, inputBoxes, scoreThreshold, params, stats) { ...@@ -45,10 +42,10 @@ function stage2(img, inputBoxes, scoreThreshold, params, stats) {
finalScores = []; finalScores = [];
if (filteredBoxes.length > 0) { if (filteredBoxes.length > 0) {
ts = Date.now(); ts = Date.now();
indicesNms = nonMaxSuppression_1.nonMaxSuppression(filteredBoxes, filteredScores, 0.7); indicesNms = nonMaxSuppression(filteredBoxes, filteredScores, 0.7);
stats.stage2_nms = Date.now() - ts; stats.stage2_nms = Date.now() - ts;
regions_1 = indicesNms.map(function (idx) { regions_1 = indicesNms.map(function (idx) {
return new BoundingBox_1.BoundingBox(rnetOuts[indices[idx]].regions.get(0, 0), rnetOuts[indices[idx]].regions.get(0, 1), rnetOuts[indices[idx]].regions.get(0, 2), rnetOuts[indices[idx]].regions.get(0, 3)); return new BoundingBox(rnetOuts[indices[idx]].regions.get(0, 0), rnetOuts[indices[idx]].regions.get(0, 1), rnetOuts[indices[idx]].regions.get(0, 2), rnetOuts[indices[idx]].regions.get(0, 3));
}); });
finalScores = indicesNms.map(function (idx) { return filteredScores[idx]; }); finalScores = indicesNms.map(function (idx) { return filteredScores[idx]; });
finalBoxes = indicesNms.map(function (idx, i) { return filteredBoxes[idx].calibrate(regions_1[i]); }); finalBoxes = indicesNms.map(function (idx, i) { return filteredBoxes[idx].calibrate(regions_1[i]); });
...@@ -65,5 +62,4 @@ function stage2(img, inputBoxes, scoreThreshold, params, stats) { ...@@ -65,5 +62,4 @@ function stage2(img, inputBoxes, scoreThreshold, params, stats) {
}); });
}); });
} }
exports.stage2 = stage2;
//# sourceMappingURL=stage2.js.map //# sourceMappingURL=stage2.js.map
\ No newline at end of file
{"version":3,"file":"stage2.js","sourceRoot":"","sources":["../../src/mtcnn/stage2.ts"],"names":[],"mappings":"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"} {"version":3,"file":"stage2.js","sourceRoot":"","sources":["../../src/mtcnn/stage2.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
import { Point } from '../Point';
import { BoundingBox } from './BoundingBox';
import { ONetParams } from './types';
export declare function stage3(img: HTMLCanvasElement, inputBoxes: BoundingBox[], scoreThreshold: number, params: ONetParams, stats: any): Promise<{
boxes: BoundingBox[];
scores: number[];
points: Point[][];
}>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var Point_1 = require("../Point");
var BoundingBox_1 = require("./BoundingBox");
var extractImagePatches_1 = require("./extractImagePatches");
var nms_1 = require("./nms");
var ONet_1 = require("./ONet");
var tf = require("@tensorflow/tfjs-core");
function stage3(img, inputBoxes, scoreThreshold, params, stats) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var ts, onetInputs, onetOuts, scoresTensor, scores, _a, _b, indices, filteredRegions, filteredBoxes, filteredScores, finalBoxes, finalScores, points, indicesNms;
return tslib_1.__generator(this, function (_c) {
switch (_c.label) {
case 0:
ts = Date.now();
return [4 /*yield*/, extractImagePatches_1.extractImagePatches(img, inputBoxes, { width: 48, height: 48 })];
case 1:
onetInputs = _c.sent();
stats.stage3_extractImagePatches = Date.now() - ts;
ts = Date.now();
onetOuts = onetInputs.map(function (onetInput) {
var out = ONet_1.ONet(onetInput, params);
onetInput.dispose();
return out;
});
stats.stage3_onet = Date.now() - ts;
console.time('scoreDatas2');
scoresTensor = onetOuts.length > 1
? tf.tidy(function () { return tf.concat(onetOuts.map(function (out) { return out.scores; })); })
: onetOuts[0].scores;
_b = (_a = Array).from;
return [4 /*yield*/, scoresTensor.data()];
case 2:
scores = _b.apply(_a, [_c.sent()]);
scoresTensor.dispose();
console.timeEnd('scoreDatas2');
indices = scores
.map(function (score, idx) { return ({ score: score, idx: idx }); })
.filter(function (c) { return c.score > scoreThreshold; })
.map(function (_a) {
var idx = _a.idx;
return idx;
});
filteredRegions = indices.map(function (idx) { return new BoundingBox_1.BoundingBox(onetOuts[idx].regions.get(0, 0), onetOuts[idx].regions.get(0, 1), onetOuts[idx].regions.get(0, 2), onetOuts[idx].regions.get(0, 3)); });
filteredBoxes = indices
.map(function (idx, i) { return inputBoxes[idx].calibrate(filteredRegions[i]); });
filteredScores = indices.map(function (idx) { return scores[idx]; });
finalBoxes = [];
finalScores = [];
points = [];
if (filteredBoxes.length > 0) {
ts = Date.now();
indicesNms = nms_1.nms(filteredBoxes, filteredScores, 0.7, false);
stats.stage3_nms = Date.now() - ts;
finalBoxes = indicesNms.map(function (idx) { return filteredBoxes[idx]; });
finalScores = indicesNms.map(function (idx) { return filteredScores[idx]; });
points = indicesNms.map(function (idx, i) {
return Array(5).fill(0).map(function (_, ptIdx) {
return new Point_1.Point(((onetOuts[idx].points.get(0, ptIdx) * (finalBoxes[i].width + 1)) + finalBoxes[i].left), ((onetOuts[idx].points.get(0, ptIdx + 5) * (finalBoxes[i].height + 1)) + finalBoxes[i].top));
});
});
}
onetOuts.forEach(function (t) {
t.regions.dispose();
t.scores.dispose();
t.points.dispose();
});
return [2 /*return*/, {
boxes: finalBoxes,
scores: finalScores,
points: points
}];
}
});
});
}
exports.stage3 = stage3;
//# sourceMappingURL=stage3.1.js.map
\ No newline at end of file
{"version":3,"file":"stage3.1.js","sourceRoot":"","sources":["../../src/mtcnn/stage3.1.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import { BoundingBox } from '../BoundingBox'; import { BoundingBox, Point } from 'tfjs-image-recognition-base';
import { Point } from '../Point';
import { ONetParams } from './types'; import { ONetParams } from './types';
export declare function stage3(img: HTMLCanvasElement, inputBoxes: BoundingBox[], scoreThreshold: number, params: ONetParams, stats: any): Promise<{ export declare function stage3(img: HTMLCanvasElement, inputBoxes: BoundingBox[], scoreThreshold: number, params: ONetParams, stats: any): Promise<{
boxes: BoundingBox[]; boxes: BoundingBox[];
......
"use strict"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import * as tf from '@tensorflow/tfjs-core';
var tslib_1 = require("tslib"); import { BoundingBox, nonMaxSuppression, Point } from 'tfjs-image-recognition-base';
var tf = require("@tensorflow/tfjs-core"); import { extractImagePatches } from './extractImagePatches';
var BoundingBox_1 = require("../BoundingBox"); import { ONet } from './ONet';
var nonMaxSuppression_1 = require("../commons/nonMaxSuppression"); export function stage3(img, inputBoxes, scoreThreshold, params, stats) {
var Point_1 = require("../Point");
var extractImagePatches_1 = require("./extractImagePatches");
var ONet_1 = require("./ONet");
function stage3(img, inputBoxes, scoreThreshold, params, stats) {
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var ts, onetInputs, onetOuts, scoresTensor, scores, _a, _b, indices, filteredRegions, filteredBoxes, filteredScores, finalBoxes, finalScores, points, indicesNms; var ts, onetInputs, onetOuts, scoresTensor, scores, _a, _b, indices, filteredRegions, filteredBoxes, filteredScores, finalBoxes, finalScores, points, indicesNms;
return tslib_1.__generator(this, function (_c) { return tslib_1.__generator(this, function (_c) {
switch (_c.label) { switch (_c.label) {
case 0: case 0:
ts = Date.now(); ts = Date.now();
return [4 /*yield*/, extractImagePatches_1.extractImagePatches(img, inputBoxes, { width: 48, height: 48 })]; return [4 /*yield*/, extractImagePatches(img, inputBoxes, { width: 48, height: 48 })];
case 1: case 1:
onetInputs = _c.sent(); onetInputs = _c.sent();
stats.stage3_extractImagePatches = Date.now() - ts; stats.stage3_extractImagePatches = Date.now() - ts;
ts = Date.now(); ts = Date.now();
onetOuts = onetInputs.map(function (onetInput) { onetOuts = onetInputs.map(function (onetInput) {
var out = ONet_1.ONet(onetInput, params); var out = ONet(onetInput, params);
onetInput.dispose(); onetInput.dispose();
return out; return out;
}); });
...@@ -40,7 +36,7 @@ function stage3(img, inputBoxes, scoreThreshold, params, stats) { ...@@ -40,7 +36,7 @@ function stage3(img, inputBoxes, scoreThreshold, params, stats) {
var idx = _a.idx; var idx = _a.idx;
return idx; return idx;
}); });
filteredRegions = indices.map(function (idx) { return new BoundingBox_1.BoundingBox(onetOuts[idx].regions.get(0, 0), onetOuts[idx].regions.get(0, 1), onetOuts[idx].regions.get(0, 2), onetOuts[idx].regions.get(0, 3)); }); filteredRegions = indices.map(function (idx) { return new BoundingBox(onetOuts[idx].regions.get(0, 0), onetOuts[idx].regions.get(0, 1), onetOuts[idx].regions.get(0, 2), onetOuts[idx].regions.get(0, 3)); });
filteredBoxes = indices filteredBoxes = indices
.map(function (idx, i) { return inputBoxes[idx].calibrate(filteredRegions[i]); }); .map(function (idx, i) { return inputBoxes[idx].calibrate(filteredRegions[i]); });
filteredScores = indices.map(function (idx) { return scores[idx]; }); filteredScores = indices.map(function (idx) { return scores[idx]; });
...@@ -49,13 +45,13 @@ function stage3(img, inputBoxes, scoreThreshold, params, stats) { ...@@ -49,13 +45,13 @@ function stage3(img, inputBoxes, scoreThreshold, params, stats) {
points = []; points = [];
if (filteredBoxes.length > 0) { if (filteredBoxes.length > 0) {
ts = Date.now(); ts = Date.now();
indicesNms = nonMaxSuppression_1.nonMaxSuppression(filteredBoxes, filteredScores, 0.7, false); indicesNms = nonMaxSuppression(filteredBoxes, filteredScores, 0.7, false);
stats.stage3_nms = Date.now() - ts; stats.stage3_nms = Date.now() - ts;
finalBoxes = indicesNms.map(function (idx) { return filteredBoxes[idx]; }); finalBoxes = indicesNms.map(function (idx) { return filteredBoxes[idx]; });
finalScores = indicesNms.map(function (idx) { return filteredScores[idx]; }); finalScores = indicesNms.map(function (idx) { return filteredScores[idx]; });
points = indicesNms.map(function (idx, i) { points = indicesNms.map(function (idx, i) {
return Array(5).fill(0).map(function (_, ptIdx) { return Array(5).fill(0).map(function (_, ptIdx) {
return new Point_1.Point(((onetOuts[idx].points.get(0, ptIdx) * (finalBoxes[i].width + 1)) + finalBoxes[i].left), ((onetOuts[idx].points.get(0, ptIdx + 5) * (finalBoxes[i].height + 1)) + finalBoxes[i].top)); return new Point(((onetOuts[idx].points.get(0, ptIdx) * (finalBoxes[i].width + 1)) + finalBoxes[i].left), ((onetOuts[idx].points.get(0, ptIdx + 5) * (finalBoxes[i].height + 1)) + finalBoxes[i].top));
}); });
}); });
} }
...@@ -73,5 +69,4 @@ function stage3(img, inputBoxes, scoreThreshold, params, stats) { ...@@ -73,5 +69,4 @@ function stage3(img, inputBoxes, scoreThreshold, params, stats) {
}); });
}); });
} }
exports.stage3 = stage3;
//# sourceMappingURL=stage3.js.map //# sourceMappingURL=stage3.js.map
\ No newline at end of file
{"version":3,"file":"stage3.js","sourceRoot":"","sources":["../../src/mtcnn/stage3.ts"],"names":[],"mappings":"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"} {"version":3,"file":"stage3.js","sourceRoot":"","sources":["../../src/mtcnn/stage3.ts"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; import * as tf from '@tensorflow/tfjs-core';
import { ConvParams, FCParams } from '../commons/types'; import { ConvParams, FCParams } from 'tfjs-tiny-yolov2';
import { FaceDetection } from '../FaceDetection'; import { FaceDetection } from '../classes/FaceDetection';
import { FaceLandmarks5 } from './FaceLandmarks5'; import { FaceLandmarks5 } from '../classes/FaceLandmarks5';
export declare type SharedParams = { export declare type SharedParams = {
conv1: ConvParams; conv1: ConvParams;
prelu1_alpha: tf.Tensor1D; prelu1_alpha: tf.Tensor1D;
......
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map //# sourceMappingURL=types.js.map
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
/**
* Pads the smaller dimension of an image tensor with zeros, such that width === height.
*
* @param imgTensor The image tensor.
* @param isCenterImage (optional, default: false) If true, add padding on both sides of the image, such that the image.
* @returns The padded tensor with width === height.
*/
export declare function padToSquare(imgTensor: tf.Tensor4D, isCenterImage?: boolean): tf.Tensor4D;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
/**
* Pads the smaller dimension of an image tensor with zeros, such that width === height.
*
* @param imgTensor The image tensor.
* @param isCenterImage (optional, default: false) If true, add padding on both sides of the image, such that the image.
* @returns The padded tensor with width === height.
*/
function padToSquare(imgTensor, isCenterImage) {
if (isCenterImage === void 0) { isCenterImage = false; }
return tf.tidy(function () {
var _a = imgTensor.shape.slice(1), height = _a[0], width = _a[1];
if (height === width) {
return imgTensor;
}
var dimDiff = Math.abs(height - width);
var paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1));
var paddingAxis = height > width ? 2 : 1;
var createPaddingTensor = function (paddingAmount) {
var paddingTensorShape = imgTensor.shape.slice();
paddingTensorShape[paddingAxis] = paddingAmount;
return tf.fill(paddingTensorShape, 0);
};
var paddingTensorAppend = createPaddingTensor(paddingAmount);
var remainingPaddingAmount = dimDiff - paddingTensorAppend.shape[paddingAxis];
var paddingTensorPrepend = isCenterImage && remainingPaddingAmount
? createPaddingTensor(remainingPaddingAmount)
: null;
var tensorsToStack = [
paddingTensorPrepend,
imgTensor,
paddingTensorAppend
]
.filter(function (t) { return t !== null; });
return tf.concat(tensorsToStack, paddingAxis);
});
}
exports.padToSquare = padToSquare;
//# sourceMappingURL=padToSquare.js.map
\ No newline at end of file
{"version":3,"file":"padToSquare.js","sourceRoot":"","sources":["../src/padToSquare.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C;;;;;;GAMG;AACH,qBACE,SAAsB,EACtB,aAA8B;IAA9B,8BAAA,EAAA,qBAA8B;IAE9B,OAAO,EAAE,CAAC,IAAI,CAAC;QAEP,IAAA,6BAA0C,EAAzC,cAAM,EAAE,aAAK,CAA4B;QAChD,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,OAAO,SAAS,CAAA;SACjB;QAED,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAA;QACxC,IAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACrE,IAAM,WAAW,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE1C,IAAM,mBAAmB,GAAG,UAAC,aAAqB;YAChD,IAAM,kBAAkB,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;YAClD,kBAAkB,CAAC,WAAW,CAAC,GAAG,aAAa,CAAA;YAC/C,OAAO,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAA;QACvC,CAAC,CAAA;QAED,IAAM,mBAAmB,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAA;QAC9D,IAAM,sBAAsB,GAAG,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAE/E,IAAM,oBAAoB,GAAG,aAAa,IAAI,sBAAsB;YAClE,CAAC,CAAC,mBAAmB,CAAC,sBAAsB,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAA;QAER,IAAM,cAAc,GAAG;YACrB,oBAAoB;YACpB,SAAS;YACT,mBAAmB;SACpB;aACE,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,IAAI,EAAV,CAAU,CAAkB,CAAA;QAC3C,OAAO,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;AACJ,CAAC;AApCD,kCAoCC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core'; import { Point, TNetInput } from 'tfjs-image-recognition-base';
import { BoundingBox } from '../BoundingBox'; import { TinyYolov2 as TinyYolov2Base, TinyYolov2Types } from 'tfjs-tiny-yolov2';
import { NeuralNetwork } from '../commons/NeuralNetwork'; import { FaceDetection } from '../classes';
import { FaceDetection } from '../FaceDetection'; export declare class TinyYolov2 extends TinyYolov2Base {
import { NetInput } from '../NetInput';
import { Point } from '../Point';
import { TNetInput } from '../types';
import { NetParams, PostProcessingParams, TinyYolov2ForwardParams } from './types';
export declare class TinyYolov2 extends NeuralNetwork<NetParams> {
private _withSeparableConvs;
private _anchors;
constructor(withSeparableConvs?: boolean); constructor(withSeparableConvs?: boolean);
readonly withSeparableConvs: boolean; readonly withSeparableConvs: boolean;
readonly anchors: Point[]; readonly anchors: Point[];
forwardInput(input: NetInput, inputSize: number): tf.Tensor4D; locateFaces(input: TNetInput, forwardParams: TinyYolov2Types.TinyYolov2ForwardParams): Promise<FaceDetection[]>;
forward(input: TNetInput, inputSize: number): Promise<tf.Tensor4D>; protected loadQuantizedParams(modelUri: string | undefined): any;
locateFaces(input: TNetInput, forwardParams?: TinyYolov2ForwardParams): Promise<FaceDetection[]>;
postProcess(outputTensor: tf.Tensor4D, {scoreThreshold, paddings}: PostProcessingParams): {
box: BoundingBox;
score: number;
row: number;
col: number;
anchor: number;
}[];
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"; import * as tslib_1 from "tslib";
Object.defineProperty(exports, "__esModule", { value: true }); import { TinyYolov2 as TinyYolov2Base } from 'tfjs-tiny-yolov2';
var tslib_1 = require("tslib"); import { FaceDetection } from '../classes';
var tf = require("@tensorflow/tfjs-core"); import { BOX_ANCHORS, BOX_ANCHORS_SEPARABLE, DEFAULT_MODEL_NAME, DEFAULT_MODEL_NAME_SEPARABLE_CONV, IOU_THRESHOLD, MEAN_RGB_SEPARABLE, } from './const';
var BoundingBox_1 = require("../BoundingBox");
var convLayer_1 = require("../commons/convLayer");
var NeuralNetwork_1 = require("../commons/NeuralNetwork");
var nonMaxSuppression_1 = require("../commons/nonMaxSuppression");
var normalize_1 = require("../commons/normalize");
var FaceDetection_1 = require("../FaceDetection");
var toNetInput_1 = require("../toNetInput");
var utils_1 = require("../utils");
var config_1 = require("./config");
var convWithBatchNorm_1 = require("./convWithBatchNorm");
var extractParams_1 = require("./extractParams");
var getDefaultParams_1 = require("./getDefaultParams");
var loadQuantizedParams_1 = require("./loadQuantizedParams");
var TinyYolov2 = /** @class */ (function (_super) { var TinyYolov2 = /** @class */ (function (_super) {
tslib_1.__extends(TinyYolov2, _super); tslib_1.__extends(TinyYolov2, _super);
function TinyYolov2(withSeparableConvs) { function TinyYolov2(withSeparableConvs) {
if (withSeparableConvs === void 0) { withSeparableConvs = true; } if (withSeparableConvs === void 0) { withSeparableConvs = true; }
var _this = _super.call(this, 'TinyYolov2') || this; var _this = this;
_this._withSeparableConvs = withSeparableConvs; var config = Object.assign({}, {
_this._anchors = withSeparableConvs ? config_1.BOX_ANCHORS_SEPARABLE : config_1.BOX_ANCHORS; withSeparableConvs: withSeparableConvs,
iouThreshold: IOU_THRESHOLD,
classes: ['face']
}, withSeparableConvs
? {
anchors: BOX_ANCHORS_SEPARABLE,
meanRgb: MEAN_RGB_SEPARABLE
}
: {
anchors: BOX_ANCHORS,
withClassScores: true
});
_this = _super.call(this, config) || this;
return _this; return _this;
} }
Object.defineProperty(TinyYolov2.prototype, "withSeparableConvs", { Object.defineProperty(TinyYolov2.prototype, "withSeparableConvs", {
get: function () { get: function () {
return this._withSeparableConvs; return this.config.withSeparableConvs;
}, },
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
Object.defineProperty(TinyYolov2.prototype, "anchors", { Object.defineProperty(TinyYolov2.prototype, "anchors", {
get: function () { get: function () {
return this._anchors; return this.config.anchors;
}, },
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
TinyYolov2.prototype.forwardInput = function (input, inputSize) {
var _this = this;
var params = this.params;
if (!params) {
throw new Error('TinyYolov2 - load model before inference');
}
var out = tf.tidy(function () {
var batchTensor = input.toBatchTensor(inputSize, false);
batchTensor = _this.withSeparableConvs
? normalize_1.normalize(batchTensor, config_1.MEAN_RGB)
: batchTensor;
batchTensor = batchTensor.div(tf.scalar(256));
var out = convWithBatchNorm_1.convWithBatchNorm(batchTensor, params.conv0);
out = tf.maxPool(out, [2, 2], [2, 2], 'same');
out = convWithBatchNorm_1.convWithBatchNorm(out, params.conv1);
out = tf.maxPool(out, [2, 2], [2, 2], 'same');
out = convWithBatchNorm_1.convWithBatchNorm(out, params.conv2);
out = tf.maxPool(out, [2, 2], [2, 2], 'same');
out = convWithBatchNorm_1.convWithBatchNorm(out, params.conv3);
out = tf.maxPool(out, [2, 2], [2, 2], 'same');
out = convWithBatchNorm_1.convWithBatchNorm(out, params.conv4);
out = tf.maxPool(out, [2, 2], [2, 2], 'same');
out = convWithBatchNorm_1.convWithBatchNorm(out, params.conv5);
out = tf.maxPool(out, [2, 2], [1, 1], 'same');
out = convWithBatchNorm_1.convWithBatchNorm(out, params.conv6);
out = convWithBatchNorm_1.convWithBatchNorm(out, params.conv7);
out = convLayer_1.convLayer(out, params.conv8, 'valid', false);
return out;
});
return out;
};
TinyYolov2.prototype.forward = function (input, inputSize) {
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_1.toNetInput(input, true, true)];
case 1: return [4 /*yield*/, _a.apply(this, [_b.sent(), inputSize])];
case 2: return [2 /*return*/, _b.sent()];
}
});
});
};
TinyYolov2.prototype.locateFaces = function (input, forwardParams) { TinyYolov2.prototype.locateFaces = function (input, forwardParams) {
if (forwardParams === void 0) { forwardParams = {}; }
return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, _inputSize, scoreThreshold, inputSize, netInput, out, out0, inputDimensions, paddings, results, boxes, scores, indices, detections; var objectDetections;
return tslib_1.__generator(this, function (_b) { return tslib_1.__generator(this, function (_a) {
switch (_b.label) { switch (_a.label) {
case 0: case 0: return [4 /*yield*/, this.detect(input, forwardParams)];
_a = getDefaultParams_1.getDefaultParams(forwardParams), _inputSize = _a.inputSize, scoreThreshold = _a.scoreThreshold;
inputSize = typeof _inputSize === 'string'
? config_1.INPUT_SIZES[_inputSize]
: _inputSize;
if (typeof inputSize !== 'number') {
throw new Error("TinyYolov2 - unknown inputSize: " + inputSize + ", expected number or one of xs | sm | md | lg");
}
return [4 /*yield*/, toNetInput_1.toNetInput(input, true)];
case 1: case 1:
netInput = _b.sent(); objectDetections = _a.sent();
return [4 /*yield*/, this.forwardInput(netInput, inputSize)]; return [2 /*return*/, objectDetections.map(function (det) { return new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }); })];
case 2:
out = _b.sent();
out0 = tf.tidy(function () { return tf.unstack(out)[0].expandDims(); });
inputDimensions = {
width: netInput.getInputWidth(0),
height: netInput.getInputHeight(0)
};
paddings = netInput.getRelativePaddings(0);
results = this.postProcess(out0, { scoreThreshold: scoreThreshold, paddings: paddings });
boxes = results.map(function (res) { return res.box; });
scores = results.map(function (res) { return res.score; });
out.dispose();
out0.dispose();
indices = nonMaxSuppression_1.nonMaxSuppression(boxes.map(function (box) { return box.rescale(inputSize); }), scores, config_1.IOU_THRESHOLD, true);
detections = indices.map(function (idx) {
return new FaceDetection_1.FaceDetection(scores[idx], boxes[idx].toRect(), inputDimensions);
});
return [2 /*return*/, detections];
} }
}); });
}); });
}; };
TinyYolov2.prototype.postProcess = function (outputTensor, _a) { TinyYolov2.prototype.loadQuantizedParams = function (modelUri) {
var _this = this; var defaultModelName = this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME;
var scoreThreshold = _a.scoreThreshold, paddings = _a.paddings; return _super.prototype.loadQuantizedParams.call(this, modelUri, defaultModelName);
var numCells = outputTensor.shape[1];
var _b = tf.tidy(function () {
var reshaped = outputTensor.reshape([numCells, numCells, config_1.NUM_BOXES, _this.withSeparableConvs ? 5 : 6]);
var boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, config_1.NUM_BOXES, 4]);
var scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, config_1.NUM_BOXES, 1]);
return [boxes, scores];
}), boxesTensor = _b[0], scoresTensor = _b[1];
var results = [];
for (var row = 0; row < numCells; row++) {
for (var col = 0; col < numCells; col++) {
for (var anchor = 0; anchor < config_1.NUM_BOXES; anchor++) {
var score = utils_1.sigmoid(scoresTensor.get(row, col, anchor, 0));
if (!scoreThreshold || score > scoreThreshold) {
var ctX = ((col + utils_1.sigmoid(boxesTensor.get(row, col, anchor, 0))) / numCells) * paddings.x;
var ctY = ((row + utils_1.sigmoid(boxesTensor.get(row, col, anchor, 1))) / numCells) * paddings.y;
var width = ((Math.exp(boxesTensor.get(row, col, anchor, 2)) * this.anchors[anchor].x) / numCells) * paddings.x;
var height = ((Math.exp(boxesTensor.get(row, col, anchor, 3)) * this.anchors[anchor].y) / numCells) * paddings.y;
var x = (ctX - (width / 2));
var y = (ctY - (height / 2));
results.push({
box: new BoundingBox_1.BoundingBox(x, y, x + width, y + height),
score: score,
row: row,
col: col,
anchor: anchor
});
}
}
}
}
boxesTensor.dispose();
scoresTensor.dispose();
return results;
};
TinyYolov2.prototype.loadQuantizedParams = function (uri) {
return loadQuantizedParams_1.loadQuantizedParams(uri, this.withSeparableConvs);
};
TinyYolov2.prototype.extractParams = function (weights) {
return extractParams_1.extractParams(weights, this.withSeparableConvs);
}; };
return TinyYolov2; return TinyYolov2;
}(NeuralNetwork_1.NeuralNetwork)); }(TinyYolov2Base));
exports.TinyYolov2 = TinyYolov2; export { TinyYolov2 };
//# sourceMappingURL=TinyYolov2.js.map //# sourceMappingURL=TinyYolov2.js.map
\ No newline at end of file
{"version":3,"file":"TinyYolov2.js","sourceRoot":"","sources":["../../src/tinyYolov2/TinyYolov2.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAE5C,8CAA6C;AAC7C,kDAAiD;AACjD,0DAAyD;AACzD,kEAAiE;AACjE,kDAAiD;AACjD,kDAAiD;AAGjD,4CAA2C;AAE3C,kCAAmC;AACnC,mCAA+G;AAC/G,yDAAwD;AACxD,iDAAgD;AAChD,uDAAsD;AACtD,6DAA4D;AAG5D;IAAgC,sCAAwB;IAKtD,oBAAY,kBAAkC;QAAlC,mCAAA,EAAA,yBAAkC;QAA9C,YACE,kBAAM,YAAY,CAAC,SAGpB;QAFC,KAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAA;QAC7C,KAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,8BAAqB,CAAC,CAAC,CAAC,oBAAW,CAAA;;IAC1E,CAAC;IAED,sBAAW,0CAAkB;aAA7B;YACE,OAAO,IAAI,CAAC,mBAAmB,CAAA;QACjC,CAAC;;;OAAA;IAED,sBAAW,+BAAO;aAAlB;YACE,OAAO,IAAI,CAAC,QAAQ,CAAA;QACtB,CAAC;;;OAAA;IAEM,iCAAY,GAAnB,UAAoB,KAAe,EAAE,SAAiB;QAAtD,iBAoCC;QAlCS,IAAA,oBAAM,CAAS;QAEvB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;SAC5D;QAED,IAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;YAElB,IAAI,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YACvD,WAAW,GAAG,KAAI,CAAC,kBAAkB;gBACnC,CAAC,CAAC,qBAAS,CAAC,WAAW,EAAE,iBAAQ,CAAC;gBAClC,CAAC,CAAC,WAAW,CAAA;YACf,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAgB,CAAA;YAE5D,IAAI,GAAG,GAAG,qCAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YACtD,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAC7C,GAAG,GAAG,qCAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YAC1C,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAC7C,GAAG,GAAG,qCAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YAC1C,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAC7C,GAAG,GAAG,qCAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YAC1C,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAC7C,GAAG,GAAG,qCAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YAC1C,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAC7C,GAAG,GAAG,qCAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YAC1C,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAC7C,GAAG,GAAG,qCAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YAC1C,GAAG,GAAG,qCAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;YAC1C,GAAG,GAAG,qBAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;YAElD,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,CAAA;IACZ,CAAC;IAEY,4BAAO,GAApB,UAAqB,KAAgB,EAAE,SAAiB;;;;;;wBACzC,KAAA,IAAI,CAAC,YAAY,CAAA;wBAAC,qBAAM,uBAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAA;4BAA3D,qBAAM,SAAA,IAAI,GAAc,SAAmC,EAAE,SAAS,EAAC,EAAA;4BAA9E,sBAAO,SAAuE,EAAA;;;;KAC/E;IAEY,gCAAW,GAAxB,UAAyB,KAAgB,EAAE,aAA2C;QAA3C,8BAAA,EAAA,kBAA2C;;;;;;wBAE9E,KAA4C,mCAAgB,CAAC,aAAa,CAAC,EAA9D,UAAU,eAAA,EAAE,cAAc,oBAAA,CAAoC;wBAE3E,SAAS,GAAG,OAAO,UAAU,KAAK,QAAQ;4BAC9C,CAAC,CAAC,oBAAW,CAAC,UAAU,CAAC;4BACzB,CAAC,CAAC,UAAU,CAAA;wBAEd,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;4BACjC,MAAM,IAAI,KAAK,CAAC,qCAAmC,SAAS,kDAA+C,CAAC,CAAA;yBAC7G;wBAEgB,qBAAM,uBAAU,CAAC,KAAK,EAAE,IAAI,CAAC,EAAA;;wBAAxC,QAAQ,GAAG,SAA6B;wBAClC,qBAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAA;;wBAAlD,GAAG,GAAG,SAA4C;wBAClD,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,cAAM,OAAA,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAA/B,CAA+B,CAAgB,CAAA;wBAEpE,eAAe,GAAG;4BACtB,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;4BAChC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;yBACnC,CAAA;wBAEK,QAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAA;wBAE1C,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,cAAc,gBAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAA;wBAC9D,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,GAAG,EAAP,CAAO,CAAC,CAAA;wBACnC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,KAAK,EAAT,CAAS,CAAC,CAAA;wBAE5C,GAAG,CAAC,OAAO,EAAE,CAAA;wBACb,IAAI,CAAC,OAAO,EAAE,CAAA;wBAER,OAAO,GAAG,qCAAiB,CAC/B,KAAK,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAtB,CAAsB,CAAC,EACxC,MAAM,EACN,sBAAa,EACb,IAAI,CACL,CAAA;wBAEK,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,GAAG;4BAChC,OAAA,IAAI,6BAAa,CACf,MAAM,CAAC,GAAG,CAAC,EACX,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EACnB,eAAe,CAChB;wBAJD,CAIC,CACF,CAAA;wBAED,sBAAO,UAAU,EAAA;;;;KAClB;IAEM,gCAAW,GAAlB,UAAmB,YAAyB,EAAE,EAAkD;QAAhG,iBA0CC;YA1C+C,kCAAc,EAAE,sBAAQ;QAEtE,IAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAEhC,IAAA;;;;;UAMJ,EANK,mBAAW,EAAE,oBAAY,CAM9B;QAEF,IAAM,OAAO,GAAG,EAAE,CAAA;QAElB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAG,EAAE;YACxC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAG,EAAE;gBACxC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,kBAAS,EAAE,MAAM,EAAG,EAAE;oBAClD,IAAM,KAAK,GAAG,eAAO,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;oBAC5D,IAAI,CAAC,cAAc,IAAI,KAAK,GAAG,cAAc,EAAE;wBAC7C,IAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,eAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;wBAC3F,IAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,eAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;wBAC3F,IAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;wBACjH,IAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;wBAElH,IAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;wBAC7B,IAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;wBAC9B,OAAO,CAAC,IAAI,CAAC;4BACX,GAAG,EAAE,IAAI,yBAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;4BACjD,KAAK,OAAA;4BACL,GAAG,KAAA;4BACH,GAAG,KAAA;4BACH,MAAM,QAAA;yBACP,CAAC,CAAA;qBACH;iBACF;aACF;SACF;QAED,WAAW,CAAC,OAAO,EAAE,CAAA;QACrB,YAAY,CAAC,OAAO,EAAE,CAAA;QAEtB,OAAO,OAAO,CAAA;IAChB,CAAC;IAES,wCAAmB,GAA7B,UAA8B,GAAuB;QACnD,OAAO,yCAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC1D,CAAC;IAES,kCAAa,GAAvB,UAAwB,OAAqB;QAC3C,OAAO,6BAAa,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;IACxD,CAAC;IACH,iBAAC;AAAD,CAAC,AAhKD,CAAgC,6BAAa,GAgK5C;AAhKY,gCAAU"} {"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 \ No newline at end of file
import { Point } from '../Point';
export declare const INPUT_SIZES: {
xs: number;
sm: number;
md: number;
lg: number;
};
export declare const NUM_BOXES = 5;
export declare const IOU_THRESHOLD = 0.4;
export declare const BOX_ANCHORS: Point[];
export declare const BOX_ANCHORS_SEPARABLE: Point[];
export declare const MEAN_RGB: number[];
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Point_1 = require("../Point");
exports.INPUT_SIZES = { xs: 224, sm: 320, md: 416, lg: 608 };
exports.NUM_BOXES = 5;
exports.IOU_THRESHOLD = 0.4;
exports.BOX_ANCHORS = [
new Point_1.Point(0.738768, 0.874946),
new Point_1.Point(2.42204, 2.65704),
new Point_1.Point(4.30971, 7.04493),
new Point_1.Point(10.246, 4.59428),
new Point_1.Point(12.6868, 11.8741)
];
exports.BOX_ANCHORS_SEPARABLE = [
new Point_1.Point(1.603231, 2.094468),
new Point_1.Point(6.041143, 7.080126),
new Point_1.Point(2.882459, 3.518061),
new Point_1.Point(4.266906, 5.178857),
new Point_1.Point(9.041765, 10.66308)
];
exports.MEAN_RGB = [117.001, 114.697, 97.404];
//# sourceMappingURL=config.js.map
\ No newline at end of file
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tinyYolov2/config.ts"],"names":[],"mappings":";;AAAA,kCAAiC;AAEpB,QAAA,WAAW,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAA;AACpD,QAAA,SAAS,GAAG,CAAC,CAAA;AACb,QAAA,aAAa,GAAG,GAAG,CAAA;AAEnB,QAAA,WAAW,GAAG;IACzB,IAAI,aAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,aAAK,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,IAAI,aAAK,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,IAAI,aAAK,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,IAAI,aAAK,CAAC,OAAO,EAAE,OAAO,CAAC;CAC5B,CAAA;AAEY,QAAA,qBAAqB,GAAG;IACnC,IAAI,aAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,aAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,aAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,aAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,aAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC9B,CAAA;AAEY,QAAA,QAAQ,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA"}
\ 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 BOX_ANCHORS_SEPARABLE: Point[];
export declare const MEAN_RGB_SEPARABLE: [number, number, number];
export declare const DEFAULT_MODEL_NAME = "tiny_yolov2_model";
export declare const DEFAULT_MODEL_NAME_SEPARABLE_CONV = "tiny_yolov2_separable_conv_model";
import { Point } from 'tfjs-image-recognition-base';
export var IOU_THRESHOLD = 0.4;
export var BOX_ANCHORS = [
new Point(0.738768, 0.874946),
new Point(2.42204, 2.65704),
new Point(4.30971, 7.04493),
new Point(10.246, 4.59428),
new Point(12.6868, 11.8741)
];
export var BOX_ANCHORS_SEPARABLE = [
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_SEPARABLE = [117.001, 114.697, 97.404];
export var DEFAULT_MODEL_NAME = 'tiny_yolov2_model';
export var DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model';
//# sourceMappingURL=const.js.map
\ No newline at end of file
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/tinyYolov2/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,OAAO,EAAE,OAAO,CAAC;IAC3B,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;CAC5B,CAAA;AAED,MAAM,CAAC,IAAM,qBAAqB,GAAG;IACnC,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,kBAAkB,GAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAEtF,MAAM,CAAC,IAAM,kBAAkB,GAAG,mBAAmB,CAAA;AACrD,MAAM,CAAC,IAAM,iCAAiC,GAAG,kCAAkC,CAAA"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { ConvWithBatchNorm, SeparableConvParams } from './types';
export declare function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm | SeparableConvParams): tf.Tensor4D;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var leaky_1 = require("./leaky");
var types_1 = require("./types");
function convWithBatchNorm(x, params) {
return tf.tidy(function () {
var out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]);
if (params instanceof types_1.SeparableConvParams) {
out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid');
out = tf.add(out, params.bias);
}
else {
out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid');
out = tf.sub(out, params.bn.sub);
out = tf.mul(out, params.bn.truediv);
out = tf.add(out, params.conv.bias);
}
return leaky_1.leaky(out);
});
}
exports.convWithBatchNorm = convWithBatchNorm;
//# sourceMappingURL=convWithBatchNorm.js.map
\ No newline at end of file
{"version":3,"file":"convWithBatchNorm.js","sourceRoot":"","sources":["../../src/tinyYolov2/convWithBatchNorm.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,iCAAgC;AAChC,iCAAiE;AAEjE,2BAAkC,CAAc,EAAE,MAA+C;IAC/F,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAgB,CAAA;QAEpE,IAAI,MAAM,YAAY,2BAAmB,EAAE;YACzC,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YAChG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;SAC/B;aAAM;YACL,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YAC1D,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;YAChC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;YACpC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACpC;QAED,OAAO,aAAK,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC;AAhBD,8CAgBC"}
\ No newline at end of file
import { ParamMapping } from '../commons/types';
import { NetParams } from './types';
export declare function extractParams(weights: Float32Array, withSeparableConvs: boolean): {
params: NetParams;
paramMappings: ParamMapping[];
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var extractConvParamsFactory_1 = require("../commons/extractConvParamsFactory");
var extractWeightsFactory_1 = require("../commons/extractWeightsFactory");
var types_1 = require("./types");
function extractorsFactory(extractWeights, paramMappings) {
var extractConvParams = extractConvParamsFactory_1.extractConvParamsFactory(extractWeights, paramMappings);
function extractBatchNormParams(size, mappedPrefix) {
var sub = tf.tensor1d(extractWeights(size));
var truediv = tf.tensor1d(extractWeights(size));
paramMappings.push({ paramPath: mappedPrefix + "/sub" }, { paramPath: mappedPrefix + "/truediv" });
return { sub: sub, truediv: truediv };
}
function extractConvWithBatchNormParams(channelsIn, channelsOut, mappedPrefix) {
var conv = extractConvParams(channelsIn, channelsOut, 3, mappedPrefix + "/conv");
var bn = extractBatchNormParams(channelsOut, mappedPrefix + "/bn");
return { conv: conv, bn: bn };
}
function extractSeparableConvParams(channelsIn, channelsOut, mappedPrefix) {
var depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]);
var pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]);
var bias = tf.tensor1d(extractWeights(channelsOut));
paramMappings.push({ paramPath: mappedPrefix + "/depthwise_filter" }, { paramPath: mappedPrefix + "/pointwise_filter" }, { paramPath: mappedPrefix + "/bias" });
return new types_1.SeparableConvParams(depthwise_filter, pointwise_filter, bias);
}
return {
extractConvParams: extractConvParams,
extractConvWithBatchNormParams: extractConvWithBatchNormParams,
extractSeparableConvParams: extractSeparableConvParams
};
}
function extractParams(weights, withSeparableConvs) {
var _a = extractWeightsFactory_1.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights;
var paramMappings = [];
var _b = extractorsFactory(extractWeights, paramMappings), extractConvParams = _b.extractConvParams, extractConvWithBatchNormParams = _b.extractConvWithBatchNormParams, extractSeparableConvParams = _b.extractSeparableConvParams;
var extractConvFn = withSeparableConvs ? extractSeparableConvParams : extractConvWithBatchNormParams;
var numAnchorEncodings = withSeparableConvs ? 5 : 6;
var conv0 = extractConvFn(3, 16, 'conv0');
var conv1 = extractConvFn(16, 32, 'conv1');
var conv2 = extractConvFn(32, 64, 'conv2');
var conv3 = extractConvFn(64, 128, 'conv3');
var conv4 = extractConvFn(128, 256, 'conv4');
var conv5 = extractConvFn(256, 512, 'conv5');
var conv6 = extractConvFn(512, 1024, 'conv6');
var conv7 = extractConvFn(1024, 1024, 'conv7');
var conv8 = extractConvParams(1024, 5 * numAnchorEncodings, 1, 'conv8');
if (getRemainingWeights().length !== 0) {
throw new Error("weights remaing after extract: " + getRemainingWeights().length);
}
var params = { conv0: conv0, conv1: conv1, conv2: conv2, conv3: conv3, conv4: conv4, conv5: conv5, conv6: conv6, conv7: conv7, conv8: conv8 };
return { params: params, paramMappings: paramMappings };
}
exports.extractParams = extractParams;
//# sourceMappingURL=extractParams.js.map
\ No newline at end of file
{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../src/tinyYolov2/extractParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import { SizeType, TinyYolov2ForwardParams } from './types';
export declare function getDefaultParams(params: TinyYolov2ForwardParams): {
inputSize: SizeType;
scoreThreshold: number;
} & TinyYolov2ForwardParams;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var types_1 = require("./types");
function getDefaultParams(params) {
return Object.assign({}, {
inputSize: types_1.SizeType.MD,
scoreThreshold: 0.5
}, params);
}
exports.getDefaultParams = getDefaultParams;
//# sourceMappingURL=getDefaultParams.js.map
\ No newline at end of file
{"version":3,"file":"getDefaultParams.js","sourceRoot":"","sources":["../../src/tinyYolov2/getDefaultParams.ts"],"names":[],"mappings":";;AAAA,iCAA4D;AAE5D,0BAAiC,MAA+B;IAC9D,OAAO,MAAM,CAAC,MAAM,CAClB,EAAE,EACF;QACE,SAAS,EAAE,gBAAQ,CAAC,EAAE;QACtB,cAAc,EAAE,GAAG;KACpB,EACD,MAAM,CACP,CAAA;AACH,CAAC;AATD,4CASC"}
\ No newline at end of file
"use strict"; import { TinyYolov2 } from './TinyYolov2';
Object.defineProperty(exports, "__esModule", { value: true }); export * from './TinyYolov2';
var tslib_1 = require("tslib"); export function createTinyYolov2(weights, withSeparableConvs) {
var TinyYolov2_1 = require("./TinyYolov2");
tslib_1.__exportStar(require("./TinyYolov2"), exports);
function createTinyYolov2(weights, withSeparableConvs) {
if (withSeparableConvs === void 0) { withSeparableConvs = true; } if (withSeparableConvs === void 0) { withSeparableConvs = true; }
var net = new TinyYolov2_1.TinyYolov2(withSeparableConvs); var net = new TinyYolov2(withSeparableConvs);
net.extractWeights(weights); net.extractWeights(weights);
return net; return net;
} }
exports.createTinyYolov2 = createTinyYolov2;
//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tinyYolov2/index.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAE1C,uDAA6B;AAE7B,0BAAiC,OAAqB,EAAE,kBAAkC;IAAlC,mCAAA,EAAA,yBAAkC;IACxF,IAAM,GAAG,GAAG,IAAI,uBAAU,CAAC,kBAAkB,CAAC,CAAA;IAC9C,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,4CAIC"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tinyYolov2/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,cAAc,cAAc,CAAC;AAE7B,MAAM,2BAA2B,OAAqB,EAAE,kBAAkC;IAAlC,mCAAA,EAAA,yBAAkC;IACxF,IAAM,GAAG,GAAG,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAA;IAC9C,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC"}
\ No newline at end of file \ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
export declare function leaky(x: tf.Tensor4D): tf.Tensor4D;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function leaky(x) {
return tf.tidy(function () {
var min = tf.mul(x, tf.scalar(0.10000000149011612));
return tf.add(tf.relu(tf.sub(x, min)), min);
//return tf.maximum(x, min)
});
}
exports.leaky = leaky;
//# sourceMappingURL=leaky.js.map
\ No newline at end of file
{"version":3,"file":"leaky.js","sourceRoot":"","sources":["../../src/tinyYolov2/leaky.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,eAAsB,CAAc;IAClC,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;QACrD,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAC3C,2BAA2B;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC;AAND,sBAMC"}
\ No newline at end of file
import { ParamMapping } from '../commons/types';
import { NetParams } from './types';
export declare function loadQuantizedParams(uri: string | undefined, withSeparableConvs: boolean): Promise<{
params: NetParams;
paramMappings: ParamMapping[];
}>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var disposeUnusedWeightTensors_1 = require("../commons/disposeUnusedWeightTensors");
var extractWeightEntryFactory_1 = require("../commons/extractWeightEntryFactory");
var loadWeightMap_1 = require("../commons/loadWeightMap");
var types_1 = require("./types");
var DEFAULT_MODEL_NAME = 'tiny_yolov2_model';
var DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model';
function extractorsFactory(weightMap, paramMappings) {
var extractWeightEntry = extractWeightEntryFactory_1.extractWeightEntryFactory(weightMap, paramMappings);
function extractBatchNormParams(prefix) {
var sub = extractWeightEntry(prefix + "/sub", 1);
var truediv = extractWeightEntry(prefix + "/truediv", 1);
return { sub: sub, truediv: truediv };
}
function extractConvParams(prefix) {
var filters = extractWeightEntry(prefix + "/filters", 4);
var bias = extractWeightEntry(prefix + "/bias", 1);
return { filters: filters, bias: bias };
}
function extractConvWithBatchNormParams(prefix) {
var conv = extractConvParams(prefix + "/conv");
var bn = extractBatchNormParams(prefix + "/bn");
return { conv: conv, bn: bn };
}
function extractSeparableConvParams(prefix) {
var depthwise_filter = extractWeightEntry(prefix + "/depthwise_filter", 4);
var pointwise_filter = extractWeightEntry(prefix + "/pointwise_filter", 4);
var bias = extractWeightEntry(prefix + "/bias", 1);
return new types_1.SeparableConvParams(depthwise_filter, pointwise_filter, bias);
}
return {
extractConvParams: extractConvParams,
extractConvWithBatchNormParams: extractConvWithBatchNormParams,
extractSeparableConvParams: extractSeparableConvParams
};
}
function loadQuantizedParams(uri, withSeparableConvs) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var weightMap, paramMappings, _a, extractConvParams, extractConvWithBatchNormParams, extractSeparableConvParams, extractConvFn, params;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0: return [4 /*yield*/, loadWeightMap_1.loadWeightMap(uri, withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME)];
case 1:
weightMap = _b.sent();
paramMappings = [];
_a = extractorsFactory(weightMap, paramMappings), extractConvParams = _a.extractConvParams, extractConvWithBatchNormParams = _a.extractConvWithBatchNormParams, extractSeparableConvParams = _a.extractSeparableConvParams;
extractConvFn = withSeparableConvs ? extractSeparableConvParams : extractConvWithBatchNormParams;
params = {
conv0: extractConvFn('conv0'),
conv1: extractConvFn('conv1'),
conv2: extractConvFn('conv2'),
conv3: extractConvFn('conv3'),
conv4: extractConvFn('conv4'),
conv5: extractConvFn('conv5'),
conv6: extractConvFn('conv6'),
conv7: extractConvFn('conv7'),
conv8: extractConvParams('conv8')
};
disposeUnusedWeightTensors_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/tinyYolov2/loadQuantizedParams.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
export declare function normalize(x: tf.Tensor4D): tf.Tensor4D;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
function normalize(x) {
return tf.tidy(function () {
var avg_r = tf.fill(x.shape.slice(0, 3).concat([1]), 117.001);
var avg_g = tf.fill(x.shape.slice(0, 3).concat([1]), 114.697);
var avg_b = tf.fill(x.shape.slice(0, 3).concat([1]), 97.404);
var avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);
return tf.sub(x, avg_rgb);
});
}
exports.normalize = normalize;
//# sourceMappingURL=normalize.js.map
\ No newline at end of file
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/tinyYolov2/normalize.ts"],"names":[],"mappings":";;AAAA,0CAA2C;AAE3C,mBAA0B,CAAc;IACtC,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAE,CAAC,IAAG,OAAO,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAE,CAAC,IAAG,OAAO,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAAE,CAAC,IAAG,MAAM,CAAC,CAAA;QAC1D,IAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QAEnD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC;AATD,8BASC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { ConvParams } from '../commons/types';
import { Point } from '../Point';
export declare type BatchNorm = {
sub: tf.Tensor1D;
truediv: tf.Tensor1D;
};
export declare class SeparableConvParams {
depthwise_filter: tf.Tensor4D;
pointwise_filter: tf.Tensor4D;
bias: tf.Tensor1D;
constructor(depthwise_filter: tf.Tensor4D, pointwise_filter: tf.Tensor4D, bias: tf.Tensor1D);
}
export declare type ConvWithBatchNorm = {
conv: ConvParams;
bn: BatchNorm;
};
export declare type NetParams = {
conv0: ConvWithBatchNorm | SeparableConvParams;
conv1: ConvWithBatchNorm | SeparableConvParams;
conv2: ConvWithBatchNorm | SeparableConvParams;
conv3: ConvWithBatchNorm | SeparableConvParams;
conv4: ConvWithBatchNorm | SeparableConvParams;
conv5: ConvWithBatchNorm | SeparableConvParams;
conv6: ConvWithBatchNorm | SeparableConvParams;
conv7: ConvWithBatchNorm | SeparableConvParams;
conv8: ConvParams;
};
export declare enum SizeType {
XS = "xs",
SM = "sm",
MD = "md",
LG = "lg",
}
export declare type TinyYolov2ForwardParams = {
inputSize?: SizeType | number;
scoreThreshold?: number;
};
export declare type PostProcessingParams = {
scoreThreshold?: number;
paddings: Point;
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var SeparableConvParams = /** @class */ (function () {
function SeparableConvParams(depthwise_filter, pointwise_filter, bias) {
this.depthwise_filter = depthwise_filter;
this.pointwise_filter = pointwise_filter;
this.bias = bias;
}
return SeparableConvParams;
}());
exports.SeparableConvParams = SeparableConvParams;
var SizeType;
(function (SizeType) {
SizeType["XS"] = "xs";
SizeType["SM"] = "sm";
SizeType["MD"] = "md";
SizeType["LG"] = "lg";
})(SizeType = exports.SizeType || (exports.SizeType = {}));
//# sourceMappingURL=types.js.map
\ No newline at end of file
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tinyYolov2/types.ts"],"names":[],"mappings":";;AAUA;IACE,6BACS,gBAA6B,EAC7B,gBAA6B,EAC7B,IAAiB;QAFjB,qBAAgB,GAAhB,gBAAgB,CAAa;QAC7B,qBAAgB,GAAhB,gBAAgB,CAAa;QAC7B,SAAI,GAAJ,IAAI,CAAa;IACvB,CAAC;IACN,0BAAC;AAAD,CAAC,AAND,IAMC;AANY,kDAAmB;AAyBhC,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,qBAAS,CAAA;IACT,qBAAS,CAAA;IACT,qBAAS,CAAA;IACT,qBAAS,CAAA;AACX,CAAC,EALW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAKnB"}
\ No newline at end of file
import { NetInput } from './NetInput';
import { TNetInput } from './types';
/**
* Validates the input to make sure, they are valid net inputs and awaits all media elements
* to be finished loading.
*
* @param input The input, which can be a media element or an array of different media elements.
* @param manageCreatedInput If a new NetInput instance is created from the inputs, this flag
* determines, whether to set the NetInput as managed or not.
* @returns A NetInput instance, which can be passed into one of the neural networks.
*/
export declare function toNetInput(inputs: TNetInput, manageCreatedInput?: boolean, keepCanvases?: boolean): Promise<NetInput>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var isMediaElement_1 = require("./commons/isMediaElement");
var isTensor_1 = require("./commons/isTensor");
var NetInput_1 = require("./NetInput");
var utils_1 = require("./utils");
/**
* Validates the input to make sure, they are valid net inputs and awaits all media elements
* to be finished loading.
*
* @param input The input, which can be a media element or an array of different media elements.
* @param manageCreatedInput If a new NetInput instance is created from the inputs, this flag
* determines, whether to set the NetInput as managed or not.
* @returns A NetInput instance, which can be passed into one of the neural networks.
*/
function toNetInput(inputs, manageCreatedInput, keepCanvases) {
if (manageCreatedInput === void 0) { manageCreatedInput = false; }
if (keepCanvases === void 0) { keepCanvases = false; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
var afterCreate, inputArgArray, getIdxHint, inputArray;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
if (inputs instanceof NetInput_1.NetInput) {
return [2 /*return*/, inputs];
}
afterCreate = function (netInput) { return manageCreatedInput
? netInput.managed()
: netInput; };
if (isTensor_1.isTensor4D(inputs)) {
return [2 /*return*/, afterCreate(new NetInput_1.NetInput(inputs))];
}
inputArgArray = Array.isArray(inputs)
? inputs
: [inputs];
if (!inputArgArray.length) {
throw new Error('toNetInput - empty array passed as input');
}
getIdxHint = function (idx) { return Array.isArray(inputs) ? " at input index " + idx + ":" : ''; };
inputArray = inputArgArray.map(utils_1.resolveInput);
inputArray.forEach(function (input, i) {
if (!isMediaElement_1.isMediaElement(input) && !isTensor_1.isTensor3D(input) && !isTensor_1.isTensor4D(input)) {
if (typeof inputArgArray[i] === 'string') {
throw new Error("toNetInput -" + getIdxHint(i) + " string passed, but could not resolve HTMLElement for element id " + inputArgArray[i]);
}
throw new Error("toNetInput -" + getIdxHint(i) + " expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id");
}
if (isTensor_1.isTensor4D(input)) {
// if tf.Tensor4D is passed in the input array, the batch size has to be 1
var batchSize = input.shape[0];
if (batchSize !== 1) {
throw new Error("toNetInput -" + getIdxHint(i) + " tf.Tensor4D with batchSize " + batchSize + " passed, but not supported in input array");
}
}
});
// wait for all media elements being loaded
return [4 /*yield*/, Promise.all(inputArray.map(function (input) { return isMediaElement_1.isMediaElement(input) && utils_1.awaitMediaLoaded(input); }))];
case 1:
// wait for all media elements being loaded
_a.sent();
return [2 /*return*/, afterCreate(new NetInput_1.NetInput(inputArray, Array.isArray(inputs), keepCanvases))];
}
});
});
}
exports.toNetInput = toNetInput;
//# sourceMappingURL=toNetInput.js.map
\ No newline at end of file
{"version":3,"file":"toNetInput.js","sourceRoot":"","sources":["../src/toNetInput.ts"],"names":[],"mappings":";;;AAEA,2DAA0D;AAC1D,+CAA4D;AAC5D,uCAAsC;AAEtC,iCAAyD;AAEzD;;;;;;;;GAQG;AACH,oBACE,MAAiB,EACjB,kBAAmC,EACnC,YAA6B;IAD7B,mCAAA,EAAA,0BAAmC;IACnC,6BAAA,EAAA,oBAA6B;;;;;;oBAE7B,IAAI,MAAM,YAAY,mBAAQ,EAAE;wBAC9B,sBAAO,MAAM,EAAA;qBACd;oBAEK,WAAW,GAAG,UAAC,QAAkB,IAAK,OAAA,kBAAkB;wBAC5D,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE;wBACpB,CAAC,CAAC,QAAQ,EAFgC,CAEhC,CAAA;oBAEZ,IAAI,qBAAU,CAAC,MAAM,CAAC,EAAE;wBACtB,sBAAO,WAAW,CAAC,IAAI,mBAAQ,CAAC,MAAqB,CAAC,CAAC,EAAA;qBACxD;oBAEG,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;wBACrC,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;oBAEd,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;wBACzB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;qBAC5D;oBAEK,UAAU,GAAG,UAAC,GAAW,IAAK,OAAA,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,qBAAmB,GAAG,MAAG,CAAC,CAAC,CAAC,EAAE,EAAtD,CAAsD,CAAA;oBAEpF,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,oBAAY,CAAC,CAAA;oBAElD,UAAU,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,CAAC;wBAC1B,IAAI,CAAC,+BAAc,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAU,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAU,CAAC,KAAK,CAAC,EAAE;4BAEtE,IAAI,OAAO,aAAa,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gCACxC,MAAM,IAAI,KAAK,CAAC,iBAAe,UAAU,CAAC,CAAC,CAAC,yEAAoE,aAAa,CAAC,CAAC,CAAG,CAAC,CAAA;6BACpI;4BAED,MAAM,IAAI,KAAK,CAAC,iBAAe,UAAU,CAAC,CAAC,CAAC,gIAA6H,CAAC,CAAA;yBAC3K;wBAED,IAAI,qBAAU,CAAC,KAAK,CAAC,EAAE;4BACrB,0EAA0E;4BAC1E,IAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;4BAChC,IAAI,SAAS,KAAK,CAAC,EAAE;gCACnB,MAAM,IAAI,KAAK,CAAC,iBAAe,UAAU,CAAC,CAAC,CAAC,oCAA+B,SAAS,8CAA2C,CAAC,CAAA;6BACjI;yBACF;oBACH,CAAC,CAAC,CAAA;oBAEF,2CAA2C;oBAC3C,qBAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,+BAAc,CAAC,KAAK,CAAC,IAAI,wBAAgB,CAAC,KAAK,CAAC,EAAhD,CAAgD,CAAC,CAC1E,EAAA;;oBAHD,2CAA2C;oBAC3C,SAEC,CAAA;oBAED,sBAAO,WAAW,CAAC,IAAI,mBAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,EAAA;;;;CAClF;AAtDD,gCAsDC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { NetInput } from './NetInput';
export declare type TMediaElement = HTMLImageElement | HTMLVideoElement | HTMLCanvasElement;
export declare type TResolvedNetInput = TMediaElement | tf.Tensor3D | tf.Tensor4D;
export declare type TNetInputArg = string | TResolvedNetInput;
export declare type TNetInput = TNetInputArg | Array<TNetInputArg> | NetInput | tf.Tensor4D;
export declare type Dimensions = {
width: number;
height: number;
};
"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/types.ts"],"names":[],"mappings":""}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { Dimensions } from './types';
export declare function isFloat(num: number): boolean;
export declare function isEven(num: number): boolean;
export declare function round(num: number): number;
export declare function sigmoid(x: number): number;
export declare function isDimensions(obj: any): boolean;
export declare function resolveInput(arg: string | any): any;
export declare function isLoaded(media: HTMLImageElement | HTMLVideoElement): boolean;
export declare function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement): Promise<{}>;
export declare function getContext2dOrThrow(canvas: HTMLCanvasElement): CanvasRenderingContext2D;
export declare function createCanvas({width, height}: Dimensions): HTMLCanvasElement;
export declare function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement, dims?: Dimensions): HTMLCanvasElement;
export declare function getMediaDimensions(media: HTMLImageElement | HTMLVideoElement): {
width: number;
height: number;
};
export declare function bufferToImage(buf: Blob): Promise<HTMLImageElement>;
export declare function imageTensorToCanvas(imgTensor: tf.Tensor, canvas?: HTMLCanvasElement): Promise<HTMLCanvasElement>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var tf = require("@tensorflow/tfjs-core");
var isTensor_1 = require("./commons/isTensor");
function isFloat(num) {
return num % 1 !== 0;
}
exports.isFloat = isFloat;
function isEven(num) {
return num % 2 === 0;
}
exports.isEven = isEven;
function round(num) {
return Math.floor(num * 100) / 100;
}
exports.round = round;
function sigmoid(x) {
return 1 / (1 + Math.exp(-x));
}
exports.sigmoid = sigmoid;
function isDimensions(obj) {
return obj && obj.width && obj.height;
}
exports.isDimensions = isDimensions;
function resolveInput(arg) {
if (typeof arg === 'string') {
return document.getElementById(arg);
}
return arg;
}
exports.resolveInput = resolveInput;
function isLoaded(media) {
return (media instanceof HTMLImageElement && media.complete)
|| (media instanceof HTMLVideoElement && media.readyState >= 3);
}
exports.isLoaded = isLoaded;
function awaitMediaLoaded(media) {
return new Promise(function (resolve, reject) {
if (media instanceof HTMLCanvasElement || isLoaded(media)) {
return resolve();
}
function onLoad(e) {
if (!e.currentTarget)
return;
e.currentTarget.removeEventListener('load', onLoad);
e.currentTarget.removeEventListener('error', onError);
resolve(e);
}
function onError(e) {
if (!e.currentTarget)
return;
e.currentTarget.removeEventListener('load', onLoad);
e.currentTarget.removeEventListener('error', onError);
reject(e);
}
media.addEventListener('load', onLoad);
media.addEventListener('error', onError);
});
}
exports.awaitMediaLoaded = awaitMediaLoaded;
function getContext2dOrThrow(canvas) {
var ctx = canvas.getContext('2d');
if (!ctx) {
throw new Error('canvas 2d context is null');
}
return ctx;
}
exports.getContext2dOrThrow = getContext2dOrThrow;
function createCanvas(_a) {
var width = _a.width, height = _a.height;
var canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
return canvas;
}
exports.createCanvas = createCanvas;
function createCanvasFromMedia(media, dims) {
if (!isLoaded(media)) {
throw new Error('createCanvasFromMedia - media has not finished loading yet');
}
var _a = dims || getMediaDimensions(media), width = _a.width, height = _a.height;
var canvas = createCanvas({ width: width, height: height });
getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height);
return canvas;
}
exports.createCanvasFromMedia = createCanvasFromMedia;
function getMediaDimensions(media) {
if (media instanceof HTMLImageElement) {
return { width: media.naturalWidth, height: media.naturalHeight };
}
if (media instanceof HTMLVideoElement) {
return { width: media.videoWidth, height: media.videoHeight };
}
return media;
}
exports.getMediaDimensions = getMediaDimensions;
function bufferToImage(buf) {
return new Promise(function (resolve, reject) {
if (!(buf instanceof Blob)) {
return reject('bufferToImage - expected buf to be of type: Blob');
}
var reader = new FileReader();
reader.onload = function () {
var img = new Image();
img.onload = function () { return resolve(img); };
img.onerror = reject;
img.src = reader.result;
};
reader.onerror = reject;
reader.readAsDataURL(buf);
});
}
exports.bufferToImage = bufferToImage;
function imageTensorToCanvas(imgTensor, canvas) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var targetCanvas, _a, height, width, numChannels, imgTensor3D;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
targetCanvas = canvas || document.createElement('canvas');
_a = imgTensor.shape.slice(isTensor_1.isTensor4D(imgTensor) ? 1 : 0), height = _a[0], width = _a[1], numChannels = _a[2];
imgTensor3D = tf.tidy(function () { return imgTensor.as3D(height, width, numChannels).toInt(); });
return [4 /*yield*/, tf.toPixels(imgTensor3D, targetCanvas)];
case 1:
_b.sent();
imgTensor3D.dispose();
return [2 /*return*/, targetCanvas];
}
});
});
}
exports.imageTensorToCanvas = imageTensorToCanvas;
//# sourceMappingURL=utils.js.map
\ No newline at end of file
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
\ 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