diff --git a/.gitignore b/.gitignore index a2e55c3f..3a9ad0b8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,11 @@ node_modules .rpt2_cache .env* + tmp proto weights_uncompressed weights_unused docs -out \ No newline at end of file +out +build \ No newline at end of file diff --git a/.npmignore b/.npmignore index f0284d72..48c03f67 100644 --- a/.npmignore +++ b/.npmignore @@ -6,6 +6,7 @@ proto weights weights_uncompressed weights_unused +src test tools docs \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 8a63cfa0..70b26bae 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ sudo: required language: node_js node_js: #- "node" + - "12" - "11" - "10" - "8" diff --git a/README.md b/README.md index 7febcd3f..df98850e 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Build Status](https://travis-ci.org/justadudewhohacks/face-api.js.svg?branch=master)](https://travis-ci.org/justadudewhohacks/face-api.js) [![Slack](https://slack.bri.im/badge.svg)](https://slack.bri.im) -**JavaScript face recognition API for the browser and nodejs implemented on top of tensorflow.js core ([tensorflow/tfjs-core](https://github.com/tensorflow/tfjs-core))** +**JavaScript face recognition API for the browser and nodejs implemented on top of tensorflow.js core ([tensorflow/tfjs-core](https://github.com/tensorflow/tfjs))** ![faceapi](https://user-images.githubusercontent.com/31125521/57224752-ad3dc080-700a-11e9-85b9-1357b9f9bca4.gif) @@ -16,6 +16,7 @@ * **[Realtime Webcam Face Detection And Emotion Recognition - Video](https://youtu.be/CVClHLwv-4I)** * **[Easy Face Recognition Tutorial With JavaScript - Video](https://youtu.be/AZ4PdALMqx0)** * **[Using face-api.js with Vue.js and Electron](https://medium.com/@andreas.schallwig/do-not-laugh-a-simple-ai-powered-game-3e22ad0f8166)** +* **[Add Masks to People - Gant Laborde on Learn with Jason](https://www.learnwithjason.dev/fun-with-machine-learning-pt-2)** ## Table of Contents @@ -25,7 +26,7 @@ * **[face-api.js for Nodejs](#face-api.js-for-nodejs)** * **[Usage](#getting-started)** * **[Loading the Models](#getting-started-loading-models)** - * **[High Level API](#getting-started-high-level-api)** + * **[High Level API](#high-level-api)** * **[Displaying Detection Results](#getting-started-displaying-detection-results)** * **[Face Detection Options](#getting-started-face-detection-options)** * **[Utility Classes](#getting-started-utility-classes)** @@ -135,8 +136,7 @@ import * as canvas from 'canvas'; import * as faceapi from 'face-api.js'; // patch nodejs environment, we need to provide an implementation of -// HTMLCanvasElement and HTMLImageElement, additionally an implementation -// of ImageData is required, in case you want to use the MTCNN +// HTMLCanvasElement and HTMLImageElement const { Canvas, Image, ImageData } = canvas faceapi.env.monkeyPatch({ Canvas, Image, ImageData }) ``` @@ -160,7 +160,6 @@ console.log(faceapi.nets) // faceRecognitionNet // ssdMobilenetv1 // tinyFaceDetector -// mtcnn // tinyYolov2 ``` @@ -246,7 +245,6 @@ By default **detectAllFaces** and **detectSingleFace** utilize the SSD Mobilenet ``` javascript const detections1 = await faceapi.detectAllFaces(input, new faceapi.SsdMobilenetv1Options()) const detections2 = await faceapi.detectAllFaces(input, new faceapi.TinyFaceDetectorOptions()) -const detections3 = await faceapi.detectAllFaces(input, new faceapi.MtcnnOptions()) ``` You can tune the options of each face detector as shown [here](#getting-started-face-detection-options). @@ -592,40 +590,6 @@ export interface ITinyFaceDetectorOptions { const options = new faceapi.TinyFaceDetectorOptions({ inputSize: 320 }) ``` -### MtcnnOptions - -``` javascript -export interface IMtcnnOptions { - // minimum face size to expect, the higher the faster processing will be, - // but smaller faces won't be detected - // default: 20 - minFaceSize?: number - - // the score threshold values used to filter the bounding - // boxes of stage 1, 2 and 3 - // default: [0.6, 0.7, 0.7] - scoreThresholds?: number[] - - // scale factor used to calculate the scale steps of the image - // pyramid used in stage 1 - // default: 0.709 - scaleFactor?: number - - // number of scaled versions of the input image passed through the CNN - // of the first stage, lower numbers will result in lower inference time, - // but will also be less accurate - // default: 10 - maxNumScales?: number - - // instead of specifying scaleFactor and maxNumScales you can also - // set the scaleSteps manually - scaleSteps?: number[] -} - -// example -const options = new faceapi.MtcnnOptions({ minFaceSize: 100, scaleFactor: 0.8 }) -``` - ## Utility Classes @@ -726,7 +690,6 @@ Instead of using the high level API, you can directly use the forward methods of ``` javascript const detections1 = await faceapi.ssdMobilenetv1(input, options) const detections2 = await faceapi.tinyFaceDetector(input, options) -const detections3 = await faceapi.mtcnn(input, options) const landmarks1 = await faceapi.detectFaceLandmarks(faceImage) const landmarks2 = await faceapi.detectFaceLandmarksTiny(faceImage) const descriptor = await faceapi.computeFaceDescriptor(alignedFaceImage) @@ -839,14 +802,6 @@ The face detector has been trained on a custom dataset of ~14K images labeled wi This model is basically an even tinier version of Tiny Yolo V2, replacing the regular convolutions of Yolo with depthwise separable convolutions. Yolo is fully convolutional, thus can easily adapt to different input image sizes to trade off accuracy for performance (inference time). -### MTCNN - -**Note, this model is mostly kept in this repo for experimental reasons. In general the other face detectors should perform better, but of course you are free to play around with MTCNN.** - -MTCNN (Multi-task Cascaded Convolutional Neural Networks) represents an alternative face detector to SSD Mobilenet v1 and Tiny Yolo v2, which offers much more room for configuration. By tuning the input parameters, MTCNN should be able to detect a wide range of face bounding box sizes. MTCNN is a 3 stage cascaded CNN, which simultaneously returns 5 face landmark points along with the bounding boxes and scores for each face. Additionally the model size is only 2MB. - -MTCNN has been presented in the paper [Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks](https://kpzhang93.github.io/MTCNN_face_detection_alignment/paper/spl.pdf) by Zhang et al. and the model weights are provided in the official [repo](https://github.com/kpzhang93/MTCNN_face_detection_alignment) of the MTCNN implementation. - ## 68 Point Face Landmark Detection Models diff --git a/build/commonjs/ageGenderNet/AgeGenderNet.d.ts b/build/commonjs/ageGenderNet/AgeGenderNet.d.ts deleted file mode 100644 index ee95af34..00000000 --- a/build/commonjs/ageGenderNet/AgeGenderNet.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base'; -import { TinyXception } from '../xception/TinyXception'; -import { AgeAndGenderPrediction, NetOutput, NetParams } from './types'; -export declare class AgeGenderNet extends NeuralNetwork { - private _faceFeatureExtractor; - constructor(faceFeatureExtractor?: TinyXception); - readonly faceFeatureExtractor: TinyXception; - runNet(input: NetInput | tf.Tensor4D): NetOutput; - forwardInput(input: NetInput | tf.Tensor4D): NetOutput; - forward(input: TNetInput): Promise; - predictAgeAndGender(input: TNetInput): Promise; - protected getDefaultModelName(): string; - dispose(throwOnRedispose?: boolean): void; - loadClassifierParams(weights: Float32Array): void; - extractClassifierParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/commonjs/ageGenderNet/AgeGenderNet.js b/build/commonjs/ageGenderNet/AgeGenderNet.js deleted file mode 100644 index 65cd5454..00000000 --- a/build/commonjs/ageGenderNet/AgeGenderNet.js +++ /dev/null @@ -1,145 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var fullyConnectedLayer_1 = require("../common/fullyConnectedLayer"); -var util_1 = require("../faceProcessor/util"); -var TinyXception_1 = require("../xception/TinyXception"); -var extractParams_1 = require("./extractParams"); -var extractParamsFromWeigthMap_1 = require("./extractParamsFromWeigthMap"); -var types_1 = require("./types"); -var AgeGenderNet = /** @class */ (function (_super) { - tslib_1.__extends(AgeGenderNet, _super); - function AgeGenderNet(faceFeatureExtractor) { - if (faceFeatureExtractor === void 0) { faceFeatureExtractor = new TinyXception_1.TinyXception(2); } - var _this = _super.call(this, 'AgeGenderNet') || this; - _this._faceFeatureExtractor = faceFeatureExtractor; - return _this; - } - Object.defineProperty(AgeGenderNet.prototype, "faceFeatureExtractor", { - get: function () { - return this._faceFeatureExtractor; - }, - enumerable: true, - configurable: true - }); - AgeGenderNet.prototype.runNet = function (input) { - var _this = this; - var params = this.params; - if (!params) { - throw new Error(this._name + " - load model before inference"); - } - return tf.tidy(function () { - var bottleneckFeatures = input instanceof tfjs_image_recognition_base_1.NetInput - ? _this.faceFeatureExtractor.forwardInput(input) - : input; - var pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1); - var age = fullyConnectedLayer_1.fullyConnectedLayer(pooled, params.fc.age).as1D(); - var gender = fullyConnectedLayer_1.fullyConnectedLayer(pooled, params.fc.gender); - return { age: age, gender: gender }; - }); - }; - AgeGenderNet.prototype.forwardInput = function (input) { - var _this = this; - return tf.tidy(function () { - var _a = _this.runNet(input), age = _a.age, gender = _a.gender; - return { age: age, gender: tf.softmax(gender) }; - }); - }; - AgeGenderNet.prototype.forward = function (input) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - AgeGenderNet.prototype.predictAgeAndGender = function (input) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var netInput, out, ages, genders, ageAndGenderTensors, predictionsByBatch; - var _this = this; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: - netInput = _a.sent(); - return [4 /*yield*/, this.forwardInput(netInput)]; - case 2: - out = _a.sent(); - ages = tf.unstack(out.age); - genders = tf.unstack(out.gender); - ageAndGenderTensors = ages.map(function (ageTensor, i) { return ({ - ageTensor: ageTensor, - genderTensor: genders[i] - }); }); - return [4 /*yield*/, Promise.all(ageAndGenderTensors.map(function (_a) { - var ageTensor = _a.ageTensor, genderTensor = _a.genderTensor; - return tslib_1.__awaiter(_this, void 0, void 0, function () { - var age, probMale, isMale, gender, genderProbability; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, ageTensor.data()]; - case 1: - age = (_b.sent())[0]; - return [4 /*yield*/, genderTensor.data()]; - case 2: - probMale = (_b.sent())[0]; - isMale = probMale > 0.5; - gender = isMale ? types_1.Gender.MALE : types_1.Gender.FEMALE; - genderProbability = isMale ? probMale : (1 - probMale); - ageTensor.dispose(); - genderTensor.dispose(); - return [2 /*return*/, { age: age, gender: gender, genderProbability: genderProbability }]; - } - }); - }); - }))]; - case 3: - predictionsByBatch = _a.sent(); - out.age.dispose(); - out.gender.dispose(); - return [2 /*return*/, netInput.isBatchInput - ? predictionsByBatch - : predictionsByBatch[0]]; - } - }); - }); - }; - AgeGenderNet.prototype.getDefaultModelName = function () { - return 'age_gender_model'; - }; - AgeGenderNet.prototype.dispose = function (throwOnRedispose) { - if (throwOnRedispose === void 0) { throwOnRedispose = true; } - this.faceFeatureExtractor.dispose(throwOnRedispose); - _super.prototype.dispose.call(this, throwOnRedispose); - }; - AgeGenderNet.prototype.loadClassifierParams = function (weights) { - var _a = this.extractClassifierParams(weights), params = _a.params, paramMappings = _a.paramMappings; - this._params = params; - this._paramMappings = paramMappings; - }; - AgeGenderNet.prototype.extractClassifierParams = function (weights) { - return extractParams_1.extractParams(weights); - }; - AgeGenderNet.prototype.extractParamsFromWeigthMap = function (weightMap) { - var _a = util_1.seperateWeightMaps(weightMap), featureExtractorMap = _a.featureExtractorMap, classifierMap = _a.classifierMap; - this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap); - return extractParamsFromWeigthMap_1.extractParamsFromWeigthMap(classifierMap); - }; - AgeGenderNet.prototype.extractParams = function (weights) { - var classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2); - var featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize); - var classifierWeights = weights.slice(weights.length - classifierWeightSize); - this.faceFeatureExtractor.extractWeights(featureExtractorWeights); - return this.extractClassifierParams(classifierWeights); - }; - return AgeGenderNet; -}(tfjs_image_recognition_base_1.NeuralNetwork)); -exports.AgeGenderNet = AgeGenderNet; -//# sourceMappingURL=AgeGenderNet.js.map \ No newline at end of file diff --git a/build/commonjs/ageGenderNet/AgeGenderNet.js.map b/build/commonjs/ageGenderNet/AgeGenderNet.js.map deleted file mode 100644 index b0555062..00000000 --- a/build/commonjs/ageGenderNet/AgeGenderNet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AgeGenderNet.js","sourceRoot":"","sources":["../../../src/ageGenderNet/AgeGenderNet.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/ageGenderNet/extractParams.d.ts b/build/commonjs/ageGenderNet/extractParams.d.ts deleted file mode 100644 index 14d45d2b..00000000 --- a/build/commonjs/ageGenderNet/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/ageGenderNet/extractParams.js b/build/commonjs/ageGenderNet/extractParams.js deleted file mode 100644 index d950d241..00000000 --- a/build/commonjs/ageGenderNet/extractParams.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractParams(weights) { - var paramMappings = []; - var _a = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var extractFCParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractFCParamsFactory(extractWeights, paramMappings); - var age = extractFCParams(512, 1, 'fc/age'); - var gender = extractFCParams(512, 2, 'fc/gender'); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { - paramMappings: paramMappings, - params: { fc: { age: age, gender: gender } } - }; -} -exports.extractParams = extractParams; -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/commonjs/ageGenderNet/extractParams.js.map b/build/commonjs/ageGenderNet/extractParams.js.map deleted file mode 100644 index 44ce29e9..00000000 --- a/build/commonjs/ageGenderNet/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/ageGenderNet/extractParams.ts"],"names":[],"mappings":";;AAAA,2EAAuE;AAIvE,SAAgB,aAAa,CAAC,OAAqB;IAEjD,IAAM,aAAa,GAA4C,EAAE,CAAA;IAE3D,IAAA,0FAGqD,EAFzD,kCAAc,EACd,4CACyD,CAAA;IAE3D,IAAM,eAAe,GAAG,sDAAwB,CAAC,sBAAsB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAEtG,IAAM,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;IAC7C,IAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;IAEnD,IAAI,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAkC,mBAAmB,EAAE,CAAC,MAAQ,CAAC,CAAA;KAClF;IAED,OAAO;QACL,aAAa,eAAA;QACb,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAA,EAAE,MAAM,QAAA,EAAE,EAAE;KAChC,CAAA;AACH,CAAC;AAtBD,sCAsBC"} \ No newline at end of file diff --git a/build/commonjs/ageGenderNet/extractParamsFromWeigthMap.d.ts b/build/commonjs/ageGenderNet/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index 7bf5a66d..00000000 --- a/build/commonjs/ageGenderNet/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/ageGenderNet/extractParamsFromWeigthMap.js b/build/commonjs/ageGenderNet/extractParamsFromWeigthMap.js deleted file mode 100644 index 540a3d86..00000000 --- a/build/commonjs/ageGenderNet/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractParamsFromWeigthMap(weightMap) { - var paramMappings = []; - var extractWeightEntry = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - function extractFcParams(prefix) { - var weights = extractWeightEntry(prefix + "/weights", 2); - var bias = extractWeightEntry(prefix + "/bias", 1); - return { weights: weights, bias: bias }; - } - var params = { - fc: { - age: extractFcParams('fc/age'), - gender: extractFcParams('fc/gender') - } - }; - tfjs_image_recognition_base_1.TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: params, paramMappings: paramMappings }; -} -exports.extractParamsFromWeigthMap = extractParamsFromWeigthMap; -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/commonjs/ageGenderNet/extractParamsFromWeigthMap.js.map b/build/commonjs/ageGenderNet/extractParamsFromWeigthMap.js.map deleted file mode 100644 index 5f05e9b8..00000000 --- a/build/commonjs/ageGenderNet/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/ageGenderNet/extractParamsFromWeigthMap.ts"],"names":[],"mappings":";;AACA,2EAAuE;AAIvE,SAAgB,0BAA0B,CACxC,SAA4B;IAG5B,IAAM,aAAa,GAA4C,EAAE,CAAA;IAEjE,IAAM,kBAAkB,GAAG,sDAAwB,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEvG,SAAS,eAAe,CAAC,MAAc;QACrC,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,aAAU,EAAE,CAAC,CAAC,CAAA;QACvE,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,CAAC,CAAA;QACjE,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC;IAED,IAAM,MAAM,GAAG;QACb,EAAE,EAAE;YACF,GAAG,EAAE,eAAe,CAAC,QAAQ,CAAC;YAC9B,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC;SACrC;KACF,CAAA;IAED,sDAAwB,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAClC,CAAC;AAxBD,gEAwBC"} \ No newline at end of file diff --git a/build/commonjs/ageGenderNet/index.d.ts b/build/commonjs/ageGenderNet/index.d.ts deleted file mode 100644 index 922b2de9..00000000 --- a/build/commonjs/ageGenderNet/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './AgeGenderNet'; -export * from './types'; diff --git a/build/commonjs/ageGenderNet/index.js b/build/commonjs/ageGenderNet/index.js deleted file mode 100644 index 18dc46e6..00000000 --- a/build/commonjs/ageGenderNet/index.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./AgeGenderNet"), exports); -tslib_1.__exportStar(require("./types"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/ageGenderNet/index.js.map b/build/commonjs/ageGenderNet/index.js.map deleted file mode 100644 index b0e84876..00000000 --- a/build/commonjs/ageGenderNet/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ageGenderNet/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,kDAAwB"} \ No newline at end of file diff --git a/build/commonjs/ageGenderNet/types.d.ts b/build/commonjs/ageGenderNet/types.d.ts deleted file mode 100644 index f8410cb5..00000000 --- a/build/commonjs/ageGenderNet/types.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare type AgeAndGenderPrediction = { - age: number; - gender: Gender; - genderProbability: number; -}; -export declare enum Gender { - FEMALE = "female", - MALE = "male" -} -export declare type NetOutput = { - age: tf.Tensor1D; - gender: tf.Tensor2D; -}; -export declare type NetParams = { - fc: { - age: TfjsImageRecognitionBase.FCParams; - gender: TfjsImageRecognitionBase.FCParams; - }; -}; diff --git a/build/commonjs/ageGenderNet/types.js b/build/commonjs/ageGenderNet/types.js deleted file mode 100644 index 3552815b..00000000 --- a/build/commonjs/ageGenderNet/types.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var Gender; -(function (Gender) { - Gender["FEMALE"] = "female"; - Gender["MALE"] = "male"; -})(Gender = exports.Gender || (exports.Gender = {})); -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/commonjs/ageGenderNet/types.js.map b/build/commonjs/ageGenderNet/types.js.map deleted file mode 100644 index a9b7884a..00000000 --- a/build/commonjs/ageGenderNet/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ageGenderNet/types.ts"],"names":[],"mappings":";;AASA,IAAY,MAGX;AAHD,WAAY,MAAM;IAChB,2BAAiB,CAAA;IACjB,uBAAa,CAAA;AACf,CAAC,EAHW,MAAM,GAAN,cAAM,KAAN,cAAM,QAGjB"} \ No newline at end of file diff --git a/build/commonjs/classes/FaceDetection.d.ts b/build/commonjs/classes/FaceDetection.d.ts deleted file mode 100644 index 0fed6f3f..00000000 --- a/build/commonjs/classes/FaceDetection.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Box, IDimensions, ObjectDetection, Rect } from 'tfjs-image-recognition-base'; -export interface IFaceDetecion { - score: number; - box: Box; -} -export declare class FaceDetection extends ObjectDetection implements IFaceDetecion { - constructor(score: number, relativeBox: Rect, imageDims: IDimensions); - forSize(width: number, height: number): FaceDetection; -} diff --git a/build/commonjs/classes/FaceDetection.js b/build/commonjs/classes/FaceDetection.js deleted file mode 100644 index bfb8e814..00000000 --- a/build/commonjs/classes/FaceDetection.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceDetection = /** @class */ (function (_super) { - tslib_1.__extends(FaceDetection, _super); - function FaceDetection(score, relativeBox, imageDims) { - return _super.call(this, score, score, '', relativeBox, imageDims) || this; - } - FaceDetection.prototype.forSize = function (width, height) { - var _a = _super.prototype.forSize.call(this, width, height), score = _a.score, relativeBox = _a.relativeBox, imageDims = _a.imageDims; - return new FaceDetection(score, relativeBox, imageDims); - }; - return FaceDetection; -}(tfjs_image_recognition_base_1.ObjectDetection)); -exports.FaceDetection = FaceDetection; -//# sourceMappingURL=FaceDetection.js.map \ No newline at end of file diff --git a/build/commonjs/classes/FaceDetection.js.map b/build/commonjs/classes/FaceDetection.js.map deleted file mode 100644 index c5eafd9c..00000000 --- a/build/commonjs/classes/FaceDetection.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceDetection.js","sourceRoot":"","sources":["../../../src/classes/FaceDetection.ts"],"names":[],"mappings":";;;AAAA,2EAAsF;AAOtF;IAAmC,yCAAe;IAChD,uBACE,KAAa,EACb,WAAiB,EACjB,SAAsB;eAEtB,kBAAM,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC;IACjD,CAAC;IAEM,+BAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QACpC,IAAA,uDAAgE,EAA9D,gBAAK,EAAE,4BAAW,EAAE,wBAA0C,CAAA;QACtE,OAAO,IAAI,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;IACzD,CAAC;IACH,oBAAC;AAAD,CAAC,AAbD,CAAmC,6CAAe,GAajD;AAbY,sCAAa"} \ No newline at end of file diff --git a/build/commonjs/classes/FaceLandmarks.d.ts b/build/commonjs/classes/FaceLandmarks.d.ts deleted file mode 100644 index 5a702d50..00000000 --- a/build/commonjs/classes/FaceLandmarks.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Box, Dimensions, IBoundingBox, IDimensions, IRect, Point } from 'tfjs-image-recognition-base'; -import { FaceDetection } from './FaceDetection'; -export interface IFaceLandmarks { - positions: Point[]; - shift: Point; -} -export declare class FaceLandmarks implements IFaceLandmarks { - protected _shift: Point; - protected _positions: Point[]; - protected _imgDims: Dimensions; - constructor(relativeFaceLandmarkPositions: Point[], imgDims: IDimensions, shift?: Point); - readonly shift: Point; - readonly imageWidth: number; - readonly imageHeight: number; - readonly positions: Point[]; - readonly relativePositions: Point[]; - forSize(width: number, height: number): T; - shiftBy(x: number, y: number): T; - shiftByPoint(pt: Point): T; - /** - * 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?: FaceDetection | IRect | IBoundingBox | null, options?: { - useDlibAlignment?: boolean; - minBoxPadding?: number; - }): Box; - private alignDlib; - private alignMinBbox; - protected getRefPointsForAlignment(): Point[]; -} diff --git a/build/commonjs/classes/FaceLandmarks.js b/build/commonjs/classes/FaceLandmarks.js deleted file mode 100644 index b14e5231..00000000 --- a/build/commonjs/classes/FaceLandmarks.js +++ /dev/null @@ -1,102 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var minBbox_1 = require("../minBbox"); -var FaceDetection_1 = require("./FaceDetection"); -// face alignment constants -var relX = 0.5; -var relY = 0.43; -var relScale = 0.45; -var FaceLandmarks = /** @class */ (function () { - function FaceLandmarks(relativeFaceLandmarkPositions, imgDims, shift) { - if (shift === void 0) { shift = new tfjs_image_recognition_base_1.Point(0, 0); } - var width = imgDims.width, height = imgDims.height; - this._imgDims = new tfjs_image_recognition_base_1.Dimensions(width, height); - this._shift = shift; - this._positions = relativeFaceLandmarkPositions.map(function (pt) { return pt.mul(new tfjs_image_recognition_base_1.Point(width, height)).add(shift); }); - } - Object.defineProperty(FaceLandmarks.prototype, "shift", { - get: function () { return new tfjs_image_recognition_base_1.Point(this._shift.x, this._shift.y); }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FaceLandmarks.prototype, "imageWidth", { - get: function () { return this._imgDims.width; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FaceLandmarks.prototype, "imageHeight", { - get: function () { return this._imgDims.height; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FaceLandmarks.prototype, "positions", { - get: function () { return this._positions; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FaceLandmarks.prototype, "relativePositions", { - get: function () { - var _this = this; - return this._positions.map(function (pt) { return pt.sub(_this._shift).div(new tfjs_image_recognition_base_1.Point(_this.imageWidth, _this.imageHeight)); }); - }, - enumerable: true, - configurable: true - }); - FaceLandmarks.prototype.forSize = function (width, height) { - return new this.constructor(this.relativePositions, { width: width, height: height }); - }; - FaceLandmarks.prototype.shiftBy = function (x, y) { - return new this.constructor(this.relativePositions, this._imgDims, new tfjs_image_recognition_base_1.Point(x, y)); - }; - FaceLandmarks.prototype.shiftByPoint = function (pt) { - return this.shiftBy(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, options) { - if (options === void 0) { options = {}; } - if (detection) { - var box = detection instanceof FaceDetection_1.FaceDetection - ? detection.box.floor() - : new tfjs_image_recognition_base_1.Box(detection); - return this.shiftBy(box.x, box.y).align(null, options); - } - var _a = Object.assign({}, { useDlibAlignment: false, minBoxPadding: 0.2 }, options), useDlibAlignment = _a.useDlibAlignment, minBoxPadding = _a.minBoxPadding; - if (useDlibAlignment) { - return this.alignDlib(); - } - return this.alignMinBbox(minBoxPadding); - }; - FaceLandmarks.prototype.alignDlib = function () { - var centers = this.getRefPointsForAlignment(); - var 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 = tfjs_image_recognition_base_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 tfjs_image_recognition_base_1.Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y)); - }; - FaceLandmarks.prototype.alignMinBbox = function (padding) { - var box = minBbox_1.minBbox(this.positions); - return box.pad(box.width * padding, box.height * padding); - }; - FaceLandmarks.prototype.getRefPointsForAlignment = function () { - throw new Error('getRefPointsForAlignment not implemented by base class'); - }; - return FaceLandmarks; -}()); -exports.FaceLandmarks = FaceLandmarks; -//# sourceMappingURL=FaceLandmarks.js.map \ No newline at end of file diff --git a/build/commonjs/classes/FaceLandmarks.js.map b/build/commonjs/classes/FaceLandmarks.js.map deleted file mode 100644 index 1a80e88b..00000000 --- a/build/commonjs/classes/FaceLandmarks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceLandmarks.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/classes/FaceLandmarks5.d.ts b/build/commonjs/classes/FaceLandmarks5.d.ts deleted file mode 100644 index 554ce2f1..00000000 --- a/build/commonjs/classes/FaceLandmarks5.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Point } from 'tfjs-image-recognition-base'; -import { FaceLandmarks } from './FaceLandmarks'; -export declare class FaceLandmarks5 extends FaceLandmarks { - protected getRefPointsForAlignment(): Point[]; -} diff --git a/build/commonjs/classes/FaceLandmarks5.js b/build/commonjs/classes/FaceLandmarks5.js deleted file mode 100644 index c62a0991..00000000 --- a/build/commonjs/classes/FaceLandmarks5.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceLandmarks_1 = require("./FaceLandmarks"); -var FaceLandmarks5 = /** @class */ (function (_super) { - tslib_1.__extends(FaceLandmarks5, _super); - function FaceLandmarks5() { - return _super !== null && _super.apply(this, arguments) || this; - } - FaceLandmarks5.prototype.getRefPointsForAlignment = function () { - var pts = this.positions; - return [ - pts[0], - pts[1], - tfjs_image_recognition_base_1.getCenterPoint([pts[3], pts[4]]) - ]; - }; - return FaceLandmarks5; -}(FaceLandmarks_1.FaceLandmarks)); -exports.FaceLandmarks5 = FaceLandmarks5; -//# sourceMappingURL=FaceLandmarks5.js.map \ No newline at end of file diff --git a/build/commonjs/classes/FaceLandmarks5.js.map b/build/commonjs/classes/FaceLandmarks5.js.map deleted file mode 100644 index a4303925..00000000 --- a/build/commonjs/classes/FaceLandmarks5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceLandmarks5.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks5.ts"],"names":[],"mappings":";;;AAAA,2EAAoE;AAEpE,iDAAgD;AAEhD;IAAoC,0CAAa;IAAjD;;IAUA,CAAC;IARW,iDAAwB,GAAlC;QACE,IAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAA;QAC1B,OAAO;YACL,GAAG,CAAC,CAAC,CAAC;YACN,GAAG,CAAC,CAAC,CAAC;YACN,4CAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC,CAAA;IACH,CAAC;IACH,qBAAC;AAAD,CAAC,AAVD,CAAoC,6BAAa,GAUhD;AAVY,wCAAc"} \ No newline at end of file diff --git a/build/commonjs/classes/FaceLandmarks68.d.ts b/build/commonjs/classes/FaceLandmarks68.d.ts deleted file mode 100644 index 5ac3974e..00000000 --- a/build/commonjs/classes/FaceLandmarks68.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Point } from 'tfjs-image-recognition-base'; -import { FaceLandmarks } from '../classes/FaceLandmarks'; -export declare class FaceLandmarks68 extends FaceLandmarks { - getJawOutline(): Point[]; - getLeftEyeBrow(): Point[]; - getRightEyeBrow(): Point[]; - getNose(): Point[]; - getLeftEye(): Point[]; - getRightEye(): Point[]; - getMouth(): Point[]; - protected getRefPointsForAlignment(): Point[]; -} diff --git a/build/commonjs/classes/FaceLandmarks68.js b/build/commonjs/classes/FaceLandmarks68.js deleted file mode 100644 index 8128068c..00000000 --- a/build/commonjs/classes/FaceLandmarks68.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceLandmarks_1 = require("../classes/FaceLandmarks"); -var FaceLandmarks68 = /** @class */ (function (_super) { - tslib_1.__extends(FaceLandmarks68, _super); - function FaceLandmarks68() { - return _super !== null && _super.apply(this, arguments) || this; - } - FaceLandmarks68.prototype.getJawOutline = function () { - return this.positions.slice(0, 17); - }; - FaceLandmarks68.prototype.getLeftEyeBrow = function () { - return this.positions.slice(17, 22); - }; - FaceLandmarks68.prototype.getRightEyeBrow = function () { - return this.positions.slice(22, 27); - }; - FaceLandmarks68.prototype.getNose = function () { - return this.positions.slice(27, 36); - }; - FaceLandmarks68.prototype.getLeftEye = function () { - return this.positions.slice(36, 42); - }; - FaceLandmarks68.prototype.getRightEye = function () { - return this.positions.slice(42, 48); - }; - FaceLandmarks68.prototype.getMouth = function () { - return this.positions.slice(48, 68); - }; - FaceLandmarks68.prototype.getRefPointsForAlignment = function () { - return [ - this.getLeftEye(), - this.getRightEye(), - this.getMouth() - ].map(tfjs_image_recognition_base_1.getCenterPoint); - }; - return FaceLandmarks68; -}(FaceLandmarks_1.FaceLandmarks)); -exports.FaceLandmarks68 = FaceLandmarks68; -//# sourceMappingURL=FaceLandmarks68.js.map \ No newline at end of file diff --git a/build/commonjs/classes/FaceLandmarks68.js.map b/build/commonjs/classes/FaceLandmarks68.js.map deleted file mode 100644 index a83cfd49..00000000 --- a/build/commonjs/classes/FaceLandmarks68.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceLandmarks68.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks68.ts"],"names":[],"mappings":";;;AAAA,2EAAoE;AAEpE,0DAAyD;AAEzD;IAAqC,2CAAa;IAAlD;;IAoCA,CAAC;IAnCQ,uCAAa,GAApB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACpC,CAAC;IAEM,wCAAc,GAArB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,yCAAe,GAAtB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,iCAAO,GAAd;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,oCAAU,GAAjB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,qCAAW,GAAlB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,kCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAES,kDAAwB,GAAlC;QACE,OAAO;YACL,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE;SAChB,CAAC,GAAG,CAAC,4CAAc,CAAC,CAAA;IACvB,CAAC;IACH,sBAAC;AAAD,CAAC,AApCD,CAAqC,6BAAa,GAoCjD;AApCY,0CAAe"} \ No newline at end of file diff --git a/build/commonjs/classes/FaceMatch.d.ts b/build/commonjs/classes/FaceMatch.d.ts deleted file mode 100644 index 3c0befef..00000000 --- a/build/commonjs/classes/FaceMatch.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface IFaceMatch { - label: string; - distance: number; -} -export declare class FaceMatch implements IFaceMatch { - private _label; - private _distance; - constructor(label: string, distance: number); - readonly label: string; - readonly distance: number; - toString(withDistance?: boolean): string; -} diff --git a/build/commonjs/classes/FaceMatch.js b/build/commonjs/classes/FaceMatch.js deleted file mode 100644 index 0dbbe68e..00000000 --- a/build/commonjs/classes/FaceMatch.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceMatch = /** @class */ (function () { - function FaceMatch(label, distance) { - this._label = label; - this._distance = distance; - } - Object.defineProperty(FaceMatch.prototype, "label", { - get: function () { return this._label; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FaceMatch.prototype, "distance", { - get: function () { return this._distance; }, - enumerable: true, - configurable: true - }); - FaceMatch.prototype.toString = function (withDistance) { - if (withDistance === void 0) { withDistance = true; } - return "" + this.label + (withDistance ? " (" + tfjs_image_recognition_base_1.round(this.distance) + ")" : ''); - }; - return FaceMatch; -}()); -exports.FaceMatch = FaceMatch; -//# sourceMappingURL=FaceMatch.js.map \ No newline at end of file diff --git a/build/commonjs/classes/FaceMatch.js.map b/build/commonjs/classes/FaceMatch.js.map deleted file mode 100644 index f7016c12..00000000 --- a/build/commonjs/classes/FaceMatch.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceMatch.js","sourceRoot":"","sources":["../../../src/classes/FaceMatch.ts"],"names":[],"mappings":";;AAAA,2EAAoD;AAOpD;IAIE,mBAAY,KAAa,EAAE,QAAgB;QACzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;IAC3B,CAAC;IAED,sBAAW,4BAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IACjD,sBAAW,+BAAQ;aAAnB,cAAgC,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;;;OAAA;IAEhD,4BAAQ,GAAf,UAAgB,YAA4B;QAA5B,6BAAA,EAAA,mBAA4B;QAC1C,OAAO,KAAG,IAAI,CAAC,KAAK,IAAG,YAAY,CAAC,CAAC,CAAC,OAAK,mCAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAA;IAC3E,CAAC;IACH,gBAAC;AAAD,CAAC,AAfD,IAeC;AAfY,8BAAS"} \ No newline at end of file diff --git a/build/commonjs/classes/LabeledFaceDescriptors.d.ts b/build/commonjs/classes/LabeledFaceDescriptors.d.ts deleted file mode 100644 index 1e21ae50..00000000 --- a/build/commonjs/classes/LabeledFaceDescriptors.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export declare class LabeledFaceDescriptors { - private _label; - private _descriptors; - constructor(label: string, descriptors: Float32Array[]); - readonly label: string; - readonly descriptors: Float32Array[]; - toJSON(): any; - static fromJSON(json: any): LabeledFaceDescriptors; -} diff --git a/build/commonjs/classes/LabeledFaceDescriptors.js b/build/commonjs/classes/LabeledFaceDescriptors.js deleted file mode 100644 index 3ec3a66a..00000000 --- a/build/commonjs/classes/LabeledFaceDescriptors.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var LabeledFaceDescriptors = /** @class */ (function () { - function LabeledFaceDescriptors(label, descriptors) { - if (!(typeof label === 'string')) { - throw new Error('LabeledFaceDescriptors - constructor expected label to be a string'); - } - if (!Array.isArray(descriptors) || descriptors.some(function (desc) { return !(desc instanceof Float32Array); })) { - throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array'); - } - this._label = label; - this._descriptors = descriptors; - } - Object.defineProperty(LabeledFaceDescriptors.prototype, "label", { - get: function () { return this._label; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(LabeledFaceDescriptors.prototype, "descriptors", { - get: function () { return this._descriptors; }, - enumerable: true, - configurable: true - }); - LabeledFaceDescriptors.prototype.toJSON = function () { - return { - label: this.label, - descriptors: this.descriptors.map(function (d) { return Array.from(d); }) - }; - }; - LabeledFaceDescriptors.fromJSON = function (json) { - var descriptors = json.descriptors.map(function (d) { - return new Float32Array(d); - }); - return new LabeledFaceDescriptors(json.label, descriptors); - }; - return LabeledFaceDescriptors; -}()); -exports.LabeledFaceDescriptors = LabeledFaceDescriptors; -//# sourceMappingURL=LabeledFaceDescriptors.js.map \ No newline at end of file diff --git a/build/commonjs/classes/LabeledFaceDescriptors.js.map b/build/commonjs/classes/LabeledFaceDescriptors.js.map deleted file mode 100644 index 797b8ddf..00000000 --- a/build/commonjs/classes/LabeledFaceDescriptors.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"LabeledFaceDescriptors.js","sourceRoot":"","sources":["../../../src/classes/LabeledFaceDescriptors.ts"],"names":[],"mappings":";;AAAA;IAIE,gCAAY,KAAa,EAAE,WAA2B;QACpD,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;SACtF;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,CAAC,IAAI,YAAY,YAAY,CAAC,EAA/B,CAA+B,CAAC,EAAE;YAC5F,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;SAC5G;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;IACjC,CAAC;IAED,sBAAW,yCAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IACjD,sBAAW,+CAAW;aAAtB,cAA2C,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;;;OAAA;IAE9D,uCAAM,GAAb;QACE,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAb,CAAa,CAAC;SACxD,CAAC;IACJ,CAAC;IAEa,+BAAQ,GAAtB,UAAuB,IAAS;QAC9B,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,CAAM;YAC9C,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;IAEH,6BAAC;AAAD,CAAC,AAlCD,IAkCC;AAlCY,wDAAsB"} \ No newline at end of file diff --git a/build/commonjs/classes/index.d.ts b/build/commonjs/classes/index.d.ts deleted file mode 100644 index 8d1b8ffe..00000000 --- a/build/commonjs/classes/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './FaceDetection'; -export * from './FaceLandmarks'; -export * from './FaceLandmarks5'; -export * from './FaceLandmarks68'; -export * from './FaceMatch'; -export * from './LabeledFaceDescriptors'; diff --git a/build/commonjs/classes/index.js b/build/commonjs/classes/index.js deleted file mode 100644 index cf4fa0fa..00000000 --- a/build/commonjs/classes/index.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./FaceDetection"), exports); -tslib_1.__exportStar(require("./FaceLandmarks"), exports); -tslib_1.__exportStar(require("./FaceLandmarks5"), exports); -tslib_1.__exportStar(require("./FaceLandmarks68"), exports); -tslib_1.__exportStar(require("./FaceMatch"), exports); -tslib_1.__exportStar(require("./LabeledFaceDescriptors"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/classes/index.js.map b/build/commonjs/classes/index.js.map deleted file mode 100644 index c50e2ffd..00000000 --- a/build/commonjs/classes/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/classes/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,0DAAgC;AAChC,2DAAiC;AACjC,4DAAkC;AAClC,sDAA4B;AAC5B,mEAAyC"} \ No newline at end of file diff --git a/build/commonjs/common/depthwiseSeparableConv.d.ts b/build/commonjs/common/depthwiseSeparableConv.d.ts deleted file mode 100644 index 10ada1a9..00000000 --- a/build/commonjs/common/depthwiseSeparableConv.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare function depthwiseSeparableConv(x: tf.Tensor4D, params: TfjsImageRecognitionBase.SeparableConvParams, stride: [number, number]): tf.Tensor4D; diff --git a/build/commonjs/common/depthwiseSeparableConv.js b/build/commonjs/common/depthwiseSeparableConv.js deleted file mode 100644 index 969f2522..00000000 --- a/build/commonjs/common/depthwiseSeparableConv.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -function depthwiseSeparableConv(x, params, stride) { - return tf.tidy(function () { - var out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same'); - out = tf.add(out, params.bias); - return out; - }); -} -exports.depthwiseSeparableConv = depthwiseSeparableConv; -//# sourceMappingURL=depthwiseSeparableConv.js.map \ No newline at end of file diff --git a/build/commonjs/common/depthwiseSeparableConv.js.map b/build/commonjs/common/depthwiseSeparableConv.js.map deleted file mode 100644 index 129869e9..00000000 --- a/build/commonjs/common/depthwiseSeparableConv.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"depthwiseSeparableConv.js","sourceRoot":"","sources":["../../../src/common/depthwiseSeparableConv.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAG5C,SAAgB,sBAAsB,CACpC,CAAc,EACd,MAAoD,EACpD,MAAwB;IAExB,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAI,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACjG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9B,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC;AAVD,wDAUC"} \ No newline at end of file diff --git a/build/commonjs/common/fullyConnectedLayer.d.ts b/build/commonjs/common/fullyConnectedLayer.d.ts deleted file mode 100644 index baf23083..00000000 --- a/build/commonjs/common/fullyConnectedLayer.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare function fullyConnectedLayer(x: tf.Tensor2D, params: TfjsImageRecognitionBase.FCParams): tf.Tensor2D; diff --git a/build/commonjs/common/fullyConnectedLayer.js b/build/commonjs/common/fullyConnectedLayer.js deleted file mode 100644 index 624c1d5e..00000000 --- a/build/commonjs/common/fullyConnectedLayer.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -function fullyConnectedLayer(x, params) { - return tf.tidy(function () { - return tf.add(tf.matMul(x, params.weights), params.bias); - }); -} -exports.fullyConnectedLayer = fullyConnectedLayer; -//# sourceMappingURL=fullyConnectedLayer.js.map \ No newline at end of file diff --git a/build/commonjs/common/fullyConnectedLayer.js.map b/build/commonjs/common/fullyConnectedLayer.js.map deleted file mode 100644 index 9c759b6b..00000000 --- a/build/commonjs/common/fullyConnectedLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fullyConnectedLayer.js","sourceRoot":"","sources":["../../../src/common/fullyConnectedLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAG5C,SAAgB,mBAAmB,CACjC,CAAc,EACd,MAAyC;IAEzC,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,OAAA,EAAE,CAAC,GAAG,CACJ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAC5B,MAAM,CAAC,IAAI,CACZ;IAHD,CAGC,CACF,CAAA;AACH,CAAC;AAVD,kDAUC"} \ No newline at end of file diff --git a/build/commonjs/common/loadConvParamsFactory.d.ts b/build/commonjs/common/loadConvParamsFactory.d.ts deleted file mode 100644 index 9547de84..00000000 --- a/build/commonjs/common/loadConvParamsFactory.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T): (prefix: string) => TfjsImageRecognitionBase.ConvParams; diff --git a/build/commonjs/common/loadConvParamsFactory.js b/build/commonjs/common/loadConvParamsFactory.js deleted file mode 100644 index 98a6ae42..00000000 --- a/build/commonjs/common/loadConvParamsFactory.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function loadConvParamsFactory(extractWeightEntry) { - return function (prefix) { - var filters = extractWeightEntry(prefix + "/filters", 4); - var bias = extractWeightEntry(prefix + "/bias", 1); - return { filters: filters, bias: bias }; - }; -} -exports.loadConvParamsFactory = loadConvParamsFactory; -//# sourceMappingURL=loadConvParamsFactory.js.map \ No newline at end of file diff --git a/build/commonjs/common/loadConvParamsFactory.js.map b/build/commonjs/common/loadConvParamsFactory.js.map deleted file mode 100644 index 950caa90..00000000 --- a/build/commonjs/common/loadConvParamsFactory.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"loadConvParamsFactory.js","sourceRoot":"","sources":["../../../src/common/loadConvParamsFactory.ts"],"names":[],"mappings":";;AAGA,SAAgB,qBAAqB,CAAC,kBAAqE;IACzG,OAAO,UAAS,MAAc;QAC5B,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,aAAU,EAAE,CAAC,CAAC,CAAA;QACvE,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,CAAC,CAAA;QAEjE,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC,CAAA;AACH,CAAC;AAPD,sDAOC"} \ No newline at end of file diff --git a/build/commonjs/dom/extractFaceTensors.d.ts b/build/commonjs/dom/extractFaceTensors.d.ts deleted file mode 100644 index 429ea46e..00000000 --- a/build/commonjs/dom/extractFaceTensors.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { Rect } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -/** - * Extracts the tensors of the image regions containing the detected faces. - * Useful if you want to compute the face descriptors for the face images. - * Using this method is faster then extracting a canvas for each face and - * converting them to tensors individually. - * - * @param imageTensor The image tensor that face detection has been performed on. - * @param detections The face detection results or face bounding boxes for that image. - * @returns Tensors of the corresponding image region for each detected face. - */ -export declare function extractFaceTensors(imageTensor: tf.Tensor3D | tf.Tensor4D, detections: Array): Promise; diff --git a/build/commonjs/dom/extractFaceTensors.js b/build/commonjs/dom/extractFaceTensors.js deleted file mode 100644 index 129356a6..00000000 --- a/build/commonjs/dom/extractFaceTensors.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceDetection_1 = require("../classes/FaceDetection"); -/** - * Extracts the tensors of the image regions containing the detected faces. - * Useful if you want to compute the face descriptors for the face images. - * Using this method is faster then extracting a canvas for each face and - * converting them to tensors individually. - * - * @param imageTensor The image tensor that face detection has been performed on. - * @param detections The face detection results or face bounding boxes for that image. - * @returns Tensors of the corresponding image region for each detected face. - */ -function extractFaceTensors(imageTensor, detections) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - return tslib_1.__generator(this, function (_a) { - if (!tfjs_image_recognition_base_1.isTensor3D(imageTensor) && !tfjs_image_recognition_base_1.isTensor4D(imageTensor)) { - throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D'); - } - if (tfjs_image_recognition_base_1.isTensor4D(imageTensor) && imageTensor.shape[0] > 1) { - throw new Error('extractFaceTensors - batchSize > 1 not supported'); - } - return [2 /*return*/, tf.tidy(function () { - var _a = imageTensor.shape.slice(tfjs_image_recognition_base_1.isTensor4D(imageTensor) ? 1 : 0), imgHeight = _a[0], imgWidth = _a[1], numChannels = _a[2]; - var boxes = detections.map(function (det) { return det instanceof FaceDetection_1.FaceDetection - ? det.forSize(imgWidth, imgHeight).box - : det; }) - .map(function (box) { return box.clipAtImageBorders(imgWidth, imgHeight); }); - var faceTensors = boxes.map(function (_a) { - var x = _a.x, y = _a.y, width = _a.width, height = _a.height; - return tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]); - }); - return faceTensors; - })]; - }); - }); -} -exports.extractFaceTensors = extractFaceTensors; -//# sourceMappingURL=extractFaceTensors.js.map \ No newline at end of file diff --git a/build/commonjs/dom/extractFaceTensors.js.map b/build/commonjs/dom/extractFaceTensors.js.map deleted file mode 100644 index 1ad7fb81..00000000 --- a/build/commonjs/dom/extractFaceTensors.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractFaceTensors.js","sourceRoot":"","sources":["../../../src/dom/extractFaceTensors.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAA2E;AAE3E,0DAAyD;AAEzD;;;;;;;;;GASG;AACH,SAAsB,kBAAkB,CACtC,WAAsC,EACtC,UAAuC;;;YAGvC,IAAI,CAAC,wCAAU,CAAC,WAAW,CAAC,IAAI,CAAC,wCAAU,CAAC,WAAW,CAAC,EAAE;gBACxD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;aAC7E;YAED,IAAI,wCAAU,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACvD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;aACpE;YAED,sBAAO,EAAE,CAAC,IAAI,CAAC;oBACP,IAAA,2FAA6F,EAA5F,iBAAS,EAAE,gBAAQ,EAAE,mBAAuE,CAAA;oBAEnG,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,6BAAa;wBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,GAAG;wBACtC,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;yBACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAA;oBAE1D,IAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;4BAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;wBAClD,OAAA,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;oBAAvG,CAAuG,CACxG,CAAA;oBAED,OAAO,WAAW,CAAA;gBACpB,CAAC,CAAC,EAAA;;;CACH;AA7BD,gDA6BC"} \ No newline at end of file diff --git a/build/commonjs/dom/extractFaces.d.ts b/build/commonjs/dom/extractFaces.d.ts deleted file mode 100644 index d7bf0e60..00000000 --- a/build/commonjs/dom/extractFaces.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Rect, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -/** - * Extracts the image regions containing the detected faces. - * - * @param input The image that face detection has been performed on. - * @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. - */ -export declare function extractFaces(input: TNetInput, detections: Array): Promise; diff --git a/build/commonjs/dom/extractFaces.js b/build/commonjs/dom/extractFaces.js deleted file mode 100644 index 1b81e57f..00000000 --- a/build/commonjs/dom/extractFaces.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceDetection_1 = require("../classes/FaceDetection"); -/** - * Extracts the image regions containing the detected faces. - * - * @param input The image that face detection has been performed on. - * @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. - */ -function extractFaces(input, detections) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var Canvas, canvas, netInput, tensorOrCanvas, _a, ctx, boxes; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - Canvas = tfjs_image_recognition_base_1.env.getEnv().Canvas; - canvas = input; - if (!!(input instanceof Canvas)) return [3 /*break*/, 5]; - return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: - netInput = _b.sent(); - if (netInput.batchSize > 1) { - throw new Error('extractFaces - batchSize > 1 not supported'); - } - tensorOrCanvas = netInput.getInput(0); - if (!(tensorOrCanvas instanceof Canvas)) return [3 /*break*/, 2]; - _a = tensorOrCanvas; - return [3 /*break*/, 4]; - case 2: return [4 /*yield*/, tfjs_image_recognition_base_1.imageTensorToCanvas(tensorOrCanvas)]; - case 3: - _a = _b.sent(); - _b.label = 4; - case 4: - canvas = _a; - _b.label = 5; - case 5: - ctx = tfjs_image_recognition_base_1.getContext2dOrThrow(canvas); - boxes = detections.map(function (det) { return det instanceof FaceDetection_1.FaceDetection - ? det.forSize(canvas.width, canvas.height).box.floor() - : det; }) - .map(function (box) { return box.clipAtImageBorders(canvas.width, canvas.height); }); - return [2 /*return*/, boxes.map(function (_a) { - var x = _a.x, y = _a.y, width = _a.width, height = _a.height; - var faceImg = tfjs_image_recognition_base_1.createCanvas({ width: width, height: height }); - tfjs_image_recognition_base_1.getContext2dOrThrow(faceImg) - .putImageData(ctx.getImageData(x, y, width, height), 0, 0); - return faceImg; - })]; - } - }); - }); -} -exports.extractFaces = extractFaces; -//# sourceMappingURL=extractFaces.js.map \ No newline at end of file diff --git a/build/commonjs/dom/extractFaces.js.map b/build/commonjs/dom/extractFaces.js.map deleted file mode 100644 index 1eca00ca..00000000 --- a/build/commonjs/dom/extractFaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractFaces.js","sourceRoot":"","sources":["../../../src/dom/extractFaces.ts"],"names":[],"mappings":";;;AAAA,2EAQqC;AAErC,0DAAyD;AAEzD;;;;;;GAMG;AACH,SAAsB,YAAY,CAChC,KAAgB,EAChB,UAAuC;;;;;;oBAG/B,MAAM,GAAK,iCAAG,CAAC,MAAM,EAAE,OAAjB,CAAiB;oBAE3B,MAAM,GAAG,KAA0B,CAAA;yBAEnC,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC,EAA1B,wBAA0B;oBACX,qBAAM,wCAAU,CAAC,KAAK,CAAC,EAAA;;oBAAlC,QAAQ,GAAG,SAAuB;oBAExC,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC1B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;qBAC9D;oBAEK,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;yBAClC,CAAA,cAAc,YAAY,MAAM,CAAA,EAAhC,wBAAgC;oBACrC,KAAA,cAAc,CAAA;;wBACd,qBAAM,iDAAmB,CAAC,cAAc,CAAC,EAAA;;oBAAzC,KAAA,SAAyC,CAAA;;;oBAF7C,MAAM,KAEuC,CAAA;;;oBAGzC,GAAG,GAAG,iDAAmB,CAAC,MAAM,CAAC,CAAA;oBACjC,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,6BAAa;wBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE;wBACtD,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;yBACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAnD,CAAmD,CAAC,CAAA;oBAElE,sBAAO,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;gCAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;4BACrC,IAAM,OAAO,GAAG,0CAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;4BAC/C,iDAAmB,CAAC,OAAO,CAAC;iCACzB,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;4BAC5D,OAAO,OAAO,CAAA;wBAChB,CAAC,CAAC,EAAA;;;;CACH;AApCD,oCAoCC"} \ No newline at end of file diff --git a/build/commonjs/dom/index.d.ts b/build/commonjs/dom/index.d.ts deleted file mode 100644 index d6ea1a6f..00000000 --- a/build/commonjs/dom/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './extractFaces'; -export * from './extractFaceTensors'; diff --git a/build/commonjs/dom/index.js b/build/commonjs/dom/index.js deleted file mode 100644 index 32a27108..00000000 --- a/build/commonjs/dom/index.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./extractFaces"), exports); -tslib_1.__exportStar(require("./extractFaceTensors"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/dom/index.js.map b/build/commonjs/dom/index.js.map deleted file mode 100644 index 77c34b6d..00000000 --- a/build/commonjs/dom/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dom/index.ts"],"names":[],"mappings":";;;AAAA,yDAA8B;AAC9B,+DAAoC"} \ No newline at end of file diff --git a/build/commonjs/draw/DrawFaceLandmarks.d.ts b/build/commonjs/draw/DrawFaceLandmarks.d.ts deleted file mode 100644 index 4833c4b3..00000000 --- a/build/commonjs/draw/DrawFaceLandmarks.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { FaceLandmarks } from '../classes/FaceLandmarks'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -export interface IDrawFaceLandmarksOptions { - drawLines?: boolean; - drawPoints?: boolean; - lineWidth?: number; - pointSize?: number; - lineColor?: string; - pointColor?: string; -} -export declare class DrawFaceLandmarksOptions { - drawLines: boolean; - drawPoints: boolean; - lineWidth: number; - pointSize: number; - lineColor: string; - pointColor: string; - constructor(options?: IDrawFaceLandmarksOptions); -} -export declare class DrawFaceLandmarks { - faceLandmarks: FaceLandmarks; - options: DrawFaceLandmarksOptions; - constructor(faceLandmarks: FaceLandmarks, options?: IDrawFaceLandmarksOptions); - draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): void; -} -export declare type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>; -export declare function drawFaceLandmarks(canvasArg: string | HTMLCanvasElement, faceLandmarks: DrawFaceLandmarksInput | Array): void; diff --git a/build/commonjs/draw/DrawFaceLandmarks.js b/build/commonjs/draw/DrawFaceLandmarks.js deleted file mode 100644 index 0b2ebe8f..00000000 --- a/build/commonjs/draw/DrawFaceLandmarks.js +++ /dev/null @@ -1,69 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceLandmarks_1 = require("../classes/FaceLandmarks"); -var FaceLandmarks68_1 = require("../classes/FaceLandmarks68"); -var WithFaceLandmarks_1 = require("../factories/WithFaceLandmarks"); -var drawContour_1 = require("./drawContour"); -var DrawFaceLandmarksOptions = /** @class */ (function () { - function DrawFaceLandmarksOptions(options) { - if (options === void 0) { options = {}; } - var _a = options.drawLines, drawLines = _a === void 0 ? true : _a, _b = options.drawPoints, drawPoints = _b === void 0 ? true : _b, lineWidth = options.lineWidth, lineColor = options.lineColor, pointSize = options.pointSize, pointColor = options.pointColor; - this.drawLines = drawLines; - this.drawPoints = drawPoints; - this.lineWidth = lineWidth || 1; - this.pointSize = pointSize || 2; - this.lineColor = lineColor || 'rgba(0, 255, 255, 1)'; - this.pointColor = pointColor || 'rgba(255, 0, 255, 1)'; - } - return DrawFaceLandmarksOptions; -}()); -exports.DrawFaceLandmarksOptions = DrawFaceLandmarksOptions; -var DrawFaceLandmarks = /** @class */ (function () { - function DrawFaceLandmarks(faceLandmarks, options) { - if (options === void 0) { options = {}; } - this.faceLandmarks = faceLandmarks; - this.options = new DrawFaceLandmarksOptions(options); - } - DrawFaceLandmarks.prototype.draw = function (canvasArg) { - var ctx = tfjs_image_recognition_base_1.getContext2dOrThrow(canvasArg); - var _a = this.options, drawLines = _a.drawLines, drawPoints = _a.drawPoints, lineWidth = _a.lineWidth, lineColor = _a.lineColor, pointSize = _a.pointSize, pointColor = _a.pointColor; - if (drawLines && this.faceLandmarks instanceof FaceLandmarks68_1.FaceLandmarks68) { - ctx.strokeStyle = lineColor; - ctx.lineWidth = lineWidth; - drawContour_1.drawContour(ctx, this.faceLandmarks.getJawOutline()); - drawContour_1.drawContour(ctx, this.faceLandmarks.getLeftEyeBrow()); - drawContour_1.drawContour(ctx, this.faceLandmarks.getRightEyeBrow()); - drawContour_1.drawContour(ctx, this.faceLandmarks.getNose()); - drawContour_1.drawContour(ctx, this.faceLandmarks.getLeftEye(), true); - drawContour_1.drawContour(ctx, this.faceLandmarks.getRightEye(), true); - drawContour_1.drawContour(ctx, this.faceLandmarks.getMouth(), true); - } - if (drawPoints) { - ctx.strokeStyle = pointColor; - ctx.fillStyle = pointColor; - var drawPoint = function (pt) { - ctx.beginPath(); - ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI); - ctx.fill(); - }; - this.faceLandmarks.positions.forEach(drawPoint); - } - }; - return DrawFaceLandmarks; -}()); -exports.DrawFaceLandmarks = DrawFaceLandmarks; -function drawFaceLandmarks(canvasArg, faceLandmarks) { - var faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks]; - faceLandmarksArray.forEach(function (f) { - var landmarks = f instanceof FaceLandmarks_1.FaceLandmarks - ? f - : (WithFaceLandmarks_1.isWithFaceLandmarks(f) ? f.landmarks : undefined); - if (!landmarks) { - throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof'); - } - new DrawFaceLandmarks(landmarks).draw(canvasArg); - }); -} -exports.drawFaceLandmarks = drawFaceLandmarks; -//# sourceMappingURL=DrawFaceLandmarks.js.map \ No newline at end of file diff --git a/build/commonjs/draw/DrawFaceLandmarks.js.map b/build/commonjs/draw/DrawFaceLandmarks.js.map deleted file mode 100644 index 27b572a8..00000000 --- a/build/commonjs/draw/DrawFaceLandmarks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DrawFaceLandmarks.js","sourceRoot":"","sources":["../../../src/draw/DrawFaceLandmarks.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/draw/drawContour.d.ts b/build/commonjs/draw/drawContour.d.ts deleted file mode 100644 index 78664e6b..00000000 --- a/build/commonjs/draw/drawContour.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Point } from 'tfjs-image-recognition-base'; -export declare function drawContour(ctx: CanvasRenderingContext2D, points: Point[], isClosed?: boolean): void; diff --git a/build/commonjs/draw/drawContour.js b/build/commonjs/draw/drawContour.js deleted file mode 100644 index 097275c3..00000000 --- a/build/commonjs/draw/drawContour.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -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(); -} -exports.drawContour = drawContour; -//# sourceMappingURL=drawContour.js.map \ No newline at end of file diff --git a/build/commonjs/draw/drawContour.js.map b/build/commonjs/draw/drawContour.js.map deleted file mode 100644 index 300e1d55..00000000 --- a/build/commonjs/draw/drawContour.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"drawContour.js","sourceRoot":"","sources":["../../../src/draw/drawContour.ts"],"names":[],"mappings":";;AAEA,SAAgB,WAAW,CACzB,GAA6B,EAC7B,MAAe,EACf,QAAyB;IAAzB,yBAAA,EAAA,gBAAyB;IAEzB,GAAG,CAAC,SAAS,EAAE,CAAA;IAEf,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAC,EAAQ,EAAE,OAAO;YAAf,QAAC,EAAE,QAAC;QAC7B,IAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,IAAI,QAAQ,EAAE;QACZ,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtC,IAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE;YAChB,OAAM;SACP;QAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;KACvB;IAED,GAAG,CAAC,MAAM,EAAE,CAAA;AACd,CAAC;AAzBD,kCAyBC"} \ No newline at end of file diff --git a/build/commonjs/draw/drawDetections.d.ts b/build/commonjs/draw/drawDetections.d.ts deleted file mode 100644 index 784994a0..00000000 --- a/build/commonjs/draw/drawDetections.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { IBoundingBox, IRect } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -export declare type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>; -export declare function drawDetections(canvasArg: string | HTMLCanvasElement, detections: TDrawDetectionsInput | Array): void; diff --git a/build/commonjs/draw/drawDetections.js b/build/commonjs/draw/drawDetections.js deleted file mode 100644 index b504ef78..00000000 --- a/build/commonjs/draw/drawDetections.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceDetection_1 = require("../classes/FaceDetection"); -var WithFaceDetection_1 = require("../factories/WithFaceDetection"); -function drawDetections(canvasArg, detections) { - var detectionsArray = Array.isArray(detections) ? detections : [detections]; - detectionsArray.forEach(function (det) { - var score = det instanceof FaceDetection_1.FaceDetection - ? det.score - : (WithFaceDetection_1.isWithFaceDetection(det) ? det.detection.score : undefined); - var box = det instanceof FaceDetection_1.FaceDetection - ? det.box - : (WithFaceDetection_1.isWithFaceDetection(det) ? det.detection.box : new tfjs_image_recognition_base_1.Box(det)); - var label = score ? "" + tfjs_image_recognition_base_1.round(score) : undefined; - new tfjs_image_recognition_base_1.draw.DrawBox(box, { label: label }).draw(canvasArg); - }); -} -exports.drawDetections = drawDetections; -//# sourceMappingURL=drawDetections.js.map \ No newline at end of file diff --git a/build/commonjs/draw/drawDetections.js.map b/build/commonjs/draw/drawDetections.js.map deleted file mode 100644 index 26d60050..00000000 --- a/build/commonjs/draw/drawDetections.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"drawDetections.js","sourceRoot":"","sources":["../../../src/draw/drawDetections.ts"],"names":[],"mappings":";;AAAA,2EAAoF;AAEpF,0DAAyD;AACzD,oEAAwF;AAIxF,SAAgB,cAAc,CAC5B,SAAqC,EACrC,UAA8D;IAE9D,IAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IAE7E,eAAe,CAAC,OAAO,CAAC,UAAA,GAAG;QACzB,IAAM,KAAK,GAAG,GAAG,YAAY,6BAAa;YACxC,CAAC,CAAC,GAAG,CAAC,KAAK;YACX,CAAC,CAAC,CAAC,uCAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAEhE,IAAM,GAAG,GAAG,GAAG,YAAY,6BAAa;YACtC,CAAC,CAAC,GAAG,CAAC,GAAG;YACT,CAAC,CAAC,CAAC,uCAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,iCAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAEjE,IAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAG,mCAAK,CAAC,KAAK,CAAG,CAAC,CAAC,CAAC,SAAS,CAAA;QACnD,IAAI,kCAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,OAAA,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;AACJ,CAAC;AAlBD,wCAkBC"} \ No newline at end of file diff --git a/build/commonjs/draw/drawFaceExpressions.d.ts b/build/commonjs/draw/drawFaceExpressions.d.ts deleted file mode 100644 index e07f3928..00000000 --- a/build/commonjs/draw/drawFaceExpressions.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { IPoint } from 'tfjs-image-recognition-base'; -import { FaceExpressions } from '../faceExpressionNet'; -import { WithFaceExpressions } from '../factories/WithFaceExpressions'; -export declare type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>; -export declare function drawFaceExpressions(canvasArg: string | HTMLCanvasElement, faceExpressions: DrawFaceExpressionsInput | Array, minConfidence?: number, textFieldAnchor?: IPoint): void; diff --git a/build/commonjs/draw/drawFaceExpressions.js b/build/commonjs/draw/drawFaceExpressions.js deleted file mode 100644 index d743b1ad..00000000 --- a/build/commonjs/draw/drawFaceExpressions.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var faceExpressionNet_1 = require("../faceExpressionNet"); -var WithFaceDetection_1 = require("../factories/WithFaceDetection"); -var WithFaceExpressions_1 = require("../factories/WithFaceExpressions"); -function drawFaceExpressions(canvasArg, faceExpressions, minConfidence, textFieldAnchor) { - if (minConfidence === void 0) { minConfidence = 0.1; } - var faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions]; - faceExpressionsArray.forEach(function (e) { - var expr = e instanceof faceExpressionNet_1.FaceExpressions - ? e - : (WithFaceExpressions_1.isWithFaceExpressions(e) ? e.expressions : undefined); - if (!expr) { - throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof'); - } - var sorted = expr.asSortedArray(); - var resultsToDisplay = sorted.filter(function (expr) { return expr.probability > minConfidence; }); - var anchor = WithFaceDetection_1.isWithFaceDetection(e) - ? e.detection.box.bottomLeft - : (textFieldAnchor || new tfjs_image_recognition_base_1.Point(0, 0)); - var drawTextField = new tfjs_image_recognition_base_1.draw.DrawTextField(resultsToDisplay.map(function (expr) { return expr.expression + " (" + tfjs_image_recognition_base_1.round(expr.probability) + ")"; }), anchor); - drawTextField.draw(canvasArg); - }); -} -exports.drawFaceExpressions = drawFaceExpressions; -//# sourceMappingURL=drawFaceExpressions.js.map \ No newline at end of file diff --git a/build/commonjs/draw/drawFaceExpressions.js.map b/build/commonjs/draw/drawFaceExpressions.js.map deleted file mode 100644 index 687aaa1c..00000000 --- a/build/commonjs/draw/drawFaceExpressions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"drawFaceExpressions.js","sourceRoot":"","sources":["../../../src/draw/drawFaceExpressions.ts"],"names":[],"mappings":";;AAAA,2EAAyE;AAEzE,0DAAuD;AACvD,oEAAqE;AACrE,wEAA8F;AAI9F,SAAgB,mBAAmB,CACjC,SAAqC,EACrC,eAA2E,EAC3E,aAAmB,EACnB,eAAwB;IADxB,8BAAA,EAAA,mBAAmB;IAGnB,IAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;IAEjG,oBAAoB,CAAC,OAAO,CAAC,UAAA,CAAC;QAC5B,IAAM,IAAI,GAAG,CAAC,YAAY,mCAAe;YACvC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC,2CAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAC1D,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,iHAAiH,CAAC,CAAA;SACnI;QAED,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QACnC,IAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,WAAW,GAAG,aAAa,EAAhC,CAAgC,CAAC,CAAA;QAEhF,IAAM,MAAM,GAAG,uCAAmB,CAAC,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU;YAC5B,CAAC,CAAC,CAAC,eAAe,IAAI,IAAI,mCAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAExC,IAAM,aAAa,GAAG,IAAI,kCAAI,CAAC,aAAa,CAC1C,gBAAgB,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAG,IAAI,CAAC,UAAU,UAAK,mCAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAG,EAAjD,CAAiD,CAAC,EAC/E,MAAM,CACP,CAAA;QACD,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC;AA7BD,kDA6BC"} \ No newline at end of file diff --git a/build/commonjs/draw/index.d.ts b/build/commonjs/draw/index.d.ts deleted file mode 100644 index 37a3bddd..00000000 --- a/build/commonjs/draw/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './drawContour'; -export * from './drawDetections'; -export * from './drawFaceExpressions'; -export * from './DrawFaceLandmarks'; diff --git a/build/commonjs/draw/index.js b/build/commonjs/draw/index.js deleted file mode 100644 index 65beb0f6..00000000 --- a/build/commonjs/draw/index.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./drawContour"), exports); -tslib_1.__exportStar(require("./drawDetections"), exports); -tslib_1.__exportStar(require("./drawFaceExpressions"), exports); -tslib_1.__exportStar(require("./DrawFaceLandmarks"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/draw/index.js.map b/build/commonjs/draw/index.js.map deleted file mode 100644 index be2173cc..00000000 --- a/build/commonjs/draw/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/draw/index.ts"],"names":[],"mappings":";;;AAAA,wDAA6B;AAC7B,2DAAgC;AAChC,gEAAqC;AACrC,8DAAmC"} \ No newline at end of file diff --git a/build/commonjs/euclideanDistance.d.ts b/build/commonjs/euclideanDistance.d.ts deleted file mode 100644 index d555de27..00000000 --- a/build/commonjs/euclideanDistance.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array): number; diff --git a/build/commonjs/euclideanDistance.js b/build/commonjs/euclideanDistance.js deleted file mode 100644 index e263610d..00000000 --- a/build/commonjs/euclideanDistance.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function euclideanDistance(arr1, arr2) { - if (arr1.length !== arr2.length) - throw new Error('euclideanDistance: arr1.length !== arr2.length'); - var desc1 = Array.from(arr1); - var desc2 = Array.from(arr2); - return Math.sqrt(desc1 - .map(function (val, i) { return val - desc2[i]; }) - .reduce(function (res, diff) { return res + Math.pow(diff, 2); }, 0)); -} -exports.euclideanDistance = euclideanDistance; -//# sourceMappingURL=euclideanDistance.js.map \ No newline at end of file diff --git a/build/commonjs/euclideanDistance.js.map b/build/commonjs/euclideanDistance.js.map deleted file mode 100644 index 268173bf..00000000 --- a/build/commonjs/euclideanDistance.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"euclideanDistance.js","sourceRoot":"","sources":["../../src/euclideanDistance.ts"],"names":[],"mappings":";;AAAA,SAAgB,iBAAiB,CAAC,IAA6B,EAAE,IAA6B;IAC5F,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAC7B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IAEnE,IAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE9B,OAAO,IAAI,CAAC,IAAI,CACd,KAAK;SACF,GAAG,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAd,CAAc,CAAC;SAC/B,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAvB,CAAuB,EAAE,CAAC,CAAC,CACrD,CAAA;AACH,CAAC;AAZD,8CAYC"} \ No newline at end of file diff --git a/build/commonjs/faceExpressionNet/FaceExpressionNet.d.ts b/build/commonjs/faceExpressionNet/FaceExpressionNet.d.ts deleted file mode 100644 index 244f8ce9..00000000 --- a/build/commonjs/faceExpressionNet/FaceExpressionNet.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor'; -import { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; -import { FaceProcessor } from '../faceProcessor/FaceProcessor'; -import { FaceExpressions } from './FaceExpressions'; -export declare class FaceExpressionNet extends FaceProcessor { - constructor(faceFeatureExtractor?: FaceFeatureExtractor); - forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D; - forward(input: TNetInput): Promise; - predictExpressions(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected getClassifierChannelsIn(): number; - protected getClassifierChannelsOut(): number; -} diff --git a/build/commonjs/faceExpressionNet/FaceExpressionNet.js b/build/commonjs/faceExpressionNet/FaceExpressionNet.js deleted file mode 100644 index 8983aed7..00000000 --- a/build/commonjs/faceExpressionNet/FaceExpressionNet.js +++ /dev/null @@ -1,80 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceFeatureExtractor_1 = require("../faceFeatureExtractor/FaceFeatureExtractor"); -var FaceProcessor_1 = require("../faceProcessor/FaceProcessor"); -var FaceExpressions_1 = require("./FaceExpressions"); -var FaceExpressionNet = /** @class */ (function (_super) { - tslib_1.__extends(FaceExpressionNet, _super); - function FaceExpressionNet(faceFeatureExtractor) { - if (faceFeatureExtractor === void 0) { faceFeatureExtractor = new FaceFeatureExtractor_1.FaceFeatureExtractor(); } - return _super.call(this, 'FaceExpressionNet', faceFeatureExtractor) || this; - } - FaceExpressionNet.prototype.forwardInput = function (input) { - var _this = this; - return tf.tidy(function () { return tf.softmax(_this.runNet(input)); }); - }; - FaceExpressionNet.prototype.forward = function (input) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - FaceExpressionNet.prototype.predictExpressions = function (input) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var netInput, out, probabilitesByBatch, predictionsByBatch; - var _this = this; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: - netInput = _a.sent(); - return [4 /*yield*/, this.forwardInput(netInput)]; - case 2: - out = _a.sent(); - return [4 /*yield*/, Promise.all(tf.unstack(out).map(function (t) { return tslib_1.__awaiter(_this, void 0, void 0, function () { - var data; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, t.data()]; - case 1: - data = _a.sent(); - t.dispose(); - return [2 /*return*/, data]; - } - }); - }); }))]; - case 3: - probabilitesByBatch = _a.sent(); - out.dispose(); - predictionsByBatch = probabilitesByBatch - .map(function (probabilites) { return new FaceExpressions_1.FaceExpressions(probabilites); }); - return [2 /*return*/, netInput.isBatchInput - ? predictionsByBatch - : predictionsByBatch[0]]; - } - }); - }); - }; - FaceExpressionNet.prototype.getDefaultModelName = function () { - return 'face_expression_model'; - }; - FaceExpressionNet.prototype.getClassifierChannelsIn = function () { - return 256; - }; - FaceExpressionNet.prototype.getClassifierChannelsOut = function () { - return 7; - }; - return FaceExpressionNet; -}(FaceProcessor_1.FaceProcessor)); -exports.FaceExpressionNet = FaceExpressionNet; -//# sourceMappingURL=FaceExpressionNet.js.map \ No newline at end of file diff --git a/build/commonjs/faceExpressionNet/FaceExpressionNet.js.map b/build/commonjs/faceExpressionNet/FaceExpressionNet.js.map deleted file mode 100644 index 48d1b1a9..00000000 --- a/build/commonjs/faceExpressionNet/FaceExpressionNet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceExpressionNet.js","sourceRoot":"","sources":["../../../src/faceExpressionNet/FaceExpressionNet.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAA8E;AAE9E,qFAAoF;AAEpF,gEAA+D;AAC/D,qDAAoD;AAEpD;IAAuC,6CAAyC;IAE9E,2BAAY,oBAAuE;QAAvE,qCAAA,EAAA,2BAAiD,2CAAoB,EAAE;eACjF,kBAAM,mBAAmB,EAAE,oBAAoB,CAAC;IAClD,CAAC;IAEM,wCAAY,GAAnB,UAAoB,KAA6B;QAAjD,iBAEC;QADC,OAAO,EAAE,CAAC,IAAI,CAAC,cAAM,OAAA,EAAE,CAAC,OAAO,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAA9B,CAA8B,CAAC,CAAA;IACtD,CAAC;IAEY,mCAAO,GAApB,UAAqB,KAAgB;;;;;;wBAC5B,KAAA,IAAI,CAAC,YAAY,CAAA;wBAAC,qBAAM,wCAAU,CAAC,KAAK,CAAC,EAAA;4BAAhD,sBAAO,SAAA,IAAI,GAAc,SAAuB,EAAC,EAAA;;;;KAClD;IAEY,8CAAkB,GAA/B,UAAgC,KAAgB;;;;;;4BAC7B,qBAAM,wCAAU,CAAC,KAAK,CAAC,EAAA;;wBAAlC,QAAQ,GAAG,SAAuB;wBAC5B,qBAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAA;;wBAAvC,GAAG,GAAG,SAAiC;wBACjB,qBAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAM,CAAC;;;;gDAC1D,qBAAM,CAAC,CAAC,IAAI,EAAE,EAAA;;4CAArB,IAAI,GAAG,SAAc;4CAC3B,CAAC,CAAC,OAAO,EAAE,CAAA;4CACX,sBAAO,IAAI,EAAA;;;iCACZ,CAAC,CAAC,EAAA;;wBAJG,mBAAmB,GAAG,SAIzB;wBACH,GAAG,CAAC,OAAO,EAAE,CAAA;wBAEP,kBAAkB,GAAG,mBAAmB;6BAC3C,GAAG,CAAC,UAAA,YAAY,IAAI,OAAA,IAAI,iCAAe,CAAC,YAA4B,CAAC,EAAjD,CAAiD,CAAC,CAAA;wBAEzE,sBAAO,QAAQ,CAAC,YAAY;gCAC1B,CAAC,CAAC,kBAAkB;gCACpB,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAA;;;;KAC1B;IAES,+CAAmB,GAA7B;QACE,OAAO,uBAAuB,CAAA;IAChC,CAAC;IAES,mDAAuB,GAAjC;QACE,OAAO,GAAG,CAAA;IACZ,CAAC;IAES,oDAAwB,GAAlC;QACE,OAAO,CAAC,CAAA;IACV,CAAC;IACH,wBAAC;AAAD,CAAC,AA3CD,CAAuC,6BAAa,GA2CnD;AA3CY,8CAAiB"} \ No newline at end of file diff --git a/build/commonjs/faceExpressionNet/FaceExpressions.d.ts b/build/commonjs/faceExpressionNet/FaceExpressions.d.ts deleted file mode 100644 index 4e01ae31..00000000 --- a/build/commonjs/faceExpressionNet/FaceExpressions.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -export declare const FACE_EXPRESSION_LABELS: string[]; -export declare class FaceExpressions { - neutral: number; - happy: number; - sad: number; - angry: number; - fearful: number; - disgusted: number; - surprised: number; - constructor(probabilities: number[] | Float32Array); - asSortedArray(): { - expression: string; - probability: number; - }[]; -} diff --git a/build/commonjs/faceExpressionNet/FaceExpressions.js b/build/commonjs/faceExpressionNet/FaceExpressions.js deleted file mode 100644 index 6857337b..00000000 --- a/build/commonjs/faceExpressionNet/FaceExpressions.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised']; -var FaceExpressions = /** @class */ (function () { - function FaceExpressions(probabilities) { - var _this = this; - if (probabilities.length !== 7) { - throw new Error("FaceExpressions.constructor - expected probabilities.length to be 7, have: " + probabilities.length); - } - exports.FACE_EXPRESSION_LABELS.forEach(function (expression, idx) { - _this[expression] = probabilities[idx]; - }); - } - FaceExpressions.prototype.asSortedArray = function () { - var _this = this; - return exports.FACE_EXPRESSION_LABELS - .map(function (expression) { return ({ expression: expression, probability: _this[expression] }); }) - .sort(function (e0, e1) { return e1.probability - e0.probability; }); - }; - return FaceExpressions; -}()); -exports.FaceExpressions = FaceExpressions; -//# sourceMappingURL=FaceExpressions.js.map \ No newline at end of file diff --git a/build/commonjs/faceExpressionNet/FaceExpressions.js.map b/build/commonjs/faceExpressionNet/FaceExpressions.js.map deleted file mode 100644 index 1484671d..00000000 --- a/build/commonjs/faceExpressionNet/FaceExpressions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceExpressions.js","sourceRoot":"","sources":["../../../src/faceExpressionNet/FaceExpressions.ts"],"names":[],"mappings":";;AAAa,QAAA,sBAAsB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;AAE/G;IASE,yBAAY,aAAsC;QAAlD,iBAQC;QAPC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,gFAA8E,aAAa,CAAC,MAAQ,CAAC,CAAA;SACtH;QAED,8BAAsB,CAAC,OAAO,CAAC,UAAC,UAAU,EAAE,GAAG;YAC7C,KAAI,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,uCAAa,GAAb;QAAA,iBAIC;QAHC,OAAO,8BAAsB;aAC1B,GAAG,CAAC,UAAA,UAAU,IAAI,OAAA,CAAC,EAAE,UAAU,YAAA,EAAE,WAAW,EAAE,KAAI,CAAC,UAAU,CAAW,EAAE,CAAC,EAAzD,CAAyD,CAAC;aAC5E,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,OAAA,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,EAA/B,CAA+B,CAAC,CAAA;IACtD,CAAC;IACH,sBAAC;AAAD,CAAC,AAxBD,IAwBC;AAxBY,0CAAe"} \ No newline at end of file diff --git a/build/commonjs/faceExpressionNet/index.d.ts b/build/commonjs/faceExpressionNet/index.d.ts deleted file mode 100644 index d79c683a..00000000 --- a/build/commonjs/faceExpressionNet/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './FaceExpressionNet'; -export * from './FaceExpressions'; diff --git a/build/commonjs/faceExpressionNet/index.js b/build/commonjs/faceExpressionNet/index.js deleted file mode 100644 index 29df701d..00000000 --- a/build/commonjs/faceExpressionNet/index.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./FaceExpressionNet"), exports); -tslib_1.__exportStar(require("./FaceExpressions"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/faceExpressionNet/index.js.map b/build/commonjs/faceExpressionNet/index.js.map deleted file mode 100644 index 3862aec4..00000000 --- a/build/commonjs/faceExpressionNet/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceExpressionNet/index.ts"],"names":[],"mappings":";;;AAAA,8DAAoC;AACpC,4DAAkC"} \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/FaceFeatureExtractor.d.ts b/build/commonjs/faceFeatureExtractor/FaceFeatureExtractor.d.ts deleted file mode 100644 index 35b86231..00000000 --- a/build/commonjs/faceFeatureExtractor/FaceFeatureExtractor.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types'; -export declare class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor { - constructor(); - forwardInput(input: NetInput): tf.Tensor4D; - forward(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: FaceFeatureExtractorParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: FaceFeatureExtractorParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/commonjs/faceFeatureExtractor/FaceFeatureExtractor.js b/build/commonjs/faceFeatureExtractor/FaceFeatureExtractor.js deleted file mode 100644 index a2994c01..00000000 --- a/build/commonjs/faceFeatureExtractor/FaceFeatureExtractor.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var denseBlock_1 = require("./denseBlock"); -var extractParams_1 = require("./extractParams"); -var extractParamsFromWeigthMap_1 = require("./extractParamsFromWeigthMap"); -var FaceFeatureExtractor = /** @class */ (function (_super) { - tslib_1.__extends(FaceFeatureExtractor, _super); - function FaceFeatureExtractor() { - return _super.call(this, 'FaceFeatureExtractor') || this; - } - FaceFeatureExtractor.prototype.forwardInput = function (input) { - var params = this.params; - if (!params) { - throw new Error('FaceFeatureExtractor - load model before inference'); - } - return tf.tidy(function () { - var batchTensor = input.toBatchTensor(112, true); - var meanRgb = [122.782, 117.001, 104.298]; - var normalized = tfjs_image_recognition_base_1.normalize(batchTensor, meanRgb).div(tf.scalar(255)); - var out = denseBlock_1.denseBlock4(normalized, params.dense0, true); - out = denseBlock_1.denseBlock4(out, params.dense1); - out = denseBlock_1.denseBlock4(out, params.dense2); - out = denseBlock_1.denseBlock4(out, params.dense3); - out = tf.avgPool(out, [7, 7], [2, 2], 'valid'); - return out; - }); - }; - FaceFeatureExtractor.prototype.forward = function (input) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - FaceFeatureExtractor.prototype.getDefaultModelName = function () { - return 'face_feature_extractor_model'; - }; - FaceFeatureExtractor.prototype.extractParamsFromWeigthMap = function (weightMap) { - return extractParamsFromWeigthMap_1.extractParamsFromWeigthMap(weightMap); - }; - FaceFeatureExtractor.prototype.extractParams = function (weights) { - return extractParams_1.extractParams(weights); - }; - return FaceFeatureExtractor; -}(tfjs_image_recognition_base_1.NeuralNetwork)); -exports.FaceFeatureExtractor = FaceFeatureExtractor; -//# sourceMappingURL=FaceFeatureExtractor.js.map \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/FaceFeatureExtractor.js.map b/build/commonjs/faceFeatureExtractor/FaceFeatureExtractor.js.map deleted file mode 100644 index 5b75fc14..00000000 --- a/build/commonjs/faceFeatureExtractor/FaceFeatureExtractor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceFeatureExtractor.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/FaceFeatureExtractor.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAAwG;AAExG,2CAA2C;AAC3C,iDAAgD;AAChD,2EAA0E;AAG1E;IAA0C,gDAAyC;IAEjF;eACE,kBAAM,sBAAsB,CAAC;IAC/B,CAAC;IAEM,2CAAY,GAAnB,UAAoB,KAAe;QAEzB,IAAA,oBAAM,CAAS;QAEvB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;SACtE;QAED,OAAO,EAAE,CAAC,IAAI,CAAC;YACb,IAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAClD,IAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC3C,IAAM,UAAU,GAAG,uCAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAgB,CAAA;YAErF,IAAI,GAAG,GAAG,wBAAW,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACtD,GAAG,GAAG,wBAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;YACrC,GAAG,GAAG,wBAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;YACrC,GAAG,GAAG,wBAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;YACrC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YAE9C,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEY,sCAAO,GAApB,UAAqB,KAAgB;;;;;;wBAC5B,KAAA,IAAI,CAAC,YAAY,CAAA;wBAAC,qBAAM,wCAAU,CAAC,KAAK,CAAC,EAAA;4BAAhD,sBAAO,SAAA,IAAI,GAAc,SAAuB,EAAC,EAAA;;;;KAClD;IAES,kDAAmB,GAA7B;QACE,OAAO,8BAA8B,CAAA;IACvC,CAAC;IAES,yDAA0B,GAApC,UAAqC,SAA4B;QAC/D,OAAO,uDAA0B,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC;IAES,4CAAa,GAAvB,UAAwB,OAAqB;QAC3C,OAAO,6BAAa,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;IACH,2BAAC;AAAD,CAAC,AA5CD,CAA0C,2CAAa,GA4CtD;AA5CY,oDAAoB"} \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/TinyFaceFeatureExtractor.d.ts b/build/commonjs/faceFeatureExtractor/TinyFaceFeatureExtractor.d.ts deleted file mode 100644 index 4e9957ca..00000000 --- a/build/commonjs/faceFeatureExtractor/TinyFaceFeatureExtractor.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base'; -import { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types'; -export declare class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor { - constructor(); - forwardInput(input: NetInput): tf.Tensor4D; - forward(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TinyFaceFeatureExtractorParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: TinyFaceFeatureExtractorParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/commonjs/faceFeatureExtractor/TinyFaceFeatureExtractor.js b/build/commonjs/faceFeatureExtractor/TinyFaceFeatureExtractor.js deleted file mode 100644 index e70f8cb3..00000000 --- a/build/commonjs/faceFeatureExtractor/TinyFaceFeatureExtractor.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var denseBlock_1 = require("./denseBlock"); -var extractParamsFromWeigthMapTiny_1 = require("./extractParamsFromWeigthMapTiny"); -var extractParamsTiny_1 = require("./extractParamsTiny"); -var TinyFaceFeatureExtractor = /** @class */ (function (_super) { - tslib_1.__extends(TinyFaceFeatureExtractor, _super); - function TinyFaceFeatureExtractor() { - return _super.call(this, 'TinyFaceFeatureExtractor') || this; - } - TinyFaceFeatureExtractor.prototype.forwardInput = function (input) { - var params = this.params; - if (!params) { - throw new Error('TinyFaceFeatureExtractor - load model before inference'); - } - return tf.tidy(function () { - var batchTensor = input.toBatchTensor(112, true); - var meanRgb = [122.782, 117.001, 104.298]; - var normalized = tfjs_image_recognition_base_1.normalize(batchTensor, meanRgb).div(tf.scalar(255)); - var out = denseBlock_1.denseBlock3(normalized, params.dense0, true); - out = denseBlock_1.denseBlock3(out, params.dense1); - out = denseBlock_1.denseBlock3(out, params.dense2); - out = tf.avgPool(out, [14, 14], [2, 2], 'valid'); - return out; - }); - }; - TinyFaceFeatureExtractor.prototype.forward = function (input) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - TinyFaceFeatureExtractor.prototype.getDefaultModelName = function () { - return 'face_feature_extractor_tiny_model'; - }; - TinyFaceFeatureExtractor.prototype.extractParamsFromWeigthMap = function (weightMap) { - return extractParamsFromWeigthMapTiny_1.extractParamsFromWeigthMapTiny(weightMap); - }; - TinyFaceFeatureExtractor.prototype.extractParams = function (weights) { - return extractParamsTiny_1.extractParamsTiny(weights); - }; - return TinyFaceFeatureExtractor; -}(tfjs_image_recognition_base_1.NeuralNetwork)); -exports.TinyFaceFeatureExtractor = TinyFaceFeatureExtractor; -//# sourceMappingURL=TinyFaceFeatureExtractor.js.map \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/TinyFaceFeatureExtractor.js.map b/build/commonjs/faceFeatureExtractor/TinyFaceFeatureExtractor.js.map deleted file mode 100644 index e4659264..00000000 --- a/build/commonjs/faceFeatureExtractor/TinyFaceFeatureExtractor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TinyFaceFeatureExtractor.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAAwG;AAExG,2CAA2C;AAC3C,mFAAkF;AAClF,yDAAwD;AAGxD;IAA8C,oDAA6C;IAEzF;eACE,kBAAM,0BAA0B,CAAC;IACnC,CAAC;IAEM,+CAAY,GAAnB,UAAoB,KAAe;QAEzB,IAAA,oBAAM,CAAS;QAEvB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;SAC1E;QAED,OAAO,EAAE,CAAC,IAAI,CAAC;YACb,IAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAClD,IAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC3C,IAAM,UAAU,GAAG,uCAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAgB,CAAA;YAErF,IAAI,GAAG,GAAG,wBAAW,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACtD,GAAG,GAAG,wBAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;YACrC,GAAG,GAAG,wBAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;YACrC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YAEhD,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEY,0CAAO,GAApB,UAAqB,KAAgB;;;;;;wBAC5B,KAAA,IAAI,CAAC,YAAY,CAAA;wBAAC,qBAAM,wCAAU,CAAC,KAAK,CAAC,EAAA;4BAAhD,sBAAO,SAAA,IAAI,GAAc,SAAuB,EAAC,EAAA;;;;KAClD;IAES,sDAAmB,GAA7B;QACE,OAAO,mCAAmC,CAAA;IAC5C,CAAC;IAES,6DAA0B,GAApC,UAAqC,SAA4B;QAC/D,OAAO,+DAA8B,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;IAES,gDAAa,GAAvB,UAAwB,OAAqB;QAC3C,OAAO,qCAAiB,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC;IACH,+BAAC;AAAD,CAAC,AA3CD,CAA8C,2CAAa,GA2C1D;AA3CY,4DAAwB"} \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/denseBlock.d.ts b/build/commonjs/faceFeatureExtractor/denseBlock.d.ts deleted file mode 100644 index 685af3ba..00000000 --- a/build/commonjs/faceFeatureExtractor/denseBlock.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { DenseBlock3Params, DenseBlock4Params } from './types'; -export declare function denseBlock3(x: tf.Tensor4D, denseBlockParams: DenseBlock3Params, isFirstLayer?: boolean): tf.Tensor4D; -export declare function denseBlock4(x: tf.Tensor4D, denseBlockParams: DenseBlock4Params, isFirstLayer?: boolean, isScaleDown?: boolean): tf.Tensor4D; diff --git a/build/commonjs/faceFeatureExtractor/denseBlock.js b/build/commonjs/faceFeatureExtractor/denseBlock.js deleted file mode 100644 index c19bb215..00000000 --- a/build/commonjs/faceFeatureExtractor/denseBlock.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -var depthwiseSeparableConv_1 = require("../common/depthwiseSeparableConv"); -function denseBlock3(x, denseBlockParams, isFirstLayer) { - if (isFirstLayer === void 0) { isFirstLayer = false; } - return tf.tidy(function () { - var out1 = tf.relu(isFirstLayer - ? tf.add(tf.conv2d(x, denseBlockParams.conv0.filters, [2, 2], 'same'), denseBlockParams.conv0.bias) - : depthwiseSeparableConv_1.depthwiseSeparableConv(x, denseBlockParams.conv0, [2, 2])); - var out2 = depthwiseSeparableConv_1.depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]); - var in3 = tf.relu(tf.add(out1, out2)); - var out3 = depthwiseSeparableConv_1.depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]); - return tf.relu(tf.add(out1, tf.add(out2, out3))); - }); -} -exports.denseBlock3 = denseBlock3; -function denseBlock4(x, denseBlockParams, isFirstLayer, isScaleDown) { - if (isFirstLayer === void 0) { isFirstLayer = false; } - if (isScaleDown === void 0) { isScaleDown = true; } - return tf.tidy(function () { - var out1 = tf.relu(isFirstLayer - ? tf.add(tf.conv2d(x, denseBlockParams.conv0.filters, isScaleDown ? [2, 2] : [1, 1], 'same'), denseBlockParams.conv0.bias) - : depthwiseSeparableConv_1.depthwiseSeparableConv(x, denseBlockParams.conv0, isScaleDown ? [2, 2] : [1, 1])); - var out2 = depthwiseSeparableConv_1.depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]); - var in3 = tf.relu(tf.add(out1, out2)); - var out3 = depthwiseSeparableConv_1.depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]); - var in4 = tf.relu(tf.add(out1, tf.add(out2, out3))); - var out4 = depthwiseSeparableConv_1.depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]); - return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))); - }); -} -exports.denseBlock4 = denseBlock4; -//# sourceMappingURL=denseBlock.js.map \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/denseBlock.js.map b/build/commonjs/faceFeatureExtractor/denseBlock.js.map deleted file mode 100644 index a880f029..00000000 --- a/build/commonjs/faceFeatureExtractor/denseBlock.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"denseBlock.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/denseBlock.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/extractParams.d.ts b/build/commonjs/faceFeatureExtractor/extractParams.d.ts deleted file mode 100644 index acbea252..00000000 --- a/build/commonjs/faceFeatureExtractor/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { FaceFeatureExtractorParams } from './types'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare function extractParams(weights: Float32Array): { - params: FaceFeatureExtractorParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/faceFeatureExtractor/extractParams.js b/build/commonjs/faceFeatureExtractor/extractParams.js deleted file mode 100644 index c0fac2ad..00000000 --- a/build/commonjs/faceFeatureExtractor/extractParams.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var extractorsFactory_1 = require("./extractorsFactory"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractParams(weights) { - var paramMappings = []; - var _a = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var extractDenseBlock4Params = extractorsFactory_1.extractorsFactory(extractWeights, paramMappings).extractDenseBlock4Params; - var dense0 = extractDenseBlock4Params(3, 32, 'dense0', true); - var dense1 = extractDenseBlock4Params(32, 64, 'dense1'); - var dense2 = extractDenseBlock4Params(64, 128, 'dense2'); - var dense3 = extractDenseBlock4Params(128, 256, 'dense3'); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { - paramMappings: paramMappings, - params: { dense0: dense0, dense1: dense1, dense2: dense2, dense3: dense3 } - }; -} -exports.extractParams = extractParams; -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/extractParams.js.map b/build/commonjs/faceFeatureExtractor/extractParams.js.map deleted file mode 100644 index e6a02adb..00000000 --- a/build/commonjs/faceFeatureExtractor/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/extractParams.ts"],"names":[],"mappings":";;AACA,yDAAwD;AAExD,2EAAuE;AAEvE,SAAgB,aAAa,CAAC,OAAqB;IAEjD,IAAM,aAAa,GAA4C,EAAE,CAAA;IAE3D,IAAA,0FAGqD,EAFzD,kCAAc,EACd,4CACyD,CAAA;IAGzD,IAAA,wHAAwB,CAC0B;IAEpD,IAAM,MAAM,GAAG,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC9D,IAAM,MAAM,GAAG,wBAAwB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;IACzD,IAAM,MAAM,GAAG,wBAAwB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC1D,IAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAE3D,IAAI,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAkC,mBAAmB,EAAE,CAAC,MAAQ,CAAC,CAAA;KAClF;IAED,OAAO;QACL,aAAa,eAAA;QACb,MAAM,EAAE,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE;KAC3C,CAAA;AACH,CAAC;AA1BD,sCA0BC"} \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMap.d.ts b/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index 5c964fcc..00000000 --- a/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { FaceFeatureExtractorParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: FaceFeatureExtractorParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMap.js b/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMap.js deleted file mode 100644 index 63408600..00000000 --- a/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var loadParamsFactory_1 = require("./loadParamsFactory"); -function extractParamsFromWeigthMap(weightMap) { - var paramMappings = []; - var extractDenseBlock4Params = loadParamsFactory_1.loadParamsFactory(weightMap, paramMappings).extractDenseBlock4Params; - var params = { - dense0: extractDenseBlock4Params('dense0', true), - dense1: extractDenseBlock4Params('dense1'), - dense2: extractDenseBlock4Params('dense2'), - dense3: extractDenseBlock4Params('dense3') - }; - tfjs_image_recognition_base_1.TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: params, paramMappings: paramMappings }; -} -exports.extractParamsFromWeigthMap = extractParamsFromWeigthMap; -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMap.js.map b/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMap.js.map deleted file mode 100644 index 1aa7ee06..00000000 --- a/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts"],"names":[],"mappings":";;AACA,2EAAuE;AAEvE,yDAAwD;AAGxD,SAAgB,0BAA0B,CACxC,SAA4B;IAG5B,IAAM,aAAa,GAA4C,EAAE,CAAA;IAG/D,IAAA,mHAAwB,CACqB;IAE/C,IAAM,MAAM,GAAG;QACb,MAAM,EAAE,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC;QAChD,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC;QAC1C,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC;QAC1C,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC;KAC3C,CAAA;IAED,sDAAwB,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAClC,CAAC;AApBD,gEAoBC"} \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMapTiny.d.ts b/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMapTiny.d.ts deleted file mode 100644 index 7d597dd2..00000000 --- a/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMapTiny.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { TinyFaceFeatureExtractorParams } from './types'; -export declare function extractParamsFromWeigthMapTiny(weightMap: tf.NamedTensorMap): { - params: TinyFaceFeatureExtractorParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js b/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js deleted file mode 100644 index 51ef4701..00000000 --- a/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var loadParamsFactory_1 = require("./loadParamsFactory"); -function extractParamsFromWeigthMapTiny(weightMap) { - var paramMappings = []; - var extractDenseBlock3Params = loadParamsFactory_1.loadParamsFactory(weightMap, paramMappings).extractDenseBlock3Params; - var params = { - dense0: extractDenseBlock3Params('dense0', true), - dense1: extractDenseBlock3Params('dense1'), - dense2: extractDenseBlock3Params('dense2') - }; - tfjs_image_recognition_base_1.TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: params, paramMappings: paramMappings }; -} -exports.extractParamsFromWeigthMapTiny = extractParamsFromWeigthMapTiny; -//# sourceMappingURL=extractParamsFromWeigthMapTiny.js.map \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js.map b/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js.map deleted file mode 100644 index 6ce31f00..00000000 --- a/build/commonjs/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMapTiny.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts"],"names":[],"mappings":";;AACA,2EAAuE;AAEvE,yDAAwD;AAGxD,SAAgB,8BAA8B,CAC5C,SAA4B;IAG5B,IAAM,aAAa,GAA4C,EAAE,CAAA;IAG/D,IAAA,mHAAwB,CACqB;IAE/C,IAAM,MAAM,GAAG;QACb,MAAM,EAAE,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC;QAChD,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC;QAC1C,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC;KAC3C,CAAA;IAED,sDAAwB,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAClC,CAAC;AAnBD,wEAmBC"} \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/extractParamsTiny.d.ts b/build/commonjs/faceFeatureExtractor/extractParamsTiny.d.ts deleted file mode 100644 index 4f623185..00000000 --- a/build/commonjs/faceFeatureExtractor/extractParamsTiny.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { TinyFaceFeatureExtractorParams } from './types'; -export declare function extractParamsTiny(weights: Float32Array): { - params: TinyFaceFeatureExtractorParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/faceFeatureExtractor/extractParamsTiny.js b/build/commonjs/faceFeatureExtractor/extractParamsTiny.js deleted file mode 100644 index e32869d9..00000000 --- a/build/commonjs/faceFeatureExtractor/extractParamsTiny.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var extractorsFactory_1 = require("./extractorsFactory"); -function extractParamsTiny(weights) { - var paramMappings = []; - var _a = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var extractDenseBlock3Params = extractorsFactory_1.extractorsFactory(extractWeights, paramMappings).extractDenseBlock3Params; - var dense0 = extractDenseBlock3Params(3, 32, 'dense0', true); - var dense1 = extractDenseBlock3Params(32, 64, 'dense1'); - var dense2 = extractDenseBlock3Params(64, 128, 'dense2'); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { - paramMappings: paramMappings, - params: { dense0: dense0, dense1: dense1, dense2: dense2 } - }; -} -exports.extractParamsTiny = extractParamsTiny; -//# sourceMappingURL=extractParamsTiny.js.map \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/extractParamsTiny.js.map b/build/commonjs/faceFeatureExtractor/extractParamsTiny.js.map deleted file mode 100644 index 3cbc7cef..00000000 --- a/build/commonjs/faceFeatureExtractor/extractParamsTiny.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsTiny.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/extractParamsTiny.ts"],"names":[],"mappings":";;AAAA,2EAAuE;AAEvE,yDAAwD;AAIxD,SAAgB,iBAAiB,CAAC,OAAqB;IAErD,IAAM,aAAa,GAA4C,EAAE,CAAA;IAE3D,IAAA,0FAGqD,EAFzD,kCAAc,EACd,4CACyD,CAAA;IAGzD,IAAA,wHAAwB,CAC0B;IAEpD,IAAM,MAAM,GAAG,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC9D,IAAM,MAAM,GAAG,wBAAwB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;IACzD,IAAM,MAAM,GAAG,wBAAwB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAE1D,IAAI,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAkC,mBAAmB,EAAE,CAAC,MAAQ,CAAC,CAAA;KAClF;IAED,OAAO;QACL,aAAa,eAAA;QACb,MAAM,EAAE,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE;KACnC,CAAA;AACH,CAAC;AAzBD,8CAyBC"} \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/extractorsFactory.d.ts b/build/commonjs/faceFeatureExtractor/extractorsFactory.d.ts deleted file mode 100644 index 2c86c09e..00000000 --- a/build/commonjs/faceFeatureExtractor/extractorsFactory.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { DenseBlock3Params, DenseBlock4Params } from './types'; -export declare function extractorsFactory(extractWeights: TfjsImageRecognitionBase.ExtractWeightsFunction, paramMappings: TfjsImageRecognitionBase.ParamMapping[]): { - extractDenseBlock3Params: (channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer?: boolean) => DenseBlock3Params; - extractDenseBlock4Params: (channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer?: boolean) => DenseBlock4Params; -}; diff --git a/build/commonjs/faceFeatureExtractor/extractorsFactory.js b/build/commonjs/faceFeatureExtractor/extractorsFactory.js deleted file mode 100644 index 64964b25..00000000 --- a/build/commonjs/faceFeatureExtractor/extractorsFactory.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractorsFactory(extractWeights, paramMappings) { - var extractConvParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractConvParamsFactory(extractWeights, paramMappings); - var extractSeparableConvParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractSeparableConvParamsFactory(extractWeights, paramMappings); - function extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer) { - if (isFirstLayer === void 0) { isFirstLayer = false; } - var conv0 = isFirstLayer - ? extractConvParams(channelsIn, channelsOut, 3, mappedPrefix + "/conv0") - : extractSeparableConvParams(channelsIn, channelsOut, mappedPrefix + "/conv0"); - var conv1 = extractSeparableConvParams(channelsOut, channelsOut, mappedPrefix + "/conv1"); - var conv2 = extractSeparableConvParams(channelsOut, channelsOut, mappedPrefix + "/conv2"); - return { conv0: conv0, conv1: conv1, conv2: conv2 }; - } - function extractDenseBlock4Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer) { - if (isFirstLayer === void 0) { isFirstLayer = false; } - var _a = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer), conv0 = _a.conv0, conv1 = _a.conv1, conv2 = _a.conv2; - var conv3 = extractSeparableConvParams(channelsOut, channelsOut, mappedPrefix + "/conv3"); - return { conv0: conv0, conv1: conv1, conv2: conv2, conv3: conv3 }; - } - return { - extractDenseBlock3Params: extractDenseBlock3Params, - extractDenseBlock4Params: extractDenseBlock4Params - }; -} -exports.extractorsFactory = extractorsFactory; -//# sourceMappingURL=extractorsFactory.js.map \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/extractorsFactory.js.map b/build/commonjs/faceFeatureExtractor/extractorsFactory.js.map deleted file mode 100644 index 5a1c9f9f..00000000 --- a/build/commonjs/faceFeatureExtractor/extractorsFactory.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractorsFactory.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/extractorsFactory.ts"],"names":[],"mappings":";;AAAA,2EAAuE;AAIvE,SAAgB,iBAAiB,CAAC,cAA+D,EAAE,aAAsD;IAEvJ,IAAM,iBAAiB,GAAG,sDAAwB,CAAC,wBAAwB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAC1G,IAAM,0BAA0B,GAAG,sDAAwB,CAAC,iCAAiC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAE5H,SAAS,wBAAwB,CAAC,UAAkB,EAAE,WAAmB,EAAE,YAAoB,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAE5H,IAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,EAAK,YAAY,WAAQ,CAAC;YACxE,CAAC,CAAC,0BAA0B,CAAC,UAAU,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAChF,IAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAC3F,IAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAE3F,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IAChC,CAAC;IAED,SAAS,wBAAwB,CAAC,UAAkB,EAAE,WAAmB,EAAE,YAAoB,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAEtH,IAAA,kFAAuG,EAArG,gBAAK,EAAE,gBAAK,EAAE,gBAAuF,CAAA;QAC7G,IAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAE3F,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,wBAAwB,0BAAA;QACxB,wBAAwB,0BAAA;KACzB,CAAA;AAEH,CAAC;AA7BD,8CA6BC"} \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/index.d.ts b/build/commonjs/faceFeatureExtractor/index.d.ts deleted file mode 100644 index 99061f84..00000000 --- a/build/commonjs/faceFeatureExtractor/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './FaceFeatureExtractor'; -export * from './TinyFaceFeatureExtractor'; diff --git a/build/commonjs/faceFeatureExtractor/index.js b/build/commonjs/faceFeatureExtractor/index.js deleted file mode 100644 index 3debcd72..00000000 --- a/build/commonjs/faceFeatureExtractor/index.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./FaceFeatureExtractor"), exports); -tslib_1.__exportStar(require("./TinyFaceFeatureExtractor"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/index.js.map b/build/commonjs/faceFeatureExtractor/index.js.map deleted file mode 100644 index 3206c516..00000000 --- a/build/commonjs/faceFeatureExtractor/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,qEAA2C"} \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/loadParamsFactory.d.ts b/build/commonjs/faceFeatureExtractor/loadParamsFactory.d.ts deleted file mode 100644 index eb88164e..00000000 --- a/build/commonjs/faceFeatureExtractor/loadParamsFactory.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { DenseBlock3Params, DenseBlock4Params } from './types'; -export declare function loadParamsFactory(weightMap: any, paramMappings: TfjsImageRecognitionBase.ParamMapping[]): { - extractDenseBlock3Params: (prefix: string, isFirstLayer?: boolean) => DenseBlock3Params; - extractDenseBlock4Params: (prefix: string, isFirstLayer?: boolean) => DenseBlock4Params; -}; diff --git a/build/commonjs/faceFeatureExtractor/loadParamsFactory.js b/build/commonjs/faceFeatureExtractor/loadParamsFactory.js deleted file mode 100644 index b781421c..00000000 --- a/build/commonjs/faceFeatureExtractor/loadParamsFactory.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var loadConvParamsFactory_1 = require("../common/loadConvParamsFactory"); -function loadParamsFactory(weightMap, paramMappings) { - var extractWeightEntry = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - var extractConvParams = loadConvParamsFactory_1.loadConvParamsFactory(extractWeightEntry); - var extractSeparableConvParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.loadSeparableConvParamsFactory(extractWeightEntry); - function extractDenseBlock3Params(prefix, isFirstLayer) { - if (isFirstLayer === void 0) { isFirstLayer = false; } - var conv0 = isFirstLayer - ? extractConvParams(prefix + "/conv0") - : extractSeparableConvParams(prefix + "/conv0"); - var conv1 = extractSeparableConvParams(prefix + "/conv1"); - var conv2 = extractSeparableConvParams(prefix + "/conv2"); - return { conv0: conv0, conv1: conv1, conv2: conv2 }; - } - function extractDenseBlock4Params(prefix, isFirstLayer) { - if (isFirstLayer === void 0) { isFirstLayer = false; } - var conv0 = isFirstLayer - ? extractConvParams(prefix + "/conv0") - : extractSeparableConvParams(prefix + "/conv0"); - var conv1 = extractSeparableConvParams(prefix + "/conv1"); - var conv2 = extractSeparableConvParams(prefix + "/conv2"); - var conv3 = extractSeparableConvParams(prefix + "/conv3"); - return { conv0: conv0, conv1: conv1, conv2: conv2, conv3: conv3 }; - } - return { - extractDenseBlock3Params: extractDenseBlock3Params, - extractDenseBlock4Params: extractDenseBlock4Params - }; -} -exports.loadParamsFactory = loadParamsFactory; -//# sourceMappingURL=loadParamsFactory.js.map \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/loadParamsFactory.js.map b/build/commonjs/faceFeatureExtractor/loadParamsFactory.js.map deleted file mode 100644 index fe6011cf..00000000 --- a/build/commonjs/faceFeatureExtractor/loadParamsFactory.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"loadParamsFactory.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/loadParamsFactory.ts"],"names":[],"mappings":";;AAAA,2EAAuE;AAEvE,yEAAwE;AAGxE,SAAgB,iBAAiB,CAAC,SAAc,EAAE,aAAsD;IAEtG,IAAM,kBAAkB,GAAG,sDAAwB,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEvG,IAAM,iBAAiB,GAAG,6CAAqB,CAAC,kBAAkB,CAAC,CAAA;IACnE,IAAM,0BAA0B,GAAG,sDAAwB,CAAC,8BAA8B,CAAC,kBAAkB,CAAC,CAAA;IAE9G,SAAS,wBAAwB,CAAC,MAAc,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAC7E,IAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,iBAAiB,CAAI,MAAM,WAAQ,CAAC;YACtC,CAAC,CAAC,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QACjD,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAE3D,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IAChC,CAAC;IAED,SAAS,wBAAwB,CAAC,MAAc,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAC7E,IAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,iBAAiB,CAAI,MAAM,WAAQ,CAAC;YACtC,CAAC,CAAC,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QACjD,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAE3D,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,wBAAwB,0BAAA;QACxB,wBAAwB,0BAAA;KACzB,CAAA;AACH,CAAC;AAhCD,8CAgCC"} \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/types.d.ts b/build/commonjs/faceFeatureExtractor/types.d.ts deleted file mode 100644 index b6e3a222..00000000 --- a/build/commonjs/faceFeatureExtractor/types.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput, TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare type ConvWithBatchNormParams = BatchNormParams & { - filter: tf.Tensor4D; -}; -export declare type BatchNormParams = { - mean: tf.Tensor1D; - variance: tf.Tensor1D; - scale: tf.Tensor1D; - offset: tf.Tensor1D; -}; -export declare type SeparableConvWithBatchNormParams = { - depthwise: ConvWithBatchNormParams; - pointwise: ConvWithBatchNormParams; -}; -export declare type DenseBlock3Params = { - conv0: TfjsImageRecognitionBase.SeparableConvParams | TfjsImageRecognitionBase.ConvParams; - conv1: TfjsImageRecognitionBase.SeparableConvParams; - conv2: TfjsImageRecognitionBase.SeparableConvParams; -}; -export declare type DenseBlock4Params = DenseBlock3Params & { - conv3: TfjsImageRecognitionBase.SeparableConvParams; -}; -export declare type TinyFaceFeatureExtractorParams = { - dense0: DenseBlock3Params; - dense1: DenseBlock3Params; - dense2: DenseBlock3Params; -}; -export declare type FaceFeatureExtractorParams = { - dense0: DenseBlock4Params; - dense1: DenseBlock4Params; - dense2: DenseBlock4Params; - dense3: DenseBlock4Params; -}; -export interface IFaceFeatureExtractor extends NeuralNetwork { - forwardInput(input: NetInput): tf.Tensor4D; - forward(input: TNetInput): Promise; -} diff --git a/build/commonjs/faceFeatureExtractor/types.js b/build/commonjs/faceFeatureExtractor/types.js deleted file mode 100644 index 11e638d1..00000000 --- a/build/commonjs/faceFeatureExtractor/types.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/commonjs/faceFeatureExtractor/types.js.map b/build/commonjs/faceFeatureExtractor/types.js.map deleted file mode 100644 index d4dd37d8..00000000 --- a/build/commonjs/faceFeatureExtractor/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/commonjs/faceLandmarkNet/FaceLandmark68Net.d.ts b/build/commonjs/faceLandmarkNet/FaceLandmark68Net.d.ts deleted file mode 100644 index ba213c97..00000000 --- a/build/commonjs/faceLandmarkNet/FaceLandmark68Net.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor'; -import { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; -import { FaceLandmark68NetBase } from './FaceLandmark68NetBase'; -export declare class FaceLandmark68Net extends FaceLandmark68NetBase { - constructor(faceFeatureExtractor?: FaceFeatureExtractor); - protected getDefaultModelName(): string; - protected getClassifierChannelsIn(): number; -} diff --git a/build/commonjs/faceLandmarkNet/FaceLandmark68Net.js b/build/commonjs/faceLandmarkNet/FaceLandmark68Net.js deleted file mode 100644 index 30e22a01..00000000 --- a/build/commonjs/faceLandmarkNet/FaceLandmark68Net.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var FaceFeatureExtractor_1 = require("../faceFeatureExtractor/FaceFeatureExtractor"); -var FaceLandmark68NetBase_1 = require("./FaceLandmark68NetBase"); -var FaceLandmark68Net = /** @class */ (function (_super) { - tslib_1.__extends(FaceLandmark68Net, _super); - function FaceLandmark68Net(faceFeatureExtractor) { - if (faceFeatureExtractor === void 0) { faceFeatureExtractor = new FaceFeatureExtractor_1.FaceFeatureExtractor(); } - return _super.call(this, 'FaceLandmark68Net', faceFeatureExtractor) || this; - } - FaceLandmark68Net.prototype.getDefaultModelName = function () { - return 'face_landmark_68_model'; - }; - FaceLandmark68Net.prototype.getClassifierChannelsIn = function () { - return 256; - }; - return FaceLandmark68Net; -}(FaceLandmark68NetBase_1.FaceLandmark68NetBase)); -exports.FaceLandmark68Net = FaceLandmark68Net; -//# sourceMappingURL=FaceLandmark68Net.js.map \ No newline at end of file diff --git a/build/commonjs/faceLandmarkNet/FaceLandmark68Net.js.map b/build/commonjs/faceLandmarkNet/FaceLandmark68Net.js.map deleted file mode 100644 index 12b554a2..00000000 --- a/build/commonjs/faceLandmarkNet/FaceLandmark68Net.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceLandmark68Net.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68Net.ts"],"names":[],"mappings":";;;AAAA,qFAAoF;AAEpF,iEAAgE;AAEhE;IAAuC,6CAAiD;IAEtF,2BAAY,oBAAuE;QAAvE,qCAAA,EAAA,2BAAiD,2CAAoB,EAAE;eACjF,kBAAM,mBAAmB,EAAE,oBAAoB,CAAC;IAClD,CAAC;IAES,+CAAmB,GAA7B;QACE,OAAO,wBAAwB,CAAA;IACjC,CAAC;IAES,mDAAuB,GAAjC;QACE,OAAO,GAAG,CAAA;IACZ,CAAC;IACH,wBAAC;AAAD,CAAC,AAbD,CAAuC,6CAAqB,GAa3D;AAbY,8CAAiB"} \ No newline at end of file diff --git a/build/commonjs/faceLandmarkNet/FaceLandmark68NetBase.d.ts b/build/commonjs/faceLandmarkNet/FaceLandmark68NetBase.d.ts deleted file mode 100644 index 49c9c774..00000000 --- a/build/commonjs/faceLandmarkNet/FaceLandmark68NetBase.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { IDimensions, NetInput, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; -import { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; -import { FaceProcessor } from '../faceProcessor/FaceProcessor'; -export declare abstract class FaceLandmark68NetBase extends FaceProcessor { - postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D; - forwardInput(input: NetInput): tf.Tensor2D; - forward(input: TNetInput): Promise; - detectLandmarks(input: TNetInput): Promise; - protected getClassifierChannelsOut(): number; -} diff --git a/build/commonjs/faceLandmarkNet/FaceLandmark68NetBase.js b/build/commonjs/faceLandmarkNet/FaceLandmark68NetBase.js deleted file mode 100644 index 11339a9b..00000000 --- a/build/commonjs/faceLandmarkNet/FaceLandmark68NetBase.js +++ /dev/null @@ -1,114 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceLandmarks68_1 = require("../classes/FaceLandmarks68"); -var FaceProcessor_1 = require("../faceProcessor/FaceProcessor"); -var FaceLandmark68NetBase = /** @class */ (function (_super) { - tslib_1.__extends(FaceLandmark68NetBase, _super); - function FaceLandmark68NetBase() { - return _super !== null && _super.apply(this, arguments) || this; - } - FaceLandmark68NetBase.prototype.postProcess = function (output, inputSize, originalDimensions) { - var inputDimensions = originalDimensions.map(function (_a) { - var width = _a.width, height = _a.height; - var scale = inputSize / Math.max(height, width); - return { - width: width * scale, - height: height * scale - }; - }); - var batchSize = inputDimensions.length; - return tf.tidy(function () { - var createInterleavedTensor = function (fillX, fillY) { - return tf.stack([ - tf.fill([68], fillX), - tf.fill([68], fillY) - ], 1).as2D(1, 136).as1D(); - }; - var getPadding = function (batchIdx, cond) { - var _a = inputDimensions[batchIdx], width = _a.width, height = _a.height; - return cond(width, height) ? Math.abs(width - height) / 2 : 0; - }; - var getPaddingX = function (batchIdx) { return getPadding(batchIdx, function (w, h) { return w < h; }); }; - var getPaddingY = function (batchIdx) { return getPadding(batchIdx, function (w, h) { return h < w; }); }; - var landmarkTensors = output - .mul(tf.fill([batchSize, 136], inputSize)) - .sub(tf.stack(Array.from(Array(batchSize), function (_, batchIdx) { - return createInterleavedTensor(getPaddingX(batchIdx), getPaddingY(batchIdx)); - }))) - .div(tf.stack(Array.from(Array(batchSize), function (_, batchIdx) { - return createInterleavedTensor(inputDimensions[batchIdx].width, inputDimensions[batchIdx].height); - }))); - return landmarkTensors; - }); - }; - FaceLandmark68NetBase.prototype.forwardInput = function (input) { - var _this = this; - return tf.tidy(function () { - var out = _this.runNet(input); - return _this.postProcess(out, input.inputSize, input.inputDimensions.map(function (_a) { - var height = _a[0], width = _a[1]; - return ({ height: height, width: width }); - })); - }); - }; - FaceLandmark68NetBase.prototype.forward = function (input) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - FaceLandmark68NetBase.prototype.detectLandmarks = function (input) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var netInput, landmarkTensors, landmarksForBatch; - var _this = this; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: - netInput = _a.sent(); - landmarkTensors = tf.tidy(function () { return tf.unstack(_this.forwardInput(netInput)); }); - return [4 /*yield*/, Promise.all(landmarkTensors.map(function (landmarkTensor, batchIdx) { return tslib_1.__awaiter(_this, void 0, void 0, function () { - var landmarksArray, _a, _b, xCoords, yCoords; - return tslib_1.__generator(this, function (_c) { - switch (_c.label) { - case 0: - _b = (_a = Array).from; - return [4 /*yield*/, landmarkTensor.data()]; - case 1: - landmarksArray = _b.apply(_a, [_c.sent()]); - xCoords = landmarksArray.filter(function (_, i) { return tfjs_image_recognition_base_1.isEven(i); }); - yCoords = landmarksArray.filter(function (_, i) { return !tfjs_image_recognition_base_1.isEven(i); }); - return [2 /*return*/, new FaceLandmarks68_1.FaceLandmarks68(Array(68).fill(0).map(function (_, i) { return new tfjs_image_recognition_base_1.Point(xCoords[i], yCoords[i]); }), { - height: netInput.getInputHeight(batchIdx), - width: netInput.getInputWidth(batchIdx), - })]; - } - }); - }); }))]; - case 2: - landmarksForBatch = _a.sent(); - landmarkTensors.forEach(function (t) { return t.dispose(); }); - return [2 /*return*/, netInput.isBatchInput - ? landmarksForBatch - : landmarksForBatch[0]]; - } - }); - }); - }; - FaceLandmark68NetBase.prototype.getClassifierChannelsOut = function () { - return 136; - }; - return FaceLandmark68NetBase; -}(FaceProcessor_1.FaceProcessor)); -exports.FaceLandmark68NetBase = FaceLandmark68NetBase; -//# sourceMappingURL=FaceLandmark68NetBase.js.map \ No newline at end of file diff --git a/build/commonjs/faceLandmarkNet/FaceLandmark68NetBase.js.map b/build/commonjs/faceLandmarkNet/FaceLandmark68NetBase.js.map deleted file mode 100644 index 206c203d..00000000 --- a/build/commonjs/faceLandmarkNet/FaceLandmark68NetBase.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceLandmark68NetBase.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68NetBase.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/faceLandmarkNet/FaceLandmark68TinyNet.d.ts b/build/commonjs/faceLandmarkNet/FaceLandmark68TinyNet.d.ts deleted file mode 100644 index 58111879..00000000 --- a/build/commonjs/faceLandmarkNet/FaceLandmark68TinyNet.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor'; -import { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; -import { FaceLandmark68NetBase } from './FaceLandmark68NetBase'; -export declare class FaceLandmark68TinyNet extends FaceLandmark68NetBase { - constructor(faceFeatureExtractor?: TinyFaceFeatureExtractor); - protected getDefaultModelName(): string; - protected getClassifierChannelsIn(): number; -} diff --git a/build/commonjs/faceLandmarkNet/FaceLandmark68TinyNet.js b/build/commonjs/faceLandmarkNet/FaceLandmark68TinyNet.js deleted file mode 100644 index 8f22cb6a..00000000 --- a/build/commonjs/faceLandmarkNet/FaceLandmark68TinyNet.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var TinyFaceFeatureExtractor_1 = require("../faceFeatureExtractor/TinyFaceFeatureExtractor"); -var FaceLandmark68NetBase_1 = require("./FaceLandmark68NetBase"); -var FaceLandmark68TinyNet = /** @class */ (function (_super) { - tslib_1.__extends(FaceLandmark68TinyNet, _super); - function FaceLandmark68TinyNet(faceFeatureExtractor) { - if (faceFeatureExtractor === void 0) { faceFeatureExtractor = new TinyFaceFeatureExtractor_1.TinyFaceFeatureExtractor(); } - return _super.call(this, 'FaceLandmark68TinyNet', faceFeatureExtractor) || this; - } - FaceLandmark68TinyNet.prototype.getDefaultModelName = function () { - return 'face_landmark_68_tiny_model'; - }; - FaceLandmark68TinyNet.prototype.getClassifierChannelsIn = function () { - return 128; - }; - return FaceLandmark68TinyNet; -}(FaceLandmark68NetBase_1.FaceLandmark68NetBase)); -exports.FaceLandmark68TinyNet = FaceLandmark68TinyNet; -//# sourceMappingURL=FaceLandmark68TinyNet.js.map \ No newline at end of file diff --git a/build/commonjs/faceLandmarkNet/FaceLandmark68TinyNet.js.map b/build/commonjs/faceLandmarkNet/FaceLandmark68TinyNet.js.map deleted file mode 100644 index 50fe0c30..00000000 --- a/build/commonjs/faceLandmarkNet/FaceLandmark68TinyNet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceLandmark68TinyNet.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68TinyNet.ts"],"names":[],"mappings":";;;AAAA,6FAA4F;AAE5F,iEAAgE;AAEhE;IAA2C,iDAAqD;IAE9F,+BAAY,oBAA+E;QAA/E,qCAAA,EAAA,2BAAqD,mDAAwB,EAAE;eACzF,kBAAM,uBAAuB,EAAE,oBAAoB,CAAC;IACtD,CAAC;IAES,mDAAmB,GAA7B;QACE,OAAO,6BAA6B,CAAA;IACtC,CAAC;IAES,uDAAuB,GAAjC;QACE,OAAO,GAAG,CAAA;IACZ,CAAC;IACH,4BAAC;AAAD,CAAC,AAbD,CAA2C,6CAAqB,GAa/D;AAbY,sDAAqB"} \ No newline at end of file diff --git a/build/commonjs/faceLandmarkNet/index.d.ts b/build/commonjs/faceLandmarkNet/index.d.ts deleted file mode 100644 index b49c3e83..00000000 --- a/build/commonjs/faceLandmarkNet/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { FaceLandmark68Net } from './FaceLandmark68Net'; -export * from './FaceLandmark68Net'; -export * from './FaceLandmark68TinyNet'; -export declare class FaceLandmarkNet extends FaceLandmark68Net { -} diff --git a/build/commonjs/faceLandmarkNet/index.js b/build/commonjs/faceLandmarkNet/index.js deleted file mode 100644 index a85427c1..00000000 --- a/build/commonjs/faceLandmarkNet/index.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var FaceLandmark68Net_1 = require("./FaceLandmark68Net"); -tslib_1.__exportStar(require("./FaceLandmark68Net"), exports); -tslib_1.__exportStar(require("./FaceLandmark68TinyNet"), exports); -var FaceLandmarkNet = /** @class */ (function (_super) { - tslib_1.__extends(FaceLandmarkNet, _super); - function FaceLandmarkNet() { - return _super !== null && _super.apply(this, arguments) || this; - } - return FaceLandmarkNet; -}(FaceLandmark68Net_1.FaceLandmark68Net)); -exports.FaceLandmarkNet = FaceLandmarkNet; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/faceLandmarkNet/index.js.map b/build/commonjs/faceLandmarkNet/index.js.map deleted file mode 100644 index a27a46ba..00000000 --- a/build/commonjs/faceLandmarkNet/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/index.ts"],"names":[],"mappings":";;;AAAA,yDAAwD;AAExD,8DAAoC;AACpC,kEAAwC;AAExC;IAAqC,2CAAiB;IAAtD;;IAAwD,CAAC;IAAD,sBAAC;AAAD,CAAC,AAAzD,CAAqC,qCAAiB,GAAG;AAA5C,0CAAe"} \ No newline at end of file diff --git a/build/commonjs/faceProcessor/FaceProcessor.d.ts b/build/commonjs/faceProcessor/FaceProcessor.d.ts deleted file mode 100644 index b6d962c5..00000000 --- a/build/commonjs/faceProcessor/FaceProcessor.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork } from 'tfjs-image-recognition-base'; -import { FaceFeatureExtractorParams, IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; -import { NetParams } from './types'; -export declare abstract class FaceProcessor extends NeuralNetwork { - protected _faceFeatureExtractor: IFaceFeatureExtractor; - constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor); - readonly faceFeatureExtractor: IFaceFeatureExtractor; - protected abstract getDefaultModelName(): string; - protected abstract getClassifierChannelsIn(): number; - protected abstract getClassifierChannelsOut(): number; - runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D; - dispose(throwOnRedispose?: boolean): void; - loadClassifierParams(weights: Float32Array): void; - extractClassifierParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/commonjs/faceProcessor/FaceProcessor.js b/build/commonjs/faceProcessor/FaceProcessor.js deleted file mode 100644 index 8cdc49be..00000000 --- a/build/commonjs/faceProcessor/FaceProcessor.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var fullyConnectedLayer_1 = require("../common/fullyConnectedLayer"); -var extractParams_1 = require("./extractParams"); -var extractParamsFromWeigthMap_1 = require("./extractParamsFromWeigthMap"); -var util_1 = require("./util"); -var FaceProcessor = /** @class */ (function (_super) { - tslib_1.__extends(FaceProcessor, _super); - function FaceProcessor(_name, faceFeatureExtractor) { - var _this = _super.call(this, _name) || this; - _this._faceFeatureExtractor = faceFeatureExtractor; - return _this; - } - Object.defineProperty(FaceProcessor.prototype, "faceFeatureExtractor", { - get: function () { - return this._faceFeatureExtractor; - }, - enumerable: true, - configurable: true - }); - FaceProcessor.prototype.runNet = function (input) { - var _this = this; - var params = this.params; - if (!params) { - throw new Error(this._name + " - load model before inference"); - } - return tf.tidy(function () { - var bottleneckFeatures = input instanceof tfjs_image_recognition_base_1.NetInput - ? _this.faceFeatureExtractor.forwardInput(input) - : input; - return fullyConnectedLayer_1.fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc); - }); - }; - FaceProcessor.prototype.dispose = function (throwOnRedispose) { - if (throwOnRedispose === void 0) { throwOnRedispose = true; } - this.faceFeatureExtractor.dispose(throwOnRedispose); - _super.prototype.dispose.call(this, throwOnRedispose); - }; - FaceProcessor.prototype.loadClassifierParams = function (weights) { - var _a = this.extractClassifierParams(weights), params = _a.params, paramMappings = _a.paramMappings; - this._params = params; - this._paramMappings = paramMappings; - }; - FaceProcessor.prototype.extractClassifierParams = function (weights) { - return extractParams_1.extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut()); - }; - FaceProcessor.prototype.extractParamsFromWeigthMap = function (weightMap) { - var _a = util_1.seperateWeightMaps(weightMap), featureExtractorMap = _a.featureExtractorMap, classifierMap = _a.classifierMap; - this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap); - return extractParamsFromWeigthMap_1.extractParamsFromWeigthMap(classifierMap); - }; - FaceProcessor.prototype.extractParams = function (weights) { - var cIn = this.getClassifierChannelsIn(); - var cOut = this.getClassifierChannelsOut(); - var classifierWeightSize = (cOut * cIn) + cOut; - var featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize); - var classifierWeights = weights.slice(weights.length - classifierWeightSize); - this.faceFeatureExtractor.extractWeights(featureExtractorWeights); - return this.extractClassifierParams(classifierWeights); - }; - return FaceProcessor; -}(tfjs_image_recognition_base_1.NeuralNetwork)); -exports.FaceProcessor = FaceProcessor; -//# sourceMappingURL=FaceProcessor.js.map \ No newline at end of file diff --git a/build/commonjs/faceProcessor/FaceProcessor.js.map b/build/commonjs/faceProcessor/FaceProcessor.js.map deleted file mode 100644 index 17bdf987..00000000 --- a/build/commonjs/faceProcessor/FaceProcessor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceProcessor.js","sourceRoot":"","sources":["../../../src/faceProcessor/FaceProcessor.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAAsE;AAEtE,qEAAoE;AAMpE,iDAAgD;AAChD,2EAA0E;AAE1E,+BAA4C;AAE5C;IAGU,yCAAwB;IAIhC,uBAAY,KAAa,EAAE,oBAA6D;QAAxF,YACE,kBAAM,KAAK,CAAC,SAEb;QADC,KAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAA;;IACnD,CAAC;IAED,sBAAW,+CAAoB;aAA/B;YACE,OAAO,IAAI,CAAC,qBAAqB,CAAA;QACnC,CAAC;;;OAAA;IAMM,8BAAM,GAAb,UAAc,KAA6B;QAA3C,iBAcC;QAZS,IAAA,oBAAM,CAAS;QAEvB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,mCAAgC,CAAC,CAAA;SAC/D;QAED,OAAO,EAAE,CAAC,IAAI,CAAC;YACb,IAAM,kBAAkB,GAAG,KAAK,YAAY,sCAAQ;gBAClD,CAAC,CAAC,KAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC/C,CAAC,CAAC,KAAK,CAAA;YACT,OAAO,yCAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QACjG,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,+BAAO,GAAd,UAAe,gBAAgC;QAAhC,iCAAA,EAAA,uBAAgC;QAC7C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;QACnD,iBAAM,OAAO,YAAC,gBAAgB,CAAC,CAAA;IACjC,CAAC;IAEM,4CAAoB,GAA3B,UAA4B,OAAqB;QACzC,IAAA,0CAAiE,EAA/D,kBAAM,EAAE,gCAAuD,CAAA;QACvE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAA;IACrC,CAAC;IAEM,+CAAuB,GAA9B,UAA+B,OAAqB;QAClD,OAAO,6BAAa,CAAC,OAAO,EAAE,IAAI,CAAC,uBAAuB,EAAE,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAA;IAChG,CAAC;IAES,kDAA0B,GAApC,UAAqC,SAA4B;QAEzD,IAAA,yCAAsE,EAApE,4CAAmB,EAAE,gCAA+C,CAAA;QAE5E,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAA;QAEhE,OAAO,uDAA0B,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC;IAES,qCAAa,GAAvB,UAAwB,OAAqB;QAE3C,IAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAA;QAC1C,IAAM,IAAI,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAC5C,IAAM,oBAAoB,GAAG,CAAC,IAAI,GAAG,GAAG,CAAE,GAAG,IAAI,CAAA;QAEjD,IAAM,uBAAuB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,oBAAoB,CAAC,CAAA;QACvF,IAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,oBAAoB,CAAC,CAAA;QAE9E,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAA;QACjE,OAAO,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAA;IACxD,CAAC;IACH,oBAAC;AAAD,CAAC,AAxED,CAGU,2CAAa,GAqEtB;AAxEqB,sCAAa"} \ No newline at end of file diff --git a/build/commonjs/faceProcessor/extractParams.d.ts b/build/commonjs/faceProcessor/extractParams.d.ts deleted file mode 100644 index 950e0aab..00000000 --- a/build/commonjs/faceProcessor/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/faceProcessor/extractParams.js b/build/commonjs/faceProcessor/extractParams.js deleted file mode 100644 index 9a8f9009..00000000 --- a/build/commonjs/faceProcessor/extractParams.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractParams(weights, channelsIn, channelsOut) { - var paramMappings = []; - var _a = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var extractFCParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractFCParamsFactory(extractWeights, paramMappings); - var fc = extractFCParams(channelsIn, channelsOut, 'fc'); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { - paramMappings: paramMappings, - params: { fc: fc } - }; -} -exports.extractParams = extractParams; -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/commonjs/faceProcessor/extractParams.js.map b/build/commonjs/faceProcessor/extractParams.js.map deleted file mode 100644 index 3143e52b..00000000 --- a/build/commonjs/faceProcessor/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/faceProcessor/extractParams.ts"],"names":[],"mappings":";;AAAA,2EAAuE;AAIvE,SAAgB,aAAa,CAAC,OAAqB,EAAE,UAAkB,EAAE,WAAmB;IAE1F,IAAM,aAAa,GAA4C,EAAE,CAAA;IAE3D,IAAA,0FAGqD,EAFzD,kCAAc,EACd,4CACyD,CAAA;IAE3D,IAAM,eAAe,GAAG,sDAAwB,CAAC,sBAAsB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAEtG,IAAM,EAAE,GAAG,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;IAEzD,IAAI,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAkC,mBAAmB,EAAE,CAAC,MAAQ,CAAC,CAAA;KAClF;IAED,OAAO;QACL,aAAa,eAAA;QACb,MAAM,EAAE,EAAE,EAAE,IAAA,EAAE;KACf,CAAA;AACH,CAAC;AArBD,sCAqBC"} \ No newline at end of file diff --git a/build/commonjs/faceProcessor/extractParamsFromWeigthMap.d.ts b/build/commonjs/faceProcessor/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index 7bf5a66d..00000000 --- a/build/commonjs/faceProcessor/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/faceProcessor/extractParamsFromWeigthMap.js b/build/commonjs/faceProcessor/extractParamsFromWeigthMap.js deleted file mode 100644 index ef8cdd07..00000000 --- a/build/commonjs/faceProcessor/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractParamsFromWeigthMap(weightMap) { - var paramMappings = []; - var extractWeightEntry = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - function extractFcParams(prefix) { - var weights = extractWeightEntry(prefix + "/weights", 2); - var bias = extractWeightEntry(prefix + "/bias", 1); - return { weights: weights, bias: bias }; - } - var params = { - fc: extractFcParams('fc') - }; - tfjs_image_recognition_base_1.TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: params, paramMappings: paramMappings }; -} -exports.extractParamsFromWeigthMap = extractParamsFromWeigthMap; -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/commonjs/faceProcessor/extractParamsFromWeigthMap.js.map b/build/commonjs/faceProcessor/extractParamsFromWeigthMap.js.map deleted file mode 100644 index eacc0dfb..00000000 --- a/build/commonjs/faceProcessor/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/faceProcessor/extractParamsFromWeigthMap.ts"],"names":[],"mappings":";;AACA,2EAAuE;AAIvE,SAAgB,0BAA0B,CACxC,SAA4B;IAG5B,IAAM,aAAa,GAA4C,EAAE,CAAA;IAEjE,IAAM,kBAAkB,GAAG,sDAAwB,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEvG,SAAS,eAAe,CAAC,MAAc;QACrC,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,aAAU,EAAE,CAAC,CAAC,CAAA;QACvE,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,CAAC,CAAA;QACjE,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC;IAED,IAAM,MAAM,GAAG;QACb,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC;KAC1B,CAAA;IAED,sDAAwB,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAClC,CAAC;AArBD,gEAqBC"} \ No newline at end of file diff --git a/build/commonjs/faceProcessor/index.d.ts b/build/commonjs/faceProcessor/index.d.ts deleted file mode 100644 index 9e98e7d8..00000000 --- a/build/commonjs/faceProcessor/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './FaceProcessor'; diff --git a/build/commonjs/faceProcessor/index.js b/build/commonjs/faceProcessor/index.js deleted file mode 100644 index efde3701..00000000 --- a/build/commonjs/faceProcessor/index.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./FaceProcessor"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/faceProcessor/index.js.map b/build/commonjs/faceProcessor/index.js.map deleted file mode 100644 index 3344454f..00000000 --- a/build/commonjs/faceProcessor/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceProcessor/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC"} \ No newline at end of file diff --git a/build/commonjs/faceProcessor/types.d.ts b/build/commonjs/faceProcessor/types.d.ts deleted file mode 100644 index 3cc54402..00000000 --- a/build/commonjs/faceProcessor/types.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare type NetParams = { - fc: TfjsImageRecognitionBase.FCParams; -}; diff --git a/build/commonjs/faceProcessor/types.js b/build/commonjs/faceProcessor/types.js deleted file mode 100644 index 11e638d1..00000000 --- a/build/commonjs/faceProcessor/types.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/commonjs/faceProcessor/types.js.map b/build/commonjs/faceProcessor/types.js.map deleted file mode 100644 index 42a7693f..00000000 --- a/build/commonjs/faceProcessor/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/faceProcessor/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/commonjs/faceProcessor/util.d.ts b/build/commonjs/faceProcessor/util.d.ts deleted file mode 100644 index e28fedc0..00000000 --- a/build/commonjs/faceProcessor/util.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export declare function seperateWeightMaps(weightMap: tf.NamedTensorMap): { - featureExtractorMap: tf.NamedTensorMap; - classifierMap: tf.NamedTensorMap; -}; diff --git a/build/commonjs/faceProcessor/util.js b/build/commonjs/faceProcessor/util.js deleted file mode 100644 index fb1b4913..00000000 --- a/build/commonjs/faceProcessor/util.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function seperateWeightMaps(weightMap) { - var featureExtractorMap = {}; - var classifierMap = {}; - Object.keys(weightMap).forEach(function (key) { - var map = key.startsWith('fc') ? classifierMap : featureExtractorMap; - map[key] = weightMap[key]; - }); - return { featureExtractorMap: featureExtractorMap, classifierMap: classifierMap }; -} -exports.seperateWeightMaps = seperateWeightMaps; -//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/build/commonjs/faceProcessor/util.js.map b/build/commonjs/faceProcessor/util.js.map deleted file mode 100644 index 1b96a67d..00000000 --- a/build/commonjs/faceProcessor/util.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/faceProcessor/util.ts"],"names":[],"mappings":";;AAEA,SAAgB,kBAAkB,CAAC,SAA4B;IAE7D,IAAM,mBAAmB,GAAsB,EAAE,CAAA;IACjD,IAAM,aAAa,GAAsB,EAAE,CAAA;IAE3C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;QAChC,IAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAA;QACtE,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,mBAAmB,qBAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAE/C,CAAC;AAZD,gDAYC"} \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/FaceRecognitionNet.d.ts b/build/commonjs/faceRecognitionNet/FaceRecognitionNet.d.ts deleted file mode 100644 index 1fd59dab..00000000 --- a/build/commonjs/faceRecognitionNet/FaceRecognitionNet.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare class FaceRecognitionNet extends NeuralNetwork { - constructor(); - forwardInput(input: NetInput): tf.Tensor2D; - forward(input: TNetInput): Promise; - computeFaceDescriptor(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/commonjs/faceRecognitionNet/FaceRecognitionNet.js b/build/commonjs/faceRecognitionNet/FaceRecognitionNet.js deleted file mode 100644 index 4cfc4800..00000000 --- a/build/commonjs/faceRecognitionNet/FaceRecognitionNet.js +++ /dev/null @@ -1,91 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var convLayer_1 = require("./convLayer"); -var extractParams_1 = require("./extractParams"); -var extractParamsFromWeigthMap_1 = require("./extractParamsFromWeigthMap"); -var residualLayer_1 = require("./residualLayer"); -var FaceRecognitionNet = /** @class */ (function (_super) { - tslib_1.__extends(FaceRecognitionNet, _super); - function FaceRecognitionNet() { - return _super.call(this, 'FaceRecognitionNet') || this; - } - FaceRecognitionNet.prototype.forwardInput = function (input) { - var params = this.params; - if (!params) { - throw new Error('FaceRecognitionNet - load model before inference'); - } - return tf.tidy(function () { - var batchTensor = input.toBatchTensor(150, true).toFloat(); - var meanRgb = [122.782, 117.001, 104.298]; - var normalized = tfjs_image_recognition_base_1.normalize(batchTensor, meanRgb).div(tf.scalar(256)); - var out = convLayer_1.convDown(normalized, params.conv32_down); - out = tf.maxPool(out, 3, 2, 'valid'); - out = residualLayer_1.residual(out, params.conv32_1); - out = residualLayer_1.residual(out, params.conv32_2); - out = residualLayer_1.residual(out, params.conv32_3); - out = residualLayer_1.residualDown(out, params.conv64_down); - out = residualLayer_1.residual(out, params.conv64_1); - out = residualLayer_1.residual(out, params.conv64_2); - out = residualLayer_1.residual(out, params.conv64_3); - out = residualLayer_1.residualDown(out, params.conv128_down); - out = residualLayer_1.residual(out, params.conv128_1); - out = residualLayer_1.residual(out, params.conv128_2); - out = residualLayer_1.residualDown(out, params.conv256_down); - out = residualLayer_1.residual(out, params.conv256_1); - out = residualLayer_1.residual(out, params.conv256_2); - out = residualLayer_1.residualDown(out, params.conv256_down_out); - var globalAvg = out.mean([1, 2]); - var fullyConnected = tf.matMul(globalAvg, params.fc); - return fullyConnected; - }); - }; - FaceRecognitionNet.prototype.forward = function (input) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - FaceRecognitionNet.prototype.computeFaceDescriptor = function (input) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var netInput, faceDescriptorTensors, faceDescriptorsForBatch; - var _this = this; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: - netInput = _a.sent(); - faceDescriptorTensors = tf.tidy(function () { return tf.unstack(_this.forwardInput(netInput)); }); - return [4 /*yield*/, Promise.all(faceDescriptorTensors.map(function (t) { return t.data(); }))]; - case 2: - faceDescriptorsForBatch = _a.sent(); - faceDescriptorTensors.forEach(function (t) { return t.dispose(); }); - return [2 /*return*/, netInput.isBatchInput - ? faceDescriptorsForBatch - : faceDescriptorsForBatch[0]]; - } - }); - }); - }; - FaceRecognitionNet.prototype.getDefaultModelName = function () { - return 'face_recognition_model'; - }; - FaceRecognitionNet.prototype.extractParamsFromWeigthMap = function (weightMap) { - return extractParamsFromWeigthMap_1.extractParamsFromWeigthMap(weightMap); - }; - FaceRecognitionNet.prototype.extractParams = function (weights) { - return extractParams_1.extractParams(weights); - }; - return FaceRecognitionNet; -}(tfjs_image_recognition_base_1.NeuralNetwork)); -exports.FaceRecognitionNet = FaceRecognitionNet; -//# sourceMappingURL=FaceRecognitionNet.js.map \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/FaceRecognitionNet.js.map b/build/commonjs/faceRecognitionNet/FaceRecognitionNet.js.map deleted file mode 100644 index 88c1f96d..00000000 --- a/build/commonjs/faceRecognitionNet/FaceRecognitionNet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceRecognitionNet.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/FaceRecognitionNet.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/convLayer.d.ts b/build/commonjs/faceRecognitionNet/convLayer.d.ts deleted file mode 100644 index a750f6c4..00000000 --- a/build/commonjs/faceRecognitionNet/convLayer.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { ConvLayerParams } from './types'; -export declare function conv(x: tf.Tensor4D, params: ConvLayerParams): tf.Tensor; -export declare function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams): tf.Tensor; -export declare function convDown(x: tf.Tensor4D, params: ConvLayerParams): tf.Tensor; diff --git a/build/commonjs/faceRecognitionNet/convLayer.js b/build/commonjs/faceRecognitionNet/convLayer.js deleted file mode 100644 index 4c4a2fcf..00000000 --- a/build/commonjs/faceRecognitionNet/convLayer.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -var scaleLayer_1 = require("./scaleLayer"); -function convLayer(x, params, strides, withRelu, padding) { - if (padding === void 0) { padding = 'same'; } - var _a = params.conv, filters = _a.filters, bias = _a.bias; - var out = tf.conv2d(x, filters, strides, padding); - out = tf.add(out, bias); - out = scaleLayer_1.scale(out, params.scale); - return withRelu ? tf.relu(out) : out; -} -function conv(x, params) { - return convLayer(x, params, [1, 1], true); -} -exports.conv = conv; -function convNoRelu(x, params) { - return convLayer(x, params, [1, 1], false); -} -exports.convNoRelu = convNoRelu; -function convDown(x, params) { - return convLayer(x, params, [2, 2], true, 'valid'); -} -exports.convDown = convDown; -//# sourceMappingURL=convLayer.js.map \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/convLayer.js.map b/build/commonjs/faceRecognitionNet/convLayer.js.map deleted file mode 100644 index f8daee38..00000000 --- a/build/commonjs/faceRecognitionNet/convLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"convLayer.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/convLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,2CAAqC;AAIrC,SAAS,SAAS,CAChB,CAAc,EACd,MAAuB,EACvB,OAAyB,EACzB,QAAiB,EACjB,OAAkC;IAAlC,wBAAA,EAAA,gBAAkC;IAE5B,IAAA,gBAA+B,EAA7B,oBAAO,EAAE,cAAoB,CAAA;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,SAAgB,IAAI,CAAC,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,SAAgB,UAAU,CAAC,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,SAAgB,QAAQ,CAAC,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"} \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/extractParams.d.ts b/build/commonjs/faceRecognitionNet/extractParams.d.ts deleted file mode 100644 index 14d45d2b..00000000 --- a/build/commonjs/faceRecognitionNet/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/faceRecognitionNet/extractParams.js b/build/commonjs/faceRecognitionNet/extractParams.js deleted file mode 100644 index 4662fd95..00000000 --- a/build/commonjs/faceRecognitionNet/extractParams.js +++ /dev/null @@ -1,90 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractorsFactory(extractWeights, paramMappings) { - function extractFilterValues(numFilterValues, numFilters, filterSize) { - var weights = extractWeights(numFilterValues); - var depth = weights.length / (numFilters * filterSize * filterSize); - if (tfjs_image_recognition_base_1.isFloat(depth)) { - 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]); }); - } - function extractConvParams(numFilterValues, numFilters, filterSize, mappedPrefix) { - var filters = extractFilterValues(numFilterValues, numFilters, filterSize); - var bias = tf.tensor1d(extractWeights(numFilters)); - paramMappings.push({ paramPath: mappedPrefix + "/filters" }, { paramPath: mappedPrefix + "/bias" }); - return { filters: filters, bias: bias }; - } - function extractScaleLayerParams(numWeights, mappedPrefix) { - var weights = tf.tensor1d(extractWeights(numWeights)); - var biases = tf.tensor1d(extractWeights(numWeights)); - paramMappings.push({ paramPath: mappedPrefix + "/weights" }, { paramPath: mappedPrefix + "/biases" }); - return { - weights: weights, - biases: biases - }; - } - function extractConvLayerParams(numFilterValues, numFilters, filterSize, mappedPrefix) { - var conv = extractConvParams(numFilterValues, numFilters, filterSize, mappedPrefix + "/conv"); - var scale = extractScaleLayerParams(numFilters, mappedPrefix + "/scale"); - return { conv: conv, scale: scale }; - } - function extractResidualLayerParams(numFilterValues, numFilters, filterSize, mappedPrefix, isDown) { - if (isDown === void 0) { isDown = false; } - var conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, mappedPrefix + "/conv1"); - var conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, mappedPrefix + "/conv2"); - return { conv1: conv1, conv2: conv2 }; - } - return { - extractConvLayerParams: extractConvLayerParams, - extractResidualLayerParams: extractResidualLayerParams - }; -} -function extractParams(weights) { - var _a = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var paramMappings = []; - var _b = extractorsFactory(extractWeights, paramMappings), extractConvLayerParams = _b.extractConvLayerParams, extractResidualLayerParams = _b.extractResidualLayerParams; - var conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down'); - var conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1'); - var conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2'); - var conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3'); - var conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true); - var conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1'); - var conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2'); - var conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3'); - var conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true); - var conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1'); - var conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2'); - var conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true); - var conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1'); - var conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2'); - var conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out'); - var fc = tf.tidy(function () { return tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]); }); - paramMappings.push({ paramPath: "fc" }); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - var params = { - conv32_down: conv32_down, - conv32_1: conv32_1, - conv32_2: conv32_2, - conv32_3: conv32_3, - conv64_down: conv64_down, - conv64_1: conv64_1, - conv64_2: conv64_2, - conv64_3: conv64_3, - conv128_down: conv128_down, - conv128_1: conv128_1, - conv128_2: conv128_2, - conv256_down: conv256_down, - conv256_1: conv256_1, - conv256_2: conv256_2, - conv256_down_out: conv256_down_out, - fc: fc - }; - return { params: params, paramMappings: paramMappings }; -} -exports.extractParams = extractParams; -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/extractParams.js.map b/build/commonjs/faceRecognitionNet/extractParams.js.map deleted file mode 100644 index 805aad60..00000000 --- a/build/commonjs/faceRecognitionNet/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/extractParams.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/extractParamsFromWeigthMap.d.ts b/build/commonjs/faceRecognitionNet/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index 7bf5a66d..00000000 --- a/build/commonjs/faceRecognitionNet/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/faceRecognitionNet/extractParamsFromWeigthMap.js b/build/commonjs/faceRecognitionNet/extractParamsFromWeigthMap.js deleted file mode 100644 index 6fb24f4d..00000000 --- a/build/commonjs/faceRecognitionNet/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,73 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractorsFactory(weightMap, paramMappings) { - var extractWeightEntry = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - function extractScaleLayerParams(prefix) { - var weights = extractWeightEntry(prefix + "/scale/weights", 1); - var biases = extractWeightEntry(prefix + "/scale/biases", 1); - return { weights: weights, biases: biases }; - } - function extractConvLayerParams(prefix) { - var filters = extractWeightEntry(prefix + "/conv/filters", 4); - var bias = extractWeightEntry(prefix + "/conv/bias", 1); - var scale = extractScaleLayerParams(prefix); - return { conv: { filters: filters, bias: bias }, scale: scale }; - } - function extractResidualLayerParams(prefix) { - return { - conv1: extractConvLayerParams(prefix + "/conv1"), - conv2: extractConvLayerParams(prefix + "/conv2") - }; - } - return { - extractConvLayerParams: extractConvLayerParams, - extractResidualLayerParams: extractResidualLayerParams - }; -} -function extractParamsFromWeigthMap(weightMap) { - var paramMappings = []; - var _a = extractorsFactory(weightMap, paramMappings), extractConvLayerParams = _a.extractConvLayerParams, extractResidualLayerParams = _a.extractResidualLayerParams; - var conv32_down = extractConvLayerParams('conv32_down'); - var conv32_1 = extractResidualLayerParams('conv32_1'); - var conv32_2 = extractResidualLayerParams('conv32_2'); - var conv32_3 = extractResidualLayerParams('conv32_3'); - var conv64_down = extractResidualLayerParams('conv64_down'); - var conv64_1 = extractResidualLayerParams('conv64_1'); - var conv64_2 = extractResidualLayerParams('conv64_2'); - var conv64_3 = extractResidualLayerParams('conv64_3'); - var conv128_down = extractResidualLayerParams('conv128_down'); - var conv128_1 = extractResidualLayerParams('conv128_1'); - var conv128_2 = extractResidualLayerParams('conv128_2'); - var conv256_down = extractResidualLayerParams('conv256_down'); - var conv256_1 = extractResidualLayerParams('conv256_1'); - var conv256_2 = extractResidualLayerParams('conv256_2'); - var conv256_down_out = extractResidualLayerParams('conv256_down_out'); - var fc = weightMap['fc']; - paramMappings.push({ originalPath: 'fc', paramPath: 'fc' }); - if (!tfjs_image_recognition_base_1.isTensor2D(fc)) { - throw new Error("expected weightMap[fc] to be a Tensor2D, instead have " + fc); - } - var params = { - conv32_down: conv32_down, - conv32_1: conv32_1, - conv32_2: conv32_2, - conv32_3: conv32_3, - conv64_down: conv64_down, - conv64_1: conv64_1, - conv64_2: conv64_2, - conv64_3: conv64_3, - conv128_down: conv128_down, - conv128_1: conv128_1, - conv128_2: conv128_2, - conv256_down: conv256_down, - conv256_1: conv256_1, - conv256_2: conv256_2, - conv256_down_out: conv256_down_out, - fc: fc - }; - tfjs_image_recognition_base_1.TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: params, paramMappings: paramMappings }; -} -exports.extractParamsFromWeigthMap = extractParamsFromWeigthMap; -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/extractParamsFromWeigthMap.js.map b/build/commonjs/faceRecognitionNet/extractParamsFromWeigthMap.js.map deleted file mode 100644 index 3f512874..00000000 --- a/build/commonjs/faceRecognitionNet/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/extractParamsFromWeigthMap.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/index.d.ts b/build/commonjs/faceRecognitionNet/index.d.ts deleted file mode 100644 index 487d6af4..00000000 --- a/build/commonjs/faceRecognitionNet/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { FaceRecognitionNet } from './FaceRecognitionNet'; -export * from './FaceRecognitionNet'; -export declare function createFaceRecognitionNet(weights: Float32Array): FaceRecognitionNet; diff --git a/build/commonjs/faceRecognitionNet/index.js b/build/commonjs/faceRecognitionNet/index.js deleted file mode 100644 index 926218e3..00000000 --- a/build/commonjs/faceRecognitionNet/index.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var FaceRecognitionNet_1 = require("./FaceRecognitionNet"); -tslib_1.__exportStar(require("./FaceRecognitionNet"), exports); -function createFaceRecognitionNet(weights) { - var net = new FaceRecognitionNet_1.FaceRecognitionNet(); - net.extractWeights(weights); - return net; -} -exports.createFaceRecognitionNet = createFaceRecognitionNet; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/index.js.map b/build/commonjs/faceRecognitionNet/index.js.map deleted file mode 100644 index 5047539f..00000000 --- a/build/commonjs/faceRecognitionNet/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/index.ts"],"names":[],"mappings":";;;AAAA,2DAA0D;AAE1D,+DAAqC;AAErC,SAAgB,wBAAwB,CAAC,OAAqB;IAC5D,IAAM,GAAG,GAAG,IAAI,uCAAkB,EAAE,CAAA;IACpC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,4DAIC"} \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/residualLayer.d.ts b/build/commonjs/faceRecognitionNet/residualLayer.d.ts deleted file mode 100644 index 1656e0a0..00000000 --- a/build/commonjs/faceRecognitionNet/residualLayer.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { ResidualLayerParams } from './types'; -export declare function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D; -export declare function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D; diff --git a/build/commonjs/faceRecognitionNet/residualLayer.js b/build/commonjs/faceRecognitionNet/residualLayer.js deleted file mode 100644 index 8e63f1cb..00000000 --- a/build/commonjs/faceRecognitionNet/residualLayer.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var convLayer_1 = require("./convLayer"); -function residual(x, params) { - var out = convLayer_1.conv(x, params.conv1); - out = convLayer_1.convNoRelu(out, params.conv2); - out = tf.add(out, x); - out = tf.relu(out); - return out; -} -exports.residual = residual; -function residualDown(x, params) { - var out = convLayer_1.convDown(x, params.conv1); - out = convLayer_1.convNoRelu(out, params.conv2); - var pooled = tf.avgPool(x, 2, 2, 'valid'); - var zeros = tf.zeros(pooled.shape); - var isPad = pooled.shape[3] !== out.shape[3]; - var isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2]; - if (isAdjustShape) { - var padShapeX = tslib_1.__spreadArrays(out.shape); - padShapeX[1] = 1; - var zerosW = tf.zeros(padShapeX); - out = tf.concat([out, zerosW], 1); - var padShapeY = tslib_1.__spreadArrays(out.shape); - padShapeY[2] = 1; - var zerosH = tf.zeros(padShapeY); - out = tf.concat([out, zerosH], 2); - } - pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled; - out = tf.add(pooled, out); - out = tf.relu(out); - return out; -} -exports.residualDown = residualDown; -//# sourceMappingURL=residualLayer.js.map \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/residualLayer.js.map b/build/commonjs/faceRecognitionNet/residualLayer.js.map deleted file mode 100644 index 86e88c23..00000000 --- a/build/commonjs/faceRecognitionNet/residualLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"residualLayer.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/residualLayer.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAE5C,yCAAyD;AAGzD,SAAgB,QAAQ,CAAC,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,SAAgB,YAAY,CAAC,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,GAAG,uBAAI,GAAG,CAAC,KAAK,CAAqC,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,GAAG,uBAAI,GAAG,CAAC,KAAK,CAAqC,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"} \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/scaleLayer.d.ts b/build/commonjs/faceRecognitionNet/scaleLayer.d.ts deleted file mode 100644 index 07a866ea..00000000 --- a/build/commonjs/faceRecognitionNet/scaleLayer.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { ScaleLayerParams } from './types'; -export declare function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D; diff --git a/build/commonjs/faceRecognitionNet/scaleLayer.js b/build/commonjs/faceRecognitionNet/scaleLayer.js deleted file mode 100644 index e00e7958..00000000 --- a/build/commonjs/faceRecognitionNet/scaleLayer.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -function scale(x, params) { - return tf.add(tf.mul(x, params.weights), params.biases); -} -exports.scale = scale; -//# sourceMappingURL=scaleLayer.js.map \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/scaleLayer.js.map b/build/commonjs/faceRecognitionNet/scaleLayer.js.map deleted file mode 100644 index f68f8974..00000000 --- a/build/commonjs/faceRecognitionNet/scaleLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"scaleLayer.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/scaleLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAI5C,SAAgB,KAAK,CAAC,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"} \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/types.d.ts b/build/commonjs/faceRecognitionNet/types.d.ts deleted file mode 100644 index a390ee87..00000000 --- a/build/commonjs/faceRecognitionNet/types.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare type ScaleLayerParams = { - weights: tf.Tensor1D; - biases: tf.Tensor1D; -}; -export declare type ResidualLayerParams = { - conv1: ConvLayerParams; - conv2: ConvLayerParams; -}; -export declare type ConvLayerParams = { - conv: TfjsImageRecognitionBase.ConvParams; - scale: ScaleLayerParams; -}; -export declare type NetParams = { - conv32_down: ConvLayerParams; - conv32_1: ResidualLayerParams; - conv32_2: ResidualLayerParams; - conv32_3: ResidualLayerParams; - conv64_down: ResidualLayerParams; - conv64_1: ResidualLayerParams; - conv64_2: ResidualLayerParams; - conv64_3: ResidualLayerParams; - conv128_down: ResidualLayerParams; - conv128_1: ResidualLayerParams; - conv128_2: ResidualLayerParams; - conv256_down: ResidualLayerParams; - conv256_1: ResidualLayerParams; - conv256_2: ResidualLayerParams; - conv256_down_out: ResidualLayerParams; - fc: tf.Tensor2D; -}; diff --git a/build/commonjs/faceRecognitionNet/types.js b/build/commonjs/faceRecognitionNet/types.js deleted file mode 100644 index 11e638d1..00000000 --- a/build/commonjs/faceRecognitionNet/types.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/commonjs/faceRecognitionNet/types.js.map b/build/commonjs/faceRecognitionNet/types.js.map deleted file mode 100644 index 3e899768..00000000 --- a/build/commonjs/faceRecognitionNet/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/commonjs/factories/WithAge.d.ts b/build/commonjs/factories/WithAge.d.ts deleted file mode 100644 index b924852d..00000000 --- a/build/commonjs/factories/WithAge.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare type WithAge = TSource & { - age: number; -}; -export declare function isWithAge(obj: any): obj is WithAge<{}>; -export declare function extendWithAge(sourceObj: TSource, age: number): WithAge; diff --git a/build/commonjs/factories/WithAge.js b/build/commonjs/factories/WithAge.js deleted file mode 100644 index 95030d4c..00000000 --- a/build/commonjs/factories/WithAge.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function isWithAge(obj) { - return typeof obj['age'] === 'number'; -} -exports.isWithAge = isWithAge; -function extendWithAge(sourceObj, age) { - var extension = { age: age }; - return Object.assign({}, sourceObj, extension); -} -exports.extendWithAge = extendWithAge; -//# sourceMappingURL=WithAge.js.map \ No newline at end of file diff --git a/build/commonjs/factories/WithAge.js.map b/build/commonjs/factories/WithAge.js.map deleted file mode 100644 index 6fb583c5..00000000 --- a/build/commonjs/factories/WithAge.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WithAge.js","sourceRoot":"","sources":["../../../src/factories/WithAge.ts"],"names":[],"mappings":";;AAIA,SAAgB,SAAS,CAAC,GAAQ;IAChC,OAAO,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAA;AACvC,CAAC;AAFD,8BAEC;AAED,SAAgB,aAAa,CAG3B,SAAkB,EAClB,GAAW;IAGX,IAAM,SAAS,GAAG,EAAE,GAAG,KAAA,EAAE,CAAA;IACzB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AATD,sCASC"} \ No newline at end of file diff --git a/build/commonjs/factories/WithFaceDescriptor.d.ts b/build/commonjs/factories/WithFaceDescriptor.d.ts deleted file mode 100644 index 45175ba6..00000000 --- a/build/commonjs/factories/WithFaceDescriptor.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare type WithFaceDescriptor = TSource & { - descriptor: Float32Array; -}; -export declare function extendWithFaceDescriptor(sourceObj: TSource, descriptor: Float32Array): WithFaceDescriptor; diff --git a/build/commonjs/factories/WithFaceDescriptor.js b/build/commonjs/factories/WithFaceDescriptor.js deleted file mode 100644 index 72a97ed5..00000000 --- a/build/commonjs/factories/WithFaceDescriptor.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function extendWithFaceDescriptor(sourceObj, descriptor) { - var extension = { descriptor: descriptor }; - return Object.assign({}, sourceObj, extension); -} -exports.extendWithFaceDescriptor = extendWithFaceDescriptor; -//# sourceMappingURL=WithFaceDescriptor.js.map \ No newline at end of file diff --git a/build/commonjs/factories/WithFaceDescriptor.js.map b/build/commonjs/factories/WithFaceDescriptor.js.map deleted file mode 100644 index cf9f56ab..00000000 --- a/build/commonjs/factories/WithFaceDescriptor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WithFaceDescriptor.js","sourceRoot":"","sources":["../../../src/factories/WithFaceDescriptor.ts"],"names":[],"mappings":";;AAIA,SAAgB,wBAAwB,CAGtC,SAAkB,EAClB,UAAwB;IAGxB,IAAM,SAAS,GAAG,EAAE,UAAU,YAAA,EAAE,CAAA;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AATD,4DASC"} \ No newline at end of file diff --git a/build/commonjs/factories/WithFaceDetection.d.ts b/build/commonjs/factories/WithFaceDetection.d.ts deleted file mode 100644 index 718ea711..00000000 --- a/build/commonjs/factories/WithFaceDetection.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { FaceDetection } from '../classes/FaceDetection'; -export declare type WithFaceDetection = TSource & { - detection: FaceDetection; -}; -export declare function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}>; -export declare function extendWithFaceDetection(sourceObj: TSource, detection: FaceDetection): WithFaceDetection; diff --git a/build/commonjs/factories/WithFaceDetection.js b/build/commonjs/factories/WithFaceDetection.js deleted file mode 100644 index aa25faae..00000000 --- a/build/commonjs/factories/WithFaceDetection.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var FaceDetection_1 = require("../classes/FaceDetection"); -function isWithFaceDetection(obj) { - return obj['detection'] instanceof FaceDetection_1.FaceDetection; -} -exports.isWithFaceDetection = isWithFaceDetection; -function extendWithFaceDetection(sourceObj, detection) { - var extension = { detection: detection }; - return Object.assign({}, sourceObj, extension); -} -exports.extendWithFaceDetection = extendWithFaceDetection; -//# sourceMappingURL=WithFaceDetection.js.map \ No newline at end of file diff --git a/build/commonjs/factories/WithFaceDetection.js.map b/build/commonjs/factories/WithFaceDetection.js.map deleted file mode 100644 index d61110c8..00000000 --- a/build/commonjs/factories/WithFaceDetection.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WithFaceDetection.js","sourceRoot":"","sources":["../../../src/factories/WithFaceDetection.ts"],"names":[],"mappings":";;AAAA,0DAAyD;AAMzD,SAAgB,mBAAmB,CAAC,GAAQ;IAC1C,OAAO,GAAG,CAAC,WAAW,CAAC,YAAY,6BAAa,CAAA;AAClD,CAAC;AAFD,kDAEC;AAED,SAAgB,uBAAuB,CAGrC,SAAkB,EAClB,SAAwB;IAGxB,IAAM,SAAS,GAAG,EAAE,SAAS,WAAA,EAAE,CAAA;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AATD,0DASC"} \ No newline at end of file diff --git a/build/commonjs/factories/WithFaceExpressions.d.ts b/build/commonjs/factories/WithFaceExpressions.d.ts deleted file mode 100644 index f7960b25..00000000 --- a/build/commonjs/factories/WithFaceExpressions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { FaceExpressions } from '../faceExpressionNet/FaceExpressions'; -export declare type WithFaceExpressions = TSource & { - expressions: FaceExpressions; -}; -export declare function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}>; -export declare function extendWithFaceExpressions(sourceObj: TSource, expressions: FaceExpressions): WithFaceExpressions; diff --git a/build/commonjs/factories/WithFaceExpressions.js b/build/commonjs/factories/WithFaceExpressions.js deleted file mode 100644 index 6b7318d1..00000000 --- a/build/commonjs/factories/WithFaceExpressions.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var FaceExpressions_1 = require("../faceExpressionNet/FaceExpressions"); -function isWithFaceExpressions(obj) { - return obj['expressions'] instanceof FaceExpressions_1.FaceExpressions; -} -exports.isWithFaceExpressions = isWithFaceExpressions; -function extendWithFaceExpressions(sourceObj, expressions) { - var extension = { expressions: expressions }; - return Object.assign({}, sourceObj, extension); -} -exports.extendWithFaceExpressions = extendWithFaceExpressions; -//# sourceMappingURL=WithFaceExpressions.js.map \ No newline at end of file diff --git a/build/commonjs/factories/WithFaceExpressions.js.map b/build/commonjs/factories/WithFaceExpressions.js.map deleted file mode 100644 index 0c0041ae..00000000 --- a/build/commonjs/factories/WithFaceExpressions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WithFaceExpressions.js","sourceRoot":"","sources":["../../../src/factories/WithFaceExpressions.ts"],"names":[],"mappings":";;AAAA,wEAAuE;AAMvE,SAAgB,qBAAqB,CAAC,GAAQ;IAC5C,OAAO,GAAG,CAAC,aAAa,CAAC,YAAY,iCAAe,CAAA;AACtD,CAAC;AAFD,sDAEC;AAED,SAAgB,yBAAyB,CAGvC,SAAkB,EAClB,WAA4B;IAG5B,IAAM,SAAS,GAAG,EAAE,WAAW,aAAA,EAAE,CAAA;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AATD,8DASC"} \ No newline at end of file diff --git a/build/commonjs/factories/WithFaceLandmarks.d.ts b/build/commonjs/factories/WithFaceLandmarks.d.ts deleted file mode 100644 index 99b9315d..00000000 --- a/build/commonjs/factories/WithFaceLandmarks.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { FaceDetection } from '../classes/FaceDetection'; -import { FaceLandmarks } from '../classes/FaceLandmarks'; -import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; -import { WithFaceDetection } from './WithFaceDetection'; -export declare type WithFaceLandmarks, TFaceLandmarks extends FaceLandmarks = FaceLandmarks68> = TSource & { - landmarks: TFaceLandmarks; - unshiftedLandmarks: TFaceLandmarks; - alignedRect: FaceDetection; -}; -export declare function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks>; -export declare function extendWithFaceLandmarks, TFaceLandmarks extends FaceLandmarks = FaceLandmarks68>(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks; diff --git a/build/commonjs/factories/WithFaceLandmarks.js b/build/commonjs/factories/WithFaceLandmarks.js deleted file mode 100644 index 477351e5..00000000 --- a/build/commonjs/factories/WithFaceLandmarks.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var FaceDetection_1 = require("../classes/FaceDetection"); -var FaceLandmarks_1 = require("../classes/FaceLandmarks"); -var WithFaceDetection_1 = require("./WithFaceDetection"); -function isWithFaceLandmarks(obj) { - return WithFaceDetection_1.isWithFaceDetection(obj) - && obj['landmarks'] instanceof FaceLandmarks_1.FaceLandmarks - && obj['unshiftedLandmarks'] instanceof FaceLandmarks_1.FaceLandmarks - && obj['alignedRect'] instanceof FaceDetection_1.FaceDetection; -} -exports.isWithFaceLandmarks = isWithFaceLandmarks; -function extendWithFaceLandmarks(sourceObj, unshiftedLandmarks) { - var shift = sourceObj.detection.box; - var landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y); - var rect = landmarks.align(); - var imageDims = sourceObj.detection.imageDims; - var alignedRect = new FaceDetection_1.FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims); - var extension = { - landmarks: landmarks, - unshiftedLandmarks: unshiftedLandmarks, - alignedRect: alignedRect - }; - return Object.assign({}, sourceObj, extension); -} -exports.extendWithFaceLandmarks = extendWithFaceLandmarks; -//# sourceMappingURL=WithFaceLandmarks.js.map \ No newline at end of file diff --git a/build/commonjs/factories/WithFaceLandmarks.js.map b/build/commonjs/factories/WithFaceLandmarks.js.map deleted file mode 100644 index de2184e0..00000000 --- a/build/commonjs/factories/WithFaceLandmarks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WithFaceLandmarks.js","sourceRoot":"","sources":["../../../src/factories/WithFaceLandmarks.ts"],"names":[],"mappings":";;AAAA,0DAAyD;AACzD,0DAAyD;AAEzD,yDAA6E;AAW7E,SAAgB,mBAAmB,CAAC,GAAQ;IAC1C,OAAO,uCAAmB,CAAC,GAAG,CAAC;WAC1B,GAAG,CAAC,WAAW,CAAC,YAAY,6BAAa;WACzC,GAAG,CAAC,oBAAoB,CAAC,YAAY,6BAAa;WAClD,GAAG,CAAC,aAAa,CAAC,YAAY,6BAAa,CAAA;AAClD,CAAC;AALD,kDAKC;AAED,SAAgB,uBAAuB,CAIrC,SAAkB,EAClB,kBAAkC;IAG1B,IAAA,+BAAU,CAAwB;IAC1C,IAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAiB,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAE9E,IAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;IACtB,IAAA,yCAAS,CAAwB;IACzC,IAAM,WAAW,GAAG,IAAI,6BAAa,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;IAE9G,IAAM,SAAS,GAAG;QAChB,SAAS,WAAA;QACT,kBAAkB,oBAAA;QAClB,WAAW,aAAA;KACZ,CAAA;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AAtBD,0DAsBC"} \ No newline at end of file diff --git a/build/commonjs/factories/WithGender.d.ts b/build/commonjs/factories/WithGender.d.ts deleted file mode 100644 index 6f26c112..00000000 --- a/build/commonjs/factories/WithGender.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Gender } from '../ageGenderNet/types'; -export declare type WithGender = TSource & { - gender: Gender; - genderProbability: number; -}; -export declare function isWithGender(obj: any): obj is WithGender<{}>; -export declare function extendWithGender(sourceObj: TSource, gender: Gender, genderProbability: number): WithGender; diff --git a/build/commonjs/factories/WithGender.js b/build/commonjs/factories/WithGender.js deleted file mode 100644 index 0f6c8354..00000000 --- a/build/commonjs/factories/WithGender.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var types_1 = require("../ageGenderNet/types"); -function isWithGender(obj) { - return (obj['gender'] === types_1.Gender.MALE || obj['gender'] === types_1.Gender.FEMALE) - && tfjs_image_recognition_base_1.isValidProbablitiy(obj['genderProbability']); -} -exports.isWithGender = isWithGender; -function extendWithGender(sourceObj, gender, genderProbability) { - var extension = { gender: gender, genderProbability: genderProbability }; - return Object.assign({}, sourceObj, extension); -} -exports.extendWithGender = extendWithGender; -//# sourceMappingURL=WithGender.js.map \ No newline at end of file diff --git a/build/commonjs/factories/WithGender.js.map b/build/commonjs/factories/WithGender.js.map deleted file mode 100644 index 48db79bc..00000000 --- a/build/commonjs/factories/WithGender.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WithGender.js","sourceRoot":"","sources":["../../../src/factories/WithGender.ts"],"names":[],"mappings":";;AAAA,2EAAiE;AAEjE,+CAA+C;AAO/C,SAAgB,YAAY,CAAC,GAAQ;IACnC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,cAAM,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,cAAM,CAAC,MAAM,CAAC;WACpE,gDAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAA;AACnD,CAAC;AAHD,oCAGC;AAED,SAAgB,gBAAgB,CAG9B,SAAkB,EAClB,MAAc,EACd,iBAAyB;IAGzB,IAAM,SAAS,GAAG,EAAE,MAAM,QAAA,EAAE,iBAAiB,mBAAA,EAAE,CAAA;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC;AAVD,4CAUC"} \ No newline at end of file diff --git a/build/commonjs/factories/index.d.ts b/build/commonjs/factories/index.d.ts deleted file mode 100644 index c5094abb..00000000 --- a/build/commonjs/factories/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './WithFaceDescriptor'; -export * from './WithFaceDetection'; -export * from './WithFaceExpressions'; -export * from './WithFaceLandmarks'; -export * from './WithAge'; -export * from './WithGender'; diff --git a/build/commonjs/factories/index.js b/build/commonjs/factories/index.js deleted file mode 100644 index 6a683023..00000000 --- a/build/commonjs/factories/index.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./WithFaceDescriptor"), exports); -tslib_1.__exportStar(require("./WithFaceDetection"), exports); -tslib_1.__exportStar(require("./WithFaceExpressions"), exports); -tslib_1.__exportStar(require("./WithFaceLandmarks"), exports); -tslib_1.__exportStar(require("./WithAge"), exports); -tslib_1.__exportStar(require("./WithGender"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/factories/index.js.map b/build/commonjs/factories/index.js.map deleted file mode 100644 index 25eed52f..00000000 --- a/build/commonjs/factories/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factories/index.ts"],"names":[],"mappings":";;;AAAA,+DAAoC;AACpC,8DAAmC;AACnC,gEAAqC;AACrC,8DAAmC;AACnC,oDAAyB;AACzB,uDAA4B"} \ No newline at end of file diff --git a/build/commonjs/globalApi/ComposableTask.d.ts b/build/commonjs/globalApi/ComposableTask.d.ts deleted file mode 100644 index b7203e33..00000000 --- a/build/commonjs/globalApi/ComposableTask.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare class ComposableTask { - then(onfulfilled: (value: T) => T | PromiseLike): Promise; - run(): Promise; -} diff --git a/build/commonjs/globalApi/ComposableTask.js b/build/commonjs/globalApi/ComposableTask.js deleted file mode 100644 index 7c111ee7..00000000 --- a/build/commonjs/globalApi/ComposableTask.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var ComposableTask = /** @class */ (function () { - function ComposableTask() { - } - ComposableTask.prototype.then = function (onfulfilled) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = onfulfilled; - return [4 /*yield*/, this.run()]; - case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])]; - } - }); - }); - }; - ComposableTask.prototype.run = function () { - return tslib_1.__awaiter(this, void 0, void 0, function () { - return tslib_1.__generator(this, function (_a) { - throw new Error('ComposableTask - run is not implemented'); - }); - }); - }; - return ComposableTask; -}()); -exports.ComposableTask = ComposableTask; -//# sourceMappingURL=ComposableTask.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/ComposableTask.js.map b/build/commonjs/globalApi/ComposableTask.js.map deleted file mode 100644 index 97bdd610..00000000 --- a/build/commonjs/globalApi/ComposableTask.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ComposableTask.js","sourceRoot":"","sources":["../../../src/globalApi/ComposableTask.ts"],"names":[],"mappings":";;;AAAA;IAAA;IAWA,CAAC;IATc,6BAAI,GAAjB,UACE,WAA6C;;;;;;wBAEtC,KAAA,WAAW,CAAA;wBAAC,qBAAM,IAAI,CAAC,GAAG,EAAE,EAAA;4BAAnC,sBAAO,kBAAY,SAAgB,EAAC,EAAA;;;;KACrC;IAEY,4BAAG,GAAhB;;;gBACE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;;;KAC3D;IACH,qBAAC;AAAD,CAAC,AAXD,IAWC;AAXY,wCAAc"} \ No newline at end of file diff --git a/build/commonjs/globalApi/ComputeFaceDescriptorsTasks.d.ts b/build/commonjs/globalApi/ComputeFaceDescriptorsTasks.d.ts deleted file mode 100644 index bad1603b..00000000 --- a/build/commonjs/globalApi/ComputeFaceDescriptorsTasks.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { TNetInput } from 'tfjs-image-recognition-base'; -import { WithFaceDescriptor } from '../factories/WithFaceDescriptor'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -import { ComposableTask } from './ComposableTask'; -import { PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from './PredictAgeAndGenderTask'; -import { PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from './PredictFaceExpressionsTask'; -export declare class ComputeFaceDescriptorsTaskBase extends ComposableTask { - protected parentTask: ComposableTask | Promise; - protected input: TNetInput; - constructor(parentTask: ComposableTask | Promise, input: TNetInput); -} -export declare class ComputeAllFaceDescriptorsTask>> extends ComputeFaceDescriptorsTaskBase[], TSource[]> { - run(): Promise[]>; - withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask>; - withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask>; -} -export declare class ComputeSingleFaceDescriptorTask>> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> { - run(): Promise | undefined>; - withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask>; - withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask>; -} diff --git a/build/commonjs/globalApi/ComputeFaceDescriptorsTasks.js b/build/commonjs/globalApi/ComputeFaceDescriptorsTasks.js deleted file mode 100644 index 9e46ee5f..00000000 --- a/build/commonjs/globalApi/ComputeFaceDescriptorsTasks.js +++ /dev/null @@ -1,86 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var WithFaceDescriptor_1 = require("../factories/WithFaceDescriptor"); -var ComposableTask_1 = require("./ComposableTask"); -var extractFacesAndComputeResults_1 = require("./extractFacesAndComputeResults"); -var nets_1 = require("./nets"); -var PredictAgeAndGenderTask_1 = require("./PredictAgeAndGenderTask"); -var PredictFaceExpressionsTask_1 = require("./PredictFaceExpressionsTask"); -var ComputeFaceDescriptorsTaskBase = /** @class */ (function (_super) { - tslib_1.__extends(ComputeFaceDescriptorsTaskBase, _super); - function ComputeFaceDescriptorsTaskBase(parentTask, input) { - var _this = _super.call(this) || this; - _this.parentTask = parentTask; - _this.input = input; - return _this; - } - return ComputeFaceDescriptorsTaskBase; -}(ComposableTask_1.ComposableTask)); -exports.ComputeFaceDescriptorsTaskBase = ComputeFaceDescriptorsTaskBase; -var ComputeAllFaceDescriptorsTask = /** @class */ (function (_super) { - tslib_1.__extends(ComputeAllFaceDescriptorsTask, _super); - function ComputeAllFaceDescriptorsTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - ComputeAllFaceDescriptorsTask.prototype.run = function () { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var parentResults, descriptors; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResults = _a.sent(); - return [4 /*yield*/, extractFacesAndComputeResults_1.extractAllFacesAndComputeResults(parentResults, this.input, function (faces) { return Promise.all(faces.map(function (face) { - return nets_1.nets.faceRecognitionNet.computeFaceDescriptor(face); - })); }, null, function (parentResult) { return parentResult.landmarks.align(null, { useDlibAlignment: true }); })]; - case 2: - descriptors = _a.sent(); - return [2 /*return*/, descriptors.map(function (descriptor, i) { return WithFaceDescriptor_1.extendWithFaceDescriptor(parentResults[i], descriptor); })]; - } - }); - }); - }; - ComputeAllFaceDescriptorsTask.prototype.withFaceExpressions = function () { - return new PredictFaceExpressionsTask_1.PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input); - }; - ComputeAllFaceDescriptorsTask.prototype.withAgeAndGender = function () { - return new PredictAgeAndGenderTask_1.PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input); - }; - return ComputeAllFaceDescriptorsTask; -}(ComputeFaceDescriptorsTaskBase)); -exports.ComputeAllFaceDescriptorsTask = ComputeAllFaceDescriptorsTask; -var ComputeSingleFaceDescriptorTask = /** @class */ (function (_super) { - tslib_1.__extends(ComputeSingleFaceDescriptorTask, _super); - function ComputeSingleFaceDescriptorTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - ComputeSingleFaceDescriptorTask.prototype.run = function () { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var parentResult, descriptor; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResult = _a.sent(); - if (!parentResult) { - return [2 /*return*/]; - } - return [4 /*yield*/, extractFacesAndComputeResults_1.extractSingleFaceAndComputeResult(parentResult, this.input, function (face) { return nets_1.nets.faceRecognitionNet.computeFaceDescriptor(face); }, null, function (parentResult) { return parentResult.landmarks.align(null, { useDlibAlignment: true }); })]; - case 2: - descriptor = _a.sent(); - return [2 /*return*/, WithFaceDescriptor_1.extendWithFaceDescriptor(parentResult, descriptor)]; - } - }); - }); - }; - ComputeSingleFaceDescriptorTask.prototype.withFaceExpressions = function () { - return new PredictFaceExpressionsTask_1.PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input); - }; - ComputeSingleFaceDescriptorTask.prototype.withAgeAndGender = function () { - return new PredictAgeAndGenderTask_1.PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input); - }; - return ComputeSingleFaceDescriptorTask; -}(ComputeFaceDescriptorsTaskBase)); -exports.ComputeSingleFaceDescriptorTask = ComputeSingleFaceDescriptorTask; -//# sourceMappingURL=ComputeFaceDescriptorsTasks.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/ComputeFaceDescriptorsTasks.js.map b/build/commonjs/globalApi/ComputeFaceDescriptorsTasks.js.map deleted file mode 100644 index 67f45173..00000000 --- a/build/commonjs/globalApi/ComputeFaceDescriptorsTasks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ComputeFaceDescriptorsTasks.js","sourceRoot":"","sources":["../../../src/globalApi/ComputeFaceDescriptorsTasks.ts"],"names":[],"mappings":";;;AAEA,sEAA+F;AAG/F,mDAAkD;AAClD,iFAAsH;AACtH,+BAA8B;AAC9B,qEAGmC;AACnC,2EAGsC;AAEtC;IAA4E,0DAAuB;IACjG,wCACY,UAAkE,EAClE,KAAgB;QAF5B,YAIE,iBAAO,SACR;QAJW,gBAAU,GAAV,UAAU,CAAwD;QAClE,WAAK,GAAL,KAAK,CAAW;;IAG5B,CAAC;IACH,qCAAC;AAAD,CAAC,AAPD,CAA4E,+BAAc,GAOzF;AAPY,wEAA8B;AAS3C;IAEU,yDAAwE;IAFlF;;IA4BA,CAAC;IAxBc,2CAAG,GAAhB;;;;;4BAEwB,qBAAM,IAAI,CAAC,UAAU,EAAA;;wBAArC,aAAa,GAAG,SAAqB;wBAEvB,qBAAM,gEAAgC,CACxD,aAAa,EACb,IAAI,CAAC,KAAK,EACV,UAAA,KAAK,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI;gCACjC,OAAA,WAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAA0B;4BAA5E,CAA4E,CAC7E,CAAC,EAFO,CAEP,EACF,IAAI,EACJ,UAAA,YAAY,IAAI,OAAA,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAA9D,CAA8D,CAC/E,EAAA;;wBARK,WAAW,GAAG,SAQnB;wBAED,sBAAO,WAAW,CAAC,GAAG,CAAC,UAAC,UAAU,EAAE,CAAC,IAAK,OAAA,6CAAwB,CAAU,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAA/D,CAA+D,CAAC,EAAA;;;;KAC3G;IAED,2DAAmB,GAAnB;QACE,OAAO,IAAI,2EAA8C,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7E,CAAC;IAED,wDAAgB,GAAhB;QACE,OAAO,IAAI,qEAA2C,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1E,CAAC;IACH,oCAAC;AAAD,CAAC,AA5BD,CAEU,8BAA8B,GA0BvC;AA5BY,sEAA6B;AA8B1C;IAEU,2DAA4F;IAFtG;;IA4BA,CAAC;IAxBc,6CAAG,GAAhB;;;;;4BAEuB,qBAAM,IAAI,CAAC,UAAU,EAAA;;wBAApC,YAAY,GAAG,SAAqB;wBAC1C,IAAI,CAAC,YAAY,EAAE;4BACjB,sBAAM;yBACP;wBACkB,qBAAM,iEAAiC,CACxD,YAAY,EACZ,IAAI,CAAC,KAAK,EACV,UAAA,IAAI,IAAI,OAAA,WAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAA0B,EAA5E,CAA4E,EACpF,IAAI,EACJ,UAAA,YAAY,IAAI,OAAA,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAA9D,CAA8D,CAC/E,EAAA;;wBANK,UAAU,GAAG,SAMlB;wBAED,sBAAO,6CAAwB,CAAC,YAAY,EAAE,UAAU,CAAC,EAAA;;;;KAC1D;IAED,6DAAmB,GAAnB;QACE,OAAO,IAAI,8EAAiD,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAChF,CAAC;IAED,0DAAgB,GAAhB;QACE,OAAO,IAAI,wEAA8C,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7E,CAAC;IACH,sCAAC;AAAD,CAAC,AA5BD,CAEU,8BAA8B,GA0BvC;AA5BY,0EAA+B"} \ No newline at end of file diff --git a/build/commonjs/globalApi/DetectFaceLandmarksTasks.d.ts b/build/commonjs/globalApi/DetectFaceLandmarksTasks.d.ts deleted file mode 100644 index 1448662c..00000000 --- a/build/commonjs/globalApi/DetectFaceLandmarksTasks.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { TNetInput } from 'tfjs-image-recognition-base'; -import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; -import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net'; -import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -import { ComposableTask } from './ComposableTask'; -import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; -import { PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from './PredictAgeAndGenderTask'; -import { PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from './PredictFaceExpressionsTask'; -export declare class DetectFaceLandmarksTaskBase extends ComposableTask { - protected parentTask: ComposableTask | Promise; - protected input: TNetInput; - protected useTinyLandmarkNet: boolean; - constructor(parentTask: ComposableTask | Promise, input: TNetInput, useTinyLandmarkNet: boolean); - protected readonly landmarkNet: FaceLandmark68Net | FaceLandmark68TinyNet; -} -export declare class DetectAllFaceLandmarksTask> extends DetectFaceLandmarksTaskBase[], TSource[]> { - run(): Promise[]>; - withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask>; - withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask>; - withFaceDescriptors(): ComputeAllFaceDescriptorsTask>; -} -export declare class DetectSingleFaceLandmarksTask> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> { - run(): Promise | undefined>; - withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask>; - withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask>; - withFaceDescriptor(): ComputeSingleFaceDescriptorTask>; -} diff --git a/build/commonjs/globalApi/DetectFaceLandmarksTasks.js b/build/commonjs/globalApi/DetectFaceLandmarksTasks.js deleted file mode 100644 index c5d74063..00000000 --- a/build/commonjs/globalApi/DetectFaceLandmarksTasks.js +++ /dev/null @@ -1,131 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var dom_1 = require("../dom"); -var WithFaceLandmarks_1 = require("../factories/WithFaceLandmarks"); -var ComposableTask_1 = require("./ComposableTask"); -var ComputeFaceDescriptorsTasks_1 = require("./ComputeFaceDescriptorsTasks"); -var nets_1 = require("./nets"); -var PredictAgeAndGenderTask_1 = require("./PredictAgeAndGenderTask"); -var PredictFaceExpressionsTask_1 = require("./PredictFaceExpressionsTask"); -var DetectFaceLandmarksTaskBase = /** @class */ (function (_super) { - tslib_1.__extends(DetectFaceLandmarksTaskBase, _super); - function DetectFaceLandmarksTaskBase(parentTask, input, useTinyLandmarkNet) { - var _this = _super.call(this) || this; - _this.parentTask = parentTask; - _this.input = input; - _this.useTinyLandmarkNet = useTinyLandmarkNet; - return _this; - } - Object.defineProperty(DetectFaceLandmarksTaskBase.prototype, "landmarkNet", { - get: function () { - return this.useTinyLandmarkNet - ? nets_1.nets.faceLandmark68TinyNet - : nets_1.nets.faceLandmark68Net; - }, - enumerable: true, - configurable: true - }); - return DetectFaceLandmarksTaskBase; -}(ComposableTask_1.ComposableTask)); -exports.DetectFaceLandmarksTaskBase = DetectFaceLandmarksTaskBase; -var DetectAllFaceLandmarksTask = /** @class */ (function (_super) { - tslib_1.__extends(DetectAllFaceLandmarksTask, _super); - function DetectAllFaceLandmarksTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - DetectAllFaceLandmarksTask.prototype.run = function () { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var parentResults, detections, faces, _a, faceLandmarksByFace; - var _this = this; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResults = _b.sent(); - detections = parentResults.map(function (res) { return res.detection; }); - if (!(this.input instanceof tf.Tensor)) return [3 /*break*/, 3]; - return [4 /*yield*/, dom_1.extractFaceTensors(this.input, detections)]; - case 2: - _a = _b.sent(); - return [3 /*break*/, 5]; - case 3: return [4 /*yield*/, dom_1.extractFaces(this.input, detections)]; - case 4: - _a = _b.sent(); - _b.label = 5; - case 5: - faces = _a; - return [4 /*yield*/, Promise.all(faces.map(function (face) { return _this.landmarkNet.detectLandmarks(face); }))]; - case 6: - faceLandmarksByFace = _b.sent(); - faces.forEach(function (f) { return f instanceof tf.Tensor && f.dispose(); }); - return [2 /*return*/, parentResults.map(function (parentResult, i) { - return WithFaceLandmarks_1.extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]); - })]; - } - }); - }); - }; - DetectAllFaceLandmarksTask.prototype.withFaceExpressions = function () { - return new PredictFaceExpressionsTask_1.PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input); - }; - DetectAllFaceLandmarksTask.prototype.withAgeAndGender = function () { - return new PredictAgeAndGenderTask_1.PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input); - }; - DetectAllFaceLandmarksTask.prototype.withFaceDescriptors = function () { - return new ComputeFaceDescriptorsTasks_1.ComputeAllFaceDescriptorsTask(this, this.input); - }; - return DetectAllFaceLandmarksTask; -}(DetectFaceLandmarksTaskBase)); -exports.DetectAllFaceLandmarksTask = DetectAllFaceLandmarksTask; -var DetectSingleFaceLandmarksTask = /** @class */ (function (_super) { - tslib_1.__extends(DetectSingleFaceLandmarksTask, _super); - function DetectSingleFaceLandmarksTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - DetectSingleFaceLandmarksTask.prototype.run = function () { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var parentResult, detection, faces, _a, landmarks; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResult = _b.sent(); - if (!parentResult) { - return [2 /*return*/]; - } - detection = parentResult.detection; - if (!(this.input instanceof tf.Tensor)) return [3 /*break*/, 3]; - return [4 /*yield*/, dom_1.extractFaceTensors(this.input, [detection])]; - case 2: - _a = _b.sent(); - return [3 /*break*/, 5]; - case 3: return [4 /*yield*/, dom_1.extractFaces(this.input, [detection])]; - case 4: - _a = _b.sent(); - _b.label = 5; - case 5: - faces = _a; - return [4 /*yield*/, this.landmarkNet.detectLandmarks(faces[0])]; - case 6: - landmarks = _b.sent(); - faces.forEach(function (f) { return f instanceof tf.Tensor && f.dispose(); }); - return [2 /*return*/, WithFaceLandmarks_1.extendWithFaceLandmarks(parentResult, landmarks)]; - } - }); - }); - }; - DetectSingleFaceLandmarksTask.prototype.withFaceExpressions = function () { - return new PredictFaceExpressionsTask_1.PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input); - }; - DetectSingleFaceLandmarksTask.prototype.withAgeAndGender = function () { - return new PredictAgeAndGenderTask_1.PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input); - }; - DetectSingleFaceLandmarksTask.prototype.withFaceDescriptor = function () { - return new ComputeFaceDescriptorsTasks_1.ComputeSingleFaceDescriptorTask(this, this.input); - }; - return DetectSingleFaceLandmarksTask; -}(DetectFaceLandmarksTaskBase)); -exports.DetectSingleFaceLandmarksTask = DetectSingleFaceLandmarksTask; -//# sourceMappingURL=DetectFaceLandmarksTasks.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/DetectFaceLandmarksTasks.js.map b/build/commonjs/globalApi/DetectFaceLandmarksTasks.js.map deleted file mode 100644 index 6aa7aeee..00000000 --- a/build/commonjs/globalApi/DetectFaceLandmarksTasks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DetectFaceLandmarksTasks.js","sourceRoot":"","sources":["../../../src/globalApi/DetectFaceLandmarksTasks.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/globalApi/DetectFacesTasks.d.ts b/build/commonjs/globalApi/DetectFacesTasks.d.ts deleted file mode 100644 index d17f7ee9..00000000 --- a/build/commonjs/globalApi/DetectFacesTasks.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { ComposableTask } from './ComposableTask'; -import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks'; -import { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask'; -import { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask'; -import { FaceDetectionOptions } from './types'; -export declare class DetectFacesTaskBase extends ComposableTask { - protected input: TNetInput; - protected options: FaceDetectionOptions; - constructor(input: TNetInput, options?: FaceDetectionOptions); -} -export declare class DetectAllFacesTask extends DetectFacesTaskBase { - run(): Promise; - private runAndExtendWithFaceDetections; - withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectAllFaceLandmarksTask<{ - detection: FaceDetection; - }>; - withFaceExpressions(): PredictAllFaceExpressionsTask<{ - detection: FaceDetection; - }>; - withAgeAndGender(): PredictAllAgeAndGenderTask<{ - detection: FaceDetection; - }>; -} -export declare class DetectSingleFaceTask extends DetectFacesTaskBase { - run(): Promise; - private runAndExtendWithFaceDetection; - withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectSingleFaceLandmarksTask<{ - detection: FaceDetection; - }>; - withFaceExpressions(): PredictSingleFaceExpressionsTask<{ - detection: FaceDetection; - }>; - withAgeAndGender(): PredictSingleAgeAndGenderTask<{ - detection: FaceDetection; - }>; -} diff --git a/build/commonjs/globalApi/DetectFacesTasks.js b/build/commonjs/globalApi/DetectFacesTasks.js deleted file mode 100644 index c50cbfa1..00000000 --- a/build/commonjs/globalApi/DetectFacesTasks.js +++ /dev/null @@ -1,136 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var WithFaceDetection_1 = require("../factories/WithFaceDetection"); -var MtcnnOptions_1 = require("../mtcnn/MtcnnOptions"); -var SsdMobilenetv1Options_1 = require("../ssdMobilenetv1/SsdMobilenetv1Options"); -var TinyFaceDetectorOptions_1 = require("../tinyFaceDetector/TinyFaceDetectorOptions"); -var ComposableTask_1 = require("./ComposableTask"); -var DetectFaceLandmarksTasks_1 = require("./DetectFaceLandmarksTasks"); -var nets_1 = require("./nets"); -var PredictAgeAndGenderTask_1 = require("./PredictAgeAndGenderTask"); -var PredictFaceExpressionsTask_1 = require("./PredictFaceExpressionsTask"); -var DetectFacesTaskBase = /** @class */ (function (_super) { - tslib_1.__extends(DetectFacesTaskBase, _super); - function DetectFacesTaskBase(input, options) { - if (options === void 0) { options = new SsdMobilenetv1Options_1.SsdMobilenetv1Options(); } - var _this = _super.call(this) || this; - _this.input = input; - _this.options = options; - return _this; - } - return DetectFacesTaskBase; -}(ComposableTask_1.ComposableTask)); -exports.DetectFacesTaskBase = DetectFacesTaskBase; -var DetectAllFacesTask = /** @class */ (function (_super) { - tslib_1.__extends(DetectAllFacesTask, _super); - function DetectAllFacesTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - DetectAllFacesTask.prototype.run = function () { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a, input, options, faceDetectionFunction; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this, input = _a.input, options = _a.options; - if (!(options instanceof MtcnnOptions_1.MtcnnOptions)) return [3 /*break*/, 2]; - return [4 /*yield*/, nets_1.nets.mtcnn.forward(input, options)]; - case 1: return [2 /*return*/, (_b.sent()) - .map(function (result) { return result.detection; })]; - case 2: - faceDetectionFunction = options instanceof TinyFaceDetectorOptions_1.TinyFaceDetectorOptions - ? function (input) { return nets_1.nets.tinyFaceDetector.locateFaces(input, options); } - : (options instanceof SsdMobilenetv1Options_1.SsdMobilenetv1Options - ? function (input) { return nets_1.nets.ssdMobilenetv1.locateFaces(input, options); } - : (options instanceof tfjs_image_recognition_base_1.TfjsImageRecognitionBase.TinyYolov2Options - ? function (input) { return nets_1.nets.tinyYolov2.locateFaces(input, options); } - : null)); - if (!faceDetectionFunction) { - throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options'); - } - return [2 /*return*/, faceDetectionFunction(input)]; - } - }); - }); - }; - DetectAllFacesTask.prototype.runAndExtendWithFaceDetections = function () { - var _this = this; - return new Promise(function (res) { return tslib_1.__awaiter(_this, void 0, void 0, function () { - var detections; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.run()]; - case 1: - detections = _a.sent(); - return [2 /*return*/, res(detections.map(function (detection) { return WithFaceDetection_1.extendWithFaceDetection({}, detection); }))]; - } - }); - }); }); - }; - DetectAllFacesTask.prototype.withFaceLandmarks = function (useTinyLandmarkNet) { - if (useTinyLandmarkNet === void 0) { useTinyLandmarkNet = false; } - return new DetectFaceLandmarksTasks_1.DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(), this.input, useTinyLandmarkNet); - }; - DetectAllFacesTask.prototype.withFaceExpressions = function () { - return new PredictFaceExpressionsTask_1.PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(), this.input); - }; - DetectAllFacesTask.prototype.withAgeAndGender = function () { - return new PredictAgeAndGenderTask_1.PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(), this.input); - }; - return DetectAllFacesTask; -}(DetectFacesTaskBase)); -exports.DetectAllFacesTask = DetectAllFacesTask; -var DetectSingleFaceTask = /** @class */ (function (_super) { - tslib_1.__extends(DetectSingleFaceTask, _super); - function DetectSingleFaceTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - DetectSingleFaceTask.prototype.run = function () { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var faceDetections, faceDetectionWithHighestScore; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, new DetectAllFacesTask(this.input, this.options)]; - case 1: - faceDetections = _a.sent(); - faceDetectionWithHighestScore = faceDetections[0]; - faceDetections.forEach(function (faceDetection) { - if (faceDetection.score > faceDetectionWithHighestScore.score) { - faceDetectionWithHighestScore = faceDetection; - } - }); - return [2 /*return*/, faceDetectionWithHighestScore]; - } - }); - }); - }; - DetectSingleFaceTask.prototype.runAndExtendWithFaceDetection = function () { - var _this = this; - return new Promise(function (res) { return tslib_1.__awaiter(_this, void 0, void 0, function () { - var detection; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.run()]; - case 1: - detection = _a.sent(); - return [2 /*return*/, res(detection ? WithFaceDetection_1.extendWithFaceDetection({}, detection) : undefined)]; - } - }); - }); }); - }; - DetectSingleFaceTask.prototype.withFaceLandmarks = function (useTinyLandmarkNet) { - if (useTinyLandmarkNet === void 0) { useTinyLandmarkNet = false; } - return new DetectFaceLandmarksTasks_1.DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(), this.input, useTinyLandmarkNet); - }; - DetectSingleFaceTask.prototype.withFaceExpressions = function () { - return new PredictFaceExpressionsTask_1.PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(), this.input); - }; - DetectSingleFaceTask.prototype.withAgeAndGender = function () { - return new PredictAgeAndGenderTask_1.PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(), this.input); - }; - return DetectSingleFaceTask; -}(DetectFacesTaskBase)); -exports.DetectSingleFaceTask = DetectSingleFaceTask; -//# sourceMappingURL=DetectFacesTasks.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/DetectFacesTasks.js.map b/build/commonjs/globalApi/DetectFacesTasks.js.map deleted file mode 100644 index 93953b46..00000000 --- a/build/commonjs/globalApi/DetectFacesTasks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DetectFacesTasks.js","sourceRoot":"","sources":["../../../src/globalApi/DetectFacesTasks.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/globalApi/FaceMatcher.d.ts b/build/commonjs/globalApi/FaceMatcher.d.ts deleted file mode 100644 index 627449ec..00000000 --- a/build/commonjs/globalApi/FaceMatcher.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { FaceMatch } from '../classes/FaceMatch'; -import { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors'; -import { WithFaceDescriptor } from '../factories'; -export declare class FaceMatcher { - private _labeledDescriptors; - private _distanceThreshold; - constructor(inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>, distanceThreshold?: number); - readonly labeledDescriptors: LabeledFaceDescriptors[]; - readonly distanceThreshold: number; - computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number; - matchDescriptor(queryDescriptor: Float32Array): FaceMatch; - findBestMatch(queryDescriptor: Float32Array): FaceMatch; - toJSON(): any; - static fromJSON(json: any): FaceMatcher; -} diff --git a/build/commonjs/globalApi/FaceMatcher.js b/build/commonjs/globalApi/FaceMatcher.js deleted file mode 100644 index 5f1f020e..00000000 --- a/build/commonjs/globalApi/FaceMatcher.js +++ /dev/null @@ -1,74 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var FaceMatch_1 = require("../classes/FaceMatch"); -var LabeledFaceDescriptors_1 = require("../classes/LabeledFaceDescriptors"); -var euclideanDistance_1 = require("../euclideanDistance"); -var FaceMatcher = /** @class */ (function () { - function FaceMatcher(inputs, distanceThreshold) { - if (distanceThreshold === void 0) { distanceThreshold = 0.6; } - this._distanceThreshold = distanceThreshold; - var inputArray = Array.isArray(inputs) ? inputs : [inputs]; - if (!inputArray.length) { - throw new Error("FaceRecognizer.constructor - expected atleast one input"); - } - var count = 1; - var createUniqueLabel = function () { return "person " + count++; }; - this._labeledDescriptors = inputArray.map(function (desc) { - if (desc instanceof LabeledFaceDescriptors_1.LabeledFaceDescriptors) { - return desc; - } - if (desc instanceof Float32Array) { - return new LabeledFaceDescriptors_1.LabeledFaceDescriptors(createUniqueLabel(), [desc]); - } - if (desc.descriptor && desc.descriptor instanceof Float32Array) { - return new LabeledFaceDescriptors_1.LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]); - } - throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>"); - }); - } - Object.defineProperty(FaceMatcher.prototype, "labeledDescriptors", { - get: function () { return this._labeledDescriptors; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FaceMatcher.prototype, "distanceThreshold", { - get: function () { return this._distanceThreshold; }, - enumerable: true, - configurable: true - }); - FaceMatcher.prototype.computeMeanDistance = function (queryDescriptor, descriptors) { - return descriptors - .map(function (d) { return euclideanDistance_1.euclideanDistance(d, queryDescriptor); }) - .reduce(function (d1, d2) { return d1 + d2; }, 0) - / (descriptors.length || 1); - }; - FaceMatcher.prototype.matchDescriptor = function (queryDescriptor) { - var _this = this; - return this.labeledDescriptors - .map(function (_a) { - var descriptors = _a.descriptors, label = _a.label; - return new FaceMatch_1.FaceMatch(label, _this.computeMeanDistance(queryDescriptor, descriptors)); - }) - .reduce(function (best, curr) { return best.distance < curr.distance ? best : curr; }); - }; - FaceMatcher.prototype.findBestMatch = function (queryDescriptor) { - var bestMatch = this.matchDescriptor(queryDescriptor); - return bestMatch.distance < this.distanceThreshold - ? bestMatch - : new FaceMatch_1.FaceMatch('unknown', bestMatch.distance); - }; - FaceMatcher.prototype.toJSON = function () { - return { - distanceThreshold: this.distanceThreshold, - labeledDescriptors: this.labeledDescriptors.map(function (ld) { return ld.toJSON(); }) - }; - }; - FaceMatcher.fromJSON = function (json) { - var labeledDescriptors = json.labeledDescriptors - .map(function (ld) { return LabeledFaceDescriptors_1.LabeledFaceDescriptors.fromJSON(ld); }); - return new FaceMatcher(labeledDescriptors, json.distanceThreshold); - }; - return FaceMatcher; -}()); -exports.FaceMatcher = FaceMatcher; -//# sourceMappingURL=FaceMatcher.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/FaceMatcher.js.map b/build/commonjs/globalApi/FaceMatcher.js.map deleted file mode 100644 index 5fddc5cd..00000000 --- a/build/commonjs/globalApi/FaceMatcher.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceMatcher.js","sourceRoot":"","sources":["../../../src/globalApi/FaceMatcher.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/globalApi/PredictAgeAndGenderTask.d.ts b/build/commonjs/globalApi/PredictAgeAndGenderTask.d.ts deleted file mode 100644 index 6c8607bf..00000000 --- a/build/commonjs/globalApi/PredictAgeAndGenderTask.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TNetInput } from 'tfjs-image-recognition-base'; -import { WithAge } from '../factories/WithAge'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -import { WithGender } from '../factories/WithGender'; -import { ComposableTask } from './ComposableTask'; -import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; -import { PredictAllFaceExpressionsTask, PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from './PredictFaceExpressionsTask'; -export declare class PredictAgeAndGenderTaskBase extends ComposableTask { - protected parentTask: ComposableTask | Promise; - protected input: TNetInput; - protected extractedFaces?: (HTMLCanvasElement | tf.Tensor)[] | undefined; - constructor(parentTask: ComposableTask | Promise, input: TNetInput, extractedFaces?: (HTMLCanvasElement | tf.Tensor)[] | undefined); -} -export declare class PredictAllAgeAndGenderTask> extends PredictAgeAndGenderTaskBase>[], TSource[]> { - run(): Promise>[]>; - withFaceExpressions(): PredictAllFaceExpressionsTask>>; -} -export declare class PredictSingleAgeAndGenderTask> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> { - run(): Promise> | undefined>; - withFaceExpressions(): PredictSingleFaceExpressionsTask>>; -} -export declare class PredictAllAgeAndGenderWithFaceAlignmentTask>> extends PredictAllAgeAndGenderTask { - withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask>>; - withFaceDescriptors(): ComputeAllFaceDescriptorsTask>>; -} -export declare class PredictSingleAgeAndGenderWithFaceAlignmentTask>> extends PredictSingleAgeAndGenderTask { - withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask>>; - withFaceDescriptor(): ComputeSingleFaceDescriptorTask>>; -} diff --git a/build/commonjs/globalApi/PredictAgeAndGenderTask.js b/build/commonjs/globalApi/PredictAgeAndGenderTask.js deleted file mode 100644 index fa9b6d04..00000000 --- a/build/commonjs/globalApi/PredictAgeAndGenderTask.js +++ /dev/null @@ -1,119 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var WithAge_1 = require("../factories/WithAge"); -var WithGender_1 = require("../factories/WithGender"); -var ComposableTask_1 = require("./ComposableTask"); -var ComputeFaceDescriptorsTasks_1 = require("./ComputeFaceDescriptorsTasks"); -var extractFacesAndComputeResults_1 = require("./extractFacesAndComputeResults"); -var nets_1 = require("./nets"); -var PredictFaceExpressionsTask_1 = require("./PredictFaceExpressionsTask"); -var PredictAgeAndGenderTaskBase = /** @class */ (function (_super) { - tslib_1.__extends(PredictAgeAndGenderTaskBase, _super); - function PredictAgeAndGenderTaskBase(parentTask, input, extractedFaces) { - var _this = _super.call(this) || this; - _this.parentTask = parentTask; - _this.input = input; - _this.extractedFaces = extractedFaces; - return _this; - } - return PredictAgeAndGenderTaskBase; -}(ComposableTask_1.ComposableTask)); -exports.PredictAgeAndGenderTaskBase = PredictAgeAndGenderTaskBase; -var PredictAllAgeAndGenderTask = /** @class */ (function (_super) { - tslib_1.__extends(PredictAllAgeAndGenderTask, _super); - function PredictAllAgeAndGenderTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictAllAgeAndGenderTask.prototype.run = function () { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var parentResults, ageAndGenderByFace; - var _this = this; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResults = _a.sent(); - return [4 /*yield*/, extractFacesAndComputeResults_1.extractAllFacesAndComputeResults(parentResults, this.input, function (faces) { return tslib_1.__awaiter(_this, void 0, void 0, function () { - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, Promise.all(faces.map(function (face) { return nets_1.nets.ageGenderNet.predictAgeAndGender(face); }))]; - case 1: return [2 /*return*/, _a.sent()]; - } - }); - }); }, this.extractedFaces)]; - case 2: - ageAndGenderByFace = _a.sent(); - return [2 /*return*/, parentResults.map(function (parentResult, i) { - var _a = ageAndGenderByFace[i], age = _a.age, gender = _a.gender, genderProbability = _a.genderProbability; - return WithAge_1.extendWithAge(WithGender_1.extendWithGender(parentResult, gender, genderProbability), age); - })]; - } - }); - }); - }; - PredictAllAgeAndGenderTask.prototype.withFaceExpressions = function () { - return new PredictFaceExpressionsTask_1.PredictAllFaceExpressionsTask(this, this.input); - }; - return PredictAllAgeAndGenderTask; -}(PredictAgeAndGenderTaskBase)); -exports.PredictAllAgeAndGenderTask = PredictAllAgeAndGenderTask; -var PredictSingleAgeAndGenderTask = /** @class */ (function (_super) { - tslib_1.__extends(PredictSingleAgeAndGenderTask, _super); - function PredictSingleAgeAndGenderTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictSingleAgeAndGenderTask.prototype.run = function () { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var parentResult, _a, age, gender, genderProbability; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResult = _b.sent(); - if (!parentResult) { - return [2 /*return*/]; - } - return [4 /*yield*/, extractFacesAndComputeResults_1.extractSingleFaceAndComputeResult(parentResult, this.input, function (face) { return nets_1.nets.ageGenderNet.predictAgeAndGender(face); }, this.extractedFaces)]; - case 2: - _a = _b.sent(), age = _a.age, gender = _a.gender, genderProbability = _a.genderProbability; - return [2 /*return*/, WithAge_1.extendWithAge(WithGender_1.extendWithGender(parentResult, gender, genderProbability), age)]; - } - }); - }); - }; - PredictSingleAgeAndGenderTask.prototype.withFaceExpressions = function () { - return new PredictFaceExpressionsTask_1.PredictSingleFaceExpressionsTask(this, this.input); - }; - return PredictSingleAgeAndGenderTask; -}(PredictAgeAndGenderTaskBase)); -exports.PredictSingleAgeAndGenderTask = PredictSingleAgeAndGenderTask; -var PredictAllAgeAndGenderWithFaceAlignmentTask = /** @class */ (function (_super) { - tslib_1.__extends(PredictAllAgeAndGenderWithFaceAlignmentTask, _super); - function PredictAllAgeAndGenderWithFaceAlignmentTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictAllAgeAndGenderWithFaceAlignmentTask.prototype.withFaceExpressions = function () { - return new PredictFaceExpressionsTask_1.PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input); - }; - PredictAllAgeAndGenderWithFaceAlignmentTask.prototype.withFaceDescriptors = function () { - return new ComputeFaceDescriptorsTasks_1.ComputeAllFaceDescriptorsTask(this, this.input); - }; - return PredictAllAgeAndGenderWithFaceAlignmentTask; -}(PredictAllAgeAndGenderTask)); -exports.PredictAllAgeAndGenderWithFaceAlignmentTask = PredictAllAgeAndGenderWithFaceAlignmentTask; -var PredictSingleAgeAndGenderWithFaceAlignmentTask = /** @class */ (function (_super) { - tslib_1.__extends(PredictSingleAgeAndGenderWithFaceAlignmentTask, _super); - function PredictSingleAgeAndGenderWithFaceAlignmentTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictSingleAgeAndGenderWithFaceAlignmentTask.prototype.withFaceExpressions = function () { - return new PredictFaceExpressionsTask_1.PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input); - }; - PredictSingleAgeAndGenderWithFaceAlignmentTask.prototype.withFaceDescriptor = function () { - return new ComputeFaceDescriptorsTasks_1.ComputeSingleFaceDescriptorTask(this, this.input); - }; - return PredictSingleAgeAndGenderWithFaceAlignmentTask; -}(PredictSingleAgeAndGenderTask)); -exports.PredictSingleAgeAndGenderWithFaceAlignmentTask = PredictSingleAgeAndGenderWithFaceAlignmentTask; -//# sourceMappingURL=PredictAgeAndGenderTask.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/PredictAgeAndGenderTask.js.map b/build/commonjs/globalApi/PredictAgeAndGenderTask.js.map deleted file mode 100644 index 1d6116f6..00000000 --- a/build/commonjs/globalApi/PredictAgeAndGenderTask.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PredictAgeAndGenderTask.js","sourceRoot":"","sources":["../../../src/globalApi/PredictAgeAndGenderTask.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/globalApi/PredictFaceExpressionsTask.d.ts b/build/commonjs/globalApi/PredictFaceExpressionsTask.d.ts deleted file mode 100644 index bddc6397..00000000 --- a/build/commonjs/globalApi/PredictFaceExpressionsTask.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TNetInput } from 'tfjs-image-recognition-base'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceExpressions } from '../factories/WithFaceExpressions'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -import { ComposableTask } from './ComposableTask'; -import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; -import { PredictAllAgeAndGenderTask, PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from './PredictAgeAndGenderTask'; -export declare class PredictFaceExpressionsTaskBase extends ComposableTask { - protected parentTask: ComposableTask | Promise; - protected input: TNetInput; - protected extractedFaces?: (HTMLCanvasElement | tf.Tensor)[] | undefined; - constructor(parentTask: ComposableTask | Promise, input: TNetInput, extractedFaces?: (HTMLCanvasElement | tf.Tensor)[] | undefined); -} -export declare class PredictAllFaceExpressionsTask> extends PredictFaceExpressionsTaskBase[], TSource[]> { - run(): Promise[]>; - withAgeAndGender(): PredictAllAgeAndGenderTask>; -} -export declare class PredictSingleFaceExpressionsTask> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> { - run(): Promise | undefined>; - withAgeAndGender(): PredictSingleAgeAndGenderTask>; -} -export declare class PredictAllFaceExpressionsWithFaceAlignmentTask>> extends PredictAllFaceExpressionsTask { - withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask>; - withFaceDescriptors(): ComputeAllFaceDescriptorsTask>; -} -export declare class PredictSingleFaceExpressionsWithFaceAlignmentTask>> extends PredictSingleFaceExpressionsTask { - withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask>; - withFaceDescriptor(): ComputeSingleFaceDescriptorTask>; -} diff --git a/build/commonjs/globalApi/PredictFaceExpressionsTask.js b/build/commonjs/globalApi/PredictFaceExpressionsTask.js deleted file mode 100644 index e52acb85..00000000 --- a/build/commonjs/globalApi/PredictFaceExpressionsTask.js +++ /dev/null @@ -1,115 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var WithFaceExpressions_1 = require("../factories/WithFaceExpressions"); -var ComposableTask_1 = require("./ComposableTask"); -var ComputeFaceDescriptorsTasks_1 = require("./ComputeFaceDescriptorsTasks"); -var extractFacesAndComputeResults_1 = require("./extractFacesAndComputeResults"); -var nets_1 = require("./nets"); -var PredictAgeAndGenderTask_1 = require("./PredictAgeAndGenderTask"); -var PredictFaceExpressionsTaskBase = /** @class */ (function (_super) { - tslib_1.__extends(PredictFaceExpressionsTaskBase, _super); - function PredictFaceExpressionsTaskBase(parentTask, input, extractedFaces) { - var _this = _super.call(this) || this; - _this.parentTask = parentTask; - _this.input = input; - _this.extractedFaces = extractedFaces; - return _this; - } - return PredictFaceExpressionsTaskBase; -}(ComposableTask_1.ComposableTask)); -exports.PredictFaceExpressionsTaskBase = PredictFaceExpressionsTaskBase; -var PredictAllFaceExpressionsTask = /** @class */ (function (_super) { - tslib_1.__extends(PredictAllFaceExpressionsTask, _super); - function PredictAllFaceExpressionsTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictAllFaceExpressionsTask.prototype.run = function () { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var parentResults, faceExpressionsByFace; - var _this = this; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResults = _a.sent(); - return [4 /*yield*/, extractFacesAndComputeResults_1.extractAllFacesAndComputeResults(parentResults, this.input, function (faces) { return tslib_1.__awaiter(_this, void 0, void 0, function () { - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, Promise.all(faces.map(function (face) { return nets_1.nets.faceExpressionNet.predictExpressions(face); }))]; - case 1: return [2 /*return*/, _a.sent()]; - } - }); - }); }, this.extractedFaces)]; - case 2: - faceExpressionsByFace = _a.sent(); - return [2 /*return*/, parentResults.map(function (parentResult, i) { return WithFaceExpressions_1.extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]); })]; - } - }); - }); - }; - PredictAllFaceExpressionsTask.prototype.withAgeAndGender = function () { - return new PredictAgeAndGenderTask_1.PredictAllAgeAndGenderTask(this, this.input); - }; - return PredictAllFaceExpressionsTask; -}(PredictFaceExpressionsTaskBase)); -exports.PredictAllFaceExpressionsTask = PredictAllFaceExpressionsTask; -var PredictSingleFaceExpressionsTask = /** @class */ (function (_super) { - tslib_1.__extends(PredictSingleFaceExpressionsTask, _super); - function PredictSingleFaceExpressionsTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictSingleFaceExpressionsTask.prototype.run = function () { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var parentResult, faceExpressions; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResult = _a.sent(); - if (!parentResult) { - return [2 /*return*/]; - } - return [4 /*yield*/, extractFacesAndComputeResults_1.extractSingleFaceAndComputeResult(parentResult, this.input, function (face) { return nets_1.nets.faceExpressionNet.predictExpressions(face); }, this.extractedFaces)]; - case 2: - faceExpressions = _a.sent(); - return [2 /*return*/, WithFaceExpressions_1.extendWithFaceExpressions(parentResult, faceExpressions)]; - } - }); - }); - }; - PredictSingleFaceExpressionsTask.prototype.withAgeAndGender = function () { - return new PredictAgeAndGenderTask_1.PredictSingleAgeAndGenderTask(this, this.input); - }; - return PredictSingleFaceExpressionsTask; -}(PredictFaceExpressionsTaskBase)); -exports.PredictSingleFaceExpressionsTask = PredictSingleFaceExpressionsTask; -var PredictAllFaceExpressionsWithFaceAlignmentTask = /** @class */ (function (_super) { - tslib_1.__extends(PredictAllFaceExpressionsWithFaceAlignmentTask, _super); - function PredictAllFaceExpressionsWithFaceAlignmentTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictAllFaceExpressionsWithFaceAlignmentTask.prototype.withAgeAndGender = function () { - return new PredictAgeAndGenderTask_1.PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input); - }; - PredictAllFaceExpressionsWithFaceAlignmentTask.prototype.withFaceDescriptors = function () { - return new ComputeFaceDescriptorsTasks_1.ComputeAllFaceDescriptorsTask(this, this.input); - }; - return PredictAllFaceExpressionsWithFaceAlignmentTask; -}(PredictAllFaceExpressionsTask)); -exports.PredictAllFaceExpressionsWithFaceAlignmentTask = PredictAllFaceExpressionsWithFaceAlignmentTask; -var PredictSingleFaceExpressionsWithFaceAlignmentTask = /** @class */ (function (_super) { - tslib_1.__extends(PredictSingleFaceExpressionsWithFaceAlignmentTask, _super); - function PredictSingleFaceExpressionsWithFaceAlignmentTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictSingleFaceExpressionsWithFaceAlignmentTask.prototype.withAgeAndGender = function () { - return new PredictAgeAndGenderTask_1.PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input); - }; - PredictSingleFaceExpressionsWithFaceAlignmentTask.prototype.withFaceDescriptor = function () { - return new ComputeFaceDescriptorsTasks_1.ComputeSingleFaceDescriptorTask(this, this.input); - }; - return PredictSingleFaceExpressionsWithFaceAlignmentTask; -}(PredictSingleFaceExpressionsTask)); -exports.PredictSingleFaceExpressionsWithFaceAlignmentTask = PredictSingleFaceExpressionsWithFaceAlignmentTask; -//# sourceMappingURL=PredictFaceExpressionsTask.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/PredictFaceExpressionsTask.js.map b/build/commonjs/globalApi/PredictFaceExpressionsTask.js.map deleted file mode 100644 index d34ad896..00000000 --- a/build/commonjs/globalApi/PredictFaceExpressionsTask.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PredictFaceExpressionsTask.js","sourceRoot":"","sources":["../../../src/globalApi/PredictFaceExpressionsTask.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/globalApi/allFaces.d.ts b/build/commonjs/globalApi/allFaces.d.ts deleted file mode 100644 index a5b62f2f..00000000 --- a/build/commonjs/globalApi/allFaces.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { TfjsImageRecognitionBase, TNetInput } from 'tfjs-image-recognition-base'; -import { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories'; -import { IMtcnnOptions } from '../mtcnn/MtcnnOptions'; -export declare function allFacesSsdMobilenetv1(input: TNetInput, minConfidence?: number): Promise>>[]>; -export declare function allFacesTinyYolov2(input: TNetInput, forwardParams?: TfjsImageRecognitionBase.ITinyYolov2Options): Promise>>[]>; -export declare function allFacesMtcnn(input: TNetInput, forwardParams?: IMtcnnOptions): Promise>>[]>; -export declare const allFaces: typeof allFacesSsdMobilenetv1; diff --git a/build/commonjs/globalApi/allFaces.js b/build/commonjs/globalApi/allFaces.js deleted file mode 100644 index da39614a..00000000 --- a/build/commonjs/globalApi/allFaces.js +++ /dev/null @@ -1,51 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var MtcnnOptions_1 = require("../mtcnn/MtcnnOptions"); -var ssdMobilenetv1_1 = require("../ssdMobilenetv1"); -var detectFaces_1 = require("./detectFaces"); -// export allFaces API for backward compatibility -function allFacesSsdMobilenetv1(input, minConfidence) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, detectFaces_1.detectAllFaces(input, new ssdMobilenetv1_1.SsdMobilenetv1Options(minConfidence ? { minConfidence: minConfidence } : {})) - .withFaceLandmarks() - .withFaceDescriptors()]; - case 1: return [2 /*return*/, _a.sent()]; - } - }); - }); -} -exports.allFacesSsdMobilenetv1 = allFacesSsdMobilenetv1; -function allFacesTinyYolov2(input, forwardParams) { - if (forwardParams === void 0) { forwardParams = {}; } - return tslib_1.__awaiter(this, void 0, void 0, function () { - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, detectFaces_1.detectAllFaces(input, new tfjs_image_recognition_base_1.TfjsImageRecognitionBase.TinyYolov2Options(forwardParams)) - .withFaceLandmarks() - .withFaceDescriptors()]; - case 1: return [2 /*return*/, _a.sent()]; - } - }); - }); -} -exports.allFacesTinyYolov2 = allFacesTinyYolov2; -function allFacesMtcnn(input, forwardParams) { - if (forwardParams === void 0) { forwardParams = {}; } - return tslib_1.__awaiter(this, void 0, void 0, function () { - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, detectFaces_1.detectAllFaces(input, new MtcnnOptions_1.MtcnnOptions(forwardParams)) - .withFaceLandmarks() - .withFaceDescriptors()]; - case 1: return [2 /*return*/, _a.sent()]; - } - }); - }); -} -exports.allFacesMtcnn = allFacesMtcnn; -exports.allFaces = allFacesSsdMobilenetv1; -//# sourceMappingURL=allFaces.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/allFaces.js.map b/build/commonjs/globalApi/allFaces.js.map deleted file mode 100644 index e7975727..00000000 --- a/build/commonjs/globalApi/allFaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"allFaces.js","sourceRoot":"","sources":["../../../src/globalApi/allFaces.ts"],"names":[],"mappings":";;;AAAA,2EAAkF;AAGlF,sDAAoE;AACpE,oDAA0D;AAC1D,6CAA+C;AAE/C,iDAAiD;AAEjD,SAAsB,sBAAsB,CAC1C,KAAgB,EAChB,aAAsB;;;;wBAEf,qBAAM,4BAAc,CAAC,KAAK,EAAE,IAAI,sCAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,eAAA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;yBAClG,iBAAiB,EAAE;yBACnB,mBAAmB,EAAE,EAAA;wBAFxB,sBAAO,SAEiB,EAAA;;;;CACzB;AAPD,wDAOC;AAED,SAAsB,kBAAkB,CACtC,KAAgB,EAChB,aAA+D;IAA/D,8BAAA,EAAA,kBAA+D;;;;wBAExD,qBAAM,4BAAc,CAAC,KAAK,EAAE,IAAI,sDAAwB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;yBAC9F,iBAAiB,EAAE;yBACnB,mBAAmB,EAAE,EAAA;wBAFxB,sBAAO,SAEiB,EAAA;;;;CACzB;AAPD,gDAOC;AAED,SAAsB,aAAa,CACjC,KAAgB,EAChB,aAAiC;IAAjC,8BAAA,EAAA,kBAAiC;;;;wBAE1B,qBAAM,4BAAc,CAAC,KAAK,EAAE,IAAI,2BAAY,CAAC,aAAa,CAAC,CAAC;yBAChE,iBAAiB,EAAE;yBACnB,mBAAmB,EAAE,EAAA;wBAFxB,sBAAO,SAEiB,EAAA;;;;CACzB;AAPD,sCAOC;AAEY,QAAA,QAAQ,GAAG,sBAAsB,CAAA"} \ No newline at end of file diff --git a/build/commonjs/globalApi/detectFaces.d.ts b/build/commonjs/globalApi/detectFaces.d.ts deleted file mode 100644 index d1091c32..00000000 --- a/build/commonjs/globalApi/detectFaces.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { TNetInput } from 'tfjs-image-recognition-base'; -import { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks'; -import { FaceDetectionOptions } from './types'; -export declare function detectSingleFace(input: TNetInput, options?: FaceDetectionOptions): DetectSingleFaceTask; -export declare function detectAllFaces(input: TNetInput, options?: FaceDetectionOptions): DetectAllFacesTask; diff --git a/build/commonjs/globalApi/detectFaces.js b/build/commonjs/globalApi/detectFaces.js deleted file mode 100644 index 941040f8..00000000 --- a/build/commonjs/globalApi/detectFaces.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var SsdMobilenetv1Options_1 = require("../ssdMobilenetv1/SsdMobilenetv1Options"); -var DetectFacesTasks_1 = require("./DetectFacesTasks"); -function detectSingleFace(input, options) { - if (options === void 0) { options = new SsdMobilenetv1Options_1.SsdMobilenetv1Options(); } - return new DetectFacesTasks_1.DetectSingleFaceTask(input, options); -} -exports.detectSingleFace = detectSingleFace; -function detectAllFaces(input, options) { - if (options === void 0) { options = new SsdMobilenetv1Options_1.SsdMobilenetv1Options(); } - return new DetectFacesTasks_1.DetectAllFacesTask(input, options); -} -exports.detectAllFaces = detectAllFaces; -//# sourceMappingURL=detectFaces.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/detectFaces.js.map b/build/commonjs/globalApi/detectFaces.js.map deleted file mode 100644 index 0a202c61..00000000 --- a/build/commonjs/globalApi/detectFaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"detectFaces.js","sourceRoot":"","sources":["../../../src/globalApi/detectFaces.ts"],"names":[],"mappings":";;AAEA,iFAAgF;AAChF,uDAA8E;AAG9E,SAAgB,gBAAgB,CAC9B,KAAgB,EAChB,OAA2D;IAA3D,wBAAA,EAAA,cAAoC,6CAAqB,EAAE;IAE3D,OAAO,IAAI,uCAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AACjD,CAAC;AALD,4CAKC;AAED,SAAgB,cAAc,CAC5B,KAAgB,EAChB,OAA2D;IAA3D,wBAAA,EAAA,cAAoC,6CAAqB,EAAE;IAE3D,OAAO,IAAI,qCAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC;AALD,wCAKC"} \ No newline at end of file diff --git a/build/commonjs/globalApi/extractFacesAndComputeResults.d.ts b/build/commonjs/globalApi/extractFacesAndComputeResults.d.ts deleted file mode 100644 index 960a3d69..00000000 --- a/build/commonjs/globalApi/extractFacesAndComputeResults.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -export declare function extractAllFacesAndComputeResults, TResult>(parentResults: TSource[], input: TNetInput, computeResults: (faces: Array) => Promise, extractedFaces?: Array | null, getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection): Promise; -export declare function extractSingleFaceAndComputeResult, TResult>(parentResult: TSource, input: TNetInput, computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise, extractedFaces?: Array | null, getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection): Promise; diff --git a/build/commonjs/globalApi/extractFacesAndComputeResults.js b/build/commonjs/globalApi/extractFacesAndComputeResults.js deleted file mode 100644 index cacfdd9c..00000000 --- a/build/commonjs/globalApi/extractFacesAndComputeResults.js +++ /dev/null @@ -1,59 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var dom_1 = require("../dom"); -var WithFaceLandmarks_1 = require("../factories/WithFaceLandmarks"); -function extractAllFacesAndComputeResults(parentResults, input, computeResults, extractedFaces, getRectForAlignment) { - if (getRectForAlignment === void 0) { getRectForAlignment = function (_a) { - var alignedRect = _a.alignedRect; - return alignedRect; - }; } - return tslib_1.__awaiter(this, void 0, void 0, function () { - var faceBoxes, faces, _a, _b, results; - return tslib_1.__generator(this, function (_c) { - switch (_c.label) { - case 0: - faceBoxes = parentResults.map(function (parentResult) { - return WithFaceLandmarks_1.isWithFaceLandmarks(parentResult) - ? getRectForAlignment(parentResult) - : parentResult.detection; - }); - _a = extractedFaces; - if (_a) return [3 /*break*/, 5]; - if (!(input instanceof tf.Tensor)) return [3 /*break*/, 2]; - return [4 /*yield*/, dom_1.extractFaceTensors(input, faceBoxes)]; - case 1: - _b = _c.sent(); - return [3 /*break*/, 4]; - case 2: return [4 /*yield*/, dom_1.extractFaces(input, faceBoxes)]; - case 3: - _b = _c.sent(); - _c.label = 4; - case 4: - _a = (_b); - _c.label = 5; - case 5: - faces = _a; - return [4 /*yield*/, computeResults(faces)]; - case 6: - results = _c.sent(); - faces.forEach(function (f) { return f instanceof tf.Tensor && f.dispose(); }); - return [2 /*return*/, results]; - } - }); - }); -} -exports.extractAllFacesAndComputeResults = extractAllFacesAndComputeResults; -function extractSingleFaceAndComputeResult(parentResult, input, computeResult, extractedFaces, getRectForAlignment) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _this = this; - return tslib_1.__generator(this, function (_a) { - return [2 /*return*/, extractAllFacesAndComputeResults([parentResult], input, function (faces) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { - return [2 /*return*/, computeResult(faces[0])]; - }); }); }, extractedFaces, getRectForAlignment)]; - }); - }); -} -exports.extractSingleFaceAndComputeResult = extractSingleFaceAndComputeResult; -//# sourceMappingURL=extractFacesAndComputeResults.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/extractFacesAndComputeResults.js.map b/build/commonjs/globalApi/extractFacesAndComputeResults.js.map deleted file mode 100644 index 58bbe569..00000000 --- a/build/commonjs/globalApi/extractFacesAndComputeResults.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractFacesAndComputeResults.js","sourceRoot":"","sources":["../../../src/globalApi/extractFacesAndComputeResults.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAI5C,8BAA0D;AAE1D,oEAAwF;AAExF,SAAsB,gCAAgC,CACpD,aAAwB,EACxB,KAAgB,EAChB,cAAmF,EACnF,cAA8D,EAC9D,mBAAwH;IAAxH,oCAAA,EAAA,gCAAyF,EAAe;YAAb,4BAAW;QAAO,OAAA,WAAW;IAAX,CAAW;;;;;;oBAElH,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,UAAA,YAAY;wBAC9C,OAAA,uCAAmB,CAAC,YAAY,CAAC;4BAC/B,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC;4BACnC,CAAC,CAAC,YAAY,CAAC,SAAS;oBAF1B,CAE0B,CAC3B,CAAA;oBACqD,KAAA,cAAc,CAAA;4BAAd,wBAAc;yBAClE,CAAA,KAAK,YAAY,EAAE,CAAC,MAAM,CAAA,EAA1B,wBAA0B;oBACtB,qBAAM,wBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAA;;oBAA1C,KAAA,SAA0C,CAAA;;wBAC1C,qBAAM,kBAAY,CAAC,KAAK,EAAE,SAAS,CAAC,EAAA;;oBAApC,KAAA,SAAoC,CAAA;;;oBAH8B,KAAA,IAIvE,CAAA;;;oBAJK,KAAK,KAIV;oBAEe,qBAAM,cAAc,CAAC,KAAK,CAAC,EAAA;;oBAArC,OAAO,GAAG,SAA2B;oBAE3C,KAAK,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,YAAY,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,EAArC,CAAqC,CAAC,CAAA;oBAEzD,sBAAO,OAAO,EAAA;;;;CACf;AAvBD,4EAuBC;AAED,SAAsB,iCAAiC,CACrD,YAAqB,EACrB,KAAgB,EAChB,aAA0E,EAC1E,cAA8D,EAC9D,mBAAsF;;;;YAEtF,sBAAO,gCAAgC,CACrC,CAAC,YAAY,CAAC,EACd,KAAK,EACL,UAAM,KAAK;oBAAI,sBAAA,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAA;yBAAA,EACtC,cAAc,EACd,mBAAmB,CACpB,EAAA;;;CACF;AAdD,8EAcC"} \ No newline at end of file diff --git a/build/commonjs/globalApi/index.d.ts b/build/commonjs/globalApi/index.d.ts deleted file mode 100644 index de0e0c09..00000000 --- a/build/commonjs/globalApi/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from './allFaces'; -export * from './ComposableTask'; -export * from './ComputeFaceDescriptorsTasks'; -export * from './detectFaces'; -export * from './DetectFacesTasks'; -export * from './DetectFaceLandmarksTasks'; -export * from './FaceMatcher'; -export * from './nets'; -export * from './types'; diff --git a/build/commonjs/globalApi/index.js b/build/commonjs/globalApi/index.js deleted file mode 100644 index 83ae0022..00000000 --- a/build/commonjs/globalApi/index.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./allFaces"), exports); -tslib_1.__exportStar(require("./ComposableTask"), exports); -tslib_1.__exportStar(require("./ComputeFaceDescriptorsTasks"), exports); -tslib_1.__exportStar(require("./detectFaces"), exports); -tslib_1.__exportStar(require("./DetectFacesTasks"), exports); -tslib_1.__exportStar(require("./DetectFaceLandmarksTasks"), exports); -tslib_1.__exportStar(require("./FaceMatcher"), exports); -tslib_1.__exportStar(require("./nets"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/index.js.map b/build/commonjs/globalApi/index.js.map deleted file mode 100644 index 4d46a8e2..00000000 --- a/build/commonjs/globalApi/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/globalApi/index.ts"],"names":[],"mappings":";;;AAAA,qDAA0B;AAC1B,2DAAgC;AAChC,wEAA6C;AAC7C,wDAA6B;AAC7B,6DAAkC;AAClC,qEAA0C;AAC1C,wDAA6B;AAC7B,iDAAsB"} \ No newline at end of file diff --git a/build/commonjs/globalApi/nets.d.ts b/build/commonjs/globalApi/nets.d.ts deleted file mode 100644 index b5ec9109..00000000 --- a/build/commonjs/globalApi/nets.d.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { TfjsImageRecognitionBase, TNetInput } from 'tfjs-image-recognition-base'; -import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet'; -import { AgeAndGenderPrediction } from '../ageGenderNet/types'; -import { FaceDetection } from '../classes/FaceDetection'; -import { FaceLandmarks5 } from '../classes/FaceLandmarks5'; -import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; -import { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet'; -import { FaceExpressions } from '../faceExpressionNet/FaceExpressions'; -import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net'; -import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet'; -import { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -import { Mtcnn } from '../mtcnn/Mtcnn'; -import { MtcnnOptions } from '../mtcnn/MtcnnOptions'; -import { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1'; -import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; -import { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector'; -import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; -import { TinyYolov2 } from '../tinyYolov2'; -export declare const nets: { - ssdMobilenetv1: SsdMobilenetv1; - tinyFaceDetector: TinyFaceDetector; - tinyYolov2: TinyYolov2; - mtcnn: Mtcnn; - faceLandmark68Net: FaceLandmark68Net; - faceLandmark68TinyNet: FaceLandmark68TinyNet; - faceRecognitionNet: FaceRecognitionNet; - faceExpressionNet: FaceExpressionNet; - ageGenderNet: AgeGenderNet; -}; -/** - * Attempts to detect all faces in an image using SSD Mobilenetv1 Network. - * - * @param input The input image. - * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters). - * @returns Bounding box of each face with score. - */ -export declare const ssdMobilenetv1: (input: TNetInput, options: SsdMobilenetv1Options) => Promise; -/** - * Attempts to detect all faces in an image using the Tiny Face Detector. - * - * @param input The input image. - * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters). - * @returns Bounding box of each face with score. - */ -export declare const tinyFaceDetector: (input: TNetInput, options: TinyFaceDetectorOptions) => Promise; -/** - * Attempts to detect all faces in an image using the Tiny Yolov2 Network. - * - * @param input The input image. - * @param options (optional, default: see TinyYolov2Options constructor for default parameters). - * @returns Bounding box of each face with score. - */ -export declare const tinyYolov2: (input: TNetInput, options: TfjsImageRecognitionBase.ITinyYolov2Options) => Promise; -/** - * Attempts to detect all faces in an image and the 5 point face landmarks - * of each detected face using the MTCNN Network. - * - * @param input The input image. - * @param options (optional, default: see MtcnnOptions constructor for default parameters). - * @returns Bounding box of each face with score and 5 point face landmarks. - */ -export declare const mtcnn: (input: TNetInput, options: MtcnnOptions) => Promise[]>; -/** - * Detects the 68 point face landmark positions of the face shown in an image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns 68 point face landmarks or array thereof in case of batch input. - */ -export declare const detectFaceLandmarks: (input: TNetInput) => Promise; -/** - * Detects the 68 point face landmark positions of the face shown in an image - * using a tinier version of the 68 point face landmark model, which is slightly - * faster at inference, but also slightly less accurate. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns 68 point face landmarks or array thereof in case of batch input. - */ -export declare const detectFaceLandmarksTiny: (input: TNetInput) => Promise; -/** - * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image, - * which uniquely represents the features of that persons face. The computed face descriptor can - * be used to measure the similarity between faces, by computing the euclidean distance of two - * face descriptors. - * - * @param inputs The face image extracted from the aligned bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Face descriptor with 128 entries or array thereof in case of batch input. - */ -export declare const computeFaceDescriptor: (input: TNetInput) => Promise; -/** - * Recognizes the facial expressions from a face image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input. - */ -export declare const recognizeFaceExpressions: (input: TNetInput) => Promise; -/** - * Predicts age and gender from a face image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Predictions with age, gender and gender probability or array thereof in case of batch input. - */ -export declare const predictAgeAndGender: (input: TNetInput) => Promise; -export declare const loadSsdMobilenetv1Model: (url: string) => Promise; -export declare const loadTinyFaceDetectorModel: (url: string) => Promise; -export declare const loadMtcnnModel: (url: string) => Promise; -export declare const loadTinyYolov2Model: (url: string) => Promise; -export declare const loadFaceLandmarkModel: (url: string) => Promise; -export declare const loadFaceLandmarkTinyModel: (url: string) => Promise; -export declare const loadFaceRecognitionModel: (url: string) => Promise; -export declare const loadFaceExpressionModel: (url: string) => Promise; -export declare const loadAgeGenderModel: (url: string) => Promise; -export declare const loadFaceDetectionModel: (url: string) => Promise; -export declare const locateFaces: (input: TNetInput, options: SsdMobilenetv1Options) => Promise; -export declare const detectLandmarks: (input: TNetInput) => Promise; diff --git a/build/commonjs/globalApi/nets.js b/build/commonjs/globalApi/nets.js deleted file mode 100644 index 3680aa73..00000000 --- a/build/commonjs/globalApi/nets.js +++ /dev/null @@ -1,132 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var AgeGenderNet_1 = require("../ageGenderNet/AgeGenderNet"); -var FaceExpressionNet_1 = require("../faceExpressionNet/FaceExpressionNet"); -var FaceLandmark68Net_1 = require("../faceLandmarkNet/FaceLandmark68Net"); -var FaceLandmark68TinyNet_1 = require("../faceLandmarkNet/FaceLandmark68TinyNet"); -var FaceRecognitionNet_1 = require("../faceRecognitionNet/FaceRecognitionNet"); -var Mtcnn_1 = require("../mtcnn/Mtcnn"); -var SsdMobilenetv1_1 = require("../ssdMobilenetv1/SsdMobilenetv1"); -var TinyFaceDetector_1 = require("../tinyFaceDetector/TinyFaceDetector"); -var tinyYolov2_1 = require("../tinyYolov2"); -exports.nets = { - ssdMobilenetv1: new SsdMobilenetv1_1.SsdMobilenetv1(), - tinyFaceDetector: new TinyFaceDetector_1.TinyFaceDetector(), - tinyYolov2: new tinyYolov2_1.TinyYolov2(), - mtcnn: new Mtcnn_1.Mtcnn(), - faceLandmark68Net: new FaceLandmark68Net_1.FaceLandmark68Net(), - faceLandmark68TinyNet: new FaceLandmark68TinyNet_1.FaceLandmark68TinyNet(), - faceRecognitionNet: new FaceRecognitionNet_1.FaceRecognitionNet(), - faceExpressionNet: new FaceExpressionNet_1.FaceExpressionNet(), - ageGenderNet: new AgeGenderNet_1.AgeGenderNet() -}; -/** - * Attempts to detect all faces in an image using SSD Mobilenetv1 Network. - * - * @param input The input image. - * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters). - * @returns Bounding box of each face with score. - */ -exports.ssdMobilenetv1 = function (input, options) { - return exports.nets.ssdMobilenetv1.locateFaces(input, options); -}; -/** - * Attempts to detect all faces in an image using the Tiny Face Detector. - * - * @param input The input image. - * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters). - * @returns Bounding box of each face with score. - */ -exports.tinyFaceDetector = function (input, options) { - return exports.nets.tinyFaceDetector.locateFaces(input, options); -}; -/** - * Attempts to detect all faces in an image using the Tiny Yolov2 Network. - * - * @param input The input image. - * @param options (optional, default: see TinyYolov2Options constructor for default parameters). - * @returns Bounding box of each face with score. - */ -exports.tinyYolov2 = function (input, options) { - return exports.nets.tinyYolov2.locateFaces(input, options); -}; -/** - * Attempts to detect all faces in an image and the 5 point face landmarks - * of each detected face using the MTCNN Network. - * - * @param input The input image. - * @param options (optional, default: see MtcnnOptions constructor for default parameters). - * @returns Bounding box of each face with score and 5 point face landmarks. - */ -exports.mtcnn = function (input, options) { - return exports.nets.mtcnn.forward(input, options); -}; -/** - * Detects the 68 point face landmark positions of the face shown in an image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns 68 point face landmarks or array thereof in case of batch input. - */ -exports.detectFaceLandmarks = function (input) { - return exports.nets.faceLandmark68Net.detectLandmarks(input); -}; -/** - * Detects the 68 point face landmark positions of the face shown in an image - * using a tinier version of the 68 point face landmark model, which is slightly - * faster at inference, but also slightly less accurate. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns 68 point face landmarks or array thereof in case of batch input. - */ -exports.detectFaceLandmarksTiny = function (input) { - return exports.nets.faceLandmark68TinyNet.detectLandmarks(input); -}; -/** - * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image, - * which uniquely represents the features of that persons face. The computed face descriptor can - * be used to measure the similarity between faces, by computing the euclidean distance of two - * face descriptors. - * - * @param inputs The face image extracted from the aligned bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Face descriptor with 128 entries or array thereof in case of batch input. - */ -exports.computeFaceDescriptor = function (input) { - return exports.nets.faceRecognitionNet.computeFaceDescriptor(input); -}; -/** - * Recognizes the facial expressions from a face image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input. - */ -exports.recognizeFaceExpressions = function (input) { - return exports.nets.faceExpressionNet.predictExpressions(input); -}; -/** - * Predicts age and gender from a face image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Predictions with age, gender and gender probability or array thereof in case of batch input. - */ -exports.predictAgeAndGender = function (input) { - return exports.nets.ageGenderNet.predictAgeAndGender(input); -}; -exports.loadSsdMobilenetv1Model = function (url) { return exports.nets.ssdMobilenetv1.load(url); }; -exports.loadTinyFaceDetectorModel = function (url) { return exports.nets.tinyFaceDetector.load(url); }; -exports.loadMtcnnModel = function (url) { return exports.nets.mtcnn.load(url); }; -exports.loadTinyYolov2Model = function (url) { return exports.nets.tinyYolov2.load(url); }; -exports.loadFaceLandmarkModel = function (url) { return exports.nets.faceLandmark68Net.load(url); }; -exports.loadFaceLandmarkTinyModel = function (url) { return exports.nets.faceLandmark68TinyNet.load(url); }; -exports.loadFaceRecognitionModel = function (url) { return exports.nets.faceRecognitionNet.load(url); }; -exports.loadFaceExpressionModel = function (url) { return exports.nets.faceExpressionNet.load(url); }; -exports.loadAgeGenderModel = function (url) { return exports.nets.ageGenderNet.load(url); }; -// backward compatibility -exports.loadFaceDetectionModel = exports.loadSsdMobilenetv1Model; -exports.locateFaces = exports.ssdMobilenetv1; -exports.detectLandmarks = exports.detectFaceLandmarks; -//# sourceMappingURL=nets.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/nets.js.map b/build/commonjs/globalApi/nets.js.map deleted file mode 100644 index 7d6869b8..00000000 --- a/build/commonjs/globalApi/nets.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"nets.js","sourceRoot":"","sources":["../../../src/globalApi/nets.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/globalApi/types.d.ts b/build/commonjs/globalApi/types.d.ts deleted file mode 100644 index 9558c95e..00000000 --- a/build/commonjs/globalApi/types.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { TfjsImageRecognitionBase, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { MtcnnOptions } from '../mtcnn/MtcnnOptions'; -import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; -import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; -export declare type FaceDetectionOptions = TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TfjsImageRecognitionBase.TinyYolov2Options; -export declare type FaceDetectionFunction = (input: TNetInput) => Promise; diff --git a/build/commonjs/globalApi/types.js b/build/commonjs/globalApi/types.js deleted file mode 100644 index 11e638d1..00000000 --- a/build/commonjs/globalApi/types.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/commonjs/globalApi/types.js.map b/build/commonjs/globalApi/types.js.map deleted file mode 100644 index e079214c..00000000 --- a/build/commonjs/globalApi/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/globalApi/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/commonjs/index.d.ts b/build/commonjs/index.d.ts deleted file mode 100644 index 6982d2d7..00000000 --- a/build/commonjs/index.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { draw as drawBase } from 'tfjs-image-recognition-base'; -import * as drawExtended from './draw'; -export { tf }; -export * from 'tfjs-image-recognition-base'; -export * from './ageGenderNet/index'; -declare const draw: { - drawContour(ctx: CanvasRenderingContext2D, points: import("tfjs-image-recognition-base").Point[], isClosed?: boolean): void; - drawDetections(canvasArg: string | HTMLCanvasElement, detections: import("./classes").FaceDetection | import("tfjs-image-recognition-base").IRect | { - detection: import("./classes").FaceDetection; - } | import("tfjs-image-recognition-base").IBoundingBox | drawExtended.TDrawDetectionsInput[]): void; - drawFaceExpressions(canvasArg: string | HTMLCanvasElement, faceExpressions: import("./faceExpressionNet").FaceExpressions | { - expressions: import("./faceExpressionNet").FaceExpressions; - } | drawExtended.DrawFaceExpressionsInput[], minConfidence?: number, textFieldAnchor?: import("tfjs-image-recognition-base").IPoint | undefined): void; - drawFaceLandmarks(canvasArg: string | HTMLCanvasElement, faceLandmarks: import("./classes").FaceLandmarks | import("./factories").WithFaceLandmarks<{ - detection: import("./classes").FaceDetection; - }, import("./classes").FaceLandmarks68> | drawExtended.DrawFaceLandmarksInput[]): void; - DrawFaceLandmarksOptions: typeof drawExtended.DrawFaceLandmarksOptions; - DrawFaceLandmarks: typeof drawExtended.DrawFaceLandmarks; - DrawBoxOptions: typeof drawBase.DrawBoxOptions; - DrawBox: typeof drawBase.DrawBox; - AnchorPosition: typeof drawBase.AnchorPosition; - DrawTextFieldOptions: typeof drawBase.DrawTextFieldOptions; - DrawTextField: typeof drawBase.DrawTextField; -}; -export { draw }; -export * from './classes/index'; -export * from './dom/index'; -export * from './faceExpressionNet/index'; -export * from './faceLandmarkNet/index'; -export * from './faceRecognitionNet/index'; -export * from './factories/index'; -export * from './globalApi/index'; -export * from './mtcnn/index'; -export * from './ssdMobilenetv1/index'; -export * from './tinyFaceDetector/index'; -export * from './tinyYolov2/index'; -export * from './euclideanDistance'; -export * from './resizeResults'; diff --git a/build/commonjs/index.js b/build/commonjs/index.js deleted file mode 100644 index 6b9d6365..00000000 --- a/build/commonjs/index.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -exports.tf = tf; -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var drawExtended = require("./draw"); -tslib_1.__exportStar(require("tfjs-image-recognition-base"), exports); -tslib_1.__exportStar(require("./ageGenderNet/index"), exports); -var draw = tslib_1.__assign(tslib_1.__assign({}, tfjs_image_recognition_base_1.draw), drawExtended); -exports.draw = draw; -tslib_1.__exportStar(require("./classes/index"), exports); -tslib_1.__exportStar(require("./dom/index"), exports); -tslib_1.__exportStar(require("./faceExpressionNet/index"), exports); -tslib_1.__exportStar(require("./faceLandmarkNet/index"), exports); -tslib_1.__exportStar(require("./faceRecognitionNet/index"), exports); -tslib_1.__exportStar(require("./factories/index"), exports); -tslib_1.__exportStar(require("./globalApi/index"), exports); -tslib_1.__exportStar(require("./mtcnn/index"), exports); -tslib_1.__exportStar(require("./ssdMobilenetv1/index"), exports); -tslib_1.__exportStar(require("./tinyFaceDetector/index"), exports); -tslib_1.__exportStar(require("./tinyYolov2/index"), exports); -tslib_1.__exportStar(require("./euclideanDistance"), exports); -tslib_1.__exportStar(require("./resizeResults"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/index.js.map b/build/commonjs/index.js.map deleted file mode 100644 index e11a8012..00000000 --- a/build/commonjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAM1C,gBAAE;AALJ,2EAA+D;AAE/D,qCAAuC;AAMvC,sEAA4C;AAE5C,+DAAqC;AACrC,IAAM,IAAI,yCAAO,kCAAQ,GAAK,YAAY,CAAE,CAAA;AACnC,oBAAI;AAEb,0DAAgC;AAChC,sDAA2B;AAC3B,oEAA0C;AAC1C,kEAAwC;AACxC,qEAA2C;AAC3C,4DAAkC;AAClC,4DAAkC;AAClC,wDAA8B;AAC9B,iEAAuC;AACvC,mEAAyC;AACzC,6DAAmC;AAEnC,8DAAoC;AACpC,0DAAgC"} \ No newline at end of file diff --git a/build/commonjs/minBbox.d.ts b/build/commonjs/minBbox.d.ts deleted file mode 100644 index f4de74c0..00000000 --- a/build/commonjs/minBbox.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { BoundingBox, IPoint } from 'tfjs-image-recognition-base'; -export declare function minBbox(pts: IPoint[]): BoundingBox; diff --git a/build/commonjs/minBbox.js b/build/commonjs/minBbox.js deleted file mode 100644 index d82dd73d..00000000 --- a/build/commonjs/minBbox.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function minBbox(pts) { - var xs = pts.map(function (pt) { return pt.x; }); - var ys = pts.map(function (pt) { return pt.y; }); - var minX = xs.reduce(function (min, x) { return x < min ? x : min; }, Infinity); - var minY = ys.reduce(function (min, y) { return y < min ? y : min; }, Infinity); - var maxX = xs.reduce(function (max, x) { return max < x ? x : max; }, 0); - var maxY = ys.reduce(function (max, y) { return max < y ? y : max; }, 0); - return new tfjs_image_recognition_base_1.BoundingBox(minX, minY, maxX, maxY); -} -exports.minBbox = minBbox; -//# sourceMappingURL=minBbox.js.map \ No newline at end of file diff --git a/build/commonjs/minBbox.js.map b/build/commonjs/minBbox.js.map deleted file mode 100644 index 48407161..00000000 --- a/build/commonjs/minBbox.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"minBbox.js","sourceRoot":"","sources":["../../src/minBbox.ts"],"names":[],"mappings":";;AAAA,2EAAkE;AAElE,SAAgB,OAAO,CAAC,GAAa;IACnC,IAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,CAAC,EAAJ,CAAI,CAAC,CAAA;IAC9B,IAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,CAAC,EAAJ,CAAI,CAAC,CAAA;IAC9B,IAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAjB,CAAiB,EAAE,QAAQ,CAAC,CAAA;IAC/D,IAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAjB,CAAiB,EAAE,QAAQ,CAAC,CAAA;IAC/D,IAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAjB,CAAiB,EAAE,CAAC,CAAC,CAAA;IACxD,IAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAjB,CAAiB,EAAE,CAAC,CAAC,CAAA;IAExD,OAAO,IAAI,yCAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAChD,CAAC;AATD,0BASC"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/Mtcnn.d.ts b/build/commonjs/mtcnn/Mtcnn.d.ts deleted file mode 100644 index 35384f72..00000000 --- a/build/commonjs/mtcnn/Mtcnn.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base'; -import { IMtcnnOptions } from './MtcnnOptions'; -import { MtcnnResult, NetParams } from './types'; -export declare class Mtcnn extends NeuralNetwork { - constructor(); - forwardInput(input: NetInput, forwardParams?: IMtcnnOptions): Promise<{ - results: MtcnnResult[]; - stats: any; - }>; - forward(input: TNetInput, forwardParams?: IMtcnnOptions): Promise; - forwardWithStats(input: TNetInput, forwardParams?: IMtcnnOptions): Promise<{ - results: MtcnnResult[]; - stats: any; - }>; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/commonjs/mtcnn/Mtcnn.js b/build/commonjs/mtcnn/Mtcnn.js deleted file mode 100644 index d94c270e..00000000 --- a/build/commonjs/mtcnn/Mtcnn.js +++ /dev/null @@ -1,137 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceDetection_1 = require("../classes/FaceDetection"); -var FaceLandmarks5_1 = require("../classes/FaceLandmarks5"); -var factories_1 = require("../factories"); -var bgrToRgbTensor_1 = require("./bgrToRgbTensor"); -var config_1 = require("./config"); -var extractParams_1 = require("./extractParams"); -var extractParamsFromWeigthMap_1 = require("./extractParamsFromWeigthMap"); -var getSizesForScale_1 = require("./getSizesForScale"); -var MtcnnOptions_1 = require("./MtcnnOptions"); -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) { - tslib_1.__extends(Mtcnn, _super); - function Mtcnn() { - return _super.call(this, 'Mtcnn') || this; - } - Mtcnn.prototype.forwardInput = function (input, forwardParams) { - if (forwardParams === void 0) { forwardParams = {}; } - return tslib_1.__awaiter(this, void 0, void 0, function () { - var params, inputCanvas, stats, tsTotal, imgTensor, onReturn, _a, height, width, _b, minFaceSize, scaleFactor, maxNumScales, scoreThresholds, scaleSteps, scales, ts, out1, out2, out3, results; - return tslib_1.__generator(this, function (_c) { - switch (_c.label) { - case 0: - params = this.params; - if (!params) { - throw new Error('Mtcnn - load model before inference'); - } - inputCanvas = input.canvases[0]; - if (!inputCanvas) { - throw new Error('Mtcnn - inputCanvas is not defined, note that passing tensors into Mtcnn.forwardInput is not supported yet.'); - } - stats = {}; - tsTotal = Date.now(); - imgTensor = tf.tidy(function () { - return bgrToRgbTensor_1.bgrToRgbTensor(tf.expandDims(tf.browser.fromPixels(inputCanvas)).toFloat()); - }); - onReturn = function (results) { - // dispose tensors on return - imgTensor.dispose(); - stats.total = Date.now() - tsTotal; - return results; - }; - _a = imgTensor.shape.slice(1), height = _a[0], width = _a[1]; - _b = new MtcnnOptions_1.MtcnnOptions(forwardParams), minFaceSize = _b.minFaceSize, scaleFactor = _b.scaleFactor, maxNumScales = _b.maxNumScales, scoreThresholds = _b.scoreThresholds, scaleSteps = _b.scaleSteps; - scales = (scaleSteps || pyramidDown_1.pyramidDown(minFaceSize, scaleFactor, [height, width])) - .filter(function (scale) { - var sizes = getSizesForScale_1.getSizesForScale(scale, [height, width]); - return Math.min(sizes.width, sizes.height) > config_1.CELL_SIZE; - }) - .slice(0, maxNumScales); - stats.scales = scales; - stats.pyramid = scales.map(function (scale) { return getSizesForScale_1.getSizesForScale(scale, [height, width]); }); - ts = Date.now(); - return [4 /*yield*/, stage1_1.stage1(imgTensor, scales, scoreThresholds[0], params.pnet, stats)]; - case 1: - out1 = _c.sent(); - stats.total_stage1 = Date.now() - ts; - if (!out1.boxes.length) { - return [2 /*return*/, onReturn({ results: [], stats: stats })]; - } - stats.stage2_numInputBoxes = out1.boxes.length; - // using the inputCanvas to extract and resize the image patches, since it is faster - // than doing this on the gpu - ts = Date.now(); - return [4 /*yield*/, stage2_1.stage2(inputCanvas, out1.boxes, scoreThresholds[1], params.rnet, stats)]; - case 2: - out2 = _c.sent(); - stats.total_stage2 = Date.now() - ts; - if (!out2.boxes.length) { - return [2 /*return*/, onReturn({ results: [], stats: stats })]; - } - stats.stage3_numInputBoxes = out2.boxes.length; - ts = Date.now(); - return [4 /*yield*/, stage3_1.stage3(inputCanvas, out2.boxes, scoreThresholds[2], params.onet, stats)]; - case 3: - out3 = _c.sent(); - stats.total_stage3 = Date.now() - ts; - results = out3.boxes.map(function (box, idx) { return factories_1.extendWithFaceLandmarks(factories_1.extendWithFaceDetection({}, new FaceDetection_1.FaceDetection(out3.scores[idx], new tfjs_image_recognition_base_1.Rect(box.left / width, box.top / height, box.width / width, box.height / height), { - height: height, - width: width - })), new FaceLandmarks5_1.FaceLandmarks5(out3.points[idx].map(function (pt) { return pt.sub(new tfjs_image_recognition_base_1.Point(box.left, box.top)).div(new tfjs_image_recognition_base_1.Point(box.width, box.height)); }), { width: box.width, height: box.height })); }); - return [2 /*return*/, onReturn({ results: results, stats: stats })]; - } - }); - }); - }; - Mtcnn.prototype.forward = function (input, forwardParams) { - if (forwardParams === void 0) { forwardParams = {}; } - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: return [4 /*yield*/, _a.apply(this, [_b.sent(), - forwardParams])]; - case 2: return [2 /*return*/, (_b.sent()).results]; - } - }); - }); - }; - Mtcnn.prototype.forwardWithStats = function (input, forwardParams) { - if (forwardParams === void 0) { forwardParams = {}; } - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent(), - forwardParams])]; - } - }); - }); - }; - Mtcnn.prototype.getDefaultModelName = function () { - return 'mtcnn_model'; - }; - Mtcnn.prototype.extractParamsFromWeigthMap = function (weightMap) { - return extractParamsFromWeigthMap_1.extractParamsFromWeigthMap(weightMap); - }; - Mtcnn.prototype.extractParams = function (weights) { - return extractParams_1.extractParams(weights); - }; - return Mtcnn; -}(tfjs_image_recognition_base_1.NeuralNetwork)); -exports.Mtcnn = Mtcnn; -//# sourceMappingURL=Mtcnn.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/Mtcnn.js.map b/build/commonjs/mtcnn/Mtcnn.js.map deleted file mode 100644 index 2f4b6f00..00000000 --- a/build/commonjs/mtcnn/Mtcnn.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Mtcnn.js","sourceRoot":"","sources":["../../../src/mtcnn/Mtcnn.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/MtcnnBox.d.ts b/build/commonjs/mtcnn/MtcnnBox.d.ts deleted file mode 100644 index e61cf2f0..00000000 --- a/build/commonjs/mtcnn/MtcnnBox.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Box } from 'tfjs-image-recognition-base'; -export declare class MtcnnBox extends Box { - constructor(left: number, top: number, right: number, bottom: number); -} diff --git a/build/commonjs/mtcnn/MtcnnBox.js b/build/commonjs/mtcnn/MtcnnBox.js deleted file mode 100644 index 1759d29b..00000000 --- a/build/commonjs/mtcnn/MtcnnBox.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var MtcnnBox = /** @class */ (function (_super) { - tslib_1.__extends(MtcnnBox, _super); - function MtcnnBox(left, top, right, bottom) { - return _super.call(this, { left: left, top: top, right: right, bottom: bottom }, true) || this; - } - return MtcnnBox; -}(tfjs_image_recognition_base_1.Box)); -exports.MtcnnBox = MtcnnBox; -//# sourceMappingURL=MtcnnBox.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/MtcnnBox.js.map b/build/commonjs/mtcnn/MtcnnBox.js.map deleted file mode 100644 index 68404922..00000000 --- a/build/commonjs/mtcnn/MtcnnBox.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MtcnnBox.js","sourceRoot":"","sources":["../../../src/mtcnn/MtcnnBox.ts"],"names":[],"mappings":";;;AAAA,2EAAkD;AAElD;IAA8B,oCAAa;IACzC,kBAAY,IAAY,EAAE,GAAW,EAAE,KAAa,EAAE,MAAc;eAClE,kBAAM,EAAE,IAAI,MAAA,EAAE,GAAG,KAAA,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,EAAE,IAAI,CAAC;IAC3C,CAAC;IACH,eAAC;AAAD,CAAC,AAJD,CAA8B,iCAAG,GAIhC;AAJY,4BAAQ"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/MtcnnOptions.d.ts b/build/commonjs/mtcnn/MtcnnOptions.d.ts deleted file mode 100644 index 140195e1..00000000 --- a/build/commonjs/mtcnn/MtcnnOptions.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -export interface IMtcnnOptions { - minFaceSize?: number; - scaleFactor?: number; - maxNumScales?: number; - scoreThresholds?: number[]; - scaleSteps?: number[]; -} -export declare class MtcnnOptions { - protected _name: string; - private _minFaceSize; - private _scaleFactor; - private _maxNumScales; - private _scoreThresholds; - private _scaleSteps; - constructor({ minFaceSize, scaleFactor, maxNumScales, scoreThresholds, scaleSteps }?: IMtcnnOptions); - readonly minFaceSize: number; - readonly scaleFactor: number; - readonly maxNumScales: number; - readonly scoreThresholds: number[]; - readonly scaleSteps: number[] | undefined; -} diff --git a/build/commonjs/mtcnn/MtcnnOptions.js b/build/commonjs/mtcnn/MtcnnOptions.js deleted file mode 100644 index 9581a200..00000000 --- a/build/commonjs/mtcnn/MtcnnOptions.js +++ /dev/null @@ -1,59 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var MtcnnOptions = /** @class */ (function () { - function MtcnnOptions(_a) { - var _b = _a === void 0 ? {} : _a, minFaceSize = _b.minFaceSize, scaleFactor = _b.scaleFactor, maxNumScales = _b.maxNumScales, scoreThresholds = _b.scoreThresholds, scaleSteps = _b.scaleSteps; - this._name = 'MtcnnOptions'; - this._minFaceSize = minFaceSize || 20; - this._scaleFactor = scaleFactor || 0.709; - this._maxNumScales = maxNumScales || 10; - this._scoreThresholds = scoreThresholds || [0.6, 0.7, 0.7]; - this._scaleSteps = scaleSteps; - if (typeof this._minFaceSize !== 'number' || this._minFaceSize < 0) { - throw new Error(this._name + " - expected minFaceSize to be a number > 0"); - } - if (typeof this._scaleFactor !== 'number' || this._scaleFactor <= 0 || this._scaleFactor >= 1) { - throw new Error(this._name + " - expected scaleFactor to be a number between 0 and 1"); - } - if (typeof this._maxNumScales !== 'number' || this._maxNumScales < 0) { - throw new Error(this._name + " - expected maxNumScales to be a number > 0"); - } - if (!Array.isArray(this._scoreThresholds) - || this._scoreThresholds.length !== 3 - || this._scoreThresholds.some(function (th) { return typeof th !== 'number'; })) { - throw new Error(this._name + " - expected scoreThresholds to be an array of numbers of length 3"); - } - if (this._scaleSteps - && (!Array.isArray(this._scaleSteps) || this._scaleSteps.some(function (th) { return typeof th !== 'number'; }))) { - throw new Error(this._name + " - expected scaleSteps to be an array of numbers"); - } - } - Object.defineProperty(MtcnnOptions.prototype, "minFaceSize", { - get: function () { return this._minFaceSize; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MtcnnOptions.prototype, "scaleFactor", { - get: function () { return this._scaleFactor; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MtcnnOptions.prototype, "maxNumScales", { - get: function () { return this._maxNumScales; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MtcnnOptions.prototype, "scoreThresholds", { - get: function () { return this._scoreThresholds; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MtcnnOptions.prototype, "scaleSteps", { - get: function () { return this._scaleSteps; }, - enumerable: true, - configurable: true - }); - return MtcnnOptions; -}()); -exports.MtcnnOptions = MtcnnOptions; -//# sourceMappingURL=MtcnnOptions.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/MtcnnOptions.js.map b/build/commonjs/mtcnn/MtcnnOptions.js.map deleted file mode 100644 index d3f14f41..00000000 --- a/build/commonjs/mtcnn/MtcnnOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MtcnnOptions.js","sourceRoot":"","sources":["../../../src/mtcnn/MtcnnOptions.ts"],"names":[],"mappings":";;AAQA;IASE,sBAAY,EAA2F;YAA3F,4BAA2F,EAAzF,4BAAW,EAAE,4BAAW,EAAE,8BAAY,EAAE,oCAAe,EAAE,0BAAU;QARvE,UAAK,GAAW,cAAc,CAAA;QAStC,IAAI,CAAC,YAAY,GAAG,WAAW,IAAI,EAAE,CAAA;QACrC,IAAI,CAAC,YAAY,GAAG,WAAW,IAAI,KAAK,CAAA;QACxC,IAAI,CAAC,aAAa,GAAG,YAAY,IAAI,EAAE,CAAA;QACvC,IAAI,CAAC,gBAAgB,GAAG,eAAe,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QAC1D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;QAE7B,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;YAClE,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,+CAA4C,CAAC,CAAA;SAC3E;QAED,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE;YAC7F,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,2DAAwD,CAAC,CAAA;SACvF;QAED,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;YACpE,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,gDAA6C,CAAC,CAAA;SAC5E;QAED,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;eAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;eAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,OAAO,EAAE,KAAK,QAAQ,EAAtB,CAAsB,CAAC,EAC7D;YACA,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,sEAAmE,CAAC,CAAA;SAClG;QAED,IACE,IAAI,CAAC,WAAW;eACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,OAAO,EAAE,KAAK,QAAQ,EAAtB,CAAsB,CAAC,CAAC,EAC9F;YACA,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,qDAAkD,CAAC,CAAA;SACjF;IACH,CAAC;IAED,sBAAI,qCAAW;aAAf,cAA4B,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;;;OAAA;IACtD,sBAAI,qCAAW;aAAf,cAA4B,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;;;OAAA;IACtD,sBAAI,sCAAY;aAAhB,cAA6B,OAAO,IAAI,CAAC,aAAa,CAAA,CAAC,CAAC;;;OAAA;IACxD,sBAAI,yCAAe;aAAnB,cAAkC,OAAO,IAAI,CAAC,gBAAgB,CAAA,CAAC,CAAC;;;OAAA;IAChE,sBAAI,oCAAU;aAAd,cAAyC,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;;;OAAA;IACpE,mBAAC;AAAD,CAAC,AAjDD,IAiDC;AAjDY,oCAAY"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/ONet.d.ts b/build/commonjs/mtcnn/ONet.d.ts deleted file mode 100644 index dfc7f113..00000000 --- a/build/commonjs/mtcnn/ONet.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { ONetParams } from './types'; -export declare function ONet(x: tf.Tensor4D, params: ONetParams): { - scores: tf.Tensor1D; - regions: tf.Tensor2D; - points: tf.Tensor2D; -}; diff --git a/build/commonjs/mtcnn/ONet.js b/build/commonjs/mtcnn/ONet.js deleted file mode 100644 index a8ae44c7..00000000 --- a/build/commonjs/mtcnn/ONet.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var fullyConnectedLayer_1 = require("../common/fullyConnectedLayer"); -var prelu_1 = require("./prelu"); -var sharedLayers_1 = require("./sharedLayers"); -function ONet(x, params) { - return tf.tidy(function () { - var out = sharedLayers_1.sharedLayer(x, params); - out = tf.maxPool(out, [2, 2], [2, 2], 'same'); - out = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.convLayer(out, params.conv4, 'valid'); - out = prelu_1.prelu(out, params.prelu4_alpha); - var vectorized = tf.reshape(out, [out.shape[0], params.fc1.weights.shape[0]]); - var fc1 = fullyConnectedLayer_1.fullyConnectedLayer(vectorized, params.fc1); - var prelu5 = prelu_1.prelu(fc1, params.prelu5_alpha); - var fc2_1 = fullyConnectedLayer_1.fullyConnectedLayer(prelu5, params.fc2_1); - var max = tf.expandDims(tf.max(fc2_1, 1), 1); - var prob = tf.softmax(tf.sub(fc2_1, max), 1); - var regions = fullyConnectedLayer_1.fullyConnectedLayer(prelu5, params.fc2_2); - var points = fullyConnectedLayer_1.fullyConnectedLayer(prelu5, params.fc2_3); - var scores = tf.unstack(prob, 1)[1]; - return { scores: scores, regions: regions, points: points }; - }); -} -exports.ONet = ONet; -//# sourceMappingURL=ONet.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/ONet.js.map b/build/commonjs/mtcnn/ONet.js.map deleted file mode 100644 index 7d5b6ccb..00000000 --- a/build/commonjs/mtcnn/ONet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ONet.js","sourceRoot":"","sources":["../../../src/mtcnn/ONet.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAC5C,2EAAuE;AAEvE,qEAAoE;AACpE,iCAAgC;AAChC,+CAA6C;AAG7C,SAAgB,IAAI,CAAC,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,sDAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACpE,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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/PNet.d.ts b/build/commonjs/mtcnn/PNet.d.ts deleted file mode 100644 index 74e2c841..00000000 --- a/build/commonjs/mtcnn/PNet.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { PNetParams } from './types'; -export declare function PNet(x: tf.Tensor4D, params: PNetParams): { - prob: tf.Tensor4D; - regions: tf.Tensor4D; -}; diff --git a/build/commonjs/mtcnn/PNet.js b/build/commonjs/mtcnn/PNet.js deleted file mode 100644 index ffd40a2e..00000000 --- a/build/commonjs/mtcnn/PNet.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var sharedLayers_1 = require("./sharedLayers"); -function PNet(x, params) { - return tf.tidy(function () { - var out = sharedLayers_1.sharedLayer(x, params, true); - var conv = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.convLayer(out, params.conv4_1, 'valid'); - var max = tf.expandDims(tf.max(conv, 3), 3); - var prob = tf.softmax(tf.sub(conv, max), 3); - var regions = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.convLayer(out, params.conv4_2, 'valid'); - return { prob: prob, regions: regions }; - }); -} -exports.PNet = PNet; -//# sourceMappingURL=PNet.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/PNet.js.map b/build/commonjs/mtcnn/PNet.js.map deleted file mode 100644 index 9aa12658..00000000 --- a/build/commonjs/mtcnn/PNet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PNet.js","sourceRoot":"","sources":["../../../src/mtcnn/PNet.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAC5C,2EAAuE;AAEvE,+CAA6C;AAG7C,SAAgB,IAAI,CAAC,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,sDAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC7E,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,sDAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAEhF,OAAO,EAAE,IAAI,MAAA,EAAE,OAAO,SAAA,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;AACJ,CAAC;AAXD,oBAWC"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/RNet.d.ts b/build/commonjs/mtcnn/RNet.d.ts deleted file mode 100644 index c6883ff7..00000000 --- a/build/commonjs/mtcnn/RNet.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { RNetParams } from './types'; -export declare function RNet(x: tf.Tensor4D, params: RNetParams): { - scores: tf.Tensor1D; - regions: tf.Tensor2D; -}; diff --git a/build/commonjs/mtcnn/RNet.js b/build/commonjs/mtcnn/RNet.js deleted file mode 100644 index e00a33e5..00000000 --- a/build/commonjs/mtcnn/RNet.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -var fullyConnectedLayer_1 = require("../common/fullyConnectedLayer"); -var prelu_1 = require("./prelu"); -var sharedLayers_1 = require("./sharedLayers"); -function RNet(x, params) { - return tf.tidy(function () { - var convOut = sharedLayers_1.sharedLayer(x, params); - var vectorized = tf.reshape(convOut, [convOut.shape[0], params.fc1.weights.shape[0]]); - var fc1 = fullyConnectedLayer_1.fullyConnectedLayer(vectorized, params.fc1); - var prelu4 = prelu_1.prelu(fc1, params.prelu4_alpha); - var fc2_1 = fullyConnectedLayer_1.fullyConnectedLayer(prelu4, params.fc2_1); - var max = tf.expandDims(tf.max(fc2_1, 1), 1); - var prob = tf.softmax(tf.sub(fc2_1, max), 1); - var regions = fullyConnectedLayer_1.fullyConnectedLayer(prelu4, params.fc2_2); - var scores = tf.unstack(prob, 1)[1]; - return { scores: scores, regions: regions }; - }); -} -exports.RNet = RNet; -//# sourceMappingURL=RNet.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/RNet.js.map b/build/commonjs/mtcnn/RNet.js.map deleted file mode 100644 index 1498985c..00000000 --- a/build/commonjs/mtcnn/RNet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"RNet.js","sourceRoot":"","sources":["../../../src/mtcnn/RNet.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,qEAAoE;AACpE,iCAAgC;AAChC,+CAA6C;AAG7C,SAAgB,IAAI,CAAC,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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/bgrToRgbTensor.d.ts b/build/commonjs/mtcnn/bgrToRgbTensor.d.ts deleted file mode 100644 index 7b544bef..00000000 --- a/build/commonjs/mtcnn/bgrToRgbTensor.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export declare function bgrToRgbTensor(tensor: tf.Tensor4D): tf.Tensor4D; diff --git a/build/commonjs/mtcnn/bgrToRgbTensor.js b/build/commonjs/mtcnn/bgrToRgbTensor.js deleted file mode 100644 index 262ce6dd..00000000 --- a/build/commonjs/mtcnn/bgrToRgbTensor.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -function bgrToRgbTensor(tensor) { - return tf.tidy(function () { return tf.stack(tf.unstack(tensor, 3).reverse(), 3); }); -} -exports.bgrToRgbTensor = bgrToRgbTensor; -//# sourceMappingURL=bgrToRgbTensor.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/bgrToRgbTensor.js.map b/build/commonjs/mtcnn/bgrToRgbTensor.js.map deleted file mode 100644 index 1e912fa3..00000000 --- a/build/commonjs/mtcnn/bgrToRgbTensor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bgrToRgbTensor.js","sourceRoot":"","sources":["../../../src/mtcnn/bgrToRgbTensor.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,SAAgB,cAAc,CAAC,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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/config.d.ts b/build/commonjs/mtcnn/config.d.ts deleted file mode 100644 index 05a91437..00000000 --- a/build/commonjs/mtcnn/config.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const CELL_STRIDE = 2; -export declare const CELL_SIZE = 12; diff --git a/build/commonjs/mtcnn/config.js b/build/commonjs/mtcnn/config.js deleted file mode 100644 index fa6824e6..00000000 --- a/build/commonjs/mtcnn/config.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CELL_STRIDE = 2; -exports.CELL_SIZE = 12; -//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/config.js.map b/build/commonjs/mtcnn/config.js.map deleted file mode 100644 index bae8cf34..00000000 --- a/build/commonjs/mtcnn/config.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/extractImagePatches.d.ts b/build/commonjs/mtcnn/extractImagePatches.d.ts deleted file mode 100644 index 4e43a1b6..00000000 --- a/build/commonjs/mtcnn/extractImagePatches.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { Box, IDimensions } from 'tfjs-image-recognition-base'; -export declare function extractImagePatches(img: HTMLCanvasElement, boxes: Box[], { width, height }: IDimensions): Promise; diff --git a/build/commonjs/mtcnn/extractImagePatches.js b/build/commonjs/mtcnn/extractImagePatches.js deleted file mode 100644 index 67c41444..00000000 --- a/build/commonjs/mtcnn/extractImagePatches.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var normalize_1 = require("./normalize"); -function extractImagePatches(img, boxes, _a) { - var width = _a.width, height = _a.height; - return tslib_1.__awaiter(this, void 0, void 0, function () { - var imgCtx, bitmaps, imagePatchesDatas; - var _this = this; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - imgCtx = tfjs_image_recognition_base_1.getContext2dOrThrow(img); - 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; - return tslib_1.__generator(this, function (_b) { - _a = box.padAtBorders(img.height, img.width), y = _a.y, ey = _a.ey, x = _a.x, ex = _a.ex; - fromX = x - 1; - fromY = y - 1; - imgData = imgCtx.getImageData(fromX, fromY, (ex - fromX), (ey - fromY)); - return [2 /*return*/, tfjs_image_recognition_base_1.env.isNodejs() ? tfjs_image_recognition_base_1.createCanvasFromMedia(imgData) : createImageBitmap(imgData)]; - }); - }); }))]; - case 1: - bitmaps = _b.sent(); - imagePatchesDatas = []; - bitmaps.forEach(function (bmp) { - var patch = tfjs_image_recognition_base_1.createCanvas({ width: width, height: height }); - var patchCtx = tfjs_image_recognition_base_1.getContext2dOrThrow(patch); - patchCtx.drawImage(bmp, 0, 0, width, height); - var data = patchCtx.getImageData(0, 0, width, height).data; - var currData = []; - // RGBA -> BGR - for (var i = 0; i < data.length; i += 4) { - currData.push(data[i + 2]); - currData.push(data[i + 1]); - currData.push(data[i]); - } - imagePatchesDatas.push(currData); - }); - return [2 /*return*/, imagePatchesDatas.map(function (data) { - var t = tf.tidy(function () { - var imagePatchTensor = tf.transpose(tf.tensor4d(data, [1, width, height, 3]), [0, 2, 1, 3]).toFloat(); - return normalize_1.normalize(imagePatchTensor); - }); - return t; - })]; - } - }); - }); -} -exports.extractImagePatches = extractImagePatches; -//# sourceMappingURL=extractImagePatches.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/extractImagePatches.js.map b/build/commonjs/mtcnn/extractImagePatches.js.map deleted file mode 100644 index fceefae4..00000000 --- a/build/commonjs/mtcnn/extractImagePatches.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractImagePatches.js","sourceRoot":"","sources":["../../../src/mtcnn/extractImagePatches.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAC5C,2EAOqC;AAErC,yCAAwC;AAExC,SAAsB,mBAAmB,CACvC,GAAsB,EACtB,KAAY,EACZ,EAA8B;QAA5B,gBAAK,EAAE,kBAAM;;;;;;;oBAIT,MAAM,GAAG,iDAAmB,CAAC,GAAG,CAAC,CAAA;oBAEvB,qBAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAM,GAAG;;;gCAE7C,KAAmB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAxD,CAAC,OAAA,EAAE,EAAE,QAAA,EAAE,CAAC,OAAA,EAAE,EAAE,QAAA,CAA4C;gCAE1D,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;gCACb,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;gCACb,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;gCAE7E,sBAAO,iCAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,mDAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAA;;6BACpF,CAAC,CAAC,EAAA;;oBATG,OAAO,GAAG,SASb;oBAEG,iBAAiB,GAAe,EAAE,CAAA;oBAExC,OAAO,CAAC,OAAO,CAAC,UAAA,GAAG;wBACjB,IAAM,KAAK,GAAG,0CAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;wBAC7C,IAAM,QAAQ,GAAG,iDAAmB,CAAC,KAAK,CAAC,CAAA;wBAC3C,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;wBACpC,IAAA,sDAAI,CAA+C;wBAE3D,IAAM,QAAQ,GAAG,EAAE,CAAA;wBACnB,cAAc;wBACd,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAE,CAAC,EAAE;4BACpC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;4BAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;4BAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;yBACvB;wBACD,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBAClC,CAAC,CAAC,CAAA;oBAGF,sBAAO,iBAAiB,CAAC,GAAG,CAAC,UAAA,IAAI;4BAC/B,IAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gCAChB,IAAM,gBAAgB,GAAG,EAAE,CAAC,SAAS,CACnC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EACxC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACb,CAAC,OAAO,EAAiB,CAAA;gCAE1B,OAAO,qBAAS,CAAC,gBAAgB,CAAC,CAAA;4BACpC,CAAC,CAAC,CAAA;4BACF,OAAO,CAAC,CAAA;wBACV,CAAC,CAAC,EAAA;;;;CACH;AAlDD,kDAkDC"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/extractParams.d.ts b/build/commonjs/mtcnn/extractParams.d.ts deleted file mode 100644 index 14d45d2b..00000000 --- a/build/commonjs/mtcnn/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/mtcnn/extractParams.js b/build/commonjs/mtcnn/extractParams.js deleted file mode 100644 index 28088eb7..00000000 --- a/build/commonjs/mtcnn/extractParams.js +++ /dev/null @@ -1,68 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractorsFactory(extractWeights, paramMappings) { - var extractConvParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractConvParamsFactory(extractWeights, paramMappings); - var extractFCParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractFCParamsFactory(extractWeights, paramMappings); - function extractPReluParams(size, paramPath) { - var alpha = tf.tensor1d(extractWeights(size)); - paramMappings.push({ paramPath: paramPath }); - return alpha; - } - function extractSharedParams(numFilters, mappedPrefix, isRnet) { - if (isRnet === void 0) { isRnet = false; } - var conv1 = extractConvParams(numFilters[0], numFilters[1], 3, mappedPrefix + "/conv1"); - var prelu1_alpha = extractPReluParams(numFilters[1], mappedPrefix + "/prelu1_alpha"); - var conv2 = extractConvParams(numFilters[1], numFilters[2], 3, mappedPrefix + "/conv2"); - var prelu2_alpha = extractPReluParams(numFilters[2], mappedPrefix + "/prelu2_alpha"); - var conv3 = extractConvParams(numFilters[2], numFilters[3], isRnet ? 2 : 3, mappedPrefix + "/conv3"); - var prelu3_alpha = extractPReluParams(numFilters[3], mappedPrefix + "/prelu3_alpha"); - return { conv1: conv1, prelu1_alpha: prelu1_alpha, conv2: conv2, prelu2_alpha: prelu2_alpha, conv3: conv3, prelu3_alpha: prelu3_alpha }; - } - function extractPNetParams() { - var sharedParams = extractSharedParams([3, 10, 16, 32], 'pnet'); - var conv4_1 = extractConvParams(32, 2, 1, 'pnet/conv4_1'); - var conv4_2 = extractConvParams(32, 4, 1, 'pnet/conv4_2'); - return tslib_1.__assign(tslib_1.__assign({}, sharedParams), { conv4_1: conv4_1, conv4_2: conv4_2 }); - } - function extractRNetParams() { - var sharedParams = extractSharedParams([3, 28, 48, 64], 'rnet', true); - var fc1 = extractFCParams(576, 128, 'rnet/fc1'); - var prelu4_alpha = extractPReluParams(128, 'rnet/prelu4_alpha'); - var fc2_1 = extractFCParams(128, 2, 'rnet/fc2_1'); - var fc2_2 = extractFCParams(128, 4, 'rnet/fc2_2'); - return tslib_1.__assign(tslib_1.__assign({}, sharedParams), { fc1: fc1, prelu4_alpha: prelu4_alpha, fc2_1: fc2_1, fc2_2: fc2_2 }); - } - function extractONetParams() { - var sharedParams = extractSharedParams([3, 32, 64, 64], 'onet'); - var conv4 = extractConvParams(64, 128, 2, 'onet/conv4'); - var prelu4_alpha = extractPReluParams(128, 'onet/prelu4_alpha'); - var fc1 = extractFCParams(1152, 256, 'onet/fc1'); - var prelu5_alpha = extractPReluParams(256, 'onet/prelu5_alpha'); - var fc2_1 = extractFCParams(256, 2, 'onet/fc2_1'); - var fc2_2 = extractFCParams(256, 4, 'onet/fc2_2'); - var fc2_3 = extractFCParams(256, 10, 'onet/fc2_3'); - return tslib_1.__assign(tslib_1.__assign({}, sharedParams), { conv4: conv4, prelu4_alpha: prelu4_alpha, fc1: fc1, prelu5_alpha: prelu5_alpha, fc2_1: fc2_1, fc2_2: fc2_2, fc2_3: fc2_3 }); - } - return { - extractPNetParams: extractPNetParams, - extractRNetParams: extractRNetParams, - extractONetParams: extractONetParams - }; -} -function extractParams(weights) { - var _a = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var paramMappings = []; - var _b = extractorsFactory(extractWeights, paramMappings), extractPNetParams = _b.extractPNetParams, extractRNetParams = _b.extractRNetParams, extractONetParams = _b.extractONetParams; - var pnet = extractPNetParams(); - var rnet = extractRNetParams(); - var onet = extractONetParams(); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { params: { pnet: pnet, rnet: rnet, onet: onet }, paramMappings: paramMappings }; -} -exports.extractParams = extractParams; -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/extractParams.js.map b/build/commonjs/mtcnn/extractParams.js.map deleted file mode 100644 index 24ee64a1..00000000 --- a/build/commonjs/mtcnn/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/mtcnn/extractParams.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/extractParamsFromWeigthMap.d.ts b/build/commonjs/mtcnn/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index 7bf5a66d..00000000 --- a/build/commonjs/mtcnn/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/mtcnn/extractParamsFromWeigthMap.js b/build/commonjs/mtcnn/extractParamsFromWeigthMap.js deleted file mode 100644 index 71773d82..00000000 --- a/build/commonjs/mtcnn/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,70 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractorsFactory(weightMap, paramMappings) { - var extractWeightEntry = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - function extractConvParams(prefix) { - var filters = extractWeightEntry(prefix + "/weights", 4, prefix + "/filters"); - var bias = extractWeightEntry(prefix + "/bias", 1); - return { filters: filters, bias: bias }; - } - function extractFCParams(prefix) { - var weights = extractWeightEntry(prefix + "/weights", 2); - var bias = extractWeightEntry(prefix + "/bias", 1); - return { weights: weights, bias: bias }; - } - function extractPReluParams(paramPath) { - return extractWeightEntry(paramPath, 1); - } - function extractSharedParams(prefix) { - var conv1 = extractConvParams(prefix + "/conv1"); - var prelu1_alpha = extractPReluParams(prefix + "/prelu1_alpha"); - var conv2 = extractConvParams(prefix + "/conv2"); - var prelu2_alpha = extractPReluParams(prefix + "/prelu2_alpha"); - var conv3 = extractConvParams(prefix + "/conv3"); - var prelu3_alpha = extractPReluParams(prefix + "/prelu3_alpha"); - return { conv1: conv1, prelu1_alpha: prelu1_alpha, conv2: conv2, prelu2_alpha: prelu2_alpha, conv3: conv3, prelu3_alpha: prelu3_alpha }; - } - function extractPNetParams() { - var sharedParams = extractSharedParams('pnet'); - var conv4_1 = extractConvParams('pnet/conv4_1'); - var conv4_2 = extractConvParams('pnet/conv4_2'); - return tslib_1.__assign(tslib_1.__assign({}, sharedParams), { conv4_1: conv4_1, conv4_2: conv4_2 }); - } - function extractRNetParams() { - var sharedParams = extractSharedParams('rnet'); - var fc1 = extractFCParams('rnet/fc1'); - var prelu4_alpha = extractPReluParams('rnet/prelu4_alpha'); - var fc2_1 = extractFCParams('rnet/fc2_1'); - var fc2_2 = extractFCParams('rnet/fc2_2'); - return tslib_1.__assign(tslib_1.__assign({}, sharedParams), { fc1: fc1, prelu4_alpha: prelu4_alpha, fc2_1: fc2_1, fc2_2: fc2_2 }); - } - function extractONetParams() { - var sharedParams = extractSharedParams('onet'); - var conv4 = extractConvParams('onet/conv4'); - var prelu4_alpha = extractPReluParams('onet/prelu4_alpha'); - var fc1 = extractFCParams('onet/fc1'); - var prelu5_alpha = extractPReluParams('onet/prelu5_alpha'); - var fc2_1 = extractFCParams('onet/fc2_1'); - var fc2_2 = extractFCParams('onet/fc2_2'); - var fc2_3 = extractFCParams('onet/fc2_3'); - return tslib_1.__assign(tslib_1.__assign({}, sharedParams), { conv4: conv4, prelu4_alpha: prelu4_alpha, fc1: fc1, prelu5_alpha: prelu5_alpha, fc2_1: fc2_1, fc2_2: fc2_2, fc2_3: fc2_3 }); - } - return { - extractPNetParams: extractPNetParams, - extractRNetParams: extractRNetParams, - extractONetParams: extractONetParams - }; -} -function extractParamsFromWeigthMap(weightMap) { - var paramMappings = []; - var _a = extractorsFactory(weightMap, paramMappings), extractPNetParams = _a.extractPNetParams, extractRNetParams = _a.extractRNetParams, extractONetParams = _a.extractONetParams; - var pnet = extractPNetParams(); - var rnet = extractRNetParams(); - var onet = extractONetParams(); - tfjs_image_recognition_base_1.TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: { pnet: pnet, rnet: rnet, onet: onet }, paramMappings: paramMappings }; -} -exports.extractParamsFromWeigthMap = extractParamsFromWeigthMap; -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/extractParamsFromWeigthMap.js.map b/build/commonjs/mtcnn/extractParamsFromWeigthMap.js.map deleted file mode 100644 index d1309583..00000000 --- a/build/commonjs/mtcnn/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/mtcnn/extractParamsFromWeigthMap.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/getSizesForScale.d.ts b/build/commonjs/mtcnn/getSizesForScale.d.ts deleted file mode 100644 index 4ab739a5..00000000 --- a/build/commonjs/mtcnn/getSizesForScale.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare function getSizesForScale(scale: number, [height, width]: number[]): { - height: number; - width: number; -}; diff --git a/build/commonjs/mtcnn/getSizesForScale.js b/build/commonjs/mtcnn/getSizesForScale.js deleted file mode 100644 index b2cd4cee..00000000 --- a/build/commonjs/mtcnn/getSizesForScale.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function getSizesForScale(scale, _a) { - var height = _a[0], width = _a[1]; - return { - height: Math.floor(height * scale), - width: Math.floor(width * scale) - }; -} -exports.getSizesForScale = getSizesForScale; -//# sourceMappingURL=getSizesForScale.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/getSizesForScale.js.map b/build/commonjs/mtcnn/getSizesForScale.js.map deleted file mode 100644 index dd806853..00000000 --- a/build/commonjs/mtcnn/getSizesForScale.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getSizesForScale.js","sourceRoot":"","sources":["../../../src/mtcnn/getSizesForScale.ts"],"names":[],"mappings":";;AAAA,SAAgB,gBAAgB,CAAC,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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/index.d.ts b/build/commonjs/mtcnn/index.d.ts deleted file mode 100644 index 8e8e10ee..00000000 --- a/build/commonjs/mtcnn/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Mtcnn } from './Mtcnn'; -export * from './Mtcnn'; -export * from './MtcnnOptions'; -export declare function createMtcnn(weights: Float32Array): Mtcnn; diff --git a/build/commonjs/mtcnn/index.js b/build/commonjs/mtcnn/index.js deleted file mode 100644 index 6e03c6a2..00000000 --- a/build/commonjs/mtcnn/index.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var Mtcnn_1 = require("./Mtcnn"); -tslib_1.__exportStar(require("./Mtcnn"), exports); -tslib_1.__exportStar(require("./MtcnnOptions"), exports); -function createMtcnn(weights) { - var net = new Mtcnn_1.Mtcnn(); - net.extractWeights(weights); - return net; -} -exports.createMtcnn = createMtcnn; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/index.js.map b/build/commonjs/mtcnn/index.js.map deleted file mode 100644 index f100b37d..00000000 --- a/build/commonjs/mtcnn/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mtcnn/index.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAEhC,kDAAwB;AACxB,yDAA+B;AAE/B,SAAgB,WAAW,CAAC,OAAqB;IAC/C,IAAM,GAAG,GAAG,IAAI,aAAK,EAAE,CAAA;IACvB,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,kCAIC"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/normalize.d.ts b/build/commonjs/mtcnn/normalize.d.ts deleted file mode 100644 index 1a14045d..00000000 --- a/build/commonjs/mtcnn/normalize.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export declare function normalize(x: tf.Tensor4D): tf.Tensor4D; diff --git a/build/commonjs/mtcnn/normalize.js b/build/commonjs/mtcnn/normalize.js deleted file mode 100644 index e0cff3f7..00000000 --- a/build/commonjs/mtcnn/normalize.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -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)); }); -} -exports.normalize = normalize; -//# sourceMappingURL=normalize.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/normalize.js.map b/build/commonjs/mtcnn/normalize.js.map deleted file mode 100644 index a15cd672..00000000 --- a/build/commonjs/mtcnn/normalize.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/mtcnn/normalize.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,SAAgB,SAAS,CAAC,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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/prelu.d.ts b/build/commonjs/mtcnn/prelu.d.ts deleted file mode 100644 index 3019168f..00000000 --- a/build/commonjs/mtcnn/prelu.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export declare function prelu(x: T, alpha: tf.Tensor1D): T; diff --git a/build/commonjs/mtcnn/prelu.js b/build/commonjs/mtcnn/prelu.js deleted file mode 100644 index c6c2e457..00000000 --- a/build/commonjs/mtcnn/prelu.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -function prelu(x, alpha) { - return tf.tidy(function () { - return tf.add(tf.relu(x), tf.mul(alpha, tf.neg(tf.relu(tf.neg(x))))); - }); -} -exports.prelu = prelu; -//# sourceMappingURL=prelu.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/prelu.js.map b/build/commonjs/mtcnn/prelu.js.map deleted file mode 100644 index 6012b53e..00000000 --- a/build/commonjs/mtcnn/prelu.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"prelu.js","sourceRoot":"","sources":["../../../src/mtcnn/prelu.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,SAAgB,KAAK,CAAsB,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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/pyramidDown.d.ts b/build/commonjs/mtcnn/pyramidDown.d.ts deleted file mode 100644 index 58073049..00000000 --- a/build/commonjs/mtcnn/pyramidDown.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function pyramidDown(minFaceSize: number, scaleFactor: number, dims: number[]): number[]; diff --git a/build/commonjs/mtcnn/pyramidDown.js b/build/commonjs/mtcnn/pyramidDown.js deleted file mode 100644 index 44ab651a..00000000 --- a/build/commonjs/mtcnn/pyramidDown.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var config_1 = require("./config"); -function pyramidDown(minFaceSize, scaleFactor, dims) { - var height = dims[0], width = dims[1]; - var m = config_1.CELL_SIZE / minFaceSize; - var scales = []; - var minLayer = Math.min(height, width) * m; - var exp = 0; - while (minLayer >= 12) { - scales.push(m * Math.pow(scaleFactor, exp)); - minLayer = minLayer * scaleFactor; - exp += 1; - } - return scales; -} -exports.pyramidDown = pyramidDown; -//# sourceMappingURL=pyramidDown.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/pyramidDown.js.map b/build/commonjs/mtcnn/pyramidDown.js.map deleted file mode 100644 index 0712d3e3..00000000 --- a/build/commonjs/mtcnn/pyramidDown.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pyramidDown.js","sourceRoot":"","sources":["../../../src/mtcnn/pyramidDown.ts"],"names":[],"mappings":";;AAAA,mCAAqC;AAErC,SAAgB,WAAW,CAAC,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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/sharedLayers.d.ts b/build/commonjs/mtcnn/sharedLayers.d.ts deleted file mode 100644 index afc63db2..00000000 --- a/build/commonjs/mtcnn/sharedLayers.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { SharedParams } from './types'; -export declare function sharedLayer(x: tf.Tensor4D, params: SharedParams, isPnet?: boolean): tf.Tensor; diff --git a/build/commonjs/mtcnn/sharedLayers.js b/build/commonjs/mtcnn/sharedLayers.js deleted file mode 100644 index 1f337a7e..00000000 --- a/build/commonjs/mtcnn/sharedLayers.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var prelu_1 = require("./prelu"); -function sharedLayer(x, params, isPnet) { - if (isPnet === void 0) { isPnet = false; } - return tf.tidy(function () { - var out = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.convLayer(x, params.conv1, 'valid'); - out = prelu_1.prelu(out, params.prelu1_alpha); - out = tf.maxPool(out, isPnet ? [2, 2] : [3, 3], [2, 2], 'same'); - out = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.convLayer(out, params.conv2, 'valid'); - out = prelu_1.prelu(out, params.prelu2_alpha); - out = isPnet ? out : tf.maxPool(out, [3, 3], [2, 2], 'valid'); - out = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.convLayer(out, params.conv3, 'valid'); - out = prelu_1.prelu(out, params.prelu3_alpha); - return out; - }); -} -exports.sharedLayer = sharedLayer; -//# sourceMappingURL=sharedLayers.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/sharedLayers.js.map b/build/commonjs/mtcnn/sharedLayers.js.map deleted file mode 100644 index fe4d9ef6..00000000 --- a/build/commonjs/mtcnn/sharedLayers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sharedLayers.js","sourceRoot":"","sources":["../../../src/mtcnn/sharedLayers.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAC5C,2EAAuE;AAEvE,iCAAgC;AAGhC,SAAgB,WAAW,CAAC,CAAc,EAAE,MAAoB,EAAE,MAAuB;IAAvB,uBAAA,EAAA,cAAuB;IACvF,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,sDAAwB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACtE,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,sDAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACpE,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,sDAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACpE,GAAG,GAAG,aAAK,CAAc,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;QAElD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC;AAdD,kCAcC"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/stage1.d.ts b/build/commonjs/mtcnn/stage1.d.ts deleted file mode 100644 index f096cea1..00000000 --- a/build/commonjs/mtcnn/stage1.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { BoundingBox } from 'tfjs-image-recognition-base'; -import { PNetParams } from './types'; -export declare function stage1(imgTensor: tf.Tensor4D, scales: number[], scoreThreshold: number, params: PNetParams, stats: any): { - boxes: BoundingBox[]; - scores: number[]; -}; diff --git a/build/commonjs/mtcnn/stage1.js b/build/commonjs/mtcnn/stage1.js deleted file mode 100644 index 8671eac9..00000000 --- a/build/commonjs/mtcnn/stage1.js +++ /dev/null @@ -1,96 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var config_1 = require("./config"); -var getSizesForScale_1 = require("./getSizesForScale"); -var MtcnnBox_1 = require("./MtcnnBox"); -var normalize_1 = require("./normalize"); -var PNet_1 = require("./PNet"); -function rescaleAndNormalize(x, scale) { - return tf.tidy(function () { - var _a = getSizesForScale_1.getSizesForScale(scale, x.shape.slice(1)), height = _a.height, width = _a.width; - var resized = tf.image.resizeBilinear(x, [height, width]); - var normalized = normalize_1.normalize(resized); - return tf.transpose(normalized, [0, 2, 1, 3]); - }); -} -function extractBoundingBoxes(scoresTensor, regionsTensor, scale, scoreThreshold) { - // TODO: fix this!, maybe better to use tf.gather here - var indices = []; - var scoresData = scoresTensor.arraySync(); - for (var y = 0; y < scoresTensor.shape[0]; y++) { - for (var x = 0; x < scoresTensor.shape[1]; x++) { - if (scoresData[y][x] >= scoreThreshold) { - indices.push(new tfjs_image_recognition_base_1.Point(x, y)); - } - } - } - var boundingBoxes = indices.map(function (idx) { - var cell = new tfjs_image_recognition_base_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 score = scoresData[idx.y][idx.x]; - var regionsData = regionsTensor.arraySync(); - var region = new MtcnnBox_1.MtcnnBox(regionsData[idx.y][idx.x][0], regionsData[idx.y][idx.x][1], regionsData[idx.y][idx.x][2], regionsData[idx.y][idx.x][3]); - return { - cell: cell, - score: score, - region: region - }; - }); - return boundingBoxes; -} -function stage1(imgTensor, scales, scoreThreshold, params, stats) { - stats.stage1 = []; - var pnetOutputs = scales.map(function (scale) { return tf.tidy(function () { - var statsForScale = { scale: scale }; - var resized = rescaleAndNormalize(imgTensor, scale); - var ts = Date.now(); - var _a = PNet_1.PNet(resized, params), prob = _a.prob, regions = _a.regions; - statsForScale.pnet = Date.now() - ts; - var scoresTensor = tf.unstack(tf.unstack(prob, 3)[1])[0]; - var regionsTensor = tf.unstack(regions)[0]; - return { - scoresTensor: scoresTensor, - regionsTensor: regionsTensor, - scale: scale, - statsForScale: statsForScale - }; - }); }); - var boxesForScale = pnetOutputs.map(function (_a) { - var scoresTensor = _a.scoresTensor, regionsTensor = _a.regionsTensor, scale = _a.scale, statsForScale = _a.statsForScale; - var boundingBoxes = extractBoundingBoxes(scoresTensor, regionsTensor, scale, scoreThreshold); - scoresTensor.dispose(); - regionsTensor.dispose(); - if (!boundingBoxes.length) { - stats.stage1.push(statsForScale); - return []; - } - var ts = Date.now(); - var indices = tfjs_image_recognition_base_1.nonMaxSuppression(boundingBoxes.map(function (bbox) { return bbox.cell; }), boundingBoxes.map(function (bbox) { return bbox.score; }), 0.5); - statsForScale.nms = Date.now() - ts; - statsForScale.numBoxes = indices.length; - stats.stage1.push(statsForScale); - return indices.map(function (boxIdx) { return boundingBoxes[boxIdx]; }); - }); - var allBoxes = boxesForScale.reduce(function (all, boxes) { return all.concat(boxes); }, []); - var finalBoxes = []; - var finalScores = []; - if (allBoxes.length > 0) { - var ts = Date.now(); - var indices = tfjs_image_recognition_base_1.nonMaxSuppression(allBoxes.map(function (bbox) { return bbox.cell; }), allBoxes.map(function (bbox) { return bbox.score; }), 0.7); - stats.stage1_nms = Date.now() - ts; - finalScores = indices.map(function (idx) { return allBoxes[idx].score; }); - finalBoxes = indices - .map(function (idx) { return allBoxes[idx]; }) - .map(function (_a) { - var cell = _a.cell, region = _a.region; - return new tfjs_image_recognition_base_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 { - boxes: finalBoxes, - scores: finalScores - }; -} -exports.stage1 = stage1; -//# sourceMappingURL=stage1.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/stage1.js.map b/build/commonjs/mtcnn/stage1.js.map deleted file mode 100644 index fb9d904c..00000000 --- a/build/commonjs/mtcnn/stage1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stage1.js","sourceRoot":"","sources":["../../../src/mtcnn/stage1.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/stage2.d.ts b/build/commonjs/mtcnn/stage2.d.ts deleted file mode 100644 index de3a4c61..00000000 --- a/build/commonjs/mtcnn/stage2.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Box } from 'tfjs-image-recognition-base'; -import { RNetParams } from './types'; -export declare function stage2(img: HTMLCanvasElement, inputBoxes: Box[], scoreThreshold: number, params: RNetParams, stats: any): Promise<{ - boxes: Box[]; - scores: number[]; -}>; diff --git a/build/commonjs/mtcnn/stage2.js b/build/commonjs/mtcnn/stage2.js deleted file mode 100644 index 0e174059..00000000 --- a/build/commonjs/mtcnn/stage2.js +++ /dev/null @@ -1,70 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var extractImagePatches_1 = require("./extractImagePatches"); -var MtcnnBox_1 = require("./MtcnnBox"); -var RNet_1 = require("./RNet"); -function stage2(img, inputBoxes, scoreThreshold, params, stats) { - 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; - return tslib_1.__generator(this, function (_c) { - switch (_c.label) { - case 0: - ts = Date.now(); - return [4 /*yield*/, extractImagePatches_1.extractImagePatches(img, inputBoxes, { width: 24, height: 24 })]; - case 1: - rnetInputs = _c.sent(); - stats.stage2_extractImagePatches = Date.now() - ts; - ts = Date.now(); - rnetOuts = rnetInputs.map(function (rnetInput) { - var out = RNet_1.RNet(rnetInput, params); - rnetInput.dispose(); - return out; - }); - stats.stage2_rnet = Date.now() - ts; - scoresTensor = rnetOuts.length > 1 - ? tf.concat(rnetOuts.map(function (out) { return out.scores; })) - : rnetOuts[0].scores; - _b = (_a = Array).from; - return [4 /*yield*/, scoresTensor.data()]; - case 2: - scores = _b.apply(_a, [_c.sent()]); - scoresTensor.dispose(); - 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; - }); - filteredBoxes = indices.map(function (idx) { return inputBoxes[idx]; }); - filteredScores = indices.map(function (idx) { return scores[idx]; }); - finalBoxes = []; - finalScores = []; - if (filteredBoxes.length > 0) { - ts = Date.now(); - indicesNms = tfjs_image_recognition_base_1.nonMaxSuppression(filteredBoxes, filteredScores, 0.7); - stats.stage2_nms = Date.now() - ts; - regions_1 = indicesNms.map(function (idx) { - var regionsData = rnetOuts[indices[idx]].regions.arraySync(); - return new MtcnnBox_1.MtcnnBox(regionsData[0][0], regionsData[0][1], regionsData[0][2], regionsData[0][3]); - }); - finalScores = indicesNms.map(function (idx) { return filteredScores[idx]; }); - finalBoxes = indicesNms.map(function (idx, i) { return filteredBoxes[idx].calibrate(regions_1[i]); }); - } - rnetOuts.forEach(function (t) { - t.regions.dispose(); - t.scores.dispose(); - }); - return [2 /*return*/, { - boxes: finalBoxes, - scores: finalScores - }]; - } - }); - }); -} -exports.stage2 = stage2; -//# sourceMappingURL=stage2.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/stage2.js.map b/build/commonjs/mtcnn/stage2.js.map deleted file mode 100644 index d8428476..00000000 --- a/build/commonjs/mtcnn/stage2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stage2.js","sourceRoot":"","sources":["../../../src/mtcnn/stage2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/stage3.d.ts b/build/commonjs/mtcnn/stage3.d.ts deleted file mode 100644 index 607d3047..00000000 --- a/build/commonjs/mtcnn/stage3.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { BoundingBox, Box, Point } from 'tfjs-image-recognition-base'; -import { ONetParams } from './types'; -export declare function stage3(img: HTMLCanvasElement, inputBoxes: BoundingBox[], scoreThreshold: number, params: ONetParams, stats: any): Promise<{ - boxes: Box[]; - scores: number[]; - points: Point[][]; -}>; diff --git a/build/commonjs/mtcnn/stage3.js b/build/commonjs/mtcnn/stage3.js deleted file mode 100644 index 374b7d4d..00000000 --- a/build/commonjs/mtcnn/stage3.js +++ /dev/null @@ -1,80 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var extractImagePatches_1 = require("./extractImagePatches"); -var MtcnnBox_1 = require("./MtcnnBox"); -var ONet_1 = require("./ONet"); -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; - scoresTensor = onetOuts.length > 1 - ? 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(); - 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) { - var regionsData = onetOuts[idx].regions.arraySync(); - return new MtcnnBox_1.MtcnnBox(regionsData[0][0], regionsData[0][1], regionsData[0][2], regionsData[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 = tfjs_image_recognition_base_1.nonMaxSuppression(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) { - var pointsData = onetOuts[idx].points.arraySync(); - return new tfjs_image_recognition_base_1.Point(((pointsData[0][ptIdx] * (finalBoxes[i].width + 1)) + finalBoxes[i].left), ((pointsData[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.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/stage3.js.map b/build/commonjs/mtcnn/stage3.js.map deleted file mode 100644 index 0f41f2a3..00000000 --- a/build/commonjs/mtcnn/stage3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stage3.js","sourceRoot":"","sources":["../../../src/mtcnn/stage3.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/mtcnn/types.d.ts b/build/commonjs/mtcnn/types.d.ts deleted file mode 100644 index b7f89f6a..00000000 --- a/build/commonjs/mtcnn/types.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { FaceLandmarks5 } from '../classes/FaceLandmarks5'; -import { WithFaceDetection, WithFaceLandmarks } from '../factories'; -export declare type SharedParams = { - conv1: TfjsImageRecognitionBase.ConvParams; - prelu1_alpha: tf.Tensor1D; - conv2: TfjsImageRecognitionBase.ConvParams; - prelu2_alpha: tf.Tensor1D; - conv3: TfjsImageRecognitionBase.ConvParams; - prelu3_alpha: tf.Tensor1D; -}; -export declare type PNetParams = SharedParams & { - conv4_1: TfjsImageRecognitionBase.ConvParams; - conv4_2: TfjsImageRecognitionBase.ConvParams; -}; -export declare type RNetParams = SharedParams & { - fc1: TfjsImageRecognitionBase.FCParams; - prelu4_alpha: tf.Tensor1D; - fc2_1: TfjsImageRecognitionBase.FCParams; - fc2_2: TfjsImageRecognitionBase.FCParams; -}; -export declare type ONetParams = SharedParams & { - conv4: TfjsImageRecognitionBase.ConvParams; - prelu4_alpha: tf.Tensor1D; - fc1: TfjsImageRecognitionBase.FCParams; - prelu5_alpha: tf.Tensor1D; - fc2_1: TfjsImageRecognitionBase.FCParams; - fc2_2: TfjsImageRecognitionBase.FCParams; - fc2_3: TfjsImageRecognitionBase.FCParams; -}; -export declare type NetParams = { - pnet: PNetParams; - rnet: RNetParams; - onet: ONetParams; -}; -export declare type MtcnnResult = WithFaceLandmarks, FaceLandmarks5>; diff --git a/build/commonjs/mtcnn/types.js b/build/commonjs/mtcnn/types.js deleted file mode 100644 index 11e638d1..00000000 --- a/build/commonjs/mtcnn/types.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/commonjs/mtcnn/types.js.map b/build/commonjs/mtcnn/types.js.map deleted file mode 100644 index a06d2049..00000000 --- a/build/commonjs/mtcnn/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mtcnn/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/commonjs/resizeResults.d.ts b/build/commonjs/resizeResults.d.ts deleted file mode 100644 index cf4f4952..00000000 --- a/build/commonjs/resizeResults.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { IDimensions } from 'tfjs-image-recognition-base'; -export declare function resizeResults(results: T, dimensions: IDimensions): T; diff --git a/build/commonjs/resizeResults.js b/build/commonjs/resizeResults.js deleted file mode 100644 index e43e5f0a..00000000 --- a/build/commonjs/resizeResults.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceDetection_1 = require("./classes/FaceDetection"); -var FaceLandmarks_1 = require("./classes/FaceLandmarks"); -var WithFaceDetection_1 = require("./factories/WithFaceDetection"); -var WithFaceLandmarks_1 = require("./factories/WithFaceLandmarks"); -function resizeResults(results, dimensions) { - var _a = new tfjs_image_recognition_base_1.Dimensions(dimensions.width, dimensions.height), width = _a.width, height = _a.height; - if (width <= 0 || height <= 0) { - throw new Error("resizeResults - invalid dimensions: " + JSON.stringify({ width: width, height: height })); - } - if (Array.isArray(results)) { - return results.map(function (obj) { return resizeResults(obj, { width: width, height: height }); }); - } - if (WithFaceLandmarks_1.isWithFaceLandmarks(results)) { - var resizedDetection = results.detection.forSize(width, height); - var resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height); - return WithFaceLandmarks_1.extendWithFaceLandmarks(WithFaceDetection_1.extendWithFaceDetection(results, resizedDetection), resizedLandmarks); - } - if (WithFaceDetection_1.isWithFaceDetection(results)) { - return WithFaceDetection_1.extendWithFaceDetection(results, results.detection.forSize(width, height)); - } - if (results instanceof FaceLandmarks_1.FaceLandmarks || results instanceof FaceDetection_1.FaceDetection) { - return results.forSize(width, height); - } - return results; -} -exports.resizeResults = resizeResults; -//# sourceMappingURL=resizeResults.js.map \ No newline at end of file diff --git a/build/commonjs/resizeResults.js.map b/build/commonjs/resizeResults.js.map deleted file mode 100644 index 4fb7fbf9..00000000 --- a/build/commonjs/resizeResults.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"resizeResults.js","sourceRoot":"","sources":["../../src/resizeResults.ts"],"names":[],"mappings":";;AAAA,2EAAsE;AAEtE,yDAAwD;AACxD,yDAAwD;AACxD,mEAA6F;AAC7F,mEAA6F;AAE7F,SAAgB,aAAa,CAAI,OAAU,EAAE,UAAuB;IAE5D,IAAA,sFAAuE,EAArE,gBAAK,EAAE,kBAA8D,CAAA;IAE7E,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,yCAAuC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAG,CAAC,CAAA;KAC5F;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,EAArC,CAAqC,CAAa,CAAA;KAC7E;IAED,IAAI,uCAAmB,CAAC,OAAO,CAAC,EAAE;QAChC,IAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACjE,IAAM,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEpH,OAAO,2CAAuB,CAAC,2CAAuB,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAA;KACrG;IAED,IAAI,uCAAmB,CAAC,OAAO,CAAC,EAAE;QAChC,OAAO,2CAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;KAClF;IAED,IAAI,OAAO,YAAY,6BAAa,IAAI,OAAO,YAAY,6BAAa,EAAE;QACxE,OAAQ,OAAe,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;KAC/C;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AA5BD,sCA4BC"} \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/SsdMobilenetv1.d.ts b/build/commonjs/ssdMobilenetv1/SsdMobilenetv1.d.ts deleted file mode 100644 index 5551a4e9..00000000 --- a/build/commonjs/ssdMobilenetv1/SsdMobilenetv1.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { ISsdMobilenetv1Options } from './SsdMobilenetv1Options'; -import { NetParams } from './types'; -export declare class SsdMobilenetv1 extends NeuralNetwork { - constructor(); - forwardInput(input: NetInput): { - boxes: tf.Tensor[]; - scores: tf.Tensor[]; - }; - forward(input: TNetInput): Promise<{ - boxes: tf.Tensor[]; - scores: tf.Tensor[]; - }>; - locateFaces(input: TNetInput, options?: ISsdMobilenetv1Options): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/commonjs/ssdMobilenetv1/SsdMobilenetv1.js b/build/commonjs/ssdMobilenetv1/SsdMobilenetv1.js deleted file mode 100644 index ff02428f..00000000 --- a/build/commonjs/ssdMobilenetv1/SsdMobilenetv1.js +++ /dev/null @@ -1,108 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var FaceDetection_1 = require("../classes/FaceDetection"); -var extractParams_1 = require("./extractParams"); -var extractParamsFromWeigthMap_1 = require("./extractParamsFromWeigthMap"); -var mobileNetV1_1 = require("./mobileNetV1"); -var nonMaxSuppression_1 = require("./nonMaxSuppression"); -var outputLayer_1 = require("./outputLayer"); -var predictionLayer_1 = require("./predictionLayer"); -var SsdMobilenetv1Options_1 = require("./SsdMobilenetv1Options"); -var SsdMobilenetv1 = /** @class */ (function (_super) { - tslib_1.__extends(SsdMobilenetv1, _super); - function SsdMobilenetv1() { - return _super.call(this, 'SsdMobilenetv1') || this; - } - SsdMobilenetv1.prototype.forwardInput = function (input) { - var params = this.params; - if (!params) { - throw new Error('SsdMobilenetv1 - load model before inference'); - } - return tf.tidy(function () { - var batchTensor = input.toBatchTensor(512, false).toFloat(); - var x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)); - var features = mobileNetV1_1.mobileNetV1(x, params.mobilenetv1); - var _a = predictionLayer_1.predictionLayer(features.out, features.conv11, params.prediction_layer), boxPredictions = _a.boxPredictions, classPredictions = _a.classPredictions; - return outputLayer_1.outputLayer(boxPredictions, classPredictions, params.output_layer); - }); - }; - SsdMobilenetv1.prototype.forward = function (input) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - SsdMobilenetv1.prototype.locateFaces = function (input, options) { - if (options === void 0) { options = {}; } - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a, maxResults, minConfidence, netInput, _b, _boxes, _scores, boxes, scores, i, scoresData, _c, _d, iouThreshold, indices, reshapedDims, inputSize, padX, padY, boxesData, results; - return tslib_1.__generator(this, function (_e) { - switch (_e.label) { - case 0: - _a = new SsdMobilenetv1Options_1.SsdMobilenetv1Options(options), maxResults = _a.maxResults, minConfidence = _a.minConfidence; - return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: - netInput = _e.sent(); - _b = this.forwardInput(netInput), _boxes = _b.boxes, _scores = _b.scores; - boxes = _boxes[0]; - scores = _scores[0]; - for (i = 1; i < _boxes.length; i++) { - _boxes[i].dispose(); - _scores[i].dispose(); - } - _d = (_c = Array).from; - return [4 /*yield*/, scores.data()]; - case 2: - scoresData = _d.apply(_c, [_e.sent()]); - iouThreshold = 0.5; - indices = nonMaxSuppression_1.nonMaxSuppression(boxes, scoresData, maxResults, iouThreshold, minConfidence); - reshapedDims = netInput.getReshapedInputDimensions(0); - inputSize = netInput.inputSize; - padX = inputSize / reshapedDims.width; - padY = inputSize / reshapedDims.height; - boxesData = boxes.arraySync(); - results = indices - .map(function (idx) { - var _a = [ - Math.max(0, boxesData[idx][0]), - Math.min(1.0, boxesData[idx][2]) - ].map(function (val) { return val * padY; }), top = _a[0], bottom = _a[1]; - var _b = [ - Math.max(0, boxesData[idx][1]), - Math.min(1.0, boxesData[idx][3]) - ].map(function (val) { return val * padX; }), left = _b[0], right = _b[1]; - return new FaceDetection_1.FaceDetection(scoresData[idx], new tfjs_image_recognition_base_1.Rect(left, top, right - left, bottom - top), { - height: netInput.getInputHeight(0), - width: netInput.getInputWidth(0) - }); - }); - boxes.dispose(); - scores.dispose(); - return [2 /*return*/, results]; - } - }); - }); - }; - SsdMobilenetv1.prototype.getDefaultModelName = function () { - return 'ssd_mobilenetv1_model'; - }; - SsdMobilenetv1.prototype.extractParamsFromWeigthMap = function (weightMap) { - return extractParamsFromWeigthMap_1.extractParamsFromWeigthMap(weightMap); - }; - SsdMobilenetv1.prototype.extractParams = function (weights) { - return extractParams_1.extractParams(weights); - }; - return SsdMobilenetv1; -}(tfjs_image_recognition_base_1.NeuralNetwork)); -exports.SsdMobilenetv1 = SsdMobilenetv1; -//# sourceMappingURL=SsdMobilenetv1.js.map \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/SsdMobilenetv1.js.map b/build/commonjs/ssdMobilenetv1/SsdMobilenetv1.js.map deleted file mode 100644 index 5aab1ee9..00000000 --- a/build/commonjs/ssdMobilenetv1/SsdMobilenetv1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SsdMobilenetv1.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/SsdMobilenetv1.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/SsdMobilenetv1Options.d.ts b/build/commonjs/ssdMobilenetv1/SsdMobilenetv1Options.d.ts deleted file mode 100644 index bf75021c..00000000 --- a/build/commonjs/ssdMobilenetv1/SsdMobilenetv1Options.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface ISsdMobilenetv1Options { - minConfidence?: number; - maxResults?: number; -} -export declare class SsdMobilenetv1Options { - protected _name: string; - private _minConfidence; - private _maxResults; - constructor({ minConfidence, maxResults }?: ISsdMobilenetv1Options); - readonly minConfidence: number; - readonly maxResults: number; -} diff --git a/build/commonjs/ssdMobilenetv1/SsdMobilenetv1Options.js b/build/commonjs/ssdMobilenetv1/SsdMobilenetv1Options.js deleted file mode 100644 index e8e7be01..00000000 --- a/build/commonjs/ssdMobilenetv1/SsdMobilenetv1Options.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var SsdMobilenetv1Options = /** @class */ (function () { - function SsdMobilenetv1Options(_a) { - var _b = _a === void 0 ? {} : _a, minConfidence = _b.minConfidence, maxResults = _b.maxResults; - this._name = 'SsdMobilenetv1Options'; - this._minConfidence = minConfidence || 0.5; - this._maxResults = maxResults || 100; - if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) { - throw new Error(this._name + " - expected minConfidence to be a number between 0 and 1"); - } - if (typeof this._maxResults !== 'number') { - throw new Error(this._name + " - expected maxResults to be a number"); - } - } - Object.defineProperty(SsdMobilenetv1Options.prototype, "minConfidence", { - get: function () { return this._minConfidence; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SsdMobilenetv1Options.prototype, "maxResults", { - get: function () { return this._maxResults; }, - enumerable: true, - configurable: true - }); - return SsdMobilenetv1Options; -}()); -exports.SsdMobilenetv1Options = SsdMobilenetv1Options; -//# sourceMappingURL=SsdMobilenetv1Options.js.map \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/SsdMobilenetv1Options.js.map b/build/commonjs/ssdMobilenetv1/SsdMobilenetv1Options.js.map deleted file mode 100644 index 03c196c8..00000000 --- a/build/commonjs/ssdMobilenetv1/SsdMobilenetv1Options.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SsdMobilenetv1Options.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/SsdMobilenetv1Options.ts"],"names":[],"mappings":";;AAKA;IAME,+BAAY,EAA0D;YAA1D,4BAA0D,EAAxD,gCAAa,EAAE,0BAAU;QAL7B,UAAK,GAAW,uBAAuB,CAAA;QAM/C,IAAI,CAAC,cAAc,GAAG,aAAa,IAAI,GAAG,CAAA;QAC1C,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,GAAG,CAAA;QAEpC,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,EAAE;YACnG,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,6DAA0D,CAAC,CAAA;SACzF;QAED,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;YACxC,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,0CAAuC,CAAC,CAAA;SACtE;IACH,CAAC;IAED,sBAAI,gDAAa;aAAjB,cAA8B,OAAO,IAAI,CAAC,cAAc,CAAA,CAAC,CAAC;;;OAAA;IAC1D,sBAAI,6CAAU;aAAd,cAA2B,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;;;OAAA;IACtD,4BAAC;AAAD,CAAC,AArBD,IAqBC;AArBY,sDAAqB"} \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/boxPredictionLayer.d.ts b/build/commonjs/ssdMobilenetv1/boxPredictionLayer.d.ts deleted file mode 100644 index bed8cd15..00000000 --- a/build/commonjs/ssdMobilenetv1/boxPredictionLayer.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { BoxPredictionParams } from './types'; -export declare function boxPredictionLayer(x: tf.Tensor4D, params: BoxPredictionParams): { - boxPredictionEncoding: tf.Tensor; - classPrediction: tf.Tensor; -}; diff --git a/build/commonjs/ssdMobilenetv1/boxPredictionLayer.js b/build/commonjs/ssdMobilenetv1/boxPredictionLayer.js deleted file mode 100644 index f6d98856..00000000 --- a/build/commonjs/ssdMobilenetv1/boxPredictionLayer.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function boxPredictionLayer(x, params) { - return tf.tidy(function () { - var batchSize = x.shape[0]; - var boxPredictionEncoding = tf.reshape(tfjs_image_recognition_base_1.TfjsImageRecognitionBase.convLayer(x, params.box_encoding_predictor), [batchSize, -1, 1, 4]); - var classPrediction = tf.reshape(tfjs_image_recognition_base_1.TfjsImageRecognitionBase.convLayer(x, params.class_predictor), [batchSize, -1, 3]); - return { - boxPredictionEncoding: boxPredictionEncoding, - classPrediction: classPrediction - }; - }); -} -exports.boxPredictionLayer = boxPredictionLayer; -//# sourceMappingURL=boxPredictionLayer.js.map \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/boxPredictionLayer.js.map b/build/commonjs/ssdMobilenetv1/boxPredictionLayer.js.map deleted file mode 100644 index 8b17f5f2..00000000 --- a/build/commonjs/ssdMobilenetv1/boxPredictionLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"boxPredictionLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/boxPredictionLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAC5C,2EAAuE;AAKvE,SAAgB,kBAAkB,CAChC,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,sDAAwB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,EACpE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACtB,CAAA;QACD,IAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC,sDAAwB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,EAC7D,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACnB,CAAA;QAED,OAAO;YACL,qBAAqB,uBAAA;YACrB,eAAe,iBAAA;SAChB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAtBD,gDAsBC"} \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/extractParams.d.ts b/build/commonjs/ssdMobilenetv1/extractParams.d.ts deleted file mode 100644 index 14d45d2b..00000000 --- a/build/commonjs/ssdMobilenetv1/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/ssdMobilenetv1/extractParams.js b/build/commonjs/ssdMobilenetv1/extractParams.js deleted file mode 100644 index 7d8ad86b..00000000 --- a/build/commonjs/ssdMobilenetv1/extractParams.js +++ /dev/null @@ -1,162 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractorsFactory(extractWeights, paramMappings) { - function extractDepthwiseConvParams(numChannels, mappedPrefix) { - var filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]); - var batch_norm_scale = tf.tensor1d(extractWeights(numChannels)); - var batch_norm_offset = tf.tensor1d(extractWeights(numChannels)); - var batch_norm_mean = tf.tensor1d(extractWeights(numChannels)); - var batch_norm_variance = tf.tensor1d(extractWeights(numChannels)); - paramMappings.push({ paramPath: mappedPrefix + "/filters" }, { paramPath: mappedPrefix + "/batch_norm_scale" }, { paramPath: mappedPrefix + "/batch_norm_offset" }, { paramPath: mappedPrefix + "/batch_norm_mean" }, { paramPath: mappedPrefix + "/batch_norm_variance" }); - return { - filters: filters, - batch_norm_scale: batch_norm_scale, - batch_norm_offset: batch_norm_offset, - batch_norm_mean: batch_norm_mean, - batch_norm_variance: batch_norm_variance - }; - } - function extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, isPointwiseConv) { - var filters = tf.tensor4d(extractWeights(channelsIn * channelsOut * filterSize * filterSize), [filterSize, filterSize, channelsIn, channelsOut]); - var bias = tf.tensor1d(extractWeights(channelsOut)); - paramMappings.push({ paramPath: mappedPrefix + "/filters" }, { paramPath: mappedPrefix + "/" + (isPointwiseConv ? 'batch_norm_offset' : 'bias') }); - return { filters: filters, bias: bias }; - } - function extractPointwiseConvParams(channelsIn, channelsOut, filterSize, mappedPrefix) { - var _a = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true), filters = _a.filters, bias = _a.bias; - return { - filters: filters, - batch_norm_offset: bias - }; - } - function extractConvPairParams(channelsIn, channelsOut, mappedPrefix) { - var depthwise_conv = extractDepthwiseConvParams(channelsIn, mappedPrefix + "/depthwise_conv"); - var pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, mappedPrefix + "/pointwise_conv"); - return { depthwise_conv: depthwise_conv, pointwise_conv: pointwise_conv }; - } - function extractMobilenetV1Params() { - var conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0'); - var conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1'); - var conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2'); - var conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3'); - var conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4'); - var conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5'); - var conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6'); - var conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7'); - var conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8'); - var conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9'); - var conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10'); - var conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11'); - var conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12'); - var conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13'); - return { - conv_0: conv_0, - conv_1: conv_1, - conv_2: conv_2, - conv_3: conv_3, - conv_4: conv_4, - conv_5: conv_5, - conv_6: conv_6, - conv_7: conv_7, - conv_8: conv_8, - conv_9: conv_9, - conv_10: conv_10, - conv_11: conv_11, - conv_12: conv_12, - conv_13: conv_13 - }; - } - function extractPredictionLayerParams() { - var conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0'); - var conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1'); - var conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2'); - var conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3'); - var conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4'); - var conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5'); - var conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6'); - var conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7'); - var box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor'); - var class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor'); - var box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor'); - var class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor'); - var box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor'); - var class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor'); - var box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor'); - var class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor'); - var box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor'); - var class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor'); - var box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor'); - var class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor'); - var box_predictor_0 = { - box_encoding_predictor: box_encoding_0_predictor, - class_predictor: class_predictor_0 - }; - var box_predictor_1 = { - box_encoding_predictor: box_encoding_1_predictor, - class_predictor: class_predictor_1 - }; - var box_predictor_2 = { - box_encoding_predictor: box_encoding_2_predictor, - class_predictor: class_predictor_2 - }; - var box_predictor_3 = { - box_encoding_predictor: box_encoding_3_predictor, - class_predictor: class_predictor_3 - }; - var box_predictor_4 = { - box_encoding_predictor: box_encoding_4_predictor, - class_predictor: class_predictor_4 - }; - var box_predictor_5 = { - box_encoding_predictor: box_encoding_5_predictor, - class_predictor: class_predictor_5 - }; - return { - conv_0: conv_0, - conv_1: conv_1, - conv_2: conv_2, - conv_3: conv_3, - conv_4: conv_4, - conv_5: conv_5, - conv_6: conv_6, - conv_7: conv_7, - box_predictor_0: box_predictor_0, - box_predictor_1: box_predictor_1, - box_predictor_2: box_predictor_2, - box_predictor_3: box_predictor_3, - box_predictor_4: box_predictor_4, - box_predictor_5: box_predictor_5 - }; - } - return { - extractMobilenetV1Params: extractMobilenetV1Params, - extractPredictionLayerParams: extractPredictionLayerParams - }; -} -function extractParams(weights) { - var paramMappings = []; - var _a = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var _b = extractorsFactory(extractWeights, paramMappings), extractMobilenetV1Params = _b.extractMobilenetV1Params, extractPredictionLayerParams = _b.extractPredictionLayerParams; - var mobilenetv1 = extractMobilenetV1Params(); - var prediction_layer = extractPredictionLayerParams(); - var extra_dim = tf.tensor3d(extractWeights(5118 * 4), [1, 5118, 4]); - var output_layer = { - extra_dim: extra_dim - }; - paramMappings.push({ paramPath: 'output_layer/extra_dim' }); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { - params: { - mobilenetv1: mobilenetv1, - prediction_layer: prediction_layer, - output_layer: output_layer - }, - paramMappings: paramMappings - }; -} -exports.extractParams = extractParams; -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/extractParams.js.map b/build/commonjs/ssdMobilenetv1/extractParams.js.map deleted file mode 100644 index 482117f1..00000000 --- a/build/commonjs/ssdMobilenetv1/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/extractParams.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts b/build/commonjs/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index 7bf5a66d..00000000 --- a/build/commonjs/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/ssdMobilenetv1/extractParamsFromWeigthMap.js b/build/commonjs/ssdMobilenetv1/extractParamsFromWeigthMap.js deleted file mode 100644 index 295ac3a5..00000000 --- a/build/commonjs/ssdMobilenetv1/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,102 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractorsFactory(weightMap, paramMappings) { - var extractWeightEntry = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - function extractPointwiseConvParams(prefix, idx, mappedPrefix) { - var filters = extractWeightEntry(prefix + "/Conv2d_" + idx + "_pointwise/weights", 4, mappedPrefix + "/filters"); - var batch_norm_offset = extractWeightEntry(prefix + "/Conv2d_" + idx + "_pointwise/convolution_bn_offset", 1, mappedPrefix + "/batch_norm_offset"); - return { filters: filters, batch_norm_offset: batch_norm_offset }; - } - function extractConvPairParams(idx) { - var mappedPrefix = "mobilenetv1/conv_" + idx; - var prefixDepthwiseConv = "MobilenetV1/Conv2d_" + idx + "_depthwise"; - var mappedPrefixDepthwiseConv = mappedPrefix + "/depthwise_conv"; - var mappedPrefixPointwiseConv = mappedPrefix + "/pointwise_conv"; - var filters = extractWeightEntry(prefixDepthwiseConv + "/depthwise_weights", 4, mappedPrefixDepthwiseConv + "/filters"); - var batch_norm_scale = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/gamma", 1, mappedPrefixDepthwiseConv + "/batch_norm_scale"); - var batch_norm_offset = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/beta", 1, mappedPrefixDepthwiseConv + "/batch_norm_offset"); - var batch_norm_mean = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/moving_mean", 1, mappedPrefixDepthwiseConv + "/batch_norm_mean"); - var batch_norm_variance = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/moving_variance", 1, mappedPrefixDepthwiseConv + "/batch_norm_variance"); - return { - depthwise_conv: { - filters: filters, - batch_norm_scale: batch_norm_scale, - batch_norm_offset: batch_norm_offset, - batch_norm_mean: batch_norm_mean, - batch_norm_variance: batch_norm_variance - }, - pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv) - }; - } - function extractMobilenetV1Params() { - return { - conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'), - conv_1: extractConvPairParams(1), - conv_2: extractConvPairParams(2), - conv_3: extractConvPairParams(3), - conv_4: extractConvPairParams(4), - conv_5: extractConvPairParams(5), - conv_6: extractConvPairParams(6), - conv_7: extractConvPairParams(7), - conv_8: extractConvPairParams(8), - conv_9: extractConvPairParams(9), - conv_10: extractConvPairParams(10), - conv_11: extractConvPairParams(11), - conv_12: extractConvPairParams(12), - conv_13: extractConvPairParams(13) - }; - } - function extractConvParams(prefix, mappedPrefix) { - var filters = extractWeightEntry(prefix + "/weights", 4, mappedPrefix + "/filters"); - var bias = extractWeightEntry(prefix + "/biases", 1, mappedPrefix + "/bias"); - return { filters: filters, bias: bias }; - } - function extractBoxPredictorParams(idx) { - var box_encoding_predictor = extractConvParams("Prediction/BoxPredictor_" + idx + "/BoxEncodingPredictor", "prediction_layer/box_predictor_" + idx + "/box_encoding_predictor"); - var class_predictor = extractConvParams("Prediction/BoxPredictor_" + idx + "/ClassPredictor", "prediction_layer/box_predictor_" + idx + "/class_predictor"); - return { box_encoding_predictor: box_encoding_predictor, class_predictor: class_predictor }; - } - function extractPredictionLayerParams() { - return { - conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'), - conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'), - conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'), - conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'), - conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'), - conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'), - conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'), - conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'), - box_predictor_0: extractBoxPredictorParams(0), - box_predictor_1: extractBoxPredictorParams(1), - box_predictor_2: extractBoxPredictorParams(2), - box_predictor_3: extractBoxPredictorParams(3), - box_predictor_4: extractBoxPredictorParams(4), - box_predictor_5: extractBoxPredictorParams(5) - }; - } - return { - extractMobilenetV1Params: extractMobilenetV1Params, - extractPredictionLayerParams: extractPredictionLayerParams - }; -} -function extractParamsFromWeigthMap(weightMap) { - var paramMappings = []; - var _a = extractorsFactory(weightMap, paramMappings), extractMobilenetV1Params = _a.extractMobilenetV1Params, extractPredictionLayerParams = _a.extractPredictionLayerParams; - var extra_dim = weightMap['Output/extra_dim']; - paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' }); - if (!tfjs_image_recognition_base_1.isTensor3D(extra_dim)) { - throw new Error("expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have " + extra_dim); - } - var params = { - mobilenetv1: extractMobilenetV1Params(), - prediction_layer: extractPredictionLayerParams(), - output_layer: { - extra_dim: extra_dim - } - }; - tfjs_image_recognition_base_1.TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: params, paramMappings: paramMappings }; -} -exports.extractParamsFromWeigthMap = extractParamsFromWeigthMap; -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/extractParamsFromWeigthMap.js.map b/build/commonjs/ssdMobilenetv1/extractParamsFromWeigthMap.js.map deleted file mode 100644 index 3649d067..00000000 --- a/build/commonjs/ssdMobilenetv1/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/index.d.ts b/build/commonjs/ssdMobilenetv1/index.d.ts deleted file mode 100644 index b83f4792..00000000 --- a/build/commonjs/ssdMobilenetv1/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { SsdMobilenetv1 } from './SsdMobilenetv1'; -export * from './SsdMobilenetv1'; -export * from './SsdMobilenetv1Options'; -export declare function createSsdMobilenetv1(weights: Float32Array): SsdMobilenetv1; -export declare function createFaceDetectionNet(weights: Float32Array): SsdMobilenetv1; -export declare class FaceDetectionNet extends SsdMobilenetv1 { -} diff --git a/build/commonjs/ssdMobilenetv1/index.js b/build/commonjs/ssdMobilenetv1/index.js deleted file mode 100644 index 648d3667..00000000 --- a/build/commonjs/ssdMobilenetv1/index.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var SsdMobilenetv1_1 = require("./SsdMobilenetv1"); -tslib_1.__exportStar(require("./SsdMobilenetv1"), exports); -tslib_1.__exportStar(require("./SsdMobilenetv1Options"), exports); -function createSsdMobilenetv1(weights) { - var net = new SsdMobilenetv1_1.SsdMobilenetv1(); - net.extractWeights(weights); - return net; -} -exports.createSsdMobilenetv1 = createSsdMobilenetv1; -function createFaceDetectionNet(weights) { - return createSsdMobilenetv1(weights); -} -exports.createFaceDetectionNet = createFaceDetectionNet; -// alias for backward compatibily -var FaceDetectionNet = /** @class */ (function (_super) { - tslib_1.__extends(FaceDetectionNet, _super); - function FaceDetectionNet() { - return _super !== null && _super.apply(this, arguments) || this; - } - return FaceDetectionNet; -}(SsdMobilenetv1_1.SsdMobilenetv1)); -exports.FaceDetectionNet = FaceDetectionNet; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/index.js.map b/build/commonjs/ssdMobilenetv1/index.js.map deleted file mode 100644 index 996f9483..00000000 --- a/build/commonjs/ssdMobilenetv1/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAElD,2DAAiC;AACjC,kEAAwC;AAExC,SAAgB,oBAAoB,CAAC,OAAqB;IACxD,IAAM,GAAG,GAAG,IAAI,+BAAc,EAAE,CAAA;IAChC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,oDAIC;AAED,SAAgB,sBAAsB,CAAC,OAAqB;IAC1D,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC;AAFD,wDAEC;AAED,iCAAiC;AACjC;IAAsC,4CAAc;IAApD;;IAAsD,CAAC;IAAD,uBAAC;AAAD,CAAC,AAAvD,CAAsC,+BAAc,GAAG;AAA1C,4CAAgB"} \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/mobileNetV1.d.ts b/build/commonjs/ssdMobilenetv1/mobileNetV1.d.ts deleted file mode 100644 index 05f5c5fe..00000000 --- a/build/commonjs/ssdMobilenetv1/mobileNetV1.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { MobileNetV1 } from './types'; -export declare function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params): { - out: tf.Tensor; - conv11: any; -}; diff --git a/build/commonjs/ssdMobilenetv1/mobileNetV1.js b/build/commonjs/ssdMobilenetv1/mobileNetV1.js deleted file mode 100644 index 36839e82..00000000 --- a/build/commonjs/ssdMobilenetv1/mobileNetV1.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -var pointwiseConvLayer_1 = require("./pointwiseConvLayer"); -var epsilon = 0.0010000000474974513; -function depthwiseConvLayer(x, params, strides) { - return tf.tidy(function () { - var out = tf.depthwiseConv2d(x, params.filters, strides, 'same'); - out = tf.batchNorm(out, params.batch_norm_mean, params.batch_norm_variance, params.batch_norm_offset, params.batch_norm_scale, epsilon); - return tf.clipByValue(out, 0, 6); - }); -} -function getStridesForLayerIdx(layerIdx) { - return [2, 4, 6, 12].some(function (idx) { return idx === layerIdx; }) ? [2, 2] : [1, 1]; -} -function mobileNetV1(x, params) { - return tf.tidy(function () { - var conv11 = null; - var out = pointwiseConvLayer_1.pointwiseConvLayer(x, params.conv_0, [2, 2]); - var convPairParams = [ - params.conv_1, - params.conv_2, - params.conv_3, - params.conv_4, - params.conv_5, - params.conv_6, - params.conv_7, - params.conv_8, - params.conv_9, - params.conv_10, - params.conv_11, - params.conv_12, - params.conv_13 - ]; - convPairParams.forEach(function (param, i) { - var layerIdx = i + 1; - var depthwiseConvStrides = getStridesForLayerIdx(layerIdx); - out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides); - out = pointwiseConvLayer_1.pointwiseConvLayer(out, param.pointwise_conv, [1, 1]); - if (layerIdx === 11) { - conv11 = out; - } - }); - if (conv11 === null) { - throw new Error('mobileNetV1 - output of conv layer 11 is null'); - } - return { - out: out, - conv11: conv11 - }; - }); -} -exports.mobileNetV1 = mobileNetV1; -//# sourceMappingURL=mobileNetV1.js.map \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/mobileNetV1.js.map b/build/commonjs/ssdMobilenetv1/mobileNetV1.js.map deleted file mode 100644 index 261e152b..00000000 --- a/build/commonjs/ssdMobilenetv1/mobileNetV1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mobileNetV1.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/mobileNetV1.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,2DAA0D;AAG1D,IAAM,OAAO,GAAG,qBAAqB,CAAA;AAErC,SAAS,kBAAkB,CACzB,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,SAAS,CAChB,GAAG,EACH,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,mBAAmB,EAC1B,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,gBAAgB,EACvB,OAAO,CACR,CAAA;QACD,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,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,SAAgB,WAAW,CAAC,CAAc,EAAE,MAA0B;IACpE,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,MAAM,GAAG,IAAI,CAAA;QACjB,IAAI,GAAG,GAAG,uCAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAEtD,IAAM,cAAc,GAAG;YACrB,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,OAAO;SACf,CAAA;QAED,cAAc,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,CAAC;YAC9B,IAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;YACtB,IAAM,oBAAoB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;YAC5D,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAA;YACzE,GAAG,GAAG,uCAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YAC3D,IAAI,QAAQ,KAAK,EAAE,EAAE;gBACnB,MAAM,GAAG,GAAG,CAAA;aACb;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,MAAM,KAAK,IAAI,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;SACjE;QAED,OAAO;YACL,GAAG,KAAA;YACH,MAAM,EAAE,MAAa;SACtB,CAAA;IAEH,CAAC,CAAC,CAAA;AACJ,CAAC;AA1CD,kCA0CC"} \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/nonMaxSuppression.d.ts b/build/commonjs/ssdMobilenetv1/nonMaxSuppression.d.ts deleted file mode 100644 index 6b215a26..00000000 --- a/build/commonjs/ssdMobilenetv1/nonMaxSuppression.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export declare function nonMaxSuppression(boxes: tf.Tensor2D, scores: number[], maxOutputSize: number, iouThreshold: number, scoreThreshold: number): number[]; diff --git a/build/commonjs/ssdMobilenetv1/nonMaxSuppression.js b/build/commonjs/ssdMobilenetv1/nonMaxSuppression.js deleted file mode 100644 index 1847c306..00000000 --- a/build/commonjs/ssdMobilenetv1/nonMaxSuppression.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -function nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) { - var numBoxes = boxes.shape[0]; - var outputSize = Math.min(maxOutputSize, numBoxes); - var candidates = scores - .map(function (score, boxIndex) { return ({ score: score, boxIndex: boxIndex }); }) - .filter(function (c) { return c.score > scoreThreshold; }) - .sort(function (c1, c2) { return c2.score - c1.score; }); - var suppressFunc = function (x) { return x <= iouThreshold ? 1 : 0; }; - var selected = []; - candidates.forEach(function (c) { - if (selected.length >= outputSize) { - return; - } - var originalScore = c.score; - for (var j = selected.length - 1; j >= 0; --j) { - var iou = IOU(boxes, c.boxIndex, selected[j]); - if (iou === 0.0) { - continue; - } - c.score *= suppressFunc(iou); - if (c.score <= scoreThreshold) { - break; - } - } - if (originalScore === c.score) { - selected.push(c.boxIndex); - } - }); - return selected; -} -exports.nonMaxSuppression = nonMaxSuppression; -function IOU(boxes, i, j) { - var boxesData = boxes.arraySync(); - var yminI = Math.min(boxesData[i][0], boxesData[i][2]); - var xminI = Math.min(boxesData[i][1], boxesData[i][3]); - var ymaxI = Math.max(boxesData[i][0], boxesData[i][2]); - var xmaxI = Math.max(boxesData[i][1], boxesData[i][3]); - var yminJ = Math.min(boxesData[j][0], boxesData[j][2]); - var xminJ = Math.min(boxesData[j][1], boxesData[j][3]); - var ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]); - var xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]); - var areaI = (ymaxI - yminI) * (xmaxI - xminI); - var areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ); - if (areaI <= 0 || areaJ <= 0) { - return 0.0; - } - var intersectionYmin = Math.max(yminI, yminJ); - var intersectionXmin = Math.max(xminI, xminJ); - var intersectionYmax = Math.min(ymaxI, ymaxJ); - var intersectionXmax = Math.min(xmaxI, xmaxJ); - var intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0) * - Math.max(intersectionXmax - intersectionXmin, 0.0); - return intersectionArea / (areaI + areaJ - intersectionArea); -} -//# sourceMappingURL=nonMaxSuppression.js.map \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/nonMaxSuppression.js.map b/build/commonjs/ssdMobilenetv1/nonMaxSuppression.js.map deleted file mode 100644 index b655a6a4..00000000 --- a/build/commonjs/ssdMobilenetv1/nonMaxSuppression.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"nonMaxSuppression.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/nonMaxSuppression.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/outputLayer.d.ts b/build/commonjs/ssdMobilenetv1/outputLayer.d.ts deleted file mode 100644 index 9ce8d135..00000000 --- a/build/commonjs/ssdMobilenetv1/outputLayer.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { OutputLayerParams } from './types'; -export declare function outputLayer(boxPredictions: tf.Tensor4D, classPredictions: tf.Tensor4D, params: OutputLayerParams): { - boxes: tf.Tensor[]; - scores: tf.Tensor[]; -}; diff --git a/build/commonjs/ssdMobilenetv1/outputLayer.js b/build/commonjs/ssdMobilenetv1/outputLayer.js deleted file mode 100644 index 63ec147c..00000000 --- a/build/commonjs/ssdMobilenetv1/outputLayer.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -function getCenterCoordinatesAndSizesLayer(x) { - var vec = tf.unstack(tf.transpose(x, [1, 0])); - var sizes = [ - tf.sub(vec[2], vec[0]), - tf.sub(vec[3], vec[1]) - ]; - var centers = [ - tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))), - tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))) - ]; - return { - sizes: sizes, - centers: centers - }; -} -function decodeBoxesLayer(x0, x1) { - var _a = getCenterCoordinatesAndSizesLayer(x0), sizes = _a.sizes, centers = _a.centers; - var vec = tf.unstack(tf.transpose(x1, [1, 0])); - var div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2)); - var add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]); - var div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2)); - var add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]); - return tf.transpose(tf.stack([ - tf.sub(add0_out, div0_out), - tf.sub(add1_out, div1_out), - tf.add(add0_out, div0_out), - tf.add(add1_out, div1_out) - ]), [1, 0]); -} -function outputLayer(boxPredictions, classPredictions, params) { - return tf.tidy(function () { - var batchSize = boxPredictions.shape[0]; - var boxes = decodeBoxesLayer(tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]), tf.reshape(boxPredictions, [-1, 4])); - boxes = tf.reshape(boxes, [batchSize, (boxes.shape[0] / batchSize), 4]); - var scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1])); - var scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]); - scores = tf.reshape(scores, [batchSize, scores.shape[1]]); - var boxesByBatch = tf.unstack(boxes); - var scoresByBatch = tf.unstack(scores); - return { - boxes: boxesByBatch, - scores: scoresByBatch - }; - }); -} -exports.outputLayer = outputLayer; -//# sourceMappingURL=outputLayer.js.map \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/outputLayer.js.map b/build/commonjs/ssdMobilenetv1/outputLayer.js.map deleted file mode 100644 index 138ef0bd..00000000 --- a/build/commonjs/ssdMobilenetv1/outputLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"outputLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/outputLayer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/pointwiseConvLayer.d.ts b/build/commonjs/ssdMobilenetv1/pointwiseConvLayer.d.ts deleted file mode 100644 index f7a92d55..00000000 --- a/build/commonjs/ssdMobilenetv1/pointwiseConvLayer.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { PointwiseConvParams } from './types'; -export declare function pointwiseConvLayer(x: tf.Tensor4D, params: PointwiseConvParams, strides: [number, number]): tf.Tensor; diff --git a/build/commonjs/ssdMobilenetv1/pointwiseConvLayer.js b/build/commonjs/ssdMobilenetv1/pointwiseConvLayer.js deleted file mode 100644 index 71ace7c1..00000000 --- a/build/commonjs/ssdMobilenetv1/pointwiseConvLayer.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -function pointwiseConvLayer(x, params, strides) { - return tf.tidy(function () { - var out = tf.conv2d(x, params.filters, strides, 'same'); - out = tf.add(out, params.batch_norm_offset); - return tf.clipByValue(out, 0, 6); - }); -} -exports.pointwiseConvLayer = pointwiseConvLayer; -//# sourceMappingURL=pointwiseConvLayer.js.map \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/pointwiseConvLayer.js.map b/build/commonjs/ssdMobilenetv1/pointwiseConvLayer.js.map deleted file mode 100644 index 817ac5be..00000000 --- a/build/commonjs/ssdMobilenetv1/pointwiseConvLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pointwiseConvLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/pointwiseConvLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAI5C,SAAgB,kBAAkB,CAChC,CAAc,EACd,MAA2B,EAC3B,OAAyB;IAEzB,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QACvD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;QAC3C,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,CAAC,CAAC,CAAA;AACJ,CAAC;AAZD,gDAYC"} \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/predictionLayer.d.ts b/build/commonjs/ssdMobilenetv1/predictionLayer.d.ts deleted file mode 100644 index 3f136062..00000000 --- a/build/commonjs/ssdMobilenetv1/predictionLayer.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { PredictionLayerParams } from './types'; -export declare function predictionLayer(x: tf.Tensor4D, conv11: tf.Tensor4D, params: PredictionLayerParams): { - boxPredictions: tf.Tensor; - classPredictions: tf.Tensor; -}; diff --git a/build/commonjs/ssdMobilenetv1/predictionLayer.js b/build/commonjs/ssdMobilenetv1/predictionLayer.js deleted file mode 100644 index 33847b68..00000000 --- a/build/commonjs/ssdMobilenetv1/predictionLayer.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tf = require("@tensorflow/tfjs-core"); -var boxPredictionLayer_1 = require("./boxPredictionLayer"); -var pointwiseConvLayer_1 = require("./pointwiseConvLayer"); -function predictionLayer(x, conv11, params) { - return tf.tidy(function () { - var conv0 = pointwiseConvLayer_1.pointwiseConvLayer(x, params.conv_0, [1, 1]); - var conv1 = pointwiseConvLayer_1.pointwiseConvLayer(conv0, params.conv_1, [2, 2]); - var conv2 = pointwiseConvLayer_1.pointwiseConvLayer(conv1, params.conv_2, [1, 1]); - var conv3 = pointwiseConvLayer_1.pointwiseConvLayer(conv2, params.conv_3, [2, 2]); - var conv4 = pointwiseConvLayer_1.pointwiseConvLayer(conv3, params.conv_4, [1, 1]); - var conv5 = pointwiseConvLayer_1.pointwiseConvLayer(conv4, params.conv_5, [2, 2]); - var conv6 = pointwiseConvLayer_1.pointwiseConvLayer(conv5, params.conv_6, [1, 1]); - var conv7 = pointwiseConvLayer_1.pointwiseConvLayer(conv6, params.conv_7, [2, 2]); - var boxPrediction0 = boxPredictionLayer_1.boxPredictionLayer(conv11, params.box_predictor_0); - var boxPrediction1 = boxPredictionLayer_1.boxPredictionLayer(x, params.box_predictor_1); - var boxPrediction2 = boxPredictionLayer_1.boxPredictionLayer(conv1, params.box_predictor_2); - var boxPrediction3 = boxPredictionLayer_1.boxPredictionLayer(conv3, params.box_predictor_3); - var boxPrediction4 = boxPredictionLayer_1.boxPredictionLayer(conv5, params.box_predictor_4); - var boxPrediction5 = boxPredictionLayer_1.boxPredictionLayer(conv7, params.box_predictor_5); - var boxPredictions = tf.concat([ - boxPrediction0.boxPredictionEncoding, - boxPrediction1.boxPredictionEncoding, - boxPrediction2.boxPredictionEncoding, - boxPrediction3.boxPredictionEncoding, - boxPrediction4.boxPredictionEncoding, - boxPrediction5.boxPredictionEncoding - ], 1); - var classPredictions = tf.concat([ - boxPrediction0.classPrediction, - boxPrediction1.classPrediction, - boxPrediction2.classPrediction, - boxPrediction3.classPrediction, - boxPrediction4.classPrediction, - boxPrediction5.classPrediction - ], 1); - return { - boxPredictions: boxPredictions, - classPredictions: classPredictions - }; - }); -} -exports.predictionLayer = predictionLayer; -//# sourceMappingURL=predictionLayer.js.map \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/predictionLayer.js.map b/build/commonjs/ssdMobilenetv1/predictionLayer.js.map deleted file mode 100644 index 432be637..00000000 --- a/build/commonjs/ssdMobilenetv1/predictionLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"predictionLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/predictionLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,2DAA0D;AAC1D,2DAA0D;AAG1D,SAAgB,eAAe,CAC7B,CAAc,EACd,MAAmB,EACnB,MAA6B;IAE7B,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAM,KAAK,GAAG,uCAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAM,KAAK,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAE9D,IAAM,cAAc,GAAG,uCAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACzE,IAAM,cAAc,GAAG,uCAAkB,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACpE,IAAM,cAAc,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxE,IAAM,cAAc,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxE,IAAM,cAAc,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QACxE,IAAM,cAAc,GAAG,uCAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QAExE,IAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC;YAC/B,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;YACpC,cAAc,CAAC,qBAAqB;SACrC,EAAE,CAAC,CAAgB,CAAA;QAEpB,IAAM,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC;YACjC,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,eAAe;SAC/B,EAAE,CAAC,CAAgB,CAAA;QAEpB,OAAO;YACL,cAAc,gBAAA;YACd,gBAAgB,kBAAA;SACjB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AA9CD,0CA8CC"} \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/types.d.ts b/build/commonjs/ssdMobilenetv1/types.d.ts deleted file mode 100644 index c303dc6a..00000000 --- a/build/commonjs/ssdMobilenetv1/types.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare type PointwiseConvParams = { - filters: tf.Tensor4D; - batch_norm_offset: tf.Tensor1D; -}; -export declare namespace MobileNetV1 { - type DepthwiseConvParams = { - filters: tf.Tensor4D; - batch_norm_scale: tf.Tensor1D; - batch_norm_offset: tf.Tensor1D; - batch_norm_mean: tf.Tensor1D; - batch_norm_variance: tf.Tensor1D; - }; - type ConvPairParams = { - depthwise_conv: DepthwiseConvParams; - pointwise_conv: PointwiseConvParams; - }; - type Params = { - conv_0: PointwiseConvParams; - conv_1: ConvPairParams; - conv_2: ConvPairParams; - conv_3: ConvPairParams; - conv_4: ConvPairParams; - conv_5: ConvPairParams; - conv_6: ConvPairParams; - conv_7: ConvPairParams; - conv_8: ConvPairParams; - conv_9: ConvPairParams; - conv_10: ConvPairParams; - conv_11: ConvPairParams; - conv_12: ConvPairParams; - conv_13: ConvPairParams; - }; -} -export declare type BoxPredictionParams = { - box_encoding_predictor: TfjsImageRecognitionBase.ConvParams; - class_predictor: TfjsImageRecognitionBase.ConvParams; -}; -export declare type PredictionLayerParams = { - conv_0: PointwiseConvParams; - conv_1: PointwiseConvParams; - conv_2: PointwiseConvParams; - conv_3: PointwiseConvParams; - conv_4: PointwiseConvParams; - conv_5: PointwiseConvParams; - conv_6: PointwiseConvParams; - conv_7: PointwiseConvParams; - box_predictor_0: BoxPredictionParams; - box_predictor_1: BoxPredictionParams; - box_predictor_2: BoxPredictionParams; - box_predictor_3: BoxPredictionParams; - box_predictor_4: BoxPredictionParams; - box_predictor_5: BoxPredictionParams; -}; -export declare type OutputLayerParams = { - extra_dim: tf.Tensor3D; -}; -export declare type NetParams = { - mobilenetv1: MobileNetV1.Params; - prediction_layer: PredictionLayerParams; - output_layer: OutputLayerParams; -}; diff --git a/build/commonjs/ssdMobilenetv1/types.js b/build/commonjs/ssdMobilenetv1/types.js deleted file mode 100644 index 11e638d1..00000000 --- a/build/commonjs/ssdMobilenetv1/types.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/commonjs/ssdMobilenetv1/types.js.map b/build/commonjs/ssdMobilenetv1/types.js.map deleted file mode 100644 index 977d82a6..00000000 --- a/build/commonjs/ssdMobilenetv1/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/commonjs/tinyFaceDetector/TinyFaceDetector.d.ts b/build/commonjs/tinyFaceDetector/TinyFaceDetector.d.ts deleted file mode 100644 index 5cef3f56..00000000 --- a/build/commonjs/tinyFaceDetector/TinyFaceDetector.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { Point, TfjsImageRecognitionBase, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes'; -export declare class TinyFaceDetector extends TfjsImageRecognitionBase.TinyYolov2 { - constructor(); - readonly anchors: Point[]; - locateFaces(input: TNetInput, forwardParams: TfjsImageRecognitionBase.ITinyYolov2Options): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TfjsImageRecognitionBase.TinyYolov2NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; - }; -} diff --git a/build/commonjs/tinyFaceDetector/TinyFaceDetector.js b/build/commonjs/tinyFaceDetector/TinyFaceDetector.js deleted file mode 100644 index 1c889fb8..00000000 --- a/build/commonjs/tinyFaceDetector/TinyFaceDetector.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var classes_1 = require("../classes"); -var const_1 = require("./const"); -var TinyFaceDetector = /** @class */ (function (_super) { - tslib_1.__extends(TinyFaceDetector, _super); - function TinyFaceDetector() { - var _this = this; - var config = { - withSeparableConvs: true, - iouThreshold: const_1.IOU_THRESHOLD, - classes: ['face'], - anchors: const_1.BOX_ANCHORS, - meanRgb: const_1.MEAN_RGB, - isFirstLayerConv2d: true, - filterSizes: [3, 16, 32, 64, 128, 256, 512] - }; - _this = _super.call(this, config) || this; - return _this; - } - Object.defineProperty(TinyFaceDetector.prototype, "anchors", { - get: function () { - return this.config.anchors; - }, - enumerable: true, - configurable: true - }); - TinyFaceDetector.prototype.locateFaces = function (input, forwardParams) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var objectDetections; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.detect(input, forwardParams)]; - case 1: - objectDetections = _a.sent(); - return [2 /*return*/, objectDetections.map(function (det) { return new classes_1.FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }); })]; - } - }); - }); - }; - TinyFaceDetector.prototype.getDefaultModelName = function () { - return 'tiny_face_detector_model'; - }; - TinyFaceDetector.prototype.extractParamsFromWeigthMap = function (weightMap) { - return _super.prototype.extractParamsFromWeigthMap.call(this, weightMap); - }; - return TinyFaceDetector; -}(tfjs_image_recognition_base_1.TfjsImageRecognitionBase.TinyYolov2)); -exports.TinyFaceDetector = TinyFaceDetector; -//# sourceMappingURL=TinyFaceDetector.js.map \ No newline at end of file diff --git a/build/commonjs/tinyFaceDetector/TinyFaceDetector.js.map b/build/commonjs/tinyFaceDetector/TinyFaceDetector.js.map deleted file mode 100644 index 06969501..00000000 --- a/build/commonjs/tinyFaceDetector/TinyFaceDetector.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TinyFaceDetector.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/TinyFaceDetector.ts"],"names":[],"mappings":";;;AACA,2EAAyF;AAEzF,sCAA2C;AAC3C,iCAA+D;AAE/D;IAAsC,4CAAmC;IAEvE;QAAA,iBAYC;QAXC,IAAM,MAAM,GAAG;YACb,kBAAkB,EAAE,IAAI;YACxB,YAAY,EAAE,qBAAa;YAC3B,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,mBAAW;YACpB,OAAO,EAAE,gBAAQ;YACjB,kBAAkB,EAAE,IAAI;YACxB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;SAC5C,CAAA;QAED,QAAA,kBAAM,MAAM,CAAC,SAAA;;IACf,CAAC;IAED,sBAAW,qCAAO;aAAlB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QAC5B,CAAC;;;OAAA;IAEY,sCAAW,GAAxB,UAAyB,KAAgB,EAAE,aAA0D;;;;;4BAC1E,qBAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,EAAA;;wBAA1D,gBAAgB,GAAG,SAAuC;wBAChE,sBAAO,gBAAgB,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,IAAI,uBAAa,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAAjG,CAAiG,CAAC,EAAA;;;;KACtI;IAES,8CAAmB,GAA7B;QACE,OAAO,0BAA0B,CAAA;IACnC,CAAC;IAES,qDAA0B,GAApC,UAAqC,SAA4B;QAC/D,OAAO,iBAAM,0BAA0B,YAAC,SAAS,CAAC,CAAA;IACpD,CAAC;IACH,uBAAC;AAAD,CAAC,AAhCD,CAAsC,sDAAwB,CAAC,UAAU,GAgCxE;AAhCY,4CAAgB"} \ No newline at end of file diff --git a/build/commonjs/tinyFaceDetector/TinyFaceDetectorOptions.d.ts b/build/commonjs/tinyFaceDetector/TinyFaceDetectorOptions.d.ts deleted file mode 100644 index c367c5fa..00000000 --- a/build/commonjs/tinyFaceDetector/TinyFaceDetectorOptions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export interface ITinyFaceDetectorOptions extends TfjsImageRecognitionBase.ITinyYolov2Options { -} -export declare class TinyFaceDetectorOptions extends TfjsImageRecognitionBase.TinyYolov2Options { - protected _name: string; -} diff --git a/build/commonjs/tinyFaceDetector/TinyFaceDetectorOptions.js b/build/commonjs/tinyFaceDetector/TinyFaceDetectorOptions.js deleted file mode 100644 index adca75bf..00000000 --- a/build/commonjs/tinyFaceDetector/TinyFaceDetectorOptions.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var TinyFaceDetectorOptions = /** @class */ (function (_super) { - tslib_1.__extends(TinyFaceDetectorOptions, _super); - function TinyFaceDetectorOptions() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._name = 'TinyFaceDetectorOptions'; - return _this; - } - return TinyFaceDetectorOptions; -}(tfjs_image_recognition_base_1.TfjsImageRecognitionBase.TinyYolov2Options)); -exports.TinyFaceDetectorOptions = TinyFaceDetectorOptions; -//# sourceMappingURL=TinyFaceDetectorOptions.js.map \ No newline at end of file diff --git a/build/commonjs/tinyFaceDetector/TinyFaceDetectorOptions.js.map b/build/commonjs/tinyFaceDetector/TinyFaceDetectorOptions.js.map deleted file mode 100644 index 664abe06..00000000 --- a/build/commonjs/tinyFaceDetector/TinyFaceDetectorOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TinyFaceDetectorOptions.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/TinyFaceDetectorOptions.ts"],"names":[],"mappings":";;;AAAA,2EAAuE;AAIvE;IAA6C,mDAA0C;IAAvF;QAAA,qEAEC;QADW,WAAK,GAAW,yBAAyB,CAAA;;IACrD,CAAC;IAAD,8BAAC;AAAD,CAAC,AAFD,CAA6C,sDAAwB,CAAC,iBAAiB,GAEtF;AAFY,0DAAuB"} \ No newline at end of file diff --git a/build/commonjs/tinyFaceDetector/const.d.ts b/build/commonjs/tinyFaceDetector/const.d.ts deleted file mode 100644 index 11a84e48..00000000 --- a/build/commonjs/tinyFaceDetector/const.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Point } from 'tfjs-image-recognition-base'; -export declare const IOU_THRESHOLD = 0.4; -export declare const BOX_ANCHORS: Point[]; -export declare const MEAN_RGB: [number, number, number]; diff --git a/build/commonjs/tinyFaceDetector/const.js b/build/commonjs/tinyFaceDetector/const.js deleted file mode 100644 index 0cd3f8cc..00000000 --- a/build/commonjs/tinyFaceDetector/const.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -exports.IOU_THRESHOLD = 0.4; -exports.BOX_ANCHORS = [ - new tfjs_image_recognition_base_1.Point(1.603231, 2.094468), - new tfjs_image_recognition_base_1.Point(6.041143, 7.080126), - new tfjs_image_recognition_base_1.Point(2.882459, 3.518061), - new tfjs_image_recognition_base_1.Point(4.266906, 5.178857), - new tfjs_image_recognition_base_1.Point(9.041765, 10.66308) -]; -exports.MEAN_RGB = [117.001, 114.697, 97.404]; -//# sourceMappingURL=const.js.map \ No newline at end of file diff --git a/build/commonjs/tinyFaceDetector/const.js.map b/build/commonjs/tinyFaceDetector/const.js.map deleted file mode 100644 index 017ff38f..00000000 --- a/build/commonjs/tinyFaceDetector/const.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/const.ts"],"names":[],"mappings":";;AAAA,2EAAoD;AAEvC,QAAA,aAAa,GAAG,GAAG,CAAA;AAEnB,QAAA,WAAW,GAAG;IACzB,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC9B,CAAA;AAEY,QAAA,QAAQ,GAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA"} \ No newline at end of file diff --git a/build/commonjs/tinyFaceDetector/index.d.ts b/build/commonjs/tinyFaceDetector/index.d.ts deleted file mode 100644 index cde93ca0..00000000 --- a/build/commonjs/tinyFaceDetector/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { TinyFaceDetector } from './TinyFaceDetector'; -export * from './TinyFaceDetector'; -export * from './TinyFaceDetectorOptions'; -export declare function createTinyFaceDetector(weights: Float32Array): TinyFaceDetector; diff --git a/build/commonjs/tinyFaceDetector/index.js b/build/commonjs/tinyFaceDetector/index.js deleted file mode 100644 index 714c0e6c..00000000 --- a/build/commonjs/tinyFaceDetector/index.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var TinyFaceDetector_1 = require("./TinyFaceDetector"); -tslib_1.__exportStar(require("./TinyFaceDetector"), exports); -tslib_1.__exportStar(require("./TinyFaceDetectorOptions"), exports); -function createTinyFaceDetector(weights) { - var net = new TinyFaceDetector_1.TinyFaceDetector(); - net.extractWeights(weights); - return net; -} -exports.createTinyFaceDetector = createTinyFaceDetector; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/tinyFaceDetector/index.js.map b/build/commonjs/tinyFaceDetector/index.js.map deleted file mode 100644 index 723fa8c0..00000000 --- a/build/commonjs/tinyFaceDetector/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/index.ts"],"names":[],"mappings":";;;AAAA,uDAAsD;AAEtD,6DAAmC;AACnC,oEAA0C;AAE1C,SAAgB,sBAAsB,CAAC,OAAqB;IAC1D,IAAM,GAAG,GAAG,IAAI,mCAAgB,EAAE,CAAA;IAClC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAJD,wDAIC"} \ No newline at end of file diff --git a/build/commonjs/tinyYolov2/TinyYolov2.d.ts b/build/commonjs/tinyYolov2/TinyYolov2.d.ts deleted file mode 100644 index c4a286ef..00000000 --- a/build/commonjs/tinyYolov2/TinyYolov2.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { Point, TfjsImageRecognitionBase, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes'; -export declare class TinyYolov2 extends TfjsImageRecognitionBase.TinyYolov2 { - constructor(withSeparableConvs?: boolean); - readonly withSeparableConvs: boolean; - readonly anchors: Point[]; - locateFaces(input: TNetInput, forwardParams: TfjsImageRecognitionBase.ITinyYolov2Options): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TfjsImageRecognitionBase.TinyYolov2NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; - }; -} diff --git a/build/commonjs/tinyYolov2/TinyYolov2.js b/build/commonjs/tinyYolov2/TinyYolov2.js deleted file mode 100644 index ae502d17..00000000 --- a/build/commonjs/tinyYolov2/TinyYolov2.js +++ /dev/null @@ -1,64 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var classes_1 = require("../classes"); -var const_1 = require("./const"); -var TinyYolov2 = /** @class */ (function (_super) { - tslib_1.__extends(TinyYolov2, _super); - function TinyYolov2(withSeparableConvs) { - if (withSeparableConvs === void 0) { withSeparableConvs = true; } - var _this = this; - var config = Object.assign({}, { - withSeparableConvs: withSeparableConvs, - iouThreshold: const_1.IOU_THRESHOLD, - classes: ['face'] - }, withSeparableConvs - ? { - anchors: const_1.BOX_ANCHORS_SEPARABLE, - meanRgb: const_1.MEAN_RGB_SEPARABLE - } - : { - anchors: const_1.BOX_ANCHORS, - withClassScores: true - }); - _this = _super.call(this, config) || this; - return _this; - } - Object.defineProperty(TinyYolov2.prototype, "withSeparableConvs", { - get: function () { - return this.config.withSeparableConvs; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(TinyYolov2.prototype, "anchors", { - get: function () { - return this.config.anchors; - }, - enumerable: true, - configurable: true - }); - TinyYolov2.prototype.locateFaces = function (input, forwardParams) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var objectDetections; - return tslib_1.__generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.detect(input, forwardParams)]; - case 1: - objectDetections = _a.sent(); - return [2 /*return*/, objectDetections.map(function (det) { return new classes_1.FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }); })]; - } - }); - }); - }; - TinyYolov2.prototype.getDefaultModelName = function () { - return this.withSeparableConvs ? const_1.DEFAULT_MODEL_NAME_SEPARABLE_CONV : const_1.DEFAULT_MODEL_NAME; - }; - TinyYolov2.prototype.extractParamsFromWeigthMap = function (weightMap) { - return _super.prototype.extractParamsFromWeigthMap.call(this, weightMap); - }; - return TinyYolov2; -}(tfjs_image_recognition_base_1.TfjsImageRecognitionBase.TinyYolov2)); -exports.TinyYolov2 = TinyYolov2; -//# sourceMappingURL=TinyYolov2.js.map \ No newline at end of file diff --git a/build/commonjs/tinyYolov2/TinyYolov2.js.map b/build/commonjs/tinyYolov2/TinyYolov2.js.map deleted file mode 100644 index 76b40263..00000000 --- a/build/commonjs/tinyYolov2/TinyYolov2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TinyYolov2.js","sourceRoot":"","sources":["../../../src/tinyYolov2/TinyYolov2.ts"],"names":[],"mappings":";;;AACA,2EAAyF;AAEzF,sCAA2C;AAC3C,iCAOiB;AAEjB;IAAgC,sCAAmC;IAEjE,oBAAY,kBAAkC;QAAlC,mCAAA,EAAA,yBAAkC;QAA9C,iBAkBC;QAjBC,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;YAC/B,kBAAkB,oBAAA;YAClB,YAAY,EAAE,qBAAa;YAC3B,OAAO,EAAE,CAAC,MAAM,CAAC;SAClB,EACD,kBAAkB;YAChB,CAAC,CAAC;gBACA,OAAO,EAAE,6BAAqB;gBAC9B,OAAO,EAAE,0BAAkB;aAC5B;YACD,CAAC,CAAC;gBACA,OAAO,EAAE,mBAAW;gBACpB,eAAe,EAAE,IAAI;aACtB,CACF,CAAA;QAED,QAAA,kBAAM,MAAM,CAAC,SAAA;;IACf,CAAC;IAED,sBAAW,0CAAkB;aAA7B;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAA;QACvC,CAAC;;;OAAA;IAED,sBAAW,+BAAO;aAAlB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QAC5B,CAAC;;;OAAA;IAEY,gCAAW,GAAxB,UAAyB,KAAgB,EAAE,aAA0D;;;;;4BAC1E,qBAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,EAAA;;wBAA1D,gBAAgB,GAAG,SAAuC;wBAChE,sBAAO,gBAAgB,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,IAAI,uBAAa,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAAjG,CAAiG,CAAC,EAAA;;;;KACtI;IAES,wCAAmB,GAA7B;QACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,yCAAiC,CAAC,CAAC,CAAC,0BAAkB,CAAA;IACzF,CAAC;IAES,+CAA0B,GAApC,UAAqC,SAA4B;QAC/D,OAAO,iBAAM,0BAA0B,YAAC,SAAS,CAAC,CAAA;IACpD,CAAC;IACH,iBAAC;AAAD,CAAC,AA1CD,CAAgC,sDAAwB,CAAC,UAAU,GA0ClE;AA1CY,gCAAU"} \ No newline at end of file diff --git a/build/commonjs/tinyYolov2/const.d.ts b/build/commonjs/tinyYolov2/const.d.ts deleted file mode 100644 index e64e2478..00000000 --- a/build/commonjs/tinyYolov2/const.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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"; diff --git a/build/commonjs/tinyYolov2/const.js b/build/commonjs/tinyYolov2/const.js deleted file mode 100644 index 72df0e30..00000000 --- a/build/commonjs/tinyYolov2/const.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -exports.IOU_THRESHOLD = 0.4; -exports.BOX_ANCHORS = [ - new tfjs_image_recognition_base_1.Point(0.738768, 0.874946), - new tfjs_image_recognition_base_1.Point(2.42204, 2.65704), - new tfjs_image_recognition_base_1.Point(4.30971, 7.04493), - new tfjs_image_recognition_base_1.Point(10.246, 4.59428), - new tfjs_image_recognition_base_1.Point(12.6868, 11.8741) -]; -exports.BOX_ANCHORS_SEPARABLE = [ - new tfjs_image_recognition_base_1.Point(1.603231, 2.094468), - new tfjs_image_recognition_base_1.Point(6.041143, 7.080126), - new tfjs_image_recognition_base_1.Point(2.882459, 3.518061), - new tfjs_image_recognition_base_1.Point(4.266906, 5.178857), - new tfjs_image_recognition_base_1.Point(9.041765, 10.66308) -]; -exports.MEAN_RGB_SEPARABLE = [117.001, 114.697, 97.404]; -exports.DEFAULT_MODEL_NAME = 'tiny_yolov2_model'; -exports.DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model'; -//# sourceMappingURL=const.js.map \ No newline at end of file diff --git a/build/commonjs/tinyYolov2/const.js.map b/build/commonjs/tinyYolov2/const.js.map deleted file mode 100644 index b0583b69..00000000 --- a/build/commonjs/tinyYolov2/const.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/tinyYolov2/const.ts"],"names":[],"mappings":";;AAAA,2EAAoD;AAEvC,QAAA,aAAa,GAAG,GAAG,CAAA;AAEnB,QAAA,WAAW,GAAG;IACzB,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,IAAI,mCAAK,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,IAAI,mCAAK,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,IAAI,mCAAK,CAAC,OAAO,EAAE,OAAO,CAAC;CAC5B,CAAA;AAEY,QAAA,qBAAqB,GAAG;IACnC,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,mCAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC9B,CAAA;AAEY,QAAA,kBAAkB,GAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAEzE,QAAA,kBAAkB,GAAG,mBAAmB,CAAA;AACxC,QAAA,iCAAiC,GAAG,kCAAkC,CAAA"} \ No newline at end of file diff --git a/build/commonjs/tinyYolov2/index.d.ts b/build/commonjs/tinyYolov2/index.d.ts deleted file mode 100644 index 5721a203..00000000 --- a/build/commonjs/tinyYolov2/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { TinyYolov2 } from './TinyYolov2'; -export { TinyYolov2 }; -export declare function createTinyYolov2(weights: Float32Array, withSeparableConvs?: boolean): TinyYolov2; diff --git a/build/commonjs/tinyYolov2/index.js b/build/commonjs/tinyYolov2/index.js deleted file mode 100644 index 83c4ac92..00000000 --- a/build/commonjs/tinyYolov2/index.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var TinyYolov2_1 = require("./TinyYolov2"); -exports.TinyYolov2 = TinyYolov2_1.TinyYolov2; -function createTinyYolov2(weights, withSeparableConvs) { - if (withSeparableConvs === void 0) { withSeparableConvs = true; } - var net = new TinyYolov2_1.TinyYolov2(withSeparableConvs); - net.extractWeights(weights); - return net; -} -exports.createTinyYolov2 = createTinyYolov2; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/tinyYolov2/index.js.map b/build/commonjs/tinyYolov2/index.js.map deleted file mode 100644 index 13c5f54e..00000000 --- a/build/commonjs/tinyYolov2/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tinyYolov2/index.ts"],"names":[],"mappings":";;AAAA,2CAA0C;AAEjC,qBAFA,uBAAU,CAEA;AAEnB,SAAgB,gBAAgB,CAAC,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"} \ No newline at end of file diff --git a/build/commonjs/xception/TinyXception.d.ts b/build/commonjs/xception/TinyXception.d.ts deleted file mode 100644 index ed7a5f00..00000000 --- a/build/commonjs/xception/TinyXception.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TfjsImageRecognitionBase, TNetInput } from 'tfjs-image-recognition-base'; -import { TinyXceptionParams } from './types'; -export declare class TinyXception extends NeuralNetwork { - private _numMainBlocks; - constructor(numMainBlocks: number); - forwardInput(input: NetInput): tf.Tensor4D; - forward(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TinyXceptionParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: TinyXceptionParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; - }; -} diff --git a/build/commonjs/xception/TinyXception.js b/build/commonjs/xception/TinyXception.js deleted file mode 100644 index 1ce10f84..00000000 --- a/build/commonjs/xception/TinyXception.js +++ /dev/null @@ -1,81 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -var tf = require("@tensorflow/tfjs-core"); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var depthwiseSeparableConv_1 = require("../common/depthwiseSeparableConv"); -var extractParams_1 = require("./extractParams"); -var extractParamsFromWeigthMap_1 = require("./extractParamsFromWeigthMap"); -function conv(x, params, stride) { - return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias); -} -function reductionBlock(x, params, isActivateInput) { - if (isActivateInput === void 0) { isActivateInput = true; } - var out = isActivateInput ? tf.relu(x) : x; - out = depthwiseSeparableConv_1.depthwiseSeparableConv(out, params.separable_conv0, [1, 1]); - out = depthwiseSeparableConv_1.depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]); - out = tf.maxPool(out, [3, 3], [2, 2], 'same'); - out = tf.add(out, conv(x, params.expansion_conv, [2, 2])); - return out; -} -function mainBlock(x, params) { - var out = depthwiseSeparableConv_1.depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]); - out = depthwiseSeparableConv_1.depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]); - out = depthwiseSeparableConv_1.depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]); - out = tf.add(out, x); - return out; -} -var TinyXception = /** @class */ (function (_super) { - tslib_1.__extends(TinyXception, _super); - function TinyXception(numMainBlocks) { - var _this = _super.call(this, 'TinyXception') || this; - _this._numMainBlocks = numMainBlocks; - return _this; - } - TinyXception.prototype.forwardInput = function (input) { - var _this = this; - var params = this.params; - if (!params) { - throw new Error('TinyXception - load model before inference'); - } - return tf.tidy(function () { - var batchTensor = input.toBatchTensor(112, true); - var meanRgb = [122.782, 117.001, 104.298]; - var normalized = tfjs_image_recognition_base_1.normalize(batchTensor, meanRgb).div(tf.scalar(256)); - var out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2])); - out = reductionBlock(out, params.entry_flow.reduction_block_0, false); - out = reductionBlock(out, params.entry_flow.reduction_block_1); - tfjs_image_recognition_base_1.range(_this._numMainBlocks, 0, 1).forEach(function (idx) { - out = mainBlock(out, params.middle_flow["main_block_" + idx]); - }); - out = reductionBlock(out, params.exit_flow.reduction_block); - out = tf.relu(depthwiseSeparableConv_1.depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1])); - return out; - }); - }; - TinyXception.prototype.forward = function (input) { - return tslib_1.__awaiter(this, void 0, void 0, function () { - var _a; - return tslib_1.__generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, tfjs_image_recognition_base_1.toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - TinyXception.prototype.getDefaultModelName = function () { - return 'tiny_xception_model'; - }; - TinyXception.prototype.extractParamsFromWeigthMap = function (weightMap) { - return extractParamsFromWeigthMap_1.extractParamsFromWeigthMap(weightMap, this._numMainBlocks); - }; - TinyXception.prototype.extractParams = function (weights) { - return extractParams_1.extractParams(weights, this._numMainBlocks); - }; - return TinyXception; -}(tfjs_image_recognition_base_1.NeuralNetwork)); -exports.TinyXception = TinyXception; -//# sourceMappingURL=TinyXception.js.map \ No newline at end of file diff --git a/build/commonjs/xception/TinyXception.js.map b/build/commonjs/xception/TinyXception.js.map deleted file mode 100644 index bbab3b1e..00000000 --- a/build/commonjs/xception/TinyXception.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TinyXception.js","sourceRoot":"","sources":["../../../src/xception/TinyXception.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/xception/extractParams.d.ts b/build/commonjs/xception/extractParams.d.ts deleted file mode 100644 index 87826023..00000000 --- a/build/commonjs/xception/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { TinyXceptionParams } from './types'; -export declare function extractParams(weights: Float32Array, numMainBlocks: number): { - params: TinyXceptionParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/xception/extractParams.js b/build/commonjs/xception/extractParams.js deleted file mode 100644 index 2ad4d9a6..00000000 --- a/build/commonjs/xception/extractParams.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -function extractorsFactory(extractWeights, paramMappings) { - var extractConvParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractConvParamsFactory(extractWeights, paramMappings); - var extractSeparableConvParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractSeparableConvParamsFactory(extractWeights, paramMappings); - function extractReductionBlockParams(channelsIn, channelsOut, mappedPrefix) { - var separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, mappedPrefix + "/separable_conv0"); - var separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, mappedPrefix + "/separable_conv1"); - var expansion_conv = extractConvParams(channelsIn, channelsOut, 1, mappedPrefix + "/expansion_conv"); - return { separable_conv0: separable_conv0, separable_conv1: separable_conv1, expansion_conv: expansion_conv }; - } - function extractMainBlockParams(channels, mappedPrefix) { - var separable_conv0 = extractSeparableConvParams(channels, channels, mappedPrefix + "/separable_conv0"); - var separable_conv1 = extractSeparableConvParams(channels, channels, mappedPrefix + "/separable_conv1"); - var separable_conv2 = extractSeparableConvParams(channels, channels, mappedPrefix + "/separable_conv2"); - return { separable_conv0: separable_conv0, separable_conv1: separable_conv1, separable_conv2: separable_conv2 }; - } - return { - extractConvParams: extractConvParams, - extractSeparableConvParams: extractSeparableConvParams, - extractReductionBlockParams: extractReductionBlockParams, - extractMainBlockParams: extractMainBlockParams - }; -} -function extractParams(weights, numMainBlocks) { - var paramMappings = []; - var _a = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var _b = extractorsFactory(extractWeights, paramMappings), extractConvParams = _b.extractConvParams, extractSeparableConvParams = _b.extractSeparableConvParams, extractReductionBlockParams = _b.extractReductionBlockParams, extractMainBlockParams = _b.extractMainBlockParams; - var entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in'); - var entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0'); - var entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1'); - var entry_flow = { - conv_in: entry_flow_conv_in, - reduction_block_0: entry_flow_reduction_block_0, - reduction_block_1: entry_flow_reduction_block_1 - }; - var middle_flow = {}; - tfjs_image_recognition_base_1.range(numMainBlocks, 0, 1).forEach(function (idx) { - middle_flow["main_block_" + idx] = extractMainBlockParams(128, "middle_flow/main_block_" + idx); - }); - var exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block'); - var exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv'); - var exit_flow = { - reduction_block: exit_flow_reduction_block, - separable_conv: exit_flow_separable_conv - }; - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { - paramMappings: paramMappings, - params: { entry_flow: entry_flow, middle_flow: middle_flow, exit_flow: exit_flow } - }; -} -exports.extractParams = extractParams; -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/commonjs/xception/extractParams.js.map b/build/commonjs/xception/extractParams.js.map deleted file mode 100644 index 010947c7..00000000 --- a/build/commonjs/xception/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/xception/extractParams.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/commonjs/xception/extractParamsFromWeigthMap.d.ts b/build/commonjs/xception/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index efd534ec..00000000 --- a/build/commonjs/xception/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { TinyXceptionParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap, numMainBlocks: number): { - params: TinyXceptionParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/commonjs/xception/extractParamsFromWeigthMap.js b/build/commonjs/xception/extractParamsFromWeigthMap.js deleted file mode 100644 index 1980387c..00000000 --- a/build/commonjs/xception/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tfjs_image_recognition_base_1 = require("tfjs-image-recognition-base"); -var loadConvParamsFactory_1 = require("../common/loadConvParamsFactory"); -function loadParamsFactory(weightMap, paramMappings) { - var extractWeightEntry = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - var extractConvParams = loadConvParamsFactory_1.loadConvParamsFactory(extractWeightEntry); - var extractSeparableConvParams = tfjs_image_recognition_base_1.TfjsImageRecognitionBase.loadSeparableConvParamsFactory(extractWeightEntry); - function extractReductionBlockParams(mappedPrefix) { - var separable_conv0 = extractSeparableConvParams(mappedPrefix + "/separable_conv0"); - var separable_conv1 = extractSeparableConvParams(mappedPrefix + "/separable_conv1"); - var expansion_conv = extractConvParams(mappedPrefix + "/expansion_conv"); - return { separable_conv0: separable_conv0, separable_conv1: separable_conv1, expansion_conv: expansion_conv }; - } - function extractMainBlockParams(mappedPrefix) { - var separable_conv0 = extractSeparableConvParams(mappedPrefix + "/separable_conv0"); - var separable_conv1 = extractSeparableConvParams(mappedPrefix + "/separable_conv1"); - var separable_conv2 = extractSeparableConvParams(mappedPrefix + "/separable_conv2"); - return { separable_conv0: separable_conv0, separable_conv1: separable_conv1, separable_conv2: separable_conv2 }; - } - return { - extractConvParams: extractConvParams, - extractSeparableConvParams: extractSeparableConvParams, - extractReductionBlockParams: extractReductionBlockParams, - extractMainBlockParams: extractMainBlockParams - }; -} -function extractParamsFromWeigthMap(weightMap, numMainBlocks) { - var paramMappings = []; - var _a = loadParamsFactory(weightMap, paramMappings), extractConvParams = _a.extractConvParams, extractSeparableConvParams = _a.extractSeparableConvParams, extractReductionBlockParams = _a.extractReductionBlockParams, extractMainBlockParams = _a.extractMainBlockParams; - var entry_flow_conv_in = extractConvParams('entry_flow/conv_in'); - var entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0'); - var entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1'); - var entry_flow = { - conv_in: entry_flow_conv_in, - reduction_block_0: entry_flow_reduction_block_0, - reduction_block_1: entry_flow_reduction_block_1 - }; - var middle_flow = {}; - tfjs_image_recognition_base_1.range(numMainBlocks, 0, 1).forEach(function (idx) { - middle_flow["main_block_" + idx] = extractMainBlockParams("middle_flow/main_block_" + idx); - }); - var exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block'); - var exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv'); - var exit_flow = { - reduction_block: exit_flow_reduction_block, - separable_conv: exit_flow_separable_conv - }; - tfjs_image_recognition_base_1.TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: { entry_flow: entry_flow, middle_flow: middle_flow, exit_flow: exit_flow }, paramMappings: paramMappings }; -} -exports.extractParamsFromWeigthMap = extractParamsFromWeigthMap; -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/commonjs/xception/extractParamsFromWeigthMap.js.map b/build/commonjs/xception/extractParamsFromWeigthMap.js.map deleted file mode 100644 index 841e51a7..00000000 --- a/build/commonjs/xception/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/xception/extractParamsFromWeigthMap.ts"],"names":[],"mappings":";;AACA,2EAA8E;AAE9E,yEAAwE;AAGxE,SAAS,iBAAiB,CAAC,SAAc,EAAE,aAAsD;IAE/F,IAAM,kBAAkB,GAAG,sDAAwB,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEvG,IAAM,iBAAiB,GAAG,6CAAqB,CAAC,kBAAkB,CAAC,CAAA;IACnE,IAAM,0BAA0B,GAAG,sDAAwB,CAAC,8BAA8B,CAAC,kBAAkB,CAAC,CAAA;IAE9G,SAAS,2BAA2B,CAAC,YAAoB;QAEvD,IAAM,eAAe,GAAG,0BAA0B,CAAI,YAAY,qBAAkB,CAAC,CAAA;QACrF,IAAM,eAAe,GAAG,0BAA0B,CAAI,YAAY,qBAAkB,CAAC,CAAA;QACrF,IAAM,cAAc,GAAG,iBAAiB,CAAI,YAAY,oBAAiB,CAAC,CAAA;QAE1E,OAAO,EAAE,eAAe,iBAAA,EAAE,eAAe,iBAAA,EAAE,cAAc,gBAAA,EAAE,CAAA;IAC7D,CAAC;IAED,SAAS,sBAAsB,CAAC,YAAoB;QAElD,IAAM,eAAe,GAAG,0BAA0B,CAAI,YAAY,qBAAkB,CAAC,CAAA;QACrF,IAAM,eAAe,GAAG,0BAA0B,CAAI,YAAY,qBAAkB,CAAC,CAAA;QACrF,IAAM,eAAe,GAAG,0BAA0B,CAAI,YAAY,qBAAkB,CAAC,CAAA;QAErF,OAAO,EAAE,eAAe,iBAAA,EAAE,eAAe,iBAAA,EAAE,eAAe,iBAAA,EAAE,CAAA;IAC9D,CAAC;IAED,OAAO;QACL,iBAAiB,mBAAA;QACjB,0BAA0B,4BAAA;QAC1B,2BAA2B,6BAAA;QAC3B,sBAAsB,wBAAA;KACvB,CAAA;AACH,CAAC;AAED,SAAgB,0BAA0B,CACxC,SAA4B,EAC5B,aAAqB;IAGrB,IAAM,aAAa,GAA4C,EAAE,CAAA;IAE3D,IAAA,gDAKyC,EAJ7C,wCAAiB,EACjB,0DAA0B,EAC1B,4DAA2B,EAC3B,kDAC6C,CAAA;IAE/C,IAAM,kBAAkB,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAA;IAClE,IAAM,4BAA4B,GAAG,2BAA2B,CAAC,8BAA8B,CAAC,CAAA;IAChG,IAAM,4BAA4B,GAAG,2BAA2B,CAAC,8BAA8B,CAAC,CAAA;IAEhG,IAAM,UAAU,GAAG;QACjB,OAAO,EAAE,kBAAkB;QAC3B,iBAAiB,EAAE,4BAA4B;QAC/C,iBAAiB,EAAE,4BAA4B;KAChD,CAAA;IAED,IAAM,WAAW,GAAG,EAAE,CAAA;IACtB,mCAAK,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;QACrC,WAAW,CAAC,gBAAc,GAAK,CAAC,GAAG,sBAAsB,CAAC,4BAA0B,GAAK,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAA;IAEF,IAAM,yBAAyB,GAAG,2BAA2B,CAAC,2BAA2B,CAAC,CAAA;IAC1F,IAAM,wBAAwB,GAAG,0BAA0B,CAAC,0BAA0B,CAAC,CAAA;IAEvF,IAAM,SAAS,GAAG;QAChB,eAAe,EAAE,yBAAyB;QAC1C,cAAc,EAAE,wBAAwB;KACzC,CAAA;IAED,sDAAwB,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,YAAA,EAAE,WAAW,aAAA,EAAE,SAAS,WAAA,EAAE,EAAE,aAAa,eAAA,EAAE,CAAA;AAC1E,CAAC;AAxCD,gEAwCC"} \ No newline at end of file diff --git a/build/commonjs/xception/index.d.ts b/build/commonjs/xception/index.d.ts deleted file mode 100644 index 021d0deb..00000000 --- a/build/commonjs/xception/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './TinyXception'; diff --git a/build/commonjs/xception/index.js b/build/commonjs/xception/index.js deleted file mode 100644 index 1f303a75..00000000 --- a/build/commonjs/xception/index.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./TinyXception"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/commonjs/xception/index.js.map b/build/commonjs/xception/index.js.map deleted file mode 100644 index 8e30ab4a..00000000 --- a/build/commonjs/xception/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/xception/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B"} \ No newline at end of file diff --git a/build/commonjs/xception/types.d.ts b/build/commonjs/xception/types.d.ts deleted file mode 100644 index c4a2de5b..00000000 --- a/build/commonjs/xception/types.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { TfjsImageRecognitionBase } from "tfjs-image-recognition-base"; -export declare type ReductionBlockParams = { - separable_conv0: TfjsImageRecognitionBase.SeparableConvParams; - separable_conv1: TfjsImageRecognitionBase.SeparableConvParams; - expansion_conv: TfjsImageRecognitionBase.ConvParams; -}; -export declare type MainBlockParams = { - separable_conv0: TfjsImageRecognitionBase.SeparableConvParams; - separable_conv1: TfjsImageRecognitionBase.SeparableConvParams; - separable_conv2: TfjsImageRecognitionBase.SeparableConvParams; -}; -export declare type TinyXceptionParams = { - entry_flow: { - conv_in: TfjsImageRecognitionBase.ConvParams; - reduction_block_0: ReductionBlockParams; - reduction_block_1: ReductionBlockParams; - }; - middle_flow: any; - exit_flow: { - reduction_block: ReductionBlockParams; - separable_conv: TfjsImageRecognitionBase.SeparableConvParams; - }; -}; diff --git a/build/commonjs/xception/types.js b/build/commonjs/xception/types.js deleted file mode 100644 index 11e638d1..00000000 --- a/build/commonjs/xception/types.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/commonjs/xception/types.js.map b/build/commonjs/xception/types.js.map deleted file mode 100644 index e49bdd1c..00000000 --- a/build/commonjs/xception/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/xception/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/es6/ageGenderNet/AgeGenderNet.d.ts b/build/es6/ageGenderNet/AgeGenderNet.d.ts deleted file mode 100644 index ee95af34..00000000 --- a/build/es6/ageGenderNet/AgeGenderNet.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base'; -import { TinyXception } from '../xception/TinyXception'; -import { AgeAndGenderPrediction, NetOutput, NetParams } from './types'; -export declare class AgeGenderNet extends NeuralNetwork { - private _faceFeatureExtractor; - constructor(faceFeatureExtractor?: TinyXception); - readonly faceFeatureExtractor: TinyXception; - runNet(input: NetInput | tf.Tensor4D): NetOutput; - forwardInput(input: NetInput | tf.Tensor4D): NetOutput; - forward(input: TNetInput): Promise; - predictAgeAndGender(input: TNetInput): Promise; - protected getDefaultModelName(): string; - dispose(throwOnRedispose?: boolean): void; - loadClassifierParams(weights: Float32Array): void; - extractClassifierParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/es6/ageGenderNet/AgeGenderNet.js b/build/es6/ageGenderNet/AgeGenderNet.js deleted file mode 100644 index 6f0bd7b7..00000000 --- a/build/es6/ageGenderNet/AgeGenderNet.js +++ /dev/null @@ -1,143 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, toNetInput } from 'tfjs-image-recognition-base'; -import { fullyConnectedLayer } from '../common/fullyConnectedLayer'; -import { seperateWeightMaps } from '../faceProcessor/util'; -import { TinyXception } from '../xception/TinyXception'; -import { extractParams } from './extractParams'; -import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; -import { Gender } from './types'; -var AgeGenderNet = /** @class */ (function (_super) { - __extends(AgeGenderNet, _super); - function AgeGenderNet(faceFeatureExtractor) { - if (faceFeatureExtractor === void 0) { faceFeatureExtractor = new TinyXception(2); } - var _this = _super.call(this, 'AgeGenderNet') || this; - _this._faceFeatureExtractor = faceFeatureExtractor; - return _this; - } - Object.defineProperty(AgeGenderNet.prototype, "faceFeatureExtractor", { - get: function () { - return this._faceFeatureExtractor; - }, - enumerable: true, - configurable: true - }); - AgeGenderNet.prototype.runNet = function (input) { - var _this = this; - var params = this.params; - if (!params) { - throw new Error(this._name + " - load model before inference"); - } - return tf.tidy(function () { - var bottleneckFeatures = input instanceof NetInput - ? _this.faceFeatureExtractor.forwardInput(input) - : input; - var pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1); - var age = fullyConnectedLayer(pooled, params.fc.age).as1D(); - var gender = fullyConnectedLayer(pooled, params.fc.gender); - return { age: age, gender: gender }; - }); - }; - AgeGenderNet.prototype.forwardInput = function (input) { - var _this = this; - return tf.tidy(function () { - var _a = _this.runNet(input), age = _a.age, gender = _a.gender; - return { age: age, gender: tf.softmax(gender) }; - }); - }; - AgeGenderNet.prototype.forward = function (input) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - AgeGenderNet.prototype.predictAgeAndGender = function (input) { - return __awaiter(this, void 0, void 0, function () { - var netInput, out, ages, genders, ageAndGenderTensors, predictionsByBatch; - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, toNetInput(input)]; - case 1: - netInput = _a.sent(); - return [4 /*yield*/, this.forwardInput(netInput)]; - case 2: - out = _a.sent(); - ages = tf.unstack(out.age); - genders = tf.unstack(out.gender); - ageAndGenderTensors = ages.map(function (ageTensor, i) { return ({ - ageTensor: ageTensor, - genderTensor: genders[i] - }); }); - return [4 /*yield*/, Promise.all(ageAndGenderTensors.map(function (_a) { - var ageTensor = _a.ageTensor, genderTensor = _a.genderTensor; - return __awaiter(_this, void 0, void 0, function () { - var age, probMale, isMale, gender, genderProbability; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, ageTensor.data()]; - case 1: - age = (_b.sent())[0]; - return [4 /*yield*/, genderTensor.data()]; - case 2: - probMale = (_b.sent())[0]; - isMale = probMale > 0.5; - gender = isMale ? Gender.MALE : Gender.FEMALE; - genderProbability = isMale ? probMale : (1 - probMale); - ageTensor.dispose(); - genderTensor.dispose(); - return [2 /*return*/, { age: age, gender: gender, genderProbability: genderProbability }]; - } - }); - }); - }))]; - case 3: - predictionsByBatch = _a.sent(); - out.age.dispose(); - out.gender.dispose(); - return [2 /*return*/, netInput.isBatchInput - ? predictionsByBatch - : predictionsByBatch[0]]; - } - }); - }); - }; - AgeGenderNet.prototype.getDefaultModelName = function () { - return 'age_gender_model'; - }; - AgeGenderNet.prototype.dispose = function (throwOnRedispose) { - if (throwOnRedispose === void 0) { throwOnRedispose = true; } - this.faceFeatureExtractor.dispose(throwOnRedispose); - _super.prototype.dispose.call(this, throwOnRedispose); - }; - AgeGenderNet.prototype.loadClassifierParams = function (weights) { - var _a = this.extractClassifierParams(weights), params = _a.params, paramMappings = _a.paramMappings; - this._params = params; - this._paramMappings = paramMappings; - }; - AgeGenderNet.prototype.extractClassifierParams = function (weights) { - return extractParams(weights); - }; - AgeGenderNet.prototype.extractParamsFromWeigthMap = function (weightMap) { - var _a = seperateWeightMaps(weightMap), featureExtractorMap = _a.featureExtractorMap, classifierMap = _a.classifierMap; - this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap); - return extractParamsFromWeigthMap(classifierMap); - }; - AgeGenderNet.prototype.extractParams = function (weights) { - var classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2); - var featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize); - var classifierWeights = weights.slice(weights.length - classifierWeightSize); - this.faceFeatureExtractor.extractWeights(featureExtractorWeights); - return this.extractClassifierParams(classifierWeights); - }; - return AgeGenderNet; -}(NeuralNetwork)); -export { AgeGenderNet }; -//# sourceMappingURL=AgeGenderNet.js.map \ No newline at end of file diff --git a/build/es6/ageGenderNet/AgeGenderNet.js.map b/build/es6/ageGenderNet/AgeGenderNet.js.map deleted file mode 100644 index fa575e21..00000000 --- a/build/es6/ageGenderNet/AgeGenderNet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"AgeGenderNet.js","sourceRoot":"","sources":["../../../src/ageGenderNet/AgeGenderNet.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/ageGenderNet/extractParams.d.ts b/build/es6/ageGenderNet/extractParams.d.ts deleted file mode 100644 index 14d45d2b..00000000 --- a/build/es6/ageGenderNet/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/ageGenderNet/extractParams.js b/build/es6/ageGenderNet/extractParams.js deleted file mode 100644 index d06faf8f..00000000 --- a/build/es6/ageGenderNet/extractParams.js +++ /dev/null @@ -1,16 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export function extractParams(weights) { - var paramMappings = []; - var _a = TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var extractFCParams = TfjsImageRecognitionBase.extractFCParamsFactory(extractWeights, paramMappings); - var age = extractFCParams(512, 1, 'fc/age'); - var gender = extractFCParams(512, 2, 'fc/gender'); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { - paramMappings: paramMappings, - params: { fc: { age: age, gender: gender } } - }; -} -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/es6/ageGenderNet/extractParams.js.map b/build/es6/ageGenderNet/extractParams.js.map deleted file mode 100644 index 811777c6..00000000 --- a/build/es6/ageGenderNet/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/ageGenderNet/extractParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAIvE,MAAM,UAAU,aAAa,CAAC,OAAqB;IAEjD,IAAM,aAAa,GAA4C,EAAE,CAAA;IAE3D,IAAA,4DAGqD,EAFzD,kCAAc,EACd,4CACyD,CAAA;IAE3D,IAAM,eAAe,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAEtG,IAAM,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAA;IAC7C,IAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;IAEnD,IAAI,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAkC,mBAAmB,EAAE,CAAC,MAAQ,CAAC,CAAA;KAClF;IAED,OAAO;QACL,aAAa,eAAA;QACb,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAA,EAAE,MAAM,QAAA,EAAE,EAAE;KAChC,CAAA;AACH,CAAC"} \ No newline at end of file diff --git a/build/es6/ageGenderNet/extractParamsFromWeigthMap.d.ts b/build/es6/ageGenderNet/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index 7bf5a66d..00000000 --- a/build/es6/ageGenderNet/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/ageGenderNet/extractParamsFromWeigthMap.js b/build/es6/ageGenderNet/extractParamsFromWeigthMap.js deleted file mode 100644 index 21dadeaa..00000000 --- a/build/es6/ageGenderNet/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,19 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export function extractParamsFromWeigthMap(weightMap) { - var paramMappings = []; - var extractWeightEntry = TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - function extractFcParams(prefix) { - var weights = extractWeightEntry(prefix + "/weights", 2); - var bias = extractWeightEntry(prefix + "/bias", 1); - return { weights: weights, bias: bias }; - } - var params = { - fc: { - age: extractFcParams('fc/age'), - gender: extractFcParams('fc/gender') - } - }; - TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: params, paramMappings: paramMappings }; -} -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/es6/ageGenderNet/extractParamsFromWeigthMap.js.map b/build/es6/ageGenderNet/extractParamsFromWeigthMap.js.map deleted file mode 100644 index e1bd2972..00000000 --- a/build/es6/ageGenderNet/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/ageGenderNet/extractParamsFromWeigthMap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAIvE,MAAM,UAAU,0BAA0B,CACxC,SAA4B;IAG5B,IAAM,aAAa,GAA4C,EAAE,CAAA;IAEjE,IAAM,kBAAkB,GAAG,wBAAwB,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEvG,SAAS,eAAe,CAAC,MAAc;QACrC,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,aAAU,EAAE,CAAC,CAAC,CAAA;QACvE,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,CAAC,CAAA;QACjE,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC;IAED,IAAM,MAAM,GAAG;QACb,EAAE,EAAE;YACF,GAAG,EAAE,eAAe,CAAC,QAAQ,CAAC;YAC9B,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC;SACrC;KACF,CAAA;IAED,wBAAwB,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAClC,CAAC"} \ No newline at end of file diff --git a/build/es6/ageGenderNet/index.d.ts b/build/es6/ageGenderNet/index.d.ts deleted file mode 100644 index 922b2de9..00000000 --- a/build/es6/ageGenderNet/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './AgeGenderNet'; -export * from './types'; diff --git a/build/es6/ageGenderNet/index.js b/build/es6/ageGenderNet/index.js deleted file mode 100644 index 6ef63931..00000000 --- a/build/es6/ageGenderNet/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from './AgeGenderNet'; -export * from './types'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/ageGenderNet/index.js.map b/build/es6/ageGenderNet/index.js.map deleted file mode 100644 index 89040d9f..00000000 --- a/build/es6/ageGenderNet/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ageGenderNet/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/build/es6/ageGenderNet/types.d.ts b/build/es6/ageGenderNet/types.d.ts deleted file mode 100644 index f8410cb5..00000000 --- a/build/es6/ageGenderNet/types.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare type AgeAndGenderPrediction = { - age: number; - gender: Gender; - genderProbability: number; -}; -export declare enum Gender { - FEMALE = "female", - MALE = "male" -} -export declare type NetOutput = { - age: tf.Tensor1D; - gender: tf.Tensor2D; -}; -export declare type NetParams = { - fc: { - age: TfjsImageRecognitionBase.FCParams; - gender: TfjsImageRecognitionBase.FCParams; - }; -}; diff --git a/build/es6/ageGenderNet/types.js b/build/es6/ageGenderNet/types.js deleted file mode 100644 index 6808b5ce..00000000 --- a/build/es6/ageGenderNet/types.js +++ /dev/null @@ -1,6 +0,0 @@ -export var Gender; -(function (Gender) { - Gender["FEMALE"] = "female"; - Gender["MALE"] = "male"; -})(Gender || (Gender = {})); -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/es6/ageGenderNet/types.js.map b/build/es6/ageGenderNet/types.js.map deleted file mode 100644 index 24943699..00000000 --- a/build/es6/ageGenderNet/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ageGenderNet/types.ts"],"names":[],"mappings":"AASA,MAAM,CAAN,IAAY,MAGX;AAHD,WAAY,MAAM;IAChB,2BAAiB,CAAA;IACjB,uBAAa,CAAA;AACf,CAAC,EAHW,MAAM,KAAN,MAAM,QAGjB"} \ No newline at end of file diff --git a/build/es6/classes/FaceDetection.d.ts b/build/es6/classes/FaceDetection.d.ts deleted file mode 100644 index 0fed6f3f..00000000 --- a/build/es6/classes/FaceDetection.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Box, IDimensions, ObjectDetection, Rect } from 'tfjs-image-recognition-base'; -export interface IFaceDetecion { - score: number; - box: Box; -} -export declare class FaceDetection extends ObjectDetection implements IFaceDetecion { - constructor(score: number, relativeBox: Rect, imageDims: IDimensions); - forSize(width: number, height: number): FaceDetection; -} diff --git a/build/es6/classes/FaceDetection.js b/build/es6/classes/FaceDetection.js deleted file mode 100644 index 083fdd7e..00000000 --- a/build/es6/classes/FaceDetection.js +++ /dev/null @@ -1,15 +0,0 @@ -import { __extends } from "tslib"; -import { ObjectDetection } from 'tfjs-image-recognition-base'; -var FaceDetection = /** @class */ (function (_super) { - __extends(FaceDetection, _super); - function FaceDetection(score, relativeBox, imageDims) { - return _super.call(this, score, score, '', relativeBox, imageDims) || this; - } - FaceDetection.prototype.forSize = function (width, height) { - var _a = _super.prototype.forSize.call(this, width, height), score = _a.score, relativeBox = _a.relativeBox, imageDims = _a.imageDims; - return new FaceDetection(score, relativeBox, imageDims); - }; - return FaceDetection; -}(ObjectDetection)); -export { FaceDetection }; -//# sourceMappingURL=FaceDetection.js.map \ No newline at end of file diff --git a/build/es6/classes/FaceDetection.js.map b/build/es6/classes/FaceDetection.js.map deleted file mode 100644 index 7faa6b7d..00000000 --- a/build/es6/classes/FaceDetection.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceDetection.js","sourceRoot":"","sources":["../../../src/classes/FaceDetection.ts"],"names":[],"mappings":";AAAA,OAAO,EAAoB,eAAe,EAAQ,MAAM,6BAA6B,CAAC;AAOtF;IAAmC,iCAAe;IAChD,uBACE,KAAa,EACb,WAAiB,EACjB,SAAsB;eAEtB,kBAAM,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC;IACjD,CAAC;IAEM,+BAAO,GAAd,UAAe,KAAa,EAAE,MAAc;QACpC,IAAA,uDAAgE,EAA9D,gBAAK,EAAE,4BAAW,EAAE,wBAA0C,CAAA;QACtE,OAAO,IAAI,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;IACzD,CAAC;IACH,oBAAC;AAAD,CAAC,AAbD,CAAmC,eAAe,GAajD"} \ No newline at end of file diff --git a/build/es6/classes/FaceLandmarks.d.ts b/build/es6/classes/FaceLandmarks.d.ts deleted file mode 100644 index 5a702d50..00000000 --- a/build/es6/classes/FaceLandmarks.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Box, Dimensions, IBoundingBox, IDimensions, IRect, Point } from 'tfjs-image-recognition-base'; -import { FaceDetection } from './FaceDetection'; -export interface IFaceLandmarks { - positions: Point[]; - shift: Point; -} -export declare class FaceLandmarks implements IFaceLandmarks { - protected _shift: Point; - protected _positions: Point[]; - protected _imgDims: Dimensions; - constructor(relativeFaceLandmarkPositions: Point[], imgDims: IDimensions, shift?: Point); - readonly shift: Point; - readonly imageWidth: number; - readonly imageHeight: number; - readonly positions: Point[]; - readonly relativePositions: Point[]; - forSize(width: number, height: number): T; - shiftBy(x: number, y: number): T; - shiftByPoint(pt: Point): T; - /** - * 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?: FaceDetection | IRect | IBoundingBox | null, options?: { - useDlibAlignment?: boolean; - minBoxPadding?: number; - }): Box; - private alignDlib; - private alignMinBbox; - protected getRefPointsForAlignment(): Point[]; -} diff --git a/build/es6/classes/FaceLandmarks.js b/build/es6/classes/FaceLandmarks.js deleted file mode 100644 index 41df9739..00000000 --- a/build/es6/classes/FaceLandmarks.js +++ /dev/null @@ -1,100 +0,0 @@ -import { Box, Dimensions, getCenterPoint, Point, Rect } from 'tfjs-image-recognition-base'; -import { minBbox } from '../minBbox'; -import { FaceDetection } from './FaceDetection'; -// face alignment constants -var relX = 0.5; -var relY = 0.43; -var relScale = 0.45; -var FaceLandmarks = /** @class */ (function () { - function FaceLandmarks(relativeFaceLandmarkPositions, imgDims, shift) { - if (shift === void 0) { shift = new Point(0, 0); } - var width = imgDims.width, height = imgDims.height; - this._imgDims = new Dimensions(width, height); - this._shift = shift; - this._positions = relativeFaceLandmarkPositions.map(function (pt) { return pt.mul(new Point(width, height)).add(shift); }); - } - Object.defineProperty(FaceLandmarks.prototype, "shift", { - get: function () { return new Point(this._shift.x, this._shift.y); }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FaceLandmarks.prototype, "imageWidth", { - get: function () { return this._imgDims.width; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FaceLandmarks.prototype, "imageHeight", { - get: function () { return this._imgDims.height; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FaceLandmarks.prototype, "positions", { - get: function () { return this._positions; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FaceLandmarks.prototype, "relativePositions", { - get: function () { - var _this = this; - return this._positions.map(function (pt) { return pt.sub(_this._shift).div(new Point(_this.imageWidth, _this.imageHeight)); }); - }, - enumerable: true, - configurable: true - }); - FaceLandmarks.prototype.forSize = function (width, height) { - return new this.constructor(this.relativePositions, { width: width, height: height }); - }; - FaceLandmarks.prototype.shiftBy = function (x, y) { - return new this.constructor(this.relativePositions, this._imgDims, new Point(x, y)); - }; - FaceLandmarks.prototype.shiftByPoint = function (pt) { - return this.shiftBy(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, options) { - if (options === void 0) { options = {}; } - if (detection) { - var box = detection instanceof FaceDetection - ? detection.box.floor() - : new Box(detection); - return this.shiftBy(box.x, box.y).align(null, options); - } - var _a = Object.assign({}, { useDlibAlignment: false, minBoxPadding: 0.2 }, options), useDlibAlignment = _a.useDlibAlignment, minBoxPadding = _a.minBoxPadding; - if (useDlibAlignment) { - return this.alignDlib(); - } - return this.alignMinBbox(minBoxPadding); - }; - FaceLandmarks.prototype.alignDlib = function () { - var centers = this.getRefPointsForAlignment(); - var 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(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(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y)); - }; - FaceLandmarks.prototype.alignMinBbox = function (padding) { - var box = minBbox(this.positions); - return box.pad(box.width * padding, box.height * padding); - }; - FaceLandmarks.prototype.getRefPointsForAlignment = function () { - throw new Error('getRefPointsForAlignment not implemented by base class'); - }; - return FaceLandmarks; -}()); -export { FaceLandmarks }; -//# sourceMappingURL=FaceLandmarks.js.map \ No newline at end of file diff --git a/build/es6/classes/FaceLandmarks.js.map b/build/es6/classes/FaceLandmarks.js.map deleted file mode 100644 index f37565ed..00000000 --- a/build/es6/classes/FaceLandmarks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceLandmarks.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/classes/FaceLandmarks5.d.ts b/build/es6/classes/FaceLandmarks5.d.ts deleted file mode 100644 index 554ce2f1..00000000 --- a/build/es6/classes/FaceLandmarks5.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Point } from 'tfjs-image-recognition-base'; -import { FaceLandmarks } from './FaceLandmarks'; -export declare class FaceLandmarks5 extends FaceLandmarks { - protected getRefPointsForAlignment(): Point[]; -} diff --git a/build/es6/classes/FaceLandmarks5.js b/build/es6/classes/FaceLandmarks5.js deleted file mode 100644 index 9258b4a2..00000000 --- a/build/es6/classes/FaceLandmarks5.js +++ /dev/null @@ -1,20 +0,0 @@ -import { __extends } from "tslib"; -import { getCenterPoint } from 'tfjs-image-recognition-base'; -import { FaceLandmarks } from './FaceLandmarks'; -var FaceLandmarks5 = /** @class */ (function (_super) { - __extends(FaceLandmarks5, _super); - function FaceLandmarks5() { - return _super !== null && _super.apply(this, arguments) || this; - } - FaceLandmarks5.prototype.getRefPointsForAlignment = function () { - var pts = this.positions; - return [ - pts[0], - pts[1], - getCenterPoint([pts[3], pts[4]]) - ]; - }; - return FaceLandmarks5; -}(FaceLandmarks)); -export { FaceLandmarks5 }; -//# sourceMappingURL=FaceLandmarks5.js.map \ No newline at end of file diff --git a/build/es6/classes/FaceLandmarks5.js.map b/build/es6/classes/FaceLandmarks5.js.map deleted file mode 100644 index 3e01650a..00000000 --- a/build/es6/classes/FaceLandmarks5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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,kCAAa;IAAjD;;IAUA,CAAC;IARW,iDAAwB,GAAlC;QACE,IAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAA;QAC1B,OAAO;YACL,GAAG,CAAC,CAAC,CAAC;YACN,GAAG,CAAC,CAAC,CAAC;YACN,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC,CAAA;IACH,CAAC;IACH,qBAAC;AAAD,CAAC,AAVD,CAAoC,aAAa,GAUhD"} \ No newline at end of file diff --git a/build/es6/classes/FaceLandmarks68.d.ts b/build/es6/classes/FaceLandmarks68.d.ts deleted file mode 100644 index 5ac3974e..00000000 --- a/build/es6/classes/FaceLandmarks68.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Point } from 'tfjs-image-recognition-base'; -import { FaceLandmarks } from '../classes/FaceLandmarks'; -export declare class FaceLandmarks68 extends FaceLandmarks { - getJawOutline(): Point[]; - getLeftEyeBrow(): Point[]; - getRightEyeBrow(): Point[]; - getNose(): Point[]; - getLeftEye(): Point[]; - getRightEye(): Point[]; - getMouth(): Point[]; - protected getRefPointsForAlignment(): Point[]; -} diff --git a/build/es6/classes/FaceLandmarks68.js b/build/es6/classes/FaceLandmarks68.js deleted file mode 100644 index c0a2162b..00000000 --- a/build/es6/classes/FaceLandmarks68.js +++ /dev/null @@ -1,40 +0,0 @@ -import { __extends } from "tslib"; -import { getCenterPoint } from 'tfjs-image-recognition-base'; -import { FaceLandmarks } from '../classes/FaceLandmarks'; -var FaceLandmarks68 = /** @class */ (function (_super) { - __extends(FaceLandmarks68, _super); - function FaceLandmarks68() { - return _super !== null && _super.apply(this, arguments) || this; - } - FaceLandmarks68.prototype.getJawOutline = function () { - return this.positions.slice(0, 17); - }; - FaceLandmarks68.prototype.getLeftEyeBrow = function () { - return this.positions.slice(17, 22); - }; - FaceLandmarks68.prototype.getRightEyeBrow = function () { - return this.positions.slice(22, 27); - }; - FaceLandmarks68.prototype.getNose = function () { - return this.positions.slice(27, 36); - }; - FaceLandmarks68.prototype.getLeftEye = function () { - return this.positions.slice(36, 42); - }; - FaceLandmarks68.prototype.getRightEye = function () { - return this.positions.slice(42, 48); - }; - FaceLandmarks68.prototype.getMouth = function () { - return this.positions.slice(48, 68); - }; - FaceLandmarks68.prototype.getRefPointsForAlignment = function () { - return [ - this.getLeftEye(), - this.getRightEye(), - this.getMouth() - ].map(getCenterPoint); - }; - return FaceLandmarks68; -}(FaceLandmarks)); -export { FaceLandmarks68 }; -//# sourceMappingURL=FaceLandmarks68.js.map \ No newline at end of file diff --git a/build/es6/classes/FaceLandmarks68.js.map b/build/es6/classes/FaceLandmarks68.js.map deleted file mode 100644 index 1b3de221..00000000 --- a/build/es6/classes/FaceLandmarks68.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceLandmarks68.js","sourceRoot":"","sources":["../../../src/classes/FaceLandmarks68.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAS,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;IAAqC,mCAAa;IAAlD;;IAoCA,CAAC;IAnCQ,uCAAa,GAApB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACpC,CAAC;IAEM,wCAAc,GAArB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,yCAAe,GAAtB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,iCAAO,GAAd;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,oCAAU,GAAjB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,qCAAW,GAAlB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAEM,kCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAES,kDAAwB,GAAlC;QACE,OAAO;YACL,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE;SAChB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACvB,CAAC;IACH,sBAAC;AAAD,CAAC,AApCD,CAAqC,aAAa,GAoCjD"} \ No newline at end of file diff --git a/build/es6/classes/FaceMatch.d.ts b/build/es6/classes/FaceMatch.d.ts deleted file mode 100644 index 3c0befef..00000000 --- a/build/es6/classes/FaceMatch.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface IFaceMatch { - label: string; - distance: number; -} -export declare class FaceMatch implements IFaceMatch { - private _label; - private _distance; - constructor(label: string, distance: number); - readonly label: string; - readonly distance: number; - toString(withDistance?: boolean): string; -} diff --git a/build/es6/classes/FaceMatch.js b/build/es6/classes/FaceMatch.js deleted file mode 100644 index 525568b1..00000000 --- a/build/es6/classes/FaceMatch.js +++ /dev/null @@ -1,24 +0,0 @@ -import { round } from 'tfjs-image-recognition-base'; -var FaceMatch = /** @class */ (function () { - function FaceMatch(label, distance) { - this._label = label; - this._distance = distance; - } - Object.defineProperty(FaceMatch.prototype, "label", { - get: function () { return this._label; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FaceMatch.prototype, "distance", { - get: function () { return this._distance; }, - enumerable: true, - configurable: true - }); - FaceMatch.prototype.toString = function (withDistance) { - if (withDistance === void 0) { withDistance = true; } - return "" + this.label + (withDistance ? " (" + round(this.distance) + ")" : ''); - }; - return FaceMatch; -}()); -export { FaceMatch }; -//# sourceMappingURL=FaceMatch.js.map \ No newline at end of file diff --git a/build/es6/classes/FaceMatch.js.map b/build/es6/classes/FaceMatch.js.map deleted file mode 100644 index 0ca7ed77..00000000 --- a/build/es6/classes/FaceMatch.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceMatch.js","sourceRoot":"","sources":["../../../src/classes/FaceMatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAOpD;IAIE,mBAAY,KAAa,EAAE,QAAgB;QACzC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;IAC3B,CAAC;IAED,sBAAW,4BAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IACjD,sBAAW,+BAAQ;aAAnB,cAAgC,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;;;OAAA;IAEhD,4BAAQ,GAAf,UAAgB,YAA4B;QAA5B,6BAAA,EAAA,mBAA4B;QAC1C,OAAO,KAAG,IAAI,CAAC,KAAK,IAAG,YAAY,CAAC,CAAC,CAAC,OAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAA;IAC3E,CAAC;IACH,gBAAC;AAAD,CAAC,AAfD,IAeC"} \ No newline at end of file diff --git a/build/es6/classes/LabeledFaceDescriptors.d.ts b/build/es6/classes/LabeledFaceDescriptors.d.ts deleted file mode 100644 index 1e21ae50..00000000 --- a/build/es6/classes/LabeledFaceDescriptors.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export declare class LabeledFaceDescriptors { - private _label; - private _descriptors; - constructor(label: string, descriptors: Float32Array[]); - readonly label: string; - readonly descriptors: Float32Array[]; - toJSON(): any; - static fromJSON(json: any): LabeledFaceDescriptors; -} diff --git a/build/es6/classes/LabeledFaceDescriptors.js b/build/es6/classes/LabeledFaceDescriptors.js deleted file mode 100644 index 3f2672fe..00000000 --- a/build/es6/classes/LabeledFaceDescriptors.js +++ /dev/null @@ -1,37 +0,0 @@ -var LabeledFaceDescriptors = /** @class */ (function () { - function LabeledFaceDescriptors(label, descriptors) { - if (!(typeof label === 'string')) { - throw new Error('LabeledFaceDescriptors - constructor expected label to be a string'); - } - if (!Array.isArray(descriptors) || descriptors.some(function (desc) { return !(desc instanceof Float32Array); })) { - throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array'); - } - this._label = label; - this._descriptors = descriptors; - } - Object.defineProperty(LabeledFaceDescriptors.prototype, "label", { - get: function () { return this._label; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(LabeledFaceDescriptors.prototype, "descriptors", { - get: function () { return this._descriptors; }, - enumerable: true, - configurable: true - }); - LabeledFaceDescriptors.prototype.toJSON = function () { - return { - label: this.label, - descriptors: this.descriptors.map(function (d) { return Array.from(d); }) - }; - }; - LabeledFaceDescriptors.fromJSON = function (json) { - var descriptors = json.descriptors.map(function (d) { - return new Float32Array(d); - }); - return new LabeledFaceDescriptors(json.label, descriptors); - }; - return LabeledFaceDescriptors; -}()); -export { LabeledFaceDescriptors }; -//# sourceMappingURL=LabeledFaceDescriptors.js.map \ No newline at end of file diff --git a/build/es6/classes/LabeledFaceDescriptors.js.map b/build/es6/classes/LabeledFaceDescriptors.js.map deleted file mode 100644 index 6edc5a14..00000000 --- a/build/es6/classes/LabeledFaceDescriptors.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"LabeledFaceDescriptors.js","sourceRoot":"","sources":["../../../src/classes/LabeledFaceDescriptors.ts"],"names":[],"mappings":"AAAA;IAIE,gCAAY,KAAa,EAAE,WAA2B;QACpD,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;SACtF;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,CAAC,IAAI,YAAY,YAAY,CAAC,EAA/B,CAA+B,CAAC,EAAE;YAC5F,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;SAC5G;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;IACjC,CAAC;IAED,sBAAW,yCAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IACjD,sBAAW,+CAAW;aAAtB,cAA2C,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;;;OAAA;IAE9D,uCAAM,GAAb;QACE,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAb,CAAa,CAAC;SACxD,CAAC;IACJ,CAAC;IAEa,+BAAQ,GAAtB,UAAuB,IAAS;QAC9B,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,CAAM;YAC9C,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;IAEH,6BAAC;AAAD,CAAC,AAlCD,IAkCC"} \ No newline at end of file diff --git a/build/es6/classes/index.d.ts b/build/es6/classes/index.d.ts deleted file mode 100644 index 8d1b8ffe..00000000 --- a/build/es6/classes/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './FaceDetection'; -export * from './FaceLandmarks'; -export * from './FaceLandmarks5'; -export * from './FaceLandmarks68'; -export * from './FaceMatch'; -export * from './LabeledFaceDescriptors'; diff --git a/build/es6/classes/index.js b/build/es6/classes/index.js deleted file mode 100644 index d7e67f86..00000000 --- a/build/es6/classes/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export * from './FaceDetection'; -export * from './FaceLandmarks'; -export * from './FaceLandmarks5'; -export * from './FaceLandmarks68'; -export * from './FaceMatch'; -export * from './LabeledFaceDescriptors'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/classes/index.js.map b/build/es6/classes/index.js.map deleted file mode 100644 index 958aac03..00000000 --- a/build/es6/classes/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC"} \ No newline at end of file diff --git a/build/es6/common/depthwiseSeparableConv.d.ts b/build/es6/common/depthwiseSeparableConv.d.ts deleted file mode 100644 index 10ada1a9..00000000 --- a/build/es6/common/depthwiseSeparableConv.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare function depthwiseSeparableConv(x: tf.Tensor4D, params: TfjsImageRecognitionBase.SeparableConvParams, stride: [number, number]): tf.Tensor4D; diff --git a/build/es6/common/depthwiseSeparableConv.js b/build/es6/common/depthwiseSeparableConv.js deleted file mode 100644 index 7c8669d2..00000000 --- a/build/es6/common/depthwiseSeparableConv.js +++ /dev/null @@ -1,9 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export function depthwiseSeparableConv(x, params, stride) { - return tf.tidy(function () { - var out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same'); - out = tf.add(out, params.bias); - return out; - }); -} -//# sourceMappingURL=depthwiseSeparableConv.js.map \ No newline at end of file diff --git a/build/es6/common/depthwiseSeparableConv.js.map b/build/es6/common/depthwiseSeparableConv.js.map deleted file mode 100644 index 304a97e8..00000000 --- a/build/es6/common/depthwiseSeparableConv.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"depthwiseSeparableConv.js","sourceRoot":"","sources":["../../../src/common/depthwiseSeparableConv.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG5C,MAAM,UAAU,sBAAsB,CACpC,CAAc,EACd,MAAoD,EACpD,MAAwB;IAExB,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAI,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACjG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9B,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC"} \ No newline at end of file diff --git a/build/es6/common/fullyConnectedLayer.d.ts b/build/es6/common/fullyConnectedLayer.d.ts deleted file mode 100644 index baf23083..00000000 --- a/build/es6/common/fullyConnectedLayer.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare function fullyConnectedLayer(x: tf.Tensor2D, params: TfjsImageRecognitionBase.FCParams): tf.Tensor2D; diff --git a/build/es6/common/fullyConnectedLayer.js b/build/es6/common/fullyConnectedLayer.js deleted file mode 100644 index 1bf3c127..00000000 --- a/build/es6/common/fullyConnectedLayer.js +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export function fullyConnectedLayer(x, params) { - return tf.tidy(function () { - return tf.add(tf.matMul(x, params.weights), params.bias); - }); -} -//# sourceMappingURL=fullyConnectedLayer.js.map \ No newline at end of file diff --git a/build/es6/common/fullyConnectedLayer.js.map b/build/es6/common/fullyConnectedLayer.js.map deleted file mode 100644 index 45c7b43b..00000000 --- a/build/es6/common/fullyConnectedLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fullyConnectedLayer.js","sourceRoot":"","sources":["../../../src/common/fullyConnectedLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG5C,MAAM,UAAU,mBAAmB,CACjC,CAAc,EACd,MAAyC;IAEzC,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 diff --git a/build/es6/common/loadConvParamsFactory.d.ts b/build/es6/common/loadConvParamsFactory.d.ts deleted file mode 100644 index 9547de84..00000000 --- a/build/es6/common/loadConvParamsFactory.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T): (prefix: string) => TfjsImageRecognitionBase.ConvParams; diff --git a/build/es6/common/loadConvParamsFactory.js b/build/es6/common/loadConvParamsFactory.js deleted file mode 100644 index 447b1228..00000000 --- a/build/es6/common/loadConvParamsFactory.js +++ /dev/null @@ -1,8 +0,0 @@ -export function loadConvParamsFactory(extractWeightEntry) { - return function (prefix) { - var filters = extractWeightEntry(prefix + "/filters", 4); - var bias = extractWeightEntry(prefix + "/bias", 1); - return { filters: filters, bias: bias }; - }; -} -//# sourceMappingURL=loadConvParamsFactory.js.map \ No newline at end of file diff --git a/build/es6/common/loadConvParamsFactory.js.map b/build/es6/common/loadConvParamsFactory.js.map deleted file mode 100644 index 5beb07a0..00000000 --- a/build/es6/common/loadConvParamsFactory.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"loadConvParamsFactory.js","sourceRoot":"","sources":["../../../src/common/loadConvParamsFactory.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,qBAAqB,CAAC,kBAAqE;IACzG,OAAO,UAAS,MAAc;QAC5B,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,aAAU,EAAE,CAAC,CAAC,CAAA;QACvE,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,CAAC,CAAA;QAEjE,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC,CAAA;AACH,CAAC"} \ No newline at end of file diff --git a/build/es6/dom/extractFaceTensors.d.ts b/build/es6/dom/extractFaceTensors.d.ts deleted file mode 100644 index 429ea46e..00000000 --- a/build/es6/dom/extractFaceTensors.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { Rect } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -/** - * Extracts the tensors of the image regions containing the detected faces. - * Useful if you want to compute the face descriptors for the face images. - * Using this method is faster then extracting a canvas for each face and - * converting them to tensors individually. - * - * @param imageTensor The image tensor that face detection has been performed on. - * @param detections The face detection results or face bounding boxes for that image. - * @returns Tensors of the corresponding image region for each detected face. - */ -export declare function extractFaceTensors(imageTensor: tf.Tensor3D | tf.Tensor4D, detections: Array): Promise; diff --git a/build/es6/dom/extractFaceTensors.js b/build/es6/dom/extractFaceTensors.js deleted file mode 100644 index d003dfdb..00000000 --- a/build/es6/dom/extractFaceTensors.js +++ /dev/null @@ -1,39 +0,0 @@ -import { __awaiter, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { isTensor4D, isTensor3D } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -/** - * Extracts the tensors of the image regions containing the detected faces. - * Useful if you want to compute the face descriptors for the face images. - * Using this method is faster then extracting a canvas for each face and - * converting them to tensors individually. - * - * @param imageTensor The image tensor that face detection has been performed on. - * @param detections The face detection results or face bounding boxes for that image. - * @returns Tensors of the corresponding image region for each detected face. - */ -export function extractFaceTensors(imageTensor, detections) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) { - throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D'); - } - if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) { - throw new Error('extractFaceTensors - batchSize > 1 not supported'); - } - return [2 /*return*/, tf.tidy(function () { - var _a = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0), imgHeight = _a[0], imgWidth = _a[1], numChannels = _a[2]; - var boxes = detections.map(function (det) { return det instanceof FaceDetection - ? det.forSize(imgWidth, imgHeight).box - : det; }) - .map(function (box) { return box.clipAtImageBorders(imgWidth, imgHeight); }); - var faceTensors = boxes.map(function (_a) { - var x = _a.x, y = _a.y, width = _a.width, height = _a.height; - return tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]); - }); - return faceTensors; - })]; - }); - }); -} -//# sourceMappingURL=extractFaceTensors.js.map \ No newline at end of file diff --git a/build/es6/dom/extractFaceTensors.js.map b/build/es6/dom/extractFaceTensors.js.map deleted file mode 100644 index 5f9d5647..00000000 --- a/build/es6/dom/extractFaceTensors.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractFaceTensors.js","sourceRoot":"","sources":["../../../src/dom/extractFaceTensors.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAQ,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE3E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,UAAgB,kBAAkB,CACtC,WAAsC,EACtC,UAAuC;;;YAGvC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;gBACxD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;aAC7E;YAED,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;gBACvD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;aACpE;YAED,sBAAO,EAAE,CAAC,IAAI,CAAC;oBACP,IAAA,6DAA6F,EAA5F,iBAAS,EAAE,gBAAQ,EAAE,mBAAuE,CAAA;oBAEnG,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,aAAa;wBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,GAAG;wBACtC,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;yBACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAA3C,CAA2C,CAAC,CAAA;oBAE1D,IAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;4BAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;wBAClD,OAAA,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;oBAAvG,CAAuG,CACxG,CAAA;oBAED,OAAO,WAAW,CAAA;gBACpB,CAAC,CAAC,EAAA;;;CACH"} \ No newline at end of file diff --git a/build/es6/dom/extractFaces.d.ts b/build/es6/dom/extractFaces.d.ts deleted file mode 100644 index d7bf0e60..00000000 --- a/build/es6/dom/extractFaces.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Rect, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -/** - * Extracts the image regions containing the detected faces. - * - * @param input The image that face detection has been performed on. - * @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. - */ -export declare function extractFaces(input: TNetInput, detections: Array): Promise; diff --git a/build/es6/dom/extractFaces.js b/build/es6/dom/extractFaces.js deleted file mode 100644 index bdc2628b..00000000 --- a/build/es6/dom/extractFaces.js +++ /dev/null @@ -1,54 +0,0 @@ -import { __awaiter, __generator } from "tslib"; -import { createCanvas, env, getContext2dOrThrow, imageTensorToCanvas, toNetInput, } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -/** - * Extracts the image regions containing the detected faces. - * - * @param input The image that face detection has been performed on. - * @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. - */ -export function extractFaces(input, detections) { - return __awaiter(this, void 0, void 0, function () { - var Canvas, canvas, netInput, tensorOrCanvas, _a, ctx, boxes; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - Canvas = env.getEnv().Canvas; - canvas = input; - if (!!(input instanceof Canvas)) return [3 /*break*/, 5]; - return [4 /*yield*/, toNetInput(input)]; - case 1: - netInput = _b.sent(); - if (netInput.batchSize > 1) { - throw new Error('extractFaces - batchSize > 1 not supported'); - } - tensorOrCanvas = netInput.getInput(0); - if (!(tensorOrCanvas instanceof Canvas)) return [3 /*break*/, 2]; - _a = tensorOrCanvas; - return [3 /*break*/, 4]; - case 2: return [4 /*yield*/, imageTensorToCanvas(tensorOrCanvas)]; - case 3: - _a = _b.sent(); - _b.label = 4; - case 4: - canvas = _a; - _b.label = 5; - case 5: - ctx = getContext2dOrThrow(canvas); - boxes = detections.map(function (det) { return det instanceof FaceDetection - ? det.forSize(canvas.width, canvas.height).box.floor() - : det; }) - .map(function (box) { return box.clipAtImageBorders(canvas.width, canvas.height); }); - return [2 /*return*/, boxes.map(function (_a) { - var x = _a.x, y = _a.y, width = _a.width, height = _a.height; - var faceImg = createCanvas({ width: width, height: height }); - getContext2dOrThrow(faceImg) - .putImageData(ctx.getImageData(x, y, width, height), 0, 0); - return faceImg; - })]; - } - }); - }); -} -//# sourceMappingURL=extractFaces.js.map \ No newline at end of file diff --git a/build/es6/dom/extractFaces.js.map b/build/es6/dom/extractFaces.js.map deleted file mode 100644 index 375cdc4c..00000000 --- a/build/es6/dom/extractFaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractFaces.js","sourceRoot":"","sources":["../../../src/dom/extractFaces.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,YAAY,EACZ,GAAG,EACH,mBAAmB,EACnB,mBAAmB,EAGnB,UAAU,GACX,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,UAAgB,YAAY,CAChC,KAAgB,EAChB,UAAuC;;;;;;oBAG/B,MAAM,GAAK,GAAG,CAAC,MAAM,EAAE,OAAjB,CAAiB;oBAE3B,MAAM,GAAG,KAA0B,CAAA;yBAEnC,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC,EAA1B,wBAA0B;oBACX,qBAAM,UAAU,CAAC,KAAK,CAAC,EAAA;;oBAAlC,QAAQ,GAAG,SAAuB;oBAExC,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC1B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;qBAC9D;oBAEK,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;yBAClC,CAAA,cAAc,YAAY,MAAM,CAAA,EAAhC,wBAAgC;oBACrC,KAAA,cAAc,CAAA;;wBACd,qBAAM,mBAAmB,CAAC,cAAc,CAAC,EAAA;;oBAAzC,KAAA,SAAyC,CAAA;;;oBAF7C,MAAM,KAEuC,CAAA;;;oBAGzC,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;oBACjC,KAAK,GAAG,UAAU,CAAC,GAAG,CAC1B,UAAA,GAAG,IAAI,OAAA,GAAG,YAAY,aAAa;wBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE;wBACtD,CAAC,CAAC,GAAG,EAFA,CAEA,CACR;yBACE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAnD,CAAmD,CAAC,CAAA;oBAElE,sBAAO,KAAK,CAAC,GAAG,CAAC,UAAC,EAAuB;gCAArB,QAAC,EAAE,QAAC,EAAE,gBAAK,EAAE,kBAAM;4BACrC,IAAM,OAAO,GAAG,YAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;4BAC/C,mBAAmB,CAAC,OAAO,CAAC;iCACzB,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;4BAC5D,OAAO,OAAO,CAAA;wBAChB,CAAC,CAAC,EAAA;;;;CACH"} \ No newline at end of file diff --git a/build/es6/dom/index.d.ts b/build/es6/dom/index.d.ts deleted file mode 100644 index d6ea1a6f..00000000 --- a/build/es6/dom/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './extractFaces'; -export * from './extractFaceTensors'; diff --git a/build/es6/dom/index.js b/build/es6/dom/index.js deleted file mode 100644 index 2495f515..00000000 --- a/build/es6/dom/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from './extractFaces'; -export * from './extractFaceTensors'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/dom/index.js.map b/build/es6/dom/index.js.map deleted file mode 100644 index bb1e88a5..00000000 --- a/build/es6/dom/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dom/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA"} \ No newline at end of file diff --git a/build/es6/draw/DrawFaceLandmarks.d.ts b/build/es6/draw/DrawFaceLandmarks.d.ts deleted file mode 100644 index 4833c4b3..00000000 --- a/build/es6/draw/DrawFaceLandmarks.d.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { FaceLandmarks } from '../classes/FaceLandmarks'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -export interface IDrawFaceLandmarksOptions { - drawLines?: boolean; - drawPoints?: boolean; - lineWidth?: number; - pointSize?: number; - lineColor?: string; - pointColor?: string; -} -export declare class DrawFaceLandmarksOptions { - drawLines: boolean; - drawPoints: boolean; - lineWidth: number; - pointSize: number; - lineColor: string; - pointColor: string; - constructor(options?: IDrawFaceLandmarksOptions); -} -export declare class DrawFaceLandmarks { - faceLandmarks: FaceLandmarks; - options: DrawFaceLandmarksOptions; - constructor(faceLandmarks: FaceLandmarks, options?: IDrawFaceLandmarksOptions); - draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): void; -} -export declare type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>; -export declare function drawFaceLandmarks(canvasArg: string | HTMLCanvasElement, faceLandmarks: DrawFaceLandmarksInput | Array): void; diff --git a/build/es6/draw/DrawFaceLandmarks.js b/build/es6/draw/DrawFaceLandmarks.js deleted file mode 100644 index 5d400c7c..00000000 --- a/build/es6/draw/DrawFaceLandmarks.js +++ /dev/null @@ -1,66 +0,0 @@ -import { getContext2dOrThrow } from 'tfjs-image-recognition-base'; -import { FaceLandmarks } from '../classes/FaceLandmarks'; -import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; -import { isWithFaceLandmarks } from '../factories/WithFaceLandmarks'; -import { drawContour } from './drawContour'; -var DrawFaceLandmarksOptions = /** @class */ (function () { - function DrawFaceLandmarksOptions(options) { - if (options === void 0) { options = {}; } - var _a = options.drawLines, drawLines = _a === void 0 ? true : _a, _b = options.drawPoints, drawPoints = _b === void 0 ? true : _b, lineWidth = options.lineWidth, lineColor = options.lineColor, pointSize = options.pointSize, pointColor = options.pointColor; - this.drawLines = drawLines; - this.drawPoints = drawPoints; - this.lineWidth = lineWidth || 1; - this.pointSize = pointSize || 2; - this.lineColor = lineColor || 'rgba(0, 255, 255, 1)'; - this.pointColor = pointColor || 'rgba(255, 0, 255, 1)'; - } - return DrawFaceLandmarksOptions; -}()); -export { DrawFaceLandmarksOptions }; -var DrawFaceLandmarks = /** @class */ (function () { - function DrawFaceLandmarks(faceLandmarks, options) { - if (options === void 0) { options = {}; } - this.faceLandmarks = faceLandmarks; - this.options = new DrawFaceLandmarksOptions(options); - } - DrawFaceLandmarks.prototype.draw = function (canvasArg) { - var ctx = getContext2dOrThrow(canvasArg); - var _a = this.options, drawLines = _a.drawLines, drawPoints = _a.drawPoints, lineWidth = _a.lineWidth, lineColor = _a.lineColor, pointSize = _a.pointSize, pointColor = _a.pointColor; - if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) { - ctx.strokeStyle = lineColor; - ctx.lineWidth = lineWidth; - drawContour(ctx, this.faceLandmarks.getJawOutline()); - drawContour(ctx, this.faceLandmarks.getLeftEyeBrow()); - drawContour(ctx, this.faceLandmarks.getRightEyeBrow()); - drawContour(ctx, this.faceLandmarks.getNose()); - drawContour(ctx, this.faceLandmarks.getLeftEye(), true); - drawContour(ctx, this.faceLandmarks.getRightEye(), true); - drawContour(ctx, this.faceLandmarks.getMouth(), true); - } - if (drawPoints) { - ctx.strokeStyle = pointColor; - ctx.fillStyle = pointColor; - var drawPoint = function (pt) { - ctx.beginPath(); - ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI); - ctx.fill(); - }; - this.faceLandmarks.positions.forEach(drawPoint); - } - }; - return DrawFaceLandmarks; -}()); -export { DrawFaceLandmarks }; -export function drawFaceLandmarks(canvasArg, faceLandmarks) { - var faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks]; - faceLandmarksArray.forEach(function (f) { - var landmarks = f instanceof FaceLandmarks - ? f - : (isWithFaceLandmarks(f) ? f.landmarks : undefined); - if (!landmarks) { - throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof'); - } - new DrawFaceLandmarks(landmarks).draw(canvasArg); - }); -} -//# sourceMappingURL=DrawFaceLandmarks.js.map \ No newline at end of file diff --git a/build/es6/draw/DrawFaceLandmarks.js.map b/build/es6/draw/DrawFaceLandmarks.js.map deleted file mode 100644 index f2c16d0b..00000000 --- a/build/es6/draw/DrawFaceLandmarks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DrawFaceLandmarks.js","sourceRoot":"","sources":["../../../src/draw/DrawFaceLandmarks.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/draw/drawContour.d.ts b/build/es6/draw/drawContour.d.ts deleted file mode 100644 index 78664e6b..00000000 --- a/build/es6/draw/drawContour.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Point } from 'tfjs-image-recognition-base'; -export declare function drawContour(ctx: CanvasRenderingContext2D, points: Point[], isClosed?: boolean): void; diff --git a/build/es6/draw/drawContour.js b/build/es6/draw/drawContour.js deleted file mode 100644 index 30ec264d..00000000 --- a/build/es6/draw/drawContour.js +++ /dev/null @@ -1,21 +0,0 @@ -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 diff --git a/build/es6/draw/drawContour.js.map b/build/es6/draw/drawContour.js.map deleted file mode 100644 index 67bc600e..00000000 --- a/build/es6/draw/drawContour.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"drawContour.js","sourceRoot":"","sources":["../../../src/draw/drawContour.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CACzB,GAA6B,EAC7B,MAAe,EACf,QAAyB;IAAzB,yBAAA,EAAA,gBAAyB;IAEzB,GAAG,CAAC,SAAS,EAAE,CAAA;IAEf,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAC,EAAQ,EAAE,OAAO;YAAf,QAAC,EAAE,QAAC;QAC7B,IAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,IAAI,QAAQ,EAAE;QACZ,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtC,IAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE;YAChB,OAAM;SACP;QAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;KACvB;IAED,GAAG,CAAC,MAAM,EAAE,CAAA;AACd,CAAC"} \ No newline at end of file diff --git a/build/es6/draw/drawDetections.d.ts b/build/es6/draw/drawDetections.d.ts deleted file mode 100644 index 784994a0..00000000 --- a/build/es6/draw/drawDetections.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { IBoundingBox, IRect } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -export declare type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>; -export declare function drawDetections(canvasArg: string | HTMLCanvasElement, detections: TDrawDetectionsInput | Array): void; diff --git a/build/es6/draw/drawDetections.js b/build/es6/draw/drawDetections.js deleted file mode 100644 index c0552ebc..00000000 --- a/build/es6/draw/drawDetections.js +++ /dev/null @@ -1,17 +0,0 @@ -import { Box, draw, round } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { isWithFaceDetection } from '../factories/WithFaceDetection'; -export function drawDetections(canvasArg, detections) { - var detectionsArray = Array.isArray(detections) ? detections : [detections]; - detectionsArray.forEach(function (det) { - var score = det instanceof FaceDetection - ? det.score - : (isWithFaceDetection(det) ? det.detection.score : undefined); - var box = det instanceof FaceDetection - ? det.box - : (isWithFaceDetection(det) ? det.detection.box : new Box(det)); - var label = score ? "" + round(score) : undefined; - new draw.DrawBox(box, { label: label }).draw(canvasArg); - }); -} -//# sourceMappingURL=drawDetections.js.map \ No newline at end of file diff --git a/build/es6/draw/drawDetections.js.map b/build/es6/draw/drawDetections.js.map deleted file mode 100644 index 95214086..00000000 --- a/build/es6/draw/drawDetections.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"drawDetections.js","sourceRoot":"","sources":["../../../src/draw/drawDetections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAuB,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAqB,MAAM,gCAAgC,CAAC;AAIxF,MAAM,UAAU,cAAc,CAC5B,SAAqC,EACrC,UAA8D;IAE9D,IAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IAE7E,eAAe,CAAC,OAAO,CAAC,UAAA,GAAG;QACzB,IAAM,KAAK,GAAG,GAAG,YAAY,aAAa;YACxC,CAAC,CAAC,GAAG,CAAC,KAAK;YACX,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAEhE,IAAM,GAAG,GAAG,GAAG,YAAY,aAAa;YACtC,CAAC,CAAC,GAAG,CAAC,GAAG;YACT,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAEjE,IAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,KAAK,CAAG,CAAC,CAAC,CAAC,SAAS,CAAA;QACnD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,OAAA,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;AACJ,CAAC"} \ No newline at end of file diff --git a/build/es6/draw/drawFaceExpressions.d.ts b/build/es6/draw/drawFaceExpressions.d.ts deleted file mode 100644 index e07f3928..00000000 --- a/build/es6/draw/drawFaceExpressions.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { IPoint } from 'tfjs-image-recognition-base'; -import { FaceExpressions } from '../faceExpressionNet'; -import { WithFaceExpressions } from '../factories/WithFaceExpressions'; -export declare type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>; -export declare function drawFaceExpressions(canvasArg: string | HTMLCanvasElement, faceExpressions: DrawFaceExpressionsInput | Array, minConfidence?: number, textFieldAnchor?: IPoint): void; diff --git a/build/es6/draw/drawFaceExpressions.js b/build/es6/draw/drawFaceExpressions.js deleted file mode 100644 index 53ccf4b9..00000000 --- a/build/es6/draw/drawFaceExpressions.js +++ /dev/null @@ -1,24 +0,0 @@ -import { draw, Point, round } from 'tfjs-image-recognition-base'; -import { FaceExpressions } from '../faceExpressionNet'; -import { isWithFaceDetection } from '../factories/WithFaceDetection'; -import { isWithFaceExpressions } from '../factories/WithFaceExpressions'; -export function drawFaceExpressions(canvasArg, faceExpressions, minConfidence, textFieldAnchor) { - if (minConfidence === void 0) { minConfidence = 0.1; } - var faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions]; - faceExpressionsArray.forEach(function (e) { - var expr = e instanceof FaceExpressions - ? e - : (isWithFaceExpressions(e) ? e.expressions : undefined); - if (!expr) { - throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof'); - } - var sorted = expr.asSortedArray(); - var resultsToDisplay = sorted.filter(function (expr) { return expr.probability > minConfidence; }); - var anchor = isWithFaceDetection(e) - ? e.detection.box.bottomLeft - : (textFieldAnchor || new Point(0, 0)); - var drawTextField = new draw.DrawTextField(resultsToDisplay.map(function (expr) { return expr.expression + " (" + round(expr.probability) + ")"; }), anchor); - drawTextField.draw(canvasArg); - }); -} -//# sourceMappingURL=drawFaceExpressions.js.map \ No newline at end of file diff --git a/build/es6/draw/drawFaceExpressions.js.map b/build/es6/draw/drawFaceExpressions.js.map deleted file mode 100644 index dd20d1f3..00000000 --- a/build/es6/draw/drawFaceExpressions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"drawFaceExpressions.js","sourceRoot":"","sources":["../../../src/draw/drawFaceExpressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAU,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAuB,MAAM,kCAAkC,CAAC;AAI9F,MAAM,UAAU,mBAAmB,CACjC,SAAqC,EACrC,eAA2E,EAC3E,aAAmB,EACnB,eAAwB;IADxB,8BAAA,EAAA,mBAAmB;IAGnB,IAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;IAEjG,oBAAoB,CAAC,OAAO,CAAC,UAAA,CAAC;QAC5B,IAAM,IAAI,GAAG,CAAC,YAAY,eAAe;YACvC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QAC1D,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,iHAAiH,CAAC,CAAA;SACnI;QAED,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QACnC,IAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,WAAW,GAAG,aAAa,EAAhC,CAAgC,CAAC,CAAA;QAEhF,IAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU;YAC5B,CAAC,CAAC,CAAC,eAAe,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAExC,IAAM,aAAa,GAAG,IAAI,IAAI,CAAC,aAAa,CAC1C,gBAAgB,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAG,IAAI,CAAC,UAAU,UAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAG,EAAjD,CAAiD,CAAC,EAC/E,MAAM,CACP,CAAA;QACD,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC"} \ No newline at end of file diff --git a/build/es6/draw/index.d.ts b/build/es6/draw/index.d.ts deleted file mode 100644 index 37a3bddd..00000000 --- a/build/es6/draw/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './drawContour'; -export * from './drawDetections'; -export * from './drawFaceExpressions'; -export * from './DrawFaceLandmarks'; diff --git a/build/es6/draw/index.js b/build/es6/draw/index.js deleted file mode 100644 index 22e4aae5..00000000 --- a/build/es6/draw/index.js +++ /dev/null @@ -1,5 +0,0 @@ -export * from './drawContour'; -export * from './drawDetections'; -export * from './drawFaceExpressions'; -export * from './DrawFaceLandmarks'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/draw/index.js.map b/build/es6/draw/index.js.map deleted file mode 100644 index 0706074d..00000000 --- a/build/es6/draw/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/draw/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA"} \ No newline at end of file diff --git a/build/es6/euclideanDistance.d.ts b/build/es6/euclideanDistance.d.ts deleted file mode 100644 index d555de27..00000000 --- a/build/es6/euclideanDistance.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array): number; diff --git a/build/es6/euclideanDistance.js b/build/es6/euclideanDistance.js deleted file mode 100644 index 34289679..00000000 --- a/build/es6/euclideanDistance.js +++ /dev/null @@ -1,10 +0,0 @@ -export function euclideanDistance(arr1, arr2) { - if (arr1.length !== arr2.length) - throw new Error('euclideanDistance: arr1.length !== arr2.length'); - var desc1 = Array.from(arr1); - var desc2 = Array.from(arr2); - return Math.sqrt(desc1 - .map(function (val, i) { return val - desc2[i]; }) - .reduce(function (res, diff) { return res + Math.pow(diff, 2); }, 0)); -} -//# sourceMappingURL=euclideanDistance.js.map \ No newline at end of file diff --git a/build/es6/euclideanDistance.js.map b/build/es6/euclideanDistance.js.map deleted file mode 100644 index 1347c1d4..00000000 --- a/build/es6/euclideanDistance.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"euclideanDistance.js","sourceRoot":"","sources":["../../src/euclideanDistance.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,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 diff --git a/build/es6/faceExpressionNet/FaceExpressionNet.d.ts b/build/es6/faceExpressionNet/FaceExpressionNet.d.ts deleted file mode 100644 index 244f8ce9..00000000 --- a/build/es6/faceExpressionNet/FaceExpressionNet.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor'; -import { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; -import { FaceProcessor } from '../faceProcessor/FaceProcessor'; -import { FaceExpressions } from './FaceExpressions'; -export declare class FaceExpressionNet extends FaceProcessor { - constructor(faceFeatureExtractor?: FaceFeatureExtractor); - forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D; - forward(input: TNetInput): Promise; - predictExpressions(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected getClassifierChannelsIn(): number; - protected getClassifierChannelsOut(): number; -} diff --git a/build/es6/faceExpressionNet/FaceExpressionNet.js b/build/es6/faceExpressionNet/FaceExpressionNet.js deleted file mode 100644 index 9d2b3d3d..00000000 --- a/build/es6/faceExpressionNet/FaceExpressionNet.js +++ /dev/null @@ -1,78 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { toNetInput } from 'tfjs-image-recognition-base'; -import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor'; -import { FaceProcessor } from '../faceProcessor/FaceProcessor'; -import { FaceExpressions } from './FaceExpressions'; -var FaceExpressionNet = /** @class */ (function (_super) { - __extends(FaceExpressionNet, _super); - function FaceExpressionNet(faceFeatureExtractor) { - if (faceFeatureExtractor === void 0) { faceFeatureExtractor = new FaceFeatureExtractor(); } - return _super.call(this, 'FaceExpressionNet', faceFeatureExtractor) || this; - } - FaceExpressionNet.prototype.forwardInput = function (input) { - var _this = this; - return tf.tidy(function () { return tf.softmax(_this.runNet(input)); }); - }; - FaceExpressionNet.prototype.forward = function (input) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - FaceExpressionNet.prototype.predictExpressions = function (input) { - return __awaiter(this, void 0, void 0, function () { - var netInput, out, probabilitesByBatch, predictionsByBatch; - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, toNetInput(input)]; - case 1: - netInput = _a.sent(); - return [4 /*yield*/, this.forwardInput(netInput)]; - case 2: - out = _a.sent(); - return [4 /*yield*/, Promise.all(tf.unstack(out).map(function (t) { return __awaiter(_this, void 0, void 0, function () { - var data; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, t.data()]; - case 1: - data = _a.sent(); - t.dispose(); - return [2 /*return*/, data]; - } - }); - }); }))]; - case 3: - probabilitesByBatch = _a.sent(); - out.dispose(); - predictionsByBatch = probabilitesByBatch - .map(function (probabilites) { return new FaceExpressions(probabilites); }); - return [2 /*return*/, netInput.isBatchInput - ? predictionsByBatch - : predictionsByBatch[0]]; - } - }); - }); - }; - FaceExpressionNet.prototype.getDefaultModelName = function () { - return 'face_expression_model'; - }; - FaceExpressionNet.prototype.getClassifierChannelsIn = function () { - return 256; - }; - FaceExpressionNet.prototype.getClassifierChannelsOut = function () { - return 7; - }; - return FaceExpressionNet; -}(FaceProcessor)); -export { FaceExpressionNet }; -//# sourceMappingURL=FaceExpressionNet.js.map \ No newline at end of file diff --git a/build/es6/faceExpressionNet/FaceExpressionNet.js.map b/build/es6/faceExpressionNet/FaceExpressionNet.js.map deleted file mode 100644 index ee720ef5..00000000 --- a/build/es6/faceExpressionNet/FaceExpressionNet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceExpressionNet.js","sourceRoot":"","sources":["../../../src/faceExpressionNet/FaceExpressionNet.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAuB,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;IAAuC,qCAAyC;IAE9E,2BAAY,oBAAuE;QAAvE,qCAAA,EAAA,2BAAiD,oBAAoB,EAAE;eACjF,kBAAM,mBAAmB,EAAE,oBAAoB,CAAC;IAClD,CAAC;IAEM,wCAAY,GAAnB,UAAoB,KAA6B;QAAjD,iBAEC;QADC,OAAO,EAAE,CAAC,IAAI,CAAC,cAAM,OAAA,EAAE,CAAC,OAAO,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAA9B,CAA8B,CAAC,CAAA;IACtD,CAAC;IAEY,mCAAO,GAApB,UAAqB,KAAgB;;;;;;wBAC5B,KAAA,IAAI,CAAC,YAAY,CAAA;wBAAC,qBAAM,UAAU,CAAC,KAAK,CAAC,EAAA;4BAAhD,sBAAO,SAAA,IAAI,GAAc,SAAuB,EAAC,EAAA;;;;KAClD;IAEY,8CAAkB,GAA/B,UAAgC,KAAgB;;;;;;4BAC7B,qBAAM,UAAU,CAAC,KAAK,CAAC,EAAA;;wBAAlC,QAAQ,GAAG,SAAuB;wBAC5B,qBAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAA;;wBAAvC,GAAG,GAAG,SAAiC;wBACjB,qBAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAM,CAAC;;;;gDAC1D,qBAAM,CAAC,CAAC,IAAI,EAAE,EAAA;;4CAArB,IAAI,GAAG,SAAc;4CAC3B,CAAC,CAAC,OAAO,EAAE,CAAA;4CACX,sBAAO,IAAI,EAAA;;;iCACZ,CAAC,CAAC,EAAA;;wBAJG,mBAAmB,GAAG,SAIzB;wBACH,GAAG,CAAC,OAAO,EAAE,CAAA;wBAEP,kBAAkB,GAAG,mBAAmB;6BAC3C,GAAG,CAAC,UAAA,YAAY,IAAI,OAAA,IAAI,eAAe,CAAC,YAA4B,CAAC,EAAjD,CAAiD,CAAC,CAAA;wBAEzE,sBAAO,QAAQ,CAAC,YAAY;gCAC1B,CAAC,CAAC,kBAAkB;gCACpB,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAA;;;;KAC1B;IAES,+CAAmB,GAA7B;QACE,OAAO,uBAAuB,CAAA;IAChC,CAAC;IAES,mDAAuB,GAAjC;QACE,OAAO,GAAG,CAAA;IACZ,CAAC;IAES,oDAAwB,GAAlC;QACE,OAAO,CAAC,CAAA;IACV,CAAC;IACH,wBAAC;AAAD,CAAC,AA3CD,CAAuC,aAAa,GA2CnD"} \ No newline at end of file diff --git a/build/es6/faceExpressionNet/FaceExpressions.d.ts b/build/es6/faceExpressionNet/FaceExpressions.d.ts deleted file mode 100644 index 4e01ae31..00000000 --- a/build/es6/faceExpressionNet/FaceExpressions.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -export declare const FACE_EXPRESSION_LABELS: string[]; -export declare class FaceExpressions { - neutral: number; - happy: number; - sad: number; - angry: number; - fearful: number; - disgusted: number; - surprised: number; - constructor(probabilities: number[] | Float32Array); - asSortedArray(): { - expression: string; - probability: number; - }[]; -} diff --git a/build/es6/faceExpressionNet/FaceExpressions.js b/build/es6/faceExpressionNet/FaceExpressions.js deleted file mode 100644 index c6230ea3..00000000 --- a/build/es6/faceExpressionNet/FaceExpressions.js +++ /dev/null @@ -1,21 +0,0 @@ -export var FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised']; -var FaceExpressions = /** @class */ (function () { - function FaceExpressions(probabilities) { - var _this = this; - if (probabilities.length !== 7) { - throw new Error("FaceExpressions.constructor - expected probabilities.length to be 7, have: " + probabilities.length); - } - FACE_EXPRESSION_LABELS.forEach(function (expression, idx) { - _this[expression] = probabilities[idx]; - }); - } - FaceExpressions.prototype.asSortedArray = function () { - var _this = this; - return FACE_EXPRESSION_LABELS - .map(function (expression) { return ({ expression: expression, probability: _this[expression] }); }) - .sort(function (e0, e1) { return e1.probability - e0.probability; }); - }; - return FaceExpressions; -}()); -export { FaceExpressions }; -//# sourceMappingURL=FaceExpressions.js.map \ No newline at end of file diff --git a/build/es6/faceExpressionNet/FaceExpressions.js.map b/build/es6/faceExpressionNet/FaceExpressions.js.map deleted file mode 100644 index 29aba53c..00000000 --- a/build/es6/faceExpressionNet/FaceExpressions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceExpressions.js","sourceRoot":"","sources":["../../../src/faceExpressionNet/FaceExpressions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;AAE/G;IASE,yBAAY,aAAsC;QAAlD,iBAQC;QAPC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,gFAA8E,aAAa,CAAC,MAAQ,CAAC,CAAA;SACtH;QAED,sBAAsB,CAAC,OAAO,CAAC,UAAC,UAAU,EAAE,GAAG;YAC7C,KAAI,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,uCAAa,GAAb;QAAA,iBAIC;QAHC,OAAO,sBAAsB;aAC1B,GAAG,CAAC,UAAA,UAAU,IAAI,OAAA,CAAC,EAAE,UAAU,YAAA,EAAE,WAAW,EAAE,KAAI,CAAC,UAAU,CAAW,EAAE,CAAC,EAAzD,CAAyD,CAAC;aAC5E,IAAI,CAAC,UAAC,EAAE,EAAE,EAAE,IAAK,OAAA,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,EAA/B,CAA+B,CAAC,CAAA;IACtD,CAAC;IACH,sBAAC;AAAD,CAAC,AAxBD,IAwBC"} \ No newline at end of file diff --git a/build/es6/faceExpressionNet/index.d.ts b/build/es6/faceExpressionNet/index.d.ts deleted file mode 100644 index d79c683a..00000000 --- a/build/es6/faceExpressionNet/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './FaceExpressionNet'; -export * from './FaceExpressions'; diff --git a/build/es6/faceExpressionNet/index.js b/build/es6/faceExpressionNet/index.js deleted file mode 100644 index 40ccccb4..00000000 --- a/build/es6/faceExpressionNet/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from './FaceExpressionNet'; -export * from './FaceExpressions'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/faceExpressionNet/index.js.map b/build/es6/faceExpressionNet/index.js.map deleted file mode 100644 index 4ac1bfc0..00000000 --- a/build/es6/faceExpressionNet/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceExpressionNet/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"} \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/FaceFeatureExtractor.d.ts b/build/es6/faceFeatureExtractor/FaceFeatureExtractor.d.ts deleted file mode 100644 index 35b86231..00000000 --- a/build/es6/faceFeatureExtractor/FaceFeatureExtractor.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types'; -export declare class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor { - constructor(); - forwardInput(input: NetInput): tf.Tensor4D; - forward(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: FaceFeatureExtractorParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: FaceFeatureExtractorParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/es6/faceFeatureExtractor/FaceFeatureExtractor.js b/build/es6/faceFeatureExtractor/FaceFeatureExtractor.js deleted file mode 100644 index f5ac62bc..00000000 --- a/build/es6/faceFeatureExtractor/FaceFeatureExtractor.js +++ /dev/null @@ -1,54 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { NeuralNetwork, normalize, toNetInput } from 'tfjs-image-recognition-base'; -import { denseBlock4 } from './denseBlock'; -import { extractParams } from './extractParams'; -import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; -var FaceFeatureExtractor = /** @class */ (function (_super) { - __extends(FaceFeatureExtractor, _super); - function FaceFeatureExtractor() { - return _super.call(this, 'FaceFeatureExtractor') || this; - } - FaceFeatureExtractor.prototype.forwardInput = function (input) { - var params = this.params; - if (!params) { - throw new Error('FaceFeatureExtractor - load model before inference'); - } - return tf.tidy(function () { - var batchTensor = input.toBatchTensor(112, true); - var meanRgb = [122.782, 117.001, 104.298]; - var normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)); - var out = denseBlock4(normalized, params.dense0, true); - out = denseBlock4(out, params.dense1); - out = denseBlock4(out, params.dense2); - out = denseBlock4(out, params.dense3); - out = tf.avgPool(out, [7, 7], [2, 2], 'valid'); - return out; - }); - }; - FaceFeatureExtractor.prototype.forward = function (input) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - FaceFeatureExtractor.prototype.getDefaultModelName = function () { - return 'face_feature_extractor_model'; - }; - FaceFeatureExtractor.prototype.extractParamsFromWeigthMap = function (weightMap) { - return extractParamsFromWeigthMap(weightMap); - }; - FaceFeatureExtractor.prototype.extractParams = function (weights) { - return extractParams(weights); - }; - return FaceFeatureExtractor; -}(NeuralNetwork)); -export { FaceFeatureExtractor }; -//# sourceMappingURL=FaceFeatureExtractor.js.map \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/FaceFeatureExtractor.js.map b/build/es6/faceFeatureExtractor/FaceFeatureExtractor.js.map deleted file mode 100644 index a21efaad..00000000 --- a/build/es6/faceFeatureExtractor/FaceFeatureExtractor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceFeatureExtractor.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/FaceFeatureExtractor.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAY,aAAa,EAAE,SAAS,EAAa,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAExG,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAG1E;IAA0C,wCAAyC;IAEjF;eACE,kBAAM,sBAAsB,CAAC;IAC/B,CAAC;IAEM,2CAAY,GAAnB,UAAoB,KAAe;QAEzB,IAAA,oBAAM,CAAS;QAEvB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;SACtE;QAED,OAAO,EAAE,CAAC,IAAI,CAAC;YACb,IAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAClD,IAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC3C,IAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAgB,CAAA;YAErF,IAAI,GAAG,GAAG,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACtD,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;YACrC,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;YACrC,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;YACrC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YAE9C,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEY,sCAAO,GAApB,UAAqB,KAAgB;;;;;;wBAC5B,KAAA,IAAI,CAAC,YAAY,CAAA;wBAAC,qBAAM,UAAU,CAAC,KAAK,CAAC,EAAA;4BAAhD,sBAAO,SAAA,IAAI,GAAc,SAAuB,EAAC,EAAA;;;;KAClD;IAES,kDAAmB,GAA7B;QACE,OAAO,8BAA8B,CAAA;IACvC,CAAC;IAES,yDAA0B,GAApC,UAAqC,SAA4B;QAC/D,OAAO,0BAA0B,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC;IAES,4CAAa,GAAvB,UAAwB,OAAqB;QAC3C,OAAO,aAAa,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;IACH,2BAAC;AAAD,CAAC,AA5CD,CAA0C,aAAa,GA4CtD"} \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/TinyFaceFeatureExtractor.d.ts b/build/es6/faceFeatureExtractor/TinyFaceFeatureExtractor.d.ts deleted file mode 100644 index 4e9957ca..00000000 --- a/build/es6/faceFeatureExtractor/TinyFaceFeatureExtractor.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base'; -import { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types'; -export declare class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor { - constructor(); - forwardInput(input: NetInput): tf.Tensor4D; - forward(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TinyFaceFeatureExtractorParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: TinyFaceFeatureExtractorParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/es6/faceFeatureExtractor/TinyFaceFeatureExtractor.js b/build/es6/faceFeatureExtractor/TinyFaceFeatureExtractor.js deleted file mode 100644 index f55fbce8..00000000 --- a/build/es6/faceFeatureExtractor/TinyFaceFeatureExtractor.js +++ /dev/null @@ -1,53 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { NeuralNetwork, normalize, toNetInput } from 'tfjs-image-recognition-base'; -import { denseBlock3 } from './denseBlock'; -import { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny'; -import { extractParamsTiny } from './extractParamsTiny'; -var TinyFaceFeatureExtractor = /** @class */ (function (_super) { - __extends(TinyFaceFeatureExtractor, _super); - function TinyFaceFeatureExtractor() { - return _super.call(this, 'TinyFaceFeatureExtractor') || this; - } - TinyFaceFeatureExtractor.prototype.forwardInput = function (input) { - var params = this.params; - if (!params) { - throw new Error('TinyFaceFeatureExtractor - load model before inference'); - } - return tf.tidy(function () { - var batchTensor = input.toBatchTensor(112, true); - var meanRgb = [122.782, 117.001, 104.298]; - var normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)); - var out = denseBlock3(normalized, params.dense0, true); - out = denseBlock3(out, params.dense1); - out = denseBlock3(out, params.dense2); - out = tf.avgPool(out, [14, 14], [2, 2], 'valid'); - return out; - }); - }; - TinyFaceFeatureExtractor.prototype.forward = function (input) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - TinyFaceFeatureExtractor.prototype.getDefaultModelName = function () { - return 'face_feature_extractor_tiny_model'; - }; - TinyFaceFeatureExtractor.prototype.extractParamsFromWeigthMap = function (weightMap) { - return extractParamsFromWeigthMapTiny(weightMap); - }; - TinyFaceFeatureExtractor.prototype.extractParams = function (weights) { - return extractParamsTiny(weights); - }; - return TinyFaceFeatureExtractor; -}(NeuralNetwork)); -export { TinyFaceFeatureExtractor }; -//# sourceMappingURL=TinyFaceFeatureExtractor.js.map \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/TinyFaceFeatureExtractor.js.map b/build/es6/faceFeatureExtractor/TinyFaceFeatureExtractor.js.map deleted file mode 100644 index ad15fbfb..00000000 --- a/build/es6/faceFeatureExtractor/TinyFaceFeatureExtractor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TinyFaceFeatureExtractor.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAY,aAAa,EAAE,SAAS,EAAa,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAExG,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD;IAA8C,4CAA6C;IAEzF;eACE,kBAAM,0BAA0B,CAAC;IACnC,CAAC;IAEM,+CAAY,GAAnB,UAAoB,KAAe;QAEzB,IAAA,oBAAM,CAAS;QAEvB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;SAC1E;QAED,OAAO,EAAE,CAAC,IAAI,CAAC;YACb,IAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAClD,IAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC3C,IAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAgB,CAAA;YAErF,IAAI,GAAG,GAAG,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YACtD,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;YACrC,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;YACrC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YAEhD,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IAEY,0CAAO,GAApB,UAAqB,KAAgB;;;;;;wBAC5B,KAAA,IAAI,CAAC,YAAY,CAAA;wBAAC,qBAAM,UAAU,CAAC,KAAK,CAAC,EAAA;4BAAhD,sBAAO,SAAA,IAAI,GAAc,SAAuB,EAAC,EAAA;;;;KAClD;IAES,sDAAmB,GAA7B;QACE,OAAO,mCAAmC,CAAA;IAC5C,CAAC;IAES,6DAA0B,GAApC,UAAqC,SAA4B;QAC/D,OAAO,8BAA8B,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;IAES,gDAAa,GAAvB,UAAwB,OAAqB;QAC3C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC;IACH,+BAAC;AAAD,CAAC,AA3CD,CAA8C,aAAa,GA2C1D"} \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/denseBlock.d.ts b/build/es6/faceFeatureExtractor/denseBlock.d.ts deleted file mode 100644 index 685af3ba..00000000 --- a/build/es6/faceFeatureExtractor/denseBlock.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { DenseBlock3Params, DenseBlock4Params } from './types'; -export declare function denseBlock3(x: tf.Tensor4D, denseBlockParams: DenseBlock3Params, isFirstLayer?: boolean): tf.Tensor4D; -export declare function denseBlock4(x: tf.Tensor4D, denseBlockParams: DenseBlock4Params, isFirstLayer?: boolean, isScaleDown?: boolean): tf.Tensor4D; diff --git a/build/es6/faceFeatureExtractor/denseBlock.js b/build/es6/faceFeatureExtractor/denseBlock.js deleted file mode 100644 index e6cbb53b..00000000 --- a/build/es6/faceFeatureExtractor/denseBlock.js +++ /dev/null @@ -1,30 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { depthwiseSeparableConv } from '../common/depthwiseSeparableConv'; -export function denseBlock3(x, denseBlockParams, isFirstLayer) { - if (isFirstLayer === void 0) { isFirstLayer = false; } - return tf.tidy(function () { - var out1 = tf.relu(isFirstLayer - ? tf.add(tf.conv2d(x, denseBlockParams.conv0.filters, [2, 2], 'same'), denseBlockParams.conv0.bias) - : depthwiseSeparableConv(x, denseBlockParams.conv0, [2, 2])); - var out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]); - var in3 = tf.relu(tf.add(out1, out2)); - var out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]); - return tf.relu(tf.add(out1, tf.add(out2, out3))); - }); -} -export function denseBlock4(x, denseBlockParams, isFirstLayer, isScaleDown) { - if (isFirstLayer === void 0) { isFirstLayer = false; } - if (isScaleDown === void 0) { isScaleDown = true; } - return tf.tidy(function () { - var out1 = tf.relu(isFirstLayer - ? tf.add(tf.conv2d(x, denseBlockParams.conv0.filters, isScaleDown ? [2, 2] : [1, 1], 'same'), denseBlockParams.conv0.bias) - : depthwiseSeparableConv(x, denseBlockParams.conv0, isScaleDown ? [2, 2] : [1, 1])); - var out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]); - var in3 = tf.relu(tf.add(out1, out2)); - var out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]); - var in4 = tf.relu(tf.add(out1, tf.add(out2, out3))); - var out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]); - return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))); - }); -} -//# sourceMappingURL=denseBlock.js.map \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/denseBlock.js.map b/build/es6/faceFeatureExtractor/denseBlock.js.map deleted file mode 100644 index 6b8860c7..00000000 --- a/build/es6/faceFeatureExtractor/denseBlock.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"denseBlock.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/denseBlock.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/extractParams.d.ts b/build/es6/faceFeatureExtractor/extractParams.d.ts deleted file mode 100644 index acbea252..00000000 --- a/build/es6/faceFeatureExtractor/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { FaceFeatureExtractorParams } from './types'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare function extractParams(weights: Float32Array): { - params: FaceFeatureExtractorParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/faceFeatureExtractor/extractParams.js b/build/es6/faceFeatureExtractor/extractParams.js deleted file mode 100644 index 08e989fd..00000000 --- a/build/es6/faceFeatureExtractor/extractParams.js +++ /dev/null @@ -1,19 +0,0 @@ -import { extractorsFactory } from './extractorsFactory'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export function extractParams(weights) { - var paramMappings = []; - var _a = TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var extractDenseBlock4Params = extractorsFactory(extractWeights, paramMappings).extractDenseBlock4Params; - var dense0 = extractDenseBlock4Params(3, 32, 'dense0', true); - var dense1 = extractDenseBlock4Params(32, 64, 'dense1'); - var dense2 = extractDenseBlock4Params(64, 128, 'dense2'); - var dense3 = extractDenseBlock4Params(128, 256, 'dense3'); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { - paramMappings: paramMappings, - params: { dense0: dense0, dense1: dense1, dense2: dense2, dense3: dense3 } - }; -} -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/extractParams.js.map b/build/es6/faceFeatureExtractor/extractParams.js.map deleted file mode 100644 index 994ae2f1..00000000 --- a/build/es6/faceFeatureExtractor/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/extractParams.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,MAAM,UAAU,aAAa,CAAC,OAAqB;IAEjD,IAAM,aAAa,GAA4C,EAAE,CAAA;IAE3D,IAAA,4DAGqD,EAFzD,kCAAc,EACd,4CACyD,CAAA;IAGzD,IAAA,oGAAwB,CAC0B;IAEpD,IAAM,MAAM,GAAG,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC9D,IAAM,MAAM,GAAG,wBAAwB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;IACzD,IAAM,MAAM,GAAG,wBAAwB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC1D,IAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAE3D,IAAI,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAkC,mBAAmB,EAAE,CAAC,MAAQ,CAAC,CAAA;KAClF;IAED,OAAO;QACL,aAAa,eAAA;QACb,MAAM,EAAE,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE;KAC3C,CAAA;AACH,CAAC"} \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/extractParamsFromWeigthMap.d.ts b/build/es6/faceFeatureExtractor/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index 5c964fcc..00000000 --- a/build/es6/faceFeatureExtractor/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { FaceFeatureExtractorParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: FaceFeatureExtractorParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/faceFeatureExtractor/extractParamsFromWeigthMap.js b/build/es6/faceFeatureExtractor/extractParamsFromWeigthMap.js deleted file mode 100644 index 7deb60de..00000000 --- a/build/es6/faceFeatureExtractor/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,15 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { loadParamsFactory } from './loadParamsFactory'; -export function extractParamsFromWeigthMap(weightMap) { - var paramMappings = []; - var extractDenseBlock4Params = loadParamsFactory(weightMap, paramMappings).extractDenseBlock4Params; - var params = { - dense0: extractDenseBlock4Params('dense0', true), - dense1: extractDenseBlock4Params('dense1'), - dense2: extractDenseBlock4Params('dense2'), - dense3: extractDenseBlock4Params('dense3') - }; - TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: params, paramMappings: paramMappings }; -} -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/extractParamsFromWeigthMap.js.map b/build/es6/faceFeatureExtractor/extractParamsFromWeigthMap.js.map deleted file mode 100644 index ab580ee6..00000000 --- a/build/es6/faceFeatureExtractor/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,UAAU,0BAA0B,CACxC,SAA4B;IAG5B,IAAM,aAAa,GAA4C,EAAE,CAAA;IAG/D,IAAA,+FAAwB,CACqB;IAE/C,IAAM,MAAM,GAAG;QACb,MAAM,EAAE,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC;QAChD,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC;QAC1C,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC;QAC1C,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC;KAC3C,CAAA;IAED,wBAAwB,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAClC,CAAC"} \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/extractParamsFromWeigthMapTiny.d.ts b/build/es6/faceFeatureExtractor/extractParamsFromWeigthMapTiny.d.ts deleted file mode 100644 index 7d597dd2..00000000 --- a/build/es6/faceFeatureExtractor/extractParamsFromWeigthMapTiny.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { TinyFaceFeatureExtractorParams } from './types'; -export declare function extractParamsFromWeigthMapTiny(weightMap: tf.NamedTensorMap): { - params: TinyFaceFeatureExtractorParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js b/build/es6/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js deleted file mode 100644 index 2b2ea419..00000000 --- a/build/es6/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js +++ /dev/null @@ -1,14 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { loadParamsFactory } from './loadParamsFactory'; -export function extractParamsFromWeigthMapTiny(weightMap) { - var paramMappings = []; - var extractDenseBlock3Params = loadParamsFactory(weightMap, paramMappings).extractDenseBlock3Params; - var params = { - dense0: extractDenseBlock3Params('dense0', true), - dense1: extractDenseBlock3Params('dense1'), - dense2: extractDenseBlock3Params('dense2') - }; - TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: params, paramMappings: paramMappings }; -} -//# sourceMappingURL=extractParamsFromWeigthMapTiny.js.map \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js.map b/build/es6/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js.map deleted file mode 100644 index e765da78..00000000 --- a/build/es6/faceFeatureExtractor/extractParamsFromWeigthMapTiny.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMapTiny.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,UAAU,8BAA8B,CAC5C,SAA4B;IAG5B,IAAM,aAAa,GAA4C,EAAE,CAAA;IAG/D,IAAA,+FAAwB,CACqB;IAE/C,IAAM,MAAM,GAAG;QACb,MAAM,EAAE,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC;QAChD,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC;QAC1C,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC;KAC3C,CAAA;IAED,wBAAwB,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAClC,CAAC"} \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/extractParamsTiny.d.ts b/build/es6/faceFeatureExtractor/extractParamsTiny.d.ts deleted file mode 100644 index 4f623185..00000000 --- a/build/es6/faceFeatureExtractor/extractParamsTiny.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { TinyFaceFeatureExtractorParams } from './types'; -export declare function extractParamsTiny(weights: Float32Array): { - params: TinyFaceFeatureExtractorParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/faceFeatureExtractor/extractParamsTiny.js b/build/es6/faceFeatureExtractor/extractParamsTiny.js deleted file mode 100644 index 51b04c62..00000000 --- a/build/es6/faceFeatureExtractor/extractParamsTiny.js +++ /dev/null @@ -1,18 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { extractorsFactory } from './extractorsFactory'; -export function extractParamsTiny(weights) { - var paramMappings = []; - var _a = TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var extractDenseBlock3Params = extractorsFactory(extractWeights, paramMappings).extractDenseBlock3Params; - var dense0 = extractDenseBlock3Params(3, 32, 'dense0', true); - var dense1 = extractDenseBlock3Params(32, 64, 'dense1'); - var dense2 = extractDenseBlock3Params(64, 128, 'dense2'); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { - paramMappings: paramMappings, - params: { dense0: dense0, dense1: dense1, dense2: dense2 } - }; -} -//# sourceMappingURL=extractParamsTiny.js.map \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/extractParamsTiny.js.map b/build/es6/faceFeatureExtractor/extractParamsTiny.js.map deleted file mode 100644 index 9292e0fa..00000000 --- a/build/es6/faceFeatureExtractor/extractParamsTiny.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsTiny.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/extractParamsTiny.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,MAAM,UAAU,iBAAiB,CAAC,OAAqB;IAErD,IAAM,aAAa,GAA4C,EAAE,CAAA;IAE3D,IAAA,4DAGqD,EAFzD,kCAAc,EACd,4CACyD,CAAA;IAGzD,IAAA,oGAAwB,CAC0B;IAEpD,IAAM,MAAM,GAAG,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC9D,IAAM,MAAM,GAAG,wBAAwB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;IACzD,IAAM,MAAM,GAAG,wBAAwB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAE1D,IAAI,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAkC,mBAAmB,EAAE,CAAC,MAAQ,CAAC,CAAA;KAClF;IAED,OAAO;QACL,aAAa,eAAA;QACb,MAAM,EAAE,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE;KACnC,CAAA;AACH,CAAC"} \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/extractorsFactory.d.ts b/build/es6/faceFeatureExtractor/extractorsFactory.d.ts deleted file mode 100644 index 2c86c09e..00000000 --- a/build/es6/faceFeatureExtractor/extractorsFactory.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { DenseBlock3Params, DenseBlock4Params } from './types'; -export declare function extractorsFactory(extractWeights: TfjsImageRecognitionBase.ExtractWeightsFunction, paramMappings: TfjsImageRecognitionBase.ParamMapping[]): { - extractDenseBlock3Params: (channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer?: boolean) => DenseBlock3Params; - extractDenseBlock4Params: (channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer?: boolean) => DenseBlock4Params; -}; diff --git a/build/es6/faceFeatureExtractor/extractorsFactory.js b/build/es6/faceFeatureExtractor/extractorsFactory.js deleted file mode 100644 index 7fb53d5d..00000000 --- a/build/es6/faceFeatureExtractor/extractorsFactory.js +++ /dev/null @@ -1,25 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export function extractorsFactory(extractWeights, paramMappings) { - var extractConvParams = TfjsImageRecognitionBase.extractConvParamsFactory(extractWeights, paramMappings); - var extractSeparableConvParams = TfjsImageRecognitionBase.extractSeparableConvParamsFactory(extractWeights, paramMappings); - function extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer) { - if (isFirstLayer === void 0) { isFirstLayer = false; } - var conv0 = isFirstLayer - ? extractConvParams(channelsIn, channelsOut, 3, mappedPrefix + "/conv0") - : extractSeparableConvParams(channelsIn, channelsOut, mappedPrefix + "/conv0"); - var conv1 = extractSeparableConvParams(channelsOut, channelsOut, mappedPrefix + "/conv1"); - var conv2 = extractSeparableConvParams(channelsOut, channelsOut, mappedPrefix + "/conv2"); - return { conv0: conv0, conv1: conv1, conv2: conv2 }; - } - function extractDenseBlock4Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer) { - if (isFirstLayer === void 0) { isFirstLayer = false; } - var _a = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer), conv0 = _a.conv0, conv1 = _a.conv1, conv2 = _a.conv2; - var conv3 = extractSeparableConvParams(channelsOut, channelsOut, mappedPrefix + "/conv3"); - return { conv0: conv0, conv1: conv1, conv2: conv2, conv3: conv3 }; - } - return { - extractDenseBlock3Params: extractDenseBlock3Params, - extractDenseBlock4Params: extractDenseBlock4Params - }; -} -//# sourceMappingURL=extractorsFactory.js.map \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/extractorsFactory.js.map b/build/es6/faceFeatureExtractor/extractorsFactory.js.map deleted file mode 100644 index e3e9e724..00000000 --- a/build/es6/faceFeatureExtractor/extractorsFactory.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractorsFactory.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/extractorsFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAIvE,MAAM,UAAU,iBAAiB,CAAC,cAA+D,EAAE,aAAsD;IAEvJ,IAAM,iBAAiB,GAAG,wBAAwB,CAAC,wBAAwB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAC1G,IAAM,0BAA0B,GAAG,wBAAwB,CAAC,iCAAiC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAE5H,SAAS,wBAAwB,CAAC,UAAkB,EAAE,WAAmB,EAAE,YAAoB,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAE5H,IAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,EAAK,YAAY,WAAQ,CAAC;YACxE,CAAC,CAAC,0BAA0B,CAAC,UAAU,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAChF,IAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAC3F,IAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAE3F,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IAChC,CAAC;IAED,SAAS,wBAAwB,CAAC,UAAkB,EAAE,WAAmB,EAAE,YAAoB,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAEtH,IAAA,kFAAuG,EAArG,gBAAK,EAAE,gBAAK,EAAE,gBAAuF,CAAA;QAC7G,IAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAK,YAAY,WAAQ,CAAC,CAAA;QAE3F,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,wBAAwB,0BAAA;QACxB,wBAAwB,0BAAA;KACzB,CAAA;AAEH,CAAC"} \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/index.d.ts b/build/es6/faceFeatureExtractor/index.d.ts deleted file mode 100644 index 99061f84..00000000 --- a/build/es6/faceFeatureExtractor/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './FaceFeatureExtractor'; -export * from './TinyFaceFeatureExtractor'; diff --git a/build/es6/faceFeatureExtractor/index.js b/build/es6/faceFeatureExtractor/index.js deleted file mode 100644 index 149df2a2..00000000 --- a/build/es6/faceFeatureExtractor/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export * from './FaceFeatureExtractor'; -export * from './TinyFaceFeatureExtractor'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/index.js.map b/build/es6/faceFeatureExtractor/index.js.map deleted file mode 100644 index 431d20b1..00000000 --- a/build/es6/faceFeatureExtractor/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC"} \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/loadParamsFactory.d.ts b/build/es6/faceFeatureExtractor/loadParamsFactory.d.ts deleted file mode 100644 index eb88164e..00000000 --- a/build/es6/faceFeatureExtractor/loadParamsFactory.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { DenseBlock3Params, DenseBlock4Params } from './types'; -export declare function loadParamsFactory(weightMap: any, paramMappings: TfjsImageRecognitionBase.ParamMapping[]): { - extractDenseBlock3Params: (prefix: string, isFirstLayer?: boolean) => DenseBlock3Params; - extractDenseBlock4Params: (prefix: string, isFirstLayer?: boolean) => DenseBlock4Params; -}; diff --git a/build/es6/faceFeatureExtractor/loadParamsFactory.js b/build/es6/faceFeatureExtractor/loadParamsFactory.js deleted file mode 100644 index daa8f361..00000000 --- a/build/es6/faceFeatureExtractor/loadParamsFactory.js +++ /dev/null @@ -1,31 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { loadConvParamsFactory } from '../common/loadConvParamsFactory'; -export function loadParamsFactory(weightMap, paramMappings) { - var extractWeightEntry = TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - var extractConvParams = loadConvParamsFactory(extractWeightEntry); - var extractSeparableConvParams = TfjsImageRecognitionBase.loadSeparableConvParamsFactory(extractWeightEntry); - function extractDenseBlock3Params(prefix, isFirstLayer) { - if (isFirstLayer === void 0) { isFirstLayer = false; } - var conv0 = isFirstLayer - ? extractConvParams(prefix + "/conv0") - : extractSeparableConvParams(prefix + "/conv0"); - var conv1 = extractSeparableConvParams(prefix + "/conv1"); - var conv2 = extractSeparableConvParams(prefix + "/conv2"); - return { conv0: conv0, conv1: conv1, conv2: conv2 }; - } - function extractDenseBlock4Params(prefix, isFirstLayer) { - if (isFirstLayer === void 0) { isFirstLayer = false; } - var conv0 = isFirstLayer - ? extractConvParams(prefix + "/conv0") - : extractSeparableConvParams(prefix + "/conv0"); - var conv1 = extractSeparableConvParams(prefix + "/conv1"); - var conv2 = extractSeparableConvParams(prefix + "/conv2"); - var conv3 = extractSeparableConvParams(prefix + "/conv3"); - return { conv0: conv0, conv1: conv1, conv2: conv2, conv3: conv3 }; - } - return { - extractDenseBlock3Params: extractDenseBlock3Params, - extractDenseBlock4Params: extractDenseBlock4Params - }; -} -//# sourceMappingURL=loadParamsFactory.js.map \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/loadParamsFactory.js.map b/build/es6/faceFeatureExtractor/loadParamsFactory.js.map deleted file mode 100644 index 33925a8f..00000000 --- a/build/es6/faceFeatureExtractor/loadParamsFactory.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"loadParamsFactory.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/loadParamsFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,MAAM,UAAU,iBAAiB,CAAC,SAAc,EAAE,aAAsD;IAEtG,IAAM,kBAAkB,GAAG,wBAAwB,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEvG,IAAM,iBAAiB,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,CAAA;IACnE,IAAM,0BAA0B,GAAG,wBAAwB,CAAC,8BAA8B,CAAC,kBAAkB,CAAC,CAAA;IAE9G,SAAS,wBAAwB,CAAC,MAAc,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAC7E,IAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,iBAAiB,CAAI,MAAM,WAAQ,CAAC;YACtC,CAAC,CAAC,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QACjD,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAE3D,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IAChC,CAAC;IAED,SAAS,wBAAwB,CAAC,MAAc,EAAE,YAA6B;QAA7B,6BAAA,EAAA,oBAA6B;QAC7E,IAAM,KAAK,GAAG,YAAY;YACxB,CAAC,CAAC,iBAAiB,CAAI,MAAM,WAAQ,CAAC;YACtC,CAAC,CAAC,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QACjD,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAC3D,IAAM,KAAK,GAAG,0BAA0B,CAAI,MAAM,WAAQ,CAAC,CAAA;QAE3D,OAAO,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,KAAK,OAAA,EAAE,CAAA;IACvC,CAAC;IAED,OAAO;QACL,wBAAwB,0BAAA;QACxB,wBAAwB,0BAAA;KACzB,CAAA;AACH,CAAC"} \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/types.d.ts b/build/es6/faceFeatureExtractor/types.d.ts deleted file mode 100644 index b6e3a222..00000000 --- a/build/es6/faceFeatureExtractor/types.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput, TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare type ConvWithBatchNormParams = BatchNormParams & { - filter: tf.Tensor4D; -}; -export declare type BatchNormParams = { - mean: tf.Tensor1D; - variance: tf.Tensor1D; - scale: tf.Tensor1D; - offset: tf.Tensor1D; -}; -export declare type SeparableConvWithBatchNormParams = { - depthwise: ConvWithBatchNormParams; - pointwise: ConvWithBatchNormParams; -}; -export declare type DenseBlock3Params = { - conv0: TfjsImageRecognitionBase.SeparableConvParams | TfjsImageRecognitionBase.ConvParams; - conv1: TfjsImageRecognitionBase.SeparableConvParams; - conv2: TfjsImageRecognitionBase.SeparableConvParams; -}; -export declare type DenseBlock4Params = DenseBlock3Params & { - conv3: TfjsImageRecognitionBase.SeparableConvParams; -}; -export declare type TinyFaceFeatureExtractorParams = { - dense0: DenseBlock3Params; - dense1: DenseBlock3Params; - dense2: DenseBlock3Params; -}; -export declare type FaceFeatureExtractorParams = { - dense0: DenseBlock4Params; - dense1: DenseBlock4Params; - dense2: DenseBlock4Params; - dense3: DenseBlock4Params; -}; -export interface IFaceFeatureExtractor extends NeuralNetwork { - forwardInput(input: NetInput): tf.Tensor4D; - forward(input: TNetInput): Promise; -} diff --git a/build/es6/faceFeatureExtractor/types.js b/build/es6/faceFeatureExtractor/types.js deleted file mode 100644 index 5b2306a4..00000000 --- a/build/es6/faceFeatureExtractor/types.js +++ /dev/null @@ -1 +0,0 @@ -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/es6/faceFeatureExtractor/types.js.map b/build/es6/faceFeatureExtractor/types.js.map deleted file mode 100644 index d4dd37d8..00000000 --- a/build/es6/faceFeatureExtractor/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/faceFeatureExtractor/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/es6/faceLandmarkNet/FaceLandmark68Net.d.ts b/build/es6/faceLandmarkNet/FaceLandmark68Net.d.ts deleted file mode 100644 index ba213c97..00000000 --- a/build/es6/faceLandmarkNet/FaceLandmark68Net.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor'; -import { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; -import { FaceLandmark68NetBase } from './FaceLandmark68NetBase'; -export declare class FaceLandmark68Net extends FaceLandmark68NetBase { - constructor(faceFeatureExtractor?: FaceFeatureExtractor); - protected getDefaultModelName(): string; - protected getClassifierChannelsIn(): number; -} diff --git a/build/es6/faceLandmarkNet/FaceLandmark68Net.js b/build/es6/faceLandmarkNet/FaceLandmark68Net.js deleted file mode 100644 index 2061f0b3..00000000 --- a/build/es6/faceLandmarkNet/FaceLandmark68Net.js +++ /dev/null @@ -1,19 +0,0 @@ -import { __extends } from "tslib"; -import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor'; -import { FaceLandmark68NetBase } from './FaceLandmark68NetBase'; -var FaceLandmark68Net = /** @class */ (function (_super) { - __extends(FaceLandmark68Net, _super); - function FaceLandmark68Net(faceFeatureExtractor) { - if (faceFeatureExtractor === void 0) { faceFeatureExtractor = new FaceFeatureExtractor(); } - return _super.call(this, 'FaceLandmark68Net', faceFeatureExtractor) || this; - } - FaceLandmark68Net.prototype.getDefaultModelName = function () { - return 'face_landmark_68_model'; - }; - FaceLandmark68Net.prototype.getClassifierChannelsIn = function () { - return 256; - }; - return FaceLandmark68Net; -}(FaceLandmark68NetBase)); -export { FaceLandmark68Net }; -//# sourceMappingURL=FaceLandmark68Net.js.map \ No newline at end of file diff --git a/build/es6/faceLandmarkNet/FaceLandmark68Net.js.map b/build/es6/faceLandmarkNet/FaceLandmark68Net.js.map deleted file mode 100644 index f99f6b0e..00000000 --- a/build/es6/faceLandmarkNet/FaceLandmark68Net.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceLandmark68Net.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68Net.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAEpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;IAAuC,qCAAiD;IAEtF,2BAAY,oBAAuE;QAAvE,qCAAA,EAAA,2BAAiD,oBAAoB,EAAE;eACjF,kBAAM,mBAAmB,EAAE,oBAAoB,CAAC;IAClD,CAAC;IAES,+CAAmB,GAA7B;QACE,OAAO,wBAAwB,CAAA;IACjC,CAAC;IAES,mDAAuB,GAAjC;QACE,OAAO,GAAG,CAAA;IACZ,CAAC;IACH,wBAAC;AAAD,CAAC,AAbD,CAAuC,qBAAqB,GAa3D"} \ No newline at end of file diff --git a/build/es6/faceLandmarkNet/FaceLandmark68NetBase.d.ts b/build/es6/faceLandmarkNet/FaceLandmark68NetBase.d.ts deleted file mode 100644 index 49c9c774..00000000 --- a/build/es6/faceLandmarkNet/FaceLandmark68NetBase.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { IDimensions, NetInput, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; -import { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; -import { FaceProcessor } from '../faceProcessor/FaceProcessor'; -export declare abstract class FaceLandmark68NetBase extends FaceProcessor { - postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D; - forwardInput(input: NetInput): tf.Tensor2D; - forward(input: TNetInput): Promise; - detectLandmarks(input: TNetInput): Promise; - protected getClassifierChannelsOut(): number; -} diff --git a/build/es6/faceLandmarkNet/FaceLandmark68NetBase.js b/build/es6/faceLandmarkNet/FaceLandmark68NetBase.js deleted file mode 100644 index bfdc6705..00000000 --- a/build/es6/faceLandmarkNet/FaceLandmark68NetBase.js +++ /dev/null @@ -1,112 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { isEven, Point, toNetInput } from 'tfjs-image-recognition-base'; -import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; -import { FaceProcessor } from '../faceProcessor/FaceProcessor'; -var FaceLandmark68NetBase = /** @class */ (function (_super) { - __extends(FaceLandmark68NetBase, _super); - function FaceLandmark68NetBase() { - return _super !== null && _super.apply(this, arguments) || this; - } - FaceLandmark68NetBase.prototype.postProcess = function (output, inputSize, originalDimensions) { - var inputDimensions = originalDimensions.map(function (_a) { - var width = _a.width, height = _a.height; - var scale = inputSize / Math.max(height, width); - return { - width: width * scale, - height: height * scale - }; - }); - var batchSize = inputDimensions.length; - return tf.tidy(function () { - var createInterleavedTensor = function (fillX, fillY) { - return tf.stack([ - tf.fill([68], fillX), - tf.fill([68], fillY) - ], 1).as2D(1, 136).as1D(); - }; - var getPadding = function (batchIdx, cond) { - var _a = inputDimensions[batchIdx], width = _a.width, height = _a.height; - return cond(width, height) ? Math.abs(width - height) / 2 : 0; - }; - var getPaddingX = function (batchIdx) { return getPadding(batchIdx, function (w, h) { return w < h; }); }; - var getPaddingY = function (batchIdx) { return getPadding(batchIdx, function (w, h) { return h < w; }); }; - var landmarkTensors = output - .mul(tf.fill([batchSize, 136], inputSize)) - .sub(tf.stack(Array.from(Array(batchSize), function (_, batchIdx) { - return createInterleavedTensor(getPaddingX(batchIdx), getPaddingY(batchIdx)); - }))) - .div(tf.stack(Array.from(Array(batchSize), function (_, batchIdx) { - return createInterleavedTensor(inputDimensions[batchIdx].width, inputDimensions[batchIdx].height); - }))); - return landmarkTensors; - }); - }; - FaceLandmark68NetBase.prototype.forwardInput = function (input) { - var _this = this; - return tf.tidy(function () { - var out = _this.runNet(input); - return _this.postProcess(out, input.inputSize, input.inputDimensions.map(function (_a) { - var height = _a[0], width = _a[1]; - return ({ height: height, width: width }); - })); - }); - }; - FaceLandmark68NetBase.prototype.forward = function (input) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - FaceLandmark68NetBase.prototype.detectLandmarks = function (input) { - return __awaiter(this, void 0, void 0, function () { - var netInput, landmarkTensors, landmarksForBatch; - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, toNetInput(input)]; - case 1: - netInput = _a.sent(); - landmarkTensors = tf.tidy(function () { return tf.unstack(_this.forwardInput(netInput)); }); - return [4 /*yield*/, Promise.all(landmarkTensors.map(function (landmarkTensor, batchIdx) { return __awaiter(_this, void 0, void 0, function () { - var landmarksArray, _a, _b, xCoords, yCoords; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - _b = (_a = Array).from; - return [4 /*yield*/, landmarkTensor.data()]; - case 1: - landmarksArray = _b.apply(_a, [_c.sent()]); - xCoords = landmarksArray.filter(function (_, i) { return isEven(i); }); - yCoords = landmarksArray.filter(function (_, i) { return !isEven(i); }); - return [2 /*return*/, new FaceLandmarks68(Array(68).fill(0).map(function (_, i) { return new Point(xCoords[i], yCoords[i]); }), { - height: netInput.getInputHeight(batchIdx), - width: netInput.getInputWidth(batchIdx), - })]; - } - }); - }); }))]; - case 2: - landmarksForBatch = _a.sent(); - landmarkTensors.forEach(function (t) { return t.dispose(); }); - return [2 /*return*/, netInput.isBatchInput - ? landmarksForBatch - : landmarksForBatch[0]]; - } - }); - }); - }; - FaceLandmark68NetBase.prototype.getClassifierChannelsOut = function () { - return 136; - }; - return FaceLandmark68NetBase; -}(FaceProcessor)); -export { FaceLandmark68NetBase }; -//# sourceMappingURL=FaceLandmark68NetBase.js.map \ No newline at end of file diff --git a/build/es6/faceLandmarkNet/FaceLandmark68NetBase.js.map b/build/es6/faceLandmarkNet/FaceLandmark68NetBase.js.map deleted file mode 100644 index b7cd5155..00000000 --- a/build/es6/faceLandmarkNet/FaceLandmark68NetBase.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceLandmark68NetBase.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68NetBase.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/faceLandmarkNet/FaceLandmark68TinyNet.d.ts b/build/es6/faceLandmarkNet/FaceLandmark68TinyNet.d.ts deleted file mode 100644 index 58111879..00000000 --- a/build/es6/faceLandmarkNet/FaceLandmark68TinyNet.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor'; -import { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; -import { FaceLandmark68NetBase } from './FaceLandmark68NetBase'; -export declare class FaceLandmark68TinyNet extends FaceLandmark68NetBase { - constructor(faceFeatureExtractor?: TinyFaceFeatureExtractor); - protected getDefaultModelName(): string; - protected getClassifierChannelsIn(): number; -} diff --git a/build/es6/faceLandmarkNet/FaceLandmark68TinyNet.js b/build/es6/faceLandmarkNet/FaceLandmark68TinyNet.js deleted file mode 100644 index 3d54090b..00000000 --- a/build/es6/faceLandmarkNet/FaceLandmark68TinyNet.js +++ /dev/null @@ -1,19 +0,0 @@ -import { __extends } from "tslib"; -import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor'; -import { FaceLandmark68NetBase } from './FaceLandmark68NetBase'; -var FaceLandmark68TinyNet = /** @class */ (function (_super) { - __extends(FaceLandmark68TinyNet, _super); - function FaceLandmark68TinyNet(faceFeatureExtractor) { - if (faceFeatureExtractor === void 0) { faceFeatureExtractor = new TinyFaceFeatureExtractor(); } - return _super.call(this, 'FaceLandmark68TinyNet', faceFeatureExtractor) || this; - } - FaceLandmark68TinyNet.prototype.getDefaultModelName = function () { - return 'face_landmark_68_tiny_model'; - }; - FaceLandmark68TinyNet.prototype.getClassifierChannelsIn = function () { - return 128; - }; - return FaceLandmark68TinyNet; -}(FaceLandmark68NetBase)); -export { FaceLandmark68TinyNet }; -//# sourceMappingURL=FaceLandmark68TinyNet.js.map \ No newline at end of file diff --git a/build/es6/faceLandmarkNet/FaceLandmark68TinyNet.js.map b/build/es6/faceLandmarkNet/FaceLandmark68TinyNet.js.map deleted file mode 100644 index 65d61c7b..00000000 --- a/build/es6/faceLandmarkNet/FaceLandmark68TinyNet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceLandmark68TinyNet.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/FaceLandmark68TinyNet.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAE5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;IAA2C,yCAAqD;IAE9F,+BAAY,oBAA+E;QAA/E,qCAAA,EAAA,2BAAqD,wBAAwB,EAAE;eACzF,kBAAM,uBAAuB,EAAE,oBAAoB,CAAC;IACtD,CAAC;IAES,mDAAmB,GAA7B;QACE,OAAO,6BAA6B,CAAA;IACtC,CAAC;IAES,uDAAuB,GAAjC;QACE,OAAO,GAAG,CAAA;IACZ,CAAC;IACH,4BAAC;AAAD,CAAC,AAbD,CAA2C,qBAAqB,GAa/D"} \ No newline at end of file diff --git a/build/es6/faceLandmarkNet/index.d.ts b/build/es6/faceLandmarkNet/index.d.ts deleted file mode 100644 index b49c3e83..00000000 --- a/build/es6/faceLandmarkNet/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { FaceLandmark68Net } from './FaceLandmark68Net'; -export * from './FaceLandmark68Net'; -export * from './FaceLandmark68TinyNet'; -export declare class FaceLandmarkNet extends FaceLandmark68Net { -} diff --git a/build/es6/faceLandmarkNet/index.js b/build/es6/faceLandmarkNet/index.js deleted file mode 100644 index bc7d1ac5..00000000 --- a/build/es6/faceLandmarkNet/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import { __extends } from "tslib"; -import { FaceLandmark68Net } from './FaceLandmark68Net'; -export * from './FaceLandmark68Net'; -export * from './FaceLandmark68TinyNet'; -var FaceLandmarkNet = /** @class */ (function (_super) { - __extends(FaceLandmarkNet, _super); - function FaceLandmarkNet() { - return _super !== null && _super.apply(this, arguments) || this; - } - return FaceLandmarkNet; -}(FaceLandmark68Net)); -export { FaceLandmarkNet }; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/faceLandmarkNet/index.js.map b/build/es6/faceLandmarkNet/index.js.map deleted file mode 100644 index 823daa4d..00000000 --- a/build/es6/faceLandmarkNet/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceLandmarkNet/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AAExC;IAAqC,mCAAiB;IAAtD;;IAAwD,CAAC;IAAD,sBAAC;AAAD,CAAC,AAAzD,CAAqC,iBAAiB,GAAG"} \ No newline at end of file diff --git a/build/es6/faceProcessor/FaceProcessor.d.ts b/build/es6/faceProcessor/FaceProcessor.d.ts deleted file mode 100644 index b6d962c5..00000000 --- a/build/es6/faceProcessor/FaceProcessor.d.ts +++ /dev/null @@ -1,27 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork } from 'tfjs-image-recognition-base'; -import { FaceFeatureExtractorParams, IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types'; -import { NetParams } from './types'; -export declare abstract class FaceProcessor extends NeuralNetwork { - protected _faceFeatureExtractor: IFaceFeatureExtractor; - constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor); - readonly faceFeatureExtractor: IFaceFeatureExtractor; - protected abstract getDefaultModelName(): string; - protected abstract getClassifierChannelsIn(): number; - protected abstract getClassifierChannelsOut(): number; - runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D; - dispose(throwOnRedispose?: boolean): void; - loadClassifierParams(weights: Float32Array): void; - extractClassifierParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/es6/faceProcessor/FaceProcessor.js b/build/es6/faceProcessor/FaceProcessor.js deleted file mode 100644 index d4c6c1eb..00000000 --- a/build/es6/faceProcessor/FaceProcessor.js +++ /dev/null @@ -1,65 +0,0 @@ -import { __extends } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork } from 'tfjs-image-recognition-base'; -import { fullyConnectedLayer } from '../common/fullyConnectedLayer'; -import { extractParams } from './extractParams'; -import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; -import { seperateWeightMaps } from './util'; -var FaceProcessor = /** @class */ (function (_super) { - __extends(FaceProcessor, _super); - function FaceProcessor(_name, faceFeatureExtractor) { - var _this = _super.call(this, _name) || this; - _this._faceFeatureExtractor = faceFeatureExtractor; - return _this; - } - Object.defineProperty(FaceProcessor.prototype, "faceFeatureExtractor", { - get: function () { - return this._faceFeatureExtractor; - }, - enumerable: true, - configurable: true - }); - FaceProcessor.prototype.runNet = function (input) { - var _this = this; - var params = this.params; - if (!params) { - throw new Error(this._name + " - load model before inference"); - } - return tf.tidy(function () { - var bottleneckFeatures = input instanceof NetInput - ? _this.faceFeatureExtractor.forwardInput(input) - : input; - return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc); - }); - }; - FaceProcessor.prototype.dispose = function (throwOnRedispose) { - if (throwOnRedispose === void 0) { throwOnRedispose = true; } - this.faceFeatureExtractor.dispose(throwOnRedispose); - _super.prototype.dispose.call(this, throwOnRedispose); - }; - FaceProcessor.prototype.loadClassifierParams = function (weights) { - var _a = this.extractClassifierParams(weights), params = _a.params, paramMappings = _a.paramMappings; - this._params = params; - this._paramMappings = paramMappings; - }; - FaceProcessor.prototype.extractClassifierParams = function (weights) { - return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut()); - }; - FaceProcessor.prototype.extractParamsFromWeigthMap = function (weightMap) { - var _a = seperateWeightMaps(weightMap), featureExtractorMap = _a.featureExtractorMap, classifierMap = _a.classifierMap; - this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap); - return extractParamsFromWeigthMap(classifierMap); - }; - FaceProcessor.prototype.extractParams = function (weights) { - var cIn = this.getClassifierChannelsIn(); - var cOut = this.getClassifierChannelsOut(); - var classifierWeightSize = (cOut * cIn) + cOut; - var featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize); - var classifierWeights = weights.slice(weights.length - classifierWeightSize); - this.faceFeatureExtractor.extractWeights(featureExtractorWeights); - return this.extractClassifierParams(classifierWeights); - }; - return FaceProcessor; -}(NeuralNetwork)); -export { FaceProcessor }; -//# sourceMappingURL=FaceProcessor.js.map \ No newline at end of file diff --git a/build/es6/faceProcessor/FaceProcessor.js.map b/build/es6/faceProcessor/FaceProcessor.js.map deleted file mode 100644 index 4cd467ac..00000000 --- a/build/es6/faceProcessor/FaceProcessor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceProcessor.js","sourceRoot":"","sources":["../../../src/faceProcessor/FaceProcessor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/faceProcessor/extractParams.d.ts b/build/es6/faceProcessor/extractParams.d.ts deleted file mode 100644 index 950e0aab..00000000 --- a/build/es6/faceProcessor/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/faceProcessor/extractParams.js b/build/es6/faceProcessor/extractParams.js deleted file mode 100644 index 12751707..00000000 --- a/build/es6/faceProcessor/extractParams.js +++ /dev/null @@ -1,15 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export function extractParams(weights, channelsIn, channelsOut) { - var paramMappings = []; - var _a = TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var extractFCParams = TfjsImageRecognitionBase.extractFCParamsFactory(extractWeights, paramMappings); - var fc = extractFCParams(channelsIn, channelsOut, 'fc'); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { - paramMappings: paramMappings, - params: { fc: fc } - }; -} -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/es6/faceProcessor/extractParams.js.map b/build/es6/faceProcessor/extractParams.js.map deleted file mode 100644 index 56a3d0e5..00000000 --- a/build/es6/faceProcessor/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/faceProcessor/extractParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAIvE,MAAM,UAAU,aAAa,CAAC,OAAqB,EAAE,UAAkB,EAAE,WAAmB;IAE1F,IAAM,aAAa,GAA4C,EAAE,CAAA;IAE3D,IAAA,4DAGqD,EAFzD,kCAAc,EACd,4CACyD,CAAA;IAE3D,IAAM,eAAe,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;IAEtG,IAAM,EAAE,GAAG,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;IAEzD,IAAI,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAkC,mBAAmB,EAAE,CAAC,MAAQ,CAAC,CAAA;KAClF;IAED,OAAO;QACL,aAAa,eAAA;QACb,MAAM,EAAE,EAAE,EAAE,IAAA,EAAE;KACf,CAAA;AACH,CAAC"} \ No newline at end of file diff --git a/build/es6/faceProcessor/extractParamsFromWeigthMap.d.ts b/build/es6/faceProcessor/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index 7bf5a66d..00000000 --- a/build/es6/faceProcessor/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/faceProcessor/extractParamsFromWeigthMap.js b/build/es6/faceProcessor/extractParamsFromWeigthMap.js deleted file mode 100644 index 44fa08ee..00000000 --- a/build/es6/faceProcessor/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,16 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export function extractParamsFromWeigthMap(weightMap) { - var paramMappings = []; - var extractWeightEntry = TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - function extractFcParams(prefix) { - var weights = extractWeightEntry(prefix + "/weights", 2); - var bias = extractWeightEntry(prefix + "/bias", 1); - return { weights: weights, bias: bias }; - } - var params = { - fc: extractFcParams('fc') - }; - TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: params, paramMappings: paramMappings }; -} -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/es6/faceProcessor/extractParamsFromWeigthMap.js.map b/build/es6/faceProcessor/extractParamsFromWeigthMap.js.map deleted file mode 100644 index 88b8f074..00000000 --- a/build/es6/faceProcessor/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/faceProcessor/extractParamsFromWeigthMap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAIvE,MAAM,UAAU,0BAA0B,CACxC,SAA4B;IAG5B,IAAM,aAAa,GAA4C,EAAE,CAAA;IAEjE,IAAM,kBAAkB,GAAG,wBAAwB,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEvG,SAAS,eAAe,CAAC,MAAc;QACrC,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,aAAU,EAAE,CAAC,CAAC,CAAA;QACvE,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,UAAO,EAAE,CAAC,CAAC,CAAA;QACjE,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC;IAED,IAAM,MAAM,GAAG;QACb,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC;KAC1B,CAAA;IAED,wBAAwB,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAClC,CAAC"} \ No newline at end of file diff --git a/build/es6/faceProcessor/index.d.ts b/build/es6/faceProcessor/index.d.ts deleted file mode 100644 index 9e98e7d8..00000000 --- a/build/es6/faceProcessor/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './FaceProcessor'; diff --git a/build/es6/faceProcessor/index.js b/build/es6/faceProcessor/index.js deleted file mode 100644 index 43ae5c6f..00000000 --- a/build/es6/faceProcessor/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './FaceProcessor'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/faceProcessor/index.js.map b/build/es6/faceProcessor/index.js.map deleted file mode 100644 index 41e37046..00000000 --- a/build/es6/faceProcessor/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/faceProcessor/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"} \ No newline at end of file diff --git a/build/es6/faceProcessor/types.d.ts b/build/es6/faceProcessor/types.d.ts deleted file mode 100644 index 3cc54402..00000000 --- a/build/es6/faceProcessor/types.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare type NetParams = { - fc: TfjsImageRecognitionBase.FCParams; -}; diff --git a/build/es6/faceProcessor/types.js b/build/es6/faceProcessor/types.js deleted file mode 100644 index 5b2306a4..00000000 --- a/build/es6/faceProcessor/types.js +++ /dev/null @@ -1 +0,0 @@ -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/es6/faceProcessor/types.js.map b/build/es6/faceProcessor/types.js.map deleted file mode 100644 index 42a7693f..00000000 --- a/build/es6/faceProcessor/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/faceProcessor/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/es6/faceProcessor/util.d.ts b/build/es6/faceProcessor/util.d.ts deleted file mode 100644 index e28fedc0..00000000 --- a/build/es6/faceProcessor/util.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export declare function seperateWeightMaps(weightMap: tf.NamedTensorMap): { - featureExtractorMap: tf.NamedTensorMap; - classifierMap: tf.NamedTensorMap; -}; diff --git a/build/es6/faceProcessor/util.js b/build/es6/faceProcessor/util.js deleted file mode 100644 index 66558e9c..00000000 --- a/build/es6/faceProcessor/util.js +++ /dev/null @@ -1,10 +0,0 @@ -export function seperateWeightMaps(weightMap) { - var featureExtractorMap = {}; - var classifierMap = {}; - Object.keys(weightMap).forEach(function (key) { - var map = key.startsWith('fc') ? classifierMap : featureExtractorMap; - map[key] = weightMap[key]; - }); - return { featureExtractorMap: featureExtractorMap, classifierMap: classifierMap }; -} -//# sourceMappingURL=util.js.map \ No newline at end of file diff --git a/build/es6/faceProcessor/util.js.map b/build/es6/faceProcessor/util.js.map deleted file mode 100644 index 8fbf47ad..00000000 --- a/build/es6/faceProcessor/util.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/faceProcessor/util.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,SAA4B;IAE7D,IAAM,mBAAmB,GAAsB,EAAE,CAAA;IACjD,IAAM,aAAa,GAAsB,EAAE,CAAA;IAE3C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;QAChC,IAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAA;QACtE,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,mBAAmB,qBAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAE/C,CAAC"} \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/FaceRecognitionNet.d.ts b/build/es6/faceRecognitionNet/FaceRecognitionNet.d.ts deleted file mode 100644 index 1fd59dab..00000000 --- a/build/es6/faceRecognitionNet/FaceRecognitionNet.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare class FaceRecognitionNet extends NeuralNetwork { - constructor(); - forwardInput(input: NetInput): tf.Tensor2D; - forward(input: TNetInput): Promise; - computeFaceDescriptor(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/es6/faceRecognitionNet/FaceRecognitionNet.js b/build/es6/faceRecognitionNet/FaceRecognitionNet.js deleted file mode 100644 index 906d4850..00000000 --- a/build/es6/faceRecognitionNet/FaceRecognitionNet.js +++ /dev/null @@ -1,89 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { NeuralNetwork, normalize, toNetInput } from 'tfjs-image-recognition-base'; -import { convDown } from './convLayer'; -import { extractParams } from './extractParams'; -import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; -import { residual, residualDown } from './residualLayer'; -var FaceRecognitionNet = /** @class */ (function (_super) { - __extends(FaceRecognitionNet, _super); - function FaceRecognitionNet() { - return _super.call(this, 'FaceRecognitionNet') || this; - } - FaceRecognitionNet.prototype.forwardInput = function (input) { - var params = this.params; - if (!params) { - throw new Error('FaceRecognitionNet - load model before inference'); - } - return tf.tidy(function () { - var batchTensor = input.toBatchTensor(150, true).toFloat(); - var meanRgb = [122.782, 117.001, 104.298]; - var normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)); - var out = convDown(normalized, params.conv32_down); - out = tf.maxPool(out, 3, 2, 'valid'); - out = residual(out, params.conv32_1); - out = residual(out, params.conv32_2); - out = residual(out, params.conv32_3); - out = residualDown(out, params.conv64_down); - out = residual(out, params.conv64_1); - out = residual(out, params.conv64_2); - out = residual(out, params.conv64_3); - out = residualDown(out, params.conv128_down); - out = residual(out, params.conv128_1); - out = residual(out, params.conv128_2); - out = residualDown(out, params.conv256_down); - out = residual(out, params.conv256_1); - out = residual(out, params.conv256_2); - out = residualDown(out, params.conv256_down_out); - var globalAvg = out.mean([1, 2]); - var fullyConnected = tf.matMul(globalAvg, params.fc); - return fullyConnected; - }); - }; - FaceRecognitionNet.prototype.forward = function (input) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - FaceRecognitionNet.prototype.computeFaceDescriptor = function (input) { - return __awaiter(this, void 0, void 0, function () { - var netInput, faceDescriptorTensors, faceDescriptorsForBatch; - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, toNetInput(input)]; - case 1: - netInput = _a.sent(); - faceDescriptorTensors = tf.tidy(function () { return tf.unstack(_this.forwardInput(netInput)); }); - return [4 /*yield*/, Promise.all(faceDescriptorTensors.map(function (t) { return t.data(); }))]; - case 2: - faceDescriptorsForBatch = _a.sent(); - faceDescriptorTensors.forEach(function (t) { return t.dispose(); }); - return [2 /*return*/, netInput.isBatchInput - ? faceDescriptorsForBatch - : faceDescriptorsForBatch[0]]; - } - }); - }); - }; - FaceRecognitionNet.prototype.getDefaultModelName = function () { - return 'face_recognition_model'; - }; - FaceRecognitionNet.prototype.extractParamsFromWeigthMap = function (weightMap) { - return extractParamsFromWeigthMap(weightMap); - }; - FaceRecognitionNet.prototype.extractParams = function (weights) { - return extractParams(weights); - }; - return FaceRecognitionNet; -}(NeuralNetwork)); -export { FaceRecognitionNet }; -//# sourceMappingURL=FaceRecognitionNet.js.map \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/FaceRecognitionNet.js.map b/build/es6/faceRecognitionNet/FaceRecognitionNet.js.map deleted file mode 100644 index e44b2bbb..00000000 --- a/build/es6/faceRecognitionNet/FaceRecognitionNet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceRecognitionNet.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/FaceRecognitionNet.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/convLayer.d.ts b/build/es6/faceRecognitionNet/convLayer.d.ts deleted file mode 100644 index a750f6c4..00000000 --- a/build/es6/faceRecognitionNet/convLayer.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { ConvLayerParams } from './types'; -export declare function conv(x: tf.Tensor4D, params: ConvLayerParams): tf.Tensor; -export declare function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams): tf.Tensor; -export declare function convDown(x: tf.Tensor4D, params: ConvLayerParams): tf.Tensor; diff --git a/build/es6/faceRecognitionNet/convLayer.js b/build/es6/faceRecognitionNet/convLayer.js deleted file mode 100644 index e5d61651..00000000 --- a/build/es6/faceRecognitionNet/convLayer.js +++ /dev/null @@ -1,20 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { scale } from './scaleLayer'; -function convLayer(x, params, strides, withRelu, padding) { - if (padding === void 0) { padding = 'same'; } - var _a = params.conv, filters = _a.filters, bias = _a.bias; - var out = tf.conv2d(x, filters, strides, padding); - out = tf.add(out, bias); - out = scale(out, params.scale); - return withRelu ? tf.relu(out) : out; -} -export function conv(x, params) { - return convLayer(x, params, [1, 1], true); -} -export function convNoRelu(x, params) { - return convLayer(x, params, [1, 1], false); -} -export function convDown(x, params) { - return convLayer(x, params, [2, 2], true, 'valid'); -} -//# sourceMappingURL=convLayer.js.map \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/convLayer.js.map b/build/es6/faceRecognitionNet/convLayer.js.map deleted file mode 100644 index abb716ad..00000000 --- a/build/es6/faceRecognitionNet/convLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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,SAAS,SAAS,CAChB,CAAc,EACd,MAAuB,EACvB,OAAyB,EACzB,QAAiB,EACjB,OAAkC;IAAlC,wBAAA,EAAA,gBAAkC;IAE5B,IAAA,gBAA+B,EAA7B,oBAAO,EAAE,cAAoB,CAAA;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,UAAU,IAAI,CAAC,CAAc,EAAE,MAAuB;IAC1D,OAAO,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAc,EAAE,MAAuB;IAChE,OAAO,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,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 diff --git a/build/es6/faceRecognitionNet/extractParams.d.ts b/build/es6/faceRecognitionNet/extractParams.d.ts deleted file mode 100644 index 14d45d2b..00000000 --- a/build/es6/faceRecognitionNet/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/faceRecognitionNet/extractParams.js b/build/es6/faceRecognitionNet/extractParams.js deleted file mode 100644 index d32fa899..00000000 --- a/build/es6/faceRecognitionNet/extractParams.js +++ /dev/null @@ -1,87 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { isFloat, TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -function extractorsFactory(extractWeights, paramMappings) { - function extractFilterValues(numFilterValues, numFilters, filterSize) { - var weights = extractWeights(numFilterValues); - var depth = weights.length / (numFilters * filterSize * filterSize); - if (isFloat(depth)) { - 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]); }); - } - function extractConvParams(numFilterValues, numFilters, filterSize, mappedPrefix) { - var filters = extractFilterValues(numFilterValues, numFilters, filterSize); - var bias = tf.tensor1d(extractWeights(numFilters)); - paramMappings.push({ paramPath: mappedPrefix + "/filters" }, { paramPath: mappedPrefix + "/bias" }); - return { filters: filters, bias: bias }; - } - function extractScaleLayerParams(numWeights, mappedPrefix) { - var weights = tf.tensor1d(extractWeights(numWeights)); - var biases = tf.tensor1d(extractWeights(numWeights)); - paramMappings.push({ paramPath: mappedPrefix + "/weights" }, { paramPath: mappedPrefix + "/biases" }); - return { - weights: weights, - biases: biases - }; - } - function extractConvLayerParams(numFilterValues, numFilters, filterSize, mappedPrefix) { - var conv = extractConvParams(numFilterValues, numFilters, filterSize, mappedPrefix + "/conv"); - var scale = extractScaleLayerParams(numFilters, mappedPrefix + "/scale"); - return { conv: conv, scale: scale }; - } - function extractResidualLayerParams(numFilterValues, numFilters, filterSize, mappedPrefix, isDown) { - if (isDown === void 0) { isDown = false; } - var conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, mappedPrefix + "/conv1"); - var conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, mappedPrefix + "/conv2"); - return { conv1: conv1, conv2: conv2 }; - } - return { - extractConvLayerParams: extractConvLayerParams, - extractResidualLayerParams: extractResidualLayerParams - }; -} -export function extractParams(weights) { - var _a = TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var paramMappings = []; - var _b = extractorsFactory(extractWeights, paramMappings), extractConvLayerParams = _b.extractConvLayerParams, extractResidualLayerParams = _b.extractResidualLayerParams; - var conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down'); - var conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1'); - var conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2'); - var conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3'); - var conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true); - var conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1'); - var conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2'); - var conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3'); - var conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true); - var conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1'); - var conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2'); - var conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true); - var conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1'); - var conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2'); - var conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out'); - var fc = tf.tidy(function () { return tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]); }); - paramMappings.push({ paramPath: "fc" }); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - var params = { - conv32_down: conv32_down, - conv32_1: conv32_1, - conv32_2: conv32_2, - conv32_3: conv32_3, - conv64_down: conv64_down, - conv64_1: conv64_1, - conv64_2: conv64_2, - conv64_3: conv64_3, - conv128_down: conv128_down, - conv128_1: conv128_1, - conv128_2: conv128_2, - conv256_down: conv256_down, - conv256_1: conv256_1, - conv256_2: conv256_2, - conv256_down_out: conv256_down_out, - fc: fc - }; - return { params: params, paramMappings: paramMappings }; -} -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/extractParams.js.map b/build/es6/faceRecognitionNet/extractParams.js.map deleted file mode 100644 index 910e51a0..00000000 --- a/build/es6/faceRecognitionNet/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/extractParams.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/extractParamsFromWeigthMap.d.ts b/build/es6/faceRecognitionNet/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index 7bf5a66d..00000000 --- a/build/es6/faceRecognitionNet/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/faceRecognitionNet/extractParamsFromWeigthMap.js b/build/es6/faceRecognitionNet/extractParamsFromWeigthMap.js deleted file mode 100644 index 55023114..00000000 --- a/build/es6/faceRecognitionNet/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,70 +0,0 @@ -import { isTensor2D, TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -function extractorsFactory(weightMap, paramMappings) { - var extractWeightEntry = TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - function extractScaleLayerParams(prefix) { - var weights = extractWeightEntry(prefix + "/scale/weights", 1); - var biases = extractWeightEntry(prefix + "/scale/biases", 1); - return { weights: weights, biases: biases }; - } - function extractConvLayerParams(prefix) { - var filters = extractWeightEntry(prefix + "/conv/filters", 4); - var bias = extractWeightEntry(prefix + "/conv/bias", 1); - var scale = extractScaleLayerParams(prefix); - return { conv: { filters: filters, bias: bias }, scale: scale }; - } - function extractResidualLayerParams(prefix) { - return { - conv1: extractConvLayerParams(prefix + "/conv1"), - conv2: extractConvLayerParams(prefix + "/conv2") - }; - } - return { - extractConvLayerParams: extractConvLayerParams, - extractResidualLayerParams: extractResidualLayerParams - }; -} -export function extractParamsFromWeigthMap(weightMap) { - var paramMappings = []; - var _a = extractorsFactory(weightMap, paramMappings), extractConvLayerParams = _a.extractConvLayerParams, extractResidualLayerParams = _a.extractResidualLayerParams; - var conv32_down = extractConvLayerParams('conv32_down'); - var conv32_1 = extractResidualLayerParams('conv32_1'); - var conv32_2 = extractResidualLayerParams('conv32_2'); - var conv32_3 = extractResidualLayerParams('conv32_3'); - var conv64_down = extractResidualLayerParams('conv64_down'); - var conv64_1 = extractResidualLayerParams('conv64_1'); - var conv64_2 = extractResidualLayerParams('conv64_2'); - var conv64_3 = extractResidualLayerParams('conv64_3'); - var conv128_down = extractResidualLayerParams('conv128_down'); - var conv128_1 = extractResidualLayerParams('conv128_1'); - var conv128_2 = extractResidualLayerParams('conv128_2'); - var conv256_down = extractResidualLayerParams('conv256_down'); - var conv256_1 = extractResidualLayerParams('conv256_1'); - var conv256_2 = extractResidualLayerParams('conv256_2'); - var conv256_down_out = extractResidualLayerParams('conv256_down_out'); - var fc = weightMap['fc']; - paramMappings.push({ originalPath: 'fc', paramPath: 'fc' }); - if (!isTensor2D(fc)) { - throw new Error("expected weightMap[fc] to be a Tensor2D, instead have " + fc); - } - var params = { - conv32_down: conv32_down, - conv32_1: conv32_1, - conv32_2: conv32_2, - conv32_3: conv32_3, - conv64_down: conv64_down, - conv64_1: conv64_1, - conv64_2: conv64_2, - conv64_3: conv64_3, - conv128_down: conv128_down, - conv128_1: conv128_1, - conv128_2: conv128_2, - conv256_down: conv256_down, - conv256_1: conv256_1, - conv256_2: conv256_2, - conv256_down_out: conv256_down_out, - fc: fc - }; - TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: params, paramMappings: paramMappings }; -} -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/extractParamsFromWeigthMap.js.map b/build/es6/faceRecognitionNet/extractParamsFromWeigthMap.js.map deleted file mode 100644 index 97d73fb0..00000000 --- a/build/es6/faceRecognitionNet/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/extractParamsFromWeigthMap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAInF,SAAS,iBAAiB,CAAC,SAAc,EAAE,aAAsD;IAE/F,IAAM,kBAAkB,GAAG,wBAAwB,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEvG,SAAS,uBAAuB,CAAC,MAAc;QAE7C,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,mBAAgB,EAAE,CAAC,CAAC,CAAA;QAC7E,IAAM,MAAM,GAAG,kBAAkB,CAAiB,MAAM,kBAAe,EAAE,CAAC,CAAC,CAAA;QAE3E,OAAO,EAAE,OAAO,SAAA,EAAE,MAAM,QAAA,EAAE,CAAA;IAC5B,CAAC;IAED,SAAS,sBAAsB,CAAC,MAAc;QAE5C,IAAM,OAAO,GAAG,kBAAkB,CAAiB,MAAM,kBAAe,EAAE,CAAC,CAAC,CAAA;QAC5E,IAAM,IAAI,GAAG,kBAAkB,CAAiB,MAAM,eAAY,EAAE,CAAC,CAAC,CAAA;QACtE,IAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAA;QAE7C,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,EAAE,KAAK,OAAA,EAAE,CAAA;IAC3C,CAAC;IAED,SAAS,0BAA0B,CAAC,MAAc;QAChD,OAAO;YACL,KAAK,EAAE,sBAAsB,CAAI,MAAM,WAAQ,CAAC;YAChD,KAAK,EAAE,sBAAsB,CAAI,MAAM,WAAQ,CAAC;SACjD,CAAA;IACH,CAAC;IAED,OAAO;QACL,sBAAsB,wBAAA;QACtB,0BAA0B,4BAAA;KAC3B,CAAA;AAEH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,SAA4B;IAG5B,IAAM,aAAa,GAA4C,EAAE,CAAA;IAE3D,IAAA,gDAGyC,EAF7C,kDAAsB,EACtB,0DAC6C,CAAA;IAE/C,IAAM,WAAW,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAA;IACzD,IAAM,QAAQ,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAA;IACvD,IAAM,QAAQ,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAA;IACvD,IAAM,QAAQ,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAA;IAEvD,IAAM,WAAW,GAAG,0BAA0B,CAAC,aAAa,CAAC,CAAA;IAC7D,IAAM,QAAQ,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAA;IACvD,IAAM,QAAQ,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAA;IACvD,IAAM,QAAQ,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAA;IAEvD,IAAM,YAAY,GAAG,0BAA0B,CAAC,cAAc,CAAC,CAAA;IAC/D,IAAM,SAAS,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAA;IACzD,IAAM,SAAS,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAA;IAEzD,IAAM,YAAY,GAAG,0BAA0B,CAAC,cAAc,CAAC,CAAA;IAC/D,IAAM,SAAS,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAA;IACzD,IAAM,SAAS,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAA;IACzD,IAAM,gBAAgB,GAAG,0BAA0B,CAAC,kBAAkB,CAAC,CAAA;IAEvE,IAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC1B,aAAa,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE3D,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,2DAAyD,EAAI,CAAC,CAAA;KAC/E;IAED,IAAM,MAAM,GAAG;QACb,WAAW,aAAA;QACX,QAAQ,UAAA;QACR,QAAQ,UAAA;QACR,QAAQ,UAAA;QACR,WAAW,aAAA;QACX,QAAQ,UAAA;QACR,QAAQ,UAAA;QACR,QAAQ,UAAA;QACR,YAAY,cAAA;QACZ,SAAS,WAAA;QACT,SAAS,WAAA;QACT,YAAY,cAAA;QACZ,SAAS,WAAA;QACT,SAAS,WAAA;QACT,gBAAgB,kBAAA;QAChB,EAAE,IAAA;KACH,CAAA;IAED,wBAAwB,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,EAAE,MAAM,QAAA,EAAE,aAAa,eAAA,EAAE,CAAA;AAClC,CAAC"} \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/index.d.ts b/build/es6/faceRecognitionNet/index.d.ts deleted file mode 100644 index 487d6af4..00000000 --- a/build/es6/faceRecognitionNet/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { FaceRecognitionNet } from './FaceRecognitionNet'; -export * from './FaceRecognitionNet'; -export declare function createFaceRecognitionNet(weights: Float32Array): FaceRecognitionNet; diff --git a/build/es6/faceRecognitionNet/index.js b/build/es6/faceRecognitionNet/index.js deleted file mode 100644 index 0074593d..00000000 --- a/build/es6/faceRecognitionNet/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import { FaceRecognitionNet } from './FaceRecognitionNet'; -export * from './FaceRecognitionNet'; -export function createFaceRecognitionNet(weights) { - var net = new FaceRecognitionNet(); - net.extractWeights(weights); - return net; -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/index.js.map b/build/es6/faceRecognitionNet/index.js.map deleted file mode 100644 index c34c8a97..00000000 --- a/build/es6/faceRecognitionNet/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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,UAAU,wBAAwB,CAAC,OAAqB;IAC5D,IAAM,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAA;IACpC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC"} \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/residualLayer.d.ts b/build/es6/faceRecognitionNet/residualLayer.d.ts deleted file mode 100644 index 1656e0a0..00000000 --- a/build/es6/faceRecognitionNet/residualLayer.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { ResidualLayerParams } from './types'; -export declare function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D; -export declare function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D; diff --git a/build/es6/faceRecognitionNet/residualLayer.js b/build/es6/faceRecognitionNet/residualLayer.js deleted file mode 100644 index 7a5a5874..00000000 --- a/build/es6/faceRecognitionNet/residualLayer.js +++ /dev/null @@ -1,33 +0,0 @@ -import { __spreadArrays } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { conv, convDown, convNoRelu } from './convLayer'; -export function residual(x, params) { - var out = conv(x, params.conv1); - out = convNoRelu(out, params.conv2); - out = tf.add(out, x); - out = tf.relu(out); - return out; -} -export function residualDown(x, params) { - var out = convDown(x, params.conv1); - out = convNoRelu(out, params.conv2); - var pooled = tf.avgPool(x, 2, 2, 'valid'); - var zeros = tf.zeros(pooled.shape); - var isPad = pooled.shape[3] !== out.shape[3]; - var isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2]; - if (isAdjustShape) { - var padShapeX = __spreadArrays(out.shape); - padShapeX[1] = 1; - var zerosW = tf.zeros(padShapeX); - out = tf.concat([out, zerosW], 1); - var padShapeY = __spreadArrays(out.shape); - padShapeY[2] = 1; - var zerosH = tf.zeros(padShapeY); - out = tf.concat([out, zerosH], 2); - } - pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled; - out = tf.add(pooled, out); - out = tf.relu(out); - return out; -} -//# sourceMappingURL=residualLayer.js.map \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/residualLayer.js.map b/build/es6/faceRecognitionNet/residualLayer.js.map deleted file mode 100644 index 272ee765..00000000 --- a/build/es6/faceRecognitionNet/residualLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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,UAAU,QAAQ,CAAC,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,UAAU,YAAY,CAAC,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,GAAG,eAAI,GAAG,CAAC,KAAK,CAAqC,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,GAAG,eAAI,GAAG,CAAC,KAAK,CAAqC,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 diff --git a/build/es6/faceRecognitionNet/scaleLayer.d.ts b/build/es6/faceRecognitionNet/scaleLayer.d.ts deleted file mode 100644 index 07a866ea..00000000 --- a/build/es6/faceRecognitionNet/scaleLayer.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { ScaleLayerParams } from './types'; -export declare function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D; diff --git a/build/es6/faceRecognitionNet/scaleLayer.js b/build/es6/faceRecognitionNet/scaleLayer.js deleted file mode 100644 index 6c1b911e..00000000 --- a/build/es6/faceRecognitionNet/scaleLayer.js +++ /dev/null @@ -1,5 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export function scale(x, params) { - return tf.add(tf.mul(x, params.weights), params.biases); -} -//# sourceMappingURL=scaleLayer.js.map \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/scaleLayer.js.map b/build/es6/faceRecognitionNet/scaleLayer.js.map deleted file mode 100644 index 82536d2d..00000000 --- a/build/es6/faceRecognitionNet/scaleLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"scaleLayer.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/scaleLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI5C,MAAM,UAAU,KAAK,CAAC,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 diff --git a/build/es6/faceRecognitionNet/types.d.ts b/build/es6/faceRecognitionNet/types.d.ts deleted file mode 100644 index a390ee87..00000000 --- a/build/es6/faceRecognitionNet/types.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare type ScaleLayerParams = { - weights: tf.Tensor1D; - biases: tf.Tensor1D; -}; -export declare type ResidualLayerParams = { - conv1: ConvLayerParams; - conv2: ConvLayerParams; -}; -export declare type ConvLayerParams = { - conv: TfjsImageRecognitionBase.ConvParams; - scale: ScaleLayerParams; -}; -export declare type NetParams = { - conv32_down: ConvLayerParams; - conv32_1: ResidualLayerParams; - conv32_2: ResidualLayerParams; - conv32_3: ResidualLayerParams; - conv64_down: ResidualLayerParams; - conv64_1: ResidualLayerParams; - conv64_2: ResidualLayerParams; - conv64_3: ResidualLayerParams; - conv128_down: ResidualLayerParams; - conv128_1: ResidualLayerParams; - conv128_2: ResidualLayerParams; - conv256_down: ResidualLayerParams; - conv256_1: ResidualLayerParams; - conv256_2: ResidualLayerParams; - conv256_down_out: ResidualLayerParams; - fc: tf.Tensor2D; -}; diff --git a/build/es6/faceRecognitionNet/types.js b/build/es6/faceRecognitionNet/types.js deleted file mode 100644 index 5b2306a4..00000000 --- a/build/es6/faceRecognitionNet/types.js +++ /dev/null @@ -1 +0,0 @@ -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/es6/faceRecognitionNet/types.js.map b/build/es6/faceRecognitionNet/types.js.map deleted file mode 100644 index 3e899768..00000000 --- a/build/es6/faceRecognitionNet/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/faceRecognitionNet/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/es6/factories/WithAge.d.ts b/build/es6/factories/WithAge.d.ts deleted file mode 100644 index b924852d..00000000 --- a/build/es6/factories/WithAge.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare type WithAge = TSource & { - age: number; -}; -export declare function isWithAge(obj: any): obj is WithAge<{}>; -export declare function extendWithAge(sourceObj: TSource, age: number): WithAge; diff --git a/build/es6/factories/WithAge.js b/build/es6/factories/WithAge.js deleted file mode 100644 index 1f0a08c2..00000000 --- a/build/es6/factories/WithAge.js +++ /dev/null @@ -1,8 +0,0 @@ -export function isWithAge(obj) { - return typeof obj['age'] === 'number'; -} -export function extendWithAge(sourceObj, age) { - var extension = { age: age }; - return Object.assign({}, sourceObj, extension); -} -//# sourceMappingURL=WithAge.js.map \ No newline at end of file diff --git a/build/es6/factories/WithAge.js.map b/build/es6/factories/WithAge.js.map deleted file mode 100644 index ba072f07..00000000 --- a/build/es6/factories/WithAge.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WithAge.js","sourceRoot":"","sources":["../../../src/factories/WithAge.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,OAAO,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,aAAa,CAG3B,SAAkB,EAClB,GAAW;IAGX,IAAM,SAAS,GAAG,EAAE,GAAG,KAAA,EAAE,CAAA;IACzB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC"} \ No newline at end of file diff --git a/build/es6/factories/WithFaceDescriptor.d.ts b/build/es6/factories/WithFaceDescriptor.d.ts deleted file mode 100644 index 45175ba6..00000000 --- a/build/es6/factories/WithFaceDescriptor.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare type WithFaceDescriptor = TSource & { - descriptor: Float32Array; -}; -export declare function extendWithFaceDescriptor(sourceObj: TSource, descriptor: Float32Array): WithFaceDescriptor; diff --git a/build/es6/factories/WithFaceDescriptor.js b/build/es6/factories/WithFaceDescriptor.js deleted file mode 100644 index cce7b739..00000000 --- a/build/es6/factories/WithFaceDescriptor.js +++ /dev/null @@ -1,5 +0,0 @@ -export function extendWithFaceDescriptor(sourceObj, descriptor) { - var extension = { descriptor: descriptor }; - return Object.assign({}, sourceObj, extension); -} -//# sourceMappingURL=WithFaceDescriptor.js.map \ No newline at end of file diff --git a/build/es6/factories/WithFaceDescriptor.js.map b/build/es6/factories/WithFaceDescriptor.js.map deleted file mode 100644 index f9e0a704..00000000 --- a/build/es6/factories/WithFaceDescriptor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WithFaceDescriptor.js","sourceRoot":"","sources":["../../../src/factories/WithFaceDescriptor.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,wBAAwB,CAGtC,SAAkB,EAClB,UAAwB;IAGxB,IAAM,SAAS,GAAG,EAAE,UAAU,YAAA,EAAE,CAAA;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC"} \ No newline at end of file diff --git a/build/es6/factories/WithFaceDetection.d.ts b/build/es6/factories/WithFaceDetection.d.ts deleted file mode 100644 index 718ea711..00000000 --- a/build/es6/factories/WithFaceDetection.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { FaceDetection } from '../classes/FaceDetection'; -export declare type WithFaceDetection = TSource & { - detection: FaceDetection; -}; -export declare function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}>; -export declare function extendWithFaceDetection(sourceObj: TSource, detection: FaceDetection): WithFaceDetection; diff --git a/build/es6/factories/WithFaceDetection.js b/build/es6/factories/WithFaceDetection.js deleted file mode 100644 index d043f3c2..00000000 --- a/build/es6/factories/WithFaceDetection.js +++ /dev/null @@ -1,9 +0,0 @@ -import { FaceDetection } from '../classes/FaceDetection'; -export function isWithFaceDetection(obj) { - return obj['detection'] instanceof FaceDetection; -} -export function extendWithFaceDetection(sourceObj, detection) { - var extension = { detection: detection }; - return Object.assign({}, sourceObj, extension); -} -//# sourceMappingURL=WithFaceDetection.js.map \ No newline at end of file diff --git a/build/es6/factories/WithFaceDetection.js.map b/build/es6/factories/WithFaceDetection.js.map deleted file mode 100644 index fe111ebf..00000000 --- a/build/es6/factories/WithFaceDetection.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WithFaceDetection.js","sourceRoot":"","sources":["../../../src/factories/WithFaceDetection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IAC1C,OAAO,GAAG,CAAC,WAAW,CAAC,YAAY,aAAa,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAGrC,SAAkB,EAClB,SAAwB;IAGxB,IAAM,SAAS,GAAG,EAAE,SAAS,WAAA,EAAE,CAAA;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC"} \ No newline at end of file diff --git a/build/es6/factories/WithFaceExpressions.d.ts b/build/es6/factories/WithFaceExpressions.d.ts deleted file mode 100644 index f7960b25..00000000 --- a/build/es6/factories/WithFaceExpressions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { FaceExpressions } from '../faceExpressionNet/FaceExpressions'; -export declare type WithFaceExpressions = TSource & { - expressions: FaceExpressions; -}; -export declare function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}>; -export declare function extendWithFaceExpressions(sourceObj: TSource, expressions: FaceExpressions): WithFaceExpressions; diff --git a/build/es6/factories/WithFaceExpressions.js b/build/es6/factories/WithFaceExpressions.js deleted file mode 100644 index dfe29452..00000000 --- a/build/es6/factories/WithFaceExpressions.js +++ /dev/null @@ -1,9 +0,0 @@ -import { FaceExpressions } from '../faceExpressionNet/FaceExpressions'; -export function isWithFaceExpressions(obj) { - return obj['expressions'] instanceof FaceExpressions; -} -export function extendWithFaceExpressions(sourceObj, expressions) { - var extension = { expressions: expressions }; - return Object.assign({}, sourceObj, extension); -} -//# sourceMappingURL=WithFaceExpressions.js.map \ No newline at end of file diff --git a/build/es6/factories/WithFaceExpressions.js.map b/build/es6/factories/WithFaceExpressions.js.map deleted file mode 100644 index 177075f6..00000000 --- a/build/es6/factories/WithFaceExpressions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WithFaceExpressions.js","sourceRoot":"","sources":["../../../src/factories/WithFaceExpressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAMvE,MAAM,UAAU,qBAAqB,CAAC,GAAQ;IAC5C,OAAO,GAAG,CAAC,aAAa,CAAC,YAAY,eAAe,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAGvC,SAAkB,EAClB,WAA4B;IAG5B,IAAM,SAAS,GAAG,EAAE,WAAW,aAAA,EAAE,CAAA;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC"} \ No newline at end of file diff --git a/build/es6/factories/WithFaceLandmarks.d.ts b/build/es6/factories/WithFaceLandmarks.d.ts deleted file mode 100644 index 99b9315d..00000000 --- a/build/es6/factories/WithFaceLandmarks.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { FaceDetection } from '../classes/FaceDetection'; -import { FaceLandmarks } from '../classes/FaceLandmarks'; -import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; -import { WithFaceDetection } from './WithFaceDetection'; -export declare type WithFaceLandmarks, TFaceLandmarks extends FaceLandmarks = FaceLandmarks68> = TSource & { - landmarks: TFaceLandmarks; - unshiftedLandmarks: TFaceLandmarks; - alignedRect: FaceDetection; -}; -export declare function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks>; -export declare function extendWithFaceLandmarks, TFaceLandmarks extends FaceLandmarks = FaceLandmarks68>(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks; diff --git a/build/es6/factories/WithFaceLandmarks.js b/build/es6/factories/WithFaceLandmarks.js deleted file mode 100644 index e03c0ce8..00000000 --- a/build/es6/factories/WithFaceLandmarks.js +++ /dev/null @@ -1,23 +0,0 @@ -import { FaceDetection } from '../classes/FaceDetection'; -import { FaceLandmarks } from '../classes/FaceLandmarks'; -import { isWithFaceDetection } from './WithFaceDetection'; -export function isWithFaceLandmarks(obj) { - return isWithFaceDetection(obj) - && obj['landmarks'] instanceof FaceLandmarks - && obj['unshiftedLandmarks'] instanceof FaceLandmarks - && obj['alignedRect'] instanceof FaceDetection; -} -export function extendWithFaceLandmarks(sourceObj, unshiftedLandmarks) { - var shift = sourceObj.detection.box; - var landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y); - var rect = landmarks.align(); - var imageDims = sourceObj.detection.imageDims; - var alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims); - var extension = { - landmarks: landmarks, - unshiftedLandmarks: unshiftedLandmarks, - alignedRect: alignedRect - }; - return Object.assign({}, sourceObj, extension); -} -//# sourceMappingURL=WithFaceLandmarks.js.map \ No newline at end of file diff --git a/build/es6/factories/WithFaceLandmarks.js.map b/build/es6/factories/WithFaceLandmarks.js.map deleted file mode 100644 index 18420a7c..00000000 --- a/build/es6/factories/WithFaceLandmarks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WithFaceLandmarks.js","sourceRoot":"","sources":["../../../src/factories/WithFaceLandmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAqB,MAAM,qBAAqB,CAAC;AAW7E,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IAC1C,OAAO,mBAAmB,CAAC,GAAG,CAAC;WAC1B,GAAG,CAAC,WAAW,CAAC,YAAY,aAAa;WACzC,GAAG,CAAC,oBAAoB,CAAC,YAAY,aAAa;WAClD,GAAG,CAAC,aAAa,CAAC,YAAY,aAAa,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAIrC,SAAkB,EAClB,kBAAkC;IAG1B,IAAA,+BAAU,CAAwB;IAC1C,IAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAiB,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAE9E,IAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;IACtB,IAAA,yCAAS,CAAwB;IACzC,IAAM,WAAW,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;IAE9G,IAAM,SAAS,GAAG;QAChB,SAAS,WAAA;QACT,kBAAkB,oBAAA;QAClB,WAAW,aAAA;KACZ,CAAA;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC"} \ No newline at end of file diff --git a/build/es6/factories/WithGender.d.ts b/build/es6/factories/WithGender.d.ts deleted file mode 100644 index 6f26c112..00000000 --- a/build/es6/factories/WithGender.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Gender } from '../ageGenderNet/types'; -export declare type WithGender = TSource & { - gender: Gender; - genderProbability: number; -}; -export declare function isWithGender(obj: any): obj is WithGender<{}>; -export declare function extendWithGender(sourceObj: TSource, gender: Gender, genderProbability: number): WithGender; diff --git a/build/es6/factories/WithGender.js b/build/es6/factories/WithGender.js deleted file mode 100644 index dff032dd..00000000 --- a/build/es6/factories/WithGender.js +++ /dev/null @@ -1,11 +0,0 @@ -import { isValidProbablitiy } from 'tfjs-image-recognition-base'; -import { Gender } from '../ageGenderNet/types'; -export function isWithGender(obj) { - return (obj['gender'] === Gender.MALE || obj['gender'] === Gender.FEMALE) - && isValidProbablitiy(obj['genderProbability']); -} -export function extendWithGender(sourceObj, gender, genderProbability) { - var extension = { gender: gender, genderProbability: genderProbability }; - return Object.assign({}, sourceObj, extension); -} -//# sourceMappingURL=WithGender.js.map \ No newline at end of file diff --git a/build/es6/factories/WithGender.js.map b/build/es6/factories/WithGender.js.map deleted file mode 100644 index 58f7a13a..00000000 --- a/build/es6/factories/WithGender.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"WithGender.js","sourceRoot":"","sources":["../../../src/factories/WithGender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAO/C,MAAM,UAAU,YAAY,CAAC,GAAQ;IACnC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC;WACpE,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAG9B,SAAkB,EAClB,MAAc,EACd,iBAAyB;IAGzB,IAAM,SAAS,GAAG,EAAE,MAAM,QAAA,EAAE,iBAAiB,mBAAA,EAAE,CAAA;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;AAChD,CAAC"} \ No newline at end of file diff --git a/build/es6/factories/index.d.ts b/build/es6/factories/index.d.ts deleted file mode 100644 index c5094abb..00000000 --- a/build/es6/factories/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './WithFaceDescriptor'; -export * from './WithFaceDetection'; -export * from './WithFaceExpressions'; -export * from './WithFaceLandmarks'; -export * from './WithAge'; -export * from './WithGender'; diff --git a/build/es6/factories/index.js b/build/es6/factories/index.js deleted file mode 100644 index 01436700..00000000 --- a/build/es6/factories/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export * from './WithFaceDescriptor'; -export * from './WithFaceDetection'; -export * from './WithFaceExpressions'; -export * from './WithFaceLandmarks'; -export * from './WithAge'; -export * from './WithGender'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/factories/index.js.map b/build/es6/factories/index.js.map deleted file mode 100644 index 2e055c9a..00000000 --- a/build/es6/factories/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factories/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"} \ No newline at end of file diff --git a/build/es6/globalApi/ComposableTask.d.ts b/build/es6/globalApi/ComposableTask.d.ts deleted file mode 100644 index b7203e33..00000000 --- a/build/es6/globalApi/ComposableTask.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare class ComposableTask { - then(onfulfilled: (value: T) => T | PromiseLike): Promise; - run(): Promise; -} diff --git a/build/es6/globalApi/ComposableTask.js b/build/es6/globalApi/ComposableTask.js deleted file mode 100644 index 5fd3e7bd..00000000 --- a/build/es6/globalApi/ComposableTask.js +++ /dev/null @@ -1,28 +0,0 @@ -import { __awaiter, __generator } from "tslib"; -var ComposableTask = /** @class */ (function () { - function ComposableTask() { - } - ComposableTask.prototype.then = function (onfulfilled) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = onfulfilled; - return [4 /*yield*/, this.run()]; - case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])]; - } - }); - }); - }; - ComposableTask.prototype.run = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - throw new Error('ComposableTask - run is not implemented'); - }); - }); - }; - return ComposableTask; -}()); -export { ComposableTask }; -//# sourceMappingURL=ComposableTask.js.map \ No newline at end of file diff --git a/build/es6/globalApi/ComposableTask.js.map b/build/es6/globalApi/ComposableTask.js.map deleted file mode 100644 index 9248586a..00000000 --- a/build/es6/globalApi/ComposableTask.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ComposableTask.js","sourceRoot":"","sources":["../../../src/globalApi/ComposableTask.ts"],"names":[],"mappings":";AAAA;IAAA;IAWA,CAAC;IATc,6BAAI,GAAjB,UACE,WAA6C;;;;;;wBAEtC,KAAA,WAAW,CAAA;wBAAC,qBAAM,IAAI,CAAC,GAAG,EAAE,EAAA;4BAAnC,sBAAO,kBAAY,SAAgB,EAAC,EAAA;;;;KACrC;IAEY,4BAAG,GAAhB;;;gBACE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;;;KAC3D;IACH,qBAAC;AAAD,CAAC,AAXD,IAWC"} \ No newline at end of file diff --git a/build/es6/globalApi/ComputeFaceDescriptorsTasks.d.ts b/build/es6/globalApi/ComputeFaceDescriptorsTasks.d.ts deleted file mode 100644 index bad1603b..00000000 --- a/build/es6/globalApi/ComputeFaceDescriptorsTasks.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { TNetInput } from 'tfjs-image-recognition-base'; -import { WithFaceDescriptor } from '../factories/WithFaceDescriptor'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -import { ComposableTask } from './ComposableTask'; -import { PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from './PredictAgeAndGenderTask'; -import { PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from './PredictFaceExpressionsTask'; -export declare class ComputeFaceDescriptorsTaskBase extends ComposableTask { - protected parentTask: ComposableTask | Promise; - protected input: TNetInput; - constructor(parentTask: ComposableTask | Promise, input: TNetInput); -} -export declare class ComputeAllFaceDescriptorsTask>> extends ComputeFaceDescriptorsTaskBase[], TSource[]> { - run(): Promise[]>; - withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask>; - withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask>; -} -export declare class ComputeSingleFaceDescriptorTask>> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> { - run(): Promise | undefined>; - withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask>; - withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask>; -} diff --git a/build/es6/globalApi/ComputeFaceDescriptorsTasks.js b/build/es6/globalApi/ComputeFaceDescriptorsTasks.js deleted file mode 100644 index b464f6a9..00000000 --- a/build/es6/globalApi/ComputeFaceDescriptorsTasks.js +++ /dev/null @@ -1,84 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import { extendWithFaceDescriptor } from '../factories/WithFaceDescriptor'; -import { ComposableTask } from './ComposableTask'; -import { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults'; -import { nets } from './nets'; -import { PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderWithFaceAlignmentTask, } from './PredictAgeAndGenderTask'; -import { PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsWithFaceAlignmentTask, } from './PredictFaceExpressionsTask'; -var ComputeFaceDescriptorsTaskBase = /** @class */ (function (_super) { - __extends(ComputeFaceDescriptorsTaskBase, _super); - function ComputeFaceDescriptorsTaskBase(parentTask, input) { - var _this = _super.call(this) || this; - _this.parentTask = parentTask; - _this.input = input; - return _this; - } - return ComputeFaceDescriptorsTaskBase; -}(ComposableTask)); -export { ComputeFaceDescriptorsTaskBase }; -var ComputeAllFaceDescriptorsTask = /** @class */ (function (_super) { - __extends(ComputeAllFaceDescriptorsTask, _super); - function ComputeAllFaceDescriptorsTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - ComputeAllFaceDescriptorsTask.prototype.run = function () { - return __awaiter(this, void 0, void 0, function () { - var parentResults, descriptors; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResults = _a.sent(); - return [4 /*yield*/, extractAllFacesAndComputeResults(parentResults, this.input, function (faces) { return Promise.all(faces.map(function (face) { - return nets.faceRecognitionNet.computeFaceDescriptor(face); - })); }, null, function (parentResult) { return parentResult.landmarks.align(null, { useDlibAlignment: true }); })]; - case 2: - descriptors = _a.sent(); - return [2 /*return*/, descriptors.map(function (descriptor, i) { return extendWithFaceDescriptor(parentResults[i], descriptor); })]; - } - }); - }); - }; - ComputeAllFaceDescriptorsTask.prototype.withFaceExpressions = function () { - return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input); - }; - ComputeAllFaceDescriptorsTask.prototype.withAgeAndGender = function () { - return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input); - }; - return ComputeAllFaceDescriptorsTask; -}(ComputeFaceDescriptorsTaskBase)); -export { ComputeAllFaceDescriptorsTask }; -var ComputeSingleFaceDescriptorTask = /** @class */ (function (_super) { - __extends(ComputeSingleFaceDescriptorTask, _super); - function ComputeSingleFaceDescriptorTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - ComputeSingleFaceDescriptorTask.prototype.run = function () { - return __awaiter(this, void 0, void 0, function () { - var parentResult, descriptor; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResult = _a.sent(); - if (!parentResult) { - return [2 /*return*/]; - } - return [4 /*yield*/, extractSingleFaceAndComputeResult(parentResult, this.input, function (face) { return nets.faceRecognitionNet.computeFaceDescriptor(face); }, null, function (parentResult) { return parentResult.landmarks.align(null, { useDlibAlignment: true }); })]; - case 2: - descriptor = _a.sent(); - return [2 /*return*/, extendWithFaceDescriptor(parentResult, descriptor)]; - } - }); - }); - }; - ComputeSingleFaceDescriptorTask.prototype.withFaceExpressions = function () { - return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input); - }; - ComputeSingleFaceDescriptorTask.prototype.withAgeAndGender = function () { - return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input); - }; - return ComputeSingleFaceDescriptorTask; -}(ComputeFaceDescriptorsTaskBase)); -export { ComputeSingleFaceDescriptorTask }; -//# sourceMappingURL=ComputeFaceDescriptorsTasks.js.map \ No newline at end of file diff --git a/build/es6/globalApi/ComputeFaceDescriptorsTasks.js.map b/build/es6/globalApi/ComputeFaceDescriptorsTasks.js.map deleted file mode 100644 index d4fa3743..00000000 --- a/build/es6/globalApi/ComputeFaceDescriptorsTasks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ComputeFaceDescriptorsTasks.js","sourceRoot":"","sources":["../../../src/globalApi/ComputeFaceDescriptorsTasks.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/globalApi/DetectFaceLandmarksTasks.d.ts b/build/es6/globalApi/DetectFaceLandmarksTasks.d.ts deleted file mode 100644 index 1448662c..00000000 --- a/build/es6/globalApi/DetectFaceLandmarksTasks.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { TNetInput } from 'tfjs-image-recognition-base'; -import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; -import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net'; -import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -import { ComposableTask } from './ComposableTask'; -import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; -import { PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from './PredictAgeAndGenderTask'; -import { PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from './PredictFaceExpressionsTask'; -export declare class DetectFaceLandmarksTaskBase extends ComposableTask { - protected parentTask: ComposableTask | Promise; - protected input: TNetInput; - protected useTinyLandmarkNet: boolean; - constructor(parentTask: ComposableTask | Promise, input: TNetInput, useTinyLandmarkNet: boolean); - protected readonly landmarkNet: FaceLandmark68Net | FaceLandmark68TinyNet; -} -export declare class DetectAllFaceLandmarksTask> extends DetectFaceLandmarksTaskBase[], TSource[]> { - run(): Promise[]>; - withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask>; - withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask>; - withFaceDescriptors(): ComputeAllFaceDescriptorsTask>; -} -export declare class DetectSingleFaceLandmarksTask> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> { - run(): Promise | undefined>; - withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask>; - withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask>; - withFaceDescriptor(): ComputeSingleFaceDescriptorTask>; -} diff --git a/build/es6/globalApi/DetectFaceLandmarksTasks.js b/build/es6/globalApi/DetectFaceLandmarksTasks.js deleted file mode 100644 index 3892d2e1..00000000 --- a/build/es6/globalApi/DetectFaceLandmarksTasks.js +++ /dev/null @@ -1,129 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { extractFaces, extractFaceTensors } from '../dom'; -import { extendWithFaceLandmarks } from '../factories/WithFaceLandmarks'; -import { ComposableTask } from './ComposableTask'; -import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; -import { nets } from './nets'; -import { PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderWithFaceAlignmentTask, } from './PredictAgeAndGenderTask'; -import { PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsWithFaceAlignmentTask, } from './PredictFaceExpressionsTask'; -var DetectFaceLandmarksTaskBase = /** @class */ (function (_super) { - __extends(DetectFaceLandmarksTaskBase, _super); - function DetectFaceLandmarksTaskBase(parentTask, input, useTinyLandmarkNet) { - var _this = _super.call(this) || this; - _this.parentTask = parentTask; - _this.input = input; - _this.useTinyLandmarkNet = useTinyLandmarkNet; - return _this; - } - Object.defineProperty(DetectFaceLandmarksTaskBase.prototype, "landmarkNet", { - get: function () { - return this.useTinyLandmarkNet - ? nets.faceLandmark68TinyNet - : nets.faceLandmark68Net; - }, - enumerable: true, - configurable: true - }); - return DetectFaceLandmarksTaskBase; -}(ComposableTask)); -export { DetectFaceLandmarksTaskBase }; -var DetectAllFaceLandmarksTask = /** @class */ (function (_super) { - __extends(DetectAllFaceLandmarksTask, _super); - function DetectAllFaceLandmarksTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - DetectAllFaceLandmarksTask.prototype.run = function () { - return __awaiter(this, void 0, void 0, function () { - var parentResults, detections, faces, _a, faceLandmarksByFace; - var _this = this; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResults = _b.sent(); - detections = parentResults.map(function (res) { return res.detection; }); - if (!(this.input instanceof tf.Tensor)) return [3 /*break*/, 3]; - return [4 /*yield*/, extractFaceTensors(this.input, detections)]; - case 2: - _a = _b.sent(); - return [3 /*break*/, 5]; - case 3: return [4 /*yield*/, extractFaces(this.input, detections)]; - case 4: - _a = _b.sent(); - _b.label = 5; - case 5: - faces = _a; - return [4 /*yield*/, Promise.all(faces.map(function (face) { return _this.landmarkNet.detectLandmarks(face); }))]; - case 6: - faceLandmarksByFace = _b.sent(); - faces.forEach(function (f) { return f instanceof tf.Tensor && f.dispose(); }); - return [2 /*return*/, parentResults.map(function (parentResult, i) { - return extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]); - })]; - } - }); - }); - }; - DetectAllFaceLandmarksTask.prototype.withFaceExpressions = function () { - return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input); - }; - DetectAllFaceLandmarksTask.prototype.withAgeAndGender = function () { - return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input); - }; - DetectAllFaceLandmarksTask.prototype.withFaceDescriptors = function () { - return new ComputeAllFaceDescriptorsTask(this, this.input); - }; - return DetectAllFaceLandmarksTask; -}(DetectFaceLandmarksTaskBase)); -export { DetectAllFaceLandmarksTask }; -var DetectSingleFaceLandmarksTask = /** @class */ (function (_super) { - __extends(DetectSingleFaceLandmarksTask, _super); - function DetectSingleFaceLandmarksTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - DetectSingleFaceLandmarksTask.prototype.run = function () { - return __awaiter(this, void 0, void 0, function () { - var parentResult, detection, faces, _a, landmarks; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResult = _b.sent(); - if (!parentResult) { - return [2 /*return*/]; - } - detection = parentResult.detection; - if (!(this.input instanceof tf.Tensor)) return [3 /*break*/, 3]; - return [4 /*yield*/, extractFaceTensors(this.input, [detection])]; - case 2: - _a = _b.sent(); - return [3 /*break*/, 5]; - case 3: return [4 /*yield*/, extractFaces(this.input, [detection])]; - case 4: - _a = _b.sent(); - _b.label = 5; - case 5: - faces = _a; - return [4 /*yield*/, this.landmarkNet.detectLandmarks(faces[0])]; - case 6: - landmarks = _b.sent(); - faces.forEach(function (f) { return f instanceof tf.Tensor && f.dispose(); }); - return [2 /*return*/, extendWithFaceLandmarks(parentResult, landmarks)]; - } - }); - }); - }; - DetectSingleFaceLandmarksTask.prototype.withFaceExpressions = function () { - return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input); - }; - DetectSingleFaceLandmarksTask.prototype.withAgeAndGender = function () { - return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input); - }; - DetectSingleFaceLandmarksTask.prototype.withFaceDescriptor = function () { - return new ComputeSingleFaceDescriptorTask(this, this.input); - }; - return DetectSingleFaceLandmarksTask; -}(DetectFaceLandmarksTaskBase)); -export { DetectSingleFaceLandmarksTask }; -//# sourceMappingURL=DetectFaceLandmarksTasks.js.map \ No newline at end of file diff --git a/build/es6/globalApi/DetectFaceLandmarksTasks.js.map b/build/es6/globalApi/DetectFaceLandmarksTasks.js.map deleted file mode 100644 index 471719f5..00000000 --- a/build/es6/globalApi/DetectFaceLandmarksTasks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DetectFaceLandmarksTasks.js","sourceRoot":"","sources":["../../../src/globalApi/DetectFaceLandmarksTasks.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/globalApi/DetectFacesTasks.d.ts b/build/es6/globalApi/DetectFacesTasks.d.ts deleted file mode 100644 index d17f7ee9..00000000 --- a/build/es6/globalApi/DetectFacesTasks.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { ComposableTask } from './ComposableTask'; -import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks'; -import { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask'; -import { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask'; -import { FaceDetectionOptions } from './types'; -export declare class DetectFacesTaskBase extends ComposableTask { - protected input: TNetInput; - protected options: FaceDetectionOptions; - constructor(input: TNetInput, options?: FaceDetectionOptions); -} -export declare class DetectAllFacesTask extends DetectFacesTaskBase { - run(): Promise; - private runAndExtendWithFaceDetections; - withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectAllFaceLandmarksTask<{ - detection: FaceDetection; - }>; - withFaceExpressions(): PredictAllFaceExpressionsTask<{ - detection: FaceDetection; - }>; - withAgeAndGender(): PredictAllAgeAndGenderTask<{ - detection: FaceDetection; - }>; -} -export declare class DetectSingleFaceTask extends DetectFacesTaskBase { - run(): Promise; - private runAndExtendWithFaceDetection; - withFaceLandmarks(useTinyLandmarkNet?: boolean): DetectSingleFaceLandmarksTask<{ - detection: FaceDetection; - }>; - withFaceExpressions(): PredictSingleFaceExpressionsTask<{ - detection: FaceDetection; - }>; - withAgeAndGender(): PredictSingleAgeAndGenderTask<{ - detection: FaceDetection; - }>; -} diff --git a/build/es6/globalApi/DetectFacesTasks.js b/build/es6/globalApi/DetectFacesTasks.js deleted file mode 100644 index b6d36c19..00000000 --- a/build/es6/globalApi/DetectFacesTasks.js +++ /dev/null @@ -1,134 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { extendWithFaceDetection } from '../factories/WithFaceDetection'; -import { MtcnnOptions } from '../mtcnn/MtcnnOptions'; -import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; -import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; -import { ComposableTask } from './ComposableTask'; -import { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks'; -import { nets } from './nets'; -import { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask'; -import { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask'; -var DetectFacesTaskBase = /** @class */ (function (_super) { - __extends(DetectFacesTaskBase, _super); - function DetectFacesTaskBase(input, options) { - if (options === void 0) { options = new SsdMobilenetv1Options(); } - var _this = _super.call(this) || this; - _this.input = input; - _this.options = options; - return _this; - } - return DetectFacesTaskBase; -}(ComposableTask)); -export { DetectFacesTaskBase }; -var DetectAllFacesTask = /** @class */ (function (_super) { - __extends(DetectAllFacesTask, _super); - function DetectAllFacesTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - DetectAllFacesTask.prototype.run = function () { - return __awaiter(this, void 0, void 0, function () { - var _a, input, options, faceDetectionFunction; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this, input = _a.input, options = _a.options; - if (!(options instanceof MtcnnOptions)) return [3 /*break*/, 2]; - return [4 /*yield*/, nets.mtcnn.forward(input, options)]; - case 1: return [2 /*return*/, (_b.sent()) - .map(function (result) { return result.detection; })]; - case 2: - faceDetectionFunction = options instanceof TinyFaceDetectorOptions - ? function (input) { return nets.tinyFaceDetector.locateFaces(input, options); } - : (options instanceof SsdMobilenetv1Options - ? function (input) { return nets.ssdMobilenetv1.locateFaces(input, options); } - : (options instanceof TfjsImageRecognitionBase.TinyYolov2Options - ? function (input) { return nets.tinyYolov2.locateFaces(input, options); } - : null)); - if (!faceDetectionFunction) { - throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options'); - } - return [2 /*return*/, faceDetectionFunction(input)]; - } - }); - }); - }; - DetectAllFacesTask.prototype.runAndExtendWithFaceDetections = function () { - var _this = this; - return new Promise(function (res) { return __awaiter(_this, void 0, void 0, function () { - var detections; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.run()]; - case 1: - detections = _a.sent(); - return [2 /*return*/, res(detections.map(function (detection) { return extendWithFaceDetection({}, detection); }))]; - } - }); - }); }); - }; - DetectAllFacesTask.prototype.withFaceLandmarks = function (useTinyLandmarkNet) { - if (useTinyLandmarkNet === void 0) { useTinyLandmarkNet = false; } - return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(), this.input, useTinyLandmarkNet); - }; - DetectAllFacesTask.prototype.withFaceExpressions = function () { - return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(), this.input); - }; - DetectAllFacesTask.prototype.withAgeAndGender = function () { - return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(), this.input); - }; - return DetectAllFacesTask; -}(DetectFacesTaskBase)); -export { DetectAllFacesTask }; -var DetectSingleFaceTask = /** @class */ (function (_super) { - __extends(DetectSingleFaceTask, _super); - function DetectSingleFaceTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - DetectSingleFaceTask.prototype.run = function () { - return __awaiter(this, void 0, void 0, function () { - var faceDetections, faceDetectionWithHighestScore; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, new DetectAllFacesTask(this.input, this.options)]; - case 1: - faceDetections = _a.sent(); - faceDetectionWithHighestScore = faceDetections[0]; - faceDetections.forEach(function (faceDetection) { - if (faceDetection.score > faceDetectionWithHighestScore.score) { - faceDetectionWithHighestScore = faceDetection; - } - }); - return [2 /*return*/, faceDetectionWithHighestScore]; - } - }); - }); - }; - DetectSingleFaceTask.prototype.runAndExtendWithFaceDetection = function () { - var _this = this; - return new Promise(function (res) { return __awaiter(_this, void 0, void 0, function () { - var detection; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.run()]; - case 1: - detection = _a.sent(); - return [2 /*return*/, res(detection ? extendWithFaceDetection({}, detection) : undefined)]; - } - }); - }); }); - }; - DetectSingleFaceTask.prototype.withFaceLandmarks = function (useTinyLandmarkNet) { - if (useTinyLandmarkNet === void 0) { useTinyLandmarkNet = false; } - return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(), this.input, useTinyLandmarkNet); - }; - DetectSingleFaceTask.prototype.withFaceExpressions = function () { - return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(), this.input); - }; - DetectSingleFaceTask.prototype.withAgeAndGender = function () { - return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(), this.input); - }; - return DetectSingleFaceTask; -}(DetectFacesTaskBase)); -export { DetectSingleFaceTask }; -//# sourceMappingURL=DetectFacesTasks.js.map \ No newline at end of file diff --git a/build/es6/globalApi/DetectFacesTasks.js.map b/build/es6/globalApi/DetectFacesTasks.js.map deleted file mode 100644 index 28c004a6..00000000 --- a/build/es6/globalApi/DetectFacesTasks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"DetectFacesTasks.js","sourceRoot":"","sources":["../../../src/globalApi/DetectFacesTasks.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/globalApi/FaceMatcher.d.ts b/build/es6/globalApi/FaceMatcher.d.ts deleted file mode 100644 index 627449ec..00000000 --- a/build/es6/globalApi/FaceMatcher.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { FaceMatch } from '../classes/FaceMatch'; -import { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors'; -import { WithFaceDescriptor } from '../factories'; -export declare class FaceMatcher { - private _labeledDescriptors; - private _distanceThreshold; - constructor(inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>, distanceThreshold?: number); - readonly labeledDescriptors: LabeledFaceDescriptors[]; - readonly distanceThreshold: number; - computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number; - matchDescriptor(queryDescriptor: Float32Array): FaceMatch; - findBestMatch(queryDescriptor: Float32Array): FaceMatch; - toJSON(): any; - static fromJSON(json: any): FaceMatcher; -} diff --git a/build/es6/globalApi/FaceMatcher.js b/build/es6/globalApi/FaceMatcher.js deleted file mode 100644 index 08cdb2ce..00000000 --- a/build/es6/globalApi/FaceMatcher.js +++ /dev/null @@ -1,72 +0,0 @@ -import { FaceMatch } from '../classes/FaceMatch'; -import { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors'; -import { euclideanDistance } from '../euclideanDistance'; -var FaceMatcher = /** @class */ (function () { - function FaceMatcher(inputs, distanceThreshold) { - if (distanceThreshold === void 0) { distanceThreshold = 0.6; } - this._distanceThreshold = distanceThreshold; - var inputArray = Array.isArray(inputs) ? inputs : [inputs]; - if (!inputArray.length) { - throw new Error("FaceRecognizer.constructor - expected atleast one input"); - } - var count = 1; - var createUniqueLabel = function () { return "person " + count++; }; - this._labeledDescriptors = inputArray.map(function (desc) { - if (desc instanceof LabeledFaceDescriptors) { - return desc; - } - if (desc instanceof Float32Array) { - return new LabeledFaceDescriptors(createUniqueLabel(), [desc]); - } - if (desc.descriptor && desc.descriptor instanceof Float32Array) { - return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]); - } - throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>"); - }); - } - Object.defineProperty(FaceMatcher.prototype, "labeledDescriptors", { - get: function () { return this._labeledDescriptors; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(FaceMatcher.prototype, "distanceThreshold", { - get: function () { return this._distanceThreshold; }, - enumerable: true, - configurable: true - }); - FaceMatcher.prototype.computeMeanDistance = function (queryDescriptor, descriptors) { - return descriptors - .map(function (d) { return euclideanDistance(d, queryDescriptor); }) - .reduce(function (d1, d2) { return d1 + d2; }, 0) - / (descriptors.length || 1); - }; - FaceMatcher.prototype.matchDescriptor = function (queryDescriptor) { - var _this = this; - return this.labeledDescriptors - .map(function (_a) { - var descriptors = _a.descriptors, label = _a.label; - return new FaceMatch(label, _this.computeMeanDistance(queryDescriptor, descriptors)); - }) - .reduce(function (best, curr) { return best.distance < curr.distance ? best : curr; }); - }; - FaceMatcher.prototype.findBestMatch = function (queryDescriptor) { - var bestMatch = this.matchDescriptor(queryDescriptor); - return bestMatch.distance < this.distanceThreshold - ? bestMatch - : new FaceMatch('unknown', bestMatch.distance); - }; - FaceMatcher.prototype.toJSON = function () { - return { - distanceThreshold: this.distanceThreshold, - labeledDescriptors: this.labeledDescriptors.map(function (ld) { return ld.toJSON(); }) - }; - }; - FaceMatcher.fromJSON = function (json) { - var labeledDescriptors = json.labeledDescriptors - .map(function (ld) { return LabeledFaceDescriptors.fromJSON(ld); }); - return new FaceMatcher(labeledDescriptors, json.distanceThreshold); - }; - return FaceMatcher; -}()); -export { FaceMatcher }; -//# sourceMappingURL=FaceMatcher.js.map \ No newline at end of file diff --git a/build/es6/globalApi/FaceMatcher.js.map b/build/es6/globalApi/FaceMatcher.js.map deleted file mode 100644 index 5a6a133c..00000000 --- a/build/es6/globalApi/FaceMatcher.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FaceMatcher.js","sourceRoot":"","sources":["../../../src/globalApi/FaceMatcher.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/globalApi/PredictAgeAndGenderTask.d.ts b/build/es6/globalApi/PredictAgeAndGenderTask.d.ts deleted file mode 100644 index 6c8607bf..00000000 --- a/build/es6/globalApi/PredictAgeAndGenderTask.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TNetInput } from 'tfjs-image-recognition-base'; -import { WithAge } from '../factories/WithAge'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -import { WithGender } from '../factories/WithGender'; -import { ComposableTask } from './ComposableTask'; -import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; -import { PredictAllFaceExpressionsTask, PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsTask, PredictSingleFaceExpressionsWithFaceAlignmentTask } from './PredictFaceExpressionsTask'; -export declare class PredictAgeAndGenderTaskBase extends ComposableTask { - protected parentTask: ComposableTask | Promise; - protected input: TNetInput; - protected extractedFaces?: (HTMLCanvasElement | tf.Tensor)[] | undefined; - constructor(parentTask: ComposableTask | Promise, input: TNetInput, extractedFaces?: (HTMLCanvasElement | tf.Tensor)[] | undefined); -} -export declare class PredictAllAgeAndGenderTask> extends PredictAgeAndGenderTaskBase>[], TSource[]> { - run(): Promise>[]>; - withFaceExpressions(): PredictAllFaceExpressionsTask>>; -} -export declare class PredictSingleAgeAndGenderTask> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> { - run(): Promise> | undefined>; - withFaceExpressions(): PredictSingleFaceExpressionsTask>>; -} -export declare class PredictAllAgeAndGenderWithFaceAlignmentTask>> extends PredictAllAgeAndGenderTask { - withFaceExpressions(): PredictAllFaceExpressionsWithFaceAlignmentTask>>; - withFaceDescriptors(): ComputeAllFaceDescriptorsTask>>; -} -export declare class PredictSingleAgeAndGenderWithFaceAlignmentTask>> extends PredictSingleAgeAndGenderTask { - withFaceExpressions(): PredictSingleFaceExpressionsWithFaceAlignmentTask>>; - withFaceDescriptor(): ComputeSingleFaceDescriptorTask>>; -} diff --git a/build/es6/globalApi/PredictAgeAndGenderTask.js b/build/es6/globalApi/PredictAgeAndGenderTask.js deleted file mode 100644 index d1e5fe80..00000000 --- a/build/es6/globalApi/PredictAgeAndGenderTask.js +++ /dev/null @@ -1,117 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import { extendWithAge } from '../factories/WithAge'; -import { extendWithGender } from '../factories/WithGender'; -import { ComposableTask } from './ComposableTask'; -import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; -import { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults'; -import { nets } from './nets'; -import { PredictAllFaceExpressionsTask, PredictAllFaceExpressionsWithFaceAlignmentTask, PredictSingleFaceExpressionsTask, PredictSingleFaceExpressionsWithFaceAlignmentTask, } from './PredictFaceExpressionsTask'; -var PredictAgeAndGenderTaskBase = /** @class */ (function (_super) { - __extends(PredictAgeAndGenderTaskBase, _super); - function PredictAgeAndGenderTaskBase(parentTask, input, extractedFaces) { - var _this = _super.call(this) || this; - _this.parentTask = parentTask; - _this.input = input; - _this.extractedFaces = extractedFaces; - return _this; - } - return PredictAgeAndGenderTaskBase; -}(ComposableTask)); -export { PredictAgeAndGenderTaskBase }; -var PredictAllAgeAndGenderTask = /** @class */ (function (_super) { - __extends(PredictAllAgeAndGenderTask, _super); - function PredictAllAgeAndGenderTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictAllAgeAndGenderTask.prototype.run = function () { - return __awaiter(this, void 0, void 0, function () { - var parentResults, ageAndGenderByFace; - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResults = _a.sent(); - return [4 /*yield*/, extractAllFacesAndComputeResults(parentResults, this.input, function (faces) { return __awaiter(_this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, Promise.all(faces.map(function (face) { return nets.ageGenderNet.predictAgeAndGender(face); }))]; - case 1: return [2 /*return*/, _a.sent()]; - } - }); - }); }, this.extractedFaces)]; - case 2: - ageAndGenderByFace = _a.sent(); - return [2 /*return*/, parentResults.map(function (parentResult, i) { - var _a = ageAndGenderByFace[i], age = _a.age, gender = _a.gender, genderProbability = _a.genderProbability; - return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age); - })]; - } - }); - }); - }; - PredictAllAgeAndGenderTask.prototype.withFaceExpressions = function () { - return new PredictAllFaceExpressionsTask(this, this.input); - }; - return PredictAllAgeAndGenderTask; -}(PredictAgeAndGenderTaskBase)); -export { PredictAllAgeAndGenderTask }; -var PredictSingleAgeAndGenderTask = /** @class */ (function (_super) { - __extends(PredictSingleAgeAndGenderTask, _super); - function PredictSingleAgeAndGenderTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictSingleAgeAndGenderTask.prototype.run = function () { - return __awaiter(this, void 0, void 0, function () { - var parentResult, _a, age, gender, genderProbability; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResult = _b.sent(); - if (!parentResult) { - return [2 /*return*/]; - } - return [4 /*yield*/, extractSingleFaceAndComputeResult(parentResult, this.input, function (face) { return nets.ageGenderNet.predictAgeAndGender(face); }, this.extractedFaces)]; - case 2: - _a = _b.sent(), age = _a.age, gender = _a.gender, genderProbability = _a.genderProbability; - return [2 /*return*/, extendWithAge(extendWithGender(parentResult, gender, genderProbability), age)]; - } - }); - }); - }; - PredictSingleAgeAndGenderTask.prototype.withFaceExpressions = function () { - return new PredictSingleFaceExpressionsTask(this, this.input); - }; - return PredictSingleAgeAndGenderTask; -}(PredictAgeAndGenderTaskBase)); -export { PredictSingleAgeAndGenderTask }; -var PredictAllAgeAndGenderWithFaceAlignmentTask = /** @class */ (function (_super) { - __extends(PredictAllAgeAndGenderWithFaceAlignmentTask, _super); - function PredictAllAgeAndGenderWithFaceAlignmentTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictAllAgeAndGenderWithFaceAlignmentTask.prototype.withFaceExpressions = function () { - return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input); - }; - PredictAllAgeAndGenderWithFaceAlignmentTask.prototype.withFaceDescriptors = function () { - return new ComputeAllFaceDescriptorsTask(this, this.input); - }; - return PredictAllAgeAndGenderWithFaceAlignmentTask; -}(PredictAllAgeAndGenderTask)); -export { PredictAllAgeAndGenderWithFaceAlignmentTask }; -var PredictSingleAgeAndGenderWithFaceAlignmentTask = /** @class */ (function (_super) { - __extends(PredictSingleAgeAndGenderWithFaceAlignmentTask, _super); - function PredictSingleAgeAndGenderWithFaceAlignmentTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictSingleAgeAndGenderWithFaceAlignmentTask.prototype.withFaceExpressions = function () { - return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input); - }; - PredictSingleAgeAndGenderWithFaceAlignmentTask.prototype.withFaceDescriptor = function () { - return new ComputeSingleFaceDescriptorTask(this, this.input); - }; - return PredictSingleAgeAndGenderWithFaceAlignmentTask; -}(PredictSingleAgeAndGenderTask)); -export { PredictSingleAgeAndGenderWithFaceAlignmentTask }; -//# sourceMappingURL=PredictAgeAndGenderTask.js.map \ No newline at end of file diff --git a/build/es6/globalApi/PredictAgeAndGenderTask.js.map b/build/es6/globalApi/PredictAgeAndGenderTask.js.map deleted file mode 100644 index fd867201..00000000 --- a/build/es6/globalApi/PredictAgeAndGenderTask.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PredictAgeAndGenderTask.js","sourceRoot":"","sources":["../../../src/globalApi/PredictAgeAndGenderTask.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/globalApi/PredictFaceExpressionsTask.d.ts b/build/es6/globalApi/PredictFaceExpressionsTask.d.ts deleted file mode 100644 index bddc6397..00000000 --- a/build/es6/globalApi/PredictFaceExpressionsTask.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TNetInput } from 'tfjs-image-recognition-base'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceExpressions } from '../factories/WithFaceExpressions'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -import { ComposableTask } from './ComposableTask'; -import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; -import { PredictAllAgeAndGenderTask, PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderTask, PredictSingleAgeAndGenderWithFaceAlignmentTask } from './PredictAgeAndGenderTask'; -export declare class PredictFaceExpressionsTaskBase extends ComposableTask { - protected parentTask: ComposableTask | Promise; - protected input: TNetInput; - protected extractedFaces?: (HTMLCanvasElement | tf.Tensor)[] | undefined; - constructor(parentTask: ComposableTask | Promise, input: TNetInput, extractedFaces?: (HTMLCanvasElement | tf.Tensor)[] | undefined); -} -export declare class PredictAllFaceExpressionsTask> extends PredictFaceExpressionsTaskBase[], TSource[]> { - run(): Promise[]>; - withAgeAndGender(): PredictAllAgeAndGenderTask>; -} -export declare class PredictSingleFaceExpressionsTask> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> { - run(): Promise | undefined>; - withAgeAndGender(): PredictSingleAgeAndGenderTask>; -} -export declare class PredictAllFaceExpressionsWithFaceAlignmentTask>> extends PredictAllFaceExpressionsTask { - withAgeAndGender(): PredictAllAgeAndGenderWithFaceAlignmentTask>; - withFaceDescriptors(): ComputeAllFaceDescriptorsTask>; -} -export declare class PredictSingleFaceExpressionsWithFaceAlignmentTask>> extends PredictSingleFaceExpressionsTask { - withAgeAndGender(): PredictSingleAgeAndGenderWithFaceAlignmentTask>; - withFaceDescriptor(): ComputeSingleFaceDescriptorTask>; -} diff --git a/build/es6/globalApi/PredictFaceExpressionsTask.js b/build/es6/globalApi/PredictFaceExpressionsTask.js deleted file mode 100644 index cc779c58..00000000 --- a/build/es6/globalApi/PredictFaceExpressionsTask.js +++ /dev/null @@ -1,113 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import { extendWithFaceExpressions } from '../factories/WithFaceExpressions'; -import { ComposableTask } from './ComposableTask'; -import { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks'; -import { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults'; -import { nets } from './nets'; -import { PredictAllAgeAndGenderTask, PredictAllAgeAndGenderWithFaceAlignmentTask, PredictSingleAgeAndGenderTask, PredictSingleAgeAndGenderWithFaceAlignmentTask, } from './PredictAgeAndGenderTask'; -var PredictFaceExpressionsTaskBase = /** @class */ (function (_super) { - __extends(PredictFaceExpressionsTaskBase, _super); - function PredictFaceExpressionsTaskBase(parentTask, input, extractedFaces) { - var _this = _super.call(this) || this; - _this.parentTask = parentTask; - _this.input = input; - _this.extractedFaces = extractedFaces; - return _this; - } - return PredictFaceExpressionsTaskBase; -}(ComposableTask)); -export { PredictFaceExpressionsTaskBase }; -var PredictAllFaceExpressionsTask = /** @class */ (function (_super) { - __extends(PredictAllFaceExpressionsTask, _super); - function PredictAllFaceExpressionsTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictAllFaceExpressionsTask.prototype.run = function () { - return __awaiter(this, void 0, void 0, function () { - var parentResults, faceExpressionsByFace; - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResults = _a.sent(); - return [4 /*yield*/, extractAllFacesAndComputeResults(parentResults, this.input, function (faces) { return __awaiter(_this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, Promise.all(faces.map(function (face) { return nets.faceExpressionNet.predictExpressions(face); }))]; - case 1: return [2 /*return*/, _a.sent()]; - } - }); - }); }, this.extractedFaces)]; - case 2: - faceExpressionsByFace = _a.sent(); - return [2 /*return*/, parentResults.map(function (parentResult, i) { return extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]); })]; - } - }); - }); - }; - PredictAllFaceExpressionsTask.prototype.withAgeAndGender = function () { - return new PredictAllAgeAndGenderTask(this, this.input); - }; - return PredictAllFaceExpressionsTask; -}(PredictFaceExpressionsTaskBase)); -export { PredictAllFaceExpressionsTask }; -var PredictSingleFaceExpressionsTask = /** @class */ (function (_super) { - __extends(PredictSingleFaceExpressionsTask, _super); - function PredictSingleFaceExpressionsTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictSingleFaceExpressionsTask.prototype.run = function () { - return __awaiter(this, void 0, void 0, function () { - var parentResult, faceExpressions; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.parentTask]; - case 1: - parentResult = _a.sent(); - if (!parentResult) { - return [2 /*return*/]; - } - return [4 /*yield*/, extractSingleFaceAndComputeResult(parentResult, this.input, function (face) { return nets.faceExpressionNet.predictExpressions(face); }, this.extractedFaces)]; - case 2: - faceExpressions = _a.sent(); - return [2 /*return*/, extendWithFaceExpressions(parentResult, faceExpressions)]; - } - }); - }); - }; - PredictSingleFaceExpressionsTask.prototype.withAgeAndGender = function () { - return new PredictSingleAgeAndGenderTask(this, this.input); - }; - return PredictSingleFaceExpressionsTask; -}(PredictFaceExpressionsTaskBase)); -export { PredictSingleFaceExpressionsTask }; -var PredictAllFaceExpressionsWithFaceAlignmentTask = /** @class */ (function (_super) { - __extends(PredictAllFaceExpressionsWithFaceAlignmentTask, _super); - function PredictAllFaceExpressionsWithFaceAlignmentTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictAllFaceExpressionsWithFaceAlignmentTask.prototype.withAgeAndGender = function () { - return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input); - }; - PredictAllFaceExpressionsWithFaceAlignmentTask.prototype.withFaceDescriptors = function () { - return new ComputeAllFaceDescriptorsTask(this, this.input); - }; - return PredictAllFaceExpressionsWithFaceAlignmentTask; -}(PredictAllFaceExpressionsTask)); -export { PredictAllFaceExpressionsWithFaceAlignmentTask }; -var PredictSingleFaceExpressionsWithFaceAlignmentTask = /** @class */ (function (_super) { - __extends(PredictSingleFaceExpressionsWithFaceAlignmentTask, _super); - function PredictSingleFaceExpressionsWithFaceAlignmentTask() { - return _super !== null && _super.apply(this, arguments) || this; - } - PredictSingleFaceExpressionsWithFaceAlignmentTask.prototype.withAgeAndGender = function () { - return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input); - }; - PredictSingleFaceExpressionsWithFaceAlignmentTask.prototype.withFaceDescriptor = function () { - return new ComputeSingleFaceDescriptorTask(this, this.input); - }; - return PredictSingleFaceExpressionsWithFaceAlignmentTask; -}(PredictSingleFaceExpressionsTask)); -export { PredictSingleFaceExpressionsWithFaceAlignmentTask }; -//# sourceMappingURL=PredictFaceExpressionsTask.js.map \ No newline at end of file diff --git a/build/es6/globalApi/PredictFaceExpressionsTask.js.map b/build/es6/globalApi/PredictFaceExpressionsTask.js.map deleted file mode 100644 index 0c325a48..00000000 --- a/build/es6/globalApi/PredictFaceExpressionsTask.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PredictFaceExpressionsTask.js","sourceRoot":"","sources":["../../../src/globalApi/PredictFaceExpressionsTask.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/globalApi/allFaces.d.ts b/build/es6/globalApi/allFaces.d.ts deleted file mode 100644 index a5b62f2f..00000000 --- a/build/es6/globalApi/allFaces.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { TfjsImageRecognitionBase, TNetInput } from 'tfjs-image-recognition-base'; -import { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories'; -import { IMtcnnOptions } from '../mtcnn/MtcnnOptions'; -export declare function allFacesSsdMobilenetv1(input: TNetInput, minConfidence?: number): Promise>>[]>; -export declare function allFacesTinyYolov2(input: TNetInput, forwardParams?: TfjsImageRecognitionBase.ITinyYolov2Options): Promise>>[]>; -export declare function allFacesMtcnn(input: TNetInput, forwardParams?: IMtcnnOptions): Promise>>[]>; -export declare const allFaces: typeof allFacesSsdMobilenetv1; diff --git a/build/es6/globalApi/allFaces.js b/build/es6/globalApi/allFaces.js deleted file mode 100644 index 6b077467..00000000 --- a/build/es6/globalApi/allFaces.js +++ /dev/null @@ -1,46 +0,0 @@ -import { __awaiter, __generator } from "tslib"; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { MtcnnOptions } from '../mtcnn/MtcnnOptions'; -import { SsdMobilenetv1Options } from '../ssdMobilenetv1'; -import { detectAllFaces } from './detectFaces'; -// export allFaces API for backward compatibility -export function allFacesSsdMobilenetv1(input, minConfidence) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence: minConfidence } : {})) - .withFaceLandmarks() - .withFaceDescriptors()]; - case 1: return [2 /*return*/, _a.sent()]; - } - }); - }); -} -export function allFacesTinyYolov2(input, forwardParams) { - if (forwardParams === void 0) { forwardParams = {}; } - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, detectAllFaces(input, new TfjsImageRecognitionBase.TinyYolov2Options(forwardParams)) - .withFaceLandmarks() - .withFaceDescriptors()]; - case 1: return [2 /*return*/, _a.sent()]; - } - }); - }); -} -export function allFacesMtcnn(input, forwardParams) { - if (forwardParams === void 0) { forwardParams = {}; } - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, detectAllFaces(input, new MtcnnOptions(forwardParams)) - .withFaceLandmarks() - .withFaceDescriptors()]; - case 1: return [2 /*return*/, _a.sent()]; - } - }); - }); -} -export var allFaces = allFacesSsdMobilenetv1; -//# sourceMappingURL=allFaces.js.map \ No newline at end of file diff --git a/build/es6/globalApi/allFaces.js.map b/build/es6/globalApi/allFaces.js.map deleted file mode 100644 index 488a93cf..00000000 --- a/build/es6/globalApi/allFaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"allFaces.js","sourceRoot":"","sources":["../../../src/globalApi/allFaces.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,wBAAwB,EAAa,MAAM,6BAA6B,CAAC;AAGlF,OAAO,EAAiB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,iDAAiD;AAEjD,MAAM,UAAgB,sBAAsB,CAC1C,KAAgB,EAChB,aAAsB;;;;wBAEf,qBAAM,cAAc,CAAC,KAAK,EAAE,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,eAAA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;yBAClG,iBAAiB,EAAE;yBACnB,mBAAmB,EAAE,EAAA;wBAFxB,sBAAO,SAEiB,EAAA;;;;CACzB;AAED,MAAM,UAAgB,kBAAkB,CACtC,KAAgB,EAChB,aAA+D;IAA/D,8BAAA,EAAA,kBAA+D;;;;wBAExD,qBAAM,cAAc,CAAC,KAAK,EAAE,IAAI,wBAAwB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;yBAC9F,iBAAiB,EAAE;yBACnB,mBAAmB,EAAE,EAAA;wBAFxB,sBAAO,SAEiB,EAAA;;;;CACzB;AAED,MAAM,UAAgB,aAAa,CACjC,KAAgB,EAChB,aAAiC;IAAjC,8BAAA,EAAA,kBAAiC;;;;wBAE1B,qBAAM,cAAc,CAAC,KAAK,EAAE,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;yBAChE,iBAAiB,EAAE;yBACnB,mBAAmB,EAAE,EAAA;wBAFxB,sBAAO,SAEiB,EAAA;;;;CACzB;AAED,MAAM,CAAC,IAAM,QAAQ,GAAG,sBAAsB,CAAA"} \ No newline at end of file diff --git a/build/es6/globalApi/detectFaces.d.ts b/build/es6/globalApi/detectFaces.d.ts deleted file mode 100644 index d1091c32..00000000 --- a/build/es6/globalApi/detectFaces.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { TNetInput } from 'tfjs-image-recognition-base'; -import { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks'; -import { FaceDetectionOptions } from './types'; -export declare function detectSingleFace(input: TNetInput, options?: FaceDetectionOptions): DetectSingleFaceTask; -export declare function detectAllFaces(input: TNetInput, options?: FaceDetectionOptions): DetectAllFacesTask; diff --git a/build/es6/globalApi/detectFaces.js b/build/es6/globalApi/detectFaces.js deleted file mode 100644 index be82c34b..00000000 --- a/build/es6/globalApi/detectFaces.js +++ /dev/null @@ -1,11 +0,0 @@ -import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; -import { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks'; -export function detectSingleFace(input, options) { - if (options === void 0) { options = new SsdMobilenetv1Options(); } - return new DetectSingleFaceTask(input, options); -} -export function detectAllFaces(input, options) { - if (options === void 0) { options = new SsdMobilenetv1Options(); } - return new DetectAllFacesTask(input, options); -} -//# sourceMappingURL=detectFaces.js.map \ No newline at end of file diff --git a/build/es6/globalApi/detectFaces.js.map b/build/es6/globalApi/detectFaces.js.map deleted file mode 100644 index 00dd6ee1..00000000 --- a/build/es6/globalApi/detectFaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"detectFaces.js","sourceRoot":"","sources":["../../../src/globalApi/detectFaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG9E,MAAM,UAAU,gBAAgB,CAC9B,KAAgB,EAChB,OAA2D;IAA3D,wBAAA,EAAA,cAAoC,qBAAqB,EAAE;IAE3D,OAAO,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAgB,EAChB,OAA2D;IAA3D,wBAAA,EAAA,cAAoC,qBAAqB,EAAE;IAE3D,OAAO,IAAI,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAC/C,CAAC"} \ No newline at end of file diff --git a/build/es6/globalApi/extractFacesAndComputeResults.d.ts b/build/es6/globalApi/extractFacesAndComputeResults.d.ts deleted file mode 100644 index 960a3d69..00000000 --- a/build/es6/globalApi/extractFacesAndComputeResults.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { WithFaceDetection } from '../factories/WithFaceDetection'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -export declare function extractAllFacesAndComputeResults, TResult>(parentResults: TSource[], input: TNetInput, computeResults: (faces: Array) => Promise, extractedFaces?: Array | null, getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection): Promise; -export declare function extractSingleFaceAndComputeResult, TResult>(parentResult: TSource, input: TNetInput, computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise, extractedFaces?: Array | null, getRectForAlignment?: (parentResult: WithFaceLandmarks) => FaceDetection): Promise; diff --git a/build/es6/globalApi/extractFacesAndComputeResults.js b/build/es6/globalApi/extractFacesAndComputeResults.js deleted file mode 100644 index aa45bfad..00000000 --- a/build/es6/globalApi/extractFacesAndComputeResults.js +++ /dev/null @@ -1,55 +0,0 @@ -import { __awaiter, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { extractFaces, extractFaceTensors } from '../dom'; -import { isWithFaceLandmarks } from '../factories/WithFaceLandmarks'; -export function extractAllFacesAndComputeResults(parentResults, input, computeResults, extractedFaces, getRectForAlignment) { - if (getRectForAlignment === void 0) { getRectForAlignment = function (_a) { - var alignedRect = _a.alignedRect; - return alignedRect; - }; } - return __awaiter(this, void 0, void 0, function () { - var faceBoxes, faces, _a, _b, results; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - faceBoxes = parentResults.map(function (parentResult) { - return isWithFaceLandmarks(parentResult) - ? getRectForAlignment(parentResult) - : parentResult.detection; - }); - _a = extractedFaces; - if (_a) return [3 /*break*/, 5]; - if (!(input instanceof tf.Tensor)) return [3 /*break*/, 2]; - return [4 /*yield*/, extractFaceTensors(input, faceBoxes)]; - case 1: - _b = _c.sent(); - return [3 /*break*/, 4]; - case 2: return [4 /*yield*/, extractFaces(input, faceBoxes)]; - case 3: - _b = _c.sent(); - _c.label = 4; - case 4: - _a = (_b); - _c.label = 5; - case 5: - faces = _a; - return [4 /*yield*/, computeResults(faces)]; - case 6: - results = _c.sent(); - faces.forEach(function (f) { return f instanceof tf.Tensor && f.dispose(); }); - return [2 /*return*/, results]; - } - }); - }); -} -export function extractSingleFaceAndComputeResult(parentResult, input, computeResult, extractedFaces, getRectForAlignment) { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - return [2 /*return*/, extractAllFacesAndComputeResults([parentResult], input, function (faces) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { - return [2 /*return*/, computeResult(faces[0])]; - }); }); }, extractedFaces, getRectForAlignment)]; - }); - }); -} -//# sourceMappingURL=extractFacesAndComputeResults.js.map \ No newline at end of file diff --git a/build/es6/globalApi/extractFacesAndComputeResults.js.map b/build/es6/globalApi/extractFacesAndComputeResults.js.map deleted file mode 100644 index bd1dddcd..00000000 --- a/build/es6/globalApi/extractFacesAndComputeResults.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractFacesAndComputeResults.js","sourceRoot":"","sources":["../../../src/globalApi/extractFacesAndComputeResults.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI5C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAqB,MAAM,gCAAgC,CAAC;AAExF,MAAM,UAAgB,gCAAgC,CACpD,aAAwB,EACxB,KAAgB,EAChB,cAAmF,EACnF,cAA8D,EAC9D,mBAAwH;IAAxH,oCAAA,EAAA,gCAAyF,EAAe;YAAb,4BAAW;QAAO,OAAA,WAAW;IAAX,CAAW;;;;;;oBAElH,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,UAAA,YAAY;wBAC9C,OAAA,mBAAmB,CAAC,YAAY,CAAC;4BAC/B,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC;4BACnC,CAAC,CAAC,YAAY,CAAC,SAAS;oBAF1B,CAE0B,CAC3B,CAAA;oBACqD,KAAA,cAAc,CAAA;4BAAd,wBAAc;yBAClE,CAAA,KAAK,YAAY,EAAE,CAAC,MAAM,CAAA,EAA1B,wBAA0B;oBACtB,qBAAM,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAA;;oBAA1C,KAAA,SAA0C,CAAA;;wBAC1C,qBAAM,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,EAAA;;oBAApC,KAAA,SAAoC,CAAA;;;oBAH8B,KAAA,IAIvE,CAAA;;;oBAJK,KAAK,KAIV;oBAEe,qBAAM,cAAc,CAAC,KAAK,CAAC,EAAA;;oBAArC,OAAO,GAAG,SAA2B;oBAE3C,KAAK,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,YAAY,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,EAArC,CAAqC,CAAC,CAAA;oBAEzD,sBAAO,OAAO,EAAA;;;;CACf;AAED,MAAM,UAAgB,iCAAiC,CACrD,YAAqB,EACrB,KAAgB,EAChB,aAA0E,EAC1E,cAA8D,EAC9D,mBAAsF;;;;YAEtF,sBAAO,gCAAgC,CACrC,CAAC,YAAY,CAAC,EACd,KAAK,EACL,UAAM,KAAK;oBAAI,sBAAA,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAA;yBAAA,EACtC,cAAc,EACd,mBAAmB,CACpB,EAAA;;;CACF"} \ No newline at end of file diff --git a/build/es6/globalApi/index.d.ts b/build/es6/globalApi/index.d.ts deleted file mode 100644 index de0e0c09..00000000 --- a/build/es6/globalApi/index.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from './allFaces'; -export * from './ComposableTask'; -export * from './ComputeFaceDescriptorsTasks'; -export * from './detectFaces'; -export * from './DetectFacesTasks'; -export * from './DetectFaceLandmarksTasks'; -export * from './FaceMatcher'; -export * from './nets'; -export * from './types'; diff --git a/build/es6/globalApi/index.js b/build/es6/globalApi/index.js deleted file mode 100644 index 5fd55601..00000000 --- a/build/es6/globalApi/index.js +++ /dev/null @@ -1,9 +0,0 @@ -export * from './allFaces'; -export * from './ComposableTask'; -export * from './ComputeFaceDescriptorsTasks'; -export * from './detectFaces'; -export * from './DetectFacesTasks'; -export * from './DetectFaceLandmarksTasks'; -export * from './FaceMatcher'; -export * from './nets'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/globalApi/index.js.map b/build/es6/globalApi/index.js.map deleted file mode 100644 index 94fa9775..00000000 --- a/build/es6/globalApi/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/globalApi/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,eAAe,CAAA;AAC7B,cAAc,QAAQ,CAAA"} \ No newline at end of file diff --git a/build/es6/globalApi/nets.d.ts b/build/es6/globalApi/nets.d.ts deleted file mode 100644 index b5ec9109..00000000 --- a/build/es6/globalApi/nets.d.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { TfjsImageRecognitionBase, TNetInput } from 'tfjs-image-recognition-base'; -import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet'; -import { AgeAndGenderPrediction } from '../ageGenderNet/types'; -import { FaceDetection } from '../classes/FaceDetection'; -import { FaceLandmarks5 } from '../classes/FaceLandmarks5'; -import { FaceLandmarks68 } from '../classes/FaceLandmarks68'; -import { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet'; -import { FaceExpressions } from '../faceExpressionNet/FaceExpressions'; -import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net'; -import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet'; -import { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet'; -import { WithFaceLandmarks } from '../factories/WithFaceLandmarks'; -import { Mtcnn } from '../mtcnn/Mtcnn'; -import { MtcnnOptions } from '../mtcnn/MtcnnOptions'; -import { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1'; -import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; -import { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector'; -import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; -import { TinyYolov2 } from '../tinyYolov2'; -export declare const nets: { - ssdMobilenetv1: SsdMobilenetv1; - tinyFaceDetector: TinyFaceDetector; - tinyYolov2: TinyYolov2; - mtcnn: Mtcnn; - faceLandmark68Net: FaceLandmark68Net; - faceLandmark68TinyNet: FaceLandmark68TinyNet; - faceRecognitionNet: FaceRecognitionNet; - faceExpressionNet: FaceExpressionNet; - ageGenderNet: AgeGenderNet; -}; -/** - * Attempts to detect all faces in an image using SSD Mobilenetv1 Network. - * - * @param input The input image. - * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters). - * @returns Bounding box of each face with score. - */ -export declare const ssdMobilenetv1: (input: TNetInput, options: SsdMobilenetv1Options) => Promise; -/** - * Attempts to detect all faces in an image using the Tiny Face Detector. - * - * @param input The input image. - * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters). - * @returns Bounding box of each face with score. - */ -export declare const tinyFaceDetector: (input: TNetInput, options: TinyFaceDetectorOptions) => Promise; -/** - * Attempts to detect all faces in an image using the Tiny Yolov2 Network. - * - * @param input The input image. - * @param options (optional, default: see TinyYolov2Options constructor for default parameters). - * @returns Bounding box of each face with score. - */ -export declare const tinyYolov2: (input: TNetInput, options: TfjsImageRecognitionBase.ITinyYolov2Options) => Promise; -/** - * Attempts to detect all faces in an image and the 5 point face landmarks - * of each detected face using the MTCNN Network. - * - * @param input The input image. - * @param options (optional, default: see MtcnnOptions constructor for default parameters). - * @returns Bounding box of each face with score and 5 point face landmarks. - */ -export declare const mtcnn: (input: TNetInput, options: MtcnnOptions) => Promise[]>; -/** - * Detects the 68 point face landmark positions of the face shown in an image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns 68 point face landmarks or array thereof in case of batch input. - */ -export declare const detectFaceLandmarks: (input: TNetInput) => Promise; -/** - * Detects the 68 point face landmark positions of the face shown in an image - * using a tinier version of the 68 point face landmark model, which is slightly - * faster at inference, but also slightly less accurate. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns 68 point face landmarks or array thereof in case of batch input. - */ -export declare const detectFaceLandmarksTiny: (input: TNetInput) => Promise; -/** - * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image, - * which uniquely represents the features of that persons face. The computed face descriptor can - * be used to measure the similarity between faces, by computing the euclidean distance of two - * face descriptors. - * - * @param inputs The face image extracted from the aligned bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Face descriptor with 128 entries or array thereof in case of batch input. - */ -export declare const computeFaceDescriptor: (input: TNetInput) => Promise; -/** - * Recognizes the facial expressions from a face image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input. - */ -export declare const recognizeFaceExpressions: (input: TNetInput) => Promise; -/** - * Predicts age and gender from a face image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Predictions with age, gender and gender probability or array thereof in case of batch input. - */ -export declare const predictAgeAndGender: (input: TNetInput) => Promise; -export declare const loadSsdMobilenetv1Model: (url: string) => Promise; -export declare const loadTinyFaceDetectorModel: (url: string) => Promise; -export declare const loadMtcnnModel: (url: string) => Promise; -export declare const loadTinyYolov2Model: (url: string) => Promise; -export declare const loadFaceLandmarkModel: (url: string) => Promise; -export declare const loadFaceLandmarkTinyModel: (url: string) => Promise; -export declare const loadFaceRecognitionModel: (url: string) => Promise; -export declare const loadFaceExpressionModel: (url: string) => Promise; -export declare const loadAgeGenderModel: (url: string) => Promise; -export declare const loadFaceDetectionModel: (url: string) => Promise; -export declare const locateFaces: (input: TNetInput, options: SsdMobilenetv1Options) => Promise; -export declare const detectLandmarks: (input: TNetInput) => Promise; diff --git a/build/es6/globalApi/nets.js b/build/es6/globalApi/nets.js deleted file mode 100644 index 8b153d8f..00000000 --- a/build/es6/globalApi/nets.js +++ /dev/null @@ -1,130 +0,0 @@ -import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet'; -import { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet'; -import { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net'; -import { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet'; -import { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet'; -import { Mtcnn } from '../mtcnn/Mtcnn'; -import { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1'; -import { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector'; -import { TinyYolov2 } from '../tinyYolov2'; -export var nets = { - ssdMobilenetv1: new SsdMobilenetv1(), - tinyFaceDetector: new TinyFaceDetector(), - tinyYolov2: new TinyYolov2(), - mtcnn: new Mtcnn(), - faceLandmark68Net: new FaceLandmark68Net(), - faceLandmark68TinyNet: new FaceLandmark68TinyNet(), - faceRecognitionNet: new FaceRecognitionNet(), - faceExpressionNet: new FaceExpressionNet(), - ageGenderNet: new AgeGenderNet() -}; -/** - * Attempts to detect all faces in an image using SSD Mobilenetv1 Network. - * - * @param input The input image. - * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters). - * @returns Bounding box of each face with score. - */ -export var ssdMobilenetv1 = function (input, options) { - return nets.ssdMobilenetv1.locateFaces(input, options); -}; -/** - * Attempts to detect all faces in an image using the Tiny Face Detector. - * - * @param input The input image. - * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters). - * @returns Bounding box of each face with score. - */ -export var tinyFaceDetector = function (input, options) { - return nets.tinyFaceDetector.locateFaces(input, options); -}; -/** - * Attempts to detect all faces in an image using the Tiny Yolov2 Network. - * - * @param input The input image. - * @param options (optional, default: see TinyYolov2Options constructor for default parameters). - * @returns Bounding box of each face with score. - */ -export var tinyYolov2 = function (input, options) { - return nets.tinyYolov2.locateFaces(input, options); -}; -/** - * Attempts to detect all faces in an image and the 5 point face landmarks - * of each detected face using the MTCNN Network. - * - * @param input The input image. - * @param options (optional, default: see MtcnnOptions constructor for default parameters). - * @returns Bounding box of each face with score and 5 point face landmarks. - */ -export var mtcnn = function (input, options) { - return nets.mtcnn.forward(input, options); -}; -/** - * Detects the 68 point face landmark positions of the face shown in an image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns 68 point face landmarks or array thereof in case of batch input. - */ -export var detectFaceLandmarks = function (input) { - return nets.faceLandmark68Net.detectLandmarks(input); -}; -/** - * Detects the 68 point face landmark positions of the face shown in an image - * using a tinier version of the 68 point face landmark model, which is slightly - * faster at inference, but also slightly less accurate. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns 68 point face landmarks or array thereof in case of batch input. - */ -export var detectFaceLandmarksTiny = function (input) { - return nets.faceLandmark68TinyNet.detectLandmarks(input); -}; -/** - * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image, - * which uniquely represents the features of that persons face. The computed face descriptor can - * be used to measure the similarity between faces, by computing the euclidean distance of two - * face descriptors. - * - * @param inputs The face image extracted from the aligned bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Face descriptor with 128 entries or array thereof in case of batch input. - */ -export var computeFaceDescriptor = function (input) { - return nets.faceRecognitionNet.computeFaceDescriptor(input); -}; -/** - * Recognizes the facial expressions from a face image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input. - */ -export var recognizeFaceExpressions = function (input) { - return nets.faceExpressionNet.predictExpressions(input); -}; -/** - * Predicts age and gender from a face image. - * - * @param inputs The face image extracted from the bounding box of a face. Can - * also be an array of input images, which will be batch processed. - * @returns Predictions with age, gender and gender probability or array thereof in case of batch input. - */ -export var predictAgeAndGender = function (input) { - return nets.ageGenderNet.predictAgeAndGender(input); -}; -export var loadSsdMobilenetv1Model = function (url) { return nets.ssdMobilenetv1.load(url); }; -export var loadTinyFaceDetectorModel = function (url) { return nets.tinyFaceDetector.load(url); }; -export var loadMtcnnModel = function (url) { return nets.mtcnn.load(url); }; -export var loadTinyYolov2Model = function (url) { return nets.tinyYolov2.load(url); }; -export var loadFaceLandmarkModel = function (url) { return nets.faceLandmark68Net.load(url); }; -export var loadFaceLandmarkTinyModel = function (url) { return nets.faceLandmark68TinyNet.load(url); }; -export var loadFaceRecognitionModel = function (url) { return nets.faceRecognitionNet.load(url); }; -export var loadFaceExpressionModel = function (url) { return nets.faceExpressionNet.load(url); }; -export var loadAgeGenderModel = function (url) { return nets.ageGenderNet.load(url); }; -// backward compatibility -export var loadFaceDetectionModel = loadSsdMobilenetv1Model; -export var locateFaces = ssdMobilenetv1; -export var detectLandmarks = detectFaceLandmarks; -//# sourceMappingURL=nets.js.map \ No newline at end of file diff --git a/build/es6/globalApi/nets.js.map b/build/es6/globalApi/nets.js.map deleted file mode 100644 index ce8efa1b..00000000 --- a/build/es6/globalApi/nets.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"nets.js","sourceRoot":"","sources":["../../../src/globalApi/nets.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/globalApi/types.d.ts b/build/es6/globalApi/types.d.ts deleted file mode 100644 index 9558c95e..00000000 --- a/build/es6/globalApi/types.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { TfjsImageRecognitionBase, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { MtcnnOptions } from '../mtcnn/MtcnnOptions'; -import { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options'; -import { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions'; -export declare type FaceDetectionOptions = TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TfjsImageRecognitionBase.TinyYolov2Options; -export declare type FaceDetectionFunction = (input: TNetInput) => Promise; diff --git a/build/es6/globalApi/types.js b/build/es6/globalApi/types.js deleted file mode 100644 index 5b2306a4..00000000 --- a/build/es6/globalApi/types.js +++ /dev/null @@ -1 +0,0 @@ -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/es6/globalApi/types.js.map b/build/es6/globalApi/types.js.map deleted file mode 100644 index e079214c..00000000 --- a/build/es6/globalApi/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/globalApi/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/es6/index.d.ts b/build/es6/index.d.ts deleted file mode 100644 index 6982d2d7..00000000 --- a/build/es6/index.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { draw as drawBase } from 'tfjs-image-recognition-base'; -import * as drawExtended from './draw'; -export { tf }; -export * from 'tfjs-image-recognition-base'; -export * from './ageGenderNet/index'; -declare const draw: { - drawContour(ctx: CanvasRenderingContext2D, points: import("tfjs-image-recognition-base").Point[], isClosed?: boolean): void; - drawDetections(canvasArg: string | HTMLCanvasElement, detections: import("./classes").FaceDetection | import("tfjs-image-recognition-base").IRect | { - detection: import("./classes").FaceDetection; - } | import("tfjs-image-recognition-base").IBoundingBox | drawExtended.TDrawDetectionsInput[]): void; - drawFaceExpressions(canvasArg: string | HTMLCanvasElement, faceExpressions: import("./faceExpressionNet").FaceExpressions | { - expressions: import("./faceExpressionNet").FaceExpressions; - } | drawExtended.DrawFaceExpressionsInput[], minConfidence?: number, textFieldAnchor?: import("tfjs-image-recognition-base").IPoint | undefined): void; - drawFaceLandmarks(canvasArg: string | HTMLCanvasElement, faceLandmarks: import("./classes").FaceLandmarks | import("./factories").WithFaceLandmarks<{ - detection: import("./classes").FaceDetection; - }, import("./classes").FaceLandmarks68> | drawExtended.DrawFaceLandmarksInput[]): void; - DrawFaceLandmarksOptions: typeof drawExtended.DrawFaceLandmarksOptions; - DrawFaceLandmarks: typeof drawExtended.DrawFaceLandmarks; - DrawBoxOptions: typeof drawBase.DrawBoxOptions; - DrawBox: typeof drawBase.DrawBox; - AnchorPosition: typeof drawBase.AnchorPosition; - DrawTextFieldOptions: typeof drawBase.DrawTextFieldOptions; - DrawTextField: typeof drawBase.DrawTextField; -}; -export { draw }; -export * from './classes/index'; -export * from './dom/index'; -export * from './faceExpressionNet/index'; -export * from './faceLandmarkNet/index'; -export * from './faceRecognitionNet/index'; -export * from './factories/index'; -export * from './globalApi/index'; -export * from './mtcnn/index'; -export * from './ssdMobilenetv1/index'; -export * from './tinyFaceDetector/index'; -export * from './tinyYolov2/index'; -export * from './euclideanDistance'; -export * from './resizeResults'; diff --git a/build/es6/index.js b/build/es6/index.js deleted file mode 100644 index 219c94c5..00000000 --- a/build/es6/index.js +++ /dev/null @@ -1,23 +0,0 @@ -import { __assign } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { draw as drawBase } from 'tfjs-image-recognition-base'; -import * as drawExtended from './draw'; -export { tf }; -export * from 'tfjs-image-recognition-base'; -export * from './ageGenderNet/index'; -var draw = __assign(__assign({}, drawBase), drawExtended); -export { draw }; -export * from './classes/index'; -export * from './dom/index'; -export * from './faceExpressionNet/index'; -export * from './faceLandmarkNet/index'; -export * from './faceRecognitionNet/index'; -export * from './factories/index'; -export * from './globalApi/index'; -export * from './mtcnn/index'; -export * from './ssdMobilenetv1/index'; -export * from './tinyFaceDetector/index'; -export * from './tinyYolov2/index'; -export * from './euclideanDistance'; -export * from './resizeResults'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/index.js.map b/build/es6/index.js.map deleted file mode 100644 index 8b233037..00000000 --- a/build/es6/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAEvC,OAAO,EACL,EAAE,EACH,CAAA;AAED,cAAc,6BAA6B,CAAC;AAE5C,cAAc,sBAAsB,CAAC;AACrC,IAAM,IAAI,yBAAO,QAAQ,GAAK,YAAY,CAAE,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,CAAA;AAEf,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC"} \ No newline at end of file diff --git a/build/es6/minBbox.d.ts b/build/es6/minBbox.d.ts deleted file mode 100644 index f4de74c0..00000000 --- a/build/es6/minBbox.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { BoundingBox, IPoint } from 'tfjs-image-recognition-base'; -export declare function minBbox(pts: IPoint[]): BoundingBox; diff --git a/build/es6/minBbox.js b/build/es6/minBbox.js deleted file mode 100644 index 583cc145..00000000 --- a/build/es6/minBbox.js +++ /dev/null @@ -1,11 +0,0 @@ -import { BoundingBox } from 'tfjs-image-recognition-base'; -export function minBbox(pts) { - var xs = pts.map(function (pt) { return pt.x; }); - var ys = pts.map(function (pt) { return pt.y; }); - var minX = xs.reduce(function (min, x) { return x < min ? x : min; }, Infinity); - var minY = ys.reduce(function (min, y) { return y < min ? y : min; }, Infinity); - var maxX = xs.reduce(function (max, x) { return max < x ? x : max; }, 0); - var maxY = ys.reduce(function (max, y) { return max < y ? y : max; }, 0); - return new BoundingBox(minX, minY, maxX, maxY); -} -//# sourceMappingURL=minBbox.js.map \ No newline at end of file diff --git a/build/es6/minBbox.js.map b/build/es6/minBbox.js.map deleted file mode 100644 index 5273cb39..00000000 --- a/build/es6/minBbox.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"minBbox.js","sourceRoot":"","sources":["../../src/minBbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAU,MAAM,6BAA6B,CAAC;AAElE,MAAM,UAAU,OAAO,CAAC,GAAa;IACnC,IAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,CAAC,EAAJ,CAAI,CAAC,CAAA;IAC9B,IAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,CAAC,EAAJ,CAAI,CAAC,CAAA;IAC9B,IAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAjB,CAAiB,EAAE,QAAQ,CAAC,CAAA;IAC/D,IAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAjB,CAAiB,EAAE,QAAQ,CAAC,CAAA;IAC/D,IAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAjB,CAAiB,EAAE,CAAC,CAAC,CAAA;IACxD,IAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAjB,CAAiB,EAAE,CAAC,CAAC,CAAA;IAExD,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAChD,CAAC"} \ No newline at end of file diff --git a/build/es6/mtcnn/Mtcnn.d.ts b/build/es6/mtcnn/Mtcnn.d.ts deleted file mode 100644 index 35384f72..00000000 --- a/build/es6/mtcnn/Mtcnn.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base'; -import { IMtcnnOptions } from './MtcnnOptions'; -import { MtcnnResult, NetParams } from './types'; -export declare class Mtcnn extends NeuralNetwork { - constructor(); - forwardInput(input: NetInput, forwardParams?: IMtcnnOptions): Promise<{ - results: MtcnnResult[]; - stats: any; - }>; - forward(input: TNetInput, forwardParams?: IMtcnnOptions): Promise; - forwardWithStats(input: TNetInput, forwardParams?: IMtcnnOptions): Promise<{ - results: MtcnnResult[]; - stats: any; - }>; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/es6/mtcnn/Mtcnn.js b/build/es6/mtcnn/Mtcnn.js deleted file mode 100644 index 2f7af4e2..00000000 --- a/build/es6/mtcnn/Mtcnn.js +++ /dev/null @@ -1,135 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { NeuralNetwork, Point, Rect, toNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { FaceLandmarks5 } from '../classes/FaceLandmarks5'; -import { extendWithFaceDetection, extendWithFaceLandmarks } from '../factories'; -import { bgrToRgbTensor } from './bgrToRgbTensor'; -import { CELL_SIZE } from './config'; -import { extractParams } from './extractParams'; -import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; -import { getSizesForScale } from './getSizesForScale'; -import { MtcnnOptions } from './MtcnnOptions'; -import { pyramidDown } from './pyramidDown'; -import { stage1 } from './stage1'; -import { stage2 } from './stage2'; -import { stage3 } from './stage3'; -var Mtcnn = /** @class */ (function (_super) { - __extends(Mtcnn, _super); - function Mtcnn() { - return _super.call(this, 'Mtcnn') || this; - } - Mtcnn.prototype.forwardInput = function (input, forwardParams) { - if (forwardParams === void 0) { forwardParams = {}; } - return __awaiter(this, void 0, void 0, function () { - var params, inputCanvas, stats, tsTotal, imgTensor, onReturn, _a, height, width, _b, minFaceSize, scaleFactor, maxNumScales, scoreThresholds, scaleSteps, scales, ts, out1, out2, out3, results; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - params = this.params; - if (!params) { - throw new Error('Mtcnn - load model before inference'); - } - inputCanvas = input.canvases[0]; - if (!inputCanvas) { - throw new Error('Mtcnn - inputCanvas is not defined, note that passing tensors into Mtcnn.forwardInput is not supported yet.'); - } - stats = {}; - tsTotal = Date.now(); - imgTensor = tf.tidy(function () { - return bgrToRgbTensor(tf.expandDims(tf.browser.fromPixels(inputCanvas)).toFloat()); - }); - onReturn = function (results) { - // dispose tensors on return - imgTensor.dispose(); - stats.total = Date.now() - tsTotal; - return results; - }; - _a = imgTensor.shape.slice(1), height = _a[0], width = _a[1]; - _b = new MtcnnOptions(forwardParams), minFaceSize = _b.minFaceSize, scaleFactor = _b.scaleFactor, maxNumScales = _b.maxNumScales, scoreThresholds = _b.scoreThresholds, scaleSteps = _b.scaleSteps; - scales = (scaleSteps || pyramidDown(minFaceSize, scaleFactor, [height, width])) - .filter(function (scale) { - var sizes = getSizesForScale(scale, [height, width]); - return Math.min(sizes.width, sizes.height) > CELL_SIZE; - }) - .slice(0, maxNumScales); - stats.scales = scales; - stats.pyramid = scales.map(function (scale) { return getSizesForScale(scale, [height, width]); }); - ts = Date.now(); - return [4 /*yield*/, stage1(imgTensor, scales, scoreThresholds[0], params.pnet, stats)]; - case 1: - out1 = _c.sent(); - stats.total_stage1 = Date.now() - ts; - if (!out1.boxes.length) { - return [2 /*return*/, onReturn({ results: [], stats: stats })]; - } - stats.stage2_numInputBoxes = out1.boxes.length; - // using the inputCanvas to extract and resize the image patches, since it is faster - // than doing this on the gpu - ts = Date.now(); - return [4 /*yield*/, stage2(inputCanvas, out1.boxes, scoreThresholds[1], params.rnet, stats)]; - case 2: - out2 = _c.sent(); - stats.total_stage2 = Date.now() - ts; - if (!out2.boxes.length) { - return [2 /*return*/, onReturn({ results: [], stats: stats })]; - } - stats.stage3_numInputBoxes = out2.boxes.length; - ts = Date.now(); - return [4 /*yield*/, stage3(inputCanvas, out2.boxes, scoreThresholds[2], params.onet, stats)]; - case 3: - out3 = _c.sent(); - stats.total_stage3 = Date.now() - ts; - results = out3.boxes.map(function (box, idx) { return extendWithFaceLandmarks(extendWithFaceDetection({}, new FaceDetection(out3.scores[idx], new Rect(box.left / width, box.top / height, box.width / width, box.height / height), { - height: height, - width: width - })), new FaceLandmarks5(out3.points[idx].map(function (pt) { return pt.sub(new Point(box.left, box.top)).div(new Point(box.width, box.height)); }), { width: box.width, height: box.height })); }); - return [2 /*return*/, onReturn({ results: results, stats: stats })]; - } - }); - }); - }; - Mtcnn.prototype.forward = function (input, forwardParams) { - if (forwardParams === void 0) { forwardParams = {}; } - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, toNetInput(input)]; - case 1: return [4 /*yield*/, _a.apply(this, [_b.sent(), - forwardParams])]; - case 2: return [2 /*return*/, (_b.sent()).results]; - } - }); - }); - }; - Mtcnn.prototype.forwardWithStats = function (input, forwardParams) { - if (forwardParams === void 0) { forwardParams = {}; } - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent(), - forwardParams])]; - } - }); - }); - }; - Mtcnn.prototype.getDefaultModelName = function () { - return 'mtcnn_model'; - }; - Mtcnn.prototype.extractParamsFromWeigthMap = function (weightMap) { - return extractParamsFromWeigthMap(weightMap); - }; - Mtcnn.prototype.extractParams = function (weights) { - return extractParams(weights); - }; - return Mtcnn; -}(NeuralNetwork)); -export { Mtcnn }; -//# sourceMappingURL=Mtcnn.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/Mtcnn.js.map b/build/es6/mtcnn/Mtcnn.js.map deleted file mode 100644 index 401beeff..00000000 --- a/build/es6/mtcnn/Mtcnn.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Mtcnn.js","sourceRoot":"","sources":["../../../src/mtcnn/Mtcnn.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/mtcnn/MtcnnBox.d.ts b/build/es6/mtcnn/MtcnnBox.d.ts deleted file mode 100644 index e61cf2f0..00000000 --- a/build/es6/mtcnn/MtcnnBox.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Box } from 'tfjs-image-recognition-base'; -export declare class MtcnnBox extends Box { - constructor(left: number, top: number, right: number, bottom: number); -} diff --git a/build/es6/mtcnn/MtcnnBox.js b/build/es6/mtcnn/MtcnnBox.js deleted file mode 100644 index 9897cf9c..00000000 --- a/build/es6/mtcnn/MtcnnBox.js +++ /dev/null @@ -1,11 +0,0 @@ -import { __extends } from "tslib"; -import { Box } from 'tfjs-image-recognition-base'; -var MtcnnBox = /** @class */ (function (_super) { - __extends(MtcnnBox, _super); - function MtcnnBox(left, top, right, bottom) { - return _super.call(this, { left: left, top: top, right: right, bottom: bottom }, true) || this; - } - return MtcnnBox; -}(Box)); -export { MtcnnBox }; -//# sourceMappingURL=MtcnnBox.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/MtcnnBox.js.map b/build/es6/mtcnn/MtcnnBox.js.map deleted file mode 100644 index 85c29949..00000000 --- a/build/es6/mtcnn/MtcnnBox.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MtcnnBox.js","sourceRoot":"","sources":["../../../src/mtcnn/MtcnnBox.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAElD;IAA8B,4BAAa;IACzC,kBAAY,IAAY,EAAE,GAAW,EAAE,KAAa,EAAE,MAAc;eAClE,kBAAM,EAAE,IAAI,MAAA,EAAE,GAAG,KAAA,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,EAAE,IAAI,CAAC;IAC3C,CAAC;IACH,eAAC;AAAD,CAAC,AAJD,CAA8B,GAAG,GAIhC"} \ No newline at end of file diff --git a/build/es6/mtcnn/MtcnnOptions.d.ts b/build/es6/mtcnn/MtcnnOptions.d.ts deleted file mode 100644 index 140195e1..00000000 --- a/build/es6/mtcnn/MtcnnOptions.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -export interface IMtcnnOptions { - minFaceSize?: number; - scaleFactor?: number; - maxNumScales?: number; - scoreThresholds?: number[]; - scaleSteps?: number[]; -} -export declare class MtcnnOptions { - protected _name: string; - private _minFaceSize; - private _scaleFactor; - private _maxNumScales; - private _scoreThresholds; - private _scaleSteps; - constructor({ minFaceSize, scaleFactor, maxNumScales, scoreThresholds, scaleSteps }?: IMtcnnOptions); - readonly minFaceSize: number; - readonly scaleFactor: number; - readonly maxNumScales: number; - readonly scoreThresholds: number[]; - readonly scaleSteps: number[] | undefined; -} diff --git a/build/es6/mtcnn/MtcnnOptions.js b/build/es6/mtcnn/MtcnnOptions.js deleted file mode 100644 index ce341f1c..00000000 --- a/build/es6/mtcnn/MtcnnOptions.js +++ /dev/null @@ -1,57 +0,0 @@ -var MtcnnOptions = /** @class */ (function () { - function MtcnnOptions(_a) { - var _b = _a === void 0 ? {} : _a, minFaceSize = _b.minFaceSize, scaleFactor = _b.scaleFactor, maxNumScales = _b.maxNumScales, scoreThresholds = _b.scoreThresholds, scaleSteps = _b.scaleSteps; - this._name = 'MtcnnOptions'; - this._minFaceSize = minFaceSize || 20; - this._scaleFactor = scaleFactor || 0.709; - this._maxNumScales = maxNumScales || 10; - this._scoreThresholds = scoreThresholds || [0.6, 0.7, 0.7]; - this._scaleSteps = scaleSteps; - if (typeof this._minFaceSize !== 'number' || this._minFaceSize < 0) { - throw new Error(this._name + " - expected minFaceSize to be a number > 0"); - } - if (typeof this._scaleFactor !== 'number' || this._scaleFactor <= 0 || this._scaleFactor >= 1) { - throw new Error(this._name + " - expected scaleFactor to be a number between 0 and 1"); - } - if (typeof this._maxNumScales !== 'number' || this._maxNumScales < 0) { - throw new Error(this._name + " - expected maxNumScales to be a number > 0"); - } - if (!Array.isArray(this._scoreThresholds) - || this._scoreThresholds.length !== 3 - || this._scoreThresholds.some(function (th) { return typeof th !== 'number'; })) { - throw new Error(this._name + " - expected scoreThresholds to be an array of numbers of length 3"); - } - if (this._scaleSteps - && (!Array.isArray(this._scaleSteps) || this._scaleSteps.some(function (th) { return typeof th !== 'number'; }))) { - throw new Error(this._name + " - expected scaleSteps to be an array of numbers"); - } - } - Object.defineProperty(MtcnnOptions.prototype, "minFaceSize", { - get: function () { return this._minFaceSize; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MtcnnOptions.prototype, "scaleFactor", { - get: function () { return this._scaleFactor; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MtcnnOptions.prototype, "maxNumScales", { - get: function () { return this._maxNumScales; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MtcnnOptions.prototype, "scoreThresholds", { - get: function () { return this._scoreThresholds; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MtcnnOptions.prototype, "scaleSteps", { - get: function () { return this._scaleSteps; }, - enumerable: true, - configurable: true - }); - return MtcnnOptions; -}()); -export { MtcnnOptions }; -//# sourceMappingURL=MtcnnOptions.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/MtcnnOptions.js.map b/build/es6/mtcnn/MtcnnOptions.js.map deleted file mode 100644 index a2b20743..00000000 --- a/build/es6/mtcnn/MtcnnOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"MtcnnOptions.js","sourceRoot":"","sources":["../../../src/mtcnn/MtcnnOptions.ts"],"names":[],"mappings":"AAQA;IASE,sBAAY,EAA2F;YAA3F,4BAA2F,EAAzF,4BAAW,EAAE,4BAAW,EAAE,8BAAY,EAAE,oCAAe,EAAE,0BAAU;QARvE,UAAK,GAAW,cAAc,CAAA;QAStC,IAAI,CAAC,YAAY,GAAG,WAAW,IAAI,EAAE,CAAA;QACrC,IAAI,CAAC,YAAY,GAAG,WAAW,IAAI,KAAK,CAAA;QACxC,IAAI,CAAC,aAAa,GAAG,YAAY,IAAI,EAAE,CAAA;QACvC,IAAI,CAAC,gBAAgB,GAAG,eAAe,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QAC1D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;QAE7B,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;YAClE,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,+CAA4C,CAAC,CAAA;SAC3E;QAED,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE;YAC7F,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,2DAAwD,CAAC,CAAA;SACvF;QAED,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;YACpE,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,gDAA6C,CAAC,CAAA;SAC5E;QAED,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;eAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;eAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,OAAO,EAAE,KAAK,QAAQ,EAAtB,CAAsB,CAAC,EAC7D;YACA,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,sEAAmE,CAAC,CAAA;SAClG;QAED,IACE,IAAI,CAAC,WAAW;eACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,OAAO,EAAE,KAAK,QAAQ,EAAtB,CAAsB,CAAC,CAAC,EAC9F;YACA,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,qDAAkD,CAAC,CAAA;SACjF;IACH,CAAC;IAED,sBAAI,qCAAW;aAAf,cAA4B,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;;;OAAA;IACtD,sBAAI,qCAAW;aAAf,cAA4B,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;;;OAAA;IACtD,sBAAI,sCAAY;aAAhB,cAA6B,OAAO,IAAI,CAAC,aAAa,CAAA,CAAC,CAAC;;;OAAA;IACxD,sBAAI,yCAAe;aAAnB,cAAkC,OAAO,IAAI,CAAC,gBAAgB,CAAA,CAAC,CAAC;;;OAAA;IAChE,sBAAI,oCAAU;aAAd,cAAyC,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;;;OAAA;IACpE,mBAAC;AAAD,CAAC,AAjDD,IAiDC"} \ No newline at end of file diff --git a/build/es6/mtcnn/ONet.d.ts b/build/es6/mtcnn/ONet.d.ts deleted file mode 100644 index dfc7f113..00000000 --- a/build/es6/mtcnn/ONet.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { ONetParams } from './types'; -export declare function ONet(x: tf.Tensor4D, params: ONetParams): { - scores: tf.Tensor1D; - regions: tf.Tensor2D; - points: tf.Tensor2D; -}; diff --git a/build/es6/mtcnn/ONet.js b/build/es6/mtcnn/ONet.js deleted file mode 100644 index fe5fd1bf..00000000 --- a/build/es6/mtcnn/ONet.js +++ /dev/null @@ -1,24 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { fullyConnectedLayer } from '../common/fullyConnectedLayer'; -import { prelu } from './prelu'; -import { sharedLayer } from './sharedLayers'; -export function ONet(x, params) { - return tf.tidy(function () { - var out = sharedLayer(x, params); - out = tf.maxPool(out, [2, 2], [2, 2], 'same'); - out = TfjsImageRecognitionBase.convLayer(out, params.conv4, 'valid'); - out = prelu(out, params.prelu4_alpha); - var vectorized = tf.reshape(out, [out.shape[0], params.fc1.weights.shape[0]]); - var fc1 = fullyConnectedLayer(vectorized, params.fc1); - var prelu5 = prelu(fc1, params.prelu5_alpha); - var fc2_1 = fullyConnectedLayer(prelu5, params.fc2_1); - var max = tf.expandDims(tf.max(fc2_1, 1), 1); - var prob = tf.softmax(tf.sub(fc2_1, max), 1); - var regions = fullyConnectedLayer(prelu5, params.fc2_2); - var points = fullyConnectedLayer(prelu5, params.fc2_3); - var scores = tf.unstack(prob, 1)[1]; - return { scores: scores, regions: regions, points: points }; - }); -} -//# sourceMappingURL=ONet.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/ONet.js.map b/build/es6/mtcnn/ONet.js.map deleted file mode 100644 index e4ae23ba..00000000 --- a/build/es6/mtcnn/ONet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ONet.js","sourceRoot":"","sources":["../../../src/mtcnn/ONet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,UAAU,IAAI,CAAC,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,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACpE,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 diff --git a/build/es6/mtcnn/PNet.d.ts b/build/es6/mtcnn/PNet.d.ts deleted file mode 100644 index 74e2c841..00000000 --- a/build/es6/mtcnn/PNet.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { PNetParams } from './types'; -export declare function PNet(x: tf.Tensor4D, params: PNetParams): { - prob: tf.Tensor4D; - regions: tf.Tensor4D; -}; diff --git a/build/es6/mtcnn/PNet.js b/build/es6/mtcnn/PNet.js deleted file mode 100644 index f42c01ef..00000000 --- a/build/es6/mtcnn/PNet.js +++ /dev/null @@ -1,14 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { sharedLayer } from './sharedLayers'; -export function PNet(x, params) { - return tf.tidy(function () { - var out = sharedLayer(x, params, true); - var conv = TfjsImageRecognitionBase.convLayer(out, params.conv4_1, 'valid'); - var max = tf.expandDims(tf.max(conv, 3), 3); - var prob = tf.softmax(tf.sub(conv, max), 3); - var regions = TfjsImageRecognitionBase.convLayer(out, params.conv4_2, 'valid'); - return { prob: prob, regions: regions }; - }); -} -//# sourceMappingURL=PNet.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/PNet.js.map b/build/es6/mtcnn/PNet.js.map deleted file mode 100644 index dcab7102..00000000 --- a/build/es6/mtcnn/PNet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PNet.js","sourceRoot":"","sources":["../../../src/mtcnn/PNet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,UAAU,IAAI,CAAC,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,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC7E,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,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAEhF,OAAO,EAAE,IAAI,MAAA,EAAE,OAAO,SAAA,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;AACJ,CAAC"} \ No newline at end of file diff --git a/build/es6/mtcnn/RNet.d.ts b/build/es6/mtcnn/RNet.d.ts deleted file mode 100644 index c6883ff7..00000000 --- a/build/es6/mtcnn/RNet.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { RNetParams } from './types'; -export declare function RNet(x: tf.Tensor4D, params: RNetParams): { - scores: tf.Tensor1D; - regions: tf.Tensor2D; -}; diff --git a/build/es6/mtcnn/RNet.js b/build/es6/mtcnn/RNet.js deleted file mode 100644 index bbb50488..00000000 --- a/build/es6/mtcnn/RNet.js +++ /dev/null @@ -1,19 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { fullyConnectedLayer } from '../common/fullyConnectedLayer'; -import { prelu } from './prelu'; -import { sharedLayer } from './sharedLayers'; -export function RNet(x, params) { - return tf.tidy(function () { - var convOut = sharedLayer(x, params); - var vectorized = tf.reshape(convOut, [convOut.shape[0], params.fc1.weights.shape[0]]); - var fc1 = fullyConnectedLayer(vectorized, params.fc1); - var prelu4 = prelu(fc1, params.prelu4_alpha); - var fc2_1 = fullyConnectedLayer(prelu4, params.fc2_1); - var max = tf.expandDims(tf.max(fc2_1, 1), 1); - var prob = tf.softmax(tf.sub(fc2_1, max), 1); - var regions = fullyConnectedLayer(prelu4, params.fc2_2); - var scores = tf.unstack(prob, 1)[1]; - return { scores: scores, regions: regions }; - }); -} -//# sourceMappingURL=RNet.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/RNet.js.map b/build/es6/mtcnn/RNet.js.map deleted file mode 100644 index 78db6c6d..00000000 --- a/build/es6/mtcnn/RNet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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,+BAA+B,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,UAAU,IAAI,CAAC,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 diff --git a/build/es6/mtcnn/bgrToRgbTensor.d.ts b/build/es6/mtcnn/bgrToRgbTensor.d.ts deleted file mode 100644 index 7b544bef..00000000 --- a/build/es6/mtcnn/bgrToRgbTensor.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export declare function bgrToRgbTensor(tensor: tf.Tensor4D): tf.Tensor4D; diff --git a/build/es6/mtcnn/bgrToRgbTensor.js b/build/es6/mtcnn/bgrToRgbTensor.js deleted file mode 100644 index 5084eaf2..00000000 --- a/build/es6/mtcnn/bgrToRgbTensor.js +++ /dev/null @@ -1,5 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export function bgrToRgbTensor(tensor) { - return tf.tidy(function () { return tf.stack(tf.unstack(tensor, 3).reverse(), 3); }); -} -//# sourceMappingURL=bgrToRgbTensor.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/bgrToRgbTensor.js.map b/build/es6/mtcnn/bgrToRgbTensor.js.map deleted file mode 100644 index 60ee7eda..00000000 --- a/build/es6/mtcnn/bgrToRgbTensor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bgrToRgbTensor.js","sourceRoot":"","sources":["../../../src/mtcnn/bgrToRgbTensor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,MAAM,UAAU,cAAc,CAAC,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 diff --git a/build/es6/mtcnn/config.d.ts b/build/es6/mtcnn/config.d.ts deleted file mode 100644 index 05a91437..00000000 --- a/build/es6/mtcnn/config.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const CELL_STRIDE = 2; -export declare const CELL_SIZE = 12; diff --git a/build/es6/mtcnn/config.js b/build/es6/mtcnn/config.js deleted file mode 100644 index 134cf10b..00000000 --- a/build/es6/mtcnn/config.js +++ /dev/null @@ -1,3 +0,0 @@ -export var CELL_STRIDE = 2; -export var CELL_SIZE = 12; -//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/config.js.map b/build/es6/mtcnn/config.js.map deleted file mode 100644 index cfc71d2c..00000000 --- a/build/es6/mtcnn/config.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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 diff --git a/build/es6/mtcnn/extractImagePatches.d.ts b/build/es6/mtcnn/extractImagePatches.d.ts deleted file mode 100644 index 4e43a1b6..00000000 --- a/build/es6/mtcnn/extractImagePatches.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { Box, IDimensions } from 'tfjs-image-recognition-base'; -export declare function extractImagePatches(img: HTMLCanvasElement, boxes: Box[], { width, height }: IDimensions): Promise; diff --git a/build/es6/mtcnn/extractImagePatches.js b/build/es6/mtcnn/extractImagePatches.js deleted file mode 100644 index 5d1e132e..00000000 --- a/build/es6/mtcnn/extractImagePatches.js +++ /dev/null @@ -1,52 +0,0 @@ -import { __awaiter, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { createCanvas, createCanvasFromMedia, env, getContext2dOrThrow, } from 'tfjs-image-recognition-base'; -import { normalize } from './normalize'; -export function extractImagePatches(img, boxes, _a) { - var width = _a.width, height = _a.height; - return __awaiter(this, void 0, void 0, function () { - var imgCtx, bitmaps, imagePatchesDatas; - var _this = this; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - imgCtx = getContext2dOrThrow(img); - return [4 /*yield*/, Promise.all(boxes.map(function (box) { return __awaiter(_this, void 0, void 0, function () { - var _a, y, ey, x, ex, fromX, fromY, imgData; - return __generator(this, function (_b) { - _a = box.padAtBorders(img.height, img.width), y = _a.y, ey = _a.ey, x = _a.x, ex = _a.ex; - fromX = x - 1; - fromY = y - 1; - imgData = imgCtx.getImageData(fromX, fromY, (ex - fromX), (ey - fromY)); - return [2 /*return*/, env.isNodejs() ? createCanvasFromMedia(imgData) : createImageBitmap(imgData)]; - }); - }); }))]; - case 1: - bitmaps = _b.sent(); - imagePatchesDatas = []; - bitmaps.forEach(function (bmp) { - var patch = createCanvas({ width: width, height: height }); - var patchCtx = getContext2dOrThrow(patch); - patchCtx.drawImage(bmp, 0, 0, width, height); - var data = patchCtx.getImageData(0, 0, width, height).data; - var currData = []; - // RGBA -> BGR - for (var i = 0; i < data.length; i += 4) { - currData.push(data[i + 2]); - currData.push(data[i + 1]); - currData.push(data[i]); - } - imagePatchesDatas.push(currData); - }); - return [2 /*return*/, imagePatchesDatas.map(function (data) { - var t = tf.tidy(function () { - var imagePatchTensor = tf.transpose(tf.tensor4d(data, [1, width, height, 3]), [0, 2, 1, 3]).toFloat(); - return normalize(imagePatchTensor); - }); - return t; - })]; - } - }); - }); -} -//# sourceMappingURL=extractImagePatches.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/extractImagePatches.js.map b/build/es6/mtcnn/extractImagePatches.js.map deleted file mode 100644 index 4534abd1..00000000 --- a/build/es6/mtcnn/extractImagePatches.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractImagePatches.js","sourceRoot":"","sources":["../../../src/mtcnn/extractImagePatches.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAEL,YAAY,EACZ,qBAAqB,EACrB,GAAG,EACH,mBAAmB,GAEpB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,UAAgB,mBAAmB,CACvC,GAAsB,EACtB,KAAY,EACZ,EAA8B;QAA5B,gBAAK,EAAE,kBAAM;;;;;;;oBAIT,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;oBAEvB,qBAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAM,GAAG;;;gCAE7C,KAAmB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAxD,CAAC,OAAA,EAAE,EAAE,QAAA,EAAE,CAAC,OAAA,EAAE,EAAE,QAAA,CAA4C;gCAE1D,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;gCACb,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;gCACb,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;gCAE7E,sBAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAA;;6BACpF,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 diff --git a/build/es6/mtcnn/extractParams.d.ts b/build/es6/mtcnn/extractParams.d.ts deleted file mode 100644 index 14d45d2b..00000000 --- a/build/es6/mtcnn/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/mtcnn/extractParams.js b/build/es6/mtcnn/extractParams.js deleted file mode 100644 index e7093243..00000000 --- a/build/es6/mtcnn/extractParams.js +++ /dev/null @@ -1,65 +0,0 @@ -import { __assign } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -function extractorsFactory(extractWeights, paramMappings) { - var extractConvParams = TfjsImageRecognitionBase.extractConvParamsFactory(extractWeights, paramMappings); - var extractFCParams = TfjsImageRecognitionBase.extractFCParamsFactory(extractWeights, paramMappings); - function extractPReluParams(size, paramPath) { - var alpha = tf.tensor1d(extractWeights(size)); - paramMappings.push({ paramPath: paramPath }); - return alpha; - } - function extractSharedParams(numFilters, mappedPrefix, isRnet) { - if (isRnet === void 0) { isRnet = false; } - var conv1 = extractConvParams(numFilters[0], numFilters[1], 3, mappedPrefix + "/conv1"); - var prelu1_alpha = extractPReluParams(numFilters[1], mappedPrefix + "/prelu1_alpha"); - var conv2 = extractConvParams(numFilters[1], numFilters[2], 3, mappedPrefix + "/conv2"); - var prelu2_alpha = extractPReluParams(numFilters[2], mappedPrefix + "/prelu2_alpha"); - var conv3 = extractConvParams(numFilters[2], numFilters[3], isRnet ? 2 : 3, mappedPrefix + "/conv3"); - var prelu3_alpha = extractPReluParams(numFilters[3], mappedPrefix + "/prelu3_alpha"); - return { conv1: conv1, prelu1_alpha: prelu1_alpha, conv2: conv2, prelu2_alpha: prelu2_alpha, conv3: conv3, prelu3_alpha: prelu3_alpha }; - } - function extractPNetParams() { - var sharedParams = extractSharedParams([3, 10, 16, 32], 'pnet'); - var conv4_1 = extractConvParams(32, 2, 1, 'pnet/conv4_1'); - var conv4_2 = extractConvParams(32, 4, 1, 'pnet/conv4_2'); - return __assign(__assign({}, sharedParams), { conv4_1: conv4_1, conv4_2: conv4_2 }); - } - function extractRNetParams() { - var sharedParams = extractSharedParams([3, 28, 48, 64], 'rnet', true); - var fc1 = extractFCParams(576, 128, 'rnet/fc1'); - var prelu4_alpha = extractPReluParams(128, 'rnet/prelu4_alpha'); - var fc2_1 = extractFCParams(128, 2, 'rnet/fc2_1'); - var fc2_2 = extractFCParams(128, 4, 'rnet/fc2_2'); - return __assign(__assign({}, sharedParams), { fc1: fc1, prelu4_alpha: prelu4_alpha, fc2_1: fc2_1, fc2_2: fc2_2 }); - } - function extractONetParams() { - var sharedParams = extractSharedParams([3, 32, 64, 64], 'onet'); - var conv4 = extractConvParams(64, 128, 2, 'onet/conv4'); - var prelu4_alpha = extractPReluParams(128, 'onet/prelu4_alpha'); - var fc1 = extractFCParams(1152, 256, 'onet/fc1'); - var prelu5_alpha = extractPReluParams(256, 'onet/prelu5_alpha'); - var fc2_1 = extractFCParams(256, 2, 'onet/fc2_1'); - var fc2_2 = extractFCParams(256, 4, 'onet/fc2_2'); - var fc2_3 = extractFCParams(256, 10, 'onet/fc2_3'); - return __assign(__assign({}, sharedParams), { conv4: conv4, prelu4_alpha: prelu4_alpha, fc1: fc1, prelu5_alpha: prelu5_alpha, fc2_1: fc2_1, fc2_2: fc2_2, fc2_3: fc2_3 }); - } - return { - extractPNetParams: extractPNetParams, - extractRNetParams: extractRNetParams, - extractONetParams: extractONetParams - }; -} -export function extractParams(weights) { - var _a = TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var paramMappings = []; - var _b = extractorsFactory(extractWeights, paramMappings), extractPNetParams = _b.extractPNetParams, extractRNetParams = _b.extractRNetParams, extractONetParams = _b.extractONetParams; - var pnet = extractPNetParams(); - var rnet = extractRNetParams(); - var onet = extractONetParams(); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { params: { pnet: pnet, rnet: rnet, onet: onet }, paramMappings: paramMappings }; -} -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/extractParams.js.map b/build/es6/mtcnn/extractParams.js.map deleted file mode 100644 index 3526e0c6..00000000 --- a/build/es6/mtcnn/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/mtcnn/extractParams.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/mtcnn/extractParamsFromWeigthMap.d.ts b/build/es6/mtcnn/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index 7bf5a66d..00000000 --- a/build/es6/mtcnn/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/mtcnn/extractParamsFromWeigthMap.js b/build/es6/mtcnn/extractParamsFromWeigthMap.js deleted file mode 100644 index 492f55c5..00000000 --- a/build/es6/mtcnn/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,67 +0,0 @@ -import { __assign } from "tslib"; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -function extractorsFactory(weightMap, paramMappings) { - var extractWeightEntry = TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - function extractConvParams(prefix) { - var filters = extractWeightEntry(prefix + "/weights", 4, prefix + "/filters"); - var bias = extractWeightEntry(prefix + "/bias", 1); - return { filters: filters, bias: bias }; - } - function extractFCParams(prefix) { - var weights = extractWeightEntry(prefix + "/weights", 2); - var bias = extractWeightEntry(prefix + "/bias", 1); - return { weights: weights, bias: bias }; - } - function extractPReluParams(paramPath) { - return extractWeightEntry(paramPath, 1); - } - function extractSharedParams(prefix) { - var conv1 = extractConvParams(prefix + "/conv1"); - var prelu1_alpha = extractPReluParams(prefix + "/prelu1_alpha"); - var conv2 = extractConvParams(prefix + "/conv2"); - var prelu2_alpha = extractPReluParams(prefix + "/prelu2_alpha"); - var conv3 = extractConvParams(prefix + "/conv3"); - var prelu3_alpha = extractPReluParams(prefix + "/prelu3_alpha"); - return { conv1: conv1, prelu1_alpha: prelu1_alpha, conv2: conv2, prelu2_alpha: prelu2_alpha, conv3: conv3, prelu3_alpha: prelu3_alpha }; - } - function extractPNetParams() { - var sharedParams = extractSharedParams('pnet'); - var conv4_1 = extractConvParams('pnet/conv4_1'); - var conv4_2 = extractConvParams('pnet/conv4_2'); - return __assign(__assign({}, sharedParams), { conv4_1: conv4_1, conv4_2: conv4_2 }); - } - function extractRNetParams() { - var sharedParams = extractSharedParams('rnet'); - var fc1 = extractFCParams('rnet/fc1'); - var prelu4_alpha = extractPReluParams('rnet/prelu4_alpha'); - var fc2_1 = extractFCParams('rnet/fc2_1'); - var fc2_2 = extractFCParams('rnet/fc2_2'); - return __assign(__assign({}, sharedParams), { fc1: fc1, prelu4_alpha: prelu4_alpha, fc2_1: fc2_1, fc2_2: fc2_2 }); - } - function extractONetParams() { - var sharedParams = extractSharedParams('onet'); - var conv4 = extractConvParams('onet/conv4'); - var prelu4_alpha = extractPReluParams('onet/prelu4_alpha'); - var fc1 = extractFCParams('onet/fc1'); - var prelu5_alpha = extractPReluParams('onet/prelu5_alpha'); - var fc2_1 = extractFCParams('onet/fc2_1'); - var fc2_2 = extractFCParams('onet/fc2_2'); - var fc2_3 = extractFCParams('onet/fc2_3'); - return __assign(__assign({}, sharedParams), { conv4: conv4, prelu4_alpha: prelu4_alpha, fc1: fc1, prelu5_alpha: prelu5_alpha, fc2_1: fc2_1, fc2_2: fc2_2, fc2_3: fc2_3 }); - } - return { - extractPNetParams: extractPNetParams, - extractRNetParams: extractRNetParams, - extractONetParams: extractONetParams - }; -} -export function extractParamsFromWeigthMap(weightMap) { - var paramMappings = []; - var _a = extractorsFactory(weightMap, paramMappings), extractPNetParams = _a.extractPNetParams, extractRNetParams = _a.extractRNetParams, extractONetParams = _a.extractONetParams; - var pnet = extractPNetParams(); - var rnet = extractRNetParams(); - var onet = extractONetParams(); - TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: { pnet: pnet, rnet: rnet, onet: onet }, paramMappings: paramMappings }; -} -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/extractParamsFromWeigthMap.js.map b/build/es6/mtcnn/extractParamsFromWeigthMap.js.map deleted file mode 100644 index 917b351c..00000000 --- a/build/es6/mtcnn/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/mtcnn/extractParamsFromWeigthMap.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/mtcnn/getSizesForScale.d.ts b/build/es6/mtcnn/getSizesForScale.d.ts deleted file mode 100644 index 4ab739a5..00000000 --- a/build/es6/mtcnn/getSizesForScale.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare function getSizesForScale(scale: number, [height, width]: number[]): { - height: number; - width: number; -}; diff --git a/build/es6/mtcnn/getSizesForScale.js b/build/es6/mtcnn/getSizesForScale.js deleted file mode 100644 index 9cad4651..00000000 --- a/build/es6/mtcnn/getSizesForScale.js +++ /dev/null @@ -1,8 +0,0 @@ -export function getSizesForScale(scale, _a) { - var height = _a[0], width = _a[1]; - return { - height: Math.floor(height * scale), - width: Math.floor(width * scale) - }; -} -//# sourceMappingURL=getSizesForScale.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/getSizesForScale.js.map b/build/es6/mtcnn/getSizesForScale.js.map deleted file mode 100644 index 7f75c5a4..00000000 --- a/build/es6/mtcnn/getSizesForScale.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"getSizesForScale.js","sourceRoot":"","sources":["../../../src/mtcnn/getSizesForScale.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,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 diff --git a/build/es6/mtcnn/index.d.ts b/build/es6/mtcnn/index.d.ts deleted file mode 100644 index 8e8e10ee..00000000 --- a/build/es6/mtcnn/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Mtcnn } from './Mtcnn'; -export * from './Mtcnn'; -export * from './MtcnnOptions'; -export declare function createMtcnn(weights: Float32Array): Mtcnn; diff --git a/build/es6/mtcnn/index.js b/build/es6/mtcnn/index.js deleted file mode 100644 index 1443d9b9..00000000 --- a/build/es6/mtcnn/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import { Mtcnn } from './Mtcnn'; -export * from './Mtcnn'; -export * from './MtcnnOptions'; -export function createMtcnn(weights) { - var net = new Mtcnn(); - net.extractWeights(weights); - return net; -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/index.js.map b/build/es6/mtcnn/index.js.map deleted file mode 100644 index 2f511479..00000000 --- a/build/es6/mtcnn/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mtcnn/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAE/B,MAAM,UAAU,WAAW,CAAC,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 diff --git a/build/es6/mtcnn/normalize.d.ts b/build/es6/mtcnn/normalize.d.ts deleted file mode 100644 index 1a14045d..00000000 --- a/build/es6/mtcnn/normalize.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export declare function normalize(x: tf.Tensor4D): tf.Tensor4D; diff --git a/build/es6/mtcnn/normalize.js b/build/es6/mtcnn/normalize.js deleted file mode 100644 index 4df55c9e..00000000 --- a/build/es6/mtcnn/normalize.js +++ /dev/null @@ -1,5 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export function normalize(x) { - return tf.tidy(function () { return tf.mul(tf.sub(x, tf.scalar(127.5)), tf.scalar(0.0078125)); }); -} -//# sourceMappingURL=normalize.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/normalize.js.map b/build/es6/mtcnn/normalize.js.map deleted file mode 100644 index 1fb16e6a..00000000 --- a/build/es6/mtcnn/normalize.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/mtcnn/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,MAAM,UAAU,SAAS,CAAC,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 diff --git a/build/es6/mtcnn/prelu.d.ts b/build/es6/mtcnn/prelu.d.ts deleted file mode 100644 index 3019168f..00000000 --- a/build/es6/mtcnn/prelu.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export declare function prelu(x: T, alpha: tf.Tensor1D): T; diff --git a/build/es6/mtcnn/prelu.js b/build/es6/mtcnn/prelu.js deleted file mode 100644 index 8ef03aa3..00000000 --- a/build/es6/mtcnn/prelu.js +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export function prelu(x, alpha) { - return tf.tidy(function () { - return tf.add(tf.relu(x), tf.mul(alpha, tf.neg(tf.relu(tf.neg(x))))); - }); -} -//# sourceMappingURL=prelu.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/prelu.js.map b/build/es6/mtcnn/prelu.js.map deleted file mode 100644 index 80bd7b02..00000000 --- a/build/es6/mtcnn/prelu.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"prelu.js","sourceRoot":"","sources":["../../../src/mtcnn/prelu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,MAAM,UAAU,KAAK,CAAsB,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 diff --git a/build/es6/mtcnn/pyramidDown.d.ts b/build/es6/mtcnn/pyramidDown.d.ts deleted file mode 100644 index 58073049..00000000 --- a/build/es6/mtcnn/pyramidDown.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function pyramidDown(minFaceSize: number, scaleFactor: number, dims: number[]): number[]; diff --git a/build/es6/mtcnn/pyramidDown.js b/build/es6/mtcnn/pyramidDown.js deleted file mode 100644 index 94eaac91..00000000 --- a/build/es6/mtcnn/pyramidDown.js +++ /dev/null @@ -1,15 +0,0 @@ -import { CELL_SIZE } from './config'; -export function pyramidDown(minFaceSize, scaleFactor, dims) { - var height = dims[0], width = dims[1]; - var m = CELL_SIZE / minFaceSize; - var scales = []; - var minLayer = Math.min(height, width) * m; - var exp = 0; - while (minLayer >= 12) { - scales.push(m * Math.pow(scaleFactor, exp)); - minLayer = minLayer * scaleFactor; - exp += 1; - } - return scales; -} -//# sourceMappingURL=pyramidDown.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/pyramidDown.js.map b/build/es6/mtcnn/pyramidDown.js.map deleted file mode 100644 index fd6df82c..00000000 --- a/build/es6/mtcnn/pyramidDown.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pyramidDown.js","sourceRoot":"","sources":["../../../src/mtcnn/pyramidDown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,UAAU,WAAW,CAAC,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 diff --git a/build/es6/mtcnn/sharedLayers.d.ts b/build/es6/mtcnn/sharedLayers.d.ts deleted file mode 100644 index afc63db2..00000000 --- a/build/es6/mtcnn/sharedLayers.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { SharedParams } from './types'; -export declare function sharedLayer(x: tf.Tensor4D, params: SharedParams, isPnet?: boolean): tf.Tensor; diff --git a/build/es6/mtcnn/sharedLayers.js b/build/es6/mtcnn/sharedLayers.js deleted file mode 100644 index 25f686b9..00000000 --- a/build/es6/mtcnn/sharedLayers.js +++ /dev/null @@ -1,18 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { prelu } from './prelu'; -export function sharedLayer(x, params, isPnet) { - if (isPnet === void 0) { isPnet = false; } - return tf.tidy(function () { - var out = TfjsImageRecognitionBase.convLayer(x, params.conv1, 'valid'); - out = prelu(out, params.prelu1_alpha); - out = tf.maxPool(out, isPnet ? [2, 2] : [3, 3], [2, 2], 'same'); - out = TfjsImageRecognitionBase.convLayer(out, params.conv2, 'valid'); - out = prelu(out, params.prelu2_alpha); - out = isPnet ? out : tf.maxPool(out, [3, 3], [2, 2], 'valid'); - out = TfjsImageRecognitionBase.convLayer(out, params.conv3, 'valid'); - out = prelu(out, params.prelu3_alpha); - return out; - }); -} -//# sourceMappingURL=sharedLayers.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/sharedLayers.js.map b/build/es6/mtcnn/sharedLayers.js.map deleted file mode 100644 index e486bc0a..00000000 --- a/build/es6/mtcnn/sharedLayers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sharedLayers.js","sourceRoot":"","sources":["../../../src/mtcnn/sharedLayers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,MAAM,UAAU,WAAW,CAAC,CAAc,EAAE,MAAoB,EAAE,MAAuB;IAAvB,uBAAA,EAAA,cAAuB;IACvF,OAAO,EAAE,CAAC,IAAI,CAAC;QAEb,IAAI,GAAG,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACtE,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,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACpE,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,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACpE,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 diff --git a/build/es6/mtcnn/stage1.d.ts b/build/es6/mtcnn/stage1.d.ts deleted file mode 100644 index f096cea1..00000000 --- a/build/es6/mtcnn/stage1.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { BoundingBox } from 'tfjs-image-recognition-base'; -import { PNetParams } from './types'; -export declare function stage1(imgTensor: tf.Tensor4D, scales: number[], scoreThreshold: number, params: PNetParams, stats: any): { - boxes: BoundingBox[]; - scores: number[]; -}; diff --git a/build/es6/mtcnn/stage1.js b/build/es6/mtcnn/stage1.js deleted file mode 100644 index 8fd1ae56..00000000 --- a/build/es6/mtcnn/stage1.js +++ /dev/null @@ -1,93 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { BoundingBox, nonMaxSuppression, Point } from 'tfjs-image-recognition-base'; -import { CELL_SIZE, CELL_STRIDE } from './config'; -import { getSizesForScale } from './getSizesForScale'; -import { MtcnnBox } from './MtcnnBox'; -import { normalize } from './normalize'; -import { PNet } from './PNet'; -function rescaleAndNormalize(x, scale) { - return tf.tidy(function () { - var _a = getSizesForScale(scale, x.shape.slice(1)), height = _a.height, width = _a.width; - var resized = tf.image.resizeBilinear(x, [height, width]); - var normalized = normalize(resized); - return tf.transpose(normalized, [0, 2, 1, 3]); - }); -} -function extractBoundingBoxes(scoresTensor, regionsTensor, scale, scoreThreshold) { - // TODO: fix this!, maybe better to use tf.gather here - var indices = []; - var scoresData = scoresTensor.arraySync(); - for (var y = 0; y < scoresTensor.shape[0]; y++) { - for (var x = 0; x < scoresTensor.shape[1]; x++) { - if (scoresData[y][x] >= scoreThreshold) { - indices.push(new Point(x, y)); - } - } - } - var boundingBoxes = indices.map(function (idx) { - 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 = scoresData[idx.y][idx.x]; - var regionsData = regionsTensor.arraySync(); - var region = new MtcnnBox(regionsData[idx.y][idx.x][0], regionsData[idx.y][idx.x][1], regionsData[idx.y][idx.x][2], regionsData[idx.y][idx.x][3]); - return { - cell: cell, - score: score, - region: region - }; - }); - return boundingBoxes; -} -export function stage1(imgTensor, scales, scoreThreshold, params, stats) { - stats.stage1 = []; - var pnetOutputs = scales.map(function (scale) { return tf.tidy(function () { - var statsForScale = { scale: scale }; - var resized = rescaleAndNormalize(imgTensor, scale); - var ts = Date.now(); - var _a = PNet(resized, params), prob = _a.prob, regions = _a.regions; - statsForScale.pnet = Date.now() - ts; - var scoresTensor = tf.unstack(tf.unstack(prob, 3)[1])[0]; - var regionsTensor = tf.unstack(regions)[0]; - return { - scoresTensor: scoresTensor, - regionsTensor: regionsTensor, - scale: scale, - statsForScale: statsForScale - }; - }); }); - var boxesForScale = pnetOutputs.map(function (_a) { - var scoresTensor = _a.scoresTensor, regionsTensor = _a.regionsTensor, scale = _a.scale, statsForScale = _a.statsForScale; - var boundingBoxes = extractBoundingBoxes(scoresTensor, regionsTensor, scale, scoreThreshold); - scoresTensor.dispose(); - regionsTensor.dispose(); - if (!boundingBoxes.length) { - stats.stage1.push(statsForScale); - return []; - } - var ts = Date.now(); - 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.numBoxes = indices.length; - stats.stage1.push(statsForScale); - return indices.map(function (boxIdx) { return boundingBoxes[boxIdx]; }); - }); - var allBoxes = boxesForScale.reduce(function (all, boxes) { return all.concat(boxes); }, []); - var finalBoxes = []; - var finalScores = []; - if (allBoxes.length > 0) { - var ts = Date.now(); - 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; - finalScores = indices.map(function (idx) { return allBoxes[idx].score; }); - finalBoxes = indices - .map(function (idx) { return allBoxes[idx]; }) - .map(function (_a) { - var cell = _a.cell, region = _a.region; - 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 { - boxes: finalBoxes, - scores: finalScores - }; -} -//# sourceMappingURL=stage1.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/stage1.js.map b/build/es6/mtcnn/stage1.js.map deleted file mode 100644 index 263983ed..00000000 --- a/build/es6/mtcnn/stage1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stage1.js","sourceRoot":"","sources":["../../../src/mtcnn/stage1.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/mtcnn/stage2.d.ts b/build/es6/mtcnn/stage2.d.ts deleted file mode 100644 index de3a4c61..00000000 --- a/build/es6/mtcnn/stage2.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Box } from 'tfjs-image-recognition-base'; -import { RNetParams } from './types'; -export declare function stage2(img: HTMLCanvasElement, inputBoxes: Box[], scoreThreshold: number, params: RNetParams, stats: any): Promise<{ - boxes: Box[]; - scores: number[]; -}>; diff --git a/build/es6/mtcnn/stage2.js b/build/es6/mtcnn/stage2.js deleted file mode 100644 index 09c105ea..00000000 --- a/build/es6/mtcnn/stage2.js +++ /dev/null @@ -1,67 +0,0 @@ -import { __awaiter, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { nonMaxSuppression } from 'tfjs-image-recognition-base'; -import { extractImagePatches } from './extractImagePatches'; -import { MtcnnBox } from './MtcnnBox'; -import { RNet } from './RNet'; -export function stage2(img, inputBoxes, scoreThreshold, params, stats) { - return __awaiter(this, void 0, void 0, function () { - var ts, rnetInputs, rnetOuts, scoresTensor, scores, _a, _b, indices, filteredBoxes, filteredScores, finalBoxes, finalScores, indicesNms, regions_1; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - ts = Date.now(); - return [4 /*yield*/, extractImagePatches(img, inputBoxes, { width: 24, height: 24 })]; - case 1: - rnetInputs = _c.sent(); - stats.stage2_extractImagePatches = Date.now() - ts; - ts = Date.now(); - rnetOuts = rnetInputs.map(function (rnetInput) { - var out = RNet(rnetInput, params); - rnetInput.dispose(); - return out; - }); - stats.stage2_rnet = Date.now() - ts; - scoresTensor = rnetOuts.length > 1 - ? tf.concat(rnetOuts.map(function (out) { return out.scores; })) - : rnetOuts[0].scores; - _b = (_a = Array).from; - return [4 /*yield*/, scoresTensor.data()]; - case 2: - scores = _b.apply(_a, [_c.sent()]); - scoresTensor.dispose(); - 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; - }); - filteredBoxes = indices.map(function (idx) { return inputBoxes[idx]; }); - filteredScores = indices.map(function (idx) { return scores[idx]; }); - finalBoxes = []; - finalScores = []; - if (filteredBoxes.length > 0) { - ts = Date.now(); - indicesNms = nonMaxSuppression(filteredBoxes, filteredScores, 0.7); - stats.stage2_nms = Date.now() - ts; - regions_1 = indicesNms.map(function (idx) { - var regionsData = rnetOuts[indices[idx]].regions.arraySync(); - return new MtcnnBox(regionsData[0][0], regionsData[0][1], regionsData[0][2], regionsData[0][3]); - }); - finalScores = indicesNms.map(function (idx) { return filteredScores[idx]; }); - finalBoxes = indicesNms.map(function (idx, i) { return filteredBoxes[idx].calibrate(regions_1[i]); }); - } - rnetOuts.forEach(function (t) { - t.regions.dispose(); - t.scores.dispose(); - }); - return [2 /*return*/, { - boxes: finalBoxes, - scores: finalScores - }]; - } - }); - }); -} -//# sourceMappingURL=stage2.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/stage2.js.map b/build/es6/mtcnn/stage2.js.map deleted file mode 100644 index 193a01ed..00000000 --- a/build/es6/mtcnn/stage2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stage2.js","sourceRoot":"","sources":["../../../src/mtcnn/stage2.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAO,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,MAAM,UAAgB,MAAM,CAC1B,GAAsB,EACtB,UAAiB,EACjB,cAAsB,EACtB,MAAkB,EAClB,KAAU;;;;;;oBAGN,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;oBACA,qBAAM,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAA;;oBAAlF,UAAU,GAAG,SAAqE;oBACxF,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAA;oBAElD,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;oBACT,QAAQ,GAAG,UAAU,CAAC,GAAG,CAC7B,UAAA,SAAS;wBACP,IAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;wBACnC,SAAS,CAAC,OAAO,EAAE,CAAA;wBACnB,OAAO,GAAG,CAAA;oBACZ,CAAC,CACF,CAAA;oBACD,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAA;oBAE7B,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;wBACtC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,MAAM,EAAV,CAAU,CAAC,CAAC;wBAC5C,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;oBACP,KAAA,CAAA,KAAA,KAAK,CAAA,CAAC,IAAI,CAAA;oBAAC,qBAAM,YAAY,CAAC,IAAI,EAAE,EAAA;;oBAA7C,MAAM,GAAG,cAAW,SAAyB,EAAC;oBACpD,YAAY,CAAC,OAAO,EAAE,CAAA;oBAEhB,OAAO,GAAG,MAAM;yBACnB,GAAG,CAAC,UAAC,KAAK,EAAE,GAAG,IAAK,OAAA,CAAC,EAAE,KAAK,OAAA,EAAE,GAAG,KAAA,EAAE,CAAC,EAAhB,CAAgB,CAAC;yBACrC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,GAAG,cAAc,EAAxB,CAAwB,CAAC;yBACrC,GAAG,CAAC,UAAC,EAAO;4BAAL,YAAG;wBAAO,OAAA,GAAG;oBAAH,CAAG,CAAC,CAAA;oBAElB,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,UAAU,CAAC,GAAG,CAAC,EAAf,CAAe,CAAC,CAAA;oBACnD,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,MAAM,CAAC,GAAG,CAAC,EAAX,CAAW,CAAC,CAAA;oBAElD,UAAU,GAAU,EAAE,CAAA;oBACtB,WAAW,GAAa,EAAE,CAAA;oBAE9B,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC5B,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;wBACT,UAAU,GAAG,iBAAiB,CAClC,aAAa,EACb,cAAc,EACd,GAAG,CACJ,CAAA;wBACD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAA;wBAE5B,YAAU,UAAU,CAAC,GAAG,CAAC,UAAA,GAAG;4BAC9B,IAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAA;4BAC9D,OAAO,IAAI,QAAQ,CACjB,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACjB,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACjB,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACjB,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAClB,CAAA;wBACH,CAAC,CACF,CAAA;wBAED,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,cAAc,CAAC,GAAG,CAAC,EAAnB,CAAmB,CAAC,CAAA;wBACxD,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,SAAO,CAAC,CAAC,CAAC,CAAC,EAAxC,CAAwC,CAAC,CAAA;qBAClF;oBAED,QAAQ,CAAC,OAAO,CAAC,UAAA,CAAC;wBAChB,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;wBACnB,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;oBACpB,CAAC,CAAC,CAAA;oBAEF,sBAAO;4BACL,KAAK,EAAE,UAAU;4BACjB,MAAM,EAAE,WAAW;yBACpB,EAAA;;;;CACF"} \ No newline at end of file diff --git a/build/es6/mtcnn/stage3.d.ts b/build/es6/mtcnn/stage3.d.ts deleted file mode 100644 index 607d3047..00000000 --- a/build/es6/mtcnn/stage3.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { BoundingBox, Box, Point } from 'tfjs-image-recognition-base'; -import { ONetParams } from './types'; -export declare function stage3(img: HTMLCanvasElement, inputBoxes: BoundingBox[], scoreThreshold: number, params: ONetParams, stats: any): Promise<{ - boxes: Box[]; - scores: number[]; - points: Point[][]; -}>; diff --git a/build/es6/mtcnn/stage3.js b/build/es6/mtcnn/stage3.js deleted file mode 100644 index 8aae3f29..00000000 --- a/build/es6/mtcnn/stage3.js +++ /dev/null @@ -1,77 +0,0 @@ -import { __awaiter, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { nonMaxSuppression, Point } from 'tfjs-image-recognition-base'; -import { extractImagePatches } from './extractImagePatches'; -import { MtcnnBox } from './MtcnnBox'; -import { ONet } from './ONet'; -export function stage3(img, inputBoxes, scoreThreshold, params, stats) { - return __awaiter(this, void 0, void 0, function () { - var ts, onetInputs, onetOuts, scoresTensor, scores, _a, _b, indices, filteredRegions, filteredBoxes, filteredScores, finalBoxes, finalScores, points, indicesNms; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - ts = Date.now(); - return [4 /*yield*/, 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(onetInput, params); - onetInput.dispose(); - return out; - }); - stats.stage3_onet = Date.now() - ts; - scoresTensor = onetOuts.length > 1 - ? 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(); - 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) { - var regionsData = onetOuts[idx].regions.arraySync(); - return new MtcnnBox(regionsData[0][0], regionsData[0][1], regionsData[0][2], regionsData[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 = nonMaxSuppression(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) { - var pointsData = onetOuts[idx].points.arraySync(); - return new Point(((pointsData[0][ptIdx] * (finalBoxes[i].width + 1)) + finalBoxes[i].left), ((pointsData[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 - }]; - } - }); - }); -} -//# sourceMappingURL=stage3.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/stage3.js.map b/build/es6/mtcnn/stage3.js.map deleted file mode 100644 index 7e10141b..00000000 --- a/build/es6/mtcnn/stage3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stage3.js","sourceRoot":"","sources":["../../../src/mtcnn/stage3.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/mtcnn/types.d.ts b/build/es6/mtcnn/types.d.ts deleted file mode 100644 index b7f89f6a..00000000 --- a/build/es6/mtcnn/types.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { FaceLandmarks5 } from '../classes/FaceLandmarks5'; -import { WithFaceDetection, WithFaceLandmarks } from '../factories'; -export declare type SharedParams = { - conv1: TfjsImageRecognitionBase.ConvParams; - prelu1_alpha: tf.Tensor1D; - conv2: TfjsImageRecognitionBase.ConvParams; - prelu2_alpha: tf.Tensor1D; - conv3: TfjsImageRecognitionBase.ConvParams; - prelu3_alpha: tf.Tensor1D; -}; -export declare type PNetParams = SharedParams & { - conv4_1: TfjsImageRecognitionBase.ConvParams; - conv4_2: TfjsImageRecognitionBase.ConvParams; -}; -export declare type RNetParams = SharedParams & { - fc1: TfjsImageRecognitionBase.FCParams; - prelu4_alpha: tf.Tensor1D; - fc2_1: TfjsImageRecognitionBase.FCParams; - fc2_2: TfjsImageRecognitionBase.FCParams; -}; -export declare type ONetParams = SharedParams & { - conv4: TfjsImageRecognitionBase.ConvParams; - prelu4_alpha: tf.Tensor1D; - fc1: TfjsImageRecognitionBase.FCParams; - prelu5_alpha: tf.Tensor1D; - fc2_1: TfjsImageRecognitionBase.FCParams; - fc2_2: TfjsImageRecognitionBase.FCParams; - fc2_3: TfjsImageRecognitionBase.FCParams; -}; -export declare type NetParams = { - pnet: PNetParams; - rnet: RNetParams; - onet: ONetParams; -}; -export declare type MtcnnResult = WithFaceLandmarks, FaceLandmarks5>; diff --git a/build/es6/mtcnn/types.js b/build/es6/mtcnn/types.js deleted file mode 100644 index 5b2306a4..00000000 --- a/build/es6/mtcnn/types.js +++ /dev/null @@ -1 +0,0 @@ -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/es6/mtcnn/types.js.map b/build/es6/mtcnn/types.js.map deleted file mode 100644 index a06d2049..00000000 --- a/build/es6/mtcnn/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mtcnn/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/es6/resizeResults.d.ts b/build/es6/resizeResults.d.ts deleted file mode 100644 index cf4f4952..00000000 --- a/build/es6/resizeResults.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { IDimensions } from 'tfjs-image-recognition-base'; -export declare function resizeResults(results: T, dimensions: IDimensions): T; diff --git a/build/es6/resizeResults.js b/build/es6/resizeResults.js deleted file mode 100644 index 8dbb6fa0..00000000 --- a/build/es6/resizeResults.js +++ /dev/null @@ -1,27 +0,0 @@ -import { Dimensions } from 'tfjs-image-recognition-base'; -import { FaceDetection } from './classes/FaceDetection'; -import { FaceLandmarks } from './classes/FaceLandmarks'; -import { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection'; -import { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks'; -export function resizeResults(results, dimensions) { - var _a = new Dimensions(dimensions.width, dimensions.height), width = _a.width, height = _a.height; - if (width <= 0 || height <= 0) { - throw new Error("resizeResults - invalid dimensions: " + JSON.stringify({ width: width, height: height })); - } - if (Array.isArray(results)) { - return results.map(function (obj) { return resizeResults(obj, { width: width, height: height }); }); - } - if (isWithFaceLandmarks(results)) { - var resizedDetection = results.detection.forSize(width, height); - var resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height); - return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks); - } - if (isWithFaceDetection(results)) { - return extendWithFaceDetection(results, results.detection.forSize(width, height)); - } - if (results instanceof FaceLandmarks || results instanceof FaceDetection) { - return results.forSize(width, height); - } - return results; -} -//# sourceMappingURL=resizeResults.js.map \ No newline at end of file diff --git a/build/es6/resizeResults.js.map b/build/es6/resizeResults.js.map deleted file mode 100644 index f7094dc9..00000000 --- a/build/es6/resizeResults.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"resizeResults.js","sourceRoot":"","sources":["../../src/resizeResults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE7F,MAAM,UAAU,aAAa,CAAI,OAAU,EAAE,UAAuB;IAE5D,IAAA,wDAAuE,EAArE,gBAAK,EAAE,kBAA8D,CAAA;IAE7E,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,yCAAuC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAG,CAAC,CAAA;KAC5F;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,aAAa,CAAC,GAAG,EAAE,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,EAArC,CAAqC,CAAa,CAAA;KAC7E;IAED,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAChC,IAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACjE,IAAM,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEpH,OAAO,uBAAuB,CAAC,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAA;KACrG;IAED,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAChC,OAAO,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;KAClF;IAED,IAAI,OAAO,YAAY,aAAa,IAAI,OAAO,YAAY,aAAa,EAAE;QACxE,OAAQ,OAAe,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;KAC/C;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"} \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/SsdMobilenetv1.d.ts b/build/es6/ssdMobilenetv1/SsdMobilenetv1.d.ts deleted file mode 100644 index 5551a4e9..00000000 --- a/build/es6/ssdMobilenetv1/SsdMobilenetv1.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { ISsdMobilenetv1Options } from './SsdMobilenetv1Options'; -import { NetParams } from './types'; -export declare class SsdMobilenetv1 extends NeuralNetwork { - constructor(); - forwardInput(input: NetInput): { - boxes: tf.Tensor[]; - scores: tf.Tensor[]; - }; - forward(input: TNetInput): Promise<{ - boxes: tf.Tensor[]; - scores: tf.Tensor[]; - }>; - locateFaces(input: TNetInput, options?: ISsdMobilenetv1Options): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: import("tfjs-image-recognition-base/build/commonjs/common").ParamMapping[]; - }; -} diff --git a/build/es6/ssdMobilenetv1/SsdMobilenetv1.js b/build/es6/ssdMobilenetv1/SsdMobilenetv1.js deleted file mode 100644 index 2d6ad1aa..00000000 --- a/build/es6/ssdMobilenetv1/SsdMobilenetv1.js +++ /dev/null @@ -1,106 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { NeuralNetwork, Rect, toNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes/FaceDetection'; -import { extractParams } from './extractParams'; -import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; -import { mobileNetV1 } from './mobileNetV1'; -import { nonMaxSuppression } from './nonMaxSuppression'; -import { outputLayer } from './outputLayer'; -import { predictionLayer } from './predictionLayer'; -import { SsdMobilenetv1Options } from './SsdMobilenetv1Options'; -var SsdMobilenetv1 = /** @class */ (function (_super) { - __extends(SsdMobilenetv1, _super); - function SsdMobilenetv1() { - return _super.call(this, 'SsdMobilenetv1') || this; - } - SsdMobilenetv1.prototype.forwardInput = function (input) { - var params = this.params; - if (!params) { - throw new Error('SsdMobilenetv1 - load model before inference'); - } - return tf.tidy(function () { - var batchTensor = input.toBatchTensor(512, false).toFloat(); - var x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)); - var features = mobileNetV1(x, params.mobilenetv1); - var _a = predictionLayer(features.out, features.conv11, params.prediction_layer), boxPredictions = _a.boxPredictions, classPredictions = _a.classPredictions; - return outputLayer(boxPredictions, classPredictions, params.output_layer); - }); - }; - SsdMobilenetv1.prototype.forward = function (input) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - SsdMobilenetv1.prototype.locateFaces = function (input, options) { - if (options === void 0) { options = {}; } - return __awaiter(this, void 0, void 0, function () { - var _a, maxResults, minConfidence, netInput, _b, _boxes, _scores, boxes, scores, i, scoresData, _c, _d, iouThreshold, indices, reshapedDims, inputSize, padX, padY, boxesData, results; - return __generator(this, function (_e) { - switch (_e.label) { - case 0: - _a = new SsdMobilenetv1Options(options), maxResults = _a.maxResults, minConfidence = _a.minConfidence; - return [4 /*yield*/, toNetInput(input)]; - case 1: - netInput = _e.sent(); - _b = this.forwardInput(netInput), _boxes = _b.boxes, _scores = _b.scores; - boxes = _boxes[0]; - scores = _scores[0]; - for (i = 1; i < _boxes.length; i++) { - _boxes[i].dispose(); - _scores[i].dispose(); - } - _d = (_c = Array).from; - return [4 /*yield*/, scores.data()]; - case 2: - scoresData = _d.apply(_c, [_e.sent()]); - iouThreshold = 0.5; - indices = nonMaxSuppression(boxes, scoresData, maxResults, iouThreshold, minConfidence); - reshapedDims = netInput.getReshapedInputDimensions(0); - inputSize = netInput.inputSize; - padX = inputSize / reshapedDims.width; - padY = inputSize / reshapedDims.height; - boxesData = boxes.arraySync(); - results = indices - .map(function (idx) { - var _a = [ - Math.max(0, boxesData[idx][0]), - Math.min(1.0, boxesData[idx][2]) - ].map(function (val) { return val * padY; }), top = _a[0], bottom = _a[1]; - var _b = [ - Math.max(0, boxesData[idx][1]), - Math.min(1.0, boxesData[idx][3]) - ].map(function (val) { return val * padX; }), left = _b[0], right = _b[1]; - return new FaceDetection(scoresData[idx], new Rect(left, top, right - left, bottom - top), { - height: netInput.getInputHeight(0), - width: netInput.getInputWidth(0) - }); - }); - boxes.dispose(); - scores.dispose(); - return [2 /*return*/, results]; - } - }); - }); - }; - SsdMobilenetv1.prototype.getDefaultModelName = function () { - return 'ssd_mobilenetv1_model'; - }; - SsdMobilenetv1.prototype.extractParamsFromWeigthMap = function (weightMap) { - return extractParamsFromWeigthMap(weightMap); - }; - SsdMobilenetv1.prototype.extractParams = function (weights) { - return extractParams(weights); - }; - return SsdMobilenetv1; -}(NeuralNetwork)); -export { SsdMobilenetv1 }; -//# sourceMappingURL=SsdMobilenetv1.js.map \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/SsdMobilenetv1.js.map b/build/es6/ssdMobilenetv1/SsdMobilenetv1.js.map deleted file mode 100644 index c3e7e5d3..00000000 --- a/build/es6/ssdMobilenetv1/SsdMobilenetv1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SsdMobilenetv1.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/SsdMobilenetv1.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/SsdMobilenetv1Options.d.ts b/build/es6/ssdMobilenetv1/SsdMobilenetv1Options.d.ts deleted file mode 100644 index bf75021c..00000000 --- a/build/es6/ssdMobilenetv1/SsdMobilenetv1Options.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface ISsdMobilenetv1Options { - minConfidence?: number; - maxResults?: number; -} -export declare class SsdMobilenetv1Options { - protected _name: string; - private _minConfidence; - private _maxResults; - constructor({ minConfidence, maxResults }?: ISsdMobilenetv1Options); - readonly minConfidence: number; - readonly maxResults: number; -} diff --git a/build/es6/ssdMobilenetv1/SsdMobilenetv1Options.js b/build/es6/ssdMobilenetv1/SsdMobilenetv1Options.js deleted file mode 100644 index 411cdc43..00000000 --- a/build/es6/ssdMobilenetv1/SsdMobilenetv1Options.js +++ /dev/null @@ -1,27 +0,0 @@ -var SsdMobilenetv1Options = /** @class */ (function () { - function SsdMobilenetv1Options(_a) { - var _b = _a === void 0 ? {} : _a, minConfidence = _b.minConfidence, maxResults = _b.maxResults; - this._name = 'SsdMobilenetv1Options'; - this._minConfidence = minConfidence || 0.5; - this._maxResults = maxResults || 100; - if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) { - throw new Error(this._name + " - expected minConfidence to be a number between 0 and 1"); - } - if (typeof this._maxResults !== 'number') { - throw new Error(this._name + " - expected maxResults to be a number"); - } - } - Object.defineProperty(SsdMobilenetv1Options.prototype, "minConfidence", { - get: function () { return this._minConfidence; }, - enumerable: true, - configurable: true - }); - Object.defineProperty(SsdMobilenetv1Options.prototype, "maxResults", { - get: function () { return this._maxResults; }, - enumerable: true, - configurable: true - }); - return SsdMobilenetv1Options; -}()); -export { SsdMobilenetv1Options }; -//# sourceMappingURL=SsdMobilenetv1Options.js.map \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/SsdMobilenetv1Options.js.map b/build/es6/ssdMobilenetv1/SsdMobilenetv1Options.js.map deleted file mode 100644 index 2bc8a56c..00000000 --- a/build/es6/ssdMobilenetv1/SsdMobilenetv1Options.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"SsdMobilenetv1Options.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/SsdMobilenetv1Options.ts"],"names":[],"mappings":"AAKA;IAME,+BAAY,EAA0D;YAA1D,4BAA0D,EAAxD,gCAAa,EAAE,0BAAU;QAL7B,UAAK,GAAW,uBAAuB,CAAA;QAM/C,IAAI,CAAC,cAAc,GAAG,aAAa,IAAI,GAAG,CAAA;QAC1C,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,GAAG,CAAA;QAEpC,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,EAAE;YACnG,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,6DAA0D,CAAC,CAAA;SACzF;QAED,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;YACxC,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,0CAAuC,CAAC,CAAA;SACtE;IACH,CAAC;IAED,sBAAI,gDAAa;aAAjB,cAA8B,OAAO,IAAI,CAAC,cAAc,CAAA,CAAC,CAAC;;;OAAA;IAC1D,sBAAI,6CAAU;aAAd,cAA2B,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;;;OAAA;IACtD,4BAAC;AAAD,CAAC,AArBD,IAqBC"} \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/boxPredictionLayer.d.ts b/build/es6/ssdMobilenetv1/boxPredictionLayer.d.ts deleted file mode 100644 index bed8cd15..00000000 --- a/build/es6/ssdMobilenetv1/boxPredictionLayer.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { BoxPredictionParams } from './types'; -export declare function boxPredictionLayer(x: tf.Tensor4D, params: BoxPredictionParams): { - boxPredictionEncoding: tf.Tensor; - classPrediction: tf.Tensor; -}; diff --git a/build/es6/ssdMobilenetv1/boxPredictionLayer.js b/build/es6/ssdMobilenetv1/boxPredictionLayer.js deleted file mode 100644 index 30844d88..00000000 --- a/build/es6/ssdMobilenetv1/boxPredictionLayer.js +++ /dev/null @@ -1,14 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export function boxPredictionLayer(x, params) { - return tf.tidy(function () { - var batchSize = x.shape[0]; - var boxPredictionEncoding = tf.reshape(TfjsImageRecognitionBase.convLayer(x, params.box_encoding_predictor), [batchSize, -1, 1, 4]); - var classPrediction = tf.reshape(TfjsImageRecognitionBase.convLayer(x, params.class_predictor), [batchSize, -1, 3]); - return { - boxPredictionEncoding: boxPredictionEncoding, - classPrediction: classPrediction - }; - }); -} -//# sourceMappingURL=boxPredictionLayer.js.map \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/boxPredictionLayer.js.map b/build/es6/ssdMobilenetv1/boxPredictionLayer.js.map deleted file mode 100644 index 264009f1..00000000 --- a/build/es6/ssdMobilenetv1/boxPredictionLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"boxPredictionLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/boxPredictionLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAKvE,MAAM,UAAU,kBAAkB,CAChC,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,wBAAwB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,EACpE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACtB,CAAA;QACD,IAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC,wBAAwB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,EAC7D,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 diff --git a/build/es6/ssdMobilenetv1/extractParams.d.ts b/build/es6/ssdMobilenetv1/extractParams.d.ts deleted file mode 100644 index 14d45d2b..00000000 --- a/build/es6/ssdMobilenetv1/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParams(weights: Float32Array): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/ssdMobilenetv1/extractParams.js b/build/es6/ssdMobilenetv1/extractParams.js deleted file mode 100644 index ec767ff1..00000000 --- a/build/es6/ssdMobilenetv1/extractParams.js +++ /dev/null @@ -1,159 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -function extractorsFactory(extractWeights, paramMappings) { - function extractDepthwiseConvParams(numChannels, mappedPrefix) { - var filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]); - var batch_norm_scale = tf.tensor1d(extractWeights(numChannels)); - var batch_norm_offset = tf.tensor1d(extractWeights(numChannels)); - var batch_norm_mean = tf.tensor1d(extractWeights(numChannels)); - var batch_norm_variance = tf.tensor1d(extractWeights(numChannels)); - paramMappings.push({ paramPath: mappedPrefix + "/filters" }, { paramPath: mappedPrefix + "/batch_norm_scale" }, { paramPath: mappedPrefix + "/batch_norm_offset" }, { paramPath: mappedPrefix + "/batch_norm_mean" }, { paramPath: mappedPrefix + "/batch_norm_variance" }); - return { - filters: filters, - batch_norm_scale: batch_norm_scale, - batch_norm_offset: batch_norm_offset, - batch_norm_mean: batch_norm_mean, - batch_norm_variance: batch_norm_variance - }; - } - function extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, isPointwiseConv) { - var filters = tf.tensor4d(extractWeights(channelsIn * channelsOut * filterSize * filterSize), [filterSize, filterSize, channelsIn, channelsOut]); - var bias = tf.tensor1d(extractWeights(channelsOut)); - paramMappings.push({ paramPath: mappedPrefix + "/filters" }, { paramPath: mappedPrefix + "/" + (isPointwiseConv ? 'batch_norm_offset' : 'bias') }); - return { filters: filters, bias: bias }; - } - function extractPointwiseConvParams(channelsIn, channelsOut, filterSize, mappedPrefix) { - var _a = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true), filters = _a.filters, bias = _a.bias; - return { - filters: filters, - batch_norm_offset: bias - }; - } - function extractConvPairParams(channelsIn, channelsOut, mappedPrefix) { - var depthwise_conv = extractDepthwiseConvParams(channelsIn, mappedPrefix + "/depthwise_conv"); - var pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, mappedPrefix + "/pointwise_conv"); - return { depthwise_conv: depthwise_conv, pointwise_conv: pointwise_conv }; - } - function extractMobilenetV1Params() { - var conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0'); - var conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1'); - var conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2'); - var conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3'); - var conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4'); - var conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5'); - var conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6'); - var conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7'); - var conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8'); - var conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9'); - var conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10'); - var conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11'); - var conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12'); - var conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13'); - return { - conv_0: conv_0, - conv_1: conv_1, - conv_2: conv_2, - conv_3: conv_3, - conv_4: conv_4, - conv_5: conv_5, - conv_6: conv_6, - conv_7: conv_7, - conv_8: conv_8, - conv_9: conv_9, - conv_10: conv_10, - conv_11: conv_11, - conv_12: conv_12, - conv_13: conv_13 - }; - } - function extractPredictionLayerParams() { - var conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0'); - var conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1'); - var conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2'); - var conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3'); - var conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4'); - var conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5'); - var conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6'); - var conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7'); - var box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor'); - var class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor'); - var box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor'); - var class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor'); - var box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor'); - var class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor'); - var box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor'); - var class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor'); - var box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor'); - var class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor'); - var box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor'); - var class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor'); - var box_predictor_0 = { - box_encoding_predictor: box_encoding_0_predictor, - class_predictor: class_predictor_0 - }; - var box_predictor_1 = { - box_encoding_predictor: box_encoding_1_predictor, - class_predictor: class_predictor_1 - }; - var box_predictor_2 = { - box_encoding_predictor: box_encoding_2_predictor, - class_predictor: class_predictor_2 - }; - var box_predictor_3 = { - box_encoding_predictor: box_encoding_3_predictor, - class_predictor: class_predictor_3 - }; - var box_predictor_4 = { - box_encoding_predictor: box_encoding_4_predictor, - class_predictor: class_predictor_4 - }; - var box_predictor_5 = { - box_encoding_predictor: box_encoding_5_predictor, - class_predictor: class_predictor_5 - }; - return { - conv_0: conv_0, - conv_1: conv_1, - conv_2: conv_2, - conv_3: conv_3, - conv_4: conv_4, - conv_5: conv_5, - conv_6: conv_6, - conv_7: conv_7, - box_predictor_0: box_predictor_0, - box_predictor_1: box_predictor_1, - box_predictor_2: box_predictor_2, - box_predictor_3: box_predictor_3, - box_predictor_4: box_predictor_4, - box_predictor_5: box_predictor_5 - }; - } - return { - extractMobilenetV1Params: extractMobilenetV1Params, - extractPredictionLayerParams: extractPredictionLayerParams - }; -} -export function extractParams(weights) { - var paramMappings = []; - var _a = TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var _b = extractorsFactory(extractWeights, paramMappings), extractMobilenetV1Params = _b.extractMobilenetV1Params, extractPredictionLayerParams = _b.extractPredictionLayerParams; - var mobilenetv1 = extractMobilenetV1Params(); - var prediction_layer = extractPredictionLayerParams(); - var extra_dim = tf.tensor3d(extractWeights(5118 * 4), [1, 5118, 4]); - var output_layer = { - extra_dim: extra_dim - }; - paramMappings.push({ paramPath: 'output_layer/extra_dim' }); - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { - params: { - mobilenetv1: mobilenetv1, - prediction_layer: prediction_layer, - output_layer: output_layer - }, - paramMappings: paramMappings - }; -} -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/extractParams.js.map b/build/es6/ssdMobilenetv1/extractParams.js.map deleted file mode 100644 index 108d3168..00000000 --- a/build/es6/ssdMobilenetv1/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/extractParams.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts b/build/es6/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index 7bf5a66d..00000000 --- a/build/es6/ssdMobilenetv1/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { NetParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/ssdMobilenetv1/extractParamsFromWeigthMap.js b/build/es6/ssdMobilenetv1/extractParamsFromWeigthMap.js deleted file mode 100644 index 37ed358a..00000000 --- a/build/es6/ssdMobilenetv1/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,99 +0,0 @@ -import { isTensor3D, TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -function extractorsFactory(weightMap, paramMappings) { - var extractWeightEntry = TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - function extractPointwiseConvParams(prefix, idx, mappedPrefix) { - var filters = extractWeightEntry(prefix + "/Conv2d_" + idx + "_pointwise/weights", 4, mappedPrefix + "/filters"); - var batch_norm_offset = extractWeightEntry(prefix + "/Conv2d_" + idx + "_pointwise/convolution_bn_offset", 1, mappedPrefix + "/batch_norm_offset"); - return { filters: filters, batch_norm_offset: batch_norm_offset }; - } - function extractConvPairParams(idx) { - var mappedPrefix = "mobilenetv1/conv_" + idx; - var prefixDepthwiseConv = "MobilenetV1/Conv2d_" + idx + "_depthwise"; - var mappedPrefixDepthwiseConv = mappedPrefix + "/depthwise_conv"; - var mappedPrefixPointwiseConv = mappedPrefix + "/pointwise_conv"; - var filters = extractWeightEntry(prefixDepthwiseConv + "/depthwise_weights", 4, mappedPrefixDepthwiseConv + "/filters"); - var batch_norm_scale = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/gamma", 1, mappedPrefixDepthwiseConv + "/batch_norm_scale"); - var batch_norm_offset = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/beta", 1, mappedPrefixDepthwiseConv + "/batch_norm_offset"); - var batch_norm_mean = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/moving_mean", 1, mappedPrefixDepthwiseConv + "/batch_norm_mean"); - var batch_norm_variance = extractWeightEntry(prefixDepthwiseConv + "/BatchNorm/moving_variance", 1, mappedPrefixDepthwiseConv + "/batch_norm_variance"); - return { - depthwise_conv: { - filters: filters, - batch_norm_scale: batch_norm_scale, - batch_norm_offset: batch_norm_offset, - batch_norm_mean: batch_norm_mean, - batch_norm_variance: batch_norm_variance - }, - pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv) - }; - } - function extractMobilenetV1Params() { - return { - conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'), - conv_1: extractConvPairParams(1), - conv_2: extractConvPairParams(2), - conv_3: extractConvPairParams(3), - conv_4: extractConvPairParams(4), - conv_5: extractConvPairParams(5), - conv_6: extractConvPairParams(6), - conv_7: extractConvPairParams(7), - conv_8: extractConvPairParams(8), - conv_9: extractConvPairParams(9), - conv_10: extractConvPairParams(10), - conv_11: extractConvPairParams(11), - conv_12: extractConvPairParams(12), - conv_13: extractConvPairParams(13) - }; - } - function extractConvParams(prefix, mappedPrefix) { - var filters = extractWeightEntry(prefix + "/weights", 4, mappedPrefix + "/filters"); - var bias = extractWeightEntry(prefix + "/biases", 1, mappedPrefix + "/bias"); - return { filters: filters, bias: bias }; - } - function extractBoxPredictorParams(idx) { - var box_encoding_predictor = extractConvParams("Prediction/BoxPredictor_" + idx + "/BoxEncodingPredictor", "prediction_layer/box_predictor_" + idx + "/box_encoding_predictor"); - var class_predictor = extractConvParams("Prediction/BoxPredictor_" + idx + "/ClassPredictor", "prediction_layer/box_predictor_" + idx + "/class_predictor"); - return { box_encoding_predictor: box_encoding_predictor, class_predictor: class_predictor }; - } - function extractPredictionLayerParams() { - return { - conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'), - conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'), - conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'), - conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'), - conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'), - conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'), - conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'), - conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'), - box_predictor_0: extractBoxPredictorParams(0), - box_predictor_1: extractBoxPredictorParams(1), - box_predictor_2: extractBoxPredictorParams(2), - box_predictor_3: extractBoxPredictorParams(3), - box_predictor_4: extractBoxPredictorParams(4), - box_predictor_5: extractBoxPredictorParams(5) - }; - } - return { - extractMobilenetV1Params: extractMobilenetV1Params, - extractPredictionLayerParams: extractPredictionLayerParams - }; -} -export function extractParamsFromWeigthMap(weightMap) { - var paramMappings = []; - var _a = extractorsFactory(weightMap, paramMappings), extractMobilenetV1Params = _a.extractMobilenetV1Params, extractPredictionLayerParams = _a.extractPredictionLayerParams; - var extra_dim = weightMap['Output/extra_dim']; - paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' }); - if (!isTensor3D(extra_dim)) { - throw new Error("expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have " + extra_dim); - } - var params = { - mobilenetv1: extractMobilenetV1Params(), - prediction_layer: extractPredictionLayerParams(), - output_layer: { - extra_dim: extra_dim - } - }; - TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: params, paramMappings: paramMappings }; -} -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/extractParamsFromWeigthMap.js.map b/build/es6/ssdMobilenetv1/extractParamsFromWeigthMap.js.map deleted file mode 100644 index cf2bfadc..00000000 --- a/build/es6/ssdMobilenetv1/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/index.d.ts b/build/es6/ssdMobilenetv1/index.d.ts deleted file mode 100644 index b83f4792..00000000 --- a/build/es6/ssdMobilenetv1/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { SsdMobilenetv1 } from './SsdMobilenetv1'; -export * from './SsdMobilenetv1'; -export * from './SsdMobilenetv1Options'; -export declare function createSsdMobilenetv1(weights: Float32Array): SsdMobilenetv1; -export declare function createFaceDetectionNet(weights: Float32Array): SsdMobilenetv1; -export declare class FaceDetectionNet extends SsdMobilenetv1 { -} diff --git a/build/es6/ssdMobilenetv1/index.js b/build/es6/ssdMobilenetv1/index.js deleted file mode 100644 index 17726dd1..00000000 --- a/build/es6/ssdMobilenetv1/index.js +++ /dev/null @@ -1,22 +0,0 @@ -import { __extends } from "tslib"; -import { SsdMobilenetv1 } from './SsdMobilenetv1'; -export * from './SsdMobilenetv1'; -export * from './SsdMobilenetv1Options'; -export function createSsdMobilenetv1(weights) { - var net = new SsdMobilenetv1(); - net.extractWeights(weights); - return net; -} -export function createFaceDetectionNet(weights) { - return createSsdMobilenetv1(weights); -} -// alias for backward compatibily -var FaceDetectionNet = /** @class */ (function (_super) { - __extends(FaceDetectionNet, _super); - function FaceDetectionNet() { - return _super !== null && _super.apply(this, arguments) || this; - } - return FaceDetectionNet; -}(SsdMobilenetv1)); -export { FaceDetectionNet }; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/index.js.map b/build/es6/ssdMobilenetv1/index.js.map deleted file mode 100644 index b1e0958c..00000000 --- a/build/es6/ssdMobilenetv1/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AAExC,MAAM,UAAU,oBAAoB,CAAC,OAAqB;IACxD,IAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAA;IAChC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAqB;IAC1D,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC;AAED,iCAAiC;AACjC;IAAsC,oCAAc;IAApD;;IAAsD,CAAC;IAAD,uBAAC;AAAD,CAAC,AAAvD,CAAsC,cAAc,GAAG"} \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/mobileNetV1.d.ts b/build/es6/ssdMobilenetv1/mobileNetV1.d.ts deleted file mode 100644 index 05f5c5fe..00000000 --- a/build/es6/ssdMobilenetv1/mobileNetV1.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { MobileNetV1 } from './types'; -export declare function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params): { - out: tf.Tensor; - conv11: any; -}; diff --git a/build/es6/ssdMobilenetv1/mobileNetV1.js b/build/es6/ssdMobilenetv1/mobileNetV1.js deleted file mode 100644 index 04a28aea..00000000 --- a/build/es6/ssdMobilenetv1/mobileNetV1.js +++ /dev/null @@ -1,51 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { pointwiseConvLayer } from './pointwiseConvLayer'; -var epsilon = 0.0010000000474974513; -function depthwiseConvLayer(x, params, strides) { - return tf.tidy(function () { - var out = tf.depthwiseConv2d(x, params.filters, strides, 'same'); - out = tf.batchNorm(out, params.batch_norm_mean, params.batch_norm_variance, params.batch_norm_offset, params.batch_norm_scale, epsilon); - return tf.clipByValue(out, 0, 6); - }); -} -function getStridesForLayerIdx(layerIdx) { - return [2, 4, 6, 12].some(function (idx) { return idx === layerIdx; }) ? [2, 2] : [1, 1]; -} -export function mobileNetV1(x, params) { - return tf.tidy(function () { - var conv11 = null; - var out = pointwiseConvLayer(x, params.conv_0, [2, 2]); - var convPairParams = [ - params.conv_1, - params.conv_2, - params.conv_3, - params.conv_4, - params.conv_5, - params.conv_6, - params.conv_7, - params.conv_8, - params.conv_9, - params.conv_10, - params.conv_11, - params.conv_12, - params.conv_13 - ]; - convPairParams.forEach(function (param, i) { - var layerIdx = i + 1; - var depthwiseConvStrides = getStridesForLayerIdx(layerIdx); - out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides); - out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]); - if (layerIdx === 11) { - conv11 = out; - } - }); - if (conv11 === null) { - throw new Error('mobileNetV1 - output of conv layer 11 is null'); - } - return { - out: out, - conv11: conv11 - }; - }); -} -//# sourceMappingURL=mobileNetV1.js.map \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/mobileNetV1.js.map b/build/es6/ssdMobilenetv1/mobileNetV1.js.map deleted file mode 100644 index 0a990d19..00000000 --- a/build/es6/ssdMobilenetv1/mobileNetV1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"mobileNetV1.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/mobileNetV1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,IAAM,OAAO,GAAG,qBAAqB,CAAA;AAErC,SAAS,kBAAkB,CACzB,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,SAAS,CAChB,GAAG,EACH,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,mBAAmB,EAC1B,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,gBAAgB,EACvB,OAAO,CACR,CAAA;QACD,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAElC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,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,UAAU,WAAW,CAAC,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 diff --git a/build/es6/ssdMobilenetv1/nonMaxSuppression.d.ts b/build/es6/ssdMobilenetv1/nonMaxSuppression.d.ts deleted file mode 100644 index 6b215a26..00000000 --- a/build/es6/ssdMobilenetv1/nonMaxSuppression.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export declare function nonMaxSuppression(boxes: tf.Tensor2D, scores: number[], maxOutputSize: number, iouThreshold: number, scoreThreshold: number): number[]; diff --git a/build/es6/ssdMobilenetv1/nonMaxSuppression.js b/build/es6/ssdMobilenetv1/nonMaxSuppression.js deleted file mode 100644 index f3d248d6..00000000 --- a/build/es6/ssdMobilenetv1/nonMaxSuppression.js +++ /dev/null @@ -1,54 +0,0 @@ -export function nonMaxSuppression(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) { - var numBoxes = boxes.shape[0]; - var outputSize = Math.min(maxOutputSize, numBoxes); - var candidates = scores - .map(function (score, boxIndex) { return ({ score: score, boxIndex: boxIndex }); }) - .filter(function (c) { return c.score > scoreThreshold; }) - .sort(function (c1, c2) { return c2.score - c1.score; }); - var suppressFunc = function (x) { return x <= iouThreshold ? 1 : 0; }; - var selected = []; - candidates.forEach(function (c) { - if (selected.length >= outputSize) { - return; - } - var originalScore = c.score; - for (var j = selected.length - 1; j >= 0; --j) { - var iou = IOU(boxes, c.boxIndex, selected[j]); - if (iou === 0.0) { - continue; - } - c.score *= suppressFunc(iou); - if (c.score <= scoreThreshold) { - break; - } - } - if (originalScore === c.score) { - selected.push(c.boxIndex); - } - }); - return selected; -} -function IOU(boxes, i, j) { - var boxesData = boxes.arraySync(); - var yminI = Math.min(boxesData[i][0], boxesData[i][2]); - var xminI = Math.min(boxesData[i][1], boxesData[i][3]); - var ymaxI = Math.max(boxesData[i][0], boxesData[i][2]); - var xmaxI = Math.max(boxesData[i][1], boxesData[i][3]); - var yminJ = Math.min(boxesData[j][0], boxesData[j][2]); - var xminJ = Math.min(boxesData[j][1], boxesData[j][3]); - var ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]); - var xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]); - var areaI = (ymaxI - yminI) * (xmaxI - xminI); - var areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ); - if (areaI <= 0 || areaJ <= 0) { - return 0.0; - } - var intersectionYmin = Math.max(yminI, yminJ); - var intersectionXmin = Math.max(xminI, xminJ); - var intersectionYmax = Math.min(ymaxI, ymaxJ); - var intersectionXmax = Math.min(xmaxI, xmaxJ); - var intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0) * - Math.max(intersectionXmax - intersectionXmin, 0.0); - return intersectionArea / (areaI + areaJ - intersectionArea); -} -//# sourceMappingURL=nonMaxSuppression.js.map \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/nonMaxSuppression.js.map b/build/es6/ssdMobilenetv1/nonMaxSuppression.js.map deleted file mode 100644 index 8e9b4470..00000000 --- a/build/es6/ssdMobilenetv1/nonMaxSuppression.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"nonMaxSuppression.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/nonMaxSuppression.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/outputLayer.d.ts b/build/es6/ssdMobilenetv1/outputLayer.d.ts deleted file mode 100644 index 9ce8d135..00000000 --- a/build/es6/ssdMobilenetv1/outputLayer.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { OutputLayerParams } from './types'; -export declare function outputLayer(boxPredictions: tf.Tensor4D, classPredictions: tf.Tensor4D, params: OutputLayerParams): { - boxes: tf.Tensor[]; - scores: tf.Tensor[]; -}; diff --git a/build/es6/ssdMobilenetv1/outputLayer.js b/build/es6/ssdMobilenetv1/outputLayer.js deleted file mode 100644 index ebae3195..00000000 --- a/build/es6/ssdMobilenetv1/outputLayer.js +++ /dev/null @@ -1,47 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -function getCenterCoordinatesAndSizesLayer(x) { - var vec = tf.unstack(tf.transpose(x, [1, 0])); - var sizes = [ - tf.sub(vec[2], vec[0]), - tf.sub(vec[3], vec[1]) - ]; - var centers = [ - tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))), - tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))) - ]; - return { - sizes: sizes, - centers: centers - }; -} -function decodeBoxesLayer(x0, x1) { - var _a = getCenterCoordinatesAndSizesLayer(x0), sizes = _a.sizes, centers = _a.centers; - var vec = tf.unstack(tf.transpose(x1, [1, 0])); - var div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2)); - var add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]); - var div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2)); - var add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]); - return tf.transpose(tf.stack([ - tf.sub(add0_out, div0_out), - tf.sub(add1_out, div1_out), - tf.add(add0_out, div0_out), - tf.add(add1_out, div1_out) - ]), [1, 0]); -} -export function outputLayer(boxPredictions, classPredictions, params) { - return tf.tidy(function () { - var batchSize = boxPredictions.shape[0]; - var boxes = decodeBoxesLayer(tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]), tf.reshape(boxPredictions, [-1, 4])); - boxes = tf.reshape(boxes, [batchSize, (boxes.shape[0] / batchSize), 4]); - var scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1])); - var scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]); - scores = tf.reshape(scores, [batchSize, scores.shape[1]]); - var boxesByBatch = tf.unstack(boxes); - var scoresByBatch = tf.unstack(scores); - return { - boxes: boxesByBatch, - scores: scoresByBatch - }; - }); -} -//# sourceMappingURL=outputLayer.js.map \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/outputLayer.js.map b/build/es6/ssdMobilenetv1/outputLayer.js.map deleted file mode 100644 index f2e074ee..00000000 --- a/build/es6/ssdMobilenetv1/outputLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"outputLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/outputLayer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/pointwiseConvLayer.d.ts b/build/es6/ssdMobilenetv1/pointwiseConvLayer.d.ts deleted file mode 100644 index f7a92d55..00000000 --- a/build/es6/ssdMobilenetv1/pointwiseConvLayer.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { PointwiseConvParams } from './types'; -export declare function pointwiseConvLayer(x: tf.Tensor4D, params: PointwiseConvParams, strides: [number, number]): tf.Tensor; diff --git a/build/es6/ssdMobilenetv1/pointwiseConvLayer.js b/build/es6/ssdMobilenetv1/pointwiseConvLayer.js deleted file mode 100644 index 41845f29..00000000 --- a/build/es6/ssdMobilenetv1/pointwiseConvLayer.js +++ /dev/null @@ -1,9 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -export function pointwiseConvLayer(x, params, strides) { - return tf.tidy(function () { - var out = tf.conv2d(x, params.filters, strides, 'same'); - out = tf.add(out, params.batch_norm_offset); - return tf.clipByValue(out, 0, 6); - }); -} -//# sourceMappingURL=pointwiseConvLayer.js.map \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/pointwiseConvLayer.js.map b/build/es6/ssdMobilenetv1/pointwiseConvLayer.js.map deleted file mode 100644 index a494c41d..00000000 --- a/build/es6/ssdMobilenetv1/pointwiseConvLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pointwiseConvLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/pointwiseConvLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI5C,MAAM,UAAU,kBAAkB,CAChC,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 diff --git a/build/es6/ssdMobilenetv1/predictionLayer.d.ts b/build/es6/ssdMobilenetv1/predictionLayer.d.ts deleted file mode 100644 index 3f136062..00000000 --- a/build/es6/ssdMobilenetv1/predictionLayer.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { PredictionLayerParams } from './types'; -export declare function predictionLayer(x: tf.Tensor4D, conv11: tf.Tensor4D, params: PredictionLayerParams): { - boxPredictions: tf.Tensor; - classPredictions: tf.Tensor; -}; diff --git a/build/es6/ssdMobilenetv1/predictionLayer.js b/build/es6/ssdMobilenetv1/predictionLayer.js deleted file mode 100644 index 9ebad6bb..00000000 --- a/build/es6/ssdMobilenetv1/predictionLayer.js +++ /dev/null @@ -1,42 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { boxPredictionLayer } from './boxPredictionLayer'; -import { pointwiseConvLayer } from './pointwiseConvLayer'; -export function predictionLayer(x, conv11, params) { - return tf.tidy(function () { - var conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]); - var conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]); - var conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]); - var conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]); - var conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]); - var conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]); - var conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]); - var conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]); - var boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0); - var boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1); - var boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2); - var boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3); - var boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4); - var boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5); - var boxPredictions = tf.concat([ - boxPrediction0.boxPredictionEncoding, - boxPrediction1.boxPredictionEncoding, - boxPrediction2.boxPredictionEncoding, - boxPrediction3.boxPredictionEncoding, - boxPrediction4.boxPredictionEncoding, - boxPrediction5.boxPredictionEncoding - ], 1); - var classPredictions = tf.concat([ - boxPrediction0.classPrediction, - boxPrediction1.classPrediction, - boxPrediction2.classPrediction, - boxPrediction3.classPrediction, - boxPrediction4.classPrediction, - boxPrediction5.classPrediction - ], 1); - return { - boxPredictions: boxPredictions, - classPredictions: classPredictions - }; - }); -} -//# sourceMappingURL=predictionLayer.js.map \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/predictionLayer.js.map b/build/es6/ssdMobilenetv1/predictionLayer.js.map deleted file mode 100644 index bea02c16..00000000 --- a/build/es6/ssdMobilenetv1/predictionLayer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"predictionLayer.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/predictionLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,UAAU,eAAe,CAC7B,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 diff --git a/build/es6/ssdMobilenetv1/types.d.ts b/build/es6/ssdMobilenetv1/types.d.ts deleted file mode 100644 index c303dc6a..00000000 --- a/build/es6/ssdMobilenetv1/types.d.ts +++ /dev/null @@ -1,63 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export declare type PointwiseConvParams = { - filters: tf.Tensor4D; - batch_norm_offset: tf.Tensor1D; -}; -export declare namespace MobileNetV1 { - type DepthwiseConvParams = { - filters: tf.Tensor4D; - batch_norm_scale: tf.Tensor1D; - batch_norm_offset: tf.Tensor1D; - batch_norm_mean: tf.Tensor1D; - batch_norm_variance: tf.Tensor1D; - }; - type ConvPairParams = { - depthwise_conv: DepthwiseConvParams; - pointwise_conv: PointwiseConvParams; - }; - type Params = { - conv_0: PointwiseConvParams; - conv_1: ConvPairParams; - conv_2: ConvPairParams; - conv_3: ConvPairParams; - conv_4: ConvPairParams; - conv_5: ConvPairParams; - conv_6: ConvPairParams; - conv_7: ConvPairParams; - conv_8: ConvPairParams; - conv_9: ConvPairParams; - conv_10: ConvPairParams; - conv_11: ConvPairParams; - conv_12: ConvPairParams; - conv_13: ConvPairParams; - }; -} -export declare type BoxPredictionParams = { - box_encoding_predictor: TfjsImageRecognitionBase.ConvParams; - class_predictor: TfjsImageRecognitionBase.ConvParams; -}; -export declare type PredictionLayerParams = { - conv_0: PointwiseConvParams; - conv_1: PointwiseConvParams; - conv_2: PointwiseConvParams; - conv_3: PointwiseConvParams; - conv_4: PointwiseConvParams; - conv_5: PointwiseConvParams; - conv_6: PointwiseConvParams; - conv_7: PointwiseConvParams; - box_predictor_0: BoxPredictionParams; - box_predictor_1: BoxPredictionParams; - box_predictor_2: BoxPredictionParams; - box_predictor_3: BoxPredictionParams; - box_predictor_4: BoxPredictionParams; - box_predictor_5: BoxPredictionParams; -}; -export declare type OutputLayerParams = { - extra_dim: tf.Tensor3D; -}; -export declare type NetParams = { - mobilenetv1: MobileNetV1.Params; - prediction_layer: PredictionLayerParams; - output_layer: OutputLayerParams; -}; diff --git a/build/es6/ssdMobilenetv1/types.js b/build/es6/ssdMobilenetv1/types.js deleted file mode 100644 index 5b2306a4..00000000 --- a/build/es6/ssdMobilenetv1/types.js +++ /dev/null @@ -1 +0,0 @@ -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/es6/ssdMobilenetv1/types.js.map b/build/es6/ssdMobilenetv1/types.js.map deleted file mode 100644 index 977d82a6..00000000 --- a/build/es6/ssdMobilenetv1/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ssdMobilenetv1/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/build/es6/tinyFaceDetector/TinyFaceDetector.d.ts b/build/es6/tinyFaceDetector/TinyFaceDetector.d.ts deleted file mode 100644 index 5cef3f56..00000000 --- a/build/es6/tinyFaceDetector/TinyFaceDetector.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { Point, TfjsImageRecognitionBase, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes'; -export declare class TinyFaceDetector extends TfjsImageRecognitionBase.TinyYolov2 { - constructor(); - readonly anchors: Point[]; - locateFaces(input: TNetInput, forwardParams: TfjsImageRecognitionBase.ITinyYolov2Options): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TfjsImageRecognitionBase.TinyYolov2NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; - }; -} diff --git a/build/es6/tinyFaceDetector/TinyFaceDetector.js b/build/es6/tinyFaceDetector/TinyFaceDetector.js deleted file mode 100644 index 50da217d..00000000 --- a/build/es6/tinyFaceDetector/TinyFaceDetector.js +++ /dev/null @@ -1,50 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes'; -import { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const'; -var TinyFaceDetector = /** @class */ (function (_super) { - __extends(TinyFaceDetector, _super); - function TinyFaceDetector() { - var _this = this; - var config = { - withSeparableConvs: true, - iouThreshold: IOU_THRESHOLD, - classes: ['face'], - anchors: BOX_ANCHORS, - meanRgb: MEAN_RGB, - isFirstLayerConv2d: true, - filterSizes: [3, 16, 32, 64, 128, 256, 512] - }; - _this = _super.call(this, config) || this; - return _this; - } - Object.defineProperty(TinyFaceDetector.prototype, "anchors", { - get: function () { - return this.config.anchors; - }, - enumerable: true, - configurable: true - }); - TinyFaceDetector.prototype.locateFaces = function (input, forwardParams) { - return __awaiter(this, void 0, void 0, function () { - var objectDetections; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.detect(input, forwardParams)]; - case 1: - objectDetections = _a.sent(); - return [2 /*return*/, objectDetections.map(function (det) { return new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }); })]; - } - }); - }); - }; - TinyFaceDetector.prototype.getDefaultModelName = function () { - return 'tiny_face_detector_model'; - }; - TinyFaceDetector.prototype.extractParamsFromWeigthMap = function (weightMap) { - return _super.prototype.extractParamsFromWeigthMap.call(this, weightMap); - }; - return TinyFaceDetector; -}(TfjsImageRecognitionBase.TinyYolov2)); -export { TinyFaceDetector }; -//# sourceMappingURL=TinyFaceDetector.js.map \ No newline at end of file diff --git a/build/es6/tinyFaceDetector/TinyFaceDetector.js.map b/build/es6/tinyFaceDetector/TinyFaceDetector.js.map deleted file mode 100644 index 1bd96418..00000000 --- a/build/es6/tinyFaceDetector/TinyFaceDetector.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TinyFaceDetector.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/TinyFaceDetector.ts"],"names":[],"mappings":";AACA,OAAO,EAAS,wBAAwB,EAAa,MAAM,6BAA6B,CAAC;AAEzF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D;IAAsC,oCAAmC;IAEvE;QAAA,iBAYC;QAXC,IAAM,MAAM,GAAG;YACb,kBAAkB,EAAE,IAAI;YACxB,YAAY,EAAE,aAAa;YAC3B,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,QAAQ;YACjB,kBAAkB,EAAE,IAAI;YACxB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;SAC5C,CAAA;QAED,QAAA,kBAAM,MAAM,CAAC,SAAA;;IACf,CAAC;IAED,sBAAW,qCAAO;aAAlB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QAC5B,CAAC;;;OAAA;IAEY,sCAAW,GAAxB,UAAyB,KAAgB,EAAE,aAA0D;;;;;4BAC1E,qBAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,EAAA;;wBAA1D,gBAAgB,GAAG,SAAuC;wBAChE,sBAAO,gBAAgB,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,EAAjG,CAAiG,CAAC,EAAA;;;;KACtI;IAES,8CAAmB,GAA7B;QACE,OAAO,0BAA0B,CAAA;IACnC,CAAC;IAES,qDAA0B,GAApC,UAAqC,SAA4B;QAC/D,OAAO,iBAAM,0BAA0B,YAAC,SAAS,CAAC,CAAA;IACpD,CAAC;IACH,uBAAC;AAAD,CAAC,AAhCD,CAAsC,wBAAwB,CAAC,UAAU,GAgCxE"} \ No newline at end of file diff --git a/build/es6/tinyFaceDetector/TinyFaceDetectorOptions.d.ts b/build/es6/tinyFaceDetector/TinyFaceDetectorOptions.d.ts deleted file mode 100644 index c367c5fa..00000000 --- a/build/es6/tinyFaceDetector/TinyFaceDetectorOptions.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -export interface ITinyFaceDetectorOptions extends TfjsImageRecognitionBase.ITinyYolov2Options { -} -export declare class TinyFaceDetectorOptions extends TfjsImageRecognitionBase.TinyYolov2Options { - protected _name: string; -} diff --git a/build/es6/tinyFaceDetector/TinyFaceDetectorOptions.js b/build/es6/tinyFaceDetector/TinyFaceDetectorOptions.js deleted file mode 100644 index 9dd2e4c4..00000000 --- a/build/es6/tinyFaceDetector/TinyFaceDetectorOptions.js +++ /dev/null @@ -1,13 +0,0 @@ -import { __extends } from "tslib"; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -var TinyFaceDetectorOptions = /** @class */ (function (_super) { - __extends(TinyFaceDetectorOptions, _super); - function TinyFaceDetectorOptions() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._name = 'TinyFaceDetectorOptions'; - return _this; - } - return TinyFaceDetectorOptions; -}(TfjsImageRecognitionBase.TinyYolov2Options)); -export { TinyFaceDetectorOptions }; -//# sourceMappingURL=TinyFaceDetectorOptions.js.map \ No newline at end of file diff --git a/build/es6/tinyFaceDetector/TinyFaceDetectorOptions.js.map b/build/es6/tinyFaceDetector/TinyFaceDetectorOptions.js.map deleted file mode 100644 index e2c053b0..00000000 --- a/build/es6/tinyFaceDetector/TinyFaceDetectorOptions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TinyFaceDetectorOptions.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/TinyFaceDetectorOptions.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAIvE;IAA6C,2CAA0C;IAAvF;QAAA,qEAEC;QADW,WAAK,GAAW,yBAAyB,CAAA;;IACrD,CAAC;IAAD,8BAAC;AAAD,CAAC,AAFD,CAA6C,wBAAwB,CAAC,iBAAiB,GAEtF"} \ No newline at end of file diff --git a/build/es6/tinyFaceDetector/const.d.ts b/build/es6/tinyFaceDetector/const.d.ts deleted file mode 100644 index 11a84e48..00000000 --- a/build/es6/tinyFaceDetector/const.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Point } from 'tfjs-image-recognition-base'; -export declare const IOU_THRESHOLD = 0.4; -export declare const BOX_ANCHORS: Point[]; -export declare const MEAN_RGB: [number, number, number]; diff --git a/build/es6/tinyFaceDetector/const.js b/build/es6/tinyFaceDetector/const.js deleted file mode 100644 index 2cc3434c..00000000 --- a/build/es6/tinyFaceDetector/const.js +++ /dev/null @@ -1,11 +0,0 @@ -import { Point } from 'tfjs-image-recognition-base'; -export var IOU_THRESHOLD = 0.4; -export var BOX_ANCHORS = [ - new Point(1.603231, 2.094468), - new Point(6.041143, 7.080126), - new Point(2.882459, 3.518061), - new Point(4.266906, 5.178857), - new Point(9.041765, 10.66308) -]; -export var MEAN_RGB = [117.001, 114.697, 97.404]; -//# sourceMappingURL=const.js.map \ No newline at end of file diff --git a/build/es6/tinyFaceDetector/const.js.map b/build/es6/tinyFaceDetector/const.js.map deleted file mode 100644 index 44c05629..00000000 --- a/build/es6/tinyFaceDetector/const.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,MAAM,CAAC,IAAM,aAAa,GAAG,GAAG,CAAA;AAEhC,MAAM,CAAC,IAAM,WAAW,GAAG;IACzB,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC9B,CAAA;AAED,MAAM,CAAC,IAAM,QAAQ,GAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA"} \ No newline at end of file diff --git a/build/es6/tinyFaceDetector/index.d.ts b/build/es6/tinyFaceDetector/index.d.ts deleted file mode 100644 index cde93ca0..00000000 --- a/build/es6/tinyFaceDetector/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { TinyFaceDetector } from './TinyFaceDetector'; -export * from './TinyFaceDetector'; -export * from './TinyFaceDetectorOptions'; -export declare function createTinyFaceDetector(weights: Float32Array): TinyFaceDetector; diff --git a/build/es6/tinyFaceDetector/index.js b/build/es6/tinyFaceDetector/index.js deleted file mode 100644 index 9c17b2de..00000000 --- a/build/es6/tinyFaceDetector/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import { TinyFaceDetector } from './TinyFaceDetector'; -export * from './TinyFaceDetector'; -export * from './TinyFaceDetectorOptions'; -export function createTinyFaceDetector(weights) { - var net = new TinyFaceDetector(); - net.extractWeights(weights); - return net; -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/tinyFaceDetector/index.js.map b/build/es6/tinyFaceDetector/index.js.map deleted file mode 100644 index e8d93f44..00000000 --- a/build/es6/tinyFaceDetector/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tinyFaceDetector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAE1C,MAAM,UAAU,sBAAsB,CAAC,OAAqB;IAC1D,IAAM,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAA;IAClC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3B,OAAO,GAAG,CAAA;AACZ,CAAC"} \ No newline at end of file diff --git a/build/es6/tinyYolov2/TinyYolov2.d.ts b/build/es6/tinyYolov2/TinyYolov2.d.ts deleted file mode 100644 index c4a286ef..00000000 --- a/build/es6/tinyYolov2/TinyYolov2.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { Point, TfjsImageRecognitionBase, TNetInput } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes'; -export declare class TinyYolov2 extends TfjsImageRecognitionBase.TinyYolov2 { - constructor(withSeparableConvs?: boolean); - readonly withSeparableConvs: boolean; - readonly anchors: Point[]; - locateFaces(input: TNetInput, forwardParams: TfjsImageRecognitionBase.ITinyYolov2Options): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TfjsImageRecognitionBase.TinyYolov2NetParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; - }; -} diff --git a/build/es6/tinyYolov2/TinyYolov2.js b/build/es6/tinyYolov2/TinyYolov2.js deleted file mode 100644 index 93bb53fb..00000000 --- a/build/es6/tinyYolov2/TinyYolov2.js +++ /dev/null @@ -1,62 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { FaceDetection } from '../classes'; -import { BOX_ANCHORS, BOX_ANCHORS_SEPARABLE, DEFAULT_MODEL_NAME, DEFAULT_MODEL_NAME_SEPARABLE_CONV, IOU_THRESHOLD, MEAN_RGB_SEPARABLE, } from './const'; -var TinyYolov2 = /** @class */ (function (_super) { - __extends(TinyYolov2, _super); - function TinyYolov2(withSeparableConvs) { - if (withSeparableConvs === void 0) { withSeparableConvs = true; } - var _this = this; - var config = Object.assign({}, { - 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; - } - Object.defineProperty(TinyYolov2.prototype, "withSeparableConvs", { - get: function () { - return this.config.withSeparableConvs; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(TinyYolov2.prototype, "anchors", { - get: function () { - return this.config.anchors; - }, - enumerable: true, - configurable: true - }); - TinyYolov2.prototype.locateFaces = function (input, forwardParams) { - return __awaiter(this, void 0, void 0, function () { - var objectDetections; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4 /*yield*/, this.detect(input, forwardParams)]; - case 1: - objectDetections = _a.sent(); - return [2 /*return*/, objectDetections.map(function (det) { return new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }); })]; - } - }); - }); - }; - TinyYolov2.prototype.getDefaultModelName = function () { - return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME; - }; - TinyYolov2.prototype.extractParamsFromWeigthMap = function (weightMap) { - return _super.prototype.extractParamsFromWeigthMap.call(this, weightMap); - }; - return TinyYolov2; -}(TfjsImageRecognitionBase.TinyYolov2)); -export { TinyYolov2 }; -//# sourceMappingURL=TinyYolov2.js.map \ No newline at end of file diff --git a/build/es6/tinyYolov2/TinyYolov2.js.map b/build/es6/tinyYolov2/TinyYolov2.js.map deleted file mode 100644 index 8c9a4e12..00000000 --- a/build/es6/tinyYolov2/TinyYolov2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TinyYolov2.js","sourceRoot":"","sources":["../../../src/tinyYolov2/TinyYolov2.ts"],"names":[],"mappings":";AACA,OAAO,EAAS,wBAAwB,EAAa,MAAM,6BAA6B,CAAC;AAEzF,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,8BAAmC;IAEjE,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,aAA0D;;;;;4BAC1E,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;QACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,kBAAkB,CAAA;IACzF,CAAC;IAES,+CAA0B,GAApC,UAAqC,SAA4B;QAC/D,OAAO,iBAAM,0BAA0B,YAAC,SAAS,CAAC,CAAA;IACpD,CAAC;IACH,iBAAC;AAAD,CAAC,AA1CD,CAAgC,wBAAwB,CAAC,UAAU,GA0ClE"} \ No newline at end of file diff --git a/build/es6/tinyYolov2/const.d.ts b/build/es6/tinyYolov2/const.d.ts deleted file mode 100644 index e64e2478..00000000 --- a/build/es6/tinyYolov2/const.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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"; diff --git a/build/es6/tinyYolov2/const.js b/build/es6/tinyYolov2/const.js deleted file mode 100644 index 1a0cc8db..00000000 --- a/build/es6/tinyYolov2/const.js +++ /dev/null @@ -1,20 +0,0 @@ -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 diff --git a/build/es6/tinyYolov2/const.js.map b/build/es6/tinyYolov2/const.js.map deleted file mode 100644 index 0cc1b153..00000000 --- a/build/es6/tinyYolov2/const.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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 diff --git a/build/es6/tinyYolov2/index.d.ts b/build/es6/tinyYolov2/index.d.ts deleted file mode 100644 index 5721a203..00000000 --- a/build/es6/tinyYolov2/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { TinyYolov2 } from './TinyYolov2'; -export { TinyYolov2 }; -export declare function createTinyYolov2(weights: Float32Array, withSeparableConvs?: boolean): TinyYolov2; diff --git a/build/es6/tinyYolov2/index.js b/build/es6/tinyYolov2/index.js deleted file mode 100644 index 584f5d7e..00000000 --- a/build/es6/tinyYolov2/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import { TinyYolov2 } from './TinyYolov2'; -export { TinyYolov2 }; -export function createTinyYolov2(weights, withSeparableConvs) { - if (withSeparableConvs === void 0) { withSeparableConvs = true; } - var net = new TinyYolov2(withSeparableConvs); - net.extractWeights(weights); - return net; -} -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/tinyYolov2/index.js.map b/build/es6/tinyYolov2/index.js.map deleted file mode 100644 index b63dcb23..00000000 --- a/build/es6/tinyYolov2/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tinyYolov2/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,CAAA;AAErB,MAAM,UAAU,gBAAgB,CAAC,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 diff --git a/build/es6/xception/TinyXception.d.ts b/build/es6/xception/TinyXception.d.ts deleted file mode 100644 index ed7a5f00..00000000 --- a/build/es6/xception/TinyXception.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { NetInput, NeuralNetwork, TfjsImageRecognitionBase, TNetInput } from 'tfjs-image-recognition-base'; -import { TinyXceptionParams } from './types'; -export declare class TinyXception extends NeuralNetwork { - private _numMainBlocks; - constructor(numMainBlocks: number); - forwardInput(input: NetInput): tf.Tensor4D; - forward(input: TNetInput): Promise; - protected getDefaultModelName(): string; - protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { - params: TinyXceptionParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; - }; - protected extractParams(weights: Float32Array): { - params: TinyXceptionParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; - }; -} diff --git a/build/es6/xception/TinyXception.js b/build/es6/xception/TinyXception.js deleted file mode 100644 index eea9ca11..00000000 --- a/build/es6/xception/TinyXception.js +++ /dev/null @@ -1,79 +0,0 @@ -import { __awaiter, __extends, __generator } from "tslib"; -import * as tf from '@tensorflow/tfjs-core'; -import { NeuralNetwork, normalize, range, toNetInput, } from 'tfjs-image-recognition-base'; -import { depthwiseSeparableConv } from '../common/depthwiseSeparableConv'; -import { extractParams } from './extractParams'; -import { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap'; -function conv(x, params, stride) { - return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias); -} -function reductionBlock(x, params, isActivateInput) { - if (isActivateInput === void 0) { isActivateInput = true; } - var out = isActivateInput ? tf.relu(x) : x; - out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]); - out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]); - out = tf.maxPool(out, [3, 3], [2, 2], 'same'); - out = tf.add(out, conv(x, params.expansion_conv, [2, 2])); - return out; -} -function mainBlock(x, params) { - var out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]); - out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]); - out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]); - out = tf.add(out, x); - return out; -} -var TinyXception = /** @class */ (function (_super) { - __extends(TinyXception, _super); - function TinyXception(numMainBlocks) { - var _this = _super.call(this, 'TinyXception') || this; - _this._numMainBlocks = numMainBlocks; - return _this; - } - TinyXception.prototype.forwardInput = function (input) { - var _this = this; - var params = this.params; - if (!params) { - throw new Error('TinyXception - load model before inference'); - } - return tf.tidy(function () { - var batchTensor = input.toBatchTensor(112, true); - var meanRgb = [122.782, 117.001, 104.298]; - var normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)); - var out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2])); - out = reductionBlock(out, params.entry_flow.reduction_block_0, false); - out = reductionBlock(out, params.entry_flow.reduction_block_1); - range(_this._numMainBlocks, 0, 1).forEach(function (idx) { - out = mainBlock(out, params.middle_flow["main_block_" + idx]); - }); - out = reductionBlock(out, params.exit_flow.reduction_block); - out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1])); - return out; - }); - }; - TinyXception.prototype.forward = function (input) { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this.forwardInput; - return [4 /*yield*/, toNetInput(input)]; - case 1: return [2 /*return*/, _a.apply(this, [_b.sent()])]; - } - }); - }); - }; - TinyXception.prototype.getDefaultModelName = function () { - return 'tiny_xception_model'; - }; - TinyXception.prototype.extractParamsFromWeigthMap = function (weightMap) { - return extractParamsFromWeigthMap(weightMap, this._numMainBlocks); - }; - TinyXception.prototype.extractParams = function (weights) { - return extractParams(weights, this._numMainBlocks); - }; - return TinyXception; -}(NeuralNetwork)); -export { TinyXception }; -//# sourceMappingURL=TinyXception.js.map \ No newline at end of file diff --git a/build/es6/xception/TinyXception.js.map b/build/es6/xception/TinyXception.js.map deleted file mode 100644 index 21298f3c..00000000 --- a/build/es6/xception/TinyXception.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"TinyXception.js","sourceRoot":"","sources":["../../../src/xception/TinyXception.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/xception/extractParams.d.ts b/build/es6/xception/extractParams.d.ts deleted file mode 100644 index 87826023..00000000 --- a/build/es6/xception/extractParams.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { TinyXceptionParams } from './types'; -export declare function extractParams(weights: Float32Array, numMainBlocks: number): { - params: TinyXceptionParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/xception/extractParams.js b/build/es6/xception/extractParams.js deleted file mode 100644 index 52021cf9..00000000 --- a/build/es6/xception/extractParams.js +++ /dev/null @@ -1,54 +0,0 @@ -import { range, TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -function extractorsFactory(extractWeights, paramMappings) { - var extractConvParams = TfjsImageRecognitionBase.extractConvParamsFactory(extractWeights, paramMappings); - var extractSeparableConvParams = TfjsImageRecognitionBase.extractSeparableConvParamsFactory(extractWeights, paramMappings); - function extractReductionBlockParams(channelsIn, channelsOut, mappedPrefix) { - var separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, mappedPrefix + "/separable_conv0"); - var separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, mappedPrefix + "/separable_conv1"); - var expansion_conv = extractConvParams(channelsIn, channelsOut, 1, mappedPrefix + "/expansion_conv"); - return { separable_conv0: separable_conv0, separable_conv1: separable_conv1, expansion_conv: expansion_conv }; - } - function extractMainBlockParams(channels, mappedPrefix) { - var separable_conv0 = extractSeparableConvParams(channels, channels, mappedPrefix + "/separable_conv0"); - var separable_conv1 = extractSeparableConvParams(channels, channels, mappedPrefix + "/separable_conv1"); - var separable_conv2 = extractSeparableConvParams(channels, channels, mappedPrefix + "/separable_conv2"); - return { separable_conv0: separable_conv0, separable_conv1: separable_conv1, separable_conv2: separable_conv2 }; - } - return { - extractConvParams: extractConvParams, - extractSeparableConvParams: extractSeparableConvParams, - extractReductionBlockParams: extractReductionBlockParams, - extractMainBlockParams: extractMainBlockParams - }; -} -export function extractParams(weights, numMainBlocks) { - var paramMappings = []; - var _a = TfjsImageRecognitionBase.extractWeightsFactory(weights), extractWeights = _a.extractWeights, getRemainingWeights = _a.getRemainingWeights; - var _b = extractorsFactory(extractWeights, paramMappings), extractConvParams = _b.extractConvParams, extractSeparableConvParams = _b.extractSeparableConvParams, extractReductionBlockParams = _b.extractReductionBlockParams, extractMainBlockParams = _b.extractMainBlockParams; - var entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in'); - var entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0'); - var entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1'); - var entry_flow = { - conv_in: entry_flow_conv_in, - reduction_block_0: entry_flow_reduction_block_0, - reduction_block_1: entry_flow_reduction_block_1 - }; - var middle_flow = {}; - range(numMainBlocks, 0, 1).forEach(function (idx) { - middle_flow["main_block_" + idx] = extractMainBlockParams(128, "middle_flow/main_block_" + idx); - }); - var exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block'); - var exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv'); - var exit_flow = { - reduction_block: exit_flow_reduction_block, - separable_conv: exit_flow_separable_conv - }; - if (getRemainingWeights().length !== 0) { - throw new Error("weights remaing after extract: " + getRemainingWeights().length); - } - return { - paramMappings: paramMappings, - params: { entry_flow: entry_flow, middle_flow: middle_flow, exit_flow: exit_flow } - }; -} -//# sourceMappingURL=extractParams.js.map \ No newline at end of file diff --git a/build/es6/xception/extractParams.js.map b/build/es6/xception/extractParams.js.map deleted file mode 100644 index c778ba49..00000000 --- a/build/es6/xception/extractParams.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParams.js","sourceRoot":"","sources":["../../../src/xception/extractParams.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/es6/xception/extractParamsFromWeigthMap.d.ts b/build/es6/xception/extractParamsFromWeigthMap.d.ts deleted file mode 100644 index efd534ec..00000000 --- a/build/es6/xception/extractParamsFromWeigthMap.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as tf from '@tensorflow/tfjs-core'; -import { TfjsImageRecognitionBase } from 'tfjs-image-recognition-base'; -import { TinyXceptionParams } from './types'; -export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap, numMainBlocks: number): { - params: TinyXceptionParams; - paramMappings: TfjsImageRecognitionBase.ParamMapping[]; -}; diff --git a/build/es6/xception/extractParamsFromWeigthMap.js b/build/es6/xception/extractParamsFromWeigthMap.js deleted file mode 100644 index 4ef43bab..00000000 --- a/build/es6/xception/extractParamsFromWeigthMap.js +++ /dev/null @@ -1,50 +0,0 @@ -import { TfjsImageRecognitionBase, range } from 'tfjs-image-recognition-base'; -import { loadConvParamsFactory } from '../common/loadConvParamsFactory'; -function loadParamsFactory(weightMap, paramMappings) { - var extractWeightEntry = TfjsImageRecognitionBase.extractWeightEntryFactory(weightMap, paramMappings); - var extractConvParams = loadConvParamsFactory(extractWeightEntry); - var extractSeparableConvParams = TfjsImageRecognitionBase.loadSeparableConvParamsFactory(extractWeightEntry); - function extractReductionBlockParams(mappedPrefix) { - var separable_conv0 = extractSeparableConvParams(mappedPrefix + "/separable_conv0"); - var separable_conv1 = extractSeparableConvParams(mappedPrefix + "/separable_conv1"); - var expansion_conv = extractConvParams(mappedPrefix + "/expansion_conv"); - return { separable_conv0: separable_conv0, separable_conv1: separable_conv1, expansion_conv: expansion_conv }; - } - function extractMainBlockParams(mappedPrefix) { - var separable_conv0 = extractSeparableConvParams(mappedPrefix + "/separable_conv0"); - var separable_conv1 = extractSeparableConvParams(mappedPrefix + "/separable_conv1"); - var separable_conv2 = extractSeparableConvParams(mappedPrefix + "/separable_conv2"); - return { separable_conv0: separable_conv0, separable_conv1: separable_conv1, separable_conv2: separable_conv2 }; - } - return { - extractConvParams: extractConvParams, - extractSeparableConvParams: extractSeparableConvParams, - extractReductionBlockParams: extractReductionBlockParams, - extractMainBlockParams: extractMainBlockParams - }; -} -export function extractParamsFromWeigthMap(weightMap, numMainBlocks) { - var paramMappings = []; - var _a = loadParamsFactory(weightMap, paramMappings), extractConvParams = _a.extractConvParams, extractSeparableConvParams = _a.extractSeparableConvParams, extractReductionBlockParams = _a.extractReductionBlockParams, extractMainBlockParams = _a.extractMainBlockParams; - var entry_flow_conv_in = extractConvParams('entry_flow/conv_in'); - var entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0'); - var entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1'); - var entry_flow = { - conv_in: entry_flow_conv_in, - reduction_block_0: entry_flow_reduction_block_0, - reduction_block_1: entry_flow_reduction_block_1 - }; - var middle_flow = {}; - range(numMainBlocks, 0, 1).forEach(function (idx) { - middle_flow["main_block_" + idx] = extractMainBlockParams("middle_flow/main_block_" + idx); - }); - var exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block'); - var exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv'); - var exit_flow = { - reduction_block: exit_flow_reduction_block, - separable_conv: exit_flow_separable_conv - }; - TfjsImageRecognitionBase.disposeUnusedWeightTensors(weightMap, paramMappings); - return { params: { entry_flow: entry_flow, middle_flow: middle_flow, exit_flow: exit_flow }, paramMappings: paramMappings }; -} -//# sourceMappingURL=extractParamsFromWeigthMap.js.map \ No newline at end of file diff --git a/build/es6/xception/extractParamsFromWeigthMap.js.map b/build/es6/xception/extractParamsFromWeigthMap.js.map deleted file mode 100644 index c09dd8b0..00000000 --- a/build/es6/xception/extractParamsFromWeigthMap.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extractParamsFromWeigthMap.js","sourceRoot":"","sources":["../../../src/xception/extractParamsFromWeigthMap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAE9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,SAAS,iBAAiB,CAAC,SAAc,EAAE,aAAsD;IAE/F,IAAM,kBAAkB,GAAG,wBAAwB,CAAC,yBAAyB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEvG,IAAM,iBAAiB,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,CAAA;IACnE,IAAM,0BAA0B,GAAG,wBAAwB,CAAC,8BAA8B,CAAC,kBAAkB,CAAC,CAAA;IAE9G,SAAS,2BAA2B,CAAC,YAAoB;QAEvD,IAAM,eAAe,GAAG,0BAA0B,CAAI,YAAY,qBAAkB,CAAC,CAAA;QACrF,IAAM,eAAe,GAAG,0BAA0B,CAAI,YAAY,qBAAkB,CAAC,CAAA;QACrF,IAAM,cAAc,GAAG,iBAAiB,CAAI,YAAY,oBAAiB,CAAC,CAAA;QAE1E,OAAO,EAAE,eAAe,iBAAA,EAAE,eAAe,iBAAA,EAAE,cAAc,gBAAA,EAAE,CAAA;IAC7D,CAAC;IAED,SAAS,sBAAsB,CAAC,YAAoB;QAElD,IAAM,eAAe,GAAG,0BAA0B,CAAI,YAAY,qBAAkB,CAAC,CAAA;QACrF,IAAM,eAAe,GAAG,0BAA0B,CAAI,YAAY,qBAAkB,CAAC,CAAA;QACrF,IAAM,eAAe,GAAG,0BAA0B,CAAI,YAAY,qBAAkB,CAAC,CAAA;QAErF,OAAO,EAAE,eAAe,iBAAA,EAAE,eAAe,iBAAA,EAAE,eAAe,iBAAA,EAAE,CAAA;IAC9D,CAAC;IAED,OAAO;QACL,iBAAiB,mBAAA;QACjB,0BAA0B,4BAAA;QAC1B,2BAA2B,6BAAA;QAC3B,sBAAsB,wBAAA;KACvB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,SAA4B,EAC5B,aAAqB;IAGrB,IAAM,aAAa,GAA4C,EAAE,CAAA;IAE3D,IAAA,gDAKyC,EAJ7C,wCAAiB,EACjB,0DAA0B,EAC1B,4DAA2B,EAC3B,kDAC6C,CAAA;IAE/C,IAAM,kBAAkB,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,CAAA;IAClE,IAAM,4BAA4B,GAAG,2BAA2B,CAAC,8BAA8B,CAAC,CAAA;IAChG,IAAM,4BAA4B,GAAG,2BAA2B,CAAC,8BAA8B,CAAC,CAAA;IAEhG,IAAM,UAAU,GAAG;QACjB,OAAO,EAAE,kBAAkB;QAC3B,iBAAiB,EAAE,4BAA4B;QAC/C,iBAAiB,EAAE,4BAA4B;KAChD,CAAA;IAED,IAAM,WAAW,GAAG,EAAE,CAAA;IACtB,KAAK,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;QACrC,WAAW,CAAC,gBAAc,GAAK,CAAC,GAAG,sBAAsB,CAAC,4BAA0B,GAAK,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAA;IAEF,IAAM,yBAAyB,GAAG,2BAA2B,CAAC,2BAA2B,CAAC,CAAA;IAC1F,IAAM,wBAAwB,GAAG,0BAA0B,CAAC,0BAA0B,CAAC,CAAA;IAEvF,IAAM,SAAS,GAAG;QAChB,eAAe,EAAE,yBAAyB;QAC1C,cAAc,EAAE,wBAAwB;KACzC,CAAA;IAED,wBAAwB,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAE7E,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,YAAA,EAAE,WAAW,aAAA,EAAE,SAAS,WAAA,EAAE,EAAE,aAAa,eAAA,EAAE,CAAA;AAC1E,CAAC"} \ No newline at end of file diff --git a/build/es6/xception/index.d.ts b/build/es6/xception/index.d.ts deleted file mode 100644 index 021d0deb..00000000 --- a/build/es6/xception/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './TinyXception'; diff --git a/build/es6/xception/index.js b/build/es6/xception/index.js deleted file mode 100644 index 0fc246d6..00000000 --- a/build/es6/xception/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export * from './TinyXception'; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/es6/xception/index.js.map b/build/es6/xception/index.js.map deleted file mode 100644 index b3f34772..00000000 --- a/build/es6/xception/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/xception/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"} \ No newline at end of file diff --git a/build/es6/xception/types.d.ts b/build/es6/xception/types.d.ts deleted file mode 100644 index c4a2de5b..00000000 --- a/build/es6/xception/types.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { TfjsImageRecognitionBase } from "tfjs-image-recognition-base"; -export declare type ReductionBlockParams = { - separable_conv0: TfjsImageRecognitionBase.SeparableConvParams; - separable_conv1: TfjsImageRecognitionBase.SeparableConvParams; - expansion_conv: TfjsImageRecognitionBase.ConvParams; -}; -export declare type MainBlockParams = { - separable_conv0: TfjsImageRecognitionBase.SeparableConvParams; - separable_conv1: TfjsImageRecognitionBase.SeparableConvParams; - separable_conv2: TfjsImageRecognitionBase.SeparableConvParams; -}; -export declare type TinyXceptionParams = { - entry_flow: { - conv_in: TfjsImageRecognitionBase.ConvParams; - reduction_block_0: ReductionBlockParams; - reduction_block_1: ReductionBlockParams; - }; - middle_flow: any; - exit_flow: { - reduction_block: ReductionBlockParams; - separable_conv: TfjsImageRecognitionBase.SeparableConvParams; - }; -}; diff --git a/build/es6/xception/types.js b/build/es6/xception/types.js deleted file mode 100644 index 5b2306a4..00000000 --- a/build/es6/xception/types.js +++ /dev/null @@ -1 +0,0 @@ -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/build/es6/xception/types.js.map b/build/es6/xception/types.js.map deleted file mode 100644 index e49bdd1c..00000000 --- a/build/es6/xception/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/xception/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/face-api.js b/dist/face-api.js index 593cf48f..a4373418 100644 --- a/dist/face-api.js +++ b/dist/face-api.js @@ -1,6562 +1,6568 @@ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = global || self, factory(global.faceapi = global.faceapi || {})); -}(this, function (exports) { 'use strict'; - - /*! ***************************************************************************** - Copyright (c) Microsoft Corporation. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at http://www.apache.org/licenses/LICENSE-2.0 - - THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED - WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, - MERCHANTABLITY OR NON-INFRINGEMENT. - - See the Apache Version 2.0 License for specific language governing permissions - and limitations under the License. - ***************************************************************************** */ - /* global Reflect, Promise */ - - var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - - function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - } - - var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - }; - - function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - } - - function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } - } - - function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; - } - - /** - * @license - * Copyright 2019 Google LLC. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - var t=function(e,n){return (t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e;}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);})(e,n)};function e(e,n){function r(){this.constructor=e;}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r);}function n(t,e,n,r){return new(n||(n=Promise))(function(o,a){function i(t){try{u(r.next(t));}catch(t){a(t);}}function s(t){try{u(r.throw(t));}catch(t){a(t);}}function u(t){t.done?o(t.value):new n(function(e){e(t.value);}).then(i,s);}u((r=r.apply(t,e||[])).next());})}function r(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]0;)r=Math.random()*e|0,n=t[--e],t[e]=t[r],t[r]=n;}function c(t,e,n){return Math.max(t,Math.min(e,n))}function h(t){return t%2==0?t:t+1}function p(t){for(var e=0,n=0;n=n?o():setTimeout(i,s);}};i();})}function R(t,e){for(var n=1,r=-1,o=0;o=0)n*=t[o];else if(-1===t[o]){if(-1!==r)throw Error("Shapes can only have 1 implicit size. Found -1 at dim "+r+" and dim "+o);r=o;}else if(t[o]<0)throw Error("Shapes can not be < 0. Found "+t[o]+" at dim "+o);if(-1===r){if(e>0&&e!==n)throw Error("Size("+e+") must match the product of shape "+t);return t}if(0===n)throw Error("Cannot infer the missing size in ["+t+"] when there are 0 elements");if(e%n!=0)throw Error("The implicit shape can't be a fractional number. Got "+e+" / "+n);var a=t.slice();return a[r]=e/n,a}function I(t,e){var n=e.length;return f((t=null==t?e.map(function(t,e){return e}):[].concat(t)).every(function(t){return t>=-n&&ts)&&1===t[s]&&(n.push(t[s]),r.push(s)),a[i]<=s&&i++;}1!==t[s]&&(n.push(t[s]),r.push(s));}return {newShape:n,keptDims:r}}function N(t,e){var n=null;if(null==t||"float32"===t)n=new Float32Array(e);else if("int32"===t)n=new Int32Array(e);else{if("bool"!==t)throw new Error("Unknown data type "+t);n=new Uint8Array(e);}return n}function S(t,e){var n=null;if(null==t||"float32"===t)n=new Float32Array(e);else if("int32"===t)n=new Int32Array(e);else if("bool"===t)n=new Uint8Array(e);else{if("string"!==t)throw new Error("Unknown data type "+t);n=new Array(e);}return n}function A(t,e){for(var n=0;n=0;--r)n[r]=n[r+1]*t[r+1];return n}function z(t,e,n){if("string"===e)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(t)&&(t=m(t)),n&&A(t,e),function(t,e){return t instanceof Float32Array&&"float32"===e||t instanceof Int32Array&&"int32"===e||t instanceof Uint8Array&&"bool"===e}(t,e))return t;if(null==e||"float32"===e||"complex64"===e)return new Float32Array(t);if("int32"===e)return new Int32Array(t);if("bool"===e){for(var r=new Uint8Array(t.length),o=0;o=0,function(){return "Tensor must have a shape comprised of positive integers but got shape ["+t+"]."});});}function j(t,e){return void 0===e&&(e="utf-8"),e=e||"utf-8",i.platform.encode(t,e)}function X(t,e){return void 0===e&&(e="utf-8"),e=e||"utf-8",i.platform.decode(t,e)}var Y=Object.freeze({shuffle:l,clamp:c,nearestLargerEven:h,sum:p,randUniform:function(t,e){var n=Math.random();return e*n+(1-n)*t},distSquared:function(t,e){for(var n=0,r=0;r0?f:"")+" ";}console.log("%c"+s+"\t%c"+i+"\t%c"+u+"D "+c+"\t%c"+l+"\t%c"+h+"\t%c"+a,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue");},t}(),Z=20,tt=3,et=7;function nt(t,e,n,r){var o=V(e),a=function(t,e,n,r){var o=g(e),a=r[r.length-1],i=new Array(a).fill(0),s=e.length,u="complex64"===n?at(t):t;if(s>1)for(var l=0;lZ){var h=tt*s,p=Array.from(e.slice(0,h)),f=Array.from(e.slice(u-tt*s,u));return "complex64"===r&&(p=at(p),f=at(f)),["["+p.map(function(t,e){return rt(t,a[e],r)}).join(", ")+", ..., "+f.map(function(t,e){return rt(t,a[u-tt+e],r)}).join(", ")+"]"]}var d="complex64"===r?at(e):Array.from(e);return ["["+d.map(function(t,e){return rt(t,a[e],r)}).join(", ")+"]"]}var v=n.slice(1);var m=o.slice(1);var g=o[0]*s;var y=[];if(u>Z){for(var x=0;x=this.shape[n]){var i="Requested out of range element at "+t+". Buffer shape="+this.shape;throw new Error(i)}n++;}for(var s=t[t.length-1],u=0;u0&&(t.unreliable=!0,null==t.reasons&&(t.reasons=[]),t.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),t},t.prototype.profile=function(t){return n(this,void 0,void 0,function(){var e,n;return r(this,function(r){return this.state.profiling=!0,e=this.state.numBytes,n=this.state.numTensors,this.state.activeProfile.kernels=[],this.state.activeProfile.result=t(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,this.state.activeProfile.kernels.map(function(t){return t.totalBytesSnapshot})),this.state.activeProfile.newBytes=this.state.numBytes-e,this.state.activeProfile.newTensors=this.state.numTensors-n,[2,this.state.activeProfile]})})},t.prototype.isTapeOn=function(){return this.state.gradientDepth>0&&0===this.state.kernelDepth},t.prototype.addTapeNode=function(t,e,n){var r={};t.forEach(function(t,e){r[e]=t;});var o={id:this.state.nextTapeNodeId++,name:this.state.activeScope.name,inputs:r,outputs:[e],gradient:function(t){var e=n(t),r={};return e.forEach(function(t,e){r[e]=function(){return t};}),r}};this.state.activeTape.push(o);},t.prototype.keep=function(t){return t.kept=!0,t},t.prototype.startTape=function(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++;},t.prototype.endTape=function(){this.state.gradientDepth--;},t.prototype.startScope=function(t){var e={track:[],name:"unnamed scope",id:this.state.nextScopeId++};t&&(e.name=t),this.state.scopeStack.push(e),this.state.activeScope=e;},t.prototype.endScope=function(t){for(var e=this,n=Et(t),r=new Set(n.map(function(t){return t.id})),o=0;o0,function(){return "gradients() received an empty list of xs."}),null!=n&&"float32"!==n.dtype)throw new Error("dy must have 'float32' dtype, but has '"+n.dtype+"'");var a=this.scopedRun(function(){return o.startTape()},function(){return o.endTape()},function(){return o.tidy("forward",t)});f(a instanceof ct,function(){return "The result y returned by f() must be a tensor."});var i=function(t,e,n){for(var r={},o={},a=0;a=0;a--)for(i=(d=t[a]).inputs,c=0;c0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",function(){var t,r,s={};s[a.id]=null==n?(t=a.shape,r=H(g(t),"float32"),ct.make(t,{values:r})):n,function(t,e,n){for(var r=function(r){var o=e[r],a=[];if(o.outputs.forEach(function(e){var n=t[e.id];if(null!=n)a.push(n);else{var r=ct.make(e.shape,{values:q(e.size,e.dtype)},e.dtype);a.push(r);}}),null==o.gradient)throw new Error("Cannot compute gradient: gradient function not found for "+o.name+".");var i=o.gradient(1===o.outputs.length?a[0]:a),s=function(e){if(!(e in i))throw new Error("Cannot backprop through input "+e+". Available gradients found: "+Object.keys(i)+".");var r=n(function(){return i[e]()});if("float32"!==r.dtype)throw new Error("Error in gradient for op "+o.name+". The gradient of input "+e+" must have 'float32' dtype, but has '"+r.dtype+"'");var a=o.inputs[e];if(!y(r.shape,a.shape))throw new Error("Error in gradient for op "+o.name+". The gradient of input '"+e+"' has shape '"+r.shape+"', which does not match the shape of the input '"+a.shape+"'");if(null==t[a.id])t[a.id]=r;else{var s=t[a.id];t[a.id]=s.add(r),s.dispose();}};for(var u in o.inputs)s(u);},o=e.length-1;o>=0;o--)r(o);}(s,i,function(t){return o.tidy(t)});var u=e.map(function(t){return s[t.id]});return 0===o.state.gradientDepth&&(o.state.activeTape.forEach(function(t){for(var e in t.saved)t.saved[e].dispose();}),o.state.activeTape=null),{value:a,grads:u}})},t.prototype.customGrad=function(t){var e=this;return f(W(t),function(){return "The f passed in customGrad(f) must be a function."}),function(){for(var n,r=[],o=0;on||e>n){r="["+t+"x"+e+"]";throw new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU "+("["+n+"x"+n+"]")+".")}}function ae(t,e){return ve(t,e,function(){return t.createFramebuffer()},"Unable to create WebGLFramebuffer.")}function ie(t,e,n,r,o,a,i,s){var u=t.getAttribLocation(n,r);return -1!==u&&(Vt(t,e,function(){return t.bindBuffer(t.ARRAY_BUFFER,o)}),Vt(t,e,function(){return t.vertexAttribPointer(u,a,t.FLOAT,!1,i,s)}),Vt(t,e,function(){return t.enableVertexAttribArray(u)}),!0)}function se(t,e,n,r){me(t,r),Vt(t,e,function(){return t.activeTexture(t.TEXTURE0+r)}),Vt(t,e,function(){return t.bindTexture(t.TEXTURE_2D,n)});}function ue(t,e,n,r){return ve(t,e,function(){return t.getUniformLocation(n,r)},'uniform "'+r+'" not present in program.')}function le(t,e,n){return t.getUniformLocation(e,n)}function ce(t,e,n,r,o,a){Vt(t,e,function(){return se(t,e,r,a)}),Vt(t,e,function(){return t.uniform1i(o,a)});}function he(t,e,n,r){Vt(t,e,function(){return t.bindFramebuffer(t.FRAMEBUFFER,r)}),Vt(t,e,function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0)});}function pe(t,e,n){Vt(t,e,function(){return t.bindFramebuffer(t.FRAMEBUFFER,n)}),Vt(t,e,function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,null,0)});}function fe(t){var e=t.checkFramebufferStatus(t.FRAMEBUFFER);if(e!==t.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+de(t,e))}function de(t,e){switch(e){case t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return "FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return "FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case t.FRAMEBUFFER_UNSUPPORTED:return "FRAMEBUFFER_UNSUPPORTED";default:return "unknown error "+e}}function ve(t,e,n,r){var o=Vt(t,e,function(){return n()});if(null==o)throw new Error(r);return o}function me(t,e){var n=t.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=e+t.TEXTURE0;if(rn)throw new Error("textureUnit must be in "+("[gl.TEXTURE0, gl.TEXTURE"+n+"]")+".")}function ge(t,e){return void 0===e&&(e=2),g(t.slice(0,t.length-e))}function ye(t){if(0===t.length)throw Error("Cannot get rows and columns of an empty shape array.");return [t.length>1?t[t.length-2]:1,t[t.length-1]]}function xe(t){var e=[1,1,1];return 0===t.length||1===t.length&&1===t[0]||(e=[ge(t)].concat(ye(t))),e}function be(t,e){var n;void 0===e&&(e=!1);var r=i.getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e&&(r*=2,1===(t=t.map(function(e,n){return n>=t.length-2?h(t[n]):t[n]})).length&&(t=[2,t[0]])),2!==t.length){var o=k(t);t=o.newShape;}var a=g(t);if(t.length<=1&&a<=r)return [1,a];if(2===t.length&&t[0]<=r&&t[1]<=r)return t;if(3===t.length&&t[0]*t[1]<=r&&t[2]<=r)return [t[0]*t[1],t[2]];if(3===t.length&&t[0]<=r&&t[1]*t[2]<=r)return [t[0],t[1]*t[2]];if(4===t.length&&t[0]*t[1]*t[2]<=r&&t[3]<=r)return [t[0]*t[1]*t[2],t[3]];if(4===t.length&&t[0]<=r&&t[1]*t[2]*t[3]<=r)return [t[0],t[1]*t[2]*t[3]];if(e){var s=ge(t),u=2,l=2;return t.length&&(u=(n=ye(t))[0],l=n[1]),w(a=s*(u/2)*(l/2)).map(function(t){return 2*t})}return w(a)}function we(t){return t%2==0}function Ce(t,e){if(y(t=t.slice(-2),e=e.slice(-2)))return !0;if(!t.length||!e.length)return !0;if(0===t[0]||0===t[1]||0===e[0]||0===e[1])return !0;if(t.length!==e.length){var n=t.slice(-1)[0],r=e.slice(-1)[0];if(n===r)return !0;if(we(n)&&we(r)&&(1===t[0]||1===e[0]))return !0}return t[1]===e[1]&&we(t[0])&&we(e[0])}function Ee(t){if(null==Xt){var e=Mt(t);Xt=e.getParameter(e.MAX_TEXTURE_SIZE);}return Xt}function Re(t){if(null==Yt){var e=Mt(t);Yt=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);}return Math.min(16,Yt)}function Ie(t){if(0===t)return 0;var e=Mt(t);return ke(e,"EXT_disjoint_timer_query_webgl2")&&2===t?2:ke(e,"EXT_disjoint_timer_query")?1:0}function ke(t,e){return null!=t.getExtension(e)}function Ne(t){try{if(null!=Mt(t))return !0}catch(t){return !1}return !1}function Se(t){if(0===t)return !1;var e=Mt(t);if(1===t){if(!ke(e,"OES_texture_float"))return !1}else if(!ke(e,"EXT_color_buffer_float"))return !1;return Te(e)}function Ae(t){if(0===t)return !1;var e=Mt(t);if(1!==t){if(ke(e,"EXT_color_buffer_float"))return Te(e);if(ke(e,"EXT_color_buffer_half_float")){var n=e.getExtension("EXT_color_buffer_half_float");return function(t,e){var n=Ut(t,e),r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r);t.texImage2D(t.TEXTURE_2D,0,n.internalFormatHalfFloat,1,1,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);var o=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,o),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0);var a=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(r),t.deleteFramebuffer(o),a}(e,n)}return !1}return !!ke(e,"OES_texture_float")&&(!!ke(e,"WEBGL_color_buffer_float")&&Te(e))}function Te(t){var e=Ut(t),n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n);t.texImage2D(t.TEXTURE_2D,0,e.internalFormatFloat,1,1,0,e.textureFormatFloat,e.textureTypeFloat,null);var r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0);var o=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(n),t.deleteFramebuffer(r),o}function De(t){return 2===t&&null!=Mt(t).fenceSync}var _e=Object.freeze({callAndCheck:Vt,canBeRepresented:Ht,getWebGLErrorMessage:qt,getExtensionOrThrow:$t,createVertexShader:Kt,createFragmentShader:jt,createProgram:Jt,linkProgram:Zt,validateProgram:te,createStaticVertexBuffer:ee,createStaticIndexBuffer:ne,getNumChannels:function(){return 2===i.getNumber("WEBGL_VERSION")?1:4},createTexture:re,validateTextureSize:oe,createFramebuffer:ae,bindVertexBufferToProgramAttribute:ie,bindTextureUnit:se,unbindTextureUnit:function(t,e,n){me(t,n),Vt(t,e,function(){return t.activeTexture(t.TEXTURE0+n)}),Vt(t,e,function(){return t.bindTexture(t.TEXTURE_2D,null)});},getProgramUniformLocationOrThrow:ue,getProgramUniformLocation:le,bindTextureToProgramUniformSampler:ce,bindCanvasToFramebuffer:function(t,e){Vt(t,e,function(){return t.bindFramebuffer(t.FRAMEBUFFER,null)}),Vt(t,e,function(){return t.viewport(0,0,t.canvas.width,t.canvas.height)}),Vt(t,e,function(){return t.scissor(0,0,t.canvas.width,t.canvas.height)});},bindColorTextureToFramebuffer:he,unbindColorTextureFromFramebuffer:pe,validateFramebuffer:fe,getFramebufferErrorMessage:de,getBatchDim:ge,getRowsCols:ye,getShapeAs3D:xe,getTextureShapeFromLogicalShape:be,isReshapeFree:Ce,getWebGLMaxTextureSize:Ee,resetMaxTextureSize:function(){Xt=null;},resetMaxTexturesInShader:function(){Yt=null;},getMaxTexturesInShader:Re,getWebGLDisjointQueryTimerVersion:Ie,hasExtension:ke,isWebGLVersionEnabled:Ne,isCapableOfRenderingToFloatTexture:Se,isDownloadFloatTextureEnabled:Ae,isWebGLFenceEnabled:De});function Oe(){i.set("PROD",!0);}function Fe(){i.set("DEBUG",!0);}function Me(){i.set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.");}function Be(t){i.getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(t+" You can disable deprecation warnings with tf.disableDeprecationWarnings().");}function Pe(){St.disposeVariables();}function Le(){return St.memory()}function We(t){return St.profile(t)}function Ue(t,e){return St.tidy(t,e)}function Ve(t){Et(t).forEach(function(t){return t.dispose()});}function ze(t){return St.keep(t)}function Ge(t){return St.time(t)}function He(t){return St.setBackend(t)}function qe(){return St.ready()}function $e(){return St.backendName}function Ke(t){St.removeBackend(t);}function je(t){return St.findBackend(t)}function Xe(t){return St.findBackendFactory(t)}function Ye(t,e,n){return void 0===n&&(n=1),St.registerBackend(t,e,n)}function Qe(){return St.backend}function Je(t,e){i.setPlatform(t,e);}function Ze(){for(var t=[],e=0;e0,function(){return "Element arr["+r.join("][")+"] should be a primitive, but is an array of "+e.length+" elements"});f(e.length===n[0],function(){return "Element arr["+r.join("][")+"] should have "+n[0]+" elements, but has "+e.length+" elements"});var o=n.slice(1);for(var a=0;a=0&&(o=r),en(r,o,e,n),null==t||!_(t)&&!Array.isArray(t)&&"number"!=typeof t&&"boolean"!=typeof t&&"string"!=typeof t){var a=null==t?"null":t.constructor.name;throw new Error("Argument '"+e+"' passed to '"+n+"' must be a Tensor or TensorLike, but got '"+a+"'")}var s=tn(t,o);_(t)||Array.isArray(t)||(t=[t]);var u="string"!==o?z(t,o,i.getBool("DEBUG")):m(t,[],!0);return ct.make(s,{values:u},o)}function rn(t,e,n,r){if(void 0===r&&(r="numeric"),!Array.isArray(t))throw new Error("Argument "+e+" passed to "+n+" must be a `Tensor[]` or `TensorLike[]`");return t.map(function(t,r){return nn(t,e+"["+r+"]",n)},r)}function on(t,e){for(var n=0;n=0&&e0}),i.registerFlag("WEBGL_VERSION",function(){return Ne(2)?2:Ne(1)?1:0}),i.registerFlag("WEBGL_BUFFER_SUPPORTED",function(){return 2===i.get("WEBGL_VERSION")}),i.registerFlag("WEBGL_CPU_FORWARD",function(){return !0}),i.registerFlag("WEBGL_FORCE_F16_TEXTURES",function(){return !1}),i.registerFlag("WEBGL_PACK",function(){return i.getBool("HAS_WEBGL")}),i.registerFlag("WEBGL_PACK_NORMALIZATION",function(){return i.getBool("WEBGL_PACK")}),i.registerFlag("WEBGL_PACK_CLIP",function(){return i.getBool("WEBGL_PACK")}),i.registerFlag("WEBGL_PACK_DEPTHWISECONV",function(){return !1}),i.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",function(){return i.getBool("WEBGL_PACK")}),i.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",function(){return i.getBool("WEBGL_PACK")}),i.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",function(){return i.getBool("WEBGL_PACK")}),i.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",function(){return i.getBool("WEBGL_PACK")}),i.registerFlag("WEBGL_PACK_REDUCE",function(){return i.getBool("WEBGL_PACK")}),i.registerFlag("WEBGL_LAZILY_UNPACK",function(){return i.getBool("WEBGL_PACK")}),i.registerFlag("WEBGL_CONV_IM2COL",function(){return i.getBool("WEBGL_PACK")}),i.registerFlag("WEBGL_MAX_TEXTURE_SIZE",function(){return Ee(i.getNumber("WEBGL_VERSION"))}),i.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",function(){return Re(i.getNumber("WEBGL_VERSION"))}),i.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",function(){var t=i.getNumber("WEBGL_VERSION");return 0===t?0:Ie(t)}),i.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",function(){return i.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&(t=navigator.userAgent||navigator.vendor||window.opera,!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))));var t;}),i.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",function(){return Se(i.getNumber("WEBGL_VERSION"))}),i.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",function(){return !i.getBool("WEBGL_FORCE_F16_TEXTURES")&&i.getBool("WEBGL_RENDER_FLOAT32_CAPABLE")}),i.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",function(){return Ae(i.getNumber("WEBGL_VERSION"))}),i.registerFlag("WEBGL_FENCE_API_ENABLED",function(){return De(i.getNumber("WEBGL_VERSION"))}),i.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",function(){return i.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0}),lt=Be;var mn=vn({complex_:function(t,e){var n=nn(t,"real","complex"),r=nn(e,"imag","complex");return d(n.shape,r.shape,"real and imag shapes, "+n.shape+" and "+r.shape+", must match in call to tf.complex()."),St.runKernel(function(t){return t.complex(n,r)},{$real:n,$imag:r})}}),gn=vn({real_:function(t){var e=nn(t,"input","real");return St.runKernel(function(t){return t.real(e)},{$input:e})}}),yn=vn({imag_:function(t){var e=nn(t,"input","imag");return St.runKernel(function(t){return t.imag(e)},{$input:e})}});function xn(t,e,n){return bn(t,e,tn(t,n),n)}function bn(t,e,n,r){if(null==r&&(r=L(t)),"complex64"===r)throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!_(t)&&!Array.isArray(t)&&"number"!=typeof t&&"boolean"!=typeof t&&"string"!=typeof t)throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(null!=e){K(e);var o=g(e),a=g(n);f(o===a,function(){return "Based on the provided shape, ["+e+"], the tensor should have "+o+" values but has "+a});for(var s=0;s1)return An([0],r);var o=q(Math.abs(Math.ceil((e-t)/n)),r);e=1,function(){return "Pass at least one tensor to concat"});var n=rn(t,"tensors","concat");"complex64"===n[0].dtype&&n.forEach(function(t){if("complex64"!==t.dtype)throw new Error("Cannot concatenate complex64 tensors with a tensor\n with dtype "+t.dtype+". ")}),e=I(e,n[0].shape)[0];var r=dn(n.map(function(t){return t.shape}),e);if(0===g(r))return xn([],r);if(1===(n=n.filter(function(t){return t.size>0})).length)return n[0];var o=n.map(function(t){return t.shape});fn(o,e);var a=n;return St.runKernel(function(t){return t.concat(n,e)},a,function(t){var n=o.map(function(t){return t[e]});return Un(t,n,e).map(function(t){return function(){return t}})})}}),Bn=vn({concat1d_:function(t){return Mn(t,0)}}),Pn=vn({concat2d_:function(t,e){return Mn(t,e)}}),Ln=vn({concat3d_:function(t,e){return Mn(t,e)}}),Wn=vn({concat4d_:function(t,e){return Mn(t,e)}}),Un=vn({split_:function(t,e,n){void 0===n&&(n=0);var r,o=nn(t,"x","split");return n=I(n,o.shape)[0],"number"==typeof e?(f(o.shape[n]%e==0,function(){return "Number of splits must evenly divide the axis."}),r=new Array(e).fill(o.shape[n]/e)):(f(o.shape[n]===e.reduce(function(t,e){return t+e}),function(){return "The sum of sizes must match the size of the axis dimension."}),r=e),St.runKernel(function(t){return t.split(o,r,n)},{$x:o},function(t){return {$x:function(){return Mn(t,n)}}})}});function Vn(t,e){return t(e={exports:{}},e.exports),e.exports}var zn=Vn(function(t){!function(t,e,n){function r(t){var e,n=this,r=(e=4022871197,function(t){t=t.toString();for(var n=0;n>>0,e=(r*=e)>>>0,e+=4294967296*(r-=e);}return 2.3283064365386963e-10*(e>>>0)});n.next=function(){var t=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=t-(n.c=0|t)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(t),n.s0<0&&(n.s0+=1),n.s1-=r(t),n.s1<0&&(n.s1+=1),n.s2-=r(t),n.s2<0&&(n.s2+=1),r=null;}function o(t,e){return e.c=t.c,e.s0=t.s0,e.s1=t.s1,e.s2=t.s2,e}function a(t,e){var n=new r(t),a=e&&e.state,i=n.next;return i.int32=function(){return 4294967296*n.next()|0},i.double=function(){return i()+1.1102230246251565e-16*(2097152*i()|0)},i.quick=i,a&&("object"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n(function(){return a}):this.alea=a;}(0,t,!1);}),Gn=Vn(function(t){!function(t,e,n){function r(t){var e=this,n="";e.x=0,e.y=0,e.z=0,e.w=0,e.next=function(){var t=e.x^e.x<<11;return e.x=e.y,e.y=e.z,e.z=e.w,e.w^=e.w>>>19^t^t>>>8},t===(0|t)?e.x=t:n+=t;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);}while(0===t);return t},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n(function(){return a}):this.xor128=a;}(0,t,!1);}),Hn=Vn(function(t){!function(t,e,n){function r(t){var e=this,n="";e.next=function(){var t=e.x^e.x>>>2;return e.x=e.y,e.y=e.z,e.z=e.w,e.w=e.v,(e.d=e.d+362437|0)+(e.v=e.v^e.v<<4^t^t<<1)|0},e.x=0,e.y=0,e.z=0,e.w=0,e.v=0,t===(0|t)?e.x=t:n+=t;for(var r=0;r>>4),e.next();}function o(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e.v=t.v,e.d=t.d,e}function a(t,e){var n=new r(t),a=e&&e.state,i=function(){return (n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);}while(0===t);return t},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n(function(){return a}):this.xorwow=a;}(0,t,!1);}),qn=Vn(function(t){!function(t,e,n){function r(t){var e=this;e.next=function(){var t,n,r=e.x,o=e.i;return t=r[o],n=(t^=t>>>7)^t<<24,n^=(t=r[o+1&7])^t>>>10,n^=(t=r[o+3&7])^t>>>3,n^=(t=r[o+4&7])^t<<7,t=r[o+7&7],n^=(t^=t<<13)^t<<9,r[o]=n,e.i=o+1&7,n},function(t,e){var n,r=[];if(e===(0|e))r[0]=e;else for(e=""+e,n=0;n0;--n)t.next();}(e,t);}function o(t,e){return e.x=t.x.slice(),e.i=t.i,e}function a(t,e){null==t&&(t=+new Date);var n=new r(t),a=e&&e.state,i=function(){return (n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(a.x&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n(function(){return a}):this.xorshift7=a;}(0,t,!1);}),$n=Vn(function(t){!function(t,e,n){function r(t){var e=this;e.next=function(){var t,n,r=e.w,o=e.X,a=e.i;return e.w=r=r+1640531527|0,n=o[a+34&127],t=o[a=a+1&127],n^=n<<13,t^=t<<17,n^=n>>>15,t^=t>>>12,n=o[a]=n^t,e.i=a,n+(r^r>>>16)|0},function(t,e){var n,r,o,a,i,s=[],u=128;for(e===(0|e)?(r=e,e=null):(e+="\0",r=0,u=Math.max(u,e.length)),o=0,a=-32;a>>15,r^=r<<4,r^=r>>>13,a>=0&&(i=i+1640531527|0,o=0==(n=s[127&a]^=r+i)?o+1:0);for(o>=128&&(s[127&(e&&e.length||0)]=-1),o=127,a=512;a>0;--a)r=s[o+34&127],n=s[o=o+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[o]=r^n;t.w=i,t.X=s,t.i=o;}(e,t);}function o(t,e){return e.i=t.i,e.w=t.w,e.X=t.X.slice(),e}function a(t,e){null==t&&(t=+new Date);var n=new r(t),a=e&&e.state,i=function(){return (n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(a.X&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n(function(){return a}):this.xor4096=a;}(0,t,!1);}),Kn=Vn(function(t){!function(t,e,n){function r(t){var e=this,n="";e.next=function(){var t=e.b,n=e.c,r=e.d,o=e.a;return t=t<<25^t>>>7^n,n=n-r|0,r=r<<24^r>>>8^o,o=o-t|0,e.b=t=t<<20^t>>>12^n,e.c=n=n-r|0,e.d=r<<16^n>>>16^o,e.a=o-t|0},e.a=0,e.b=0,e.c=-1640531527,e.d=1367130551,t===Math.floor(t)?(e.a=t/4294967296|0,e.b=0|t):n+=t;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);}while(0===t);return t},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n(function(){return a}):this.tychei=a;}(0,t,!1);}),jn=Vn(function(t){!function(e,n){var r,o=this,a=256,i=6,s="random",u=n.pow(a,i),l=n.pow(2,52),c=2*l,h=a-1;function p(t,h,p){var g=[],y=v(function t(e,n){var r,o=[],a=typeof e;if(n&&"object"==a)for(r in e)try{o.push(t(e[r],n-1));}catch(t){}return o.length?o:"string"==a?e:e+"\0"}((h=1==h?{entropy:!0}:h||{}).entropy?[t,m(e)]:null==t?function(){try{var t;return r&&(t=r.randomBytes)?t=t(a):(t=new Uint8Array(a),(o.crypto||o.msCrypto).getRandomValues(t)),m(t)}catch(t){var n=o.navigator,i=n&&n.plugins;return [+new Date,o,i,o.screen,m(e)]}}():t,3),g),x=new f(g),b=function(){for(var t=x.g(i),e=u,n=0;t=c;)t/=2,e/=2,n>>>=1;return (t+n)/e};return b.int32=function(){return 0|x.g(4)},b.quick=function(){return x.g(4)/4294967296},b.double=b,v(m(x.S),e),(h.pass||p||function(t,e,r,o){return o&&(o.S&&d(o,x),t.state=function(){return d(x,{})}),r?(n[s]=t,e):t})(b,y,"global"in h?h.global:this==n,h.state)}function f(t){var e,n=t.length,r=this,o=0,i=r.i=r.j=0,s=r.S=[];for(n||(t=[n++]);o=1||0===i);var s=Math.sqrt(-2*Math.log(i)/i);e=this.mean+this.stdDev*o*s,n=this.mean+this.stdDev*a*s,this.truncated&&!this.isValidTruncated(e)||(r=!0);}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(e)},t.prototype.convertValue=function(t){return null==this.dtype||"float32"===this.dtype?t:Math.round(t)},t.prototype.isValidTruncated=function(t){return t<=this.upper&&t>=this.lower},t}(),Qn=function(){function t(t,e,n,r){this.alpha=t,this.beta=1/e,this.dtype=n;var o=r||Math.random();this.randu=Xn(o.toString()),this.randn=new Yn(0,1,n,!1,this.randu()),this.d=t<1?t+2/3:t-1/3,this.c=1/Math.sqrt(9*this.d);}return t.prototype.nextValue=function(){for(var t,e,n,r,o,a;;){do{r=this.randn.nextValue(),a=1+this.c*r;}while(a<=0);if(a*=a*a,e=1-.331*(t=r*r)*t,n=.5*t+this.d*(1-a+Math.log(a)),(o=this.randu())=1+e.length,function(){return "input rank is "+r.rank+" but should be > than blockShape.length "+e.length}),f(n.length===e.length,function(){return "crops.length is "+n.length+" but should be equal to blockShape.length "+e.length}),f(r.shape[0]%o==0,function(){return "input tensor batch is "+r.shape[0]+" but is not divisible by the product of the elements of blockShape "+e.join(" * ")+" === "+o}),St.runKernel(function(t){return t.batchToSpaceND(r,e,n)},{$x:r},function(t){return {$x:function(){return t.spaceToBatchND(e,n)}}})}}),nr=vn({cast_:function(t,e){var n=nn(t,"x","cast");if(!T(e))throw new Error("Failed to cast to unknown dtype "+e);if("string"===e&&"string"!==n.dtype||"string"!==e&&"string"===n.dtype)throw new Error("Only strings can be casted to strings");return St.runKernel(function(t){return t.cast(n,e)},{$x:n},function(t){return {$x:function(){return t.clone()}}})}}),rr=vn({clone_:function(t){var e=nn(t,"x","clone",null);return St.runKernel(function(t){return ct.make(e.shape,{dataId:e.dataId},e.dtype)},{$x:e},function(t){return {$x:function(){return t.toFloat()}}})}}),or=vn({cumsum_:function(t,e,n,r){void 0===e&&(e=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var o=nn(t,"x","cumsum"),a=cn([e|=0],o.rank),i=o;null!=a&&(i=o.transpose(a));var s=pn(1,o.rank)[0],u=St.runKernel(function(t){return t.cumsum(i,s,n,r)},{permutedX:i},function(t){return {permutedX:function(){return t.cumsum(e,n,!r)}}});return null!=a&&(u=u.transpose(a)),u}}),ar=vn({depthToSpace_:function(t,e,n){void 0===n&&(n="NHWC");var r=nn(t,"x","depthToSpace"),o="NHWC"===n?r.shape[1]:r.shape[2],a="NHWC"===n?r.shape[2]:r.shape[3],i="NHWC"===n?r.shape[3]:r.shape[1];return f(o*e>=0,function(){return "Negative dimension size caused by overflow when multiplying\n "+o+" and "+e+" for depthToSpace with input shape\n "+r.shape}),f(a*e>=0,function(){return "Negative dimension size caused by overflow when multiplying\n "+a+" and "+e+" for depthToSpace with input shape\n "+r.shape}),f(i%(e*e)==0,function(){return "Dimension size must be evenly divisible by "+e*e+" but is "+i+" for depthToSpace with input shape "+r.shape}),St.runKernel(function(t){return t.depthToSpace(r,e,n)},{$x:r})}}),ir=vn({expandDims_:function(t,e){void 0===e&&(e=0);var n=nn(t,"x","expandDims",null);f(e<=n.rank,function(){return "Axis must be <= rank of the tensor"});var r=n.shape.slice();return e<0&&(f(-(n.rank+1)<=e,function(){return "Axis must be in the interval ["+-(n.rank+1)+", "+n.rank+"]"}),e=n.rank+e+1),r.splice(e,0,1),xr(n,r)}}),sr=vn({eye_:function(t,e,n,r){void 0===r&&(r="float32"),null==e&&(e=t);for(var o=Zn([t,e],r),a=t<=e?t:e,i=0;i2)throw new Error("Rank of probabilities must be 1 or 2, but is "+i);n=n||Math.random();var s=1===i?o.as2D(1,-1):o,u=St.runKernel(function(t){return t.multinomial(s,r,e,n)},{logits2D:s});return 1===i?u.as1D():u}}),lr=vn({oneHot_:function(t,e,n,r){if(void 0===n&&(n=1),void 0===r&&(r=0),e<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+e);var o=nn(t,"indices","oneHot","int32"),a=o.shape.concat([e]);return o=o.flatten(),St.runKernel(function(t){return t.oneHot(o,e,n,r)},{$indices:o},function(t){return {$indices:function(){return An(o.shape,"float32")}}}).reshape(a)}}),cr=vn({pad_:function(t,e,n){void 0===n&&(n=0);var r=nn(t,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var o=e.map(function(t){return t[0]});return St.runKernel(function(t){return t.pad(r,e,n)},{$x:r},function(t){return {$x:function(){return t.slice(o,r.shape)}}})}}),hr=vn({pad1d_:function(t,e,n){return void 0===n&&(n=0),f(2===e.length,function(){return "Invalid number of paddings. Must be length of 2."}),cr(t,[e],n)}}),pr=vn({pad2d_:function(t,e,n){return void 0===n&&(n=0),f(2===e.length&&2===e[0].length&&2===e[1].length,function(){return "Invalid number of paddings. Must be length of 2 each."}),cr(t,e,n)}}),fr=vn({pad3d_:function(t,e,n){return void 0===n&&(n=0),f(3===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length,function(){return "Invalid number of paddings. Must be length of 2 each."}),cr(t,e,n)}}),dr=vn({pad4d_:function(t,e,n){return void 0===n&&(n=0),f(4===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length&&2===e[3].length,function(){return "Invalid number of paddings. Must be length of 2 each."}),cr(t,e,n)}}),vr=vn({rand_:function(t,e,n){var r=g(t),o=null;if(null==n||"float32"===n)o=new Float32Array(r);else if("int32"===n)o=new Int32Array(r);else{if("bool"!==n)throw new Error("Unknown data type "+n);o=new Uint8Array(r);}for(var a=0;a=1+e.length,function(){return "input rank "+r.rank+" should be > than [blockShape] "+e.length}),f(n.length===e.length,function(){return "paddings.shape[0] "+n.length+" must be equal to [blockShape] "+e.length}),f(r.shape.reduce(function(t,r,o){return o>0&&o<=e.length?t&&(r+n[o-1][0]+n[o-1][1])%e[o-1]==0:t},!0),function(){return "input spatial dimensions "+r.shape.slice(1)+" with paddings "+n.toString()+" must be divisible by blockShapes "+e.toString()}),St.runKernel(function(t){return t.spaceToBatchND(r,e,n)},{$x:r},function(t){return {$x:function(){return t.batchToSpaceND(e,n)}}})}}),wr=vn({squeeze_:function(t,e){var n=nn(t,"x","squeeze");return xr(n,k(n.shape,e).newShape)}}),Cr=vn({stack_:function(t,e){void 0===e&&(e=0);var n=rn(t,"tensors","stack");if(f(n.length>=1,function(){return "Pass at least one tensor to tf.stack"}),1===n.length)return n[0].expandDims(e);var r=n[0].rank,o=n[0].shape,a=n[0].dtype;f(e<=r,function(){return "Axis must be <= rank of the tensor"}),n.forEach(function(t){d(o,t.shape,"All tensors passed to stack must have matching shapes");}),n.forEach(function(t){f(a===t.dtype,function(){return "All tensors passed to stack must have matching dtypes"});});var i=n.map(function(t){return t.expandDims(e)});return Mn(i,e)}}),Er=vn({tile_:function(t,e){var n=nn(t,"x","tile",null);return f(n.rank===e.length,function(){return "Error in transpose: rank of input "+n.rank+" must match length of reps "+e+"."}),St.runKernel(function(t,r){var o=t.tile(n,e);return r([n]),o},{$x:n},function(t,n){var r=n[0];return {$x:function(){var n=Fn(r);if(1===r.rank)for(var o=0;o=-n.shape.length&&e=2*e+1||o%2==1?i.push(o):a.push(o);r.push.apply(r,a),r.push(0),r.push.apply(r,i);}return r}function Ar(t,e,n,r){void 0===r&&(r=!0);var o=[];r?o.push(t[0]/n):o.push(t[0]*n);for(var a=1;at.rank)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+e.shape[e.rank-1]+" vs. "+t.rank);if(0===t.size)throw new Error("Requested more than 0 entries, but input is empty. Input shape: "+t.shape+".");for(var n=e.shape,r=n[n.length-1],o=1,a=0;a1?e.shape[e.rank-1]:1,o=e.rank>1?e.rank-1:1,a="Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: "+n.shape+", indices.shape: "+e.shape+", shape: "+t+", sliceDim: "+r+", and batchDim: "+o+".";if(n.rank1?e.shape[e.rank-1]:1,o=n.length,a=1,i=r;i0;)1&t&&e.push(n),t/=2,n++;return e}function Lr(t,e,n){for(var r=[],o=0;o0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var s=r[o];return a<0&&(a+=s),a=c(0,a,s-1)}function Ur(t,e,n,r,o){var a=e[o],i=n[o]||1;(t&1<0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var s=r[o];return a<0&&(a+=s),a=i>0?c(0,a,s):c(-1,a,s-1)}function Vr(t,e,n){for(var r=n.length,o=0;o1){r=o;break}for(o=r+1;o0||n[o]!==t[o])return !1;return !0}function zr(t,e){for(var n=t.length>0?t[t.length-1]:1,r=0;r0,function(){return "variableGrads() expects at least one of the input variables to be trainable, but none of the "+a+" variables is trainable."});var i=St.gradients(t,e,null,!0),s=i.value,u=i.grads;f(u.some(function(t){return null!=t}),function(){return "Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."}),f(0===s.rank,function(){return "The f passed in variableGrads(f) must return a scalar, but it returned a rank-"+s.rank+" tensor"});var l={};return e.forEach(function(t,e){null!=u[e]&&(l[t.name]=u[e]);}),null!=o&&o.forEach(function(t){return l[t.name]=null}),{value:s,grads:l}}function jr(t){return St.customGrad(t)}function Xr(t){if(t.filter(function(t){return null==t}).length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that\n the f you passed encloses all operations that lead from x to y.")}var Yr=vn({softmax_:function(t,e){void 0===e&&(e=-1);var n=nn(t,"logits","softmax");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error("Softmax along a non-last dimension is not yet supported. Logits was rank "+n.rank+" and dim was "+e);return jr(function(t,n){var r=t.logSumExp([e],!0),o=t.toFloat().sub(r).exp();return n([o]),{value:o,gradFunc:function(t,n){var r=n[0],o=t.mul(r);return o.sub(o.sum([e],!0).mul(r))}}})(n)}}),Qr=vn({logSoftmax_:function(t,e){void 0===e&&(e=-1);var n=nn(t,"logits","logSoftmax");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error("Log Softmax along a non-last dimension is not yet supported. Logits was rank "+n.rank+" and axis was "+e);return jr(function(t,n){var r=t.max(e,!0),o=t.sub(r),a=o.toFloat().sub(o.exp().sum(e,!0).log());return n([a]),{value:a,gradFunc:function(t,n){var r=n[0].exp();return t.sub(t.sum(e,!0).mul(r))}}})(n)}}),Jr=function(){function t(t,e){this.backend=t,this.dataMover=e,this.data=new WeakMap;}return t.prototype.get=function(t){return this.data.has(t)||this.dataMover.moveData(this.backend,t),this.data.get(t)},t.prototype.set=function(t,e){this.data.set(t,e);},t.prototype.has=function(t){return this.data.has(t)},t.prototype.delete=function(t){return this.data.delete(t)},t}(),Zr=function(){function t(){}return t.prototype.time=function(t){throw new Error("Not yet implemented.")},t.prototype.read=function(t){throw new Error("Not yet implemented.")},t.prototype.readSync=function(t){throw new Error("Not yet implemented.")},t.prototype.disposeData=function(t){throw new Error("Not yet implemented.")},t.prototype.write=function(t,e){throw new Error("Not yet implemented.")},t.prototype.fromPixels=function(t,e){throw new Error("Not yet implemented.")},t.prototype.register=function(t,e,n){throw new Error("Not yet implemented.")},t.prototype.memory=function(){throw new Error("Not yet implemented.")},t.prototype.floatPrecision=function(){throw new Error("Not yet implemented")},t.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},t.prototype.batchMatMul=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.fusedBatchMatMul=function(t){t.a,t.b,t.transposeA,t.transposeB,t.bias,t.activation,t.preluActivationWeights;throw new Error("Not yet implemented")},t.prototype.slice=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.stridedSlice=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.unstack=function(t,e){throw new Error("Not yet implemented")},t.prototype.reverse=function(t,e){throw new Error("Not yet implemented")},t.prototype.concat=function(t,e){throw new Error("Not yet implemented")},t.prototype.neg=function(t){throw new Error("Not yet implemented")},t.prototype.add=function(t,e){throw new Error("Not yet implemented")},t.prototype.addN=function(t){throw new Error("Not yet implemented")},t.prototype.subtract=function(t,e){throw new Error("Not yet implemented")},t.prototype.multiply=function(t,e){throw new Error("Not yet implemented")},t.prototype.realDivide=function(t,e){throw new Error("Not yet implemented")},t.prototype.floorDiv=function(t,e){throw new Error("Not yet implemented")},t.prototype.sum=function(t,e){throw new Error("Not yet implemented")},t.prototype.prod=function(t,e){throw new Error("Not yet implemented")},t.prototype.unsortedSegmentSum=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.argMin=function(t,e){throw new Error("Not yet implemented")},t.prototype.argMax=function(t,e){throw new Error("Not yet implemented")},t.prototype.equal=function(t,e){throw new Error("Not yet implemented")},t.prototype.notEqual=function(t,e){throw new Error("Not yet implemented")},t.prototype.less=function(t,e){throw new Error("Not yet implemented")},t.prototype.lessEqual=function(t,e){throw new Error("Not yet implemented")},t.prototype.greater=function(t,e){throw new Error("Not yet implemented")},t.prototype.greaterEqual=function(t,e){throw new Error("Not yet implemented")},t.prototype.logicalNot=function(t){throw new Error("Not yet implemented")},t.prototype.logicalAnd=function(t,e){throw new Error("Not yet implemented")},t.prototype.logicalOr=function(t,e){throw new Error("Not yet implemented")},t.prototype.where=function(t){throw new Error("Not yet implemented")},t.prototype.select=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.topk=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.min=function(t,e){throw new Error("Not yet implemented")},t.prototype.minimum=function(t,e){throw new Error("Not yet implemented")},t.prototype.mod=function(t,e){throw new Error("Not yet implemented")},t.prototype.max=function(t,e){throw new Error("Not yet implemented")},t.prototype.maximum=function(t,e){throw new Error("Not yet implemented")},t.prototype.all=function(t,e){throw new Error("Not yet implemented")},t.prototype.any=function(t,e){throw new Error("Not yet implemented")},t.prototype.squaredDifference=function(t,e){throw new Error("Not yet implemented")},t.prototype.ceil=function(t){throw new Error("Not yet implemented")},t.prototype.floor=function(t){throw new Error("Not yet implemented")},t.prototype.round=function(t){throw new Error("Not yet implemented")},t.prototype.sign=function(t){throw new Error("Not yet implemented")},t.prototype.isNaN=function(t){throw new Error("Not yet implemented")},t.prototype.isInf=function(t){throw new Error("Not yet implemented")},t.prototype.isFinite=function(t){throw new Error("Not yet implemented")},t.prototype.pow=function(t,e){throw new Error("Not yet implemented")},t.prototype.exp=function(t){throw new Error("Not yet implemented")},t.prototype.expm1=function(t){throw new Error("Not yet implemented")},t.prototype.log=function(t){throw new Error("Not yet implemented")},t.prototype.log1p=function(t){throw new Error("Not yet implemented")},t.prototype.sqrt=function(t){throw new Error("Not yet implemented")},t.prototype.rsqrt=function(t){throw new Error("Not yet implemented")},t.prototype.square=function(t){throw new Error("Not yet implemented")},t.prototype.reciprocal=function(t){throw new Error("Not yet implemented")},t.prototype.relu=function(t){throw new Error("Not yet implemented")},t.prototype.prelu=function(t,e){throw new Error("Not yet implemented")},t.prototype.elu=function(t){throw new Error("Not yet implemented")},t.prototype.eluDer=function(t,e){throw new Error("Not yet implemented")},t.prototype.selu=function(t){throw new Error("Not yet implemented")},t.prototype.int=function(t){throw new Error("Not yet implemented")},t.prototype.clip=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.abs=function(t){throw new Error("Not yet implemented")},t.prototype.complexAbs=function(t){throw new Error("Not yet implemented")},t.prototype.sigmoid=function(t){throw new Error("Not yet implemented")},t.prototype.softplus=function(t){throw new Error("Not yet implemented")},t.prototype.sin=function(t){throw new Error("Not yet implemented")},t.prototype.cos=function(t){throw new Error("Not yet implemented")},t.prototype.tan=function(t){throw new Error("Not yet implemented")},t.prototype.asin=function(t){throw new Error("Not yet implemented")},t.prototype.acos=function(t){throw new Error("Not yet implemented")},t.prototype.atan=function(t){throw new Error("Not yet implemented")},t.prototype.atan2=function(t,e){throw new Error("Not yet implemented")},t.prototype.sinh=function(t){throw new Error("Not yet implemented")},t.prototype.cosh=function(t){throw new Error("Not yet implemented")},t.prototype.tanh=function(t){throw new Error("Not yet implemented")},t.prototype.asinh=function(t){throw new Error("Not yet implemented")},t.prototype.acosh=function(t){throw new Error("Not yet implemented")},t.prototype.atanh=function(t){throw new Error("Not yet implemented")},t.prototype.erf=function(t){throw new Error("Not yet implemented")},t.prototype.step=function(t,e){throw new Error("Not yet implemented")},t.prototype.fusedConv2d=function(t,e,n,r,o,a){throw new Error("Not yet implemented")},t.prototype.conv2d=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.conv2dDerInput=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.conv2dDerFilter=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.depthwiseConv2D=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.depthwiseConv2DDerInput=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.depthwiseConv2DDerFilter=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.conv3d=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.conv3dDerInput=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.conv3dDerFilter=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.maxPool=function(t,e){throw new Error("Not yet implemented")},t.prototype.maxPoolBackprop=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.avgPool=function(t,e){throw new Error("Not yet implemented")},t.prototype.avgPoolBackprop=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.avgPool3d=function(t,e){throw new Error("Not yet implemented")},t.prototype.avgPool3dBackprop=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.maxPool3d=function(t,e){throw new Error("Not yet implemented")},t.prototype.maxPool3dBackprop=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.reshape=function(t,e){throw new Error("Not yet implemented")},t.prototype.cast=function(t,e){throw new Error("Not yet implemented")},t.prototype.tile=function(t,e){throw new Error("Not yet implemented")},t.prototype.pad=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.transpose=function(t,e){throw new Error("Not yet implemented")},t.prototype.gather=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.gatherND=function(t,e){throw new Error("Not yet implemented")},t.prototype.scatterND=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.batchToSpaceND=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.spaceToBatchND=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.resizeBilinear=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.resizeBilinearBackprop=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.resizeNearestNeighbor=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.resizeNearestNeighborBackprop=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.batchNormalization=function(t,e,n,r,o,a){throw new Error("Not yet implemented")},t.prototype.localResponseNormalization4D=function(t,e,n,r,o){throw new Error("Not yet implemented")},t.prototype.LRNGrad=function(t,e,n,r,o,a,i){throw new Error("Not yet implemented")},t.prototype.multinomial=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.oneHot=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.cumsum=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.nonMaxSuppression=function(t,e,n,r,o){throw new Error("Not yet implemented")},t.prototype.fft=function(t){throw new Error("Not yet implemented")},t.prototype.ifft=function(t){throw new Error("Not yet implemented")},t.prototype.complex=function(t,e){throw new Error("Not yet implemented")},t.prototype.real=function(t){throw new Error("Not yet implemented")},t.prototype.imag=function(t){throw new Error("Not yet implemented")},t.prototype.cropAndResize=function(t,e,n,r,o,a){throw new Error("Not yet implemented")},t.prototype.depthToSpace=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.split=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.sparseToDense=function(t,e,n,r){throw new Error("Not yet implemented")},t.prototype.diag=function(t){throw new Error("Not yet implemented")},t.prototype.fill=function(t,e,n){throw new Error("Not yet implemented.")},t.prototype.onesLike=function(t){throw new Error("Not yet implemented")},t.prototype.zerosLike=function(t){throw new Error("Not yet implemented")},t.prototype.linspace=function(t,e,n){throw new Error("Not yet implemented")},t.prototype.dispose=function(){throw new Error("Not yet implemented")},t}();function to(t,e){for(var n=t.length,r=[],o=0;o1&&1===i&&r.unshift(a);}return r}function eo(t,e){for(var n=[],r=0;r1)&&n.unshift(a);}return n}function no(t,e){for(var n=[],r=Math.max(t.length,e.length),o=0;oo}).sort(function(t,e){return e.score-t.score}),i=[],s=0;s=0;--p){if(Io(t,c,i[p])>=r){h=!0;break}}if(!h&&(i.push(c),i.length>=n))break}return Cn(i,"int32")}function Io(t,e,n){var r=t.subarray(4*e,4*e+4),o=t.subarray(4*n,4*n+4),a=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),l=Math.min(o[0],o[2]),c=Math.min(o[1],o[3]),h=Math.max(o[0],o[2]),p=Math.max(o[1],o[3]),f=(s-a)*(u-i),d=(h-l)*(p-c);if(f<=0||d<=0)return 0;var v=Math.max(a,l),m=Math.max(i,c),g=Math.min(s,h),y=Math.min(u,p),x=Math.max(g-v,0)*Math.max(y-m,0);return x/(f+d-x)}function ko(t,e,n){var r=new Array(t.rank).fill(0),o=t.shape.slice();return e.map(function(e){o[n]=e;var a=t.slice(r,o);return r[n]+=e,a})}function No(t,e){for(var n=new Array(t.rank),r=0;r":"<",u=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+r+";\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < "+r+"; i++) {\n int inIdx = "+u+";\n float candidate = getA(batch, inIdx);\n if (candidate "+s+" bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n ";}}();function Oo(t,e){return ["x","y","z","w","u","v"].slice(0,e).map(function(e){return t+"."+e})}function Fo(t,e){return 1===e?[t]:Oo(t,e)}function Mo(){var t,e,n,r,o,a,s,u,l,c;return 2===i.getNumber("WEBGL_VERSION")?(t="#version 300 es",e="in",n="out",r="in",o="texture",a="outputColor",s="out vec4 outputColor;",u="\n bool isnan_custom(float val) {\n return (val > 0. || val < 0. || val == 0.) ? false : true;\n }\n ",l="",c="\n #define round(value) newRound(value)\n int newRound(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 newRound(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "):(t="",e="attribute",n="varying",r="varying",o="texture2D",a="gl_FragColor",s="",u="\n bool isnan_custom(float val) {\n return (val > 0. || val < 1. || val == 0.) ? false : true;\n }\n ",l="\n uniform float INFINITY;\n\n bool isinf(float val) {\n return abs(val) == INFINITY;\n }\n bvec4 isinf(vec4 val) {\n return equal(abs(val), vec4(INFINITY));\n }\n ",c="\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 round(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "),{version:t,attribute:e,varyingVs:n,varyingFs:r,texture2D:o,output:a,defineOutput:s,defineSpecialNaN:u,defineSpecialInf:l,defineRound:c}}function Bo(t,e,n){void 0===n&&(n="index");var r=V(e);return r.map(function(e,o){return "int "+t[o]+" = "+n+" / "+e+"; "+(o===r.length-1?"int "+t[o+1]+" = "+n+" - "+t[o]+" * "+e:"index -= "+t[o]+" * "+e)+";"}).join("")}function Po(t){var e=V(t).map(function(t){return t.toString()});return "\n int getFlatIndex(ivec3 coords) {\n return coords.x * "+e[0]+" + coords.y * "+e[1]+" + coords.z;\n }\n"}var Lo="\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n lowp vec4 encode_float(highp float v) {\n if (isnan(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n";function Wo(t,e,n,r){var o=[];t.forEach(function(t){var e=g(t.shapeInfo.logicalShape);t.shapeInfo.isUniform?o.push("uniform float "+t.name+(e>1?"["+e+"]":"")+";"):(o.push("uniform sampler2D "+t.name+";"),o.push("uniform int offset"+t.name+";"));});var a,i,s=o.join("\n"),u=t.map(function(t){return function(t,e,n){void 0===n&&(n=!1);var r="";r+=n?Vo(t):Uo(t);var o=t.shapeInfo.logicalShape,a=e.logicalShape;o.length<=a.length&&(r+=n?function(t,e){var n,r=t.name,o=r.charAt(0).toUpperCase()+r.slice(1),a="get"+o+"AtOutCoords",i=t.shapeInfo.logicalShape.length,s=e.logicalShape.length,u=to(t.shapeInfo.logicalShape,e.logicalShape),l=jo(s),c=s-i,h=["x","y","z","w","u","v"];n=0===i?"":s<2&&u.length>=1?"coords = 0;":u.map(function(t){return "coords."+h[t+c]+" = 0;"}).join("\n");var p="";p=s<2&&i>0?"coords":t.shapeInfo.logicalShape.map(function(t,e){return "coords."+h[e+c]}).join(", ");var f="return outputValue;",d=1===g(t.shapeInfo.logicalShape),v=1===g(e.logicalShape);if(1!==i||d||v){if(d&&!v)f=1===s?"\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n ":"\n return vec4(outputValue.x);\n ";else if(u.length){var m=i-2,y=i-1;u.indexOf(m)>-1&&u.indexOf(y)>-1?f="return vec4(outputValue.x);":u.indexOf(m)>-1?f="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":u.indexOf(y)>-1&&(f="return vec4(outputValue.xx, outputValue.zz);");}}else f="\n return vec4(outputValue.xy, outputValue.xy);\n ";return "\n vec4 "+a+"() {\n "+l+" coords = getOutputCoords();\n "+n+"\n vec4 outputValue = get"+o+"("+p+");\n "+f+"\n }\n "}(t,e):function(t,e){var n=t.name,r=n.charAt(0).toUpperCase()+n.slice(1),o="get"+r+"AtOutCoords",a=e.texShape,i=t.shapeInfo.texShape,s=t.shapeInfo.logicalShape.length,u=e.logicalShape.length;if(!t.shapeInfo.isUniform&&s===u&&null==t.shapeInfo.flatOffset&&y(i,a))return "\n float "+o+"() {\n return sampleTexture("+n+", resultUV);\n }\n ";var l,c=jo(u),h=to(t.shapeInfo.logicalShape,e.logicalShape),p=u-s,f=["x","y","z","w","u","v"];l=0===s?"":u<2&&h.length>=1?"coords = 0;":h.map(function(t){return "coords."+f[t+p]+" = 0;"}).join("\n");var d="";d=u<2&&s>0?"coords":t.shapeInfo.logicalShape.map(function(t,e){return "coords."+f[e+p]}).join(", ");return "\n float "+o+"() {\n "+c+" coords = getOutputCoords();\n "+l+"\n return get"+r+"("+d+");\n }\n "}(t,e));return r}(t,e,r)}).join("\n"),l=e.texShape,c=Mo(),h=function(t){return "\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return "+t.texture2D+"(textureSampler, uv).r;\n }\n "}(c),p=function(t){return t.version+"\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n "+t.varyingFs+" vec2 resultUV;\n "+t.defineOutput+"\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n uniform float NAN;\n #define isnan(value) isnan_custom(value)\n "+t.defineSpecialNaN+"\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));\n }\n\n "+t.defineSpecialInf+"\n "+t.defineRound+"\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n int idiv(int a, int b, float sign) {\n int res = a / b;\n int mod = imod(a, b);\n if (sign < 0. && mod != 0) {\n res -= 1;\n }\n return res;\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n "+zo+"\n "+Go+"\n "+Ho+"\n "}(c);return e.isPacked?(a=function(t,e){switch(t.length){case 0:return "\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(1===n[0])return "\n int getOutputCoords() {\n return 2 * int(resultUV.x * "+n[1]+".0);\n }\n ";if(1===n[1])return "\n int getOutputCoords() {\n return 2 * int(resultUV.y * "+n[0]+".0);\n }\n ";return "\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n return 2 * (resTexRC.x * "+n[1]+" + resTexRC.y);\n }\n "}(0,e);case 2:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(y(t,e))return "\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2("+n[0]+", "+n[1]+"));\n }\n ";var r=Math.ceil(t[1]/2);return "\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec2(r, c);\n }\n "}(t,e);case 3:return n=t,r=e,o=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)],a=Math.ceil(n[2]/2),i=a*Math.ceil(n[1]/2),"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+o[0]+", "+o[1]+"));\n int index = resTexRC.x * "+o[1]+" + resTexRC.y;\n\n int b = index / "+i+";\n index -= b * "+i+";\n\n int r = 2 * (index / "+a+");\n int c = imod(index, "+a+") * 2;\n\n return ivec3(b, r, c);\n }\n ";default:return function(t,e){for(var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)],r=Math.ceil(t[t.length-1]/2),o=r*Math.ceil(t[t.length-2]/2),a=o,i="",s="b, r, c",u=2;u2,function(){return "Packed arg"+(n.charAt(0).toUpperCase()+n.slice(1))+" supports only inputs with rank above 2."});var o=t[t.length-1],a=Math.ceil(o/e);this.outputShape=t.slice(0,-1),a>1&&this.outputShape.push(a),r||this.variableNames.push("bestIndicesA");var i,s,u=this.outputShape,l=u.length,c=jo(l),h=Fo("coords",l);if(1===a){var p=jo(s=l+1);i="\n "+p+" sourceLocR = "+p+"("+h.join()+", 0);\n ++"+h[l-1]+";\n "+p+" sourceLocG = "+p+"("+h.join()+", 0);\n ++"+h[l-2]+";\n "+p+" sourceLocA = "+p+"("+h.join()+", 0);\n --"+h[l-1]+";\n "+p+" sourceLocB = "+p+"("+h.join()+", 0);\n --"+h[l-2]+";";}else s=l,i="\n "+c+" sourceLocR = coords;\n ++"+h[l-1]+";\n "+c+" sourceLocG = coords;\n ++"+h[l-2]+";\n "+c+" sourceLocA = coords;\n --"+h[l-1]+";\n "+c+" sourceLocB = coords;\n --"+h[l-2]+";";var d=["x","y","z","w","u","v"].slice(0,s),v="."+d[s-1],m=d.map(function(t){return "int "+t}),g=Fo("sourceLocR",s-1).concat("inIdx.r"),y=Fo("sourceLocG",s-1).concat("inIdx.g"),x=Fo("sourceLocB",s-1).concat("inIdx.b"),b=Fo("sourceLocA",s-1).concat("inIdx.a"),w="max"===n?"greaterThan":"lessThan",C=r?"":"\n inIdx = round(vec4(getBestIndicesAChannel("+g.join()+"),\n getBestIndicesAChannel("+y.join()+"),\n getBestIndicesAChannel("+x.join()+"),\n getBestIndicesAChannel("+b.join()+")));",E="vec4(\n getAChannel("+g.join()+"),\n hasNextCol ? getAChannel("+y.join()+") : 0.,\n hasNextRow ? getAChannel("+x.join()+") : 0.,\n hasNextRow && hasNextCol ? getAChannel("+b.join()+") : 0.)",R=r?"":"\n float getBestIndicesAChannel("+m.join()+") {\n return getChannel(getBestIndicesA("+d.join()+"),\n vec2("+d.slice(-2).join()+"));\n }";this.userCode="\n float getAChannel("+m.join()+") {\n return getChannel(getA("+d.join()+"),\n vec2("+d.slice(-2).join()+"));\n }\n "+R+"\n void main() {\n "+c+" coords = getOutputCoords();\n bool hasNextCol = "+h[l-1]+" < "+(u[l-1]-1)+";\n bool hasNextRow = "+h[l-2]+" < "+(u[l-2]-1)+";\n "+i+"\n ivec4 srcIdx = ivec4(sourceLocR"+v+", sourceLocG"+v+",\n sourceLocB"+v+", sourceLocA"+v+") * "+e+";\n ivec4 inIdx = srcIdx;\n vec4 bestIndex = vec4(inIdx);\n vec4 bestValue = "+E+";\n\n for (int i = 0; i < "+e+"; i++) {\n inIdx = srcIdx;\n "+C+"\n vec4 candidate = "+E+";\n bvec4 nan = isnan(candidate);\n bvec4 replace = bvec4(\n vec4("+w+"(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));\n\n bestValue = vec4(replace.x ? candidate.x : bestValue.x,\n replace.y ? candidate.y : bestValue.y,\n replace.z ? candidate.z : bestValue.z,\n replace.w ? candidate.w : bestValue.w);\n bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));\n srcIdx++;\n }\n setOutput(bestIndex);\n }\n ";}}(),Jo=function(){return function(t){this.variableNames=["dy"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a=t.dilationHeight,i=t.dilationWidth,s=t.effectiveFilterHeight,u=t.effectiveFilterWidth,l=s-1-t.padInfo.top,c=u-1-t.padInfo.left,h=1/(e*n);this.userCode="\n const ivec2 pads = ivec2("+l+", "+c+");\n const float avgMultiplier = float("+h+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+s+";\n wR += "+a+") {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+u+";\n wC+= "+i+") {\n float dyC = float(dyCCorner + wC) / "+o+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n ";}}(),Zo=function(){return function(t){this.variableNames=["dy"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,l=t.dilationWidth,c=t.effectiveFilterDepth,h=t.effectiveFilterHeight,p=t.effectiveFilterWidth,f=c-1-t.padInfo.front,d=h-1-t.padInfo.top,v=p-1-t.padInfo.left,m=1/(e*n*r);this.userCode="\n const ivec3 pads = ivec3("+f+", "+d+", "+v+");\n const float avgMultiplier = float("+m+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < "+c+";\n wD += "+s+") {\n float dyD = float(dyDCorner + wD) / "+o+".0;\n\n if (dyD < 0.0 || dyD >= "+t.outDepth+".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < "+h+";\n wR += "+u+") {\n float dyR = float(dyRCorner + wR) / "+a+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+p+";\n wC += "+l+") {\n float dyC = float(dyCCorner + wC) / "+i+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n }\n setOutput(dotProd);\n }\n ";}}(),ta=function(){return function(t,e,n,r,o,a){this.outputShape=[],this.variableNames=["x","mean","variance"],no(t,e),no(t,n);var i="0.0";null!=r&&(no(t,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");var s="1.0";null!=o&&(no(t,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=t,this.userCode="\n void main() {\n float x = getXAtOutCoords();\n float mean = getMeanAtOutCoords();\n float variance = getVarianceAtOutCoords();\n float offset = "+i+";\n float scale = "+s+";\n float inv = scale * inversesqrt(variance + float("+a+"));\n setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\n }\n ";}}(),ea=function(){return function(t,e,n,r,o,a){this.usesPackedTextures=!0,this.variableNames=["x","mean","variance"],no(t,e),no(t,n);var i="vec4(0.0)";null!=r&&(no(t,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");var s="vec4(1.0)";null!=o&&(no(t,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=t,this.userCode="\n void main() {\n vec4 offset = "+i+";\n vec4 scale = "+s+";\n\n vec4 x = getXAtOutCoords();\n vec4 mean = getMeanAtOutCoords();\n vec4 variance = getVarianceAtOutCoords();\n\n vec4 inv = scale * inversesqrt(variance + vec4("+a+"));\n\n setOutput((x - mean) * inv + offset);\n }\n ";}}(),na="return areal * breal - aimag * bimag;",ra="return areal * bimag + aimag * breal;",oa=function(){return function(t,e,n){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=no(e,n),this.userCode="\n float binaryOpComplex(\n float areal, float aimag, float breal, float bimag) {\n "+t+"\n }\n\n void main() {\n float areal = getARealAtOutCoords();\n float aimag = getAImagAtOutCoords();\n float breal = getBRealAtOutCoords();\n float bimag = getBImagAtOutCoords();\n setOutput(binaryOpComplex(areal, aimag, breal, bimag));\n }\n ";}}(),aa="return a + b;",ia="return a - b;",sa="return a * b;",ua="return (a < 0.) ? b * a : a;",la=function(){return function(t,e,n){this.variableNames=["A","B"],this.outputShape=no(e,n),this.userCode="\n float binaryOperation(float a, float b) {\n "+t+"\n }\n\n void main() {\n float a = getAAtOutCoords();\n float b = getBAtOutCoords();\n setOutput(binaryOperation(a, b));\n }\n ";}}(),ca="\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n",ha=function(){return function(t,e,n,r){void 0===r&&(r=!1),this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.usesPackedTextures=!0,this.outputShape=no(e,n);var o=this.outputShape.length,a="";if(r)if(0===o||1===g(this.outputShape))a="\n result.y = 0.;\n result.z = 0.;\n result.w = 0.;\n ";else if(a="\n "+jo(o)+" coords = getOutputCoords();\n ",1===o)a+="\n result.y = (coords + 1) >= "+this.outputShape[0]+" ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n ";else{var i=Fo("coords",o);a+="\n bool nextRowOutOfBounds =\n ("+i[o-2]+" + 1) >= "+this.outputShape[o-2]+";\n bool nextColOutOfBounds =\n ("+i[o-1]+" + 1) >= "+this.outputShape[o-1]+";\n result.y = nextColOutOfBounds ? 0. : result.y;\n result.z = nextRowOutOfBounds ? 0. : result.z;\n result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n ";}this.userCode="\n vec4 binaryOperation(vec4 a, vec4 b) {\n "+t+"\n }\n\n void main() {\n vec4 a = getAAtOutCoords();\n vec4 b = getBAtOutCoords();\n\n vec4 result = binaryOperation(a, b);\n "+a+"\n\n setOutput(result);\n }\n ";}}(),pa=function(){function t(t){this.variableNames=["A"],this.outputShape=t,this.userCode="\n uniform float minVal;\n uniform float maxVal;\n\n void main() {\n float value = getAAtOutCoords();\n if (isnan(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, minVal, maxVal));\n }\n ";}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,o){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(o,"minVal"),n.maxLoc=r.getUniformLocationNoThrow(o,"maxVal")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e);}},t}(),fa=function(){function t(t){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=t,this.userCode="\n uniform float minVal;\n uniform float maxVal;\n\n void main() {\n vec4 value = getAAtOutCoords();\n\n if (any(isnan(value))) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, vec4(minVal), vec4(maxVal)));\n }\n ";}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,o){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(o,"minVal"),n.maxLoc=r.getUniformLocationNoThrow(o,"maxVal")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e);}},t}(),da=function(){return function(t){this.variableNames=["real","imag"],this.outputShape=t,this.userCode="\n void main() {\n float re = abs(getRealAtOutCoords());\n float im = abs(getImagAtOutCoords());\n float mx = max(re, im);\n\n // sadly the length function in glsl is not underflow-safe\n // (at least not on Intel GPUs). So the safe solution is\n // to ensure underflow-safety in all cases.\n setOutput(\n mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))\n );\n }\n ";}}(),va=function(){return function(t){this.outputShape=[],this.outputShape=dn(t,1),this.variableNames=t.map(function(t,e){return "T"+e});var e=new Array(t.length-1);e[0]=t[0][1];for(var n=1;n= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+o+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n if ("+a+") {\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n } else {\n float dyValue = getDy(b, d2, yR, yC);\n float xValue = getX(b, d1, xR, xC);\n dotProd += (xValue * dyValue);\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n ";}}(),ya=function(){return function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a="channelsLast"===t.dataFormat,i=e-1-t.padInfo.top,s=n-1-t.padInfo.left,u=a?1:2,l=a?2:3,c=a?3:1;this.userCode="\n const ivec2 pads = ivec2("+i+", "+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords["+c+"];\n\n ivec2 dyCorner = ivec2(coords["+u+"], coords["+l+"]) - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+e+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+e+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+o+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+t.outChannels+"; d2++) {\n\n if ("+a+") {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n } else {\n float xValue = getDy(batch, d2, idyR, idyC);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n ";}}(),xa=function(){return function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,o=t.padInfo.front,a=t.padInfo.top,i=t.padInfo.left;this.userCode="\n void main() {\n ivec5 coords = getOutputCoords();\n int wF = coords.x;\n int wR = coords.y;\n int wC = coords.z;\n int d1 = coords.w;\n int d2 = coords.u;\n\n float dotProd = 0.0;\n\n for (int b = 0; b < "+t.batchSize+"; b++) {\n for (int yF = 0; yF < "+t.outDepth+"; yF++) {\n int xF = wF + yF * "+e+" - "+o+";\n\n if (xF < 0 || xF >= "+t.inDepth+") {\n continue;\n }\n\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+n+" - "+a+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+r+" - "+i+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yF, yR, yC, d2);\n float xValue = getX(b, xF, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n ";}}(),ba=function(){return function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=e-1-t.padInfo.front,u=n-1-t.padInfo.top,l=r-1-t.padInfo.left;this.userCode="\n const ivec3 pads = ivec3("+s+", "+u+", "+l+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.u;\n\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyFCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n float dotProd = 0.0;\n for (int wF = 0; wF < "+e+"; wF++) {\n float dyF = float(dyFCorner + wF) / "+o+".0;\n\n if (dyF < 0.0 || dyF >= "+t.outDepth+".0 || fract(dyF) > 0.0) {\n continue;\n }\n int idyF = int(dyF);\n\n int wFPerm = "+e+" - 1 - wF;\n\n for (int wR = 0; wR < "+n+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+a+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+n+" - 1 - wR;\n\n for (int wC = 0; wC < "+r+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+i+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+r+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+t.outChannels+"; d2++) {\n float xValue = getDy(batch, idyF, idyR, idyC, d2);\n float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n }\n setOutput(dotProd);\n }\n ";}}(),wa=function(){return function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,o=t.padInfo.left,a=t.outChannels/t.inChannels;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int dm = coords.w;\n int d2 = d1 * "+a+" + dm;\n\n float dotProd = 0.0;\n\n // TO DO: Vec4 over the batch size\n for (int b = 0; b < "+t.batchSize+"; b++) {\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+e+" - "+r+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+o+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n ";}}(),Ca=function(){return function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a=e-1-t.padInfo.top,i=n-1-t.padInfo.left,s=t.outChannels/t.inChannels;this.userCode="\n const ivec2 pads = ivec2("+a+", "+i+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < "+e+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+e+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+o+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n // TO DO: Vec4 over the channelMul\n for (int dm = 0; dm < "+s+"; dm++) {\n int d2 = d1 * "+s+" + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n ";}}(),Ea=function(){return function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=["x","W"],this.outputShape=t.outShape;var o=t.padInfo.top,a=t.padInfo.left,i=t.strideHeight,s=t.strideWidth,u=t.dilationHeight,l=t.dilationWidth,c=t.filterHeight,h=t.filterWidth,p=4*Math.floor(t.inChannels/4),f=t.inChannels%4,d="channelsLast"===t.dataFormat,v=d?1:2,m=d?2:3,g=d?3:1,y="",x="";n&&(y=r?"float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n "+n+"\n }":"\n float activation(float x) {\n "+n+"\n }\n ",x="result = activation(result);");var b=e?"result += getBiasAtOutCoords();":"";e&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+y+"\n\n const ivec2 strides = ivec2("+i+", "+s+");\n const ivec2 pads = ivec2("+o+", "+a+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords["+g+"];\n\n ivec2 xRCCorner =\n ivec2(coords["+v+"], coords["+m+"]) * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+c+"; wR++) {\n int xR = xRCorner + wR * "+u+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+h+"; wC++) {\n int xC = xCCorner + wC * "+l+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+p+"; d1 += 4) {\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n if ("+d+") {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec4 xValues = vec4(\n getX(batch, d1, xR, xC),\n getX(batch, d1 + 1, xR, xC),\n getX(batch, d1 + 2, xR, xC),\n getX(batch, d1 + 3, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n\n if ("+(1===f)+") {\n\n if ("+d+") {\n dotProd +=\n getX(batch, xR, xC, "+p+") *\n getW(wR, wC, "+p+", d2);\n } else {\n dotProd +=\n getX(batch, "+p+", xR, xC) *\n getW(wR, wC, "+p+", d2);\n }\n\n } else if ("+(2===f)+") {\n vec2 wValues = vec2(\n getW(wR, wC, "+p+", d2),\n getW(wR, wC, "+p+" + 1, d2)\n );\n\n if ("+d+") {\n vec2 xValues = vec2(\n getX(batch, xR, xC, "+p+"),\n getX(batch, xR, xC, "+p+" + 1)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec2 xValues = vec2(\n getX(batch, "+p+", xR, xC),\n getX(batch, "+p+" + 1, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n } else if ("+(3===f)+") {\n vec3 wValues = vec3(\n getW(wR, wC, "+p+", d2),\n getW(wR, wC, "+p+" + 1, d2),\n getW(wR, wC, "+p+" + 2, d2)\n );\n\n if ("+d+") {\n vec3 xValues = vec3(\n getX(batch, xR, xC, "+p+"),\n getX(batch, xR, xC, "+p+" + 1),\n getX(batch, xR, xC, "+p+" + 2)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec3 xValues = vec3(\n getX(batch, "+p+", xR, xC),\n getX(batch, "+p+" + 1, xR, xC),\n getX(batch, "+p+" + 2, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n }\n }\n }\n\n float result = dotProd;\n "+b+"\n "+x+"\n setOutput(result);\n }\n ";}}(),Ra=function(){return function(t){this.variableNames=["x","W"],this.outputShape=t.outShape;var e=t.padInfo.front,n=t.padInfo.top,r=t.padInfo.left,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,l=t.dilationWidth,c=t.filterDepth,h=t.filterHeight,p=t.filterWidth,f=4*Math.floor(t.inChannels/4),d=t.inChannels%4;this.userCode="\n const ivec3 strides = ivec3("+o+", "+a+", "+i+");\n const ivec3 pads = ivec3("+e+", "+n+", "+r+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d2 = coords.u;\n\n ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xFCorner = xFRCCorner.x;\n int xRCorner = xFRCCorner.y;\n int xCCorner = xFRCCorner.z;\n\n // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get\n // y(yF, yR, yC, d2). ? = to be determined. : = across all\n // values in that axis.\n float dotProd = 0.0;\n for (int wF = 0; wF < "+c+"; wF++) {\n int xF = xFCorner + wF * "+s+";\n\n if (xF < 0 || xF >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+h+"; wR++) {\n int xR = xRCorner + wR * "+u+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+p+"; wC++) {\n int xC = xCCorner + wC * "+l+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+f+"; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xF, xR, xC, d1),\n getX(batch, xF, xR, xC, d1 + 1),\n getX(batch, xF, xR, xC, d1 + 2),\n getX(batch, xF, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wF, wR, wC, d1, d2),\n getW(wF, wR, wC, d1 + 1, d2),\n getW(wF, wR, wC, d1 + 2, d2),\n getW(wF, wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if ("+(1===d)+") {\n dotProd +=\n getX(batch, xF, xR, xC, "+f+") *\n getW(wF, wR, wC, "+f+", d2);\n } else if ("+(2===d)+") {\n vec2 xValues = vec2(\n getX(batch, xF, xR, xC, "+f+"),\n getX(batch, xF, xR, xC, "+f+" + 1)\n );\n vec2 wValues = vec2(\n getW(wF, wR, wC, "+f+", d2),\n getW(wF, wR, wC, "+f+" + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if ("+(3===d)+") {\n vec3 xValues = vec3(\n getX(batch, xF, xR, xC, "+f+"),\n getX(batch, xF, xR, xC, "+f+" + 1),\n getX(batch, xF, xR, xC, "+f+" + 2)\n );\n vec3 wValues = vec3(\n getW(wF, wR, wC, "+f+", d2),\n getW(wF, wR, wC, "+f+" + 1, d2),\n getW(wF, wR, wC, "+f+" + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n ";}}(),Ia=function(){return function(t){this.variableNames=["x","W"],this.outputShape=t.outShape;var e=t.inHeight,n=t.inWidth,r=t.padInfo.top,o=t.padInfo.left,a=t.strideHeight,i=t.strideWidth,s=t.dilationHeight,u=t.dilationWidth,l=t.filterHeight,c=t.filterWidth,h=t.outChannels/t.inChannels;this.userCode="\n const ivec2 strides = ivec2("+a+", "+i+");\n const ivec2 pads = ivec2("+r+", "+o+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / "+h+";\n int q = d2 - d1 * "+h+";\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < "+l+"; wR++) {\n int xR = xRCorner + wR * "+s+";\n\n if (xR < 0 || xR >= "+e+") {\n continue;\n }\n\n for (int wC = 0; wC < "+c+"; wC++) {\n int xC = xCCorner + wC * "+u+";\n\n if (xC < 0 || xC >= "+n+") {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n setOutput(dotProd);\n }\n ";}}(),ka=function(){return function(t){this.variableNames=["x","W"],this.usesPackedTextures=!0,this.outputShape=t.outShape;for(var e=t.inHeight,n=t.inWidth,r=t.padInfo.top,o=t.padInfo.left,a=t.strideHeight,i=t.strideWidth,s=t.dilationHeight,u=t.dilationWidth,l=t.filterHeight,c=t.filterWidth,p=c,f="int xR; int xC; int xCOffset;",d=0;d= 0 && xR < "+e+" && xCOffset >= 0 && xCOffset < "+n+") {\n xTexelR"+d+"C"+v+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+d+"C"+v+" = vec4(0.);\n }\n\n xCOffset = xC + 1 - 2;\n if(xR >= 0 && xR < "+e+" && xCOffset >= 0 && xCOffset < "+n+") {\n vec4 previous = getX(batch, xR, xCOffset, d1);\n xR"+d+"C"+v+" = vec4(previous.zw, xTexelR"+d+"C"+v+".xy);\n } else {\n xR"+d+"C"+v+" = vec4(0, 0, xTexelR"+d+"C"+v+".xy);\n }\n ":"\n if(xR >= 0 && xR < "+e+" && xC >= 0 && xC < "+n+") {\n xTexelR"+d+"C"+v+" = getX(batch, xR, xC, d1);\n } else {\n xTexelR"+d+"C"+v+" = vec4(0.);\n }\n\n xR"+d+"C"+v+" = xTexelR"+d+"C"+v+";\n ",v+1= 0 && xR < "+e+" &&\n xCOffset >= 0 && xCOffset < "+n+") {\n xTexelR"+d+"C"+(v+2)+" = getX(batch, xR, xCOffset, d1);\n }\n ",u>1&&(f+="\n xCOffset -= 2;\n if(xR >= 0 && xR < "+e+" &&\n xCOffset >= 0 && xCOffset < "+n+") {\n xTexelR"+d+"C"+v+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+d+"C"+v+" = vec4(0.);\n }\n "),f+="\n xR"+d+"C"+(v+1)+" = vec4(\n xTexelR"+d+"C"+v+".zw, xTexelR"+d+"C"+(v+2)+".xy);\n "):f+="\n xCOffset = xC + "+g+";\n\n if(xR >= 0 && xR < "+e+" &&\n xCOffset >= 0 && xCOffset < "+n+") {\n xTexelR"+d+"C"+(v+2)+" = getX(batch, xR, xCOffset, d1);\n }\n\n xR"+d+"C"+(v+1)+" = xTexelR"+d+"C"+(v+2)+";\n ";}}else v= 0 && xR < "+e+") {\n ",o%2==1?(f+="\n xCOffset = xC + 1 - "+i+";\n if(xCOffset >= 0 && xCOffset < "+n+") {\n xTexelR"+d+"C"+v+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+d+"C"+v+" = vec4(0.);\n }\n\n if(xC + 1 >= 0 && xC + 1 < "+n+") {\n xTexelR"+d+"C"+(v+2)+" = getX(batch, xR, xC + 1, d1);\n } else {\n xTexelR"+d+"C"+(v+2)+" = vec4(0.);\n }\n\n xR"+d+"C"+v+" = vec4(\n xTexelR"+d+"C"+v+".zw, xTexelR"+d+"C"+(v+2)+".zw);\n ",v+1= 0 && xCOffset < "+n+") {\n final = getX(batch, xR, xCOffset, d1);\n }\n xR"+d+"C"+(v+1)+" = vec4(xTexelR"+d+"C"+(v+2)+".xy, final.xy);\n ")):(f+="\n if(xC >= 0 && xC < "+n+") {\n xTexelR"+d+"C"+v+" = getX(batch, xR, xC, d1);\n } else {\n xTexelR"+d+"C"+v+" = vec4(0.);\n }\n\n xCOffset = xC + "+i+";\n if(xCOffset >= 0 && xCOffset < "+n+") {\n xTexelR"+d+"C"+(v+2)+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+d+"C"+(v+2)+" = vec4(0.);\n }\n\n xR"+d+"C"+v+" = vec4(\n xTexelR"+d+"C"+v+".xy, xTexelR"+d+"C"+(v+2)+".xy);\n ",v+11?[""+(i-1)/(c-1),"(y2-y1) * height_ratio","y1*"+d+" + float(y)*(height_scale)"]:["0.0","0.0","0.5 * (y1+y2) * "+d],g=m[0],y=m[1],x=m[2],b=h>1?[""+(s-1)/(h-1),"(x2-x1) * width_ratio","x1*"+v+" + float(x)*(width_scale)"]:["0.0","0.0","0.5 * (x1+x2) * "+v],w=b[0],C=b[1],E=b[2];this.userCode="\n const float height_ratio = float("+g+");\n const float width_ratio = float("+w+");\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= "+a+") {\n return;\n }\n\n float height_scale = "+y+";\n float width_scale = "+C+";\n\n float in_y = "+x+";\n if( in_y < 0.0 || in_y > "+d+" ) {\n setOutput(float("+o+"));\n return;\n }\n float in_x = "+E+";\n if( in_x < 0.0 || in_x > "+v+" ) {\n setOutput(float("+o+"));\n return;\n }\n\n vec2 sourceFracIndexCR = vec2(in_x,in_y);\n if("+p+" == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);\n ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));\n\n float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);\n float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);\n float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);\n float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);\n\n vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);\n\n float top = topLeft + (topRight - topLeft) * fracCR.x;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;\n float newValue = top + (bottom - top) * fracCR.y;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestCR = ivec2(floor(\n sourceFracIndexCR + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);\n setOutput(newValue);\n }\n }\n ";}}(),Sa=function(){return function(t,e,n){this.variableNames=["x"],this.outputShape=t;var r=t.length,o=t[t.length-1],a=n?"<":">";this.userCode="\n int getIndex(int i) {\n "+(n?"return "+o+" -i - 1;":"return i;")+"\n }\n\n void main() {\n "+jo(r)+" coords = getOutputCoords();\n int end = "+Aa(r,"coords")+";\n float val = 0.0;\n for (int i = "+o+" - 1; i >= 0; i -= 1) {\n int idx = getIndex(i);\n if (idx "+a+" end) {\n continue;\n }\n if (idx == end && "+e+") {\n continue;\n }\n "+Aa(r,"coords")+" = idx;\n val += getX("+function(t,e){if(1===t)return ""+e;if(2===t)return e+".x, "+e+".y";if(3===t)return e+".x, "+e+".y, "+e+".z";if(4===t)return e+".x, "+e+".y, "+e+".z, "+e+".w";throw Error("Cumulative sum for rank "+t+" is not yet supported")}(r,"coords")+");\n }\n setOutput(val);\n }\n ";}}();function Aa(t,e){if(1===t)return ""+e;if(2===t)return e+".y";if(3===t)return e+".z";if(4===t)return e+".w";throw Error("Cumulative sum for rank "+t+" is not yet supported")}var Ta=function(){return function(t,e){this.variableNames=["A"];var n=Mo();this.outputShape=t,this.userCode="\n ivec3 outCoordsFromFlatIndex(int index) {\n "+Bo(["r","c","d"],t)+"\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = 4 * (resTexRC.x * "+e[1]+" + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getA(rc.x, rc.y, rc.z);\n }\n\n "+n.output+" = result;\n }\n ";}}(),Da=function(){return function(t,e){this.variableNames=["A"],this.usesPackedTextures=!0;var n=Mo();this.outputShape=t,this.userCode="\n ivec3 outCoordsFromFlatIndex(int index) {\n "+Bo(["r","c","d"],t)+"\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = 4 * (resTexRC.x * "+e[1]+" + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z));\n }\n\n "+n.output+" = result;\n }\n ";}}(),_a=function(){function t(t,e,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=t,this.blockSize=e,this.dataFormat=n,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = "+this.getHeightCoordString()+";\n int w = "+this.getWidthCoordString()+";\n int d = "+this.getDepthCoordString()+";\n\n int in_h = h / "+e+";\n int offset_h = imod(h, "+e+");\n int in_w = w / "+e+";\n int offset_w = imod(w, "+e+");\n int offset_d = (offset_h * "+e+" + offset_w) *\n "+this.getOutputDepthSize()+";\n int in_d = d + offset_d;\n\n float result = "+this.getInputSamplingString()+";\n setOutput(result);\n }\n ";}return t.prototype.getHeightCoordString=function(){return "NHWC"===this.dataFormat?"coords[1]":"coords[2]"},t.prototype.getWidthCoordString=function(){return "NHWC"===this.dataFormat?"coords[2]":"coords[3]"},t.prototype.getDepthCoordString=function(){return "NHWC"===this.dataFormat?"coords[3]":"coords[1]"},t.prototype.getOutputDepthSize=function(){return "NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},t.prototype.getInputSamplingString=function(){return "NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},t}(),Oa=function(){return function(t){this.variableNames=["X"],this.outputShape=[t,t],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;\n setOutput(val);\n }\n ";}}(),Fa=function(){return function(t){this.variableNames=["A"];var e=Mo();this.outputShape=t,this.userCode="\n "+Lo+"\n\n void main() {\n float x = getAAtOutCoords();\n "+e.output+" = encode_float(x);\n }\n ";}}(),Ma=function(){return function(t){this.variableNames=["A"],this.usesPackedTextures=!0;var e=Mo();this.outputShape=t,this.userCode="\n "+Lo+"\n\n void main() {\n ivec3 coords = getOutputCoords();\n float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z));\n "+e.output+" = encode_float(x);\n }\n ";}}(),Ba=function(){return function(t,e,n){void 0===n&&(n=!1),this.variableNames=["A"];var r=Mo(),o=e[0],a=e[1];this.outputShape=t;var i="result";n&&(i="floor(result * 255. + 0.5)"),this.userCode="\n "+Po(t)+"\n\n void main() {\n ivec3 coords = getOutputCoords();\n\n int flatIndex = getFlatIndex(coords);\n int offset = imod(flatIndex, 4);\n\n flatIndex = idiv(flatIndex, 4, 1.);\n \n int r = flatIndex / "+a+";\n int c = imod(flatIndex, "+a+");\n vec2 uv = (vec2(c, r) + halfCR) / vec2("+a+".0, "+o+".0);\n vec4 values = "+r.texture2D+"(A, uv);\n\n float result;\n\n if(offset == 0) {\n result = values[0];\n } else if(offset == 1) {\n result = values[1];\n } else if(offset == 2) {\n result = values[2];\n } else {\n result = values[3];\n }\n\n "+r.output+" = vec4("+i+", 0., 0., 0.);\n }\n ";}}(),Pa=function(){return function(t,e,n){void 0===n&&(n=!1),this.variableNames=["A"];var r=Mo(),o=e[0],a=e[1];this.outputShape=t;var i="",s="result";n&&(s="floor(result * 255. + 0.5)");for(var u=0;u<=1;u++)for(var l=0;l<=1;l++){var c=2*u+l;i+="\n localCoords = coords;\n if(localCoords[2] + "+l+" < "+t[2]+") {\n localCoords[2] += "+l+";\n if(localCoords[1] + "+u+" < "+t[1]+") {\n localCoords[1] += "+u+";\n\n flatIndex = getFlatIndex(localCoords);\n offset = imod(flatIndex, 4);\n \n flatIndex = idiv(flatIndex, 4, 1.);\n\n r = flatIndex / "+a+";\n c = imod(flatIndex, "+a+");\n uv = (vec2(c, r) + halfCR) / vec2("+a+".0, "+o+".0);\n values = "+r.texture2D+"(A, uv);\n\n if(offset == 0) {\n result["+c+"] = values[0];\n } else if(offset == 1) {\n result["+c+"] = values[1];\n } else if(offset == 2) {\n result["+c+"] = values[2];\n } else {\n result["+c+"] = values[3];\n }\n }\n }\n ";}this.userCode="\n "+Po(t)+"\n\n void main() {\n ivec3 coords = getOutputCoords();\n\n vec4 result = vec4(0.);\n int flatIndex, r, c, offset;\n ivec3 localCoords;\n vec2 uv;\n vec4 values;\n \n "+i+"\n\n "+r.output+" = "+s+";\n }\n ";}}(),La="return real * expR - imag * expI;",Wa="return real * expI + imag * expR;",Ua=function(){return function(t,e,n){this.variableNames=["real","imag"];var r=e[1];this.outputShape=e;var o=n?"2.0 * "+Math.PI:"-2.0 * "+Math.PI,a=n?r+".0":"1.0";this.userCode="\n const float exponentMultiplier = "+o+";\n\n float unaryOpComplex(float real, float expR, float imag, float expI) {\n "+t+"\n }\n\n float mulMatDFT(int batch, int index) {\n float indexRatio = float(index) / float("+r+");\n float exponentMultiplierTimesIndexRatio =\n exponentMultiplier * indexRatio;\n\n float result = 0.0;\n\n for (int i = 0; i < "+r+"; i++) {\n // x = (-2|2 * PI / N) * index * i;\n float x = exponentMultiplierTimesIndexRatio * float(i);\n float expR = cos(x);\n float expI = sin(x);\n float real = getReal(batch, i);\n float imag = getImag(batch, i);\n\n result +=\n unaryOpComplex(real, expR, imag, expI) / "+a+";\n }\n\n return result;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n setOutput(mulMatDFT(coords[0], coords[1]));\n }\n ";}}(),Va=function(){function t(t,e){this.outputShape=[],this.variableNames=["x"],this.outputShape=t,this.userCode="\n uniform float value;\n void main() {\n // Input can be obtained from uniform value.\n setOutput(value);\n }\n ";}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.valueLoc&&(e.valueLoc=n.getUniformLocationNoThrow(r,"value")),n.gl.uniform1f(e.valueLoc,t);}},t}(),za=function(){return function(t){this.variableNames=["A"];var e=Mo(),n=t[0],r=t[1];this.outputShape=t,this.userCode="\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2("+r+".0, "+n+".0);\n\n vec4 values = "+e.texture2D+"(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n setOutput(floor(value * 255.0 + 0.5));\n }\n ";}}(),Ga=function(){return function(t){this.variableNames=["A"];var e=Mo(),n=t[0],r=t[1];this.outputShape=t,this.userCode="\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n\n vec4 result = vec4(0.);\n\n for(int row=0; row<=1; row++) {\n for(int col=0; col<=1; col++) {\n texC = coords[1] + row;\n depth = coords[2] + col;\n\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2("+r+".0, "+n+".0);\n vec4 values = "+e.texture2D+"(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n result[row * 2 + col] = floor(value * 255.0 + 0.5);\n }\n }\n\n "+e.output+" = result;\n }\n ";}}(),Ha=function(){return function(t,e,n){this.variableNames=["A","indices"];var r=t.slice();r[n]=e,this.outputShape=r,this.rank=r.length;var o=jo(this.rank),a=function(t,e){var n=t.length;if(n>4)throw Error("Gather for rank "+n+" is not yet supported");if(1===n)return "int(getIndices(resRC))";for(var r=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],a=0;a1?"strides[j]":"strides";this.userCode="\n "+r+" strides = "+r+"("+this.strides+");\n void main() {\n "+o+" coords = getOutputCoords();\n int flattenIndex = 0;\n for (int j = 0; j < "+this.sliceDim+"; j++) {\n int index = round(getIndices(coords[0], j));\n flattenIndex += index * "+a+";\n }\n setOutput(getX(flattenIndex, coords[1]));\n }\n ";}}();function $a(t,e){var n=Mo();return Kt(t,e,n.version+"\n precision highp float;\n "+n.attribute+" vec3 clipSpacePos;\n "+n.attribute+" vec2 uv;\n "+n.varyingVs+" vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }")}function Ka(t,e){return ee(t,e,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function ja(t,e){return ne(t,e,new Uint16Array([0,1,2,2,1,3]))}function Xa(t,e,n,r,o,a,i){oe(n,r);var s=re(t,e),u=t.TEXTURE_2D;return Vt(t,e,function(){return t.bindTexture(u,s)}),Vt(t,e,function(){return t.texParameteri(u,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE)}),Vt(t,e,function(){return t.texParameteri(u,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)}),Vt(t,e,function(){return t.texParameteri(u,t.TEXTURE_MIN_FILTER,t.NEAREST)}),Vt(t,e,function(){return t.texParameteri(u,t.TEXTURE_MAG_FILTER,t.NEAREST)}),Vt(t,e,function(){return t.texImage2D(u,0,o,n,r,0,a,i,null)}),Vt(t,e,function(){return t.bindTexture(t.TEXTURE_2D,null)}),s}function Ya(t,e,n,r,o){var a=Pt(n,r);return Xa(t,e,a[0],a[1],o.internalFormatFloat,o.textureFormatFloat,t.FLOAT)}function Qa(t,e,n,r,o){var a=Pt(n,r);return Xa(t,e,a[0],a[1],o.internalFormatHalfFloat,o.textureFormatFloat,o.textureTypeHalfFloat)}function Ja(t,e,n,r,o){var a=Pt(n,r);return Xa(t,e,a[0],a[1],t.RGBA,t.RGBA,t.UNSIGNED_BYTE)}function Za(t,e,n,r,o){var a=Wt(n,r);return Xa(t,e,a[0],a[1],o.internalFormatPackedFloat,t.RGBA,t.FLOAT)}function ti(t,e,n,r,o){var a=Wt(n,r);return Xa(t,e,a[0],a[1],o.internalFormatPackedHalfFloat,t.RGBA,o.textureTypeHalfFloat)}function ei(t,e,n,r){return Vt(t,e,function(){return t.bindBuffer(t.ARRAY_BUFFER,r)}),ie(t,e,n,"clipSpacePos",r,3,20,0)&&ie(t,e,n,"uv",r,2,20,12)}function ni(t,e,n,r,o,a,i){var s,u,l;Vt(t,e,function(){return t.bindTexture(t.TEXTURE_2D,n)}),a instanceof Uint8Array?(s=new Uint8Array(r*o*4),u=t.UNSIGNED_BYTE,l=t.RGBA):(s=new Float32Array(r*o*4),u=t.FLOAT,l=i.internalFormatPackedFloat),s.set(a),Vt(t,e,function(){return t.texImage2D(t.TEXTURE_2D,0,l,r,o,0,t.RGBA,u,s)}),Vt(t,e,function(){return t.bindTexture(t.TEXTURE_2D,null)});}function ri(t,e,n,r){Vt(t,e,function(){return t.bindTexture(t.TEXTURE_2D,n)}),r.data instanceof Uint8Array?Vt(t,e,function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,r.width,r.height,0,t.RGBA,t.UNSIGNED_BYTE,r.data)}):Vt(t,e,function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r)}),Vt(t,e,function(){return t.bindTexture(t.TEXTURE_2D,null)});}function oi(t,e,n,r,o){var a=t.createBuffer();Vt(t,e,function(){return t.bindBuffer(t.PIXEL_PACK_BUFFER,a)});var i=16*n*r;return Vt(t,e,function(){return t.bufferData(t.PIXEL_PACK_BUFFER,i,t.STREAM_READ)}),Vt(t,e,function(){return t.readPixels(0,0,r,n,t.RGBA,t.FLOAT,0)}),Vt(t,e,function(){return t.bindBuffer(t.PIXEL_PACK_BUFFER,null)}),a}function ai(t,e,n){var r=t,o=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,e),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,o),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),o}function ii(t,e,n,r,o){var a=Pt(n,r),i=a[0],s=a[1],u=new Uint8Array(n*r*4);return Vt(t,e,function(){return t.readPixels(0,0,i,s,o.downloadTextureFormat,t.UNSIGNED_BYTE,u)}),new Float32Array(u.buffer)}function si(t,e,n,r,o,a,i,s){var u=t,l=new Float32Array(function(t,e){var n=Wt(t,e);return n[0]*n[1]*4}(a,i));return u.bindBuffer(u.PIXEL_PACK_BUFFER,e),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,l),u.bindBuffer(u.PIXEL_PACK_BUFFER,null),l}function ui(t,e,n,r){var o=new Float32Array(n*r*4);return Vt(t,e,function(){return t.readPixels(0,0,r,n,t.RGBA,t.FLOAT,o)}),o}var li=Object.freeze({createVertexShader:$a,createVertexBuffer:Ka,createIndexBuffer:ja,createFloat32MatrixTexture:Ya,createFloat16MatrixTexture:Qa,createUnsignedBytesMatrixTexture:Ja,createPackedMatrixTexture:Za,createFloat16PackedMatrixTexture:ti,bindVertexProgramAttributeStreams:ei,uploadDenseMatrixToTexture:ni,uploadPixelDataToTexture:ri,createBufferFromOutputTexture:oi,downloadFloat32MatrixFromBuffer:ai,downloadByteEncodedFloatMatrixFromOutputTexture:ii,downloadPackedMatrixFromBuffer:si,downloadMatrixFromPackedOutputTexture:ui}),ci=function(){function t(t){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];var e=i.getNumber("WEBGL_VERSION");if(null!=t?(this.gl=t,Ft(e,t)):this.gl=Mt(e),1===i.getNumber("WEBGL_VERSION"))this.textureFloatExtension=$t(this.gl,this.debug,"OES_texture_float"),this.colorBufferFloatExtension=this.gl.getExtension("WEBGL_color_buffer_float"),this.textureHalfFloatExtension=$t(this.gl,this.debug,"OES_texture_half_float"),this.colorBufferHalfFloatExtension=this.gl.getExtension("EXT_color_buffer_half_float");else{if(ke(this.gl,"EXT_color_buffer_float"))this.colorBufferFloatExtension=this.gl.getExtension("EXT_color_buffer_float");else{if(!ke(this.gl,"EXT_color_buffer_half_float"))throw new Error("GL context does not support color renderable floats");this.colorBufferHalfFloatExtension=this.gl.getExtension("EXT_color_buffer_half_float");}}this.vertexBuffer=Ka(this.gl,this.debug),this.indexBuffer=ja(this.gl,this.debug),this.framebuffer=ae(this.gl,this.debug),this.textureConfig=Ut(this.gl,this.textureHalfFloatExtension);}return Object.defineProperty(t.prototype,"debug",{get:function(){return i.getBool("DEBUG")},enumerable:!0,configurable:!0}),t.prototype.dispose=function(){var t=this;if(!this.disposed){null!=this.program&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),null!=this.outputTexture&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");var e=this.gl;Vt(e,this.debug,function(){return e.finish()}),Vt(e,this.debug,function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)}),Vt(e,this.debug,function(){return e.deleteFramebuffer(t.framebuffer)}),Vt(e,this.debug,function(){return e.bindBuffer(e.ARRAY_BUFFER,null)}),Vt(e,this.debug,function(){return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)}),Vt(e,this.debug,function(){return e.deleteBuffer(t.indexBuffer)}),this.disposed=!0;}},t.prototype.createFloat32MatrixTexture=function(t,e){return this.throwIfDisposed(),Ya(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createFloat16MatrixTexture=function(t,e){return this.throwIfDisposed(),Qa(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createUnsignedBytesMatrixTexture=function(t,e){return this.throwIfDisposed(),Ja(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.uploadPixelDataToTexture=function(t,e){this.throwIfDisposed(),ri(this.gl,this.debug,t,e);},t.prototype.uploadDenseMatrixToTexture=function(t,e,n,r){this.throwIfDisposed(),ni(this.gl,this.debug,t,e,n,r,this.textureConfig);},t.prototype.createFloat16PackedMatrixTexture=function(t,e){return this.throwIfDisposed(),ti(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createPackedMatrixTexture=function(t,e){return this.throwIfDisposed(),Za(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.deleteMatrixTexture=function(t){var e=this;this.throwIfDisposed(),this.outputTexture===t&&(pe(this.gl,this.debug,this.framebuffer),this.outputTexture=null),Vt(this.gl,this.debug,function(){return e.gl.deleteTexture(t)});},t.prototype.downloadByteEncodedFloatMatrixFromOutputTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,function(){return ii(r.gl,r.debug,e,n,r.textureConfig)})},t.prototype.downloadPackedMatrixFromBuffer=function(t,e,n,r,o,a){return si(this.gl,t,0,0,0,o,a,this.textureConfig)},t.prototype.downloadFloat32MatrixFromBuffer=function(t,e){return ai(this.gl,t,e)},t.prototype.createBufferFromTexture=function(t,e,n){this.bindTextureToFrameBuffer(t);var r=oi(this.gl,this.debug,e,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r},t.prototype.createAndWaitForFence=function(){var t=this.createFence(this.gl);return this.pollFence(t)},t.prototype.createFence=function(t){var e,n,r=this;if(i.getBool("WEBGL_FENCE_API_ENABLED")){var o=t,a=o.fenceSync(o.SYNC_GPU_COMMANDS_COMPLETE,0);t.flush(),n=function(){var t=o.clientWaitSync(a,0,0);return t===o.ALREADY_SIGNALED||t===o.CONDITION_SATISFIED},e=a;}else i.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(e=this.beginQuery(),this.endQuery(),n=function(){return r.isQueryAvailable(e,i.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):n=function(){return !0};return {query:e,isFencePassed:n}},t.prototype.downloadMatrixFromPackedTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,function(){return ui(r.gl,r.debug,e,n)})},t.prototype.createProgram=function(t){this.throwIfDisposed();var e=this.gl,n=jt(e,this.debug,t),r=$a(e,this.debug),o=Jt(e,this.debug);return Vt(e,this.debug,function(){return e.attachShader(o,r)}),Vt(e,this.debug,function(){return e.attachShader(o,n)}),Zt(e,this.debug,o),this.debug&&te(e,this.debug,o),this.vertexAttrsAreBound||(this.setProgram(o),this.vertexAttrsAreBound=ei(e,this.debug,this.program,this.vertexBuffer)),o},t.prototype.deleteProgram=function(t){var e=this;this.throwIfDisposed(),t===this.program&&(this.program=null),null!=t&&Vt(this.gl,this.debug,function(){return e.gl.deleteProgram(t)});},t.prototype.setProgram=function(t){var e=this;this.throwIfDisposed(),this.program=t,null!=this.program&&this.debug&&te(this.gl,this.debug,this.program),Vt(this.gl,this.debug,function(){return e.gl.useProgram(t)});},t.prototype.getUniformLocation=function(t,e,n){return void 0===n&&(n=!0),this.throwIfDisposed(),n?ue(this.gl,this.debug,t,e):le(this.gl,t,e)},t.prototype.getAttributeLocation=function(t,e){var n=this;return this.throwIfDisposed(),Vt(this.gl,this.debug,function(){return n.gl.getAttribLocation(t,e)})},t.prototype.getUniformLocationNoThrow=function(t,e){return this.throwIfDisposed(),this.gl.getUniformLocation(t,e)},t.prototype.setInputMatrixTexture=function(t,e,n){this.throwIfDisposed(),this.throwIfNoProgram(),ce(this.gl,this.debug,this.program,t,e,n);},t.prototype.setOutputMatrixTexture=function(t,e,n){this.setOutputMatrixTextureDriver(t,n,e);},t.prototype.setOutputPackedMatrixTexture=function(t,e,n){this.throwIfDisposed();var r=Wt(e,n),o=r[0],a=r[1];this.setOutputMatrixTextureDriver(t,o,a);},t.prototype.setOutputMatrixWriteRegion=function(t,e,n,r){this.setOutputMatrixWriteRegionDriver(n,t,r,e);},t.prototype.setOutputPackedMatrixWriteRegion=function(t,e,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},t.prototype.debugValidate=function(){null!=this.program&&te(this.gl,this.debug,this.program),fe(this.gl);},t.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var t=this.gl;this.debug&&this.debugValidate(),Vt(t,this.debug,function(){return t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0)});},t.prototype.blockUntilAllProgramsCompleted=function(){var t=this;this.throwIfDisposed(),Vt(this.gl,this.debug,function(){return t.gl.finish()});},t.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=$t(this.gl,this.debug,2===i.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},t.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},t.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},t.prototype.beginQuery=function(){if(2===i.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var t=this.gl,e=this.getQueryTimerExtensionWebGL2(),n=t.createQuery();return t.beginQuery(e.TIME_ELAPSED_EXT,n),n}var r=this.getQueryTimerExtensionWebGL1(),o=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,o),o},t.prototype.endQuery=function(){if(2!==i.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var t=this.getQueryTimerExtensionWebGL1();t.endQueryEXT(t.TIME_ELAPSED_EXT);}else{var e=this.gl,n=this.getQueryTimerExtensionWebGL2();e.endQuery(n.TIME_ELAPSED_EXT);}},t.prototype.waitForQueryAndGetTime=function(t){return n(this,void 0,void 0,function(){var e=this;return r(this,function(n){switch(n.label){case 0:return [4,E(function(){return e.disposed||e.isQueryAvailable(t,i.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))})];case 1:return n.sent(),[2,this.getQueryTime(t,i.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}})})},t.prototype.getQueryTime=function(t,e){if(0===e)return null;if(2===e){var n=this.gl;return n.getQueryParameter(t,n.QUERY_RESULT)/1e6}var r=this.getQueryTimerExtensionWebGL1();return r.getQueryObjectEXT(t,r.QUERY_RESULT_EXT)/1e6},t.prototype.isQueryAvailable=function(t,e){if(0===e)return !0;if(2===e){var n=this.gl,r=this.getQueryTimerExtensionWebGL2(),o=n.getQueryParameter(t,n.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),o&&!this.disjoint}o=(r=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(t,r.QUERY_RESULT_AVAILABLE_EXT);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),o&&!this.disjoint},t.prototype.pollFence=function(t){var e=this;return new Promise(function(n){e.addItemToPoll(function(){return t.isFencePassed()},function(){return n()});})},t.prototype.pollItems=function(){for(var t=function(t){for(var e=0;e1||E(function(){return n.pollItems(),0===n.itemsToPoll.length});},t.prototype.bindTextureToFrameBuffer=function(t){this.throwIfDisposed(),he(this.gl,this.debug,t,this.framebuffer),this.debug&&fe(this.gl);},t.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(he(this.gl,this.debug,this.outputTexture,this.framebuffer),this.debug&&fe(this.gl)):pe(this.gl,this.debug,this.framebuffer);},t.prototype.downloadMatrixDriver=function(t,e){this.bindTextureToFrameBuffer(t);var n=e();return this.unbindTextureToFrameBuffer(),n},t.prototype.setOutputMatrixTextureDriver=function(t,e,n){this.throwIfDisposed();var r=this.gl;he(r,this.debug,t,this.framebuffer),this.debug&&fe(r),this.outputTexture=t,Vt(r,this.debug,function(){return r.viewport(0,0,e,n)}),Vt(r,this.debug,function(){return r.scissor(0,0,e,n)});},t.prototype.setOutputMatrixWriteRegionDriver=function(t,e,n,r){var o=this;this.throwIfDisposed(),Vt(this.gl,this.debug,function(){return o.gl.scissor(t,e,n,r)});},t.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},t.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error("No GPU program is currently set.")},t}();function hi(t,e){if(t.length!==e.length)throw Error("Binary was compiled with "+t.length+" inputs, but was executed with "+e.length+" inputs");t.forEach(function(t,n){var r=t.logicalShape,o=e[n],a=o.shape;if(!y(r,a))throw Error("Binary was compiled with different shapes than the current args. Shapes "+r+" and "+a+" must match");if(!t.isUniform||!o.isUniform){var i=t.texShape,s=o.isUniform?null:o.texData.texShape;if(!y(i,s))throw Error("Binary was compiled with different texture shapes than the current args. Shape "+i+" and "+s+" must match")}});}var pi=function(){return function(t,e,n){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=t;for(var r=n.filterWidth,o=n.inChannels,a=n.strideWidth,i=n.strideHeight,s=n.padInfo,u=n.outWidth,l=n.dilationWidth,c=n.dilationHeight,h=n.dataFormat,p=s.left,f=s.top,d=o*r,v=Mo(),m="channelsLast"===h,g=m?0:1,y=m?1:2,x="",b=0;b<=1;b++)for(var w=0;w<=1;w++)x+="\n blockIndex = rc.y + "+w+";\n pos = rc.x + "+b+";\n\n if(blockIndex < "+t[1]+" && pos < "+t[0]+") {\n offsetY = int(blockIndex / ("+u+")) * "+i+" - "+f+";\n d0 = offsetY + "+c+" * (pos / "+d+");\n\n if(d0 < "+e[g]+" && d0 >= 0) {\n\n offsetX = int(mod(float(blockIndex), "+u+".) * "+a+". - "+p+".);\n d1 = offsetX + "+l+" * (int(mod(float(pos), "+d+".) / "+o+".));\n\n if(d1 < "+e[y]+" && d1 >= 0) {\n\n ch = int(mod(float(pos), "+o+".));\n\n if ("+m+") {\n innerDims = vec2(d1, ch);\n result["+(2*b+w)+"] = getChannel(\n getA(d0, int(innerDims.x),\n int(innerDims.y)), innerDims);\n } else {\n innerDims = vec2(d0, d1);\n result["+(2*b+w)+"] = getChannel(\n getA(ch, int(innerDims.x),\n int(innerDims.y)), innerDims);\n }\n }\n }\n }\n ";this.userCode="\n void main() {\n ivec2 rc = getOutputCoords();\n\n vec4 result = vec4(0);\n\n int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\n vec2 innerDims;\n\n "+x+"\n\n "+v.output+" = result;\n }\n ";}}(),fi=function(){return function(t,e,n,r,o){this.variableNames=["x"],this.outputShape=[];var a,i=e,s=t[3]-1;this.outputShape=t;var u="float("+n+") + float("+r+") * sum";a=.5===o?"inversesqrt("+u+")":1===o?"1.0/("+u+")":"exp(log("+u+") * float(-"+o+"));",this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n int d = coords[3];\n float x = getX(b, r, c, d);\n float sum = 0.0;\n for (int j = -"+i+"; j <= "+i+"; j++) {\n int idx = d + j;\n if (idx >= 0 && idx <= "+s+") {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * "+a+";\n setOutput(val);\n }\n ";}}(),di=function(){return function(t,e,n,r,o){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=t,this.depth=t[3],this.depthRadius=e,this.bias=n,this.alpha=r,this.beta=o,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < "+this.depth+"; ++d) {\n int depthBegin = int(max(0.0, float(d - "+e+")));\n int depthEnd = int(min(float("+this.depth+"),\n float(d + "+e+" + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = "+this.depth+";\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float("+r+") * norm + float("+n+");\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float("+r+")\n * float("+o+")\n * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * "+o+");\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n ";}}(),vi=function(){return function(t,e,n,r,o){this.variableNames=["x"],this.outputShape=[],this.usesPackedTextures=!0;var a,i=e,s=t[3]-1;this.outputShape=t;var u="float("+n+") + float("+r+") * sum";a=.5===o?"inversesqrt("+u+")":1===o?"1.0/("+u+")":"exp(log("+u+") * float(-"+o+"));",this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords.x;\n int r = coords.y;\n int c = coords.z;\n int d = coords.w;\n\n bool hasNextCol = d < "+this.outputShape[3]+";\n bool hasNextRow = c < "+this.outputShape[2]+";\n\n vec4 sum = vec4(0.);\n vec4 xFragAtOutputCoords = getX(b, r, c, d);\n\n vec4 xAtOutputCoords = vec4(\n getChannel(xFragAtOutputCoords, vec2(c, d)),\n hasNextCol ?\n getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,\n hasNextRow ?\n getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,\n (hasNextRow && hasNextCol) ?\n getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0\n );\n\n int firstChannel = d - "+i+";\n vec2 cache = vec2(0.);\n if(firstChannel >= 0){\n vec4 firstChannelFrag = getX(b, r, c, firstChannel);\n cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));\n if(hasNextRow){\n cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));\n }\n }\n\n ivec2 depth = ivec2(d, d + 1);\n for (int j = - "+i+"; j <= "+i+"; j++) {\n ivec2 idx = depth + j;\n bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));\n bvec2 belowUpperBound = lessThanEqual(idx, ivec2("+s+"));\n\n bool depthInRange = aboveLowerBound.x && belowUpperBound.x;\n bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;\n\n if(depthInRange || depthPlusOneInRange){\n vec4 z = vec4(0.);\n vec4 xFragAtCurrentDepth;\n z.xz = cache.xy;\n if(depthPlusOneInRange && hasNextCol){\n xFragAtCurrentDepth = idx.y != d ?\n getX(b, r, c, idx.y) : xFragAtOutputCoords;\n z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));\n if(hasNextRow){\n z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));\n }\n }\n cache.xy = z.yw;\n sum += z * z;\n }\n }\n vec4 result = xAtOutputCoords * "+a+";\n setOutput(result);\n }\n ";}}(),mi=function(){return function(t){this.variableNames=["dy","maxPos"],this.outputShape=t.inShape;var e=t.strideHeight,n=t.strideWidth,r=t.dilationHeight,o=t.effectiveFilterHeight,a=t.effectiveFilterWidth,i=o-1-t.padInfo.top,s=a-1-t.padInfo.left,u=o*a-1;this.userCode="\n const ivec2 pads = ivec2("+i+", "+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+o+";\n wR += "+r+") {\n float dyR = float(dyRCorner + wR) / "+e+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+a+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+n+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = "+u+" - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * "+a+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n ";}}(),gi=function(){return function(t){this.variableNames=["dy","maxPos"],this.outputShape=t.inShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,o=t.dilationDepth,a=t.dilationHeight,i=t.dilationWidth,s=t.effectiveFilterDepth,u=t.effectiveFilterHeight,l=t.effectiveFilterWidth,c=s-1-t.padInfo.front,h=u-1-t.padInfo.top,p=l-1-t.padInfo.left,f=s*u*l-1;this.userCode="\n const ivec3 pads = ivec3("+c+", "+h+", "+p+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < "+s+";\n wD += "+o+") {\n float dyD = float(dyDCorner + wD) / "+e+".0;\n\n if (dyD < 0.0 || dyD >= "+t.outDepth+".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < "+u+";\n wR += "+a+") {\n float dyR = float(dyRCorner + wR) / "+n+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+l+";\n wC += "+i+") {\n float dyC = float(dyCCorner + wC) / "+r+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n int maxPosValue = "+f+" -\n int(getMaxPos(batch, idyD, idyR, idyC, ch));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue =\n wD * "+u+" * "+l+" +\n wR * "+l+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n }\n setOutput(dotProd);\n }\n ";}}(),yi=function(){return function(t,e,n,r,o,a,i){void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===o&&(o=!1),void 0===a&&(a=null),void 0===i&&(i=!1),this.variableNames=["matrixA","matrixB"],this.usesPackedTextures=!0,this.outputShape=e;var s=n?t[1]:t[2],u=Math.ceil(s/2),l=n?"i * 2, rc.y":"rc.y, i * 2",c=r?"rc.z, i * 2":"i * 2, rc.z",h=n?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],p=r?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],f="",d="";a&&(f=i?"vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n "+a+"\n }":"vec4 activation(vec4 x) {\n "+a+"\n }",d="result = activation(result);");var v=o?"result += getBiasAtOutCoords();":"";o&&this.variableNames.push("bias"),i&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+f+"\n\n const float sharedDimension = "+u+".0;\n\n vec4 dot2x2ARowBCol(ivec3 rc) {\n vec4 result = vec4(0);\n for (int i = 0; i < "+u+"; i++) {\n vec4 a = getMatrixA(rc.x, "+l+");\n vec4 b = getMatrixB(rc.x, "+c+");\n\n // These swizzled products need to be separately added.\n // See: https://github.com/tensorflow/tfjs/issues/1735\n result += ("+h[0]+" * "+p[0]+");\n result += ("+h[1]+" * "+p[1]+");\n }\n return result;\n }\n\n void main() {\n ivec3 rc = getOutputCoords();\n vec4 result = dot2x2ARowBCol(rc);\n\n "+v+"\n\n "+d+"\n\n setOutput(result);\n }\n ";}}(),xi=function(){function t(t,e,n){this.variableNames=["probs"],this.outputShape=[t,n],this.userCode="\n uniform float seed;\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < "+(e-1)+"; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float("+(e-1)+"));\n }\n ";}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.seedLoc&&(e.seedLoc=n.getUniformLocation(r,"seed")),n.gl.uniform1f(e.seedLoc,t);}},t}(),bi=function(){return function(t,e,n,r){this.variableNames=["indices"],this.outputShape=[t,e],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float("+r+"), float("+n+"),\n float(index == coords.y)));\n }\n ";}}(),wi=function(){return function(t){this.variableNames=["A"],this.outputShape=t;var e=t.length;if(0===e)this.userCode="\n void main() {\n setOutput(vec4(getA(), 0., 0., 0.));\n }\n ";else{var n=Fo("rc",e),r=jo(e),o=function(t,e,n){if(1===t)return "rc > "+e[0];for(var r="",o=t-2;o= "+e[o],o= "+e+";\n bool rEdge = rp1 >= "+n+";\n "}(e,t[t.length-1],t[t.length-2],n),i=function(t,e){var n=t.length,r=function(t,e){for(var n=[],r=0;r<=1;r++)for(var o=0;o<=1;o++){for(var a=(0===r?"r":"rp1")+", "+(0===o?"c":"cp1"),i=2;i= "+t[0]+" ? 0. : getA(rc + 1),\n 0, 0":"getA("+r[0]+"),\n cEdge ? 0. : getA("+r[1]+"),\n rEdge ? 0. : getA("+r[2]+"),\n rEdge || cEdge ? 0. : getA("+r[3]+")"}(t,n);this.userCode="\n void main() {\n "+r+" rc = getOutputCoords();\n\n if("+o+") {\n setOutput(vec4(0));\n } else {\n "+a+"\n\n setOutput(vec4("+i+"));\n }\n }\n ";}}}();var Ci=function(){return function(t,e,n){this.variableNames=["x"],this.outputShape=e.map(function(e,n){return e[0]+t[n]+e[1]});var r=t.length,o=jo(r),a=e.map(function(t){return t[0]}).join(","),i=e.map(function(e,n){return e[0]+t[n]}).join(","),s=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);this.userCode=1!==r?"\n "+o+" start = "+o+"("+a+");\n "+o+" end = "+o+"("+i+");\n\n void main() {\n "+o+" outC = getOutputCoords();\n if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\n setOutput(float("+n+"));\n } else {\n "+o+" coords = outC - start;\n setOutput(getX("+s+"));\n }\n }\n ":"\n int start = "+a+";\n int end = "+i+";\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start || outC >= end) {\n setOutput(float("+n+"));\n } else {\n setOutput(getX(outC - start));\n }\n }\n ";}}(),Ei=function(){return function(t,e,n){this.variableNames=["x"],this.usesPackedTextures=!0,this.outputShape=e.map(function(e,n){return e[0]+t[n]+e[1]});for(var r=t.length,o=jo(r),a=e.map(function(t){return t[0]}).join(","),i=e.map(function(e,n){return e[0]+t[n]}).join(","),s=Fo("rc",r),u=Fo("source",r),l=s[r-1]+" < "+this.outputShape[r-1],c=1===r?"source":"vec2("+u.slice(-2).join()+")",h=[o+" rc = outputLoc;",s[r-1]+" += 1;\n if("+l+") {\n ",1===r?"":"}\n rc = outputLoc;\n "+s[r-2]+" += 1;\n if("+s[r-2]+" < "+this.outputShape[r-2]+") {",1===r?"":" "+s[r-1]+" += 1;\n if("+l+") {"],p=1===r?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",f="",d=0,v=1===r?2:4;d= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+l+";\n wC += "+s+") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = wR * "+l+" + wC;\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else{var d=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===e&&(d="avgValue / count");var v=4*Math.floor(r/4),m=r%4,g="\n if ("+p+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec2 strides = ivec2("+o+", "+a+");\n const ivec2 pads = ivec2("+c+", "+h+");\n const float initializationValue = "+f+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= "+t.inWidth+") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4("+f+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < "+u+";\n wR += "+i+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+v+"; wC += 4) {\n int xC = xCCorner + wC * "+s+";\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n getValue(batch, xR, xC + 3 * "+s+", d)\n );\n\n "+g+"\n }\n\n int xC = xCCorner + "+v+";\n if ("+(1===m)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+g+"\n } else if ("+(2===m)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n initializationValue,\n initializationValue\n );\n\n "+g+"\n } else if ("+(3===m)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n initializationValue\n );\n\n "+g+"\n }\n }\n setOutput("+d+");\n }\n ";}}}(),Ii=function(){return function(t,e,n){if(this.variableNames=["x"],"avg"===e&&n)throw new Error("Cannot compute positions for average pool.");var r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,l=t.dilationWidth,c=t.effectiveFilterDepth,h=t.effectiveFilterHeight,p=t.effectiveFilterWidth,f=t.padInfo.front,d=t.padInfo.top,v=t.padInfo.left;this.outputShape=t.outShape;var m="avg"===e,g="0.0";if(m||(g="-1.0 / 1e-20"),n)this.userCode="\n const ivec3 strides =\n ivec3("+o+", "+a+", "+i+");\n const ivec3 pads = ivec3("+f+", "+d+", "+v+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n\n for (int wD = 0; wD < "+c+";\n wD += "+s+") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+h+";\n wR += "+u+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+p+";\n wC += "+l+") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float value = getX(batch, xD, xR, xC, ch);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition =\n wD * "+h+" * "+p+" +\n wR * "+p+" + wC;;\n }\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else{var y=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===e&&(y="avgValue / count");var x=4*Math.floor(r/4),b=r%4,w="\n if ("+m+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec3 strides =\n ivec3("+o+", "+a+", "+i+");\n const ivec3 pads = ivec3("+f+", "+d+", "+v+");\n const float initializationValue = "+g+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xD, int xR, int xC, int ch) {\n if (xC < 0 || xC >= "+t.inWidth+") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xD, xR, xC, ch);\n }\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).\n // ? = to be determined\n vec4 minMaxValue = vec4("+g+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wD = 0; wD < "+c+";\n wD += "+s+") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+h+";\n wR += "+u+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+x+"; wC += 4) {\n int xC = xCCorner + wC * "+l+";\n\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + "+l+", ch),\n getValue(batch, xD, xR, xC + 2 * "+l+", ch),\n getValue(batch, xD, xR, xC + 3 * "+l+", ch)\n );\n\n "+w+"\n }\n\n int xC = xCCorner + "+x+";\n if ("+(1===b)+") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+w+"\n } else if ("+(2===b)+") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + "+l+", ch),\n initializationValue,\n initializationValue\n );\n\n "+w+"\n } else if ("+(3===b)+") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + "+l+", ch),\n getValue(batch, xD, xR, xC + 2 * "+l+", ch),\n initializationValue\n );\n\n "+w+"\n }\n }\n setOutput("+y+");\n }\n }\n ";}}}(),ki=function(){return function(t,e){this.variableNames=["x"];var n=t.windowSize,r=t.batchSize,o=t.inSize,a=Math.ceil(o/n);this.outputShape=[r,a];var i="0.0",s="";"prod"===e?i="1.0":"min"===e?(i="1.0 / 1e-20",s="min"):"max"===e&&(i="-1.0 / 1e-20",s="max");var u=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"sum"===e?u="sumValue":"prod"===e?u="prodValue":"all"===e?u="allValue":"any"===e&&(u="anyValue");var l=4*Math.floor(n/4),c=n%4,h="\n if ("+("sum"===e)+") {\n sumValue += dot(values, ones);\n } else if ("+("prod"===e)+") {\n vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\n prodValue *= tmp[0] * tmp[1];\n } else {\n minMaxValue = "+s+"(values, minMaxValue);\n }\n ",p="vec4";"all"===e?(i="1.0",h="\n bool reducedAllValue = all(values);\n float floatedReducedAllValue = float(reducedAllValue);\n allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\n ",p="bvec4"):"any"===e&&(i="0.0",h="\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n ",p="bvec4");var f="";o%n>0&&(f="\n if (inIdx < 0 || inIdx >= "+o+") {\n return initializationValue;\n }\n "),this.userCode="\n const float initializationValue = "+i+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n "+f+"\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+n+";\n\n vec4 minMaxValue = vec4("+i+");\n float prodValue = 1.0;\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < "+l+"; i += 4) {\n int inIdx = inOffset + i;\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n "+h+"\n }\n\n int inIdx = inOffset + "+l+";\n if ("+(1===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+h+"\n } else if ("+(2===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n "+h+"\n } else if ("+(3===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n "+h+"\n }\n setOutput("+u+");\n }\n ";}}(),Ni=function(){return function(t,e){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=t;for(var n="",r=0;r<4;r++){var o="thisRC = rc;";r%2==1&&(o+="thisRC.z += 1;"),r>1&&(o+="thisRC.y += 1;"),n+="\n "+o+"\n "+(r>0?"if(thisRC.y < rows && thisRC.z < cols){":"")+"\n int flatIndex = getFlatIndex(thisRC);\n\n ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\n vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n result["+r+"] =\n getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n "+(r>0?"}":"")+"\n ";}this.userCode="\n \n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n "+Bo(["r","c","d"],e)+"\n return ivec3(r, c, d);\n }\n \n "+Po(t)+"\n\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0.);\n\n ivec3 thisRC;\n int rows = "+t[1]+";\n int cols = "+t[2]+";\n\n "+n+"\n\n setOutput(result);\n }\n ";}}();var Si=function(){return function(t,e,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,o=r[1],a=r[2],i=t.shape,s=i[1],u=i[2],l=[n&&s>1?o-1:o,n&&u>1?a-1:a],c=[n&&s>1?s-1:s,n&&u>1?u-1:u],h=l[0]/c[0],p=l[1]/c[1],f=1/h,d=1/p,v=2*Math.ceil(f)+2,m=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+h+");\n const float widthScale = float("+p+");\n\n const float invHeightScale = float("+f+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+v+");\n const int winWidth = int("+m+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), "+(o-1)+".0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), "+(a-1)+".0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n ";}}(),Ai=function(){return function(t,e,n,r){this.variableNames=["A"],this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],l=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+");\n const vec2 inputShapeRC = vec2("+a+".0, "+i+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n ";}}(),Ti=function(){return function(t,e,n,r){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],l=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode="\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+",\n "+u[1]/l[1]+");\n const vec3 inputShapeRC = vec3("+a+".0, "+i+".0,\n "+i+".0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = vec3(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec3 sourceFloorRC = ivec3(sourceFracIndexRC);\n ivec3 sourceCeilRC = ivec3(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n \n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < "+(s-1)+"; \n bool hasNextRow = coords.z < "+(n-1)+";\n\n // In parallel, construct four corners for all four components in\n // packed 2x2 cell.\n vec4 topLeft = vec4(\n getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 bottomLeft = vec4(\n getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 topRight = vec4(\n getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec4 bottomRight = vec4(\n getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);\n\n vec4 top = mix(topLeft, topRight, fracRC.yyzz);\n vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);\n vec4 newValue = mix(top, bottom, fracRC.x);\n\n setOutput(newValue);\n }\n ";}}(),Di=function(){return function(t,e,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,o=r[1],a=r[2],i=t.shape,s=i[1],u=i[2],l=[n&&s>1?o-1:o,n&&u>1?a-1:a],c=[n&&s>1?s-1:s,n&&u>1?u-1:u],h=l[0]/c[0],p=l[1]/c[1],f=1/h,d=1/p,v=2*Math.ceil(f)+2,m=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+h+");\n const float widthScale = float("+p+");\n\n const float invHeightScale = float("+f+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+v+");\n const int winWidth = int("+m+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float sourceFracRow =\n float("+l[0]+") *\n (float(dyR) / float("+c[0]+"));\n\n float sourceFracCol =\n float("+l[1]+") *\n (float(dyC) / float("+c[1]+"));\n\n int sourceNearestRow = int(min(\n float(int("+o+") - 1),\n "+n+" ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int("+a+") - 1),\n "+n+" ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n ";}}(),_i=function(){return function(t,e,n,r){this.variableNames=["A"],this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],l=[r&&e>1?e-1:e,r&&n>1?n-1:n],c=r?"0.5":"0.0";this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+");\n const vec2 inputShapeRC = vec2("+a+".0, "+i+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + "+c+")));\n\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n ";}}(),Oi=function(){return function(t,e){this.variableNames=["x"];var n=t.length;if(n>4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");if(this.outputShape=t,1!==n){var r=t.map(function(n,r){return function(n){return -1!==e.indexOf(n)&&1!==t[n]?t[n]+" - coords["+n+"] - 1":"coords["+n+"]"}(r)}).join(","),o=jo(n);this.userCode="\n void main() {\n "+o+" coords = getOutputCoords();\n setOutput(getX("+r+"));\n }\n ";}else this.userCode="\n void main() {\n int coord = getOutputCoords();\n setOutput(getX("+t[0]+" - coord - 1));\n }\n ";}}(),Fi=function(){return function(t,e){this.variableNames=["x"],this.usesPackedTextures=!0;var n=t.length;if(n>4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");this.outputShape=t;var r=Fo("rc",n),o=r[n-1]+" + 1 < "+this.outputShape[n-1],a=r[n-2]+" + 1 < "+this.outputShape[n-2],i=jo(n);function s(n){var r=t.map(function(r,o){return function(n,r){return -1!==e.indexOf(n)&&1!==t[n]?t[n]+" - "+r[n]+" - 1":""+r[n]}(o,n)});return "getChannel(getX("+r.join(",")+"), vec2("+r.slice(-2).join(",")+"))"}this.userCode=1===n?"\n void main(){\n int rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = getChannel(getX("+t[0]+" - rc - 1),\n "+t[0]+" - rc - 1);\n if("+o+"){\n result.g = getChannel(getX("+t[0]+" - (rc + 1) - 1),\n "+t[0]+" - (rc + 1) - 1);\n }\n setOutput(result);\n }\n ":"\n void main() {\n "+i+" rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = "+function(t){return s(t)}(r.slice())+";\n if("+o+"){\n result.g = "+function(t){return t[n-1]="("+t[n-1]+" + 1)",s(t)}(r.slice())+";\n }\n if("+a+") {\n result.b = "+function(t){return t[n-2]="("+t[n-2]+" + 1)",s(t)}(r.slice())+";\n if("+o+") {\n result.a = "+function(t){return t[n-1]="("+t[n-1]+" + 1)",t[n-2]="("+t[n-2]+" + 1)",s(t)}(r.slice())+";\n }\n }\n setOutput(result);\n }\n ";}}(),Mi=function(){return function(t,e,n,r,o,a,i){this.variableNames=["updates","indices","defaultValue"],this.outputShape=a;var s=jo(o.length),u=jo(a.length),l="";1===n?l="i":2===n&&(l="i, j");var c="getIndices("+l+")",h="";1===r?h="i":2===r&&(h="i, coords[1]");var p="getUpdates("+h+")",f=e>1?"strides[j]":"strides";this.userCode="\n "+s+" strides = "+s+"("+o+");\n\n void main() {\n "+u+" coords = getOutputCoords();\n float sum = 0.0;\n bool found = false;\n for (int i = 0; i < "+t+"; i++) {\n int flattenedIndex = 0;\n for (int j = 0; j < "+e+"; j++) {\n int index = round("+c+");\n flattenedIndex += index * "+f+";\n }\n if (flattenedIndex == coords[0]) {\n sum += "+p+";\n found = true;\n }\n }\n setOutput(mix(getDefaultValue(), sum, float(found)));\n }\n ";}}(),Bi=function(){return function(t,e){this.variableNames=["x","segmentIds"];var n=t.windowSize,r=t.batchSize,o=t.inSize,a=t.numSegments,i=a*Math.ceil(o/n);this.outputShape=[r,i];var s=4*Math.floor(n/4),u=n%4,l="\n sumValue += dot(values, segFilter);\n ",c="";o%n>0&&(c="\n if (inIdx < 0 || inIdx >= "+o+") {\n return initializationValue;\n }\n ");var h="";o%n>0&&(h="\n if (inIdx < 0 || inIdx >= "+o+") {\n return -1.0;\n }\n "),this.userCode="\n const float initializationValue = 0.0;\n\n float getValue(int batch, int inIdx) {\n "+c+"\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n "+h+"\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n "+a+")) * float("+n+"));\n int currentSeg = int(mod(float(outIdx), float("+a+")));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < "+s+"; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n "+l+"\n }\n\n int inIdx = inOffset + "+s+";\n if ("+(1===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n "+l+"\n } else if ("+(2===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n "+l+"\n } else if ("+(3===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n "+l+"\n }\n setOutput(sumValue);\n }\n ";}}(),Pi=function(){return function(t,e,n){var r,o;if(this.variableNames=["c","a","b"],this.outputShape=e,n>4)throw Error("Where for rank "+n+" is not yet supported");if(1===n)o="resRC",r="resRC";else{for(var a=["resRC.x","resRC.y","resRC.z","resRC.w"],i=[],s=[],u=0;u= 1.0) {\n setOutput(getA("+o+"));\n } else {\n setOutput(getB("+o+"));\n }\n }\n ";}}(),Li=function(){function t(t){this.variableNames=["source"],this.outputShape=t,this.rank=t.length;var e,n=jo(this.rank),r="uniform int start["+this.rank+"];",o=function(t){if(1===t)return "sourceLoc";if(t<=6)return Wi.slice(0,t).map(function(t){return "sourceLoc."+t}).join(",");throw Error("Slicing for rank "+t+" is not yet supported")}(this.rank);e="\n "+n+" sourceLoc;\n "+n+" coords = getOutputCoords();\n "+t.map(function(t,e){return "sourceLoc."+Wi[e]+" = start["+e+"] + coords."+Wi[e]+";"}).join("\n")+"\n ",this.userCode="\n "+r+"\n void main() {\n "+e+"\n setOutput(getSource("+o+"));\n }\n ";}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,"start"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t);}},t}(),Wi=["x","y","z","w","u","v"];var Ui=function(){function t(t){this.variableNames=["source"],this.usesPackedTextures=!0,this.outputShape=t,this.rank=t.length;var e=jo(this.rank),n=Fo("coords",this.rank),r=Fo("sourceLoc",this.rank),o=1===this.rank?"sourceLoc":"vec2("+r.slice(-2).join()+")",a="getChannel(getSource("+r.join()+"), "+o+")",i="\n result.x = "+a+";\n if (++"+n[this.rank-1]+" < "+t[this.rank-1]+") {\n ++"+r[this.rank-1]+";\n result.y = "+a+";\n --"+r[this.rank-1]+";\n }\n ",s=1===this.rank?"":"\n --"+n[this.rank-1]+";\n if (++"+n[this.rank-2]+" < "+t[this.rank-2]+") {\n ++"+r[this.rank-2]+";\n result.z = "+a+";\n if (++"+n[this.rank-1]+" < "+t[this.rank-1]+") {\n ++"+r[this.rank-1]+";\n result.w = "+a+";\n }\n }\n ",u=this.rank<=4?"sourceLoc = coords +\n "+e+"("+t.map(function(t,e){return "start["+e+"]"}).join()+");":t.map(function(t,e){return r[e]+" = "+n[e]+" + start["+e+"];"}).join("\n");this.userCode="\n uniform int start["+this.rank+"];\n void main() {\n "+e+" coords = getOutputCoords();\n "+e+" sourceLoc;\n "+u+" \n vec4 result = vec4(0.);\n "+i+"\n "+s+"\n setOutput(result);\n }\n ";}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,"start"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t);}},t}(),Vi=function(){return function(t,e,n){this.variableNames=["x"],this.outputShape=n;var r=n.length,o=jo(n.length),a=jo(n.length),i="";if(1===r)i="coords * strides + begin";else{var s=0;i=n.map(function(t,e){return s++,1===n.length?"coords * strides["+e+"] + begin["+e+"]":"coords["+(s-1)+"] * strides["+e+"] + begin["+e+"]"}).join(",");}this.userCode="\n "+o+" begin = "+o+"("+t+");\n "+o+" strides = "+o+"("+e+");\n\n void main() {\n "+a+" coords = getOutputCoords();\n setOutput(getX("+i+"));\n }\n ";}}(),zi=function(){function t(t){this.gpgpu=t,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={};}return t.prototype.acquireTexture=function(t,e,n){var r,o=Gi(e,n),a=Hi(t,o,n);if(a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]),this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var i=this.freeTextures[a].shift();return this.usedTextures[a].push(i),i}return this.numUsedTextures++,this.log(),o===Dt.PACKED_2X2_FLOAT32?r=this.gpgpu.createPackedMatrixTexture(t[0],t[1]):o===Dt.PACKED_2X2_FLOAT16?r=this.gpgpu.createFloat16PackedMatrixTexture(t[0],t[1]):o===Dt.UNPACKED_FLOAT32?r=this.gpgpu.createFloat32MatrixTexture(t[0],t[1]):o===Dt.UNPACKED_FLOAT16?r=this.gpgpu.createFloat16MatrixTexture(t[0],t[1]):o===Dt.PACKED_4X1_UNSIGNED_BYTE&&(r=this.gpgpu.createUnsignedBytesMatrixTexture(t[0],t[1])),this.usedTextures[a].push(r),r},t.prototype.releaseTexture=function(t,e,n,r){if(null!=this.freeTextures){var o=Hi(e,Gi(n,r),r);o in this.freeTextures||(this.freeTextures[o]=[]),this.freeTextures[o].push(t),this.numFreeTextures++,this.numUsedTextures--;var a=this.usedTextures[o],i=a.indexOf(t);if(i<0)throw new Error("Cannot release a texture that was never provided by this texture manager");a.splice(i,1),this.log();}},t.prototype.log=function(){if(this.logEnabled){var t=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",this.numFreeTextures+" / "+this.numUsedTextures,"("+t+")");}},t.prototype.getNumUsedTextures=function(){return this.numUsedTextures},t.prototype.getNumFreeTextures=function(){return this.numFreeTextures},t.prototype.dispose=function(){var t=this;if(null!=this.freeTextures){for(var e in this.freeTextures)this.freeTextures[e].forEach(function(e){t.gpgpu.deleteMatrixTexture(e);});for(var e in this.usedTextures)this.usedTextures[e].forEach(function(e){t.gpgpu.deleteMatrixTexture(e);});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0;}},t}();function Gi(t,e){if(t===Tt.UPLOAD)return Dt.PACKED_2X2_FLOAT32;if(t===Tt.RENDER||null==t)return function(t){return i.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?t?Dt.PACKED_2X2_FLOAT32:Dt.UNPACKED_FLOAT32:t?Dt.PACKED_2X2_FLOAT16:Dt.UNPACKED_FLOAT16}(e);if(t===Tt.DOWNLOAD||t===Tt.PIXELS)return Dt.PACKED_4X1_UNSIGNED_BYTE;throw new Error("Unknown logical texture type "+t)}function Hi(t,e,n){return t[0]+"_"+t[1]+"_"+e+"_"+n}var qi=function(){return function(t,e){this.variableNames=["A"];for(var n=new Array(t.length),r=0;r5)throw Error("Tile for rank "+e+" is not yet supported");if(1===e)return "imod(resRC, "+t[0]+")";for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[],o=0;o6)throw Error("Transpose for rank "+e+" is not yet supported");for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(e),o=0;o6)throw Error("Packed transpose for rank "+this.rank+" is not yet supported.");var o=jo(this.rank),a=Oo("rc",this.rank),i=new Array(this.rank);for(r=0;r= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n";var rs="return -x;",os="return ceil(x);",as="return floor(x);",is="return exp(x);",ss="return exp(x) - 1.0;",us=Qi+"\n return sin(x);\n",ls=Qi+"\n return cos(x);\n",cs=Qi+"\n return atan(x);\n",hs=Qi+"\n if (x < 1.0) return NAN;\n return log(x + sqrt(x * x - 1.0));",ps=Qi+"\n if ((x < -1.0) || (x > 1.0)) return NAN;\n return (log(1.0 + x) - log(1.0 - x)) / 2.0;",fs="return x;",ds="return x;",vs="\n vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n",ms="\n vec4 result;\n\n result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n return result;\n",gs=function(){return function(t,e){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=t,this.userCode="\n vec4 unaryOperation(vec4 x) {\n "+e+"\n }\n\n void main() {\n vec4 x = getAAtOutCoords();\n vec4 y = unaryOperation(x);\n\n setOutput(y);\n }\n ";}}(),ys=function(){return function(t){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=t;var e=t.length,n=Fo("rc",e),r=jo(e),o=function(t,e){if(1===t)return "rc";for(var n="",r=0;r0?this.gpgpu.beginQuery():{startMs:$(),endMs:null}},t.prototype.endTimer=function(t){return i.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(this.gpgpu.endQuery(),t):(t.endMs=$(),t)},t.prototype.getQueryTime=function(t){return n(this,void 0,void 0,function(){var e;return r(this,function(n){return i.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?[2,this.gpgpu.waitForQueryAndGetTime(t)]:[2,(e=t).endMs-e.startMs]})})},t.prototype.disposeData=function(t){if(!this.pendingDisposal.has(t))if(this.pendingRead.has(t))this.pendingDisposal.add(t);else if(this.texData.has(t)){this.releaseGPUData(t);var e=this.texData.get(t).complexTensors;null!=e&&(e.real.dispose(),e.imag.dispose()),this.texData.delete(t);}},t.prototype.releaseGPUData=function(t){var e=this.texData.get(t),n=e.texture,r=e.dtype,o=e.texShape,a=e.usage,i=e.isPacked,s=e.slice,u=s&&s.origDataId||t,l=this.dataRefCount.get(u);l>1?this.dataRefCount.set(u,l-1):(this.dataRefCount.delete(u),null!=n&&(this.numBytesInGPU-=this.computeBytes(o,r),this.textureManager.releaseTexture(n,o,a,i)));var c=this.texData.get(t);c.texture=null,c.texShape=null,c.isPacked=!1,c.slice=null;},t.prototype.getTexture=function(t){return this.uploadToGPU(t),this.texData.get(t).texture},t.prototype.getDataInfo=function(t){return this.texData.get(t)},t.prototype.getCPUBackend=function(){return i.getBool("WEBGL_CPU_FORWARD")?(null==this.cpuBackend&&(this.cpuBackend=St.findBackend("cpu")),this.cpuBackend):null},t.prototype.shouldExecuteOnCPU=function(t,e){var n=this;return void 0===e&&(e=128),null!=this.getCPUBackend()&&t.every(function(t){return null==n.texData.get(t.dataId).texture&&t.sizei.getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){var o=Math.floor(t.length/2),a=this.concat(t.slice(0,o),e),s=this.concat(t.slice(o),e);return this.concat([a,s],e)}if(i.getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&t[0].rank>1){var u=new ma(t.map(function(t){return t.shape}),e);return this.compileAndRun(u,t)}var l=dn(t.map(function(t){return t.shape}),e),c=t.map(function(t){return t.as2D(-1,g(t.shape.slice(e)))}),h=new va(c.map(function(t){return t.shape}));return this.compileAndRun(h,c).reshape(l)},t.prototype.neg=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.neg(t);if(i.getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,rs,t.dtype);var e=new Yi(t.shape,rs);return this.compileAndRun(e,[t])},t.prototype.batchMatMul=function(t,e,n,r){var o=n?t.shape[2]:t.shape[1],a=r?e.shape[1]:e.shape[2],i=n?t.shape[1]:t.shape[2],s=t.shape[0];if((1===o||1===a)&&i>1e3){n&&(t=t.transpose([0,2,1])),r&&(e=e.transpose([0,2,1]));var u=1===a?t:t.as3D(s,i,1),l=1===a?2:1,c=1===a?e.as3D(s,1,i):e;return this.multiply(u,c).sum(l,!0)}var h=xt(t.dtype,e.dtype),p=new yi(t.shape,[s,o,a],n,r),f=this.makePackedTensor(p.outputShape,h);return this.compileAndRun(p,[t,e],f)},t.prototype.fusedBatchMatMul=function(t){var e=t.a,n=t.b,r=t.transposeA,o=t.transposeB,a=t.bias,i=t.activation,s=t.preluActivationWeights,u=r?e.shape[2]:e.shape[1],l=o?n.shape[1]:n.shape[2],c=e.shape[0],h=xt(e.dtype,n.dtype),p=null!=a,f=null!=s,d=i?bs(i,!0):null,v=new yi(e.shape,[c,u,l],r,o,p,d,f),m=this.makePackedTensor(v.outputShape,h),g=[e,n];return a&&g.push(a),s&&g.push(s),this.compileAndRun(v,g,m)},t.prototype.multiply=function(t,e){if("complex64"===t.dtype){var n=this.texData.get(t.dataId),r=this.texData.get(e.dataId),o=new oa(na,t.shape,e.shape),a=new oa(ra,t.shape,e.shape),s=[this.makeComplexComponentTensorHandle(t,n.complexTensors.real),this.makeComplexComponentTensorHandle(t,n.complexTensors.imag),this.makeComplexComponentTensorHandle(e,r.complexTensors.real),this.makeComplexComponentTensorHandle(e,r.complexTensors.imag)],u=this.compileAndRun(o,s),l=this.compileAndRun(a,s),c=this.complex(u,l);return u.dispose(),l.dispose(),c}if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.multiply(t,e);if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,sa,t.dtype);var h=new la(sa,t.shape,e.shape),p=this.makeOutputArray(h.outputShape,t.dtype);return this.compileAndRun(h,[t,e],p)},t.prototype.batchNormalization=function(t,e,n,r,o,a){var s=[t,e,n],u=null;null!=a&&(u=a.shape,s.push(a));var l=null;if(null!=o&&(l=o.shape,s.push(o)),i.getBool("WEBGL_PACK_NORMALIZATION")){var c=new ea(t.shape,e.shape,n.shape,u,l,r);return this.compileAndRun(c,s)}var h=new ta(t.shape,e.shape,n.shape,u,l,r);return this.compileAndRun(h,s)},t.prototype.localResponseNormalization4D=function(t,e,n,r,o){var a=i.getBool("WEBGL_PACK_NORMALIZATION")?new vi(t.shape,e,n,r,o):new fi(t.shape,e,n,r,o);return this.compileAndRun(a,[t])},t.prototype.LRNGrad=function(t,e,n,r,o,a,i){var s=new di(e.shape,r,o,a,i);return this.compileAndRun(s,[e,n,t])},t.prototype.tile=function(t,e){if("string"===t.dtype){var n=this.readSync(t.dataId).map(function(t){return X(t)});return No(Zn(t.shape,t.dtype,n),e)}var r=new qi(t.shape,e);return this.compileAndRun(r,[t])},t.prototype.pad=function(t,e,n){var r=i.getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Ei(t.shape,e,n):new Ci(t.shape,e,n);return this.compileAndRun(r,[t])},t.prototype.transpose=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.transpose(t,e);var n=i.getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Ki(t.shape,e):new $i(t.shape,e);return this.compileAndRun(n,[t])},t.prototype.gather=function(t,e,n){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.gather(t,e,n);var r=new Ha(t.shape,e.size,n);return this.compileAndRun(r,[t,e])},t.prototype.batchToSpaceND=function(t,e,n){f(t.rank<=4,function(){return "batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"});var r=e.reduce(function(t,e){return t*e}),o=Nr(t.shape,e,r),a=Sr(o.length,e.length),i=Ar(t.shape,e,r),s=Tr(n,e.length),u=Dr(i,n,e.length);return t.reshape(o).transpose(a).reshape(i).slice(s,u)},t.prototype.spaceToBatchND=function(t,e,n){f(t.rank<=4,function(){return "spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"});var r=e.reduce(function(t,e){return t*e}),o=[[0,0]];o.push.apply(o,n);for(var a=1+e.length;ae||n===t?r=!0:n=U(t,n+1);return n}(i,o),u=new Bi({windowSize:s,inSize:i,batchSize:a,numSegments:o},e),l=u.outputShape,c=l[0],h=l[1],p=this.makeOutputArray([c,h],r);return this.compileAndRun(u,[t,n],p),p.shape[1]===o?p:(n=_n(0,o).tile([i/s]),this.segOpCompute(p,e,n,r,o))},t.prototype.argMinMaxReduce=function(t,e,n){var r=[e];if(ln("arg"+n.charAt(0).toUpperCase()+n.slice(1),r,t.rank),!i.getBool("WEBGL_PACK_REDUCE")||t.rank<=2){var o=sn(t.shape,r),a=o[0],s=g(o[1]),u=t.as2D(-1,s);return this.argReduce(u,n).reshape(a)}return this.argReducePacked(t,n)},t.prototype.argMin=function(t,e){return this.argMinMaxReduce(t,e,"min")},t.prototype.argMax=function(t,e){return this.argMinMaxReduce(t,e,"max")},t.prototype.cumsum=function(t,e,n,r){if(e!==t.rank-1)throw new Error("WebGL cumsum shader expects an inner-most axis="+(t.rank-1)+" but got axis="+e);var o=new Sa(t.shape,n,r);return this.compileAndRun(o,[t])},t.prototype.equal=function(t,e){if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(equal(a, b));\n","bool");var n=new la("return float(a == b);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.notEqual=function(t,e){if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(notEqual(a, b));\n","bool");var n=new la("return float(a != b);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.less=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.less(t,e);if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(lessThan(a, b));\n","bool");var n=new la("return float(a < b);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.lessEqual=function(t,e){if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(lessThanEqual(a, b));\n","bool");var n=new la("return float(a <= b);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.greater=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.greater(t,e);if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(greaterThan(a, b));\n","bool");var n=new la("return float(a > b);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.greaterEqual=function(t,e){if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(greaterThanEqual(a, b));\n","bool");var n=new la("return float(a >= b);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.logicalNot=function(t){var e=new Yi(t.shape,"return float(!(x >= 1.0));");return this.compileAndRun(e,[t])},t.prototype.logicalAnd=function(t,e){if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(\n vec4(greaterThanEqual(a, vec4(1.0))) *\n vec4(greaterThanEqual(b, vec4(1.0))));\n","bool");var n=new la("return float(a >= 1.0 && b >= 1.0);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.logicalOr=function(t,e){if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return min(\n vec4(greaterThanEqual(a, vec4(1.0))) +\n vec4(greaterThanEqual(b, vec4(1.0))),\n vec4(1.0));\n","bool");var n=new la("return float(a >= 1.0 || b >= 1.0);",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[t,e],r)},t.prototype.select=function(t,e,n){var r=new Pi(t.rank,e.shape,e.rank),o=this.makeOutputArray(r.outputShape,xt(e.dtype,n.dtype));return this.compileAndRun(r,[t,e,n],o)},t.prototype.where=function(t){Ze("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");var e=t.dataSync();return Ao(t.shape,e)},t.prototype.topk=function(t,e,n){return So(t.dataSync(),t.shape,t.dtype,e)},t.prototype.min=function(t,e){ln("min",e,t.rank);var n=sn(t.shape,e),r=n[0],o=g(n[1]),a=t.as2D(-1,o);return this.reduce(a,"min",a.dtype).reshape(r)},t.prototype.minimum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.minimum(t,e);var n=i.getBool("WEBGL_PACK_BINARY_OPERATIONS")?new ha("\n vec4 result = vec4(min(a, b));\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new la("\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return min(a, b);\n",t.shape,e.shape);return this.compileAndRun(n,[t,e])},t.prototype.mod=function(t,e){var n=i.getBool("WEBGL_PACK_BINARY_OPERATIONS")?new ha("\n vec4 result = mod(a, b);\n vec4 isNaN = vec4(equal(b, vec4(0.0)));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new la("if (b == 0.0) return NAN;\n return mod(a, b);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},t.prototype.max=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.max(t,e);ln("max",e,t.rank);var n=sn(t.shape,e),r=n[0],o=g(n[1]),a=t.as2D(-1,o);return this.reduce(a,"max",a.dtype).reshape(r)},t.prototype.maximum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.maximum(t,e);var n=i.getBool("WEBGL_PACK_BINARY_OPERATIONS")?new ha("\n vec4 result = vec4(max(a, b));\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new la("\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return max(a, b);\n",t.shape,e.shape);return this.compileAndRun(n,[t,e])},t.prototype.all=function(t,e){ln("all",e,t.rank);var n=sn(t.shape,e),r=n[0],o=g(n[1]),a=t.as2D(-1,o);return this.reduce(a,"all",a.dtype).reshape(r)},t.prototype.any=function(t,e){ln("any",e,t.rank);var n=sn(t.shape,e),r=n[0],o=g(n[1]),a=t.as2D(-1,o);return this.reduce(a,"any",a.dtype).reshape(r)},t.prototype.squaredDifference=function(t,e){var n=i.getBool("WEBGL_PACK_BINARY_OPERATIONS")?new ha("return (a - b) * (a - b);",t.shape,e.shape):new la("return (a - b) * (a - b);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},t.prototype.realDivide=function(t,e){if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS")){return this.packedBinaryOp(t,e,"\n // vec4 one = vec4(equal(a, b));\n // return one + (vec4(1.0) - one) * a / b;\n vec4 result = a / b;\n if(b.x == 0.0) {\n result.x = NAN;\n } else if(a.x == b.x) {\n result.x = 1.;\n }\n if(b.y == 0.0) {\n result.y = NAN;\n } else if(a.y == b.y) {\n result.y = 1.;\n }\n if(b.z == 0.0) {\n result.z = NAN;\n } else if(a.z == b.z) {\n result.z = 1.;\n }\n if(b.w == 0.0) {\n result.w = NAN;\n } else if(a.w == b.w) {\n result.w = 1.;\n }\n\n return result;\n","float32",!0)}var n=new la("\nif (b == 0.0) {\n return NAN;\n}\nif (a == b) {\n return 1.0;\n};\nreturn a / b;",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"float32");return this.compileAndRun(n,[t,e],r)},t.prototype.floorDiv=function(t,e){if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n ivec4 ia = round(a);\n ivec4 ib = round(b);\n bvec4 cond = notEqual(ib, ivec4(0));\n ivec4 result = ivec4(0);\n vec4 s = sign(a) * sign(b);\n\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n if (cond[0]) {\n result[0] = idiv(ia[0], ib[0], s[0]);\n }\n if (cond[1]) {\n result[1] = idiv(ia[1], ib[1], s[1]);\n }\n if (cond[2]) {\n result[2] = idiv(ia[2], ib[2], s[2]);\n }\n if (cond[3]) {\n result[3] = idiv(ia[3], ib[3], s[3]);\n }\n return vec4(result);\n","int32");var n=new la("\n float s = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n if (ib != 0) {\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n return float(idiv(ia, ib, s));\n } else {\n return NAN;\n }\n",t.shape,e.shape),r=this.makeOutputArray(n.outputShape,"int32");return this.compileAndRun(n,[t,e],r)},t.prototype.add=function(t,e){if("complex64"===t.dtype&&"complex64"===e.dtype)return this.complexSeparableBinaryOp(t,e,aa);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.add(t,e);var n=xt(t.dtype,e.dtype);if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,aa,n);var r=new la(aa,t.shape,e.shape),o=this.makeOutputArray(r.outputShape,n);return this.compileAndRun(r,[t,e],o)},t.prototype.packedUnaryOp=function(t,e,n){var r=new gs(t.shape,e),o=this.makePackedTensor(r.outputShape,n);return this.compileAndRun(r,[t],o)},t.prototype.packedBinaryOp=function(t,e,n,r,o){void 0===o&&(o=!1);var a=new ha(n,t.shape,e.shape,o),i=this.makePackedTensor(a.outputShape,r);return this.compileAndRun(a,[t,e],i)},t.prototype.complexSeparableBinaryOp=function(t,e,n){var r=this,o=this.texData.get(t.dataId),a=this.texData.get(e.dataId),i=[[o.complexTensors.real,a.complexTensors.real],[o.complexTensors.imag,a.complexTensors.imag]].map(function(o){var a=o[0],i=o[1],s=r.makeComplexComponentTensorHandle(t,a),u=r.makeComplexComponentTensorHandle(e,i),l=new la(n,t.shape,e.shape),c=r.makeOutputArray(l.outputShape,xt(a.dtype,i.dtype));return r.compileAndRun(l,[s,u],c)}),s=i[0],u=i[1],l=this.complex(s,u);return s.dispose(),u.dispose(),l},t.prototype.makeComplexComponentTensorHandle=function(t,e){return {dataId:e.dataId,dtype:e.dtype,shape:t.shape}},t.prototype.addN=function(t){if(1===t.length)return t[0];if(t.length>i.get("WEBGL_MAX_TEXTURES_IN_SHADER")){var e=Math.floor(t.length/2),n=this.addN(t.slice(0,e)),r=this.addN(t.slice(e));return this.addN([n,r])}var o=t.map(function(t){return t.dtype}).reduce(function(t,e){return xt(t,e)}),a=t.map(function(t){return t.shape}),s=i.getBool("WEBGL_PACK"),u=s?new Do(t[0].shape,a):new To(t[0].shape,a),l=s?this.makePackedTensor(u.outputShape,o):this.makeOutputArray(u.outputShape,o);return this.compileAndRun(u,t,l)},t.prototype.subtract=function(t,e){if("complex64"===t.dtype&&"complex64"===e.dtype)return this.complexSeparableBinaryOp(t,e,ia);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.subtract(t,e);var n=xt(t.dtype,e.dtype);if(i.getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,ia,t.dtype);var r=new la(ia,t.shape,e.shape),o=this.makeOutputArray(r.outputShape,n);return this.compileAndRun(r,[t,e],o)},t.prototype.pow=function(t,e){var n=i.getBool("WEBGL_PACK_BINARY_OPERATIONS"),r=n?new ha("\n // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.\n vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));\n vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);\n vec4 result = multiplier * pow(abs(a), b);\n\n // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS\n bvec4 isExpZero = equal(b, vec4(0.0));\n result.r = isExpZero.r ? 1.0 : result.r;\n result.g = isExpZero.g ? 1.0 : result.g;\n result.b = isExpZero.b ? 1.0 : result.b;\n result.a = isExpZero.a ? 1.0 : result.a;\n\n vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new la("\nif(a < 0.0 && floor(b) < b){\n return NAN;\n}\nif (b == 0.0) {\n return 1.0;\n}\nreturn (round(mod(b, 2.0)) != 1) ?\n pow(abs(a), b) : sign(a) * pow(abs(a), b);\n",t.shape,e.shape),o=xt(t.dtype,e.dtype),a=n?this.makePackedTensor(r.outputShape,o):this.makeOutputArray(r.outputShape,o);return this.compileAndRun(r,[t,e],a)},t.prototype.ceil=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.ceil(t);if(i.getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,os,t.dtype);var e=new Yi(t.shape,os);return this.compileAndRun(e,[t])},t.prototype.floor=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.floor(t);if(i.getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,as,t.dtype);var e=new Yi(t.shape,as);return this.compileAndRun(e,[t])},t.prototype.sign=function(t){var e=new Yi(t.shape,"\n if (isnan(x)) { return 0.0; }\n return sign(x);\n");return this.compileAndRun(e,[t])},t.prototype.isNaN=function(t){var e=new Yi(t.shape,"return float(isnan(x));"),n=this.makeOutputArray(e.outputShape,"bool");return this.compileAndRun(e,[t],n)},t.prototype.isInf=function(t){var e=new Yi(t.shape,"return float(isinf(x));"),n=this.makeOutputArray(e.outputShape,"bool");return this.compileAndRun(e,[t],n)},t.prototype.isFinite=function(t){var e=new Yi(t.shape,"return float(!isnan(x) && !isinf(x));"),n=this.makeOutputArray(e.outputShape,"bool");return this.compileAndRun(e,[t],n)},t.prototype.round=function(t){var e=new Yi(t.shape,"\n // OpenGL ES does not support round function.\n // The algorithm is based on banker's rounding.\n float base = floor(x);\n if ((x - base) < 0.5) {\n return floor(x);\n } else if ((x - base) > 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n");return this.compileAndRun(e,[t])},t.prototype.exp=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.exp(t);if(i.getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,is,t.dtype);var e=new Yi(t.shape,is);return this.compileAndRun(e,[t])},t.prototype.expm1=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.expm1(t);if(i.getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,ss,t.dtype);var e=new Yi(t.shape,ss);return this.compileAndRun(e,[t])},t.prototype.log=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.log(t);if(i.getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,"\n vec4 result = log(x);\n vec4 isNaN = vec4(lessThan(x, vec4(0.0)));\n result.r = isNaN.r == 1.0 ? NAN : result.r;\n result.g = isNaN.g == 1.0 ? NAN : result.g;\n result.b = isNaN.b == 1.0 ? NAN : result.b;\n result.a = isNaN.a == 1.0 ? NAN : result.a;\n\n return result;\n",t.dtype);var e=new Yi(t.shape,"if (x < 0.0) return NAN;\n return log(x);");return this.compileAndRun(e,[t])},t.prototype.log1p=function(t){var e=new Yi(t.shape,"return log(1.0 + x);");return this.compileAndRun(e,[t])},t.prototype.sqrt=function(t){var e=new Yi(t.shape,"return sqrt(x);");return this.compileAndRun(e,[t])},t.prototype.rsqrt=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.rsqrt(t);var e=new Yi(t.shape,"return inversesqrt(x);");return this.compileAndRun(e,[t])},t.prototype.square=function(t){var e=new Yi(t.shape,"return x * x;");return this.compileAndRun(e,[t])},t.prototype.reciprocal=function(t){var e=new Yi(t.shape,"return 1.0 / x;");return this.compileAndRun(e,[t])},t.prototype.relu=function(t){var e;return e=i.getBool("WEBGL_PACK")?new gs(t.shape,vs):new Yi(t.shape,ts),this.compileAndRun(e,[t])},t.prototype.prelu=function(t,e){var n=i.getBool("WEBGL_PACK_BINARY_OPERATIONS")?new ha(ca,t.shape,e.shape):new la(ua,t.shape,e.shape);return this.compileAndRun(n,[t,e])},t.prototype.elu=function(t){if(i.getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,ms,t.dtype);var e=new Yi(t.shape,es);return this.compileAndRun(e,[t])},t.prototype.eluDer=function(t,e){var n=i.getBool("WEBGL_PACK_BINARY_OPERATIONS")?new ha("\n vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));\n return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\n",t.shape,e.shape):new la("return (b >= 1.0) ? a : a * (b + 1.0);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},t.prototype.selu=function(t){var e=new Yi(t.shape,ns);return this.compileAndRun(e,[t])},t.prototype.int=function(t){var e=new Yi(t.shape,"return float(int(x));"),n=this.makeOutputArray(e.outputShape,"int32");return this.compileAndRun(e,[t],n)},t.prototype.clip=function(t,e,n){var r,o=(r=i.getBool("WEBGL_PACK_CLIP")?new fa(t.shape):new pa(t.shape)).getCustomSetupFunc(e,n);return this.compileAndRun(r,[t],null,o)},t.prototype.abs=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.abs(t);if(i.getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Zi,t.dtype);var e=new Yi(t.shape,Zi);return this.compileAndRun(e,[t])},t.prototype.complexAbs=function(t){var e=this.texData.get(t.dataId),n=new da(t.shape),r=[this.makeComplexComponentTensorHandle(t,e.complexTensors.real),this.makeComplexComponentTensorHandle(t,e.complexTensors.imag)];return this.compileAndRun(n,r)},t.prototype.sigmoid=function(t){var e=new Yi(t.shape,"return 1.0 / (1.0 + exp(-1.0 * x));");return this.compileAndRun(e,[t])},t.prototype.softplus=function(t){var e=new Yi(t.shape,"\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n");return this.compileAndRun(e,[t])},t.prototype.sin=function(t){var e=new Yi(t.shape,us);return this.compileAndRun(e,[t])},t.prototype.cos=function(t){var e=new Yi(t.shape,ls);return this.compileAndRun(e,[t])},t.prototype.tan=function(t){var e=new Yi(t.shape,"return tan(x);");return this.compileAndRun(e,[t])},t.prototype.asin=function(t){var e=new Yi(t.shape,"return asin(x);");return this.compileAndRun(e,[t])},t.prototype.acos=function(t){var e=new Yi(t.shape,"return acos(x);");return this.compileAndRun(e,[t])},t.prototype.atan=function(t){var e=new Yi(t.shape,cs);return this.compileAndRun(e,[t])},t.prototype.atan2=function(t,e){var n=i.getBool("WEBGL_PACK_BINARY_OPERATIONS")?new ha("\n vec4 result = atan(a, b);\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new la("\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return atan(a, b);\n",t.shape,e.shape);return this.compileAndRun(n,[t,e])},t.prototype.sinh=function(t){var e=new Yi(t.shape,"\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n");return this.compileAndRun(e,[t])},t.prototype.cosh=function(t){var e=new Yi(t.shape,"\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n");return this.compileAndRun(e,[t])},t.prototype.tanh=function(t){var e=new Yi(t.shape,"\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n");return this.compileAndRun(e,[t])},t.prototype.asinh=function(t){var e=new Yi(t.shape,"return log(x + sqrt(x * x + 1.0));");return this.compileAndRun(e,[t])},t.prototype.acosh=function(t){var e=new Yi(t.shape,hs);return this.compileAndRun(e,[t])},t.prototype.atanh=function(t){var e=new Yi(t.shape,ps);return this.compileAndRun(e,[t])},t.prototype.erf=function(t){var e=new Yi(t.shape,'\n // Error function is calculated approximately with elementary function.\n // See "Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables", Abramowitz and Stegun.\n float p = 0.3275911;\n float a1 = 0.254829592;\n float a2 = -0.284496736;\n float a3 = 1.421413741;\n float a4 = -1.453152027;\n float a5 = 1.061405429;\n\n float t = 1.0 / (1.0 + p * x);\n return 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x);\n');return this.compileAndRun(e,[t])},t.prototype.step=function(t,e){var n=new Yi(t.shape,function(t){return void 0===t&&(t=0),Qi+"\n return x > 0.0 ? 1.0 : float("+t+");\n "}(e));return this.compileAndRun(n,[t])},t.prototype.conv2dByMatMul=function(t,e,n,r,o,a){var s=t.shape,u=this.texData.get(t.dataId),l=n.inChannels,c=s[0]*s[1]*s[2],h=n.outChannels,p="channelsLast"===n.dataFormat,d=(1===c||1===h)&&l>1e3,v=s[2]%2!=0&&!!u.isPacked;if(d||!i.getBool("WEBGL_LAZILY_UNPACK")||!i.getBool("WEBGL_PACK_BINARY_OPERATIONS")||!v){var m=p?s[0]*s[1]*s[2]:s[0]*s[2]*s[3],g=this.reshape(t,[1,m,n.inChannels]),y=this.reshape(e,[1,n.inChannels,n.outChannels]);return this.reshape(this.fusedBatchMatMul({a:g,b:y,transposeA:!1,transposeB:!1,bias:r,activation:o,preluActivationWeights:a}),n.outShape)}var x=p?s[0]*s[1]*(s[2]+1):s[0]*s[2]*(s[3]+1),b=ct.make([1,x,n.inChannels],{dataId:t.dataId},t.dtype,this),w=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,f(Ce(u.shape,b.shape),function(){return "packed reshape "+u.shape+" to "+b.shape+" isn't free"});var C=this.reshape(e,[1,n.inChannels,n.outChannels]),E=this.fusedBatchMatMul({a:b,b:C,transposeA:!1,transposeB:!1,bias:r,activation:o,preluActivationWeights:a}),R=this.texData.get(E.dataId);return f(R.isPacked,function(){return "batchMatMul result is expected to be packed"}),u.shape=w,R.shape=n.outShape,ct.make(n.outShape,{dataId:E.dataId},E.dtype,this)},t.prototype.conv2dWithIm2Row=function(t,e,n,r,o,a){var i=n.filterWidth,s=n.filterHeight,u=n.inChannels,l=n.outWidth,c=n.outHeight,h="channelsLast"===n.dataFormat,p=i*s*u,f=c*l,d=[p,f],v=t.squeeze([0]),m=e.reshape([1,p,-1]),g=new pi(d,v.shape,n),y=this.compileAndRun(g,[v]).reshape([1,d[0],d[1]]),x=null!=r,b=null!=a,w=o?bs(o,!0):null,C=new yi(y.shape,[1,f,n.outChannels],!0,!1,x,w,b),E=[y,m];r&&E.push(r),b&&E.push(a);var R=this.compileAndRun(C,E);return h?R.reshape([1,c,l,n.outChannels]):R.reshape([1,n.outChannels,c,l])},t.prototype.fusedConv2d=function(t,e,n,r,o,a){if(1===n.filterHeight&&1===n.filterWidth&&1===n.dilationHeight&&1===n.dilationWidth&&1===n.strideHeight&&1===n.strideWidth&&("SAME"===n.padInfo.type||"VALID"===n.padInfo.type))return this.conv2dByMatMul(t,e,n,r,o,a);if(i.getBool("WEBGL_CONV_IM2COL")&&1===t.shape[0])return this.conv2dWithIm2Row(t,e,n,r,o,a);var s=null!=r,u=null!=a,l=o?bs(o,!1):null,c=new Ea(n,s,l,u),h=[t,e];return r&&h.push(r),a&&h.push(a),this.compileAndRun(c,h)},t.prototype.conv2d=function(t,e,n){if(1===n.filterHeight&&1===n.filterWidth&&1===n.dilationHeight&&1===n.dilationWidth&&1===n.strideHeight&&1===n.strideWidth&&("SAME"===n.padInfo.type||"VALID"===n.padInfo.type))return this.conv2dByMatMul(t,e,n);if(i.getBool("WEBGL_CONV_IM2COL")&&1===t.shape[0])return this.conv2dWithIm2Row(t,e,n);var r=new Ea(n);return this.compileAndRun(r,[t,e])},t.prototype.conv2dDerInput=function(t,e,n){var r=new ya(n);return this.compileAndRun(r,[t,e])},t.prototype.conv2dDerFilter=function(t,e,n){var r=new ga(n);return this.compileAndRun(r,[t,e])},t.prototype.depthwiseConv2D=function(t,e,n){var r;return i.getBool("WEBGL_PACK_DEPTHWISECONV")&&n.strideWidth<=2&&n.outChannels/n.inChannels==1?(r=new ka(n),this.compileAndRun(r,[t,e],this.makePackedTensor(n.outShape,t.dtype))):(r=new Ia(n),this.compileAndRun(r,[t,e]))},t.prototype.depthwiseConv2DDerInput=function(t,e,n){var r=new Ca(n);return this.compileAndRun(r,[t,e])},t.prototype.depthwiseConv2DDerFilter=function(t,e,n){var r=new wa(n);return this.compileAndRun(r,[t,e])},t.prototype.conv3d=function(t,e,n){var r=new Ra(n);return this.compileAndRun(r,[t,e])},t.prototype.conv3dDerInput=function(t,e,n){var r=new ba(n);return this.compileAndRun(r,[t,e])},t.prototype.conv3dDerFilter=function(t,e,n){var r=new xa(n);return this.compileAndRun(r,[t,e])},t.prototype.maxPool=function(t,e){var n=new Ri(e,"max",!1),r=this.makeOutputArray(n.outputShape,t.dtype);return this.compileAndRun(n,[t],r)},t.prototype.avgPool=function(t,e){var n=new Ri(e,"avg",!1),r=this.makeOutputArray(n.outputShape,"float32");return this.compileAndRun(n,[t],r)},t.prototype.maxPoolBackprop=function(t,e,n,r){var o=new Ri(r,"max",!0),a=this.compileAndRun(o,[e]),i=new mi(r),s=this.makeOutputArray(i.outputShape,e.dtype),u=this.compileAndRun(i,[t,a],s);return a.dispose(),u},t.prototype.avgPoolBackprop=function(t,e,n){var r=new Jo(n),o=this.makeOutputArray(r.outputShape,e.dtype);return this.compileAndRun(r,[t],o)},t.prototype.cast=function(t,e){return mo(t,e,this)},t.prototype.unstack=function(t,e){for(var n=t.shape[e],r=new Array(t.rank-1),o=0,a=0;a1,function(){return "blockSize should be > 1 for depthToSpace, but was: "+e});var r=t.shape[0],o="NHWC"===n?t.shape[1]:t.shape[2],a="NHWC"===n?t.shape[2]:t.shape[3],i="NHWC"===n?t.shape[3]:t.shape[1],s=o*e,u=a*e,l=i/(e*e),c=new _a("NHWC"===n?[r,s,u,l]:[r,l,s,u],e,n);return this.compileAndRun(c,[t])},t.prototype.split=function(t,e,n){return ko(t,e,n)},t.prototype.scatterND=function(t,e,n){var r=Br(0,t,n),o=r.sliceRank,a=r.numUpdates,i=r.sliceSize,s=r.strides,u=r.outputSize,l=[u/i,i],c=t.reshape([a,o]),h=e.reshape([a,i]);if(0===u)return go(xn([]),n);var p=wn(0),f=new Mi(a,o,c.rank,h.rank,s,l);return this.compileAndRun(f,[h,c,p]).reshape(n)},t.prototype.sparseToDense=function(t,e,n,r){var o=Br(0,t,n),a=o.sliceRank,i=o.numUpdates,s=o.strides,u=o.outputSize,l=new Mi(i,a,t.rank,e.rank,s,[u,1],!1);return this.compileAndRun(l,[e,t,r]).reshape(n)},t.prototype.fft=function(t){return this.fftImpl(t,!1)},t.prototype.ifft=function(t){return this.fftImpl(t,!0)},t.prototype.fftImpl=function(t,e){var n=this.texData.get(t.dataId),r=new Ua(La,t.shape,e),o=new Ua(Wa,t.shape,e),a=[this.makeComplexComponentTensorHandle(t,n.complexTensors.real),this.makeComplexComponentTensorHandle(t,n.complexTensors.imag)],i=this.compileAndRun(r,a),s=this.compileAndRun(o,a),u=this.complex(i,s).as2D(t.shape[0],t.shape[1]);return i.dispose(),s.dispose(),u},t.prototype.gatherND=function(t,e){var n=e.shape,r=n[n.length-1],o=_r(t,e),a=o[0],i=o[1],s=o[2],u=o[3],l=e.reshape([i,r]),c=t.reshape([t.size/s,s]),h=new qa(r,u,[i,s]);return this.compileAndRun(h,[c,l]).reshape(a)},t.prototype.fill=function(t,e,n){if("string"===(n=n||L(e))){var r=S(n,g(t));return r.fill(e),ct.make(t,{values:r},n)}var o=new Va(t,e),a=o.getCustomSetupFunc(e),i=this.makeOutputArray(t,n);return this.compileAndRun(o,[],i,a)},t.prototype.onesLike=function(t){if("string"===t.dtype)throw new Error("onesLike is not supported under string dtype");return this.fill(t.shape,1,t.dtype)},t.prototype.zerosLike=function(t){return this.fill(t.shape,"string"===t.dtype?"":0,t.dtype)},t.prototype.linspace=function(t,e,n){return yo(t,e,n)},t.prototype.makeOutputArray=function(t,e){return ct.make(t,{},e,this)},t.prototype.makePackedTensor=function(t,e){var n=ct.make(t,{},e,this);return this.texData.get(n.dataId).isPacked=!0,n},t.prototype.unpackTensor=function(t){var e=new ys(t.shape);return this.compileAndRun(e,[t],ct.make(e.outputShape,{},t.dtype,this))},t.prototype.packTensor=function(t){var e=new wi(t.shape);return this.compileAndRun(e,[t],this.makePackedTensor(t.shape,t.dtype),null,!0)},t.prototype.packedReshape=function(t,e){var n=t.reshape([ge(t.shape)].concat(ye(t.shape))),r=[ge(e)].concat(ye(e)),o=new Ni(r,n.shape);return this.compileAndRun(o,[n]).reshape(e)},t.prototype.decode=function(t){var e,n=this.texData.get(t),r=n.isPacked,o=n.shape,a=n.dtype,i=xe(o),s=Lt(o),u=this.makeTensorHandle(o,"float32");return this.texData.get(u.dataId).isPacked=!0,this.texData.get(u.dataId).dtype=a,this.texData.get(u.dataId).texShape=s.map(function(t){return 2*t}),e=r?new Da(i,s):new Ta(i,s),this.compileAndRun(e,[{shape:i,dtype:a,dataId:t}],u,null,!0),u},t.prototype.compileAndRun=function(t,e,n,r,o){var a=this;if(void 0===o&&(o=!1),null==n&&(n=t.usesPackedTextures?this.makePackedTensor(t.outputShape,e[0].dtype):this.makeOutputArray(t.outputShape,e[0].dtype)),0===n.size)return this.texData.get(n.dataId).values=N(n.dtype,0),n;var s=e.map(function(e){if("complex64"===e.dtype)throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var n=a.texData.get(e.dataId);if(null==n.texture){if(!t.usesPackedTextures&&g(e.shape)<=i.getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return {shape:e.shape,texData:null,isUniform:!0,uniformValues:n.values};t.usesPackedTextures&&(n.isPacked=!0,n.shape=e.shape);}else if(!!n.isPacked!=!!t.usesPackedTextures)e=n.isPacked?a.unpackTensor(e):a.packTensor(e),n=a.texData.get(e.dataId);else if(n.isPacked&&!Ce(n.shape,e.shape)){var r=e,o=e.shape;e.shape=n.shape,e=a.packedReshape(e,o),n=a.texData.get(e.dataId),r.shape=o;}return a.uploadToGPU(e.dataId),{shape:e.shape,texData:n,isUniform:!1}});this.uploadToGPU(n.dataId);var u,l={shape:n.shape,texData:this.texData.get(n.dataId),isUniform:!1},c=function(t,e,n){var r="";e.concat(n).forEach(function(t){var e=null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0,n=t.isUniform?"uniform":t.texData.texShape;r+=t.shape+"_"+n+"_"+e;});var o=t.userCode,a=t.constructor.name;return a+="_"+r+"_"+o}(t,s,l),h=this.getAndSaveBinary(c,function(){return function(t,e,n,r){var o=e.userCode,a=n.map(function(t,n){var r={logicalShape:t.shape,texShape:t.isUniform?null:t.texData.texShape,isUniform:t.isUniform,isPacked:!t.isUniform&&t.texData.isPacked,flatOffset:null};return null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0&&(r.flatOffset=t.texData.slice.flatOffset),{name:e.variableNames[n],shapeInfo:r}}),s=a.map(function(t){return t.shapeInfo}),u={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},l=Wo(a,u,o,e.usesPackedTextures),c=t.createProgram(l),h=null,p=t.getUniformLocation(c,"NAN",!1);1===i.getNumber("WEBGL_VERSION")&&(h=t.getUniformLocation(c,"INFINITY",!1));for(var f={},d=0;d0)return 32}return 16})),this.floatPrecisionValue},t.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},t.prototype.uploadToGPU=function(t){var e,n=this.texData.get(t),r=n.shape,o=n.dtype,a=n.values,i=n.texture,s=n.usage,u=n.isPacked;if(null==i){var l,c=null!=this.activeTimers;c&&(l=$());var h=n.texShape;if(null==h&&(h=be(r,u),n.texShape=h),null!=a){var p=xe(r),f=void 0,d=h[1],v=h[0],m=a instanceof Uint8Array;u?(d=(e=Wt(h[0],h[1]))[0],v=e[1],f=new Pa(p,[v,d],m)):f=new Ba(p,[v,d],m);var y=this.makeTensorHandle([v,d],o);this.texData.get(y.dataId).usage=m?Tt.PIXELS:Tt.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(y.dataId),d,v,a);var x=this.makeTensorHandle(f.outputShape,y.dtype);x.size=g(f.outputShape),this.texData.get(x.dataId).isPacked=u,this.compileAndRun(f,[y],x);var b=this.texData.get(x.dataId);n.texture=b.texture,n.texShape=b.texShape,n.isPacked=b.isPacked,n.usage=b.usage,this.disposeData(y.dataId),this.texData.delete(x.dataId),n.values=null,c&&(this.uploadWaitMs+=$()-l);}else{var w=this.acquireTexture(h,s,o,u);n.texture=w;}}},t.prototype.convertAndCacheOnCPU=function(t,e){var n=this.texData.get(t),r=n.dtype;return this.releaseGPUData(t),null!=e&&(n.values=function(t,e){if("float32"===e||"complex64"===e)return t;if("int32"===e||"bool"===e){for(var n="int32"===e?new Int32Array(t.length):new Uint8Array(t.length),r=0;r1024*this.numMBBeforeWarning*1024){var o=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn("High memory usage in GPU: "+o+" MB, most likely due to a memory leak");}return this.textureManager.acquireTexture(t,e,r)},t.prototype.computeBytes=function(t,e){return t[0]*t[1]*O(e)},t}();At()&&St.registerBackend("webgl",function(){return new Cs},2);var Es=vn({abs_:function(t){var e=nn(t,"x","abs");return "complex64"===e.dtype?St.runKernel(function(t){return t.complexAbs(e)},{$x:e}):St.runKernel(function(t,n){var r=t.abs(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.mul(n.toFloat().step(-1))}}})}}),Rs=vn({acos_:function(t){var e=nn(t,"x","acos");return St.runKernel(function(t,n){var r=t.acos(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.divStrict(wn(1).sub(n.toFloat().square()).sqrt()).neg()}}})}}),Is=vn({acosh_:function(t){var e=nn(t,"x","acosh");return St.runKernel(function(t,n){var r=t.acosh(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.divStrict(n.toFloat().square().sub(1).sqrt())}}})}}),ks=vn({asin_:function(t){var e=nn(t,"x","asin");return St.runKernel(function(t,n){var r=t.asin(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.divStrict(wn(1).sub(n.toFloat().square()).sqrt())}}})}}),Ns=vn({asinh_:function(t){var e=nn(t,"x","asinh");return St.runKernel(function(t,n){var r=t.asinh(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.divStrict(wn(1).add(n.toFloat().square()).sqrt())}}})}}),Ss=vn({atan_:function(t){var e=nn(t,"x","atan");return St.runKernel(function(t,n){var r=t.atan(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.div(n.toFloat().square().add(1))}}})}}),As=vn({atanh_:function(t){var e=nn(t,"x","atanh");return St.runKernel(function(t,n){var r=t.atanh(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.div(wn(1).sub(n.toFloat().square()))}}})}}),Ts=vn({ceil_:function(t){var e=nn(t,"x","ceil");return St.runKernel(function(t){return t.ceil(e)},{$x:e},function(t){return {$x:function(){return Fn(t)}}})}}),Ds=vn({clipByValue_:function(t,e,n){var r=nn(t,"x","clipByValue");return f(e<=n,function(){return "Error in clip: min ("+e+") must be less than or equal to max ("+n+")."}),St.runKernel(function(t,o){var a=t.clip(r,e,n);return o([r]),a},{$x:r},function(t,r){var o=r[0];return {$x:function(){return t.where(o.greaterEqual(e).logicalAnd(o.lessEqual(n)),Fn(t))}}})}}),_s=vn({cos_:function(t){var e=nn(t,"x","cos");return St.runKernel(function(t,n){var r=t.cos(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return n.toFloat().sin().neg().mul(t)}}})}}),Os=vn({cosh_:function(t){var e=nn(t,"x","cosh");return St.runKernel(function(t,n){var r=t.cosh(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return n.toFloat().sinh().mulStrict(t)}}})}}),Fs=vn({erf_:function(t){var e=nn(t,"x","erf");return f("int32"===e.dtype||"float32"===e.dtype,function(){return "Input dtype must be `int32` or `float32`."}),"int32"===e.dtype&&(e=e.toFloat()),St.runKernel(function(t,n){var r=t.erf(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.mul(n.square().neg().exp().mul(2/Math.sqrt(Math.PI)))}}})}}),Ms=vn({exp_:function(t){var e=nn(t,"x","exp");return St.runKernel(function(t,n){var r=t.exp(e);return n([r]),r},{$x:e},function(t,e){return {$x:function(){return t.mulStrict(e[0])}}})}}),Bs=vn({expm1_:function(t){var e=nn(t,"x","expm1");return St.runKernel(function(t,n){var r=t.expm1(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.mul(n.exp())}}})}}),Ps=vn({floor_:function(t){var e=nn(t,"x","floor");return St.runKernel(function(t){return t.floor(e)},{$x:e},function(t){return {$x:function(){return Fn(t)}}})}}),Ls=vn({log_:function(t){var e=nn(t,"x","log");return St.runKernel(function(t,n){var r=t.log(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.div(n.toFloat())}}})}}),Ws=vn({log1p_:function(t){var e=nn(t,"x","log1p");return St.runKernel(function(t,n){var r=t.log1p(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.div(n.add(1))}}})}}),Us=vn({logSigmoid_:function(t){var e=nn(t,"x","logSigmoid");return St.runKernel(function(t,n){var r=t.softplus(e.neg()).neg();return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.mul(n.neg().sigmoid())}}})}}),Vs=vn({neg_:function(t){var e=nn(t,"x","neg");return St.runKernel(function(t){return t.neg(e)},{$x:e},function(t){return {$x:function(){return t.neg()}}})}}),zs=vn({reciprocal_:function(t){var e=nn(t,"x","reciprocal");return St.runKernel(function(t,n){var r=t.reciprocal(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.div(n.square().neg())}}})}}),Gs=vn({round_:function(t){var e=nn(t,"x","round");return St.runKernel(function(t){return t.round(e)},{$x:e},function(t){return {$x:function(){return Fn(t)}}})}}),Hs=vn({rsqrt_:function(t){var e=nn(t,"x","rsqrt");return St.runKernel(function(t,n){var r=t.rsqrt(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.div(n.pow(1.5).mul(2)).neg()}}})}}),qs=vn({sigmoid_:function(t){var e=nn(t,"x","sigmoid");return St.runKernel(function(t,n){var r=t.sigmoid(e);return n([r]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.mul(n.mul(wn(1).sub(n)))}}})}}),$s=vn({sign_:function(t){var e=nn(t,"x","sign");return St.runKernel(function(t){return t.sign(e)},{$x:e},function(t){return {$x:function(){return Fn(t)}}})}}),Ks=vn({isNaN_:function(t){var e=nn(t,"x","isNaN");return St.runKernel(function(t){return t.isNaN(e)},{$x:e},function(t){return {$x:function(){return Fn(t)}}})}}),js=vn({isInf_:function(t){var e=nn(t,"x","isInf");return St.runKernel(function(t){return t.isInf(e)},{$x:e},function(t){return {$x:function(){return Fn(t)}}})}}),Xs=vn({isFinite_:function(t){var e=nn(t,"x","isFinite");return St.runKernel(function(t){return t.isFinite(e)},{$x:e},function(t){return {$x:function(){return Fn(t)}}})}}),Ys=vn({sin_:function(t){var e=nn(t,"x","sin");return St.runKernel(function(t,n){var r=t.sin(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return n.toFloat().cos().mul(t)}}})}}),Qs=vn({sinh_:function(t){var e=nn(t,"x","sinh");return St.runKernel(function(t,n){var r=t.sinh(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return n.toFloat().cosh().mulStrict(t)}}})}}),Js=vn({softplus_:function(t){var e=nn(t,"x","softplus");return St.runKernel(function(t,n){var r=t.softplus(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.mul(n.sigmoid())}}})}}),Zs=vn({sqrt_:function(t){var e=nn(t,"x","sqrt");return St.runKernel(function(t,n){var r=t.sqrt(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.div(n.toFloat().sqrt().mul(2))}}})}}),tu=vn({square_:function(t){var e=nn(t,"x","square");return St.runKernel(function(t,n){return n([e]),t.square(e)},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.mul(n.toFloat().mul(2))}}})}}),eu=vn({step_:function(t,e){void 0===e&&(e=0);var n=nn(t,"x","step");return St.runKernel(function(t){return t.step(n,e)},{$x:n},function(t){return {$x:function(){return Fn(t)}}})}}),nu=vn({tan_:function(t){var e=nn(t,"x","tan");return St.runKernel(function(t,n){var r=t.tan(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.div(n.cos().square())}}})}}),ru=vn({tanh_:function(t){var e=nn(t,"x","tanh");return St.runKernel(function(t,n){var r=t.tanh(e);return n([r]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return wn(1).sub(n.square()).mulStrict(t)}}})}});function ou(t,e,n,r,o,a){var i,s,u=nn(t,"x","batchNorm"),l=nn(e,"mean","batchNorm"),c=nn(n,"variance","batchNorm");return null!=o&&(i=nn(o,"scale","batchNorm")),null!=r&&(s=nn(r,"offset","batchNorm")),f(2===u.rank,function(){return "Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."}),f(2===l.rank||1===l.rank,function(){return "Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank "+l.rank+"."}),f(2===c.rank||1===c.rank,function(){return "Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank "+c.rank+"."}),null!=i&&f(2===i.rank||1===i.rank,function(){return "Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank "+i.rank+"."}),null!=s&&f(2===s.rank||1===s.rank,function(){return "Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank "+s.rank+"."}),su(u,l,c,s,i,a)}function au(t,e,n,r,o,a){var i,s,u=nn(t,"x","batchNorm"),l=nn(e,"mean","batchNorm"),c=nn(n,"variance","batchNorm");return null!=o&&(i=nn(o,"scale","batchNorm")),null!=r&&(s=nn(r,"offset","batchNorm")),f(3===u.rank,function(){return "Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."}),f(3===l.rank||1===l.rank,function(){return "Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank "+l.rank+"."}),f(3===c.rank||1===c.rank,function(){return "Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank "+c.rank+"."}),null!=i&&f(3===i.rank||1===i.rank,function(){return "Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank "+i.rank+"."}),null!=s&&f(3===s.rank||1===s.rank,function(){return "Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank "+s.rank+"."}),su(u,l,c,s,i,a)}function iu(t,e,n,r,o,a){var i,s,u=nn(t,"x","batchNorm"),l=nn(e,"mean","batchNorm"),c=nn(n,"variance","batchNorm");return null!=o&&(i=nn(o,"scale","batchNorm")),null!=r&&(s=nn(r,"offset","batchNorm")),f(4===u.rank,function(){return "Error in batchNorm4D: x must be rank 4 but got rank "+u.rank+"."}),f(4===l.rank||1===l.rank,function(){return "Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank "+l.rank+"."}),f(4===c.rank||1===c.rank,function(){return "Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank "+c.rank+"."}),null!=i&&f(4===i.rank||1===i.rank,function(){return "Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank "+i.rank+"."}),null!=s&&f(4===s.rank||1===s.rank,function(){return "Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank "+s.rank+"."}),su(u,l,c,s,i,a)}function su(t,e,n,r,o,a){null==a&&(a=.001);var i,s,u,l=nn(t,"x","batchNorm"),c=nn(e,"mean","batchNorm"),h=nn(n,"variance","batchNorm");null!=o&&(i=nn(o,"scale","batchNorm")),null!=r&&(s=nn(r,"offset","batchNorm")),f(c.rank===h.rank,function(){return "Batch normalization gradient requires mean and variance to have equal ranks."}),f(null==s||c.rank===s.rank,function(){return "Batch normalization gradient requires mean and offset to have equal ranks."}),f(null==i||c.rank===i.rank,function(){return "Batch normalization gradient requires mean and scale to have equal ranks."}),u=0===l.rank||1===l.rank?l.as4D(1,1,1,l.size):2===l.rank?l.as4D(1,1,l.shape[0],l.shape[1]):3===l.rank?l.as4D(1,l.shape[0],l.shape[1],l.shape[2]):l;return St.runKernel(function(t,e){var n=t.batchNormalization(u,uu(c),uu(h),a,uu(i),uu(s));return e([l,c,h,i]),n},{$x:l,$mean:c,$variance:h,$scale:i,$offset:s},function(t,e){var n=e,r=n[0],o=n[1],i=n[2],s=n[3],l=null==s?wn(1):s,c=eo(o.shape,u.shape),h=[];if(1===o.rank){for(var p=0;p0&&(e=e.sum(n)),e.reshape(r.shape)},$b:function(){var e=t,n=eo(o.shape,a);return n.length>0&&(e=e.sum(n)),e.reshape(o.shape)}}})}}),Iu=vn({addN_:function(t){f(Array.isArray(t),function(){return "The argument passed to tf.addN() must be a list of tensors"}),f(t.length>=1,function(){return "Must pass at least one tensor to tf.addN(), but got "+t.length});var e=t.map(function(t,e){return nn(t,"tensors"+e,"addN")}),n=e[0];e.forEach(function(t){if(t.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),e.forEach(function(t){if(!y(t.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});var r=e;return St.runKernel(function(t){return t.addN(e)},r,function(t){var n={};return e.forEach(function(e,r){n[r]=function(){return t.clone()};}),n})}}),ku=vn({addStrict_:function(t,e){var n=nn(t,"a","addStrict"),r=nn(e,"b","addStrict");return d(n.shape,r.shape,"Error in addStrict: "),n.add(r)}}),Nu=vn({atan2_:function(t,e){var n,r=nn(t,"a","atan2"),o=nn(e,"b","atan2");n=wt(r,o),r=n[0],o=n[1];var a=no(r.shape,o.shape);return St.runKernel(function(t,e){var n=t.atan2(r,o);return e([r,o]),n},{$a:r,$b:o},function(t,e){var n=e[0],r=e[1];return {$a:function(){var e=Ru(n.square(),r.square()),o=t.mul(r.div(e)),i=eo(n.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(n.shape)},$b:function(){var e=Ru(n.square(),r.square()),o=Vs(t.mul(n.div(e))),i=eo(r.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(r.shape)}}})}}),Su=vn({div_:function(t,e){var n,r=nn(t,"a","div"),o=nn(e,"b","div");if(n=wt(r,o),r=n[0],o=n[1],"int32"===r.dtype&&"int32"===o.dtype)return Tu(r,o);var a=no(r.shape,o.shape);return St.runKernel(function(t,e){var n=t.realDivide(r,o);return e([r,o]),n},{$a:r,$b:o},function(t,e){var n=e[0],r=e[1];return {$a:function(){var e=t.div(r.toFloat()),o=eo(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},$b:function(){var e=t.mul(n.toFloat()),o=eo(r.shape,a);o.length>0&&(e=e.sum(o).reshape(r.shape));var i=r.square();return e.div(i.toFloat()).neg()}}})}}),Au=vn({divStrict_:function(t,e){var n=nn(t,"a","div"),r=nn(e,"b","div");return d(n.shape,r.shape,"Error in divideStrict: "),n.div(r)}}),Tu=vn({floorDiv_:function(t,e){var n,r=nn(t,"a","floorDiv"),o=nn(e,"b","floorDiv");n=wt(r,o),r=n[0],o=n[1];var a=no(r.shape,o.shape);return St.runKernel(function(t,e){var n=t.floorDiv(r,o);return e([r,o]),n},{$a:r,$b:o},function(t,e){var n=e[0],r=e[1];return {$a:function(){var e=t.div(r.toFloat()),o=eo(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},$b:function(){var e=t.mul(n.toFloat()),o=eo(r.shape,a);o.length>0&&(e=e.sum(o).reshape(r.shape));var i=r.square();return e.div(i.toFloat()).neg()}}})}}),Du=vn({maximum_:function(t,e){var n,r=nn(t,"a","maximum"),o=nn(e,"b","maximum");return n=wt(r,o),r=n[0],o=n[1],"bool"===r.dtype&&(r=r.toInt(),o=o.toInt()),no(r.shape,o.shape),St.runKernel(function(t,e){var n=t.maximum(r,o);return e([r,o]),n},{$a:r,$b:o},function(t,e){var n=e[0],r=e[1];return {$a:function(){return t.mul(n.greaterEqual(r).toFloat())},$b:function(){return t.mul(n.less(r).toFloat())}}})}}),_u=vn({maximumStrict_:function(t,e){var n=nn(t,"a","maximumStrict"),r=nn(e,"b","maximumStrict");return d(n.shape,r.shape,"Error in maximumStrict: "),n.maximum(r)}}),Ou=vn({minimum_:function(t,e){var n,r=nn(t,"a","minimum"),o=nn(e,"b","minimum");return n=wt(r,o),r=n[0],o=n[1],"bool"===r.dtype&&(r=r.toInt(),o=o.toInt()),no(r.shape,o.shape),St.runKernel(function(t,e){var n=t.minimum(r,o);return e([r,o]),n},{$a:r,$b:o},function(t,e){var n=e[0],r=e[1];return {$a:function(){return t.mul(n.lessEqual(r).toFloat())},$b:function(){return t.mul(n.greater(r).toFloat())}}})}}),Fu=vn({minimumStrict_:function(t,e){var n=nn(t,"a","minimumStrict"),r=nn(e,"b","minimumStrict");return d(n.shape,r.shape,"Error in minimumStrict: "),n.minimum(r)}}),Mu=vn({mod_:function(t,e){var n,r=nn(t,"a","mod"),o=nn(e,"b","mod");n=wt(r,o),r=n[0],o=n[1];var a=no(r.shape,o.shape);return St.runKernel(function(t,e){var n=t.mod(r,o);return e([r,o]),n},{$a:r,$b:o},function(t,e){var n=e[0],r=e[1];return {$a:function(){var e=eo(n.shape,a);return e.length>0?t.sum(e).reshape(n.shape):t},$b:function(){var e=t.mul(n.div(r).floor().neg()),o=eo(r.shape,a);return o.length>0?e.sum(o).reshape(r.shape):e}}})}}),Bu=vn({modStrict_:function(t,e){var n=nn(t,"a","modStrict"),r=nn(e,"b","modStrict");return d(n.shape,r.shape,"Error in modStrict: "),n.mod(r)}}),Pu=vn({mul_:function(t,e){var n,r=nn(t,"a","mul"),o=nn(e,"b","mul");n=wt(r,o),r=n[0],o=n[1];var a=no(r.shape,o.shape);return St.runKernel(function(t,e){var n=t.multiply(r,o);return e([r,o]),n},{$a:r,$b:o},function(t,e){var n=e[0],r=e[1];return {$a:function(){var e=t.mul(r.toFloat()),o=eo(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},$b:function(){var e=t.mul(n.toFloat()),o=eo(r.shape,a);return o.length>0?e.sum(o).reshape(r.shape):e}}})}}),Lu=vn({mulStrict_:function(t,e){var n=nn(t,"a","mul"),r=nn(e,"b","mul");return d(n.shape,r.shape,"Error in multiplyStrict: "),n.mul(r)}}),Wu=vn({pow_:function(t,e){var n=nn(t,"base","pow"),r=nn(e,"exp","pow"),o=no(n.shape,r.shape);return t=n.cast(xt(n.dtype,r.dtype)),e=r.cast(xt(n.dtype,r.dtype)),St.runKernel(function(t,e){var o=t.pow(n,r);return e([n,r,o]),o},{$base:n,$exp:r},function(t,e){var n=e[0],r=e[1],a=e[2];return {$base:function(){var e=r.toFloat(),a=t.mul(e.mul(n.pow(e.sub(wn(1))))),i=eo(n.shape,o);return i.length>0&&(a=a.sum(i)),a.reshape(n.shape)},$exp:function(){var e=n.greater(0),i=n.log().where(e,Fn(n)),s=t.mul(a.mul(i)),u=eo(r.shape,o);return u.length>0&&(s=s.sum(u)),s.reshape(r.shape)}}})}}),Uu=vn({powStrict_:function(t,e){return d(t.shape,e.shape,"Error in powStrict: "),t.pow(e)}}),Vu=vn({squaredDifference_:function(t,e){var n,r=nn(t,"a","squaredDifference"),o=nn(e,"b","squaredDifference");return n=wt(r,o),r=n[0],o=n[1],no(r.shape,o.shape),St.runKernel(function(t,e){var n=t.squaredDifference(r,o);return e([r,o]),n},{$a:r,$b:o},function(t,e){var n=e[0],r=e[1],o=wn(2);return {$a:function(){return t.mul(n.sub(r).mul(o))},$b:function(){return t.mul(r.sub(n).mul(o))}}})}}),zu=vn({squaredDifferenceStrict_:function(t,e){var n=nn(t,"a","squaredDifferenceStrict"),r=nn(e,"b","squaredDifferenceStrict");return d(n.shape,r.shape,"Error in squaredDifferenceStrict: "),n.squaredDifference(r)}}),Gu=vn({sub_:function(t,e){var n,r=nn(t,"a","sub"),o=nn(e,"b","sub");n=wt(r,o),r=n[0],o=n[1];var a=no(r.shape,o.shape);return St.runKernel(function(t){return t.subtract(r,o)},{$a:r,$b:o},function(t){return {$a:function(){var e=t,n=eo(r.shape,a);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},$b:function(){var e=t,n=eo(o.shape,a);return n.length>0&&(e=e.sum(n)),e.neg().reshape(o.shape)}}})}}),Hu=vn({subStrict_:function(t,e){var n=nn(t,"a","subStrict"),r=nn(e,"b","subStrict");return d(n.shape,r.shape,"Error in subStrict: "),n.sub(r)}});var qu=vn({equal_:function(t,e){var n,r=nn(t,"a","equal"),o=nn(e,"b","equal");return n=wt(r,o),r=n[0],o=n[1],no(r.shape,o.shape),St.runKernel(function(t){return t.equal(r,o)},{$a:r,$b:o})}}),$u=vn({equalStrict_:function(t,e){var n=nn(t,"a","equalStrict"),r=nn(e,"b","equalStrict");return d(n.shape,r.shape,"Error in equalStrict: "),n.equal(r)}}),Ku=vn({greater_:function(t,e){var n,r=nn(t,"a","greater"),o=nn(e,"b","greater");return n=wt(r,o),r=n[0],o=n[1],no(r.shape,o.shape),St.runKernel(function(t){return t.greater(r,o)},{$a:r,$b:o})}}),ju=vn({greaterEqual_:function(t,e){var n,r=nn(t,"a","greaterEqual"),o=nn(e,"b","greaterEqual");return n=wt(r,o),r=n[0],o=n[1],no(r.shape,o.shape),St.runKernel(function(t,e){var n=t.greaterEqual(r,o);return e([r,o]),n},{$a:r,$b:o},function(t,e){var n=e[0],r=e[1];return {$a:function(){return Fn(n)},$b:function(){return Fn(r)}}})}}),Xu=vn({greaterEqualStrict_:function(t,e){var n=nn(t,"a","greaterEqualStrict"),r=nn(e,"b","greaterEqualStrict");return d(n.shape,r.shape,"Error in greaterEqualStrict: "),n.greaterEqual(r)}}),Yu=vn({greaterStrict_:function(t,e){var n=nn(t,"a","greaterStrict"),r=nn(e,"b","greaterStrict");return d(n.shape,r.shape,"Error in greaterStrict: "),n.greater(r)}}),Qu=vn({less_:function(t,e){var n,r=nn(t,"a","less"),o=nn(e,"b","less");return n=wt(r,o),r=n[0],o=n[1],no(r.shape,o.shape),St.runKernel(function(t){return t.less(r,o)},{$a:r,$b:o})}}),Ju=vn({lessEqual_:function(t,e){var n,r=nn(t,"a","lessEqual"),o=nn(e,"b","lessEqual");return n=wt(r,o),r=n[0],o=n[1],no(r.shape,o.shape),St.runKernel(function(t){return t.lessEqual(r,o)},{$a:r,$b:o})}}),Zu=vn({lessEqualStrict_:function(t,e){var n=nn(t,"a","lessEqualStrict"),r=nn(e,"b","lessEqualStrict");return d(n.shape,r.shape,"Error in lessEqualStrict: "),n.lessEqual(r)}}),tl=vn({lessStrict_:function(t,e){var n=nn(t,"a","lessStrict"),r=nn(e,"b","lessStrict");return d(n.shape,r.shape,"Error in lessStrict: "),n.less(r)}}),el=vn({notEqual_:function(t,e){var n,r=nn(t,"a","notEqual"),o=nn(e,"b","notEqual");return n=wt(r,o),r=n[0],o=n[1],no(r.shape,o.shape),St.runKernel(function(t){return t.notEqual(r,o)},{$a:r,$b:o})}}),nl=vn({notEqualStrict_:function(t,e){var n=nn(t,"a","notEqualStrict"),r=nn(e,"b","notEqualStrict");return d(n.shape,r.shape,"Error in notEqualStrict: "),n.notEqual(r)}});function rl(t,e){for(var n=[],r=t;r0,function(){return "mask cannot be scalar"}),d(u.slice(i,i+s),a.shape,"mask's shape must match the first K dimensions of tensor's shape,"),l=1,c=i;c=2&&i.rank>=2&&a.rank===i.rank,function(){return "Error in matMul: inputs must have the same rank of at least 2, got ranks "+a.rank+" and "+i.rank+"."}),f(y(h,p),function(){return "Error in matMul: outer dimensions ("+h+") and ("+p+") of Tensors with shapes "+a.shape+" and "+i.shape+" must match."}),f(s===u,function(){return "Error in matMul: inner shapes ("+s+") and ("+u+") of Tensors with shapes "+a.shape+" and "+i.shape+" and transposeA="+n+" and transposeB="+r+" must match."});var m=a.shape.slice(0,-2).concat([l,c]),x=n?a.as3D(d,s,l):a.as3D(d,l,s),b=r?i.as3D(v,c,u):i.as3D(v,u,c);return St.runKernel(function(t,e){var o=t.batchMatMul(x,b,n,r);return e([x,b]),o},{$a:x,$b:b},function(t,e){var o=e,a=o[0],i=o[1];return n||r?!n&&r?{$a:function(){return t.matMul(i,!1,!1)},$b:function(){return t.matMul(a,!0,!1)}}:n&&!r?{$a:function(){return i.matMul(t,!1,!0)},$b:function(){return a.matMul(t,!1,!1)}}:{$a:function(){return i.matMul(t,!0,!0)},$b:function(){return t.matMul(a,!0,!0)}}:{$a:function(){return t.matMul(i,!1,!0)},$b:function(){return a.matMul(t,!0,!1)}}}).reshape(m)}}),Cl=vn({dot_:function(t,e){var n=nn(t,"t1","dot"),r=nn(e,"t2","dot");f(!(1!==n.rank&&2!==n.rank||1!==r.rank&&2!==r.rank),function(){return "Error in dot: inputs must all be rank 1 or 2, but got ranks "+n.rank+" and "+r.rank+"."});var o=1===n.rank?n.size:n.shape[1],a=1===r.rank?r.size:r.shape[0];return f(o===a,function(){return "Error in dot: inner dimensions of inputs must match, but got "+o+" and "+a+"."}),1===n.rank&&1===r.rank?n.as2D(1,-1).matMul(r.as2D(-1,1)).asScalar():1===n.rank&&2===r.rank?n.as2D(1,-1).matMul(r.as2D(r.shape[0],r.shape[1])).as1D():2===n.rank&&1===r.rank?n.matMul(r.as2D(-1,1)).as1D():n.matMul(r.as2D(r.shape[0],r.shape[1]))}}),El=vn({outerProduct_:function(t,e){var n=nn(t,"v1","outerProduct"),r=nn(e,"v2","outerProduct");return f(1===n.rank&&1===r.rank,function(){return "Error in outerProduct: inputs must be rank 1, but got ranks "+n.rank+" and "+r.rank+"."}),n.as2D(-1,1).matMul(r.as2D(1,-1))}});var Rl=vn({reverse_:function(t,e){var n=nn(t,"x","reverse");if(0===n.rank)return n.clone();var r=I(e,n.shape);return St.runKernel(function(t){return t.reverse(n,r)},{$x:n},function(t){return {$x:function(){return t.reverse(r)}}}).reshapeAs(n)}}),Il=vn({reverse1d_:function(t){var e=nn(t,"x","reverse");return f(1===e.rank,function(){return "Error in reverse1D: x must be rank 1 but got rank "+e.rank+"."}),Rl(e,0)}}),kl=vn({reverse2d_:function(t,e){var n=nn(t,"x","reverse");return f(2===n.rank,function(){return "Error in reverse2D: x must be rank 2 but got rank "+n.rank+"."}),Rl(n,e)}}),Nl=vn({reverse3d_:function(t,e){var n=nn(t,"x","reverse");return f(3===n.rank,function(){return "Error in reverse3D: x must be rank 3 but got rank "+n.rank+"."}),Rl(n,e)}}),Sl=vn({reverse4d_:function(t,e){var n=nn(t,"x","reverse");return f(4===n.rank,function(){return "Error in reverse4D: x must be rank 4 but got rank "+n.rank+"."}),Rl(n,e)}});function Al(t,e,n,r,o,a){var i=nn(t,"x","maxPool"),s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),null==r&&(r=[1,1]),f(4===s.rank,function(){return "Error in maxPool: input must be rank 4 but got rank "+s.rank+"."}),f(fo(n,r),function(){return "Error in maxPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'"}),null!=a&&f(x(o),function(){return "Error in maxPool: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+o+"."});var l=ro(s.shape,e,n,r,o,a),c=St.runKernel(function(t,e){var n=t.maxPool(s,l);return e([s,n]),n},{x:s},function(t,a){var i=a[0],s=a[1];return {x:function(){return function(t,e,n,r,o,a,i,s){var u=nn(t,"dy","maxPoolBackprop"),l=nn(e,"input","maxPoolBackprop"),c=nn(n,"output","maxPoolBackprop");f(l.rank===u.rank,function(){return "Rank of input ("+l.rank+") does not match rank of dy ("+u.rank+")"}),null==a&&(a=[1,1]),f(fo(o,a),function(){return "Error in maxPoolBackProp: Either strides or dilations must be 1. Got strides "+o+" and dilations '"+a+"'"}),f(4===u.rank,function(){return "Error in maxPoolBackprop: dy must be rank 4 but got rank "+u.rank+"."}),f(4===l.rank,function(){return "Error in maxPoolBackprop: input must be rank 4 but got rank "+l.rank+"."}),null!=s&&f(x(i),function(){return "Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode "+s+" but got pad "+i+"."});var h=ro(l.shape,r,o,a,i,s);return St.runKernel(function(t){return t.maxPoolBackprop(u,l,c,h)},{$dy:u,$input:l})}(t,i,s,e,n,r,o)}}});return u?c.as3D(c.shape[1],c.shape[2],c.shape[3]):c}function Tl(t,e,n,r,o,a){var i=nn(t,"x","avgPool","float32");null==r&&(r=[1,1]),f(fo(n,r),function(){return "Error in avgPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'"});var s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),f(4===s.rank,function(){return "Error in avgPool: x must be rank 4 but got rank "+s.rank+"."}),null!=a&&f(x(o),function(){return "Error in avgPool: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+o+"."});var l=ro(s.shape,e,n,r,o,a),c=St.runKernel(function(t){return t.avgPool(s,l)},{x:s},function(t){return {x:function(){return function(t,e,n,r,o,a){var i=nn(t,"dy","avgPoolBackprop"),s=nn(e,"input","avgPoolBackprop");f(s.rank===i.rank,function(){return "Rank of input ("+s.rank+") does not match rank of dy ("+i.rank+")"}),null==o&&(o=[1,1]),f(fo(r,o),function(){return "Error in avgPoolBackprop: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+o+"'"});var u=s,l=i,c=!1;3===s.rank&&(c=!0,u=s.as4D(1,s.shape[0],s.shape[1],s.shape[2]),l=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),f(4===l.rank,function(){return "Error in avgPoolBackprop: dy must be rank 4 but got rank "+l.rank+"."}),f(4===u.rank,function(){return "Error in avgPoolBackprop: input must be rank 4 but got rank "+u.rank+"."});var h=ro(u.shape,n,r,o,a),p=St.runKernel(function(t){return t.avgPoolBackprop(l,u,h)},{dy4D:l,input4D:u});return c?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}(t,s,e,n,r,o)}}});return c=c.cast(i.dtype),u?c.as3D(c.shape[1],c.shape[2],c.shape[3]):c}var Dl=vn({maxPool_:function(t,e,n,r,o){return Al(t,e,n,1,r,o)}}),_l=vn({avgPool_:function(t,e,n,r,o){return Tl(t,e,n,1,r,o)}}),Ol=vn({pool_:function(t,e,n,r,o,a){null==o&&(o=[1,1]),null==a&&(a=1),0===r&&(r="valid");var i=nn(t,"x","maxPool"),s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),f(fo(a,o),function(){return "Error in pool: Either strides or dilations must be 1. Got strides "+a+" and dilations '"+o+"'"});var l,c=ro(s.shape,e,a,o,r),h=[c.dilationHeight,c.dilationWidth];l="same"===r?function(t,e){var n=t.map(function(t,n){return t+(t-1)*(e[n]-1)}).map(function(t){return t-1}),r=n.map(function(t){return Math.floor(t/2)}),o=n.map(function(t,e){return t-r[e]});return n.map(function(t,e){return [r[e],o[e]]})}([c.filterHeight,c.filterWidth],h):[[0,0],[0,0]];var p=1===h[0]&&1===h[1],d=function(t,e,n){var r=n.map(function(t){return t[0]}),o=n.map(function(t){return t[1]}),a=t.concat(r,o),i=e.map(function(t,e){return (t-a[e]%t)%t}),s=o.map(function(t,e){return t+i[e]}),u=e.map(function(t,e){return [r[e],s[e]]}),l=e.map(function(t,e){return [0,i[e]]});return [u,l]}([c.inHeight,c.inWidth],h,l),v=d[0],m=d[1],g=p?r:"valid",y=p?s:br(s,h,v),x=("avg"===n?function(){return Tl(y,e,a,1,g)}:function(){return Al(y,e,a,1,g)})(),b=p?x:er(x,h,m);return u?b.as3D(b.shape[1],b.shape[2],b.shape[3]):b}}),Fl=vn({maxPool3d_:function(t,e,n,r,o,a,i){void 0===a&&(a="NDHWC");var s=nn(t,"x","maxPool3d"),u=s,l=!1;4===s.rank&&(l=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),null==i&&(i=[1,1,1]),f(5===u.rank,function(){return "Error in maxPool3d: x must be rank 5 but got rank "+u.rank+"."}),f("NDHWC"===a,function(){return "Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of "+a}),f(fo(n,i),function(){return "Error in maxPool3d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"}),null!=o&&f(x(r),function(){return "Error in maxPool3d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."});var c=oo(u.shape,e,n,i,r,o,a),h=St.runKernel(function(t,e){var n=t.maxPool3d(u,c);return e([u,n]),n},{x:u},function(t,a){var s=a[0],u=a[1];return {x:function(){return function(t,e,n,r,o,a,i,s){var u=nn(t,"dy","maxPool3dBackprop"),l=nn(e,"input","maxPool3dBackprop"),c=nn(n,"output","maxPool3dBackprop"),h=u,p=l,d=c,v=!1;4===l.rank&&(v=!0,h=u.as5D(1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]),p=l.as5D(1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]),d=c.as5D(1,c.shape[0],c.shape[1],c.shape[2],c.shape[3])),f(5===h.rank,function(){return "Error in maxPool3dBackprop: dy must be rank 5 but got rank "+h.rank+"."}),f(5===p.rank,function(){return "Error in maxPool3dBackprop: input must be rank 5 but got rank "+p.rank+"."}),f(5===d.rank,function(){return "Error in maxPool3dBackprop: output must be rank 5 but got rank "+d.rank+"."}),null==a&&(a=[1,1,1]),f(fo(o,a),function(){return "Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides "+o+" and dilations '"+a+"'"}),null!=s&&f(x(i),function(){return "Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode "+s+" but got pad "+i+"."});var m=oo(p.shape,r,o,a,i,s),g=St.runKernel(function(t){return t.maxPool3dBackprop(h,p,d,m)},{dy5D:h,input5D:p});return v?g.as4D(g.shape[1],g.shape[2],g.shape[3],g.shape[4]):g}(t,s,u,e,n,i,r,o)}}});return l?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}}),Ml=vn({avgPool3d_:function(t,e,n,r,o,a,i){void 0===a&&(a="NDHWC");var s=nn(t,"x","avgPool3d","float32"),u=s,l=!1;4===s.rank&&(l=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),null==i&&(i=[1,1,1]),f(5===u.rank,function(){return "Error in avgPool3d: x must be rank 5 but got rank "+u.rank+"."}),f("NDHWC"===a,function(){return "Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of "+a}),f(fo(n,i),function(){return "Error in avgPool3d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"}),null!=o&&f(x(r),function(){return "Error in avgPool3d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."});var c=oo(u.shape,e,n,i,r,o,a),h=St.runKernel(function(t){return t.avgPool3d(u,c)},{x:u},function(t){return {x:function(){return function(t,e,n,r,o,a,i){var s=nn(t,"dy","avgPool3dBackprop"),u=nn(e,"input","avgPool3dBackprop"),l=s,c=u,h=!1;4===u.rank&&(h=!0,l=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]),c=u.as5D(1,u.shape[0],u.shape[1],u.shape[2],u.shape[3])),f(5===l.rank,function(){return "Error in avgPool3dBackprop: dy must be rank 5 but got rank "+l.rank+"."}),f(5===c.rank,function(){return "Error in avgPool3dBackprop: input must be rank 5 but got rank "+c.rank+"."}),null==o&&(o=[1,1,1]),f(fo(r,o),function(){return "Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+o+"'"}),null!=i&&f(x(a),function(){return "Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+"."});var p=oo(c.shape,n,r,o,a,i),d=St.runKernel(function(t){return t.avgPool3dBackprop(l,c,p)},{dy5D:l,input5D:c});return h?d.as4D(d.shape[1],d.shape[2],d.shape[3],d.shape[4]):d}(t,u,e,n,i,r,o)}}});return h=h.cast(u.dtype),l?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}});var Bl=vn({slice_:function(t,e,n){var r,o,a=nn(t,"x","slice");if(0===a.rank)throw new Error("Slicing scalar is not possible");(r="number"==typeof e?[e].concat(new Array(a.rank-1).fill(0)):e.length=0?t:(f(-1===t,function(){return "Negative size values should be exactly -1 but got "+t+" for the slice() size at index "+e+"."}),a.shape[e]-r[e])}),function(t,e,n){f(t.rank===e.length,function(){return "Error in slice"+t.rank+"D: Length of begin "+e+" must match the rank of the array ("+t.rank+")."}),f(t.rank===n.length,function(){return "Error in slice"+t.rank+"D: Length of size "+n+" must match the rank of the array ("+t.rank+")."});for(var r=function(r){f(e[r]+n[r]<=t.shape[r],function(){return "Error in slice"+t.rank+"D: begin["+r+"] + size["+r+"] ("+(e[r]+n[r])+") would overflow input.shape["+r+"] ("+t.shape[r]+")"});},o=0;o0&&(e=e.sum(a)),e.reshape(r.shape)}}})}}),nc=vn({relu_:function(t){var e=nn(t,"x","relu");return "bool"===e.dtype?e.toInt():St.runKernel(function(t,n){var r=t.relu(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){return t.mulStrict(n.step().toFloat())}}})}}),rc=vn({selu_:function(t){var e=nn(t,"x","selu");return St.runKernel(function(t,n){var r=t.selu(e);return n([e]),r},{$x:e},function(t,e){var n=e[0];return {$x:function(){var e=n.greater(wn(0)),r=wn(ji),o=wn(Xi),a=t.mul(o),i=t.mul(r).mul(n.toFloat().exp());return Cu(e,a,i)}}})}});var oc=vn({transpose_:function(t,e){var n=nn(t,"x","transpose");return null==e&&(e=n.shape.map(function(t,e){return e}).reverse()),f(n.rank===e.length,function(){return "Error in transpose: rank of input "+n.rank+" must match length of perm "+e+"."}),e.forEach(function(t){f(t>=0&&to)throw new Error("'k' passed to topk() must be <= the last dimension ("+o+") but got "+e);var a=St.runKernel(function(t){return t.topk(r,e,n)},{$x:r});return {values:a[0],indices:a[1]}}});var pc=vn({scatterND_:function(t,e,n){var r=nn(t,"indices","scatterND","int32"),o=nn(e,"updates","scatterND");return Mr(o,r,n),St.runKernel(function(t){return t.scatterND(r,o,n)},{$indices:r,$updates:o})}});var fc=vn({fft_:function(t){f("complex64"===t.dtype,function(){return "The dtype for tf.spectral.fft() must be complex64 but got "+t.dtype+"."});var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return St.runKernel(function(t){return t.fft(r)},{input:t}).reshape(t.shape)}}),dc=vn({ifft_:function(t){f("complex64"===t.dtype,function(){return "The dtype for tf.spectral.ifft() must be complex64 but got "+t.dtype+"."});var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return St.runKernel(function(t){return t.ifft(r)},{input:t}).reshape(t.shape)}}),vc=vn({rfft_:function(t,e){f("float32"===t.dtype,function(){return "The dtype for rfft() must be real value but got "+t.dtype});var n,r=t.shape[t.shape.length-1],o=t.size/r;if(null!=e&&er){var s=t.shape.map(function(t){return t});s[t.shape.length-1]=e-r,n=t.concat(An(s),t.shape.length-1),r=e;}else n=t;var u=n.zerosLike(),l=mn(n,u).as2D(o,r),c=fc(l),h=Math.floor(r/2)+1,p=gn(c),d=yn(c),v=p.split([h,r-h],p.shape.length-1),m=d.split([h,r-h],d.shape.length-1),g=n.shape.slice();return g[n.shape.length-1]=h,mn(v[0],m[0]).reshape(g)}}),mc=vn({irfft_:function(t){var e=t.shape[t.shape.length-1],n=t.size/e;if(e<=2){var r=t.as2D(n,e),o=dc(r);return gn(o)}var a=[n,2*(e-1)],i=gn(t).as2D(n,e),s=yn(t).as2D(n,e),u=i.slice([0,1],[n,e-2]).reverse(1),l=s.slice([0,1],[n,e-2]).reverse(1).mul(wn(-1)),c=i.concat(u,1),h=s.concat(l,1);return r=mn(c,h).as2D(a[0],a[1]),o=dc(r),gn(o)}}),gc=Object.freeze({fft:fc,ifft:dc,rfft:vc,irfft:mc});var yc=vn({sparseToDense_:function(t,e,n,r){void 0===r&&(r=0);var o=nn(t,"sparseIndices","sparseToDense","int32"),a=nn(e,"sparseValues","sparseToDense"),i=nn(r,"defaultValue","sparseToDense",a.dtype);return function(t,e,n,r){if("int32"!==t.dtype)throw new Error("tf.sparseToDense() expects the indices to be int32 type, but the dtype was "+t.dtype+".");if(t.rank>2)throw new Error("sparseIndices should be a scalar, vector, or matrix, but got shape "+t.shape+".");var o=t.rank>0?t.shape[0]:1,a=t.rank>1?t.shape[1]:1;if(n.length!==a)throw new Error("outputShape has incorrect number of elements:, "+n.length+", should be: "+a+".");var i=e.size;if(0!==e.rank&&(1!==e.rank||i!==o))throw new Error("sparseValues has incorrect shape "+e.shape+", should be [] or ["+o+"]");if(e.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(o,a,n,i),St.runKernel(function(t){return t.sparseToDense(o,a,n,i)},{$sparseIndices:o,$sparseValues:a,$defaultValue:i})}});var xc=vn({gatherND_:function(t,e){var n=nn(e,"indices","gatherND","int32"),r=nn(t,"x","gatherND");return St.runKernel(function(t){return t.gatherND(r,n)},{$x:r,$indices:n})}});var bc=vn({diag_:function(t){var e=nn(t,"x","diag").flatten(),n=t.shape.concat(t.shape);return St.runKernel(function(t){return t.diag(e)},{$x:e}).reshape(n)}});var wc=vn({dropout_:function(t,e,n,r){var o=nn(t,"x","dropout");if(f("float32"===o.dtype,function(){return "x has to be a floating point tensor since it's going to be scaled, but got a "+o.dtype+" tensor instead."}),f(e>=0&&e<1,function(){return "rate must be a float in the range [0, 1), but got "+e+"."}),0===e)return t instanceof ct?o.clone():o;var a=function(t,e){if(null==e)return t.shape.slice();if(y(t.shape,e))return e;if(t.shape.length===e.length){for(var n=[],r=0;r1,function(){return "inTopK() expects the predictions to be of rank 2 or higher, but got "+n.rank}),f(n.rank-1===a.rank,function(){return "predictions rank should be 1 larger than targets rank, but got predictions rank "+n.rank+" and targets rank "+a.rank}),d(n.shape.slice(0,n.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension."),i=n.shape[n.shape.length-1],f(o>0&&o<=i,function(){return "'k' passed to inTopK() must be > 0 && <= the predictions last dimension ("+i+"), but got "+o}),[4,n.data()];case 1:return s=r.sent(),[4,a.data()];case 2:for(u=r.sent(),l=[s.length/i,i],h=l[1],p=N("bool",c=l[0]),v=0;v1?s.div(wn(i)):s}if(n===Sc.SUM_BY_NONZERO_WEIGHTS){if(null==o)return a.sum().div(wn(r.size));var u=o.mul(Sn(r.shape)).notEqual(wn(0)).sum().toFloat();return a.sum().div(u)}throw Error("Unknown reduction: "+n)}}),_c=vn({cosineDistance_:function(t,e,n,r,o){void 0===o&&(o=Sc.SUM_BY_NONZERO_WEIGHTS);var a=nn(t,"labels","cosineDistance"),i=nn(e,"predictions","cosineDistance"),s=null;null!=r&&(s=nn(r,"weights","cosineDistance")),d(a.shape,i.shape,"Error in cosineDistance: ");var u=wn(1).sub(a.mul(i).sum(n,!0));return Dc(u,s,o)}}),Oc=vn({hingeLoss_:function(t,e,n,r){void 0===r&&(r=Sc.SUM_BY_NONZERO_WEIGHTS);var o=nn(t,"labels","hingeLoss"),a=nn(e,"predictions","hingeLoss"),i=null;null!=n&&(i=nn(n,"weights","hingeLoss")),d(o.shape,a.shape,"Error in hingeLoss: ");var s=wn(1);o=wn(2).mul(o).sub(s);var u=s.sub(o.mul(a)).relu();return Dc(u,i,r)}}),Fc=vn({huberLoss_:function(t,e,n,r,o){void 0===r&&(r=1),void 0===o&&(o=Sc.SUM_BY_NONZERO_WEIGHTS);var a=nn(t,"labels","huberLoss"),i=nn(e,"predictions","huberLoss"),s=null;null!=n&&(s=nn(n,"weights","huberLoss")),d(a.shape,i.shape,"Error in huberLoss: ");var u=wn(r),l=i.sub(a).abs(),c=Ou(l,u),h=l.sub(c),p=wn(.5).mul(c.square()).add(u.mul(h));return Dc(p,s,o)}}),Mc=vn({logLoss_:function(t,e,n,r,o){void 0===r&&(r=1e-7),void 0===o&&(o=Sc.SUM_BY_NONZERO_WEIGHTS);var a=nn(t,"labels","logLoss"),i=nn(e,"predictions","logLoss"),s=null;null!=n&&(s=nn(n,"weights","logLoss")),d(a.shape,i.shape,"Error in logLoss: ");var u=wn(1),l=wn(r),c=a.mul(i.add(l).log()).neg().sub(u.sub(a).mul(u.sub(i).add(l).log()));return Dc(c,s,o)}}),Bc=vn({meanSquaredError_:function(t,e,n,r){void 0===r&&(r=Sc.SUM_BY_NONZERO_WEIGHTS);var o=nn(t,"labels","meanSquaredError"),a=nn(e,"predictions","meanSquaredError"),i=null;null!=n&&(i=nn(n,"weights","meanSquaredError")),d(o.shape,a.shape,"Error in meanSquaredError: ");var s=o.squaredDifference(a);return Dc(s,i,r)}}),Pc=vn({sigmoidCrossEntropy_:function(t,e,n,r,o){void 0===r&&(r=0),void 0===o&&(o=Sc.SUM_BY_NONZERO_WEIGHTS);var a=nn(t,"multiClassLabels","sigmoidCrossEntropy"),i=nn(e,"logits","sigmoidCrossEntropy"),s=null;if(null!=n&&(s=nn(n,"weights","sigmoidCrossEntropy")),d(a.shape,i.shape,"Error in sigmoidCrossEntropy: "),r>0){var u=wn(r),l=wn(1),c=wn(.5);a=a.mul(l.sub(u)).add(c.mul(u));}var h=function(t,e){var n=nn(t,"labels","sigmoidCrossEntropyWithLogits"),r=nn(e,"logits","sigmoidCrossEntropyWithLogits");d(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var o=r.relu(),a=r.mul(n),i=r.abs().neg().exp().log1p();return o.sub(a).add(i)}(a,i);return Dc(h,s,o)}}),Lc=vn({softmaxCrossEntropy_:function(t,e,n,r,o){void 0===r&&(r=0),void 0===o&&(o=Sc.SUM_BY_NONZERO_WEIGHTS);var a=nn(t,"onehotLabels","softmaxCrossEntropy"),i=nn(e,"logits","softmaxCrossEntropy"),s=null;if(null!=n&&(s=nn(n,"weights","softmaxCrossEntropy")),d(a.shape,i.shape,"Error in softmaxCrossEntropy: "),r>0){var u=wn(r),l=wn(1),c=wn(a.shape[1]);a=a.mul(l.sub(u)).add(u.div(c));}var h=function(t,e,n){if(void 0===n&&(n=-1),-1===n&&(n=e.rank-1),n!==e.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank "+e.rank+" and dim was "+n);return jr(function(t,e,r){var o=e.logSumExp([n],!0),a=e.toFloat().sub(o);return r([t,a]),{value:a.mul(t).neg().sum([n]),gradFunc:function(t,e){var r=e[0],o=e[1],a=un(t.shape,[n]);return [t.reshape(a).mul(r.toFloat().sub(o.exp())),t.reshape(a).mul(o.exp().sub(r.toFloat()))]}}})(t,e)}(a,i);return Dc(h,s,o)}}),Wc=Object.freeze({get Reduction(){return Sc},absoluteDifference:Tc,computeWeightedLoss:Dc,cosineDistance:_c,hingeLoss:Oc,huberLoss:Fc,logLoss:Mc,meanSquaredError:Bc,sigmoidCrossEntropy:Pc,softmaxCrossEntropy:Lc});function Uc(t,e){return void 0===e&&(e=!1),St.tidy(function(){if(2!==t.shape.length)throw new Error("qr2d() requires a 2D Tensor, but got a "+t.shape.length+"D Tensor.");for(var n=t.shape[0],r=t.shape[1],o=sr(n),a=t.clone(),i=En([[1]],[1,1]),s=i.clone(),u=n>=r?r:n,l=function(t){var e,u=a,l=s,c=o;e=St.tidy(function(){var e=a.slice([t,t],[n-t,1]),u=e.norm(),l=a.slice([t,t],[1,1]),c=En([[-1]]).where(l.greater(0),En([[1]])),h=l.sub(c.mul(u)),p=e.div(h);s=1===p.shape[0]?i.clone():i.concat(p.slice([1,0],[p.shape[0]-1,p.shape[1]]),0);var f=c.matMul(h).div(u).neg(),d=a.slice([t,0],[n-t,r]),v=f.mul(s);if(0===t)a=d.sub(v.matMul(s.transpose().matMul(d)));else{var m=d.sub(v.matMul(s.transpose().matMul(d)));a=a.slice([0,0],[t,r]).concat(m,0);}var g=o.slice([0,t],[n,o.shape[1]-t]);if(0===t)o=g.sub(g.matMul(s).matMul(v.transpose()));else{var y=g.sub(g.matMul(s).matMul(v.transpose()));o=o.slice([0,0],[n,t]).concat(y,1);}return [s,a,o]}),s=e[0],a=e[1],o=e[2],Ve([u,l,c]);},c=0;cr&&(o=o.slice([0,0],[n,r]),a=a.slice([0,0],[r,r])),[o,a]})}var Vc=vn({gramSchmidt_:function(t){var e;if(Array.isArray(t)){e=!1,f(null!=t&&t.length>0,function(){return "Gram-Schmidt process: input must not be null, undefined, or empty"});for(var n=t[0].shape[0],r=function(e){f(t[e].shape[0]===n,function(){return "Gram-Schmidt: Non-unique lengths found in the input vectors: ("+t[e].shape[0]+" vs. "+n+")"});},o=1;o0)for(var n=0;n= 2, but got rank "+t.rank);if(2===t.rank)return Uc(t,e);var n=t.shape.slice(0,t.shape.length-2).reduce(function(t,e){return t*e}),r=Ir(t.reshape([n,t.shape[t.shape.length-2],t.shape[t.shape.length-1]]),0),o=[],a=[];return r.forEach(function(t){var n=Uc(t,e),r=n[0],i=n[1];o.push(r),a.push(i);}),[Cr(o,0).reshape(t.shape),Cr(a,0).reshape(t.shape)]}}),Gc=Object.freeze({gramSchmidt:Vc,qr:zc});function Hc(t,e,n,r,o){null==r&&(r=.5),null==o&&(o=Number.NEGATIVE_INFINITY);var a=t.shape[0];return n=Math.min(n,a),f(0<=r&&r<=1,function(){return "iouThreshold must be in [0, 1], but was '"+r+"'"}),f(2===t.rank,function(){return "boxes must be a 2D tensor, but was of rank '"+t.rank+"'"}),f(4===t.shape[1],function(){return "boxes must have 4 columns, but 2nd dimension was "+t.shape[1]}),f(1===e.rank,function(){return "scores must be a 1D tensor"}),f(e.shape[0]===a,function(){return "scores has incompatible shape with boxes. Expected "+a+", but was "+e.shape[0]}),{maxOutputSize:n,iouThreshold:r,scoreThreshold:o}}var qc=vn({resizeBilinear_:function(t,e,n){void 0===n&&(n=!1);var r=nn(t,"images","resizeBilinear");f(3===r.rank||4===r.rank,function(){return "Error in resizeBilinear: x must be rank 3 or 4, but got rank "+r.rank+"."}),f(2===e.length,function(){return "Error in resizeBilinear: new shape must 2D, but got shape "+e+"."});var o=r,a=!1;3===r.rank&&(a=!0,o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var i=e[0],s=e[1],u=St.runKernel(function(t,e){return e([o]),t.resizeBilinear(o,i,s,n)},{batchImages:o},function(t,e){return {batchImages:function(){return St.runKernel(function(r){return r.resizeBilinearBackprop(t,e[0],n)},{})}}});return a?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),$c=vn({resizeNearestNeighbor_:function(t,e,n){void 0===n&&(n=!1);var r=nn(t,"images","resizeNearestNeighbor");f(3===r.rank||4===r.rank,function(){return "Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank "+r.rank+"."}),f(2===e.length,function(){return "Error in resizeNearestNeighbor: new shape must 2D, but got shape "+e+"."}),f("float32"===r.dtype||"int32"===r.dtype,function(){return "`images` must have `int32` or `float32` as dtype"});var o=r,a=!1;3===r.rank&&(a=!0,o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var i=e[0],s=e[1],u=St.runKernel(function(t,e){return e([o]),t.resizeNearestNeighbor(o,i,s,n)},{batchImages:o},function(t,e){return {batchImages:function(){return St.runKernel(function(r){return r.resizeNearestNeighborBackprop(t,e[0],n)},{})}}});return a?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Kc=vn({nonMaxSuppression_:function(t,e,n,r,o){void 0===r&&(r=.5),void 0===o&&(o=Number.NEGATIVE_INFINITY);var a=nn(t,"boxes","nonMaxSuppression"),i=nn(e,"scores","nonMaxSuppression"),s=Hc(a,i,n,r,o);return n=s.maxOutputSize,r=s.iouThreshold,o=s.scoreThreshold,St.runKernel(function(t){return t.nonMaxSuppression(a,i,n,r,o)},{$boxes:a})}}),jc=function(t,e,o,a,i){return void 0===a&&(a=.5),void 0===i&&(i=Number.NEGATIVE_INFINITY),n(this,void 0,void 0,function(){var n,s,u,l,c,h,p;return r(this,function(r){switch(r.label){case 0:return n=nn(t,"boxes","nonMaxSuppressionAsync"),s=nn(e,"scores","nonMaxSuppressionAsync"),u=Hc(n,s,o,a,i),o=u.maxOutputSize,a=u.iouThreshold,i=u.scoreThreshold,[4,Promise.all([n.data(),s.data()])];case 1:return l=r.sent(),c=l[0],h=l[1],p=Ro(c,h,o,a,i),n!==t&&n.dispose(),s!==e&&s.dispose(),[2,p]}})})},Xc=vn({cropAndResize_:function(t,e,n,r,o,a){var i=nn(t,"image","cropAndResize","float32"),s=nn(e,"boxes","cropAndResize","float32"),u=nn(n,"boxInd","cropAndResize","int32");o=o||"bilinear",a=a||0;var l=s.shape[0];return f(4===i.rank,function(){return "Error in cropAndResize: image must be rank 4,but got rank "+i.rank+"."}),f(2===s.rank&&4===s.shape[1],function(){return "Error in cropAndResize: boxes must be have size ["+l+",4] but had shape "+s.shape+"."}),f(1===u.rank&&u.shape[0]===l,function(){return "Error in cropAndResize: boxInd must be have size ["+l+"] but had shape "+s.shape+"."}),f(2===r.length,function(){return "Error in cropAndResize: cropSize must be of length 2, but got length "+r.length+"."}),f(r[0]>=1&&r[1]>=1,function(){return "cropSize must be atleast [1,1], but was "+r}),f("bilinear"===o||"nearest"===o,function(){return "method must be bilinear or nearest, but was "+o}),St.runKernel(function(t,e){return t.cropAndResize(i,s,u,r,o,a)},{$image:i,$boxes:s})}}),Yc=Object.freeze({resizeBilinear:qc,resizeNearestNeighbor:$c,nonMaxSuppression:Kc,nonMaxSuppressionAsync:jc,cropAndResize:Xc});var Qc=vn({matMul_:function(t){var e,n=t.a,r=t.b,o=t.transposeA,a=void 0!==o&&o,i=t.transposeB,s=void 0!==i&&i,u=t.bias,l=t.activation,c=void 0===l?"linear":l,h=t.preluActivationWeights,p=nn(n,"a","fused matMul"),d=nn(r,"b","fused matMul");e=wt(p,d),p=e[0],d=e[1];var v=a?p.shape[p.rank-2]:p.shape[p.rank-1],m=s?d.shape[d.rank-1]:d.shape[d.rank-2],x=a?p.shape[p.rank-1]:p.shape[p.rank-2],b=s?d.shape[d.rank-2]:d.shape[d.rank-1],w=p.shape.slice(0,-2),C=d.shape.slice(0,-2),E=g(w),R=g(C);f(p.rank>=2&&d.rank>=2&&p.rank===d.rank,function(){return "Error in fused matMul: inputs must have the same rank of at least 2, got ranks "+p.rank+" and "+d.rank+"."}),f(y(w,C),function(){return "Error in fused matMul: outer dimensions ("+w+") and ("+C+") of Tensors with shapes "+p.shape+" and "+d.shape+" must match."}),f(v===m,function(){return "Error in fused matMul: inner shapes ("+v+") and ("+m+") of Tensors with shapes "+p.shape+" and "+d.shape+" and transposeA="+a+" and transposeB="+s+" must match."});var I,k,N=p.shape.slice(0,-2).concat([x,b]),S=a?p.as3D(E,v,x):p.as3D(E,x,v),A=s?d.as3D(R,b,m):d.as3D(R,m,b);null!=u&&no(N,(I=wt(I=nn(u,"bias","fused matMul"),p)[0]).shape),null!=h&&(k=nn(h,"prelu weights","fused matMul"));var T={$a:S,$b:A};return null!=u&&(T.$bias=I),null!=h&&(T.$preluActivationWeights=k),St.runKernel(function(t,e){var n=t.fusedBatchMatMul({a:S,b:A,transposeA:a,transposeB:s,bias:I,activation:c,preluActivationWeights:k});return e([S,A,n]),n},T,function(t,e){var n,r=e[0],o=e[1],i=e[2];if(null==c||"linear"===c)n=t;else{if("relu"!==c)throw new Error("Gradient for activation "+c+" has not been implemented yet.");n=t.mul(i.step());}var l={};return null!=u&&(l={$bias:function(){var t=n,e=eo(I.shape,n.shape);return e.length>0&&(t=t.sum(e)),t.reshape(I.shape)}}),a||s?!a&&s?Object.assign({$a:function(){return n.matMul(o,!1,!1)},$b:function(){return n.matMul(r,!0,!1)}},l):a&&!s?Object.assign({$a:function(){return o.matMul(n,!1,!0)},$b:function(){return r.matMul(n,!1,!1)}},l):Object.assign({$a:function(){return o.matMul(n,!0,!0)},$b:function(){return n.matMul(r,!0,!0)}},l):Object.assign({$a:function(){return n.matMul(o,!1,!0)},$b:function(){return r.matMul(n,!0,!1)}},l)}).reshape(N)}}),Jc=vn({conv2d_:function(t){var e=t.x,n=t.filter,r=t.strides,o=t.pad,a=t.dataFormat,i=void 0===a?"NHWC":a,s=t.dilations,u=void 0===s?[1,1]:s,l=t.dimRoundingMode,c=t.bias,h=t.activation,p=void 0===h?"linear":h,d=t.preluActivationWeights,v=nn(e,"x","conv2d"),m=nn(n,"filter","conv2d"),g=v,y=!1;3===v.rank&&(y=!0,g=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),f(4===g.rank,function(){return "Error in fused conv2d: input must be rank 4, but got rank "+g.rank+"."}),f(4===m.rank,function(){return "Error in fused conv2d: filter must be rank 4, but got rank "+m.rank+"."}),null!=l&&f(x(o),function(){return "Error in fused conv2d: pad must be an integer when using, dimRoundingMode "+l+" but got pad "+o+"."}),f(g.shape[3]===m.shape[2],function(){return "Error in conv2d: depth of input ("+g.shape[3]+") must match input depth for filter "+m.shape[2]+"."}),f(fo(r,u),function(){return "Error in conv2D: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+u+"'"}),f("NHWC"===i,function(){return "Error in conv2d: got dataFormat of "+i+" but only NHWC is currently supported."});var b,w,C=ao(g.shape,m.shape,r,u,o,l);null!=c&&(b=wt(b=nn(c,"bias","fused conv2d"),v)[0],no(C.outShape,b.shape)),null!=d&&(w=nn(d,"prelu weights","fused conv2d"));var E={x:g,$filter:m};null!=c&&(E.$bias=b),null!=d&&(E.$preluActivationWeights=w);var R=St.runKernel(function(t,e){var n=t.fusedConv2d(g,m,C,b,p,w);return e([m,g,n]),n},E,function(t,e){var n,a=e,i=a[0],s=a[1],l=a[2];if(null==p||"linear"===p)n=t;else{if("relu"!==p)throw new Error("Gradient for activation "+p+" has not been implemented yet.");n=t.mul(l.step());}f(po(u),function(){return "Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+u+"'"});var h={};return null!=c&&(h={$bias:function(){var t=n,e=eo(b.shape,n.shape);return e.length>0&&(t=t.sum(e)),t.reshape(b.shape)}}),Object.assign({x:function(){return ml(s.shape,n,i,r,o)},$filter:function(){return vl(s,n,i.shape,r,o)}},h)});return y?R.as3D(R.shape[1],R.shape[2],R.shape[3]):R}}),Zc=Object.freeze({matMul:Qc,conv2d:Jc}),th=Object.freeze({image:Yc,linalg:Gc,losses:Wc,spectral:gc,fused:Zc,signal:Nc,op:vn,batchNormalization2d:cu,batchNormalization3d:hu,batchNormalization4d:pu,batchNormalization:fu,batchNorm:du,batchNorm2d:vu,batchNorm3d:mu,batchNorm4d:gu,booleanMaskAsync:sl,complex:mn,real:gn,imag:yn,concat:Mn,concat1d:Bn,concat2d:Pn,concat3d:Ln,concat4d:Wn,split:Un,conv1d:pl,conv2d:fl,conv3d:dl,conv2dDerFilter:vl,conv2dDerInput:ml,depthwiseConv2d:gl,separableConv2d:yl,conv2dTranspose:xl,conv3dTranspose:bl,matMul:wl,dot:Cl,outerProduct:El,reverse:Rl,reverse1d:Il,reverse2d:kl,reverse3d:Nl,reverse4d:Sl,maxPool:Dl,avgPool:_l,pool:Ol,maxPool3d:Fl,avgPool3d:Ml,slice:Bl,slice1d:Pl,slice2d:Ll,slice3d:Wl,slice4d:Ul,abs:Es,acos:Rs,acosh:Is,asin:ks,asinh:Ns,atan:Ss,atanh:As,ceil:Ts,clipByValue:Ds,cos:_s,cosh:Os,erf:Fs,exp:Ms,expm1:Bs,floor:Ps,log:Ls,log1p:Ws,logSigmoid:Us,neg:Vs,reciprocal:zs,round:Gs,rsqrt:Hs,sigmoid:qs,sign:$s,isNaN:Ks,isInf:js,isFinite:Xs,sin:Ys,sinh:Qs,softplus:Js,sqrt:Zs,square:tu,step:eu,tan:nu,tanh:ru,all:zl,any:Gl,argMax:Hl,argMin:ql,logSumExp:$l,max:Kl,mean:jl,min:Xl,moments:Yl,sum:Ql,prod:Jl,equal:qu,equalStrict:$u,greater:Ku,greaterEqual:ju,greaterEqualStrict:Xu,greaterStrict:Yu,less:Qu,lessEqual:Ju,lessEqualStrict:Zu,lessStrict:tl,notEqual:el,notEqualStrict:nl,add:Ru,addN:Iu,addStrict:ku,atan2:Nu,div:Su,divStrict:Au,floorDiv:Tu,maximum:Du,maximumStrict:_u,minimum:Ou,minimumStrict:Fu,mod:Mu,modStrict:Bu,mul:Pu,mulStrict:Lu,pow:Wu,powStrict:Uu,squaredDifference:Vu,squaredDifferenceStrict:zu,sub:Gu,subStrict:Hu,elu:Zl,leakyRelu:tc,prelu:ec,relu:nc,selu:rc,logicalAnd:yu,logicalNot:xu,logicalOr:bu,logicalXor:wu,where:Cu,whereAsync:Eu,buffer:Zn,print:tr,batchToSpaceND:er,cast:nr,clone:rr,cumsum:or,depthToSpace:ar,expandDims:ir,eye:sr,multinomial:ur,oneHot:lr,pad:cr,pad1d:hr,pad2d:pr,pad3d:fr,pad4d:dr,rand:vr,randomNormal:mr,randomGamma:gr,randomUniform:yr,reshape:xr,spaceToBatchND:br,squeeze:wr,stack:Cr,tile:Er,truncatedNormal:Rr,unstack:Ir,setdiff1dAsync:kr,fill:Tn,linspace:Dn,ones:Sn,range:_n,scalar:wn,tensor:xn,tensor1d:Cn,tensor2d:En,tensor3d:Rn,tensor4d:In,tensor5d:kn,tensor6d:Nn,zeros:An,onesLike:On,zerosLike:Fn,transpose:oc,softmax:Yr,logSoftmax:Qr,localResponseNormalization:ac,norm:ic,gather:al,unsortedSegmentSum:il,basicLSTMCell:sc,multiRNNCell:uc,movingAverage:lc,stridedSlice:cc,topk:hc,scatterND:pc,fft:fc,ifft:dc,rfft:vc,irfft:mc,sparseToDense:yc,gatherND:xc,diag:bc,dropout:wc,hannWindow:Ec,hammingWindow:Rc,frame:Ic,stft:kc,inTopKAsync:Ac});function eh(t,e,n,r){if("linear"===n)return t.linear(e);if("relu"===n)return t.relu(e);if("elu"===n)return t.elu(e);if("prelu"===n)return t.prelu(e,r);throw new Error("Activation "+n+" has not been implemented for the CPU backend.")}var nh=function(){function t(){if(this.blockSize=48,this.firstUse=!0,i.get("IS_BROWSER")){var t="undefined"!=typeof OffscreenCanvas?new OffscreenCanvas(300,150):"undefined"!=typeof document?document.createElement("canvas"):null;null!==t&&(this.fromPixels2DContext=t.getContext("2d"));}this.data=new Jr(this,St);}return t.prototype.register=function(t,e,n){if(this.firstUse&&(this.firstUse=!1,i.get("IS_NODE")&&Ze("\n============================\nHi there 👋. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.\n============================\n")),this.data.has(t))throw new Error("Data buffer is already registered");this.data.set(t,{dtype:n});},t.prototype.write=function(t,e){if(null==e)throw new Error("MathBackendCPU.write(): values can not be null");this.data.get(t).values=e;},t.prototype.fromPixels=function(t,e){if(null==t)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");var n,r,o=t.data instanceof Uint8Array,a="undefined"!=typeof ImageData&&t instanceof ImageData,s="undefined"!=typeof HTMLVideoElement&&t instanceof HTMLVideoElement,u="undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement,l=s?[t.videoWidth,t.videoHeight]:[t.width,t.height],c=l[0],h=l[1];if(i.get("IS_NODE")&&null==t.getContext)throw new Error("When running in node, pixels must be an HTMLCanvasElement like the one returned by the `canvas` npm package");if(null!=t.getContext)n=t.getContext("2d").getImageData(0,0,c,h).data;else if(a||o)n=t.data;else{if(!u&&!s)throw new Error("pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData or {data: Uint32Array, width: number, height: number}, but was "+t.constructor.name);if(null==this.fromPixels2DContext)throw new Error("Can't read pixels from HTMLImageElement outside the browser.");this.fromPixels2DContext.canvas.width=c,this.fromPixels2DContext.canvas.height=h,this.fromPixels2DContext.drawImage(t,0,0,c,h),n=this.fromPixels2DContext.getImageData(0,0,c,h).data;}if(4===e)r=new Int32Array(n);else{var p=c*h;r=new Int32Array(p*e);for(var f=0;fp&&(p=v,f=d);}u[c]=f;}return i},t.prototype.cumsum=function(t,e,n,r){if(this.assertNotComplex(t,"cumsum"),e!==t.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(t.rank-1)+" but got axis="+e);for(var o=xt(t.dtype,"int32"),a=An(t.shape,o),i=this.readSync(a.dataId),s=this.readSync(t.dataId),u=t.shape[t.rank-1],l=r?function(t,e){return t+u-e-1}:function(t,e){return t+e},c=0;ce?1:0})},t.prototype.greaterEqual=function(t,e){return this.assertNotComplex([t,e],"greaterEqual"),this.broadcastedBinaryOp(t,e,"bool",function(t,e){return t>=e?1:0})},t.prototype.logicalNot=function(t){this.assertNotComplex(t,"logicalNot");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r1||1===e.rank?1:e.shape[1],c=0;c=0&&e>=0?n:(n+e)%e})},t.prototype.max=function(t,e){this.assertNotComplex(t,"max"),ln("max",e,t.rank);for(var n=sn(t.shape,e),r=n[0],o=n[1],a=An(r,t.dtype),i=g(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),l=0;lh&&(h=f);}s[l]=h;}return a},t.prototype.maximum=function(t,e){return this.assertNotComplex([t,e],"maximum"),this.broadcastedBinaryOp(t,e,t.dtype,function(t,e){return Math.max(t,e)})},t.prototype.all=function(t,e){this.assertNotComplex(t,"all"),ln("all",e,t.rank);for(var n=sn(t.shape,e),r=n[0],o=n[1],a=An(r,t.dtype),i=g(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),l=0;l0?n[r]=1:n[r]=0;return ct.make(t.shape,{values:n})},t.prototype.isNaN=function(t){this.assertNotComplex(t,"x");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r.5?n[r]=Math.ceil(e[r]):n[r]=o%2==0?o:o+1;}return ct.make(t.shape,{values:n})},t.prototype.exp=function(t){this.assertNotComplex(t,"exp");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r=0?o:Math.exp(o)-1;}return ct.make(t.shape,{values:e})},t.prototype.eluDer=function(t,e){this.assertNotComplex([t,e],"eluDer");for(var n=new Float32Array(e.size),r=this.readSync(e.dataId),o=this.readSync(t.dataId),a=0;a=1?o[a]:o[a]*(i+1);}return ct.make(e.shape,{values:n})},t.prototype.selu=function(t){this.assertNotComplex(t,"selu");for(var e=ji,n=Xi,r=new Float32Array(t.size),o=this.readSync(t.dataId),a=0;a=0?n*i:e*(Math.exp(i)-1);}return ct.make(t.shape,{values:r})},t.prototype.clip=function(t,e,n){this.assertNotComplex(t,"clip");for(var r=new Float32Array(t.size),o=this.readSync(t.dataId),a=0;an?n:i-e,i=r[o]0?1:e;}return ct.make(t.shape,{values:n})},t.prototype.fusedConv2d=function(t,e,n,r,o,a){var i=this.conv2d(t,e,n);return r&&(i=this.add(i,r)),o&&(i=eh(this,i,o,a)),i},t.prototype.conv2d=function(t,e,n){this.assertNotComplex([t,e],"conv2d");for(var r=n.filterHeight,o=n.filterWidth,a=n.dilationHeight,i=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,l="channelsLast"===n.dataFormat,c=Zn(n.outShape,t.dtype),h=t.strides[0],p=l?t.strides[1]:t.strides[2],f=l?t.strides[2]:1,d=l?1:t.strides[1],v=c.strides[0],m=l?c.strides[1]:c.strides[2],g=l?c.strides[2]:1,y=l?1:c.strides[1],x=this.readSync(t.dataId),b=this.readSync(e.dataId),w=c.values,C=0;C=n.inHeight))for(var T=S*e.strides[0],D=E+A*p,_=0;_=n.inWidth))for(var P=D+B*f,L=T+M*e.strides[1],W=0;W=n.inDepth))for(var R=C*e.strides[0],I=g+E*t.strides[1],k=0;k=n.inHeight))for(var D=R+A*e.strides[1],_=I+T*t.strides[2],O=0;O=n.inWidth))for(var L=D+B*e.strides[2],W=_+P*n.inChannels,U=L,V=0;V=n.inHeight))for(var C=b*e.strides[0],E=v+w*t.strides[1],R=0;R=n.inWidth))for(var A=C+N*e.strides[1],T=E+S*n.inChannels,D=I,_=A,O=0;OD?D=P:"avg"===n&&(_+=P,O++);}if(isNaN(D))break}d[k+N*g+w]="avg"===n?_/O:D;}return f.toTensor()},t.prototype.maxPool=function(t,e){return this.pool(t,e,"max")},t.prototype.maxPoolPositions=function(t,e){for(var n=Zn(e.outShape,"int32"),r=e.strideHeight,o=e.strideWidth,a=e.dilationHeight,i=e.dilationWidth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,l=e.padInfo.top,c=e.padInfo.left,h=this.bufferSync(t),p=0;pC&&(C=S,E=I*u+N);}n.set(E,p,d,y,f);}}return n.toTensor()},t.prototype.maxPoolBackprop=function(t,e,n,r){this.assertNotComplex([e,n],"maxPoolBackprop");for(var o=this.maxPoolPositions(e,r),a=r.strideHeight,i=r.strideWidth,s=r.dilationHeight,u=r.dilationWidth,l=r.effectiveFilterHeight,c=r.effectiveFilterWidth,h=c-1-r.padInfo.left,p=l-1-r.padInfo.top,f=Zn(e.shape,"float32"),d=this.bufferSync(o),v=this.bufferSync(t),m=0;m=r.outHeight||Math.floor(R)!==R))for(var I=0;I=r.outWidth||Math.floor(k)!==k)){var N=l*c-1-d.get(m,R,k,g)===E*c+I?1:0;if(0!==N)C+=v.get(m,R,k,g)*N;}}}f.set(C,m,y,x,g);}return f.toTensor()},t.prototype.avgPoolBackprop=function(t,e,n){this.assertNotComplex([t,e],"avgPoolBackprop");for(var r=n.strideHeight,o=n.strideWidth,a=n.filterHeight,i=n.filterWidth,s=n.dilationHeight,u=n.dilationWidth,l=n.effectiveFilterHeight,c=n.effectiveFilterWidth,h=c-1-n.padInfo.left,p=l-1-n.padInfo.top,f=Zn(e.shape,"float32"),d=1/(a*i),v=this.bufferSync(t),m=0;m=n.outHeight||Math.floor(R)!==R))for(var I=0;I=n.outWidth||Math.floor(k)!==k))C+=v.get(m,R,k,g);}}f.set(C*d,m,y,x,g);}return f.toTensor()},t.prototype.pool3d=function(t,e,n){this.assertNotComplex(t,"pool3d");for(var r=e.strideDepth,o=e.strideHeight,a=e.strideWidth,i=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,l=e.effectiveFilterDepth,c=e.effectiveFilterHeight,h=e.effectiveFilterWidth,p=e.padInfo.front,f=e.padInfo.top,d=e.padInfo.left,v="max"===n?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=this.readSync(t.dataId),g=Zn(e.outShape,t.dtype),y=g.values,x=e.outShape[1]*e.outShape[2]*e.outShape[3]*e.outShape[4],b=e.outShape[2]*e.outShape[3]*e.outShape[4],w=e.outShape[3]*e.outShape[4],C=e.outShape[4],E=0;Ez?z=Y:"avg"===n&&(G+=Y,H++),isNaN(z))break}if(isNaN(z))break}if(isNaN(z))break}y[V+k]="avg"===n?G/H:z;}}}return g.toTensor()},t.prototype.avgPool3d=function(t,e){return this.assertNotComplex(t,"avgPool3d"),this.pool3d(t,e,"avg").toFloat()},t.prototype.avgPool3dBackprop=function(t,e,n){this.assertNotComplex([t,e],"avgPool3dBackprop");for(var r=n.strideDepth,o=n.strideHeight,a=n.strideWidth,i=n.filterDepth,s=n.filterHeight,u=n.filterWidth,l=n.dilationDepth,c=n.dilationHeight,h=n.dilationWidth,p=n.effectiveFilterDepth,f=n.effectiveFilterHeight,d=n.effectiveFilterWidth,v=p-1-n.padInfo.front,m=d-1-n.padInfo.left,g=f-1-n.padInfo.top,y=Zn(e.shape,"float32"),x=1/(i*s*u),b=this.bufferSync(t),w=0;w=n.outDepth||Math.floor(D)!==D))for(var _=0;_=n.outHeight||Math.floor(O)!==O))for(var F=0;F=n.outWidth||Math.floor(M)!==M))A+=b.get(w,D,O,M,C);}}}y.set(A*x,w,E,R,I,C);}return y.toTensor()},t.prototype.maxPool3d=function(t,e){return this.assertNotComplex(t,"maxPool3d"),this.pool3d(t,e,"max").toFloat()},t.prototype.maxPool3dPositions=function(t,e){for(var n=Zn(e.outShape,"int32"),r=e.strideDepth,o=e.strideHeight,a=e.strideWidth,i=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,l=e.effectiveFilterDepth,c=e.effectiveFilterHeight,h=e.effectiveFilterWidth,p=e.padInfo.front,f=e.padInfo.top,d=e.padInfo.left,v=this.bufferSync(t),m=0;m=T&&(T=L,D=O*c*h+M*c+P);}n.set(D,m,y,C,k,g);}}}return n.toTensor()},t.prototype.maxPool3dBackprop=function(t,e,n,r){this.assertNotComplex([e,n],"maxPool3dBackprop");for(var o=this.maxPool3dPositions(e,r),a=r.strideDepth,i=r.strideHeight,s=r.strideWidth,u=r.dilationDepth,l=r.dilationHeight,c=r.dilationWidth,h=r.effectiveFilterDepth,p=r.effectiveFilterHeight,f=r.effectiveFilterWidth,d=h-1-r.padInfo.front,v=f-1-r.padInfo.left,m=p-1-r.padInfo.top,g=Zn(e.shape,"float32"),y=this.bufferSync(o),x=this.bufferSync(t),b=0;b=r.outDepth||Math.floor(T)!==T))for(var D=0;D=r.outHeight||Math.floor(_)!==_))for(var O=0;O=r.outWidth||Math.floor(F)!==F)){var M=h*p*f-1-y.get(b,T,_,F,w)===A*p*f+D*f+O?1:0;if(0!==M)S+=x.get(b,T,_,F,w)*M;}}}}g.set(S,b,C,E,R,w);}return g.toTensor()},t.prototype.cast=function(t,e){return mo(t,e,this)},t.prototype.reshape=function(t,e){return go(t,e)},t.prototype.avgPool=function(t,e){return this.assertNotComplex(t,"avgPool"),this.pool(t,e,"avg").toFloat()},t.prototype.resizeBilinear=function(t,e,n,r){this.assertNotComplex(t,"resizeBilinear");for(var o=t.shape,a=o[0],i=o[1],s=o[2],u=o[3],l=this.readSync(t.dataId),c=new Float32Array(g([a,e,n,u])),h=[r&&e>1?i-1:i,r&&n>1?s-1:s],p=[r&&e>1?e-1:e,r&&n>1?n-1:n],f=0,d=h[0]/p[0],v=h[1]/p[1],m=0;m1?a-1:a,n&&c>1?i-1:i],f=[n&&l>1?l-1:l,n&&c>1?c-1:c],d=p[0]/f[0],v=p[1]/f[1],m=this.readSync(t.dataId),g=0,y=0;y1?i-1:i,r&&n>1?s-1:s],p=[r&&e>1?e-1:e,r&&n>1?n-1:n],f=h[0]/p[0],d=h[1]/p[1],v=0,m=0;m1?a-1:a,n&&c>1?i-1:i],d=[n&&l>1?l-1:l,n&&c>1?c-1:c],v=f[0]/d[0],m=f[1]/d[1],g=1/v,y=1/m,x=2*Math.ceil(g)+2,b=2*Math.ceil(y)+2,w=0;w=l)){var M=C+F*t.strides[1],B=F*v;if(E===Math.min(a-1,n?Math.round(B):Math.floor(B)))for(var P=0;P=c)){var W=M+L*t.strides[2],U=L*m;N===Math.min(i-1,n?Math.round(U):Math.floor(U))&&(_+=p[W+D]);}}}}h[S+D]=_;}return In(h,e.shape,e.dtype)},t.prototype.batchNormalization=function(t,e,n,r,o,a){this.assertNotComplex([t,e,n,o,a],"batchNorm");for(var i=this.readSync(t.dataId),s=this.readSync(e.dataId),u=this.readSync(n.dataId),l=o?this.readSync(o.dataId):new Float32Array([1]),c=a?this.readSync(a.dataId):new Float32Array([0]),h=new Float32Array(i.length),p=c.length,f=l.length,d=u.length,v=s.length,m=0,g=0,y=0,x=0,b=0;b=p&&(m=0),g>=v&&(g=0),y>=f&&(y=0),x>=d&&(x=0);return In(h,t.shape)},t.prototype.localResponseNormalization4D=function(t,e,n,r,o){this.assertNotComplex(t,"localResponseNormalization4D");var a=t.shape[3],i=a-1,s=this.readSync(t.dataId),u=t.size,l=new Float32Array(u);function c(t){for(var n=t%a,r=t-n+Math.max(0,n-e),o=t-n+Math.min(n+e,i),u=0;r<=o;r++){var l=s[r];u+=l*l;}return u}for(var h=0;h=0&&a[i]1,function(){return "blockSize should be > 1 for depthToSpace, but was: "+e});for(var r=t.shape[0],o=t.shape[1],a=t.shape[2],i=t.shape[3],s=o*e,u=a*e,l=i/(e*e),c=this.readSync(t.dataId),h=new Float32Array(r*s*u*l),p=0,d=0;d=s))for(var N=p>1?(R-C)*(u-1)/(p-1):0,S=f>1?(I-E)*(l-1)/(f-1):0,A=0;A1?C*(u-1)+A*N:.5*(C+R)*(u-1);if(T<0||T>u-1)for(var D=0;D1?E*(l-1)+D*S:.5*(E+I)*(l-1))<0||q>l-1)for(_=0;_1?E*(l-1)+D*S:.5*(E+I)*(l-1))<0||q>l-1)for(_=0;_=t.size/s)throw new Error("Invalid indices: "+f+" does not index into "+t.shape);for(var g=0;g=r/o)throw new Error("Invalid indices: "+v+" does not index into "+n);for(var x=0;x0,function(){return "scheme must not be an empty string."});var r=t.getInstance();f(null==r.managers[e],function(){return "A model store manager is already registered for scheme '"+e+"'."}),r.managers[e]=n;},t.getManager=function(t){var e=this.getInstance().managers[t];if(null==e)throw new Error("Cannot find model manager for scheme '"+t+"'");return e},t.getSchemes=function(){return Object.keys(this.getInstance().managers)},t}();function xh(t){if(-1===t.indexOf(gh))throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+yh.getSchemes().join(","));return {scheme:t.split(gh)[0],path:t.split(gh)[1]}}function bh(t,e,o){return void 0===o&&(o=!1),n(this,void 0,void 0,function(){var n,a,i,s,u,l,c,h,p;return r(this,function(r){switch(r.label){case 0:return f(t!==e,function(){return "Old path and new path are the same: '"+t+"'"}),f((n=mh.getLoadHandlers(t)).length>0,function(){return "Copying failed because no load handler is found for source URL "+t+"."}),f(n.length<2,function(){return "Copying failed because more than one ("+n.length+") load handlers for source URL "+t+"."}),a=n[0],f((i=mh.getSaveHandlers(e)).length>0,function(){return "Copying failed because no save handler is found for destination URL "+e+"."}),f(i.length<2,function(){return "Copying failed because more than one ("+n.length+") save handlers for destination URL "+e+"."}),s=i[0],u=xh(t).scheme,l=xh(t).path,c=u===xh(t).scheme,[4,a.load()];case 1:return h=r.sent(),o&&c?[4,yh.getManager(u).removeModel(l)]:[3,3];case 2:r.sent(),r.label=3;case 3:return [4,s.save(h)];case 4:return p=r.sent(),!o||c?[3,6]:[4,yh.getManager(u).removeModel(l)];case 5:r.sent(),r.label=6;case 6:return [2,p.modelArtifactsInfo]}})})}var wh="models_store",Ch="model_info_store";function Eh(){if(!i.getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var t=window,e=t.indexedDB||t.mozIndexedDB||t.webkitIndexedDB||t.msIndexedDB||t.shimIndexedDB;if(null==e)throw new Error("The current browser does not appear to support IndexedDB.");return e}function Rh(t){var e=t.result;e.createObjectStore(wh,{keyPath:"modelPath"}),e.createObjectStore(Ch,{keyPath:"modelPath"});}var Ih=function(){function t(t){if(this.indexedDB=Eh(),null==t||!t)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=t;}return t.prototype.save=function(t){return n(this,void 0,void 0,function(){return r(this,function(e){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return [2,this.databaseAction(this.modelPath,t)]})})},t.prototype.load=function(){return n(this,void 0,void 0,function(){return r(this,function(t){return [2,this.databaseAction(this.modelPath)]})})},t.prototype.databaseAction=function(t,e){var n=this;return new Promise(function(t,r){var o=n.indexedDB.open("tensorflowjs",1);o.onupgradeneeded=function(){return Rh(o)},o.onsuccess=function(){var a=o.result;if(null==e){var i=a.transaction(wh,"readonly"),s=i.objectStore(wh).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return a.close(),r(new Error("Cannot find model with path '"+n.modelPath+"' in IndexedDB."));t(s.result.modelArtifacts);},s.onerror=function(t){return a.close(),r(s.error)},i.oncomplete=function(){return a.close()};}else{var u,l=vh(e),c=a.transaction(Ch,"readwrite"),h=c.objectStore(Ch),p=h.put({modelPath:n.modelPath,modelArtifactsInfo:l});p.onsuccess=function(){var o=(u=a.transaction(wh,"readwrite")).objectStore(wh).put({modelPath:n.modelPath,modelArtifacts:e,modelArtifactsInfo:l});o.onsuccess=function(){return t({modelArtifactsInfo:l})},o.onerror=function(t){var e=(h=c.objectStore(Ch)).delete(n.modelPath);e.onsuccess=function(){return a.close(),r(o.error)},e.onerror=function(t){return a.close(),r(o.error)};};},p.onerror=function(t){return a.close(),r(p.error)},c.oncomplete=function(){null==u?a.close():u.oncomplete=function(){return a.close()};};}},o.onerror=function(t){return r(o.error)};})},t.URL_SCHEME="indexeddb://",t}(),kh=function(t){return i.getBool("IS_BROWSER")&&!Array.isArray(t)&&t.startsWith(Ih.URL_SCHEME)?(e=t.slice(Ih.URL_SCHEME.length),new Ih(e)):null;var e;};mh.registerSaveRouter(kh),mh.registerLoadRouter(kh);var Nh=function(){function t(){this.indexedDB=Eh();}return t.prototype.listModels=function(){return n(this,void 0,void 0,function(){var t=this;return r(this,function(e){return [2,new Promise(function(e,n){var r=t.indexedDB.open("tensorflowjs",1);r.onupgradeneeded=function(){return Rh(r)},r.onsuccess=function(){var t=r.result,o=t.transaction(Ch,"readonly"),a=o.objectStore(Ch).getAll();a.onsuccess=function(){for(var t={},n=0,r=a.result;n0,function(){return "promises must be a none empty array"});}(t),function(t,e){f(t>=0&&t<=1,function(){return "Progress fraction must be in range [0, 1], but got startFraction "+t}),f(e>=0&&e<=1,function(){return "Progress fraction must be in range [0, 1], but got endFraction "+e}),f(e>=t,function(){return "startFraction must be no more than endFraction, but got startFraction "+t+" and endFraction "+e});}(n=null==n?0:n,r=null==r?1:r);var o=0;return Promise.all(t.map(function(a){return a.then(function(a){var i=n+ ++o/t.length*(r-n);return e(i),a}),a}))}function Kh(t,e){return n(this,void 0,void 0,function(){var n,o,a,s,u,l,c,h,p;return r(this,function(r){switch(r.label){case 0:return null==e&&(e={}),n=null==e.fetchFunc?i.platform.fetch:e.fetchFunc,o=t.map(function(t){return n(t,e.requestInit,{isBinary:!0})}),a=0,s=.5,null!=e.onProgress?[3,2]:[4,Promise.all(o)];case 1:return u=r.sent(),[3,4];case 2:return [4,$h(o,e.onProgress,a,s)];case 3:u=r.sent(),r.label=4;case 4:return l=u.map(function(t){return t.arrayBuffer()}),c=.5,h=1,null!=e.onProgress?[3,6]:[4,Promise.all(l)];case 5:return p=r.sent(),[3,8];case 6:return [4,$h(l,e.onProgress,c,h)];case 7:p=r.sent(),r.label=8;case 8:return [2,p]}})})}function jh(t){var e=this;return function(o,a,i){return void 0===a&&(a=""),n(e,void 0,void 0,function(){var e,n,s,u,l,c,h,p,f,d;return r(this,function(r){switch(r.label){case 0:if(e=o.map(function(){return !1}),n={},s=null!=i?i.map(function(){return !1}):[],u=[],o.forEach(function(t,r){var o=0;t.weights.forEach(function(t){var a="quantization"in t?t.quantization.dtype:t.dtype,l=sh[a]*g(t.shape),c=function(){e[r]=!0,null==n[r]&&(n[r]=[]),n[r].push({manifestEntry:t,groupOffset:o,sizeBytes:l});};null!=i?i.forEach(function(e,n){e===t.name&&(c(),s[n]=!0);}):c(),u.push(t.name),o+=l;});}),!s.every(function(t){return t}))throw l=i.filter(function(t,e){return !s[e]}),new Error("Could not find weights in manifest with names: "+l.join(", ")+". \nManifest JSON has weights with names: "+u.join(", ")+".");return c=e.reduce(function(t,e,n){return e&&t.push(n),t},[]),h=[],c.forEach(function(t){o[t].paths.forEach(function(t){var e=a+(a.endsWith("/")?"":"/")+t;h.push(e);});}),[4,t(h)];case 1:return p=r.sent(),f={},d=0,c.forEach(function(t){for(var e=o[t].paths.length,r=0,a=0;a0,function(){return "URL path for http must not be null, undefined or empty."}),Array.isArray(t)&&f(2===t.length,function(){return "URL paths for http must have a length of 2, (actual length is "+t.length+")."}),this.path=t,null!=e.requestInit&&null!=e.requestInit.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=e.requestInit||{};}return t.prototype.save=function(t){return n(this,void 0,void 0,function(){var e,n,o,a;return r(this,function(r){switch(r.label){case 0:if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return (e=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:t.weightSpecs}],o={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,weightsManifest:n},e.body.append("model.json",new Blob([JSON.stringify(o)],{type:"application/json"}),"model.json"),null!=t.weightData&&e.body.append("model.weights.bin",new Blob([t.weightData],{type:"application/octet-stream"}),"model.weights.bin"),[4,this.fetch(this.path,e)];case 1:if((a=r.sent()).ok)return [2,{modelArtifactsInfo:vh(t),responses:[a]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+a.status+".")}})})},t.prototype.load=function(){return n(this,void 0,void 0,function(){var t,e,n,o,a,i,s,u;return r(this,function(r){switch(r.label){case 0:return [4,this.fetch(this.path,this.requestInit)];case 1:if(!(t=r.sent()).ok)throw new Error("Request to "+this.path+" failed with status code "+t.status+". Please verify this URL points to the model JSON of the model to load.");r.label=2;case 2:return r.trys.push([2,4,,5]),[4,t.json()];case 3:return e=r.sent(),[3,5];case 4:throw r.sent(),n="Failed to parse model JSON of response from "+this.path+".",this.path.endsWith(".pb")?n+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":n+=" Please make sure the server is serving valid JSON for this request.",new Error(n);case 5:if(o=e.modelTopology,a=e.weightsManifest,null==o&&null==a)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return null==a?[3,7]:[4,this.loadWeights(a)];case 6:u=r.sent(),i=u[0],s=u[1],r.label=7;case 7:return [2,{modelTopology:o,weightSpecs:i,weightData:s}]}})})},t.prototype.loadWeights=function(t){return n(this,void 0,void 0,function(){var e,n,o,a,i,s,u,l,c,h,p;return r(this,function(r){switch(r.label){case 0:for(e=Array.isArray(this.path)?this.path[1]:this.path,n=function(t){var e=t.lastIndexOf("/"),n=t.lastIndexOf("?"),r=t.substring(0,e),o=n>e?t.substring(n):"";return [r+"/",o]}(e),o=n[0],a=n[1],i=this.weightPathPrefix||o,s=[],u=0,l=t;u0&&Number.isInteger(n),function(){return "If provided, numClasses must be a positive integer, but got "+n}),f(1===r.rank,function(){return "Expected the rank of labels to be 1, but got "+r.rank}),f(1===o.rank,function(){return "Expected the rank of predictions to be 1, but got "+o.rank}),f(r.shape[0]===o.shape[0],function(){return "Mismatch in the number of examples: "+r.shape[0]+" vs. "+o.shape[0]+". Labels and predictions should have the same number of elements."}),f(n>0&&Number.isInteger(n),function(){return "numClasses is required to be a positive integer, but got "+n});var a=lr(r.asType("int32"),n),i=lr(o.asType("int32"),n);return a.transpose().matMul(i).asType("int32")}}),rp=Object.freeze({confusionMatrix:np});var op=vn({fromPixels_:function(t,e){if(void 0===e&&(e=3),e>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");var n="undefined"!=typeof HTMLVideoElement&&t instanceof HTMLVideoElement;if(n&&n&&t.readyState<2)throw new Error("The video element has not loaded data yet. Please wait for `loadeddata` event on the