Commit cd43f793 by vincent

check in latest build

parent 2ce95197
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/BoundingBox.ts"],"names":[],"mappings":"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"}
\ 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 });
function nonMaxSuppression(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.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":";;AAEA,2BACE,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,8CAiDC"}
\ No newline at end of file
...@@ -5,7 +5,7 @@ var disposeUnusedWeightTensors_1 = require("../commons/disposeUnusedWeightTensor ...@@ -5,7 +5,7 @@ var disposeUnusedWeightTensors_1 = require("../commons/disposeUnusedWeightTensor
var extractWeightEntryFactory_1 = require("../commons/extractWeightEntryFactory"); var extractWeightEntryFactory_1 = require("../commons/extractWeightEntryFactory");
var isTensor_1 = require("../commons/isTensor"); var isTensor_1 = require("../commons/isTensor");
var loadWeightMap_1 = require("../commons/loadWeightMap"); var loadWeightMap_1 = require("../commons/loadWeightMap");
var DEFAULT_MODEL_NAME = 'face_detection_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_1.extractWeightEntryFactory(weightMap, paramMappings);
function extractPointwiseConvParams(prefix, idx, mappedPrefix) { function extractPointwiseConvParams(prefix, idx, mappedPrefix) {
......
{"version":3,"file":"loadQuantizedParams.js","sourceRoot":"","sources":["../../src/faceDetectionNet/loadQuantizedParams.ts"],"names":[],"mappings":"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"} {"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
...@@ -8,6 +8,8 @@ import { FullFaceDescription } from './FullFaceDescription'; ...@@ -8,6 +8,8 @@ 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 { NetInput } from './NetInput';
import { TinyYolov2 } from './tinyYolov2/TinyYolov2';
import { TinyYolov2ForwardParams } from './tinyYolov2/types';
import { TNetInput } from './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;
...@@ -17,16 +19,19 @@ export declare const nets: { ...@@ -17,16 +19,19 @@ export declare const nets: {
faceLandmark68Net: FaceLandmarkNet; faceLandmark68Net: FaceLandmarkNet;
faceRecognitionNet: FaceRecognitionNet; faceRecognitionNet: FaceRecognitionNet;
mtcnn: Mtcnn; mtcnn: Mtcnn;
tinyYolov2: TinyYolov2;
}; };
export declare function loadFaceDetectionModel(url: string): Promise<void>; export declare function loadFaceDetectionModel(url: string): Promise<void>;
export declare function loadFaceLandmarkModel(url: string): Promise<void>; export declare function loadFaceLandmarkModel(url: string): Promise<void>;
export declare function loadFaceRecognitionModel(url: string): Promise<void>; export declare function loadFaceRecognitionModel(url: string): Promise<void>;
export declare function loadMtcnnModel(url: string): Promise<void>; export declare function loadMtcnnModel(url: string): Promise<void>;
export declare function loadModels(url: string): Promise<[void, void, void, void]>; export declare function loadTinyYolov2Model(url: string): Promise<void>;
export declare function loadModels(url: string): Promise<[void, void, void, void, void]>;
export declare function locateFaces(input: TNetInput, minConfidence?: number, maxResults?: number): Promise<FaceDetection[]>; export declare function locateFaces(input: TNetInput, minConfidence?: number, maxResults?: number): Promise<FaceDetection[]>;
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 type allFacesFunction = (input: tf.Tensor | NetInput | TNetInput, minConfidence?: number, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>; export declare type allFacesFunction = (input: tf.Tensor | NetInput | TNetInput, minConfidence?: number, useBatchProcessing?: boolean) => Promise<FullFaceDescription[]>;
export declare const allFaces: allFacesFunction; export declare const allFaces: allFacesFunction;
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[]>;
......
...@@ -5,6 +5,7 @@ var FaceDetectionNet_1 = require("./faceDetectionNet/FaceDetectionNet"); ...@@ -5,6 +5,7 @@ var FaceDetectionNet_1 = require("./faceDetectionNet/FaceDetectionNet");
var FaceLandmarkNet_1 = require("./faceLandmarkNet/FaceLandmarkNet"); var FaceLandmarkNet_1 = require("./faceLandmarkNet/FaceLandmarkNet");
var FaceRecognitionNet_1 = require("./faceRecognitionNet/FaceRecognitionNet"); var FaceRecognitionNet_1 = require("./faceRecognitionNet/FaceRecognitionNet");
var Mtcnn_1 = require("./mtcnn/Mtcnn"); var Mtcnn_1 = require("./mtcnn/Mtcnn");
var TinyYolov2_1 = require("./tinyYolov2/TinyYolov2");
exports.detectionNet = new FaceDetectionNet_1.FaceDetectionNet(); exports.detectionNet = new FaceDetectionNet_1.FaceDetectionNet();
exports.landmarkNet = new FaceLandmarkNet_1.FaceLandmarkNet(); exports.landmarkNet = new FaceLandmarkNet_1.FaceLandmarkNet();
exports.recognitionNet = new FaceRecognitionNet_1.FaceRecognitionNet(); exports.recognitionNet = new FaceRecognitionNet_1.FaceRecognitionNet();
...@@ -14,7 +15,8 @@ exports.nets = { ...@@ -14,7 +15,8 @@ exports.nets = {
ssdMobilenet: exports.detectionNet, ssdMobilenet: exports.detectionNet,
faceLandmark68Net: exports.landmarkNet, faceLandmark68Net: exports.landmarkNet,
faceRecognitionNet: exports.recognitionNet, faceRecognitionNet: exports.recognitionNet,
mtcnn: new Mtcnn_1.Mtcnn() mtcnn: new Mtcnn_1.Mtcnn(),
tinyYolov2: new TinyYolov2_1.TinyYolov2()
}; };
function loadFaceDetectionModel(url) { function loadFaceDetectionModel(url) {
return exports.nets.ssdMobilenet.load(url); return exports.nets.ssdMobilenet.load(url);
...@@ -32,12 +34,17 @@ function loadMtcnnModel(url) { ...@@ -32,12 +34,17 @@ function loadMtcnnModel(url) {
return exports.nets.mtcnn.load(url); return exports.nets.mtcnn.load(url);
} }
exports.loadMtcnnModel = loadMtcnnModel; exports.loadMtcnnModel = loadMtcnnModel;
function loadTinyYolov2Model(url) {
return exports.nets.tinyYolov2.load(url);
}
exports.loadTinyYolov2Model = loadTinyYolov2Model;
function loadModels(url) { function loadModels(url) {
return Promise.all([ return Promise.all([
loadFaceDetectionModel(url), loadFaceDetectionModel(url),
loadFaceLandmarkModel(url), loadFaceLandmarkModel(url),
loadFaceRecognitionModel(url), loadFaceRecognitionModel(url),
loadMtcnnModel(url) loadMtcnnModel(url),
loadTinyYolov2Model(url)
]); ]);
} }
exports.loadModels = loadModels; exports.loadModels = loadModels;
...@@ -57,6 +64,10 @@ function mtcnn(input, forwardParams) { ...@@ -57,6 +64,10 @@ function mtcnn(input, forwardParams) {
return exports.nets.mtcnn.forward(input, forwardParams); return exports.nets.mtcnn.forward(input, forwardParams);
} }
exports.mtcnn = mtcnn; exports.mtcnn = mtcnn;
function tinyYolov2(input, forwardParams) {
return exports.nets.tinyYolov2.locateFaces(input, forwardParams);
}
exports.tinyYolov2 = tinyYolov2;
exports.allFaces = allFacesFactory_1.allFacesFactory(exports.nets.ssdMobilenet, exports.nets.faceLandmark68Net, exports.nets.faceRecognitionNet); exports.allFaces = allFacesFactory_1.allFacesFactory(exports.nets.ssdMobilenet, exports.nets.faceLandmark68Net, exports.nets.faceRecognitionNet);
exports.allFacesMtcnn = allFacesFactory_1.allFacesMtcnnFactory(exports.nets.mtcnn, exports.nets.faceRecognitionNet); exports.allFacesMtcnn = allFacesFactory_1.allFacesMtcnnFactory(exports.nets.mtcnn, exports.nets.faceRecognitionNet);
//# 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":";;AAEA,qDAA0E;AAE1E,wEAAuE;AACvE,qEAAoE;AAEpE,8EAA6E;AAE7E,uCAAsC;AAKzB,QAAA,YAAY,GAAG,IAAI,mCAAgB,EAAE,CAAA;AACrC,QAAA,WAAW,GAAG,IAAI,iCAAe,EAAE,CAAA;AACnC,QAAA,cAAc,GAAG,IAAI,uCAAkB,EAAE,CAAA;AAEtD,8DAA8D;AAC9D,oDAAoD;AACvC,QAAA,IAAI,GAAG;IAClB,YAAY,EAAE,oBAAY;IAC1B,iBAAiB,EAAE,mBAAW;IAC9B,kBAAkB,EAAE,sBAAc;IAClC,KAAK,EAAE,IAAI,aAAK,EAAE;CACnB,CAAA;AAED,gCAAuC,GAAW;IAChD,OAAO,YAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACpC,CAAC;AAFD,wDAEC;AAED,+BAAsC,GAAW;IAC/C,OAAO,YAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAFD,sDAEC;AAED,kCAAyC,GAAW;IAClD,OAAO,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1C,CAAC;AAFD,4DAEC;AAED,wBAA+B,GAAW;IACxC,OAAO,YAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC;AAFD,wCAEC;AAED,oBAA2B,GAAW;IACpC,OAAO,OAAO,CAAC,GAAG,CAAC;QACjB,sBAAsB,CAAC,GAAG,CAAC;QAC3B,qBAAqB,CAAC,GAAG,CAAC;QAC1B,wBAAwB,CAAC,GAAG,CAAC;QAC7B,cAAc,CAAC,GAAG,CAAC;KACpB,CAAC,CAAA;AACJ,CAAC;AAPD,gCAOC;AAED,qBACE,KAAgB,EAChB,aAAsB,EACtB,UAAmB;IAEnB,OAAO,YAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,CAAA;AACxE,CAAC;AAND,kCAMC;AAED,yBACE,KAAgB;IAEhB,OAAO,YAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;AACtD,CAAC;AAJD,0CAIC;AAED,+BACE,KAAgB;IAEhB,OAAO,YAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAC7D,CAAC;AAJD,sDAIC;AAED,eACE,KAAgB,EAChB,aAAiC;IAEjC,OAAO,YAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;AACjD,CAAC;AALD,sBAKC;AAQY,QAAA,QAAQ,GAAqB,iCAAe,CACvD,YAAI,CAAC,YAAY,EACjB,YAAI,CAAC,iBAAiB,EACtB,YAAI,CAAC,kBAAkB,CACxB,CAAA;AAQY,QAAA,aAAa,GAA0B,sCAAoB,CACtE,YAAI,CAAC,KAAK,EACV,YAAI,CAAC,kBAAkB,CACxB,CAAA"} {"version":3,"file":"globalApi.js","sourceRoot":"","sources":["../src/globalApi.ts"],"names":[],"mappings":";;AAEA,qDAA0E;AAE1E,wEAAuE;AACvE,qEAAoE;AAEpE,8EAA6E;AAE7E,uCAAsC;AAGtC,sDAAqD;AAIxC,QAAA,YAAY,GAAG,IAAI,mCAAgB,EAAE,CAAA;AACrC,QAAA,WAAW,GAAG,IAAI,iCAAe,EAAE,CAAA;AACnC,QAAA,cAAc,GAAG,IAAI,uCAAkB,EAAE,CAAA;AAEtD,8DAA8D;AAC9D,oDAAoD;AACvC,QAAA,IAAI,GAAG;IAClB,YAAY,EAAE,oBAAY;IAC1B,iBAAiB,EAAE,mBAAW;IAC9B,kBAAkB,EAAE,sBAAc;IAClC,KAAK,EAAE,IAAI,aAAK,EAAE;IAClB,UAAU,EAAE,IAAI,uBAAU,EAAE;CAC7B,CAAA;AAED,gCAAuC,GAAW;IAChD,OAAO,YAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACpC,CAAC;AAFD,wDAEC;AAED,+BAAsC,GAAW;IAC/C,OAAO,YAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAFD,sDAEC;AAED,kCAAyC,GAAW;IAClD,OAAO,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1C,CAAC;AAFD,4DAEC;AAED,wBAA+B,GAAW;IACxC,OAAO,YAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC;AAFD,wCAEC;AAED,6BAAoC,GAAW;IAC7C,OAAO,YAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAClC,CAAC;AAFD,kDAEC;AAED,oBAA2B,GAAW;IACpC,OAAO,OAAO,CAAC,GAAG,CAAC;QACjB,sBAAsB,CAAC,GAAG,CAAC;QAC3B,qBAAqB,CAAC,GAAG,CAAC;QAC1B,wBAAwB,CAAC,GAAG,CAAC;QAC7B,cAAc,CAAC,GAAG,CAAC;QACnB,mBAAmB,CAAC,GAAG,CAAC;KACzB,CAAC,CAAA;AACJ,CAAC;AARD,gCAQC;AAED,qBACE,KAAgB,EAChB,aAAsB,EACtB,UAAmB;IAEnB,OAAO,YAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,CAAA;AACxE,CAAC;AAND,kCAMC;AAED,yBACE,KAAgB;IAEhB,OAAO,YAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;AACtD,CAAC;AAJD,0CAIC;AAED,+BACE,KAAgB;IAEhB,OAAO,YAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAC7D,CAAC;AAJD,sDAIC;AAED,eACE,KAAgB,EAChB,aAAiC;IAEjC,OAAO,YAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;AACjD,CAAC;AALD,sBAKC;AAED,oBACE,KAAgB,EAChB,aAAsC;IAEtC,OAAO,YAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;AAC1D,CAAC;AALD,gCAKC;AAQY,QAAA,QAAQ,GAAqB,iCAAe,CACvD,YAAI,CAAC,YAAY,EACjB,YAAI,CAAC,iBAAiB,EACtB,YAAI,CAAC,kBAAkB,CACxB,CAAA;AAQY,QAAA,aAAa,GAA0B,sCAAoB,CACtE,YAAI,CAAC,KAAK,EACV,YAAI,CAAC,kBAAkB,CACxB,CAAA"}
\ No newline at end of file \ No newline at end of file
...@@ -15,5 +15,6 @@ export * from './faceRecognitionNet'; ...@@ -15,5 +15,6 @@ export * from './faceRecognitionNet';
export * from './globalApi'; export * from './globalApi';
export * from './mtcnn'; export * from './mtcnn';
export * from './padToSquare'; export * from './padToSquare';
export * from './tinyYolov2';
export * from './toNetInput'; export * from './toNetInput';
export * from './utils'; export * from './utils';
...@@ -18,6 +18,7 @@ tslib_1.__exportStar(require("./faceRecognitionNet"), exports); ...@@ -18,6 +18,7 @@ tslib_1.__exportStar(require("./faceRecognitionNet"), exports);
tslib_1.__exportStar(require("./globalApi"), exports); tslib_1.__exportStar(require("./globalApi"), exports);
tslib_1.__exportStar(require("./mtcnn"), exports); tslib_1.__exportStar(require("./mtcnn"), exports);
tslib_1.__exportStar(require("./padToSquare"), exports); tslib_1.__exportStar(require("./padToSquare"), exports);
tslib_1.__exportStar(require("./tinyYolov2"), exports);
tslib_1.__exportStar(require("./toNetInput"), exports); tslib_1.__exportStar(require("./toNetInput"), exports);
tslib_1.__exportStar(require("./utils"), 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,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,kDAAwB;AACxB,wDAA8B;AAC9B,uDAA6B;AAC7B,kDAAuB"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAG1C,gBAAE;AAIJ,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,kDAAwB;AACxB,wDAA8B;AAC9B,uDAA6B;AAC7B,uDAA6B;AAC7B,kDAAuB"}
\ No newline at end of file \ No newline at end of file
import { Rect } from '../Rect';
export declare class BoundingBox { export declare class BoundingBox {
private _left; private _left;
private _top; private _top;
...@@ -25,4 +26,5 @@ export declare class BoundingBox { ...@@ -25,4 +26,5 @@ export declare class BoundingBox {
h: number; h: number;
}; };
calibrate(region: BoundingBox): BoundingBox; calibrate(region: BoundingBox): BoundingBox;
toRect(): Rect;
} }
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var Rect_1 = require("../Rect");
var BoundingBox = /** @class */ (function () { var BoundingBox = /** @class */ (function () {
function BoundingBox(_left, _top, _right, _bottom) { function BoundingBox(_left, _top, _right, _bottom) {
this._left = _left; this._left = _left;
...@@ -97,6 +98,9 @@ var BoundingBox = /** @class */ (function () { ...@@ -97,6 +98,9 @@ var BoundingBox = /** @class */ (function () {
BoundingBox.prototype.calibrate = function (region) { 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(); 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; return BoundingBox;
}()); }());
exports.BoundingBox = BoundingBox; exports.BoundingBox = BoundingBox;
......
{"version":3,"file":"BoundingBox.js","sourceRoot":"","sources":["../../src/mtcnn/BoundingBox.ts"],"names":[],"mappings":"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"} {"version":3,"file":"BoundingBox.js","sourceRoot":"","sources":["../../src/mtcnn/BoundingBox.ts"],"names":[],"mappings":";;AAAA,gCAA+B;AAE/B;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;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,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,AAvGD,IAuGC;AAvGY,kCAAW"}
\ 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 { Dimensions } from '../types'; import { Dimensions } from '../types';
import { BoundingBox } from './BoundingBox';
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[]>;
{"version":3,"file":"extractImagePatches.js","sourceRoot":"","sources":["../../src/mtcnn/extractImagePatches.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAG5C,kCAA6D;AAE7D,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,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"}
\ 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 '../BoundingBox';
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"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core"); var tf = require("@tensorflow/tfjs-core");
var BoundingBox_1 = require("../BoundingBox");
var nonMaxSuppression_1 = require("../commons/nonMaxSuppression");
var Point_1 = require("../Point"); var Point_1 = require("../Point");
var BoundingBox_1 = require("./BoundingBox");
var config_1 = require("./config"); var config_1 = require("./config");
var nms_1 = require("./nms"); var getSizesForScale_1 = require("./getSizesForScale");
var normalize_1 = require("./normalize"); var normalize_1 = require("./normalize");
var PNet_1 = require("./PNet"); var PNet_1 = require("./PNet");
var getSizesForScale_1 = require("./getSizesForScale");
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_1.getSizesForScale(scale, x.shape.slice(1)), height = _a.height, width = _a.width;
...@@ -65,7 +65,7 @@ function stage1(imgTensor, scales, scoreThreshold, params, stats) { ...@@ -65,7 +65,7 @@ function stage1(imgTensor, scales, scoreThreshold, params, stats) {
return []; return [];
} }
var ts = Date.now(); var ts = Date.now();
var indices = nms_1.nms(boundingBoxes.map(function (bbox) { return bbox.cell; }), boundingBoxes.map(function (bbox) { return bbox.score; }), 0.5); var indices = nonMaxSuppression_1.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,7 +76,7 @@ function stage1(imgTensor, scales, scoreThreshold, params, stats) { ...@@ -76,7 +76,7 @@ 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 = nms_1.nms(allBoxes.map(function (bbox) { return bbox.cell; }), allBoxes.map(function (bbox) { return bbox.score; }), 0.7); var indices = nonMaxSuppression_1.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
......
{"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 '../BoundingBox';
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[];
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib"); var tslib_1 = require("tslib");
var tf = require("@tensorflow/tfjs-core"); var tf = require("@tensorflow/tfjs-core");
var BoundingBox_1 = require("./BoundingBox"); var BoundingBox_1 = require("../BoundingBox");
var nonMaxSuppression_1 = require("../commons/nonMaxSuppression");
var extractImagePatches_1 = require("./extractImagePatches"); var extractImagePatches_1 = require("./extractImagePatches");
var nms_1 = require("./nms");
var RNet_1 = require("./RNet"); var RNet_1 = require("./RNet");
function stage2(img, inputBoxes, scoreThreshold, params, stats) { 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 () {
...@@ -45,7 +45,7 @@ function stage2(img, inputBoxes, scoreThreshold, params, stats) { ...@@ -45,7 +45,7 @@ function stage2(img, inputBoxes, scoreThreshold, params, stats) {
finalScores = []; finalScores = [];
if (filteredBoxes.length > 0) { if (filteredBoxes.length > 0) {
ts = Date.now(); ts = Date.now();
indicesNms = nms_1.nms(filteredBoxes, filteredScores, 0.7); indicesNms = nonMaxSuppression_1.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_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));
......
{"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 { BoundingBox } from '../BoundingBox';
import { Point } from '../Point'; import { Point } from '../Point';
import { BoundingBox } from './BoundingBox';
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[];
......
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib"); var tslib_1 = require("tslib");
var tf = require("@tensorflow/tfjs-core"); var tf = require("@tensorflow/tfjs-core");
var BoundingBox_1 = require("../BoundingBox");
var nonMaxSuppression_1 = require("../commons/nonMaxSuppression");
var Point_1 = require("../Point"); var Point_1 = require("../Point");
var BoundingBox_1 = require("./BoundingBox");
var extractImagePatches_1 = require("./extractImagePatches"); var extractImagePatches_1 = require("./extractImagePatches");
var nms_1 = require("./nms");
var ONet_1 = require("./ONet"); var ONet_1 = require("./ONet");
function stage3(img, inputBoxes, scoreThreshold, params, stats) { 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 () {
...@@ -49,7 +49,7 @@ function stage3(img, inputBoxes, scoreThreshold, params, stats) { ...@@ -49,7 +49,7 @@ function stage3(img, inputBoxes, scoreThreshold, params, stats) {
points = []; points = [];
if (filteredBoxes.length > 0) { if (filteredBoxes.length > 0) {
ts = Date.now(); ts = Date.now();
indicesNms = nms_1.nms(filteredBoxes, filteredScores, 0.7, false); indicesNms = nonMaxSuppression_1.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]; });
......
{"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 { NeuralNetwork } from '../commons/NeuralNetwork';
import { FaceDetection } from '../FaceDetection';
import { NetInput } from '../NetInput';
import { TNetInput } from '../types';
import { NetParams, TinyYolov2ForwardParams } from './types';
export declare class TinyYolov2 extends NeuralNetwork<NetParams> {
constructor();
forwardInput(input: NetInput, inputSize: number): tf.Tensor4D;
forward(input: TNetInput, inputSize: number): Promise<tf.Tensor4D>;
locateFaces(input: TNetInput, forwardParams?: TinyYolov2ForwardParams): Promise<FaceDetection[]>;
protected loadQuantizedParams(uri: string | undefined): Promise<{
params: NetParams;
paramMappings: {
originalPath?: string | undefined;
paramPath: string;
}[];
}>;
protected extractParams(weights: Float32Array): {
params: NetParams;
paramMappings: {
originalPath?: string | undefined;
paramPath: string;
}[];
};
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var tf = require("@tensorflow/tfjs-core");
var BoundingBox_1 = require("../BoundingBox");
var convLayer_1 = require("../commons/convLayer");
var NeuralNetwork_1 = require("../commons/NeuralNetwork");
var nonMaxSuppression_1 = require("../commons/nonMaxSuppression");
var FaceDetection_1 = require("../FaceDetection");
var toNetInput_1 = require("../toNetInput");
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) {
tslib_1.__extends(TinyYolov2, _super);
function TinyYolov2() {
return _super.call(this, 'TinyYolov2') || this;
}
TinyYolov2.prototype.forwardInput = function (input, inputSize) {
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).div(tf.scalar(255)).toFloat();
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) {
if (forwardParams === void 0) { forwardParams = {}; }
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, _inputSize, scoreThreshold, inputSize, netInput, out, numCells, _b, boxesTensor, scoresTensor, expit, paddedHeightRelative, paddedWidthRelative, boxes, scores, row, col, box, score, ctX, ctY, width, height, x, y, indices, detections;
return tslib_1.__generator(this, function (_c) {
switch (_c.label) {
case 0:
_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 - unkown inputSize: " + inputSize + ", expected number or one of xs | sm | md | lg");
}
return [4 /*yield*/, toNetInput_1.toNetInput(input, true)];
case 1:
netInput = _c.sent();
return [4 /*yield*/, this.forwardInput(netInput, inputSize)];
case 2:
out = _c.sent();
numCells = out.shape[1];
_b = tf.tidy(function () {
var reshaped = out.reshape([numCells, numCells, config_1.NUM_BOXES, 6]);
out.dispose();
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];
expit = function (x) { return 1 / (1 + Math.exp(-x)); };
paddedHeightRelative = (netInput.getPaddings(0).y + netInput.getInputHeight(0)) / netInput.getInputHeight(0);
paddedWidthRelative = (netInput.getPaddings(0).x + netInput.getInputWidth(0)) / netInput.getInputWidth(0);
boxes = [];
scores = [];
for (row = 0; row < numCells; row++) {
for (col = 0; col < numCells; col++) {
for (box = 0; box < config_1.NUM_BOXES; box++) {
score = expit(scoresTensor.get(row, col, box, 0));
if (score > scoreThreshold) {
ctX = ((col + expit(boxesTensor.get(row, col, box, 0))) / numCells) * paddedWidthRelative;
ctY = ((row + expit(boxesTensor.get(row, col, box, 1))) / numCells) * paddedHeightRelative;
width = ((Math.exp(boxesTensor.get(row, col, box, 2)) * config_1.BOX_ANCHORS[box].x) / numCells) * paddedWidthRelative;
height = ((Math.exp(boxesTensor.get(row, col, box, 3)) * config_1.BOX_ANCHORS[box].y) / numCells) * paddedHeightRelative;
x = (ctX - (width / 2));
y = (ctY - (height / 2));
boxes.push(new BoundingBox_1.BoundingBox(x, y, x + width, y + height));
scores.push(score);
}
}
}
}
boxesTensor.dispose();
scoresTensor.dispose();
indices = nonMaxSuppression_1.nonMaxSuppression(boxes.map(function (box) { return new BoundingBox_1.BoundingBox(box.left * inputSize, box.top * inputSize, box.right * inputSize, box.bottom * inputSize); }), scores, config_1.IOU_THRESHOLD, true);
detections = indices.map(function (idx) {
return new FaceDetection_1.FaceDetection(scores[idx], boxes[idx].toRect(), { width: netInput.getInputWidth(0), height: netInput.getInputHeight(0) });
});
return [2 /*return*/, detections];
}
});
});
};
TinyYolov2.prototype.loadQuantizedParams = function (uri) {
return loadQuantizedParams_1.loadQuantizedParams(uri);
};
TinyYolov2.prototype.extractParams = function (weights) {
return extractParams_1.extractParams(weights);
};
return TinyYolov2;
}(NeuralNetwork_1.NeuralNetwork));
exports.TinyYolov2 = TinyYolov2;
//# 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;AAEjD,4CAA2C;AAE3C,mCAA8E;AAC9E,yDAAwD;AACxD,iDAAgD;AAChD,uDAAsD;AACtD,6DAA4D;AAG5D;IAAgC,sCAAwB;IAEtD;eACE,kBAAM,YAAY,CAAC;IACrB,CAAC;IAEM,iCAAY,GAAnB,UAAoB,KAAe,EAAE,SAAiB;QAE5C,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;YAClB,IAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAiB,CAAA;YAEtG,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,oCAAkC,SAAS,kDAA+C,CAAC,CAAA;yBAC5G;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,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;wBAEvB,KAA8B,EAAE,CAAC,IAAI,CAAC;4BAC1C,IAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAS,EAAE,CAAC,CAAC,CAAC,CAAA;4BAChE,GAAG,CAAC,OAAO,EAAE,CAAA;4BAEb,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAS,EAAE,CAAC,CAAC,CAAC,CAAA;4BAC9E,IAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAS,EAAE,CAAC,CAAC,CAAC,CAAA;4BAC/E,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;wBACxB,CAAC,CAAC,EAPK,WAAW,QAAA,EAAE,YAAY,QAAA,CAO9B;wBAEI,KAAK,GAAG,UAAC,CAAS,IAAa,OAAA,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAtB,CAAsB,CAAA;wBAErD,oBAAoB,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;wBAC5G,mBAAmB,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;wBAEzG,KAAK,GAAkB,EAAE,CAAA;wBACzB,MAAM,GAAa,EAAE,CAAA;wBAE3B,KAAS,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAG,EAAE;4BACxC,KAAS,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,EAAE,GAAG,EAAG,EAAE;gCACxC,KAAS,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,kBAAS,EAAE,GAAG,EAAG,EAAE;oCACnC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;oCACvD,IAAI,KAAK,GAAG,cAAc,EAAE;wCACpB,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,mBAAmB,CAAA;wCACzF,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,oBAAoB,CAAA;wCAC1F,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,oBAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,mBAAmB,CAAA;wCAC7G,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,oBAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,oBAAoB,CAAA;wCAE/G,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;wCACvB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;wCAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,yBAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;wCACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;qCACnB;iCACF;6BACF;yBACF;wBAED,WAAW,CAAC,OAAO,EAAE,CAAA;wBACrB,YAAY,CAAC,OAAO,EAAE,CAAA;wBAEhB,OAAO,GAAG,qCAAiB,CAC/B,KAAK,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,IAAI,yBAAW,CAC9B,GAAG,CAAC,IAAI,GAAG,SAAS,EACpB,GAAG,CAAC,GAAG,GAAG,SAAS,EACnB,GAAG,CAAC,KAAK,GAAG,SAAS,EACrB,GAAG,CAAC,MAAM,GAAG,SAAS,CACvB,EALgB,CAKhB,CAAC,EACF,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,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CACzE;wBAJD,CAIC,CACF,CAAA;wBAED,sBAAO,UAAU,EAAA;;;;KAClB;IAES,wCAAmB,GAA7B,UAA8B,GAAuB;QACnD,OAAO,yCAAmB,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;IAES,kCAAa,GAAvB,UAAwB,OAAqB;QAC3C,OAAO,6BAAa,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;IACH,iBAAC;AAAD,CAAC,AAhID,CAAgC,6BAAa,GAgI5C;AAhIY,gCAAU"}
\ 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[];
"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)
];
//# 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"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { ConvWithBatchNorm } from './types';
export declare function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var leaky_1 = require("./leaky");
function convWithBatchNorm(x, params) {
return tf.tidy(function () {
var out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]);
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;AAGhC,2BAAkC,CAAc,EAAE,MAAyB;IACzE,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;QACpE,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC1D,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QAChC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;QACpC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,aAAK,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC;AATD,8CASC"}
\ No newline at end of file
import { ParamMapping } from '../commons/types';
import { NetParams } from './types';
export declare function extractParams(weights: Float32Array): {
params: NetParams;
paramMappings: ParamMapping[];
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tf = require("@tensorflow/tfjs-core");
var extractConvParamsFactory_1 = require("../commons/extractConvParamsFactory");
var extractWeightsFactory_1 = require("../commons/extractWeightsFactory");
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 };
}
return {
extractConvParams: extractConvParams,
extractConvWithBatchNormParams: extractConvWithBatchNormParams
};
}
function extractParams(weights) {
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;
var conv0 = extractConvWithBatchNormParams(3, 16, 'conv0');
var conv1 = extractConvWithBatchNormParams(16, 32, 'conv1');
var conv2 = extractConvWithBatchNormParams(32, 64, 'conv2');
var conv3 = extractConvWithBatchNormParams(64, 128, 'conv3');
var conv4 = extractConvWithBatchNormParams(128, 256, 'conv4');
var conv5 = extractConvWithBatchNormParams(256, 512, 'conv5');
var conv6 = extractConvWithBatchNormParams(512, 1024, 'conv6');
var conv7 = extractConvWithBatchNormParams(1024, 1024, 'conv7');
var conv8 = extractConvParams(1024, 30, 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":";;AAAA,0CAA4C;AAE5C,gFAA+E;AAC/E,0EAAyE;AAIzE,2BAA2B,cAAsC,EAAE,aAA6B;IAE9F,IAAM,iBAAiB,GAAG,mDAAwB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAEjF,gCAAgC,IAAY,EAAE,YAAoB;QAEhE,IAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7C,IAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;QAEjD,aAAa,CAAC,IAAI,CAChB,EAAE,SAAS,EAAK,YAAY,SAAM,EAAE,EACpC,EAAE,SAAS,EAAK,YAAY,aAAU,EAAE,CACzC,CAAA;QAED,OAAO,EAAE,GAAG,KAAA,EAAE,OAAO,SAAA,EAAE,CAAA;IACzB,CAAC;IAED,wCAAwC,UAAkB,EAAE,WAAmB,EAAE,YAAoB;QAEnG,IAAM,IAAI,GAAG,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,EAAK,YAAY,UAAO,CAAC,CAAA;QAClF,IAAM,EAAE,GAAG,sBAAsB,CAAC,WAAW,EAAK,YAAY,QAAK,CAAC,CAAA;QAEpE,OAAO,EAAE,IAAI,MAAA,EAAE,EAAE,IAAA,EAAE,CAAA;IACrB,CAAC;IAED,OAAO;QACL,iBAAiB,mBAAA;QACjB,8BAA8B,gCAAA;KAC/B,CAAA;AAEH,CAAC;AAED,uBAA8B,OAAqB;IAE3C,IAAA,2DAG4B,EAFhC,kCAAc,EACd,4CAAmB,CACa;IAElC,IAAM,aAAa,GAAmB,EAAE,CAAA;IAElC,IAAA,qDAG8C,EAFlD,wCAAiB,EACjB,kEAA8B,CACoB;IAEpD,IAAM,KAAK,GAAG,8BAA8B,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;IAC5D,IAAM,KAAK,GAAG,8BAA8B,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;IAC7D,IAAM,KAAK,GAAG,8BAA8B,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;IAC7D,IAAM,KAAK,GAAG,8BAA8B,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;IAC9D,IAAM,KAAK,GAAG,8BAA8B,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;IAC/D,IAAM,KAAK,GAAG,8BAA8B,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;IAC/D,IAAM,KAAK,GAAG,8BAA8B,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAChE,IAAM,KAAK,GAAG,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACjE,IAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;IAErD,IAAI,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAkC,mBAAmB,EAAE,CAAC,MAAQ,CAAC,CAAA;KAClF;IAED,IAAM,MAAM,GAAG,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IAEhF,OAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAClC,CAAC;AA/BD,sCA+BC"}
\ No newline at end of file
import { SizeType, TinyYolov2ForwardParams } from './types';
export declare function getDefaultParams(params: TinyYolov2ForwardParams): {
sizeType: SizeType;
scoreThreshold: number;
} & TinyYolov2ForwardParams;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var types_1 = require("./types");
function getDefaultParams(params) {
return Object.assign({}, {
sizeType: 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,QAAQ,EAAE,gBAAQ,CAAC,EAAE;QACrB,cAAc,EAAE,GAAG;KACpB,EACD,MAAM,CACP,CAAA;AACH,CAAC;AATD,4CASC"}
\ No newline at end of file
import { TinyYolov2 } from './TinyYolov2';
export * from './TinyYolov2';
export declare function createTinyYolov2(weights: Float32Array): TinyYolov2;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var TinyYolov2_1 = require("./TinyYolov2");
tslib_1.__exportStar(require("./TinyYolov2"), exports);
function createTinyYolov2(weights) {
var net = new TinyYolov2_1.TinyYolov2();
net.extractWeights(weights);
return net;
}
exports.createTinyYolov2 = createTinyYolov2;
//# 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;IACpD,IAAM,GAAG,GAAG,IAAI,uBAAU,EAAE,CAAA;IAC5B,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,4CAIC"}
\ 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 () {
return tf.maximum(x, tf.mul(x, tf.scalar(0.10000000149011612)));
});
}
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,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;AACJ,CAAC;AAJD,sBAIC"}
\ No newline at end of file
import { ParamMapping } from '../commons/types';
import { NetParams } from './types';
export declare function loadQuantizedParams(uri: string | undefined): Promise<{
params: NetParams;
paramMappings: ParamMapping[];
}>;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var disposeUnusedWeightTensors_1 = require("../commons/disposeUnusedWeightTensors");
var extractWeightEntryFactory_1 = require("../commons/extractWeightEntryFactory");
var loadWeightMap_1 = require("../commons/loadWeightMap");
var DEFAULT_MODEL_NAME = 'tiny_yolov2_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 };
}
return {
extractConvParams: extractConvParams,
extractConvWithBatchNormParams: extractConvWithBatchNormParams
};
}
function loadQuantizedParams(uri) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var weightMap, paramMappings, _a, extractConvParams, extractConvWithBatchNormParams, params;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0: return [4 /*yield*/, loadWeightMap_1.loadWeightMap(uri, DEFAULT_MODEL_NAME)];
case 1:
weightMap = _b.sent();
paramMappings = [];
_a = extractorsFactory(weightMap, paramMappings), extractConvParams = _a.extractConvParams, extractConvWithBatchNormParams = _a.extractConvWithBatchNormParams;
params = {
conv0: extractConvWithBatchNormParams('conv0'),
conv1: extractConvWithBatchNormParams('conv1'),
conv2: extractConvWithBatchNormParams('conv2'),
conv3: extractConvWithBatchNormParams('conv3'),
conv4: extractConvWithBatchNormParams('conv4'),
conv5: extractConvWithBatchNormParams('conv5'),
conv6: extractConvWithBatchNormParams('conv6'),
conv7: extractConvWithBatchNormParams('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":";;;AAEA,oFAAmF;AACnF,kFAAiF;AACjF,0DAAyD;AAIzD,IAAM,kBAAkB,GAAG,mBAAmB,CAAA;AAE9C,2BAA2B,SAAc,EAAE,aAA6B;IAEtE,IAAM,kBAAkB,GAAG,qDAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE9E,gCAAgC,MAAc;QAC5C,IAAM,GAAG,GAAG,kBAAkB,CAAiB,MAAM,SAAM,EAAE,CAAC,CAAC,CAAA;QAC/D,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,aAAU,EAAE,CAAC,CAAC,CAAA;QACvE,OAAO,EAAE,GAAG,KAAA,EAAE,OAAO,SAAA,EAAE,CAAA;IACzB,CAAC;IAED,2BAA2B,MAAc;QACvC,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,aAAU,EAAE,CAAC,CAAC,CAAA;QACvE,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,CAAC,CAAA;QACjE,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC;IAED,wCAAwC,MAAc;QACpD,IAAM,IAAI,GAAG,iBAAiB,CAAI,MAAM,UAAO,CAAC,CAAA;QAChD,IAAM,EAAE,GAAG,sBAAsB,CAAI,MAAM,QAAK,CAAC,CAAA;QACjD,OAAO,EAAE,IAAI,MAAA,EAAE,EAAE,IAAA,EAAE,CAAA;IACrB,CAAC;IAED,OAAO;QACL,iBAAiB,mBAAA;QACjB,8BAA8B,gCAAA;KAC/B,CAAA;AAEH,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,8BAA8B,oCAAA,CACe;oBAGzC,MAAM,GAAG;wBACb,KAAK,EAAE,8BAA8B,CAAC,OAAO,CAAC;wBAC9C,KAAK,EAAE,8BAA8B,CAAC,OAAO,CAAC;wBAC9C,KAAK,EAAE,8BAA8B,CAAC,OAAO,CAAC;wBAC9C,KAAK,EAAE,8BAA8B,CAAC,OAAO,CAAC;wBAC9C,KAAK,EAAE,8BAA8B,CAAC,OAAO,CAAC;wBAC9C,KAAK,EAAE,8BAA8B,CAAC,OAAO,CAAC;wBAC9C,KAAK,EAAE,8BAA8B,CAAC,OAAO,CAAC;wBAC9C,KAAK,EAAE,8BAA8B,CAAC,OAAO,CAAC;wBAC9C,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC;qBAClC,CAAA;oBAED,uDAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;oBAEpD,sBAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,EAAA;;;;CACjC;AA5BD,kDA4BC"}
\ No newline at end of file
import * as tf from '@tensorflow/tfjs-core';
import { ConvParams } from '../commons/types';
export declare type BatchNorm = {
sub: tf.Tensor1D;
truediv: tf.Tensor1D;
};
export declare type ConvWithBatchNorm = {
conv: ConvParams;
bn: BatchNorm;
};
export declare type NetParams = {
conv0: ConvWithBatchNorm;
conv1: ConvWithBatchNorm;
conv2: ConvWithBatchNorm;
conv3: ConvWithBatchNorm;
conv4: ConvWithBatchNorm;
conv5: ConvWithBatchNorm;
conv6: ConvWithBatchNorm;
conv7: ConvWithBatchNorm;
conv8: ConvParams;
};
export declare enum SizeType {
XS = "xs",
SM = "sm",
MD = "md",
LG = "lg",
}
export declare type TinyYolov2ForwardParams = {
inputSize?: SizeType | number;
scoreThreshold?: number;
};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
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":";;AA0BA,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
...@@ -1728,7 +1728,7 @@ ...@@ -1728,7 +1728,7 @@
}; };
} }
var DEFAULT_MODEL_NAME$1 = 'face_detection_model'; var DEFAULT_MODEL_NAME$1 = 'ssd_mobilenetv1_model';
function extractorsFactory$2(weightMap, paramMappings) { function extractorsFactory$2(weightMap, paramMappings) {
var extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings); var extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);
function extractPointwiseConvParams(prefix, idx, mappedPrefix) { function extractPointwiseConvParams(prefix, idx, mappedPrefix) {
...@@ -2839,10 +2839,13 @@ ...@@ -2839,10 +2839,13 @@
BoundingBox.prototype.calibrate = function (region) { 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(); 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(this.left, this.top, this.width, this.height);
};
return BoundingBox; return BoundingBox;
}()); }());
function nms(boxes, scores, iouThreshold, isIOU) { function nonMaxSuppression$1(boxes, scores, iouThreshold, isIOU) {
if (isIOU === void 0) { isIOU = true; } if (isIOU === void 0) { isIOU = true; }
var areas = boxes.map(function (box) { return (box.width + 1) * (box.height + 1); }); var areas = boxes.map(function (box) { return (box.width + 1) * (box.height + 1); });
var indicesSortedByScore = scores var indicesSortedByScore = scores
...@@ -2968,7 +2971,7 @@ ...@@ -2968,7 +2971,7 @@
return []; return [];
} }
var ts = Date.now(); var ts = Date.now();
var indices = nms(boundingBoxes.map(function (bbox) { return bbox.cell; }), boundingBoxes.map(function (bbox) { return bbox.score; }), 0.5); var indices = nonMaxSuppression$1(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);
...@@ -2979,7 +2982,7 @@ ...@@ -2979,7 +2982,7 @@
var finalScores = []; var finalScores = [];
if (allBoxes.length > 0) { if (allBoxes.length > 0) {
var ts = Date.now(); var ts = Date.now();
var indices = nms(allBoxes.map(function (bbox) { return bbox.cell; }), allBoxes.map(function (bbox) { return bbox.score; }), 0.7); var indices = nonMaxSuppression$1(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
...@@ -3097,7 +3100,7 @@ ...@@ -3097,7 +3100,7 @@
finalScores = []; finalScores = [];
if (filteredBoxes.length > 0) { if (filteredBoxes.length > 0) {
ts = Date.now(); ts = Date.now();
indicesNms = nms(filteredBoxes, filteredScores, 0.7); indicesNms = nonMaxSuppression$1(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(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));
...@@ -3179,7 +3182,7 @@ ...@@ -3179,7 +3182,7 @@
points = []; points = [];
if (filteredBoxes.length > 0) { if (filteredBoxes.length > 0) {
ts = Date.now(); ts = Date.now();
indicesNms = nms(filteredBoxes, filteredScores, 0.7, false); indicesNms = nonMaxSuppression$1(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]; });
...@@ -3325,6 +3328,253 @@ ...@@ -3325,6 +3328,253 @@
return Mtcnn; return Mtcnn;
}(NeuralNetwork)); }(NeuralNetwork));
var INPUT_SIZES = { xs: 224, sm: 320, md: 416, lg: 608 };
var NUM_BOXES = 5;
var IOU_THRESHOLD = 0.4;
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)
];
function leaky(x) {
return tidy(function () {
return maximum(x, mul(x, scalar(0.10000000149011612)));
});
}
function convWithBatchNorm(x, params) {
return tidy(function () {
var out = pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]);
out = conv2d(out, params.conv.filters, [1, 1], 'valid');
out = sub(out, params.bn.sub);
out = mul(out, params.bn.truediv);
out = add(out, params.conv.bias);
return leaky(out);
});
}
function extractorsFactory$7(extractWeights, paramMappings) {
var extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);
function extractBatchNormParams(size, mappedPrefix) {
var sub$$1 = tensor1d(extractWeights(size));
var truediv = tensor1d(extractWeights(size));
paramMappings.push({ paramPath: mappedPrefix + "/sub" }, { paramPath: mappedPrefix + "/truediv" });
return { sub: sub$$1, 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 };
}
return {
extractConvParams: extractConvParams,
extractConvWithBatchNormParams: extractConvWithBatchNormParams
};
}
function extractParams$4(weights) {
var _a = extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights;
var paramMappings = [];
var _b = extractorsFactory$7(extractWeights, paramMappings), extractConvParams = _b.extractConvParams, extractConvWithBatchNormParams = _b.extractConvWithBatchNormParams;
var conv0 = extractConvWithBatchNormParams(3, 16, 'conv0');
var conv1 = extractConvWithBatchNormParams(16, 32, 'conv1');
var conv2 = extractConvWithBatchNormParams(32, 64, 'conv2');
var conv3 = extractConvWithBatchNormParams(64, 128, 'conv3');
var conv4 = extractConvWithBatchNormParams(128, 256, 'conv4');
var conv5 = extractConvWithBatchNormParams(256, 512, 'conv5');
var conv6 = extractConvWithBatchNormParams(512, 1024, 'conv6');
var conv7 = extractConvWithBatchNormParams(1024, 1024, 'conv7');
var conv8 = extractConvParams(1024, 30, 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 };
}
var SizeType;
(function (SizeType) {
SizeType["XS"] = "xs";
SizeType["SM"] = "sm";
SizeType["MD"] = "md";
SizeType["LG"] = "lg";
})(SizeType || (SizeType = {}));
function getDefaultParams(params) {
return Object.assign({}, {
sizeType: SizeType.MD,
scoreThreshold: 0.5
}, params);
}
var DEFAULT_MODEL_NAME$4 = 'tiny_yolov2_model';
function extractorsFactory$8(weightMap, paramMappings) {
var extractWeightEntry = 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 };
}
return {
extractConvParams: extractConvParams,
extractConvWithBatchNormParams: extractConvWithBatchNormParams
};
}
function loadQuantizedParams$4(uri) {
return __awaiter$1(this, void 0, void 0, function () {
var weightMap, paramMappings, _a, extractConvParams, extractConvWithBatchNormParams, params;
return __generator$1(this, function (_b) {
switch (_b.label) {
case 0: return [4 /*yield*/, loadWeightMap(uri, DEFAULT_MODEL_NAME$4)];
case 1:
weightMap = _b.sent();
paramMappings = [];
_a = extractorsFactory$8(weightMap, paramMappings), extractConvParams = _a.extractConvParams, extractConvWithBatchNormParams = _a.extractConvWithBatchNormParams;
params = {
conv0: extractConvWithBatchNormParams('conv0'),
conv1: extractConvWithBatchNormParams('conv1'),
conv2: extractConvWithBatchNormParams('conv2'),
conv3: extractConvWithBatchNormParams('conv3'),
conv4: extractConvWithBatchNormParams('conv4'),
conv5: extractConvWithBatchNormParams('conv5'),
conv6: extractConvWithBatchNormParams('conv6'),
conv7: extractConvWithBatchNormParams('conv7'),
conv8: extractConvParams('conv8')
};
disposeUnusedWeightTensors(weightMap, paramMappings);
return [2 /*return*/, { params: params, paramMappings: paramMappings }];
}
});
});
}
var TinyYolov2 = /** @class */ (function (_super) {
__extends$1(TinyYolov2, _super);
function TinyYolov2() {
return _super.call(this, 'TinyYolov2') || this;
}
TinyYolov2.prototype.forwardInput = function (input, inputSize) {
var params = this.params;
if (!params) {
throw new Error('TinyYolov2 - load model before inference');
}
var out = tidy(function () {
var batchTensor = input.toBatchTensor(inputSize, false).div(scalar(255)).toFloat();
var out = convWithBatchNorm(batchTensor, params.conv0);
out = maxPool(out, [2, 2], [2, 2], 'same');
out = convWithBatchNorm(out, params.conv1);
out = maxPool(out, [2, 2], [2, 2], 'same');
out = convWithBatchNorm(out, params.conv2);
out = maxPool(out, [2, 2], [2, 2], 'same');
out = convWithBatchNorm(out, params.conv3);
out = maxPool(out, [2, 2], [2, 2], 'same');
out = convWithBatchNorm(out, params.conv4);
out = maxPool(out, [2, 2], [2, 2], 'same');
out = convWithBatchNorm(out, params.conv5);
out = maxPool(out, [2, 2], [1, 1], 'same');
out = convWithBatchNorm(out, params.conv6);
out = convWithBatchNorm(out, params.conv7);
out = convLayer(out, params.conv8, 'valid', false);
return out;
});
return out;
};
TinyYolov2.prototype.forward = function (input, inputSize) {
return __awaiter$1(this, void 0, void 0, function () {
var _a;
return __generator$1(this, function (_b) {
switch (_b.label) {
case 0:
_a = this.forwardInput;
return [4 /*yield*/, 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) {
if (forwardParams === void 0) { forwardParams = {}; }
return __awaiter$1(this, void 0, void 0, function () {
var _a, _inputSize, scoreThreshold, inputSize, netInput, out, numCells, _b, boxesTensor, scoresTensor, expit, paddedHeightRelative, paddedWidthRelative, boxes, scores, row, col, box, score, ctX, ctY, width, height, x, y, indices, detections;
return __generator$1(this, function (_c) {
switch (_c.label) {
case 0:
_a = getDefaultParams(forwardParams), _inputSize = _a.inputSize, scoreThreshold = _a.scoreThreshold;
inputSize = typeof _inputSize === 'string'
? INPUT_SIZES[_inputSize]
: _inputSize;
if (typeof inputSize !== 'number') {
throw new Error("TinyYolov2 - unkown inputSize: " + inputSize + ", expected number or one of xs | sm | md | lg");
}
return [4 /*yield*/, toNetInput(input, true)];
case 1:
netInput = _c.sent();
return [4 /*yield*/, this.forwardInput(netInput, inputSize)];
case 2:
out = _c.sent();
numCells = out.shape[1];
_b = tidy(function () {
var reshaped = out.reshape([numCells, numCells, NUM_BOXES, 6]);
out.dispose();
var boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, NUM_BOXES, 4]);
var scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, NUM_BOXES, 1]);
return [boxes, scores];
}), boxesTensor = _b[0], scoresTensor = _b[1];
expit = function (x) { return 1 / (1 + Math.exp(-x)); };
paddedHeightRelative = (netInput.getPaddings(0).y + netInput.getInputHeight(0)) / netInput.getInputHeight(0);
paddedWidthRelative = (netInput.getPaddings(0).x + netInput.getInputWidth(0)) / netInput.getInputWidth(0);
boxes = [];
scores = [];
for (row = 0; row < numCells; row++) {
for (col = 0; col < numCells; col++) {
for (box = 0; box < NUM_BOXES; box++) {
score = expit(scoresTensor.get(row, col, box, 0));
if (score > scoreThreshold) {
ctX = ((col + expit(boxesTensor.get(row, col, box, 0))) / numCells) * paddedWidthRelative;
ctY = ((row + expit(boxesTensor.get(row, col, box, 1))) / numCells) * paddedHeightRelative;
width = ((Math.exp(boxesTensor.get(row, col, box, 2)) * BOX_ANCHORS[box].x) / numCells) * paddedWidthRelative;
height = ((Math.exp(boxesTensor.get(row, col, box, 3)) * BOX_ANCHORS[box].y) / numCells) * paddedHeightRelative;
x = (ctX - (width / 2));
y = (ctY - (height / 2));
boxes.push(new BoundingBox(x, y, x + width, y + height));
scores.push(score);
}
}
}
}
boxesTensor.dispose();
scoresTensor.dispose();
indices = nonMaxSuppression$1(boxes.map(function (box) { return new BoundingBox(box.left * inputSize, box.top * inputSize, box.right * inputSize, box.bottom * inputSize); }), scores, IOU_THRESHOLD, true);
detections = indices.map(function (idx) {
return new FaceDetection(scores[idx], boxes[idx].toRect(), { width: netInput.getInputWidth(0), height: netInput.getInputHeight(0) });
});
return [2 /*return*/, detections];
}
});
});
};
TinyYolov2.prototype.loadQuantizedParams = function (uri) {
return loadQuantizedParams$4(uri);
};
TinyYolov2.prototype.extractParams = function (weights) {
return extractParams$4(weights);
};
return TinyYolov2;
}(NeuralNetwork));
var detectionNet = new FaceDetectionNet(); var detectionNet = new FaceDetectionNet();
var landmarkNet = new FaceLandmarkNet(); var landmarkNet = new FaceLandmarkNet();
var recognitionNet = new FaceRecognitionNet(); var recognitionNet = new FaceRecognitionNet();
...@@ -3334,7 +3584,8 @@ ...@@ -3334,7 +3584,8 @@
ssdMobilenet: detectionNet, ssdMobilenet: detectionNet,
faceLandmark68Net: landmarkNet, faceLandmark68Net: landmarkNet,
faceRecognitionNet: recognitionNet, faceRecognitionNet: recognitionNet,
mtcnn: new Mtcnn() mtcnn: new Mtcnn(),
tinyYolov2: new TinyYolov2()
}; };
function loadFaceDetectionModel(url) { function loadFaceDetectionModel(url) {
return nets.ssdMobilenet.load(url); return nets.ssdMobilenet.load(url);
...@@ -3348,12 +3599,16 @@ ...@@ -3348,12 +3599,16 @@
function loadMtcnnModel(url) { function loadMtcnnModel(url) {
return nets.mtcnn.load(url); return nets.mtcnn.load(url);
} }
function loadTinyYolov2Model(url) {
return nets.tinyYolov2.load(url);
}
function loadModels(url) { function loadModels(url) {
return Promise.all([ return Promise.all([
loadFaceDetectionModel(url), loadFaceDetectionModel(url),
loadFaceLandmarkModel(url), loadFaceLandmarkModel(url),
loadFaceRecognitionModel(url), loadFaceRecognitionModel(url),
loadMtcnnModel(url) loadMtcnnModel(url),
loadTinyYolov2Model(url)
]); ]);
} }
function locateFaces(input, minConfidence, maxResults) { function locateFaces(input, minConfidence, maxResults) {
...@@ -3368,6 +3623,9 @@ ...@@ -3368,6 +3623,9 @@
function mtcnn(input, forwardParams) { function mtcnn(input, forwardParams) {
return nets.mtcnn.forward(input, forwardParams); return nets.mtcnn.forward(input, forwardParams);
} }
function tinyYolov2(input, forwardParams) {
return nets.tinyYolov2.locateFaces(input, forwardParams);
}
var allFaces = allFacesFactory(nets.ssdMobilenet, nets.faceLandmark68Net, nets.faceRecognitionNet); var allFaces = allFacesFactory(nets.ssdMobilenet, nets.faceLandmark68Net, nets.faceRecognitionNet);
var allFacesMtcnn = allFacesMtcnnFactory(nets.mtcnn, nets.faceRecognitionNet); var allFacesMtcnn = allFacesMtcnnFactory(nets.mtcnn, nets.faceRecognitionNet);
...@@ -3377,6 +3635,12 @@ ...@@ -3377,6 +3635,12 @@
return net; return net;
} }
function createTinyYolov2(weights) {
var net = new TinyYolov2();
net.extractWeights(weights);
return net;
}
exports.tf = tfCore_esm; exports.tf = tfCore_esm;
exports.FaceDetection = FaceDetection; exports.FaceDetection = FaceDetection;
exports.FullFaceDescription = FullFaceDescription; exports.FullFaceDescription = FullFaceDescription;
...@@ -3409,17 +3673,21 @@ ...@@ -3409,17 +3673,21 @@
exports.loadFaceLandmarkModel = loadFaceLandmarkModel; exports.loadFaceLandmarkModel = loadFaceLandmarkModel;
exports.loadFaceRecognitionModel = loadFaceRecognitionModel; exports.loadFaceRecognitionModel = loadFaceRecognitionModel;
exports.loadMtcnnModel = loadMtcnnModel; exports.loadMtcnnModel = loadMtcnnModel;
exports.loadTinyYolov2Model = loadTinyYolov2Model;
exports.loadModels = loadModels; exports.loadModels = loadModels;
exports.locateFaces = locateFaces; exports.locateFaces = locateFaces;
exports.detectLandmarks = detectLandmarks; exports.detectLandmarks = detectLandmarks;
exports.computeFaceDescriptor = computeFaceDescriptor; exports.computeFaceDescriptor = computeFaceDescriptor;
exports.mtcnn = mtcnn; exports.mtcnn = mtcnn;
exports.tinyYolov2 = tinyYolov2;
exports.allFaces = allFaces; exports.allFaces = allFaces;
exports.allFacesMtcnn = allFacesMtcnn; exports.allFacesMtcnn = allFacesMtcnn;
exports.createMtcnn = createMtcnn; exports.createMtcnn = createMtcnn;
exports.Mtcnn = Mtcnn; exports.Mtcnn = Mtcnn;
exports.FaceLandmarks5 = FaceLandmarks5; exports.FaceLandmarks5 = FaceLandmarks5;
exports.padToSquare = padToSquare; exports.padToSquare = padToSquare;
exports.createTinyYolov2 = createTinyYolov2;
exports.TinyYolov2 = TinyYolov2;
exports.toNetInput = toNetInput; exports.toNetInput = toNetInput;
exports.isFloat = isFloat; exports.isFloat = isFloat;
exports.isEven = isEven; exports.isEven = isEven;
......
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