├── .gitignore ├── .npmignore ├── .travis.yml ├── LICENSE ├── README.md ├── build ├── commonjs │ ├── NeuralNetwork.d.ts │ ├── NeuralNetwork.js │ ├── NeuralNetwork.js.map │ ├── classes │ │ ├── BoundingBox.d.ts │ │ ├── BoundingBox.js │ │ ├── BoundingBox.js.map │ │ ├── Box.d.ts │ │ ├── Box.js │ │ ├── Box.js.map │ │ ├── Dimensions.d.ts │ │ ├── Dimensions.js │ │ ├── Dimensions.js.map │ │ ├── LabeledBox.d.ts │ │ ├── LabeledBox.js │ │ ├── LabeledBox.js.map │ │ ├── ObjectDetection.d.ts │ │ ├── ObjectDetection.js │ │ ├── ObjectDetection.js.map │ │ ├── Point.d.ts │ │ ├── Point.js │ │ ├── Point.js.map │ │ ├── PredictedBox.d.ts │ │ ├── PredictedBox.js │ │ ├── PredictedBox.js.map │ │ ├── Rect.d.ts │ │ ├── Rect.js │ │ ├── Rect.js.map │ │ ├── index.d.ts │ │ ├── index.js │ │ └── index.js.map │ ├── common │ │ ├── convLayer.d.ts │ │ ├── convLayer.js │ │ ├── convLayer.js.map │ │ ├── disposeUnusedWeightTensors.d.ts │ │ ├── disposeUnusedWeightTensors.js │ │ ├── disposeUnusedWeightTensors.js.map │ │ ├── extractConvParamsFactory.d.ts │ │ ├── extractConvParamsFactory.js │ │ ├── extractConvParamsFactory.js.map │ │ ├── extractFCParamsFactory.d.ts │ │ ├── extractFCParamsFactory.js │ │ ├── extractFCParamsFactory.js.map │ │ ├── extractSeparableConvParamsFactory.d.ts │ │ ├── extractSeparableConvParamsFactory.js │ │ ├── extractSeparableConvParamsFactory.js.map │ │ ├── extractWeightEntryFactory.d.ts │ │ ├── extractWeightEntryFactory.js │ │ ├── extractWeightEntryFactory.js.map │ │ ├── extractWeightsFactory.d.ts │ │ ├── extractWeightsFactory.js │ │ ├── extractWeightsFactory.js.map │ │ ├── getModelUris.d.ts │ │ ├── getModelUris.js │ │ ├── getModelUris.js.map │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.js.map │ │ ├── types.d.ts │ │ ├── types.js │ │ └── types.js.map │ ├── dom │ │ ├── NetInput.d.ts │ │ ├── NetInput.js │ │ ├── NetInput.js.map │ │ ├── awaitMediaLoaded.d.ts │ │ ├── awaitMediaLoaded.js │ │ ├── awaitMediaLoaded.js.map │ │ ├── bufferToImage.d.ts │ │ ├── bufferToImage.js │ │ ├── bufferToImage.js.map │ │ ├── createCanvas.d.ts │ │ ├── createCanvas.js │ │ ├── createCanvas.js.map │ │ ├── fetchImage.d.ts │ │ ├── fetchImage.js │ │ ├── fetchImage.js.map │ │ ├── fetchJson.d.ts │ │ ├── fetchJson.js │ │ ├── fetchJson.js.map │ │ ├── fetchNetWeights.d.ts │ │ ├── fetchNetWeights.js │ │ ├── fetchNetWeights.js.map │ │ ├── fetchOrThrow.d.ts │ │ ├── fetchOrThrow.js │ │ ├── fetchOrThrow.js.map │ │ ├── getContext2dOrThrow.d.ts │ │ ├── getContext2dOrThrow.js │ │ ├── getContext2dOrThrow.js.map │ │ ├── getMediaDimensions.d.ts │ │ ├── getMediaDimensions.js │ │ ├── getMediaDimensions.js.map │ │ ├── imageTensorToCanvas.d.ts │ │ ├── imageTensorToCanvas.js │ │ ├── imageTensorToCanvas.js.map │ │ ├── imageToSquare.d.ts │ │ ├── imageToSquare.js │ │ ├── imageToSquare.js.map │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.js.map │ │ ├── isMediaElement.d.ts │ │ ├── isMediaElement.js │ │ ├── isMediaElement.js.map │ │ ├── isMediaLoaded.d.ts │ │ ├── isMediaLoaded.js │ │ ├── isMediaLoaded.js.map │ │ ├── loadWeightMap.d.ts │ │ ├── loadWeightMap.js │ │ ├── loadWeightMap.js.map │ │ ├── matchDimensions.d.ts │ │ ├── matchDimensions.js │ │ ├── matchDimensions.js.map │ │ ├── resolveInput.d.ts │ │ ├── resolveInput.js │ │ ├── resolveInput.js.map │ │ ├── toNetInput.d.ts │ │ ├── toNetInput.js │ │ ├── toNetInput.js.map │ │ ├── types.d.ts │ │ ├── types.js │ │ └── types.js.map │ ├── draw │ │ ├── DrawBox.d.ts │ │ ├── DrawBox.js │ │ ├── DrawBox.js.map │ │ ├── DrawTextField.d.ts │ │ ├── DrawTextField.js │ │ ├── DrawTextField.js.map │ │ ├── index.d.ts │ │ ├── index.js │ │ └── index.js.map │ ├── env │ │ ├── createBrowserEnv.d.ts │ │ ├── createBrowserEnv.js │ │ ├── createBrowserEnv.js.map │ │ ├── createFileSystem.d.ts │ │ ├── createFileSystem.js │ │ ├── createFileSystem.js.map │ │ ├── createNodejsEnv.d.ts │ │ ├── createNodejsEnv.js │ │ ├── createNodejsEnv.js.map │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.js.map │ │ ├── isBrowser.d.ts │ │ ├── isBrowser.js │ │ ├── isBrowser.js.map │ │ ├── isNodejs.d.ts │ │ ├── isNodejs.js │ │ ├── isNodejs.js.map │ │ ├── types.d.ts │ │ ├── types.js │ │ └── types.js.map │ ├── index.d.ts │ ├── index.js │ ├── index.js.map │ ├── metrics │ │ ├── assignFalseAndTruePositives.d.ts │ │ ├── assignFalseAndTruePositives.js │ │ ├── assignFalseAndTruePositives.js.map │ │ ├── averagePrecision.d.ts │ │ ├── averagePrecision.js │ │ ├── averagePrecision.js.map │ │ ├── meanAveragePrecision.d.ts │ │ ├── meanAveragePrecision.js │ │ ├── meanAveragePrecision.js.map │ │ ├── types.d.ts │ │ ├── types.js │ │ └── types.js.map │ ├── ops │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.js.map │ │ ├── iou.d.ts │ │ ├── iou.js │ │ ├── iou.js.map │ │ ├── minBbox.d.ts │ │ ├── minBbox.js │ │ ├── minBbox.js.map │ │ ├── nonMaxSuppression.d.ts │ │ ├── nonMaxSuppression.js │ │ ├── nonMaxSuppression.js.map │ │ ├── normalize.d.ts │ │ ├── normalize.js │ │ ├── normalize.js.map │ │ ├── padToSquare.d.ts │ │ ├── padToSquare.js │ │ ├── padToSquare.js.map │ │ ├── shuffleArray.d.ts │ │ ├── shuffleArray.js │ │ └── shuffleArray.js.map │ ├── tfjsImageRecognitionBase.d.ts │ ├── tfjsImageRecognitionBase.js │ ├── tfjsImageRecognitionBase.js.map │ ├── tinyYolov2 │ │ ├── TinyYolov2.d.ts │ │ ├── TinyYolov2.js │ │ ├── TinyYolov2.js.map │ │ ├── TinyYolov2Options.d.ts │ │ ├── TinyYolov2Options.js │ │ ├── TinyYolov2Options.js.map │ │ ├── config.d.ts │ │ ├── config.js │ │ ├── config.js.map │ │ ├── convWithBatchNorm.d.ts │ │ ├── convWithBatchNorm.js │ │ ├── convWithBatchNorm.js.map │ │ ├── depthwiseSeparableConv.d.ts │ │ ├── depthwiseSeparableConv.js │ │ ├── depthwiseSeparableConv.js.map │ │ ├── extractParams.d.ts │ │ ├── extractParams.js │ │ ├── extractParams.js.map │ │ ├── extractParamsFromWeigthMap.d.ts │ │ ├── extractParamsFromWeigthMap.js │ │ ├── extractParamsFromWeigthMap.js.map │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.js.map │ │ ├── leaky.d.ts │ │ ├── leaky.js │ │ ├── leaky.js.map │ │ ├── types.d.ts │ │ ├── types.js │ │ └── types.js.map │ └── utils │ │ ├── index.d.ts │ │ ├── index.js │ │ └── index.js.map └── es6 │ ├── NeuralNetwork.d.ts │ ├── NeuralNetwork.js │ ├── NeuralNetwork.js.map │ ├── classes │ ├── BoundingBox.d.ts │ ├── BoundingBox.js │ ├── BoundingBox.js.map │ ├── Box.d.ts │ ├── Box.js │ ├── Box.js.map │ ├── Dimensions.d.ts │ ├── Dimensions.js │ ├── Dimensions.js.map │ ├── LabeledBox.d.ts │ ├── LabeledBox.js │ ├── LabeledBox.js.map │ ├── ObjectDetection.d.ts │ ├── ObjectDetection.js │ ├── ObjectDetection.js.map │ ├── Point.d.ts │ ├── Point.js │ ├── Point.js.map │ ├── PredictedBox.d.ts │ ├── PredictedBox.js │ ├── PredictedBox.js.map │ ├── Rect.d.ts │ ├── Rect.js │ ├── Rect.js.map │ ├── index.d.ts │ ├── index.js │ └── index.js.map │ ├── common │ ├── convLayer.d.ts │ ├── convLayer.js │ ├── convLayer.js.map │ ├── disposeUnusedWeightTensors.d.ts │ ├── disposeUnusedWeightTensors.js │ ├── disposeUnusedWeightTensors.js.map │ ├── extractConvParamsFactory.d.ts │ ├── extractConvParamsFactory.js │ ├── extractConvParamsFactory.js.map │ ├── extractFCParamsFactory.d.ts │ ├── extractFCParamsFactory.js │ ├── extractFCParamsFactory.js.map │ ├── extractSeparableConvParamsFactory.d.ts │ ├── extractSeparableConvParamsFactory.js │ ├── extractSeparableConvParamsFactory.js.map │ ├── extractWeightEntryFactory.d.ts │ ├── extractWeightEntryFactory.js │ ├── extractWeightEntryFactory.js.map │ ├── extractWeightsFactory.d.ts │ ├── extractWeightsFactory.js │ ├── extractWeightsFactory.js.map │ ├── getModelUris.d.ts │ ├── getModelUris.js │ ├── getModelUris.js.map │ ├── index.d.ts │ ├── index.js │ ├── index.js.map │ ├── types.d.ts │ ├── types.js │ └── types.js.map │ ├── dom │ ├── NetInput.d.ts │ ├── NetInput.js │ ├── NetInput.js.map │ ├── awaitMediaLoaded.d.ts │ ├── awaitMediaLoaded.js │ ├── awaitMediaLoaded.js.map │ ├── bufferToImage.d.ts │ ├── bufferToImage.js │ ├── bufferToImage.js.map │ ├── createCanvas.d.ts │ ├── createCanvas.js │ ├── createCanvas.js.map │ ├── fetchImage.d.ts │ ├── fetchImage.js │ ├── fetchImage.js.map │ ├── fetchJson.d.ts │ ├── fetchJson.js │ ├── fetchJson.js.map │ ├── fetchNetWeights.d.ts │ ├── fetchNetWeights.js │ ├── fetchNetWeights.js.map │ ├── fetchOrThrow.d.ts │ ├── fetchOrThrow.js │ ├── fetchOrThrow.js.map │ ├── getContext2dOrThrow.d.ts │ ├── getContext2dOrThrow.js │ ├── getContext2dOrThrow.js.map │ ├── getMediaDimensions.d.ts │ ├── getMediaDimensions.js │ ├── getMediaDimensions.js.map │ ├── imageTensorToCanvas.d.ts │ ├── imageTensorToCanvas.js │ ├── imageTensorToCanvas.js.map │ ├── imageToSquare.d.ts │ ├── imageToSquare.js │ ├── imageToSquare.js.map │ ├── index.d.ts │ ├── index.js │ ├── index.js.map │ ├── isMediaElement.d.ts │ ├── isMediaElement.js │ ├── isMediaElement.js.map │ ├── isMediaLoaded.d.ts │ ├── isMediaLoaded.js │ ├── isMediaLoaded.js.map │ ├── loadWeightMap.d.ts │ ├── loadWeightMap.js │ ├── loadWeightMap.js.map │ ├── matchDimensions.d.ts │ ├── matchDimensions.js │ ├── matchDimensions.js.map │ ├── resolveInput.d.ts │ ├── resolveInput.js │ ├── resolveInput.js.map │ ├── toNetInput.d.ts │ ├── toNetInput.js │ ├── toNetInput.js.map │ ├── types.d.ts │ ├── types.js │ └── types.js.map │ ├── draw │ ├── DrawBox.d.ts │ ├── DrawBox.js │ ├── DrawBox.js.map │ ├── DrawTextField.d.ts │ ├── DrawTextField.js │ ├── DrawTextField.js.map │ ├── index.d.ts │ ├── index.js │ └── index.js.map │ ├── env │ ├── createBrowserEnv.d.ts │ ├── createBrowserEnv.js │ ├── createBrowserEnv.js.map │ ├── createFileSystem.d.ts │ ├── createFileSystem.js │ ├── createFileSystem.js.map │ ├── createNodejsEnv.d.ts │ ├── createNodejsEnv.js │ ├── createNodejsEnv.js.map │ ├── index.d.ts │ ├── index.js │ ├── index.js.map │ ├── isBrowser.d.ts │ ├── isBrowser.js │ ├── isBrowser.js.map │ ├── isNodejs.d.ts │ ├── isNodejs.js │ ├── isNodejs.js.map │ ├── types.d.ts │ ├── types.js │ └── types.js.map │ ├── index.d.ts │ ├── index.js │ ├── index.js.map │ ├── metrics │ ├── assignFalseAndTruePositives.d.ts │ ├── assignFalseAndTruePositives.js │ ├── assignFalseAndTruePositives.js.map │ ├── averagePrecision.d.ts │ ├── averagePrecision.js │ ├── averagePrecision.js.map │ ├── meanAveragePrecision.d.ts │ ├── meanAveragePrecision.js │ ├── meanAveragePrecision.js.map │ ├── types.d.ts │ ├── types.js │ └── types.js.map │ ├── ops │ ├── index.d.ts │ ├── index.js │ ├── index.js.map │ ├── iou.d.ts │ ├── iou.js │ ├── iou.js.map │ ├── minBbox.d.ts │ ├── minBbox.js │ ├── minBbox.js.map │ ├── nonMaxSuppression.d.ts │ ├── nonMaxSuppression.js │ ├── nonMaxSuppression.js.map │ ├── normalize.d.ts │ ├── normalize.js │ ├── normalize.js.map │ ├── padToSquare.d.ts │ ├── padToSquare.js │ ├── padToSquare.js.map │ ├── shuffleArray.d.ts │ ├── shuffleArray.js │ └── shuffleArray.js.map │ ├── tfjsImageRecognitionBase.d.ts │ ├── tfjsImageRecognitionBase.js │ ├── tfjsImageRecognitionBase.js.map │ ├── tinyYolov2 │ ├── TinyYolov2.d.ts │ ├── TinyYolov2.js │ ├── TinyYolov2.js.map │ ├── TinyYolov2Options.d.ts │ ├── TinyYolov2Options.js │ ├── TinyYolov2Options.js.map │ ├── config.d.ts │ ├── config.js │ ├── config.js.map │ ├── convWithBatchNorm.d.ts │ ├── convWithBatchNorm.js │ ├── convWithBatchNorm.js.map │ ├── depthwiseSeparableConv.d.ts │ ├── depthwiseSeparableConv.js │ ├── depthwiseSeparableConv.js.map │ ├── extractParams.d.ts │ ├── extractParams.js │ ├── extractParams.js.map │ ├── extractParamsFromWeigthMap.d.ts │ ├── extractParamsFromWeigthMap.js │ ├── extractParamsFromWeigthMap.js.map │ ├── index.d.ts │ ├── index.js │ ├── index.js.map │ ├── leaky.d.ts │ ├── leaky.js │ ├── leaky.js.map │ ├── types.d.ts │ ├── types.js │ └── types.js.map │ └── utils │ ├── index.d.ts │ ├── index.js │ └── index.js.map ├── jasmine-node.json ├── karma.conf.js ├── package-lock.json ├── package.json ├── src ├── NeuralNetwork.ts ├── classes │ ├── BoundingBox.ts │ ├── Box.ts │ ├── Dimensions.ts │ ├── LabeledBox.ts │ ├── ObjectDetection.ts │ ├── Point.ts │ ├── PredictedBox.ts │ ├── Rect.ts │ └── index.ts ├── common │ ├── convLayer.ts │ ├── disposeUnusedWeightTensors.ts │ ├── extractConvParamsFactory.ts │ ├── extractFCParamsFactory.ts │ ├── extractSeparableConvParamsFactory.ts │ ├── extractWeightEntryFactory.ts │ ├── extractWeightsFactory.ts │ ├── getModelUris.ts │ ├── index.ts │ └── types.ts ├── dom │ ├── NetInput.ts │ ├── awaitMediaLoaded.ts │ ├── bufferToImage.ts │ ├── createCanvas.ts │ ├── fetchImage.ts │ ├── fetchJson.ts │ ├── fetchNetWeights.ts │ ├── fetchOrThrow.ts │ ├── getContext2dOrThrow.ts │ ├── getMediaDimensions.ts │ ├── imageTensorToCanvas.ts │ ├── imageToSquare.ts │ ├── index.ts │ ├── isMediaElement.ts │ ├── isMediaLoaded.ts │ ├── loadWeightMap.ts │ ├── matchDimensions.ts │ ├── resolveInput.ts │ ├── toNetInput.ts │ └── types.ts ├── draw │ ├── DrawBox.ts │ ├── DrawTextField.ts │ └── index.ts ├── env │ ├── createBrowserEnv.ts │ ├── createFileSystem.ts │ ├── createNodejsEnv.ts │ ├── index.ts │ ├── isBrowser.ts │ ├── isNodejs.ts │ └── types.ts ├── index.ts ├── metrics │ ├── assignFalseAndTruePositives.ts │ ├── averagePrecision.ts │ ├── meanAveragePrecision.ts │ └── types.ts ├── ops │ ├── index.ts │ ├── iou.ts │ ├── minBbox.ts │ ├── nonMaxSuppression.ts │ ├── normalize.ts │ ├── padToSquare.ts │ └── shuffleArray.ts ├── tfjsImageRecognitionBase.ts ├── tinyYolov2 │ ├── TinyYolov2.ts │ ├── TinyYolov2Options.ts │ ├── config.ts │ ├── convWithBatchNorm.ts │ ├── depthwiseSeparableConv.ts │ ├── extractParams.ts │ ├── extractParamsFromWeigthMap.ts │ ├── index.ts │ ├── leaky.ts │ └── types.ts └── utils │ └── index.ts ├── test ├── Environment.ts ├── NeuralNetwork.test.ts ├── boxes.json ├── classes │ ├── BoundingBox.test.ts │ ├── Box.test.ts │ └── Rect.test.ts ├── common │ └── getModelUris.test.ts ├── dom │ ├── NetInput.test.ts │ ├── fetchImage.browser.test.ts │ ├── fetchJson.browser.test.ts │ ├── fetchNetWeights.browser.test.ts │ ├── fetchOrThrow.browser.test.ts │ └── toNetInput.test.ts ├── dummy.weights ├── env.node.ts ├── env.ts ├── img.png ├── metrics │ ├── assignFalseAndTruePositives.test.ts │ ├── averagePrecision.test.ts │ └── meanAveragePrecision.test.ts ├── ops │ ├── iou.test.ts │ └── padToSquare.test.ts ├── utils.ts └── utils │ └── index.test.ts ├── tsconfig.es6.json ├── tsconfig.json └── tsconfig.test.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | test -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: required 2 | language: node_js 3 | node_js: 4 | - "11" 5 | - "10" 6 | - "8" 7 | services: 8 | - xvfb 9 | env: 10 | global: 11 | - BACKEND_CPU=true 12 | matrix: 13 | - ENV=browser 14 | - ENV=node 15 | addons: 16 | chrome: stable 17 | script: 18 | - if [ $ENV == 'browser' ]; then npm run test-browser; fi 19 | - if [ $ENV == 'node' ]; then npm run test-node; fi 20 | - npm run build -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](https://travis-ci.org/justadudewhohacks/tfjs-image-recognition-base.svg?branch=master)](https://travis-ci.org/justadudewhohacks/tfjs-image-recognition-base) -------------------------------------------------------------------------------- /build/commonjs/classes/BoundingBox.d.ts: -------------------------------------------------------------------------------- 1 | import { Box } from './Box'; 2 | export interface IBoundingBox { 3 | left: number; 4 | top: number; 5 | right: number; 6 | bottom: number; 7 | } 8 | export declare class BoundingBox extends Box implements IBoundingBox { 9 | constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions?: boolean); 10 | } 11 | -------------------------------------------------------------------------------- /build/commonjs/classes/BoundingBox.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | var Box_1 = require("./Box"); 5 | var BoundingBox = /** @class */ (function (_super) { 6 | tslib_1.__extends(BoundingBox, _super); 7 | function BoundingBox(left, top, right, bottom, allowNegativeDimensions) { 8 | if (allowNegativeDimensions === void 0) { allowNegativeDimensions = false; } 9 | return _super.call(this, { left: left, top: top, right: right, bottom: bottom }, allowNegativeDimensions) || this; 10 | } 11 | return BoundingBox; 12 | }(Box_1.Box)); 13 | exports.BoundingBox = BoundingBox; 14 | //# sourceMappingURL=BoundingBox.js.map -------------------------------------------------------------------------------- /build/commonjs/classes/BoundingBox.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"BoundingBox.js","sourceRoot":"","sources":["../../../src/classes/BoundingBox.ts"],"names":[],"mappings":";;;AAAA,6BAA4B;AAS5B;IAAiC,uCAAgB;IAC/C,qBAAY,IAAY,EAAE,GAAW,EAAE,KAAa,EAAE,MAAc,EAAE,uBAAwC;QAAxC,wCAAA,EAAA,+BAAwC;eAC5G,kBAAM,EAAE,IAAI,MAAA,EAAE,GAAG,KAAA,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,EAAE,uBAAuB,CAAC;IAC9D,CAAC;IACH,kBAAC;AAAD,CAAC,AAJD,CAAiC,SAAG,GAInC;AAJY,kCAAW"} -------------------------------------------------------------------------------- /build/commonjs/classes/Dimensions.d.ts: -------------------------------------------------------------------------------- 1 | export interface IDimensions { 2 | width: number; 3 | height: number; 4 | } 5 | export declare class Dimensions implements IDimensions { 6 | private _width; 7 | private _height; 8 | constructor(width: number, height: number); 9 | readonly width: number; 10 | readonly height: number; 11 | reverse(): Dimensions; 12 | } 13 | -------------------------------------------------------------------------------- /build/commonjs/classes/Dimensions.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Dimensions.js","sourceRoot":"","sources":["../../../src/classes/Dimensions.ts"],"names":[],"mappings":";;AAAA,kCAAyC;AAOzC;IAKE,oBAAY,KAAa,EAAE,MAAc;QACvC,IAAI,CAAC,qBAAa,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAa,CAAC,MAAM,CAAC,EAAE;YACnD,MAAM,IAAI,KAAK,CAAC,0FAAwF,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAG,CAAC,CAAA;SAC7I;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,sBAAW,6BAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IACjD,sBAAW,8BAAM;aAAjB,cAA8B,OAAO,IAAI,CAAC,OAAO,CAAA,CAAC,CAAC;;;OAAA;IAE5C,4BAAO,GAAd;QACE,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IACxD,CAAC;IACH,iBAAC;AAAD,CAAC,AApBD,IAoBC;AApBY,gCAAU"} -------------------------------------------------------------------------------- /build/commonjs/classes/LabeledBox.d.ts: -------------------------------------------------------------------------------- 1 | import { IBoundingBox } from './BoundingBox'; 2 | import { Box } from './Box'; 3 | import { IRect } from './Rect'; 4 | export declare class LabeledBox extends Box { 5 | static assertIsValidLabeledBox(box: any, callee: string): void; 6 | private _label; 7 | constructor(box: IBoundingBox | IRect | any, label: number); 8 | readonly label: number; 9 | } 10 | -------------------------------------------------------------------------------- /build/commonjs/classes/LabeledBox.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"LabeledBox.js","sourceRoot":"","sources":["../../../src/classes/LabeledBox.ts"],"names":[],"mappings":";;;AACA,6BAA4B;AAE5B,wCAA+C;AAE/C;IAAgC,sCAAe;IAY7C,oBAAY,GAA+B,EAAE,KAAa;QAA1D,YACE,kBAAM,GAAG,CAAC,SAEX;QADC,KAAI,CAAC,MAAM,GAAG,KAAK,CAAA;;IACrB,CAAC;IAba,kCAAuB,GAArC,UAAsC,GAAQ,EAAE,MAAc;QAC5D,SAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAEjC,IAAI,CAAC,qBAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAI,MAAM,oCAA+B,GAAG,CAAC,KAAK,qBAAkB,CAAC,CAAA;SACrF;IACH,CAAC;IASD,sBAAW,6BAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IAEnD,iBAAC;AAAD,CAAC,AAnBD,CAAgC,SAAG,GAmBlC;AAnBY,gCAAU"} -------------------------------------------------------------------------------- /build/commonjs/classes/ObjectDetection.d.ts: -------------------------------------------------------------------------------- 1 | import { Box } from './Box'; 2 | import { Dimensions, IDimensions } from './Dimensions'; 3 | import { IRect } from './Rect'; 4 | export declare class ObjectDetection { 5 | private _score; 6 | private _classScore; 7 | private _className; 8 | private _box; 9 | private _imageDims; 10 | constructor(score: number, classScore: number, className: string, relativeBox: IRect, imageDims: IDimensions); 11 | readonly score: number; 12 | readonly classScore: number; 13 | readonly className: string; 14 | readonly box: Box; 15 | readonly imageDims: Dimensions; 16 | readonly imageWidth: number; 17 | readonly imageHeight: number; 18 | readonly relativeBox: Box; 19 | forSize(width: number, height: number): ObjectDetection; 20 | } 21 | -------------------------------------------------------------------------------- /build/commonjs/classes/Point.d.ts: -------------------------------------------------------------------------------- 1 | export interface IPoint { 2 | x: number; 3 | y: number; 4 | } 5 | export declare class Point implements IPoint { 6 | private _x; 7 | private _y; 8 | constructor(x: number, y: number); 9 | readonly x: number; 10 | readonly y: number; 11 | add(pt: IPoint): Point; 12 | sub(pt: IPoint): Point; 13 | mul(pt: IPoint): Point; 14 | div(pt: IPoint): Point; 15 | abs(): Point; 16 | magnitude(): number; 17 | floor(): Point; 18 | } 19 | -------------------------------------------------------------------------------- /build/commonjs/classes/PredictedBox.d.ts: -------------------------------------------------------------------------------- 1 | import { IBoundingBox } from './BoundingBox'; 2 | import { LabeledBox } from './LabeledBox'; 3 | import { IRect } from './Rect'; 4 | export declare class PredictedBox extends LabeledBox { 5 | static assertIsValidPredictedBox(box: any, callee: string): void; 6 | private _score; 7 | private _classScore; 8 | constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number); 9 | readonly score: number; 10 | readonly classScore: number; 11 | } 12 | -------------------------------------------------------------------------------- /build/commonjs/classes/PredictedBox.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"PredictedBox.js","sourceRoot":"","sources":["../../../src/classes/PredictedBox.ts"],"names":[],"mappings":";;;AAAA,kCAA8C;AAE9C,2CAA0C;AAG1C;IAAkC,wCAAU;IAgB1C,sBAAY,GAA+B,EAAE,KAAa,EAAE,KAAa,EAAE,UAAkB;QAA7F,YACE,kBAAM,GAAG,EAAE,KAAK,CAAC,SAGlB;QAFC,KAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,KAAI,CAAC,WAAW,GAAG,UAAU,CAAA;;IAC/B,CAAC;IAlBa,sCAAyB,GAAvC,UAAwC,GAAQ,EAAE,MAAc;QAC9D,uBAAU,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAE/C,IACE,CAAC,0BAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;eAC3B,CAAC,0BAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,EACtC;YACA,MAAM,IAAI,KAAK,CAAI,MAAM,sCAAiC,GAAG,CAAC,KAAK,eAAU,GAAG,CAAC,UAAU,oCAAiC,CAAC,CAAA;SAC9H;IACH,CAAC;IAWD,sBAAW,+BAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IACjD,sBAAW,oCAAU;aAArB,cAAkC,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;;;OAAA;IAE7D,mBAAC;AAAD,CAAC,AAzBD,CAAkC,uBAAU,GAyB3C;AAzBY,oCAAY"} -------------------------------------------------------------------------------- /build/commonjs/classes/Rect.d.ts: -------------------------------------------------------------------------------- 1 | import { Box } from './Box'; 2 | export interface IRect { 3 | x: number; 4 | y: number; 5 | width: number; 6 | height: number; 7 | } 8 | export declare class Rect extends Box implements IRect { 9 | constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions?: boolean); 10 | } 11 | -------------------------------------------------------------------------------- /build/commonjs/classes/Rect.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | var Box_1 = require("./Box"); 5 | var Rect = /** @class */ (function (_super) { 6 | tslib_1.__extends(Rect, _super); 7 | function Rect(x, y, width, height, allowNegativeDimensions) { 8 | if (allowNegativeDimensions === void 0) { allowNegativeDimensions = false; } 9 | return _super.call(this, { x: x, y: y, width: width, height: height }, allowNegativeDimensions) || this; 10 | } 11 | return Rect; 12 | }(Box_1.Box)); 13 | exports.Rect = Rect; 14 | //# sourceMappingURL=Rect.js.map -------------------------------------------------------------------------------- /build/commonjs/classes/Rect.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Rect.js","sourceRoot":"","sources":["../../../src/classes/Rect.ts"],"names":[],"mappings":";;;AAAA,6BAA4B;AAS5B;IAA0B,gCAAS;IACjC,cAAY,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc,EAAE,uBAAwC;QAAxC,wCAAA,EAAA,+BAAwC;eACvG,kBAAM,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,EAAE,uBAAuB,CAAC;IACzD,CAAC;IACH,WAAC;AAAD,CAAC,AAJD,CAA0B,SAAG,GAI5B;AAJY,oBAAI"} -------------------------------------------------------------------------------- /build/commonjs/classes/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './BoundingBox'; 2 | export * from './Box'; 3 | export * from './Dimensions'; 4 | export * from './LabeledBox'; 5 | export * from './ObjectDetection'; 6 | export * from './Point'; 7 | export * from './PredictedBox'; 8 | export * from './Rect'; 9 | -------------------------------------------------------------------------------- /build/commonjs/classes/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | tslib_1.__exportStar(require("./BoundingBox"), exports); 5 | tslib_1.__exportStar(require("./Box"), exports); 6 | tslib_1.__exportStar(require("./Dimensions"), exports); 7 | tslib_1.__exportStar(require("./LabeledBox"), exports); 8 | tslib_1.__exportStar(require("./ObjectDetection"), exports); 9 | tslib_1.__exportStar(require("./Point"), exports); 10 | tslib_1.__exportStar(require("./PredictedBox"), exports); 11 | tslib_1.__exportStar(require("./Rect"), exports); 12 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/commonjs/classes/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/classes/index.ts"],"names":[],"mappings":";;;AAAA,wDAA6B;AAC7B,gDAAqB;AACrB,uDAA4B;AAC5B,uDAA4B;AAC5B,4DAAiC;AACjC,kDAAuB;AACvB,yDAA8B;AAC9B,iDAAsB"} -------------------------------------------------------------------------------- /build/commonjs/common/convLayer.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | import { ConvParams } from './types'; 3 | export declare function convLayer(x: tf.Tensor4D, params: ConvParams, padding?: 'valid' | 'same', withRelu?: boolean): tf.Tensor4D; 4 | -------------------------------------------------------------------------------- /build/commonjs/common/convLayer.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tf = require("@tensorflow/tfjs-core"); 4 | function convLayer(x, params, padding, withRelu) { 5 | if (padding === void 0) { padding = 'same'; } 6 | if (withRelu === void 0) { withRelu = false; } 7 | return tf.tidy(function () { 8 | var out = tf.add(tf.conv2d(x, params.filters, [1, 1], padding), params.bias); 9 | return withRelu ? tf.relu(out) : out; 10 | }); 11 | } 12 | exports.convLayer = convLayer; 13 | //# sourceMappingURL=convLayer.js.map -------------------------------------------------------------------------------- /build/commonjs/common/convLayer.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"convLayer.js","sourceRoot":"","sources":["../../../src/common/convLayer.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAI5C,SAAgB,SAAS,CACvB,CAAc,EACd,MAAkB,EAClB,OAAkC,EAClC,QAAyB;IADzB,wBAAA,EAAA,gBAAkC;IAClC,yBAAA,EAAA,gBAAyB;IAEzB,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAChB,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAC7C,MAAM,CAAC,IAAI,CACG,CAAA;QAEhB,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACtC,CAAC,CAAC,CAAA;AACJ,CAAC;AAdD,8BAcC"} -------------------------------------------------------------------------------- /build/commonjs/common/disposeUnusedWeightTensors.d.ts: -------------------------------------------------------------------------------- 1 | import { ParamMapping } from './types'; 2 | export declare function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]): void; 3 | -------------------------------------------------------------------------------- /build/commonjs/common/disposeUnusedWeightTensors.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | function disposeUnusedWeightTensors(weightMap, paramMappings) { 4 | Object.keys(weightMap).forEach(function (path) { 5 | if (!paramMappings.some(function (pm) { return pm.originalPath === path; })) { 6 | weightMap[path].dispose(); 7 | } 8 | }); 9 | } 10 | exports.disposeUnusedWeightTensors = disposeUnusedWeightTensors; 11 | //# sourceMappingURL=disposeUnusedWeightTensors.js.map -------------------------------------------------------------------------------- /build/commonjs/common/disposeUnusedWeightTensors.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"disposeUnusedWeightTensors.js","sourceRoot":"","sources":["../../../src/common/disposeUnusedWeightTensors.ts"],"names":[],"mappings":";;AAEA,SAAgB,0BAA0B,CAAC,SAAc,EAAE,aAA6B;IACtF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,YAAY,KAAK,IAAI,EAAxB,CAAwB,CAAC,EAAE;YACvD,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;SAC1B;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAND,gEAMC"} -------------------------------------------------------------------------------- /build/commonjs/common/extractConvParamsFactory.d.ts: -------------------------------------------------------------------------------- 1 | import { ConvParams, ExtractWeightsFunction, ParamMapping } from './types'; 2 | export declare function extractConvParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, filterSize: number, mappedPrefix: string) => ConvParams; 3 | -------------------------------------------------------------------------------- /build/commonjs/common/extractConvParamsFactory.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tf = require("@tensorflow/tfjs-core"); 4 | function extractConvParamsFactory(extractWeights, paramMappings) { 5 | return function (channelsIn, channelsOut, filterSize, mappedPrefix) { 6 | var filters = tf.tensor4d(extractWeights(channelsIn * channelsOut * filterSize * filterSize), [filterSize, filterSize, channelsIn, channelsOut]); 7 | var bias = tf.tensor1d(extractWeights(channelsOut)); 8 | paramMappings.push({ paramPath: mappedPrefix + "/filters" }, { paramPath: mappedPrefix + "/bias" }); 9 | return { filters: filters, bias: bias }; 10 | }; 11 | } 12 | exports.extractConvParamsFactory = extractConvParamsFactory; 13 | //# sourceMappingURL=extractConvParamsFactory.js.map -------------------------------------------------------------------------------- /build/commonjs/common/extractConvParamsFactory.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"extractConvParamsFactory.js","sourceRoot":"","sources":["../../../src/common/extractConvParamsFactory.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAI5C,SAAgB,wBAAwB,CACtC,cAAsC,EACtC,aAA6B;IAG7B,OAAO,UACL,UAAkB,EAClB,WAAmB,EACnB,UAAkB,EAClB,YAAoB;QAGpB,IAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CACzB,cAAc,CAAC,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC,EAClE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAClD,CAAA;QACD,IAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAA;QAErD,aAAa,CAAC,IAAI,CAChB,EAAE,SAAS,EAAK,YAAY,aAAU,EAAE,EACxC,EAAE,SAAS,EAAK,YAAY,UAAO,EAAE,CACtC,CAAA;QAED,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC,CAAA;AAEH,CAAC;AA1BD,4DA0BC"} -------------------------------------------------------------------------------- /build/commonjs/common/extractFCParamsFactory.d.ts: -------------------------------------------------------------------------------- 1 | import { ExtractWeightsFunction, FCParams, ParamMapping } from './types'; 2 | export declare function extractFCParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, mappedPrefix: string) => FCParams; 3 | -------------------------------------------------------------------------------- /build/commonjs/common/extractFCParamsFactory.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tf = require("@tensorflow/tfjs-core"); 4 | function extractFCParamsFactory(extractWeights, paramMappings) { 5 | return function (channelsIn, channelsOut, mappedPrefix) { 6 | var fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]); 7 | var fc_bias = tf.tensor1d(extractWeights(channelsOut)); 8 | paramMappings.push({ paramPath: mappedPrefix + "/weights" }, { paramPath: mappedPrefix + "/bias" }); 9 | return { 10 | weights: fc_weights, 11 | bias: fc_bias 12 | }; 13 | }; 14 | } 15 | exports.extractFCParamsFactory = extractFCParamsFactory; 16 | //# sourceMappingURL=extractFCParamsFactory.js.map -------------------------------------------------------------------------------- /build/commonjs/common/extractFCParamsFactory.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"extractFCParamsFactory.js","sourceRoot":"","sources":["../../../src/common/extractFCParamsFactory.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAK5C,SAAgB,sBAAsB,CACpC,cAAsC,EACtC,aAA6B;IAG7B,OAAO,UACL,UAAkB,EAClB,WAAmB,EACnB,YAAoB;QAGpB,IAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;QACnG,IAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAA;QAExD,aAAa,CAAC,IAAI,CAChB,EAAE,SAAS,EAAK,YAAY,aAAU,EAAE,EACxC,EAAE,SAAS,EAAK,YAAY,UAAO,EAAE,CACtC,CAAA;QAED,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,OAAO;SACd,CAAA;IACH,CAAC,CAAA;AAEH,CAAC;AAzBD,wDAyBC"} -------------------------------------------------------------------------------- /build/commonjs/common/extractSeparableConvParamsFactory.d.ts: -------------------------------------------------------------------------------- 1 | import { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types'; 2 | export declare function extractSeparableConvParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, mappedPrefix: string) => SeparableConvParams; 3 | export declare function loadSeparableConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T): (prefix: string) => SeparableConvParams; 4 | -------------------------------------------------------------------------------- /build/commonjs/common/extractWeightEntryFactory.d.ts: -------------------------------------------------------------------------------- 1 | import { ParamMapping } from './types'; 2 | export declare function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]): (originalPath: string, paramRank: number, mappedPath?: string | undefined) => T; 3 | -------------------------------------------------------------------------------- /build/commonjs/common/extractWeightEntryFactory.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var utils_1 = require("../utils"); 4 | function extractWeightEntryFactory(weightMap, paramMappings) { 5 | return function (originalPath, paramRank, mappedPath) { 6 | var tensor = weightMap[originalPath]; 7 | if (!utils_1.isTensor(tensor, paramRank)) { 8 | throw new Error("expected weightMap[" + originalPath + "] to be a Tensor" + paramRank + "D, instead have " + tensor); 9 | } 10 | paramMappings.push({ originalPath: originalPath, paramPath: mappedPath || originalPath }); 11 | return tensor; 12 | }; 13 | } 14 | exports.extractWeightEntryFactory = extractWeightEntryFactory; 15 | //# sourceMappingURL=extractWeightEntryFactory.js.map -------------------------------------------------------------------------------- /build/commonjs/common/extractWeightEntryFactory.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"extractWeightEntryFactory.js","sourceRoot":"","sources":["../../../src/common/extractWeightEntryFactory.ts"],"names":[],"mappings":";;AAAA,kCAAoC;AAGpC,SAAgB,yBAAyB,CAAC,SAAc,EAAE,aAA6B;IAErF,OAAO,UAAa,YAAoB,EAAE,SAAiB,EAAE,UAAmB;QAC9E,IAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAAA;QAEtC,IAAI,CAAC,gBAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,wBAAsB,YAAY,wBAAmB,SAAS,wBAAmB,MAAQ,CAAC,CAAA;SAC3G;QAED,aAAa,CAAC,IAAI,CAChB,EAAE,YAAY,cAAA,EAAE,SAAS,EAAE,UAAU,IAAI,YAAY,EAAE,CACxD,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AAEH,CAAC;AAhBD,8DAgBC"} -------------------------------------------------------------------------------- /build/commonjs/common/extractWeightsFactory.d.ts: -------------------------------------------------------------------------------- 1 | export declare function extractWeightsFactory(weights: Float32Array): { 2 | extractWeights: (numWeights: number) => Float32Array; 3 | getRemainingWeights: () => Float32Array; 4 | }; 5 | -------------------------------------------------------------------------------- /build/commonjs/common/extractWeightsFactory.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | function extractWeightsFactory(weights) { 4 | var remainingWeights = weights; 5 | function extractWeights(numWeights) { 6 | var ret = remainingWeights.slice(0, numWeights); 7 | remainingWeights = remainingWeights.slice(numWeights); 8 | return ret; 9 | } 10 | function getRemainingWeights() { 11 | return remainingWeights; 12 | } 13 | return { 14 | extractWeights: extractWeights, 15 | getRemainingWeights: getRemainingWeights 16 | }; 17 | } 18 | exports.extractWeightsFactory = extractWeightsFactory; 19 | //# sourceMappingURL=extractWeightsFactory.js.map -------------------------------------------------------------------------------- /build/commonjs/common/extractWeightsFactory.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"extractWeightsFactory.js","sourceRoot":"","sources":["../../../src/common/extractWeightsFactory.ts"],"names":[],"mappings":";;AAAA,SAAgB,qBAAqB,CAAC,OAAqB;IACzD,IAAI,gBAAgB,GAAG,OAAO,CAAA;IAE9B,SAAS,cAAc,CAAC,UAAkB;QACxC,IAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;QACjD,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACrD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,SAAS,mBAAmB;QAC1B,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,OAAO;QACL,cAAc,gBAAA;QACd,mBAAmB,qBAAA;KACpB,CAAA;AACH,CAAC;AAjBD,sDAiBC"} -------------------------------------------------------------------------------- /build/commonjs/common/getModelUris.d.ts: -------------------------------------------------------------------------------- 1 | export declare function getModelUris(uri: string | undefined, defaultModelName: string): { 2 | modelBaseUri: string; 3 | manifestUri: string; 4 | }; 5 | -------------------------------------------------------------------------------- /build/commonjs/common/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './convLayer'; 2 | export * from './disposeUnusedWeightTensors'; 3 | export * from './extractConvParamsFactory'; 4 | export * from './extractFCParamsFactory'; 5 | export * from './extractSeparableConvParamsFactory'; 6 | export * from './extractWeightEntryFactory'; 7 | export * from './extractWeightsFactory'; 8 | export * from './getModelUris'; 9 | export * from './types'; 10 | -------------------------------------------------------------------------------- /build/commonjs/common/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | tslib_1.__exportStar(require("./convLayer"), exports); 5 | tslib_1.__exportStar(require("./disposeUnusedWeightTensors"), exports); 6 | tslib_1.__exportStar(require("./extractConvParamsFactory"), exports); 7 | tslib_1.__exportStar(require("./extractFCParamsFactory"), exports); 8 | tslib_1.__exportStar(require("./extractSeparableConvParamsFactory"), exports); 9 | tslib_1.__exportStar(require("./extractWeightEntryFactory"), exports); 10 | tslib_1.__exportStar(require("./extractWeightsFactory"), exports); 11 | tslib_1.__exportStar(require("./getModelUris"), exports); 12 | tslib_1.__exportStar(require("./types"), exports); 13 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/commonjs/common/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":";;;AAAA,sDAA2B;AAC3B,uEAA4C;AAC5C,qEAA0C;AAC1C,mEAAwC;AACxC,8EAAmD;AACnD,sEAA2C;AAC3C,kEAAuC;AACvC,yDAA8B;AAC9B,kDAAuB"} -------------------------------------------------------------------------------- /build/commonjs/common/types.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export declare type ExtractWeightsFunction = (numWeights: number) => Float32Array; 3 | export declare type ParamMapping = { 4 | originalPath?: string; 5 | paramPath: string; 6 | }; 7 | export declare type ConvParams = { 8 | filters: tf.Tensor4D; 9 | bias: tf.Tensor1D; 10 | }; 11 | export declare type FCParams = { 12 | weights: tf.Tensor2D; 13 | bias: tf.Tensor1D; 14 | }; 15 | export declare class SeparableConvParams { 16 | depthwise_filter: tf.Tensor4D; 17 | pointwise_filter: tf.Tensor4D; 18 | bias: tf.Tensor1D; 19 | constructor(depthwise_filter: tf.Tensor4D, pointwise_filter: tf.Tensor4D, bias: tf.Tensor1D); 20 | } 21 | -------------------------------------------------------------------------------- /build/commonjs/common/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var SeparableConvParams = /** @class */ (function () { 4 | function SeparableConvParams(depthwise_filter, pointwise_filter, bias) { 5 | this.depthwise_filter = depthwise_filter; 6 | this.pointwise_filter = pointwise_filter; 7 | this.bias = bias; 8 | } 9 | return SeparableConvParams; 10 | }()); 11 | exports.SeparableConvParams = SeparableConvParams; 12 | //# sourceMappingURL=types.js.map -------------------------------------------------------------------------------- /build/commonjs/common/types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":";;AAmBA;IACE,6BACS,gBAA6B,EAC7B,gBAA6B,EAC7B,IAAiB;QAFjB,qBAAgB,GAAhB,gBAAgB,CAAa;QAC7B,qBAAgB,GAAhB,gBAAgB,CAAa;QAC7B,SAAI,GAAJ,IAAI,CAAa;IACvB,CAAC;IACN,0BAAC;AAAD,CAAC,AAND,IAMC;AANY,kDAAmB"} -------------------------------------------------------------------------------- /build/commonjs/dom/awaitMediaLoaded.d.ts: -------------------------------------------------------------------------------- 1 | export declare function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement): Promise; 2 | -------------------------------------------------------------------------------- /build/commonjs/dom/awaitMediaLoaded.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"awaitMediaLoaded.js","sourceRoot":"","sources":["../../../src/dom/awaitMediaLoaded.ts"],"names":[],"mappings":";;AAAA,8BAA6B;AAC7B,iDAAgD;AAEhD,SAAgB,gBAAgB,CAAC,KAA8D;IAE7F,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QACjC,IAAI,KAAK,YAAY,SAAG,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI,6BAAa,CAAC,KAAK,CAAC,EAAE;YAChE,OAAO,OAAO,EAAE,CAAA;SACjB;QAED,SAAS,MAAM,CAAC,CAAQ;YACtB,IAAI,CAAC,CAAC,CAAC,aAAa;gBAAE,OAAM;YAC5B,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACnD,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACrD,OAAO,CAAC,CAAC,CAAC,CAAA;QACZ,CAAC;QAED,SAAS,OAAO,CAAC,CAAQ;YACvB,IAAI,CAAC,CAAC,CAAC,aAAa;gBAAE,OAAM;YAC5B,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACnD,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACrD,MAAM,CAAC,CAAC,CAAC,CAAA;QACX,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACtC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC;AAxBD,4CAwBC"} -------------------------------------------------------------------------------- /build/commonjs/dom/bufferToImage.d.ts: -------------------------------------------------------------------------------- 1 | export declare function bufferToImage(buf: Blob): Promise; 2 | -------------------------------------------------------------------------------- /build/commonjs/dom/bufferToImage.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var env_1 = require("../env"); 4 | function bufferToImage(buf) { 5 | return new Promise(function (resolve, reject) { 6 | if (!(buf instanceof Blob)) { 7 | return reject('bufferToImage - expected buf to be of type: Blob'); 8 | } 9 | var reader = new FileReader(); 10 | reader.onload = function () { 11 | if (typeof reader.result !== 'string') { 12 | return reject('bufferToImage - expected reader.result to be a string, in onload'); 13 | } 14 | var img = env_1.env.getEnv().createImageElement(); 15 | img.onload = function () { return resolve(img); }; 16 | img.onerror = reject; 17 | img.src = reader.result; 18 | }; 19 | reader.onerror = reject; 20 | reader.readAsDataURL(buf); 21 | }); 22 | } 23 | exports.bufferToImage = bufferToImage; 24 | //# sourceMappingURL=bufferToImage.js.map -------------------------------------------------------------------------------- /build/commonjs/dom/bufferToImage.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"bufferToImage.js","sourceRoot":"","sources":["../../../src/dom/bufferToImage.ts"],"names":[],"mappings":";;AAAA,8BAA6B;AAE7B,SAAgB,aAAa,CAAC,GAAS;IACrC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QACjC,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,EAAE;YAC1B,OAAO,MAAM,CAAC,kDAAkD,CAAC,CAAA;SAClE;QAED,IAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;QAC/B,MAAM,CAAC,MAAM,GAAG;YACd,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;gBACrC,OAAO,MAAM,CAAC,kEAAkE,CAAC,CAAA;aAClF;YAED,IAAM,GAAG,GAAG,SAAG,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE,CAAA;YAC7C,GAAG,CAAC,MAAM,GAAG,cAAM,OAAA,OAAO,CAAC,GAAG,CAAC,EAAZ,CAAY,CAAA;YAC/B,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;YACpB,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAA;QACzB,CAAC,CAAA;QACD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAA;QACvB,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC;AApBD,sCAoBC"} -------------------------------------------------------------------------------- /build/commonjs/dom/createCanvas.d.ts: -------------------------------------------------------------------------------- 1 | import { IDimensions } from '../classes/Dimensions'; 2 | export declare function createCanvas({ width, height }: IDimensions): HTMLCanvasElement; 3 | export declare function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement; 4 | -------------------------------------------------------------------------------- /build/commonjs/dom/createCanvas.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"createCanvas.js","sourceRoot":"","sources":["../../../src/dom/createCanvas.ts"],"names":[],"mappings":";;AACA,8BAA6B;AAC7B,6DAA4D;AAC5D,2DAA0D;AAC1D,iDAAgD;AAEhD,SAAgB,YAAY,CAAC,EAA8B;QAA5B,gBAAK,EAAE,kBAAM;IAElC,IAAA,4DAAmB,CAAiB;IAC5C,IAAM,MAAM,GAAG,mBAAmB,EAAE,CAAA;IACpC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,OAAO,MAAM,CAAA;AACf,CAAC;AAPD,oCAOC;AAED,SAAgB,qBAAqB,CAAC,KAAsD,EAAE,IAAkB;IAEtG,IAAA,wCAAS,CAAiB;IAElC,IAAI,CAAC,CAAC,KAAK,YAAY,SAAS,CAAC,IAAI,CAAC,6BAAa,CAAC,KAAK,CAAC,EAAE;QAC1D,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;KAC9E;IAEK,IAAA,2DAAqD,EAAnD,gBAAK,EAAE,kBAA4C,CAAA;IAC3D,IAAM,MAAM,GAAG,YAAY,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;IAE9C,IAAI,KAAK,YAAY,SAAS,EAAE;QAC9B,yCAAmB,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;KACtD;SAAM;QACL,yCAAmB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;KAClE;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAjBD,sDAiBC"} -------------------------------------------------------------------------------- /build/commonjs/dom/fetchImage.d.ts: -------------------------------------------------------------------------------- 1 | export declare function fetchImage(uri: string): Promise; 2 | -------------------------------------------------------------------------------- /build/commonjs/dom/fetchImage.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"fetchImage.js","sourceRoot":"","sources":["../../../src/dom/fetchImage.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAChD,+CAA8C;AAE9C,SAAsB,UAAU,CAAC,GAAW;;;;;wBAC9B,qBAAM,2BAAY,CAAC,GAAG,CAAC,EAAA;;oBAA7B,GAAG,GAAG,SAAuB;oBACtB,qBAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAA;;oBAAzB,IAAI,GAAG,SAAkB;oBAE/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;wBACnC,MAAM,IAAI,KAAK,CAAC,0EAAwE,IAAI,CAAC,IAAI,mBAAc,GAAG,CAAC,GAAK,CAAC,CAAA;qBAC1H;oBACD,sBAAO,6BAAa,CAAC,IAAI,CAAC,EAAA;;;;CAC3B;AARD,gCAQC"} -------------------------------------------------------------------------------- /build/commonjs/dom/fetchJson.d.ts: -------------------------------------------------------------------------------- 1 | export declare function fetchJson(uri: string): Promise; 2 | -------------------------------------------------------------------------------- /build/commonjs/dom/fetchJson.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | var fetchOrThrow_1 = require("./fetchOrThrow"); 5 | function fetchJson(uri) { 6 | return tslib_1.__awaiter(this, void 0, void 0, function () { 7 | return tslib_1.__generator(this, function (_a) { 8 | switch (_a.label) { 9 | case 0: return [4 /*yield*/, fetchOrThrow_1.fetchOrThrow(uri)]; 10 | case 1: return [2 /*return*/, (_a.sent()).json()]; 11 | } 12 | }); 13 | }); 14 | } 15 | exports.fetchJson = fetchJson; 16 | //# sourceMappingURL=fetchJson.js.map -------------------------------------------------------------------------------- /build/commonjs/dom/fetchJson.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"fetchJson.js","sourceRoot":"","sources":["../../../src/dom/fetchJson.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAE9C,SAAsB,SAAS,CAAI,GAAW;;;;wBACpC,qBAAM,2BAAY,CAAC,GAAG,CAAC,EAAA;wBAA/B,sBAAO,CAAC,SAAuB,CAAC,CAAC,IAAI,EAAE,EAAA;;;;CACxC;AAFD,8BAEC"} -------------------------------------------------------------------------------- /build/commonjs/dom/fetchNetWeights.d.ts: -------------------------------------------------------------------------------- 1 | export declare function fetchNetWeights(uri: string): Promise; 2 | -------------------------------------------------------------------------------- /build/commonjs/dom/fetchNetWeights.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | var fetchOrThrow_1 = require("./fetchOrThrow"); 5 | function fetchNetWeights(uri) { 6 | return tslib_1.__awaiter(this, void 0, void 0, function () { 7 | var _a; 8 | return tslib_1.__generator(this, function (_b) { 9 | switch (_b.label) { 10 | case 0: 11 | _a = Float32Array.bind; 12 | return [4 /*yield*/, fetchOrThrow_1.fetchOrThrow(uri)]; 13 | case 1: return [4 /*yield*/, (_b.sent()).arrayBuffer()]; 14 | case 2: return [2 /*return*/, new (_a.apply(Float32Array, [void 0, _b.sent()]))()]; 15 | } 16 | }); 17 | }); 18 | } 19 | exports.fetchNetWeights = fetchNetWeights; 20 | //# sourceMappingURL=fetchNetWeights.js.map -------------------------------------------------------------------------------- /build/commonjs/dom/fetchNetWeights.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"fetchNetWeights.js","sourceRoot":"","sources":["../../../src/dom/fetchNetWeights.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAE9C,SAAsB,eAAe,CAAC,GAAW;;;;;;yBACpC,YAAY;oBAAQ,qBAAM,2BAAY,CAAC,GAAG,CAAC,EAAA;wBAA9B,qBAAM,CAAC,SAAuB,CAAC,CAAC,WAAW,EAAE,EAAA;wBAArE,sBAAO,cAAI,YAAY,WAAC,SAA6C,KAAC,EAAA;;;;CACvE;AAFD,0CAEC"} -------------------------------------------------------------------------------- /build/commonjs/dom/fetchOrThrow.d.ts: -------------------------------------------------------------------------------- 1 | export declare function fetchOrThrow(url: string, init?: RequestInit): Promise; 2 | -------------------------------------------------------------------------------- /build/commonjs/dom/fetchOrThrow.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | var env_1 = require("../env"); 5 | function fetchOrThrow(url, init) { 6 | return tslib_1.__awaiter(this, void 0, void 0, function () { 7 | var fetch, res; 8 | return tslib_1.__generator(this, function (_a) { 9 | switch (_a.label) { 10 | case 0: 11 | fetch = env_1.env.getEnv().fetch; 12 | return [4 /*yield*/, fetch(url, init)]; 13 | case 1: 14 | res = _a.sent(); 15 | if (!(res.status < 400)) { 16 | throw new Error("failed to fetch: (" + res.status + ") " + res.statusText + ", from url: " + res.url); 17 | } 18 | return [2 /*return*/, res]; 19 | } 20 | }); 21 | }); 22 | } 23 | exports.fetchOrThrow = fetchOrThrow; 24 | //# sourceMappingURL=fetchOrThrow.js.map -------------------------------------------------------------------------------- /build/commonjs/dom/fetchOrThrow.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"fetchOrThrow.js","sourceRoot":"","sources":["../../../src/dom/fetchOrThrow.ts"],"names":[],"mappings":";;;AAAA,8BAA6B;AAE7B,SAAsB,YAAY,CAChC,GAAW,EACX,IAAkB;;;;;;oBAGZ,KAAK,GAAG,SAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAA;oBACpB,qBAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAA;;oBAA5B,GAAG,GAAG,SAAsB;oBAClC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;wBACvB,MAAM,IAAI,KAAK,CAAC,uBAAqB,GAAG,CAAC,MAAM,UAAK,GAAG,CAAC,UAAU,oBAAe,GAAG,CAAC,GAAK,CAAC,CAAA;qBAC5F;oBACD,sBAAO,GAAG,EAAA;;;;CACX;AAXD,oCAWC"} -------------------------------------------------------------------------------- /build/commonjs/dom/getContext2dOrThrow.d.ts: -------------------------------------------------------------------------------- 1 | export declare function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D; 2 | -------------------------------------------------------------------------------- /build/commonjs/dom/getContext2dOrThrow.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var env_1 = require("../env"); 4 | var resolveInput_1 = require("./resolveInput"); 5 | function getContext2dOrThrow(canvasArg) { 6 | var _a = env_1.env.getEnv(), Canvas = _a.Canvas, CanvasRenderingContext2D = _a.CanvasRenderingContext2D; 7 | if (canvasArg instanceof CanvasRenderingContext2D) { 8 | return canvasArg; 9 | } 10 | var canvas = resolveInput_1.resolveInput(canvasArg); 11 | if (!(canvas instanceof Canvas)) { 12 | throw new Error('resolveContext2d - expected canvas to be of instance of Canvas'); 13 | } 14 | var ctx = canvas.getContext('2d'); 15 | if (!ctx) { 16 | throw new Error('resolveContext2d - canvas 2d context is null'); 17 | } 18 | return ctx; 19 | } 20 | exports.getContext2dOrThrow = getContext2dOrThrow; 21 | //# sourceMappingURL=getContext2dOrThrow.js.map -------------------------------------------------------------------------------- /build/commonjs/dom/getContext2dOrThrow.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"getContext2dOrThrow.js","sourceRoot":"","sources":["../../../src/dom/getContext2dOrThrow.ts"],"names":[],"mappings":";;AAAA,8BAA6B;AAC7B,+CAA8C;AAE9C,SAAgB,mBAAmB,CAAC,SAAgE;IAE5F,IAAA,uBAAmD,EAAjD,kBAAM,EAAE,sDAAyC,CAAA;IAEzD,IAAI,SAAS,YAAY,wBAAwB,EAAE;QACjD,OAAO,SAAS,CAAA;KACjB;IAED,IAAM,MAAM,GAAG,2BAAY,CAAC,SAAS,CAAC,CAAA;IAEtC,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,CAAC,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;KAClF;IAED,IAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;KAChE;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AApBD,kDAoBC"} -------------------------------------------------------------------------------- /build/commonjs/dom/getMediaDimensions.d.ts: -------------------------------------------------------------------------------- 1 | import { Dimensions, IDimensions } from '../classes/Dimensions'; 2 | export declare function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions; 3 | -------------------------------------------------------------------------------- /build/commonjs/dom/getMediaDimensions.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var Dimensions_1 = require("../classes/Dimensions"); 4 | var env_1 = require("../env"); 5 | function getMediaDimensions(input) { 6 | var _a = env_1.env.getEnv(), Image = _a.Image, Video = _a.Video; 7 | if (input instanceof Image) { 8 | return new Dimensions_1.Dimensions(input.naturalWidth, input.naturalHeight); 9 | } 10 | if (input instanceof Video) { 11 | return new Dimensions_1.Dimensions(input.videoWidth, input.videoHeight); 12 | } 13 | return new Dimensions_1.Dimensions(input.width, input.height); 14 | } 15 | exports.getMediaDimensions = getMediaDimensions; 16 | //# sourceMappingURL=getMediaDimensions.js.map -------------------------------------------------------------------------------- /build/commonjs/dom/getMediaDimensions.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"getMediaDimensions.js","sourceRoot":"","sources":["../../../src/dom/getMediaDimensions.ts"],"names":[],"mappings":";;AAAA,oDAAgE;AAChE,8BAA6B;AAE7B,SAAgB,kBAAkB,CAAC,KAA4E;IAEvG,IAAA,uBAA+B,EAA7B,gBAAK,EAAE,gBAAsB,CAAA;IAErC,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO,IAAI,uBAAU,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;KAC/D;IACD,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO,IAAI,uBAAU,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;KAC3D;IACD,OAAO,IAAI,uBAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;AAClD,CAAC;AAXD,gDAWC"} -------------------------------------------------------------------------------- /build/commonjs/dom/imageTensorToCanvas.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export declare function imageTensorToCanvas(imgTensor: tf.Tensor, canvas?: HTMLCanvasElement): Promise; 3 | -------------------------------------------------------------------------------- /build/commonjs/dom/imageTensorToCanvas.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"imageTensorToCanvas.js","sourceRoot":"","sources":["../../../src/dom/imageTensorToCanvas.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAE5C,8BAA6B;AAC7B,kCAAsC;AAEtC,SAAsB,mBAAmB,CACvC,SAAoB,EACpB,MAA0B;;;;;;oBAGpB,YAAY,GAAG,MAAM,IAAI,SAAG,CAAC,MAAM,EAAE,CAAC,mBAAmB,EAAE,CAAA;oBAE3D,KAA+B,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAlF,MAAM,QAAA,EAAE,KAAK,QAAA,EAAE,WAAW,QAAA,CAAwD;oBACnF,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE,EAAlD,CAAkD,CAAC,CAAA;oBACrF,qBAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,EAAA;;oBAApD,SAAoD,CAAA;oBAEpD,WAAW,CAAC,OAAO,EAAE,CAAA;oBAErB,sBAAO,YAAY,EAAA;;;;CACpB;AAdD,kDAcC"} -------------------------------------------------------------------------------- /build/commonjs/dom/imageToSquare.d.ts: -------------------------------------------------------------------------------- 1 | export declare function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage?: boolean): HTMLCanvasElement; 2 | -------------------------------------------------------------------------------- /build/commonjs/dom/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './awaitMediaLoaded'; 2 | export * from './bufferToImage'; 3 | export * from './createCanvas'; 4 | export * from './fetchImage'; 5 | export * from './fetchJson'; 6 | export * from './fetchNetWeights'; 7 | export * from './fetchOrThrow'; 8 | export * from './getContext2dOrThrow'; 9 | export * from './getMediaDimensions'; 10 | export * from './imageTensorToCanvas'; 11 | export * from './imageToSquare'; 12 | export * from './isMediaElement'; 13 | export * from './isMediaLoaded'; 14 | export * from './loadWeightMap'; 15 | export * from './matchDimensions'; 16 | export * from './NetInput'; 17 | export * from './resolveInput'; 18 | export * from './toNetInput'; 19 | export * from './types'; 20 | -------------------------------------------------------------------------------- /build/commonjs/dom/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dom/index.ts"],"names":[],"mappings":";;;AAAA,6DAAkC;AAClC,0DAA+B;AAC/B,yDAA8B;AAC9B,uDAA4B;AAC5B,sDAA2B;AAC3B,4DAAiC;AACjC,yDAA8B;AAC9B,gEAAqC;AACrC,+DAAoC;AACpC,gEAAqC;AACrC,0DAA+B;AAC/B,2DAAgC;AAChC,0DAA+B;AAC/B,0DAA+B;AAC/B,4DAAiC;AACjC,qDAA0B;AAC1B,yDAA8B;AAC9B,uDAA4B"} -------------------------------------------------------------------------------- /build/commonjs/dom/isMediaElement.d.ts: -------------------------------------------------------------------------------- 1 | export declare function isMediaElement(input: any): boolean; 2 | -------------------------------------------------------------------------------- /build/commonjs/dom/isMediaElement.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var env_1 = require("../env"); 4 | function isMediaElement(input) { 5 | var _a = env_1.env.getEnv(), Image = _a.Image, Canvas = _a.Canvas, Video = _a.Video; 6 | return input instanceof Image 7 | || input instanceof Canvas 8 | || input instanceof Video; 9 | } 10 | exports.isMediaElement = isMediaElement; 11 | //# sourceMappingURL=isMediaElement.js.map -------------------------------------------------------------------------------- /build/commonjs/dom/isMediaElement.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"isMediaElement.js","sourceRoot":"","sources":["../../../src/dom/isMediaElement.ts"],"names":[],"mappings":";;AAAA,8BAA6B;AAE7B,SAAgB,cAAc,CAAC,KAAU;IAEjC,IAAA,uBAAuC,EAArC,gBAAK,EAAE,kBAAM,EAAE,gBAAsB,CAAA;IAE7C,OAAO,KAAK,YAAY,KAAK;WACxB,KAAK,YAAY,MAAM;WACvB,KAAK,YAAY,KAAK,CAAA;AAC7B,CAAC;AAPD,wCAOC"} -------------------------------------------------------------------------------- /build/commonjs/dom/isMediaLoaded.d.ts: -------------------------------------------------------------------------------- 1 | export declare function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement): boolean; 2 | -------------------------------------------------------------------------------- /build/commonjs/dom/isMediaLoaded.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var env_1 = require("../env"); 4 | function isMediaLoaded(media) { 5 | var _a = env_1.env.getEnv(), Image = _a.Image, Video = _a.Video; 6 | return (media instanceof Image && media.complete) 7 | || (media instanceof Video && media.readyState >= 3); 8 | } 9 | exports.isMediaLoaded = isMediaLoaded; 10 | //# sourceMappingURL=isMediaLoaded.js.map -------------------------------------------------------------------------------- /build/commonjs/dom/isMediaLoaded.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"isMediaLoaded.js","sourceRoot":"","sources":["../../../src/dom/isMediaLoaded.ts"],"names":[],"mappings":";;AAAA,8BAA6B;AAE7B,SAAgB,aAAa,CAAC,KAA0C;IAEhE,IAAA,uBAA+B,EAA7B,gBAAK,EAAE,gBAAsB,CAAA;IAErC,OAAO,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC;WAC5C,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAA;AACxD,CAAC;AAND,sCAMC"} -------------------------------------------------------------------------------- /build/commonjs/dom/loadWeightMap.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export declare function loadWeightMap(uri: string | undefined, defaultModelName: string): Promise; 3 | -------------------------------------------------------------------------------- /build/commonjs/dom/loadWeightMap.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"loadWeightMap.js","sourceRoot":"","sources":["../../../src/dom/loadWeightMap.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAE5C,uDAAsD;AACtD,yCAAwC;AAExC,SAAsB,aAAa,CACjC,GAAuB,EACvB,gBAAwB;;;;;;oBAElB,KAAgC,2BAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAjE,WAAW,iBAAA,EAAE,YAAY,kBAAA,CAAwC;oBAExD,qBAAM,qBAAS,CAA8B,WAAW,CAAC,EAAA;;oBAApE,QAAQ,GAAG,SAAyD;oBAE1E,sBAAO,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAA;;;;CACjD;AATD,sCASC"} -------------------------------------------------------------------------------- /build/commonjs/dom/matchDimensions.d.ts: -------------------------------------------------------------------------------- 1 | import { IDimensions } from '../classes'; 2 | export declare function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions?: boolean): { 3 | width: number; 4 | height: number; 5 | }; 6 | -------------------------------------------------------------------------------- /build/commonjs/dom/matchDimensions.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var getMediaDimensions_1 = require("./getMediaDimensions"); 4 | function matchDimensions(input, reference, useMediaDimensions) { 5 | if (useMediaDimensions === void 0) { useMediaDimensions = false; } 6 | var _a = useMediaDimensions 7 | ? getMediaDimensions_1.getMediaDimensions(reference) 8 | : reference, width = _a.width, height = _a.height; 9 | input.width = width; 10 | input.height = height; 11 | return { width: width, height: height }; 12 | } 13 | exports.matchDimensions = matchDimensions; 14 | //# sourceMappingURL=matchDimensions.js.map -------------------------------------------------------------------------------- /build/commonjs/dom/matchDimensions.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"matchDimensions.js","sourceRoot":"","sources":["../../../src/dom/matchDimensions.ts"],"names":[],"mappings":";;AACA,2DAA0D;AAE1D,SAAgB,eAAe,CAAC,KAAkB,EAAE,SAAsB,EAAE,kBAAmC;IAAnC,mCAAA,EAAA,0BAAmC;IACvG,IAAA;;mBAEO,EAFL,gBAAK,EAAE,kBAEF,CAAA;IACb,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;IACnB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;IACrB,OAAO,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAA;AAC1B,CAAC;AAPD,0CAOC"} -------------------------------------------------------------------------------- /build/commonjs/dom/resolveInput.d.ts: -------------------------------------------------------------------------------- 1 | export declare function resolveInput(arg: string | any): any; 2 | -------------------------------------------------------------------------------- /build/commonjs/dom/resolveInput.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var env_1 = require("../env"); 4 | function resolveInput(arg) { 5 | if (!env_1.env.isNodejs() && typeof arg === 'string') { 6 | return document.getElementById(arg); 7 | } 8 | return arg; 9 | } 10 | exports.resolveInput = resolveInput; 11 | //# sourceMappingURL=resolveInput.js.map -------------------------------------------------------------------------------- /build/commonjs/dom/resolveInput.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"resolveInput.js","sourceRoot":"","sources":["../../../src/dom/resolveInput.ts"],"names":[],"mappings":";;AAAA,8BAA6B;AAE7B,SAAgB,YAAY,CAAC,GAAiB;IAC5C,IAAI,CAAC,SAAG,CAAC,QAAQ,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC9C,OAAO,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;KACpC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AALD,oCAKC"} -------------------------------------------------------------------------------- /build/commonjs/dom/toNetInput.d.ts: -------------------------------------------------------------------------------- 1 | import { NetInput } from './NetInput'; 2 | import { TNetInput } from './types'; 3 | /** 4 | * Validates the input to make sure, they are valid net inputs and awaits all media elements 5 | * to be finished loading. 6 | * 7 | * @param input The input, which can be a media element or an array of different media elements. 8 | * @returns A NetInput instance, which can be passed into one of the neural networks. 9 | */ 10 | export declare function toNetInput(inputs: TNetInput): Promise; 11 | -------------------------------------------------------------------------------- /build/commonjs/dom/types.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | import { NetInput } from './NetInput'; 3 | export declare type TMediaElement = HTMLImageElement | HTMLVideoElement | HTMLCanvasElement; 4 | export declare type TResolvedNetInput = TMediaElement | tf.Tensor3D | tf.Tensor4D; 5 | export declare type TNetInputArg = string | TResolvedNetInput; 6 | export declare type TNetInput = TNetInputArg | Array | NetInput | tf.Tensor4D; 7 | -------------------------------------------------------------------------------- /build/commonjs/dom/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | //# sourceMappingURL=types.js.map -------------------------------------------------------------------------------- /build/commonjs/dom/types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dom/types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /build/commonjs/draw/DrawBox.d.ts: -------------------------------------------------------------------------------- 1 | import { Box, IBoundingBox, IRect } from '../classes'; 2 | import { DrawTextFieldOptions, IDrawTextFieldOptions } from './DrawTextField'; 3 | export interface IDrawBoxOptions { 4 | boxColor?: string; 5 | lineWidth?: number; 6 | drawLabelOptions?: IDrawTextFieldOptions; 7 | label?: string; 8 | } 9 | export declare class DrawBoxOptions { 10 | boxColor: string; 11 | lineWidth: number; 12 | drawLabelOptions: DrawTextFieldOptions; 13 | label?: string; 14 | constructor(options?: IDrawBoxOptions); 15 | } 16 | export declare class DrawBox { 17 | box: Box; 18 | options: DrawBoxOptions; 19 | constructor(box: IBoundingBox | IRect, options?: IDrawBoxOptions); 20 | draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): void; 21 | } 22 | -------------------------------------------------------------------------------- /build/commonjs/draw/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './DrawBox'; 2 | export * from './DrawTextField'; 3 | -------------------------------------------------------------------------------- /build/commonjs/draw/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | tslib_1.__exportStar(require("./DrawBox"), exports); 5 | tslib_1.__exportStar(require("./DrawTextField"), exports); 6 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/commonjs/draw/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/draw/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,0DAA+B"} -------------------------------------------------------------------------------- /build/commonjs/env/createBrowserEnv.d.ts: -------------------------------------------------------------------------------- 1 | import { Environment } from './types'; 2 | export declare function createBrowserEnv(): Environment; 3 | -------------------------------------------------------------------------------- /build/commonjs/env/createBrowserEnv.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | function createBrowserEnv() { 4 | var fetch = window['fetch'] || function () { 5 | throw new Error('fetch - missing fetch implementation for browser environment'); 6 | }; 7 | var readFile = function () { 8 | throw new Error('readFile - filesystem not available for browser environment'); 9 | }; 10 | return { 11 | Canvas: HTMLCanvasElement, 12 | CanvasRenderingContext2D: CanvasRenderingContext2D, 13 | Image: HTMLImageElement, 14 | ImageData: ImageData, 15 | Video: HTMLVideoElement, 16 | createCanvasElement: function () { return document.createElement('canvas'); }, 17 | createImageElement: function () { return document.createElement('img'); }, 18 | fetch: fetch, 19 | readFile: readFile 20 | }; 21 | } 22 | exports.createBrowserEnv = createBrowserEnv; 23 | //# sourceMappingURL=createBrowserEnv.js.map -------------------------------------------------------------------------------- /build/commonjs/env/createBrowserEnv.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"createBrowserEnv.js","sourceRoot":"","sources":["../../../src/env/createBrowserEnv.ts"],"names":[],"mappings":";;AAEA,SAAgB,gBAAgB;IAE9B,IAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI;QAC/B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,IAAM,QAAQ,GAAG;QACf,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,OAAO;QACL,MAAM,EAAE,iBAAiB;QACzB,wBAAwB,EAAE,wBAAwB;QAClD,KAAK,EAAE,gBAAgB;QACvB,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,gBAAgB;QACvB,mBAAmB,EAAE,cAAM,OAAA,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAhC,CAAgC;QAC3D,kBAAkB,EAAE,cAAM,OAAA,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAA7B,CAA6B;QACvD,KAAK,OAAA;QACL,QAAQ,UAAA;KACT,CAAA;AACH,CAAC;AArBD,4CAqBC"} -------------------------------------------------------------------------------- /build/commonjs/env/createFileSystem.d.ts: -------------------------------------------------------------------------------- 1 | import { FileSystem } from './types'; 2 | export declare function createFileSystem(fs?: any): FileSystem; 3 | -------------------------------------------------------------------------------- /build/commonjs/env/createFileSystem.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | function createFileSystem(fs) { 4 | var requireFsError = ''; 5 | if (!fs) { 6 | try { 7 | fs = require('fs'); 8 | } 9 | catch (err) { 10 | requireFsError = err.toString(); 11 | } 12 | } 13 | var readFile = fs 14 | ? function (filePath) { 15 | return new Promise(function (res, rej) { 16 | fs.readFile(filePath, function (err, buffer) { 17 | return err ? rej(err) : res(buffer); 18 | }); 19 | }); 20 | } 21 | : function () { 22 | throw new Error("readFile - failed to require fs in nodejs environment with error: " + requireFsError); 23 | }; 24 | return { 25 | readFile: readFile 26 | }; 27 | } 28 | exports.createFileSystem = createFileSystem; 29 | //# sourceMappingURL=createFileSystem.js.map -------------------------------------------------------------------------------- /build/commonjs/env/createFileSystem.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"createFileSystem.js","sourceRoot":"","sources":["../../../src/env/createFileSystem.ts"],"names":[],"mappings":";;AAEA,SAAgB,gBAAgB,CAAC,EAAQ;IAEvC,IAAI,cAAc,GAAG,EAAE,CAAA;IAEvB,IAAI,CAAC,EAAE,EAAE;QACP,IAAI;YACF,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;SACnB;QAAC,OAAO,GAAG,EAAE;YACZ,cAAc,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;SAChC;KACF;IAED,IAAM,QAAQ,GAAG,EAAE;QACjB,CAAC,CAAC,UAAS,QAAgB;YACzB,OAAO,IAAI,OAAO,CAAS,UAAC,GAAG,EAAE,GAAG;gBAClC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAS,GAAQ,EAAE,MAAc;oBACrD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACrC,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,CAAC,CAAC;YACA,MAAM,IAAI,KAAK,CAAC,uEAAqE,cAAgB,CAAC,CAAA;QACxG,CAAC,CAAA;IAEH,OAAO;QACL,QAAQ,UAAA;KACT,CAAA;AACH,CAAC;AA3BD,4CA2BC"} -------------------------------------------------------------------------------- /build/commonjs/env/createNodejsEnv.d.ts: -------------------------------------------------------------------------------- 1 | import { Environment } from './types'; 2 | export declare function createNodejsEnv(): Environment; 3 | -------------------------------------------------------------------------------- /build/commonjs/env/index.d.ts: -------------------------------------------------------------------------------- 1 | import { createBrowserEnv } from './createBrowserEnv'; 2 | import { createFileSystem } from './createFileSystem'; 3 | import { createNodejsEnv } from './createNodejsEnv'; 4 | import { isBrowser } from './isBrowser'; 5 | import { isNodejs } from './isNodejs'; 6 | import { Environment } from './types'; 7 | declare function getEnv(): Environment; 8 | declare function setEnv(env: Environment): void; 9 | declare function initialize(): void; 10 | declare function monkeyPatch(env: Partial): void; 11 | export declare const env: { 12 | getEnv: typeof getEnv; 13 | setEnv: typeof setEnv; 14 | initialize: typeof initialize; 15 | createBrowserEnv: typeof createBrowserEnv; 16 | createFileSystem: typeof createFileSystem; 17 | createNodejsEnv: typeof createNodejsEnv; 18 | monkeyPatch: typeof monkeyPatch; 19 | isBrowser: typeof isBrowser; 20 | isNodejs: typeof isNodejs; 21 | }; 22 | export * from './types'; 23 | -------------------------------------------------------------------------------- /build/commonjs/env/isBrowser.d.ts: -------------------------------------------------------------------------------- 1 | export declare function isBrowser(): boolean; 2 | -------------------------------------------------------------------------------- /build/commonjs/env/isBrowser.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | function isBrowser() { 4 | return typeof window === 'object' 5 | && typeof document !== 'undefined' 6 | && typeof HTMLImageElement !== 'undefined' 7 | && typeof HTMLCanvasElement !== 'undefined' 8 | && typeof HTMLVideoElement !== 'undefined' 9 | && typeof ImageData !== 'undefined' 10 | && typeof CanvasRenderingContext2D !== 'undefined'; 11 | } 12 | exports.isBrowser = isBrowser; 13 | //# sourceMappingURL=isBrowser.js.map -------------------------------------------------------------------------------- /build/commonjs/env/isBrowser.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"isBrowser.js","sourceRoot":"","sources":["../../../src/env/isBrowser.ts"],"names":[],"mappings":";;AAAA,SAAgB,SAAS;IACvB,OAAO,OAAO,MAAM,KAAK,QAAQ;WAC5B,OAAO,QAAQ,KAAK,WAAW;WAC/B,OAAO,gBAAgB,KAAK,WAAW;WACvC,OAAO,iBAAiB,KAAK,WAAW;WACxC,OAAO,gBAAgB,KAAK,WAAW;WACvC,OAAO,SAAS,KAAK,WAAW;WAChC,OAAO,wBAAwB,KAAK,WAAW,CAAA;AACtD,CAAC;AARD,8BAQC"} -------------------------------------------------------------------------------- /build/commonjs/env/isNodejs.d.ts: -------------------------------------------------------------------------------- 1 | export declare function isNodejs(): boolean; 2 | -------------------------------------------------------------------------------- /build/commonjs/env/isNodejs.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | function isNodejs() { 4 | return typeof global === 'object' 5 | && typeof require === 'function' 6 | && typeof module !== 'undefined' 7 | // issues with gatsby.js: module.exports is undefined 8 | // && !!module.exports 9 | && typeof process !== 'undefined' && !!process.version; 10 | } 11 | exports.isNodejs = isNodejs; 12 | //# sourceMappingURL=isNodejs.js.map -------------------------------------------------------------------------------- /build/commonjs/env/isNodejs.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"isNodejs.js","sourceRoot":"","sources":["../../../src/env/isNodejs.ts"],"names":[],"mappings":";;AAAA,SAAgB,QAAQ;IACtB,OAAO,OAAO,MAAM,KAAK,QAAQ;WAC5B,OAAO,OAAO,KAAK,UAAU;WAC7B,OAAO,MAAM,KAAK,WAAW;QAChC,qDAAqD;QACrD,sBAAsB;WACnB,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;AAC1D,CAAC;AAPD,4BAOC"} -------------------------------------------------------------------------------- /build/commonjs/env/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export declare type FileSystem = { 3 | readFile: (filePath: string) => Promise; 4 | }; 5 | export declare type Environment = FileSystem & { 6 | Canvas: typeof HTMLCanvasElement; 7 | CanvasRenderingContext2D: typeof CanvasRenderingContext2D; 8 | Image: typeof HTMLImageElement; 9 | ImageData: typeof ImageData; 10 | Video: typeof HTMLVideoElement; 11 | createCanvasElement: () => HTMLCanvasElement; 12 | createImageElement: () => HTMLImageElement; 13 | fetch: (url: string, init?: RequestInit) => Promise; 14 | }; 15 | -------------------------------------------------------------------------------- /build/commonjs/env/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | //# sourceMappingURL=types.js.map -------------------------------------------------------------------------------- /build/commonjs/env/types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/env/types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /build/commonjs/index.d.ts: -------------------------------------------------------------------------------- 1 | import * as draw from './draw'; 2 | import * as TfjsImageRecognitionBase from './tfjsImageRecognitionBase'; 3 | export * from './classes/index'; 4 | export * from './dom/index'; 5 | export * from './env/index'; 6 | export * from './ops/index'; 7 | export * from './utils'; 8 | export * from './NeuralNetwork'; 9 | export { draw }; 10 | export { TfjsImageRecognitionBase }; 11 | -------------------------------------------------------------------------------- /build/commonjs/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | var draw = require("./draw"); 5 | exports.draw = draw; 6 | var TfjsImageRecognitionBase = require("./tfjsImageRecognitionBase"); 7 | exports.TfjsImageRecognitionBase = TfjsImageRecognitionBase; 8 | tslib_1.__exportStar(require("./classes/index"), exports); 9 | tslib_1.__exportStar(require("./dom/index"), exports); 10 | tslib_1.__exportStar(require("./env/index"), exports); 11 | tslib_1.__exportStar(require("./ops/index"), exports); 12 | tslib_1.__exportStar(require("./utils"), exports); 13 | tslib_1.__exportStar(require("./NeuralNetwork"), exports); 14 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/commonjs/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,6BAA+B;AAUtB,oBAAI;AATb,qEAAuE;AAW9D,4DAAwB;AATjC,0DAAgC;AAChC,sDAA4B;AAC5B,sDAA4B;AAC5B,sDAA4B;AAC5B,kDAAwB;AACxB,0DAAgC"} -------------------------------------------------------------------------------- /build/commonjs/metrics/assignFalseAndTruePositives.d.ts: -------------------------------------------------------------------------------- 1 | import { Box } from '../classes/Box'; 2 | /** 3 | * Categorize predicted boxes of an image as true or false positives based on IOU to ground truth boxes. 4 | * 5 | * @param groundTruth Ground truth boxes for that image. 6 | * @param predictions Predicted boxes and for that image. 7 | * @param iouThreshold IOU threshold at which a predicted box is considered to be a true positive. 8 | * @returns AP 9 | */ 10 | export declare function assignFalseAndTruePositives(groundTruth: T[], predictions: S[], iouThreshold: number): { 11 | truePositives: S[]; 12 | falsePositives: S[]; 13 | }; 14 | export declare function createSortedIouPairs(groundTruth: T[], predictions: S[]): { 15 | pred: S; 16 | gt: T; 17 | iou: number; 18 | }[]; 19 | -------------------------------------------------------------------------------- /build/commonjs/metrics/averagePrecision.d.ts: -------------------------------------------------------------------------------- 1 | import { GroundTruthsAndPredictions } from './types'; 2 | /** 3 | * Calculates the average precision (AP) over 11 recall levels between [0, 1]. 4 | * 5 | * @param inputs Array of ground truth and predicted boxes of each image. 6 | * @param iouThreshold IOU threshold at which a predicted box is considered to be a true positive. 7 | * @returns AP 8 | */ 9 | export declare function averagePrecision(inputs: GroundTruthsAndPredictions[], iouThreshold: number): { 10 | averagePrec: number; 11 | accumulatedTps: number; 12 | accumulatedFps: number; 13 | }; 14 | -------------------------------------------------------------------------------- /build/commonjs/metrics/meanAveragePrecision.d.ts: -------------------------------------------------------------------------------- 1 | import { GroundTruthsAndPredictions } from './types'; 2 | /** 3 | * Calculates the mean average precision (mAP) over all classes. 4 | * 5 | * @param inputs Array ground truth and predicted boxes of each image labeled by class. 6 | * @param iouThreshold IOU threshold at which a predicted box is considered to be a true positive. 7 | * @returns mAP 8 | */ 9 | export declare function meanAveragePrecision(inputs: GroundTruthsAndPredictions[], iouThreshold?: number, classScoreThreshold?: number): { 10 | meanAveragePrec: number; 11 | averagePrecisionsByClass: { 12 | averagePrec: number; 13 | accumulatedTps: number; 14 | accumulatedFps: number; 15 | classLabel: number; 16 | }[]; 17 | }; 18 | -------------------------------------------------------------------------------- /build/commonjs/metrics/types.d.ts: -------------------------------------------------------------------------------- 1 | import { LabeledBox } from '../classes/LabeledBox'; 2 | import { PredictedBox } from '../classes/PredictedBox'; 3 | export declare type GroundTruthsAndPredictions = { 4 | groundTruth: LabeledBox[]; 5 | predictions: PredictedBox[]; 6 | }; 7 | -------------------------------------------------------------------------------- /build/commonjs/metrics/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | //# sourceMappingURL=types.js.map -------------------------------------------------------------------------------- /build/commonjs/metrics/types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/metrics/types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /build/commonjs/ops/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './iou'; 2 | export * from './minBbox'; 3 | export * from './nonMaxSuppression'; 4 | export * from './normalize'; 5 | export * from './padToSquare'; 6 | export * from './shuffleArray'; 7 | export declare function sigmoid(x: number): number; 8 | export declare function inverseSigmoid(x: number): number; 9 | -------------------------------------------------------------------------------- /build/commonjs/ops/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | tslib_1.__exportStar(require("./iou"), exports); 5 | tslib_1.__exportStar(require("./minBbox"), exports); 6 | tslib_1.__exportStar(require("./nonMaxSuppression"), exports); 7 | tslib_1.__exportStar(require("./normalize"), exports); 8 | tslib_1.__exportStar(require("./padToSquare"), exports); 9 | tslib_1.__exportStar(require("./shuffleArray"), exports); 10 | function sigmoid(x) { 11 | return 1 / (1 + Math.exp(-x)); 12 | } 13 | exports.sigmoid = sigmoid; 14 | function inverseSigmoid(x) { 15 | return Math.log(x / (1 - x)); 16 | } 17 | exports.inverseSigmoid = inverseSigmoid; 18 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/commonjs/ops/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ops/index.ts"],"names":[],"mappings":";;;AAAA,gDAAqB;AACrB,oDAAyB;AACzB,8DAAmC;AACnC,sDAA2B;AAC3B,wDAA6B;AAC7B,yDAA8B;AAE9B,SAAgB,OAAO,CAAC,CAAS;IAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/B,CAAC;AAFD,0BAEC;AAED,SAAgB,cAAc,CAAC,CAAS;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC;AAFD,wCAEC"} -------------------------------------------------------------------------------- /build/commonjs/ops/iou.d.ts: -------------------------------------------------------------------------------- 1 | import { Box } from '../classes/Box'; 2 | export declare function iou(box1: Box, box2: Box, isIOU?: boolean): number; 3 | -------------------------------------------------------------------------------- /build/commonjs/ops/iou.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | function iou(box1, box2, isIOU) { 4 | if (isIOU === void 0) { isIOU = true; } 5 | var width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left)); 6 | var height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top)); 7 | var interSection = width * height; 8 | return isIOU 9 | ? interSection / (box1.area + box2.area - interSection) 10 | : interSection / Math.min(box1.area, box2.area); 11 | } 12 | exports.iou = iou; 13 | //# sourceMappingURL=iou.js.map -------------------------------------------------------------------------------- /build/commonjs/ops/iou.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"iou.js","sourceRoot":"","sources":["../../../src/ops/iou.ts"],"names":[],"mappings":";;AAEA,SAAgB,GAAG,CAAC,IAAS,EAAE,IAAS,EAAE,KAAqB;IAArB,sBAAA,EAAA,YAAqB;IAC7D,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9F,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/F,IAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAA;IAEnC,OAAO,KAAK;QACV,CAAC,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACvD,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AACnD,CAAC;AARD,kBAQC"} -------------------------------------------------------------------------------- /build/commonjs/ops/minBbox.d.ts: -------------------------------------------------------------------------------- 1 | import { BoundingBox, IPoint } from '../classes'; 2 | export declare function minBbox(pts: IPoint[]): BoundingBox; 3 | -------------------------------------------------------------------------------- /build/commonjs/ops/minBbox.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var classes_1 = require("../classes"); 4 | function minBbox(pts) { 5 | var xs = pts.map(function (pt) { return pt.x; }); 6 | var ys = pts.map(function (pt) { return pt.y; }); 7 | var minX = xs.reduce(function (min, x) { return x < min ? x : min; }, Infinity); 8 | var minY = ys.reduce(function (min, y) { return y < min ? y : min; }, Infinity); 9 | var maxX = xs.reduce(function (max, x) { return max < x ? x : max; }, 0); 10 | var maxY = ys.reduce(function (max, y) { return max < y ? y : max; }, 0); 11 | return new classes_1.BoundingBox(minX, minY, maxX, maxY); 12 | } 13 | exports.minBbox = minBbox; 14 | //# sourceMappingURL=minBbox.js.map -------------------------------------------------------------------------------- /build/commonjs/ops/nonMaxSuppression.d.ts: -------------------------------------------------------------------------------- 1 | import { Box } from '../classes/Box'; 2 | export declare function nonMaxSuppression(boxes: Box[], scores: number[], iouThreshold: number, isIOU?: boolean): number[]; 3 | -------------------------------------------------------------------------------- /build/commonjs/ops/normalize.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export declare function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D; 3 | -------------------------------------------------------------------------------- /build/commonjs/ops/normalize.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | var tf = require("@tensorflow/tfjs-core"); 5 | function normalize(x, meanRgb) { 6 | return tf.tidy(function () { 7 | var r = meanRgb[0], g = meanRgb[1], b = meanRgb[2]; 8 | var avg_r = tf.fill(tslib_1.__spreadArrays(x.shape.slice(0, 3), [1]), r); 9 | var avg_g = tf.fill(tslib_1.__spreadArrays(x.shape.slice(0, 3), [1]), g); 10 | var avg_b = tf.fill(tslib_1.__spreadArrays(x.shape.slice(0, 3), [1]), b); 11 | var avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3); 12 | return tf.sub(x, avg_rgb); 13 | }); 14 | } 15 | exports.normalize = normalize; 16 | //# sourceMappingURL=normalize.js.map -------------------------------------------------------------------------------- /build/commonjs/ops/normalize.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/ops/normalize.ts"],"names":[],"mappings":";;;AAAA,0CAA4C;AAE5C,SAAgB,SAAS,CAAC,CAAc,EAAE,OAAiB;IACzD,OAAO,EAAE,CAAC,IAAI,CAAC;QACN,IAAA,cAAC,EAAE,cAAC,EAAE,cAAC,CAAW;QACzB,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,wBAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAE,CAAC,IAAG,CAAC,CAAC,CAAA;QACrD,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,wBAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAE,CAAC,IAAG,CAAC,CAAC,CAAA;QACrD,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,wBAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAE,CAAC,IAAG,CAAC,CAAC,CAAA;QACrD,IAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QAEnD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC;AAVD,8BAUC"} -------------------------------------------------------------------------------- /build/commonjs/ops/padToSquare.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | /** 3 | * Pads the smaller dimension of an image tensor with zeros, such that width === height. 4 | * 5 | * @param imgTensor The image tensor. 6 | * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on 7 | * both sides of the minor dimension oof the image. 8 | * @returns The padded tensor with width === height. 9 | */ 10 | export declare function padToSquare(imgTensor: tf.Tensor4D, isCenterImage?: boolean): tf.Tensor4D; 11 | -------------------------------------------------------------------------------- /build/commonjs/ops/shuffleArray.d.ts: -------------------------------------------------------------------------------- 1 | export declare function shuffleArray(inputArray: any[]): any[]; 2 | -------------------------------------------------------------------------------- /build/commonjs/ops/shuffleArray.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | function shuffleArray(inputArray) { 4 | var array = inputArray.slice(); 5 | for (var i = array.length - 1; i > 0; i--) { 6 | var j = Math.floor(Math.random() * (i + 1)); 7 | var x = array[i]; 8 | array[i] = array[j]; 9 | array[j] = x; 10 | } 11 | return array; 12 | } 13 | exports.shuffleArray = shuffleArray; 14 | //# sourceMappingURL=shuffleArray.js.map -------------------------------------------------------------------------------- /build/commonjs/ops/shuffleArray.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"shuffleArray.js","sourceRoot":"","sources":["../../../src/ops/shuffleArray.ts"],"names":[],"mappings":";;AAAA,SAAgB,YAAY,CAAC,UAAiB;IAC5C,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAA;IAChC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC7C,IAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAClB,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACnB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;KACf;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AATD,oCASC"} -------------------------------------------------------------------------------- /build/commonjs/tfjsImageRecognitionBase.d.ts: -------------------------------------------------------------------------------- 1 | export * from './common'; 2 | export * from './tinyYolov2/index'; 3 | -------------------------------------------------------------------------------- /build/commonjs/tfjsImageRecognitionBase.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | tslib_1.__exportStar(require("./common"), exports); 5 | tslib_1.__exportStar(require("./tinyYolov2/index"), exports); 6 | //# sourceMappingURL=tfjsImageRecognitionBase.js.map -------------------------------------------------------------------------------- /build/commonjs/tfjsImageRecognitionBase.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"tfjsImageRecognitionBase.js","sourceRoot":"","sources":["../../src/tfjsImageRecognitionBase.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,6DAAmC"} -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/TinyYolov2Options.d.ts: -------------------------------------------------------------------------------- 1 | export declare enum TinyYolov2SizeType { 2 | XS = 224, 3 | SM = 320, 4 | MD = 416, 5 | LG = 608 6 | } 7 | export interface ITinyYolov2Options { 8 | inputSize?: number; 9 | scoreThreshold?: number; 10 | } 11 | export declare class TinyYolov2Options { 12 | protected _name: string; 13 | private _inputSize; 14 | private _scoreThreshold; 15 | constructor({ inputSize, scoreThreshold }?: ITinyYolov2Options); 16 | readonly inputSize: number; 17 | readonly scoreThreshold: number; 18 | } 19 | -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/TinyYolov2Options.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"TinyYolov2Options.js","sourceRoot":"","sources":["../../../src/tinyYolov2/TinyYolov2Options.ts"],"names":[],"mappings":";;AAAA,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,yDAAQ,CAAA;IACR,yDAAQ,CAAA;IACR,yDAAQ,CAAA;IACR,yDAAQ,CAAA;AACV,CAAC,EALW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAK7B;AAOD;IAME,2BAAY,EAAsD;YAAtD,4BAAsD,EAApD,wBAAS,EAAE,kCAAc;QAL7B,UAAK,GAAW,mBAAmB,CAAA;QAM3C,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,GAAG,CAAA;QAClC,IAAI,CAAC,eAAe,GAAG,cAAc,IAAI,GAAG,CAAA;QAE5C,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE;YACrE,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,yDAAsD,CAAC,CAAA;SACrF;QAED,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,EAAE;YACtG,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,8DAA2D,CAAC,CAAA;SAC1F;IACH,CAAC;IAED,sBAAI,wCAAS;aAAb,cAA0B,OAAO,IAAI,CAAC,UAAU,CAAA,CAAC,CAAC;;;OAAA;IAClD,sBAAI,6CAAc;aAAlB,cAA+B,OAAO,IAAI,CAAC,eAAe,CAAA,CAAC,CAAC;;;OAAA;IAC9D,wBAAC;AAAD,CAAC,AArBD,IAqBC;AArBY,8CAAiB"} -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/config.d.ts: -------------------------------------------------------------------------------- 1 | import { Point } from '../classes/Point'; 2 | export declare type TinyYolov2Config = { 3 | withSeparableConvs: boolean; 4 | iouThreshold: number; 5 | anchors: Point[]; 6 | classes: string[]; 7 | meanRgb?: [number, number, number]; 8 | withClassScores?: boolean; 9 | filterSizes?: number[]; 10 | isFirstLayerConv2d?: boolean; 11 | }; 12 | export declare function validateConfig(config: any): void; 13 | -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/convWithBatchNorm.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | import { ConvWithBatchNorm } from './types'; 3 | export declare function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D; 4 | -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/convWithBatchNorm.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tf = require("@tensorflow/tfjs-core"); 4 | var leaky_1 = require("./leaky"); 5 | function convWithBatchNorm(x, params) { 6 | return tf.tidy(function () { 7 | var out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]); 8 | out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid'); 9 | out = tf.sub(out, params.bn.sub); 10 | out = tf.mul(out, params.bn.truediv); 11 | out = tf.add(out, params.conv.bias); 12 | return leaky_1.leaky(out); 13 | }); 14 | } 15 | exports.convWithBatchNorm = convWithBatchNorm; 16 | //# sourceMappingURL=convWithBatchNorm.js.map -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/convWithBatchNorm.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"convWithBatchNorm.js","sourceRoot":"","sources":["../../../src/tinyYolov2/convWithBatchNorm.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,iCAAgC;AAGhC,SAAgB,iBAAiB,CAAC,CAAc,EAAE,MAAyB;IACzE,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAgB,CAAA;QAEpE,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC1D,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QAChC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;QACpC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEnC,OAAO,aAAK,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC;AAXD,8CAWC"} -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/depthwiseSeparableConv.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | import { SeparableConvParams } from '../common/types'; 3 | export declare function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D; 4 | -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/depthwiseSeparableConv.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tf = require("@tensorflow/tfjs-core"); 4 | var leaky_1 = require("./leaky"); 5 | function depthwiseSeparableConv(x, params) { 6 | return tf.tidy(function () { 7 | var out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]); 8 | out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid'); 9 | out = tf.add(out, params.bias); 10 | return leaky_1.leaky(out); 11 | }); 12 | } 13 | exports.depthwiseSeparableConv = depthwiseSeparableConv; 14 | //# sourceMappingURL=depthwiseSeparableConv.js.map -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/depthwiseSeparableConv.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"depthwiseSeparableConv.js","sourceRoot":"","sources":["../../../src/tinyYolov2/depthwiseSeparableConv.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAG5C,iCAAgC;AAEhC,SAAgB,sBAAsB,CAAC,CAAc,EAAE,MAA2B;IAChF,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAgB,CAAA;QAEpE,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAChG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAE9B,OAAO,aAAK,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC;AATD,wDASC"} -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/extractParams.d.ts: -------------------------------------------------------------------------------- 1 | import { ParamMapping } from '../common/types'; 2 | import { TinyYolov2Config } from './config'; 3 | import { TinyYolov2NetParams } from './types'; 4 | export declare function extractParams(weights: Float32Array, config: TinyYolov2Config, boxEncodingSize: number, filterSizes: number[]): { 5 | params: TinyYolov2NetParams; 6 | paramMappings: ParamMapping[]; 7 | }; 8 | -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/extractParamsFromWeigthMap.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | import { ParamMapping } from '../common/types'; 3 | import { TinyYolov2Config } from './config'; 4 | import { TinyYolov2NetParams } from './types'; 5 | export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap, config: TinyYolov2Config): { 6 | params: TinyYolov2NetParams; 7 | paramMappings: ParamMapping[]; 8 | }; 9 | -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './TinyYolov2'; 2 | export * from './TinyYolov2Options'; 3 | export * from './config'; 4 | export * from './types'; 5 | -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tslib_1 = require("tslib"); 4 | tslib_1.__exportStar(require("./TinyYolov2"), exports); 5 | tslib_1.__exportStar(require("./TinyYolov2Options"), exports); 6 | tslib_1.__exportStar(require("./config"), exports); 7 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tinyYolov2/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,8DAAoC;AAEpC,mDAAwB"} -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/leaky.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export declare function leaky(x: tf.Tensor4D): tf.Tensor4D; 3 | -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/leaky.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | var tf = require("@tensorflow/tfjs-core"); 4 | function leaky(x) { 5 | return tf.tidy(function () { 6 | var min = tf.mul(x, tf.scalar(0.10000000149011612)); 7 | return tf.add(tf.relu(tf.sub(x, min)), min); 8 | //return tf.maximum(x, min) 9 | }); 10 | } 11 | exports.leaky = leaky; 12 | //# sourceMappingURL=leaky.js.map -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/leaky.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"leaky.js","sourceRoot":"","sources":["../../../src/tinyYolov2/leaky.ts"],"names":[],"mappings":";;AAAA,0CAA4C;AAE5C,SAAgB,KAAK,CAAC,CAAc;IAClC,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;QACrD,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAC3C,2BAA2B;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC;AAND,sBAMC"} -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | //# sourceMappingURL=types.js.map -------------------------------------------------------------------------------- /build/commonjs/tinyYolov2/types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tinyYolov2/types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /build/es6/classes/BoundingBox.d.ts: -------------------------------------------------------------------------------- 1 | import { Box } from './Box'; 2 | export interface IBoundingBox { 3 | left: number; 4 | top: number; 5 | right: number; 6 | bottom: number; 7 | } 8 | export declare class BoundingBox extends Box implements IBoundingBox { 9 | constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions?: boolean); 10 | } 11 | -------------------------------------------------------------------------------- /build/es6/classes/BoundingBox.js: -------------------------------------------------------------------------------- 1 | import { __extends } from "tslib"; 2 | import { Box } from './Box'; 3 | var BoundingBox = /** @class */ (function (_super) { 4 | __extends(BoundingBox, _super); 5 | function BoundingBox(left, top, right, bottom, allowNegativeDimensions) { 6 | if (allowNegativeDimensions === void 0) { allowNegativeDimensions = false; } 7 | return _super.call(this, { left: left, top: top, right: right, bottom: bottom }, allowNegativeDimensions) || this; 8 | } 9 | return BoundingBox; 10 | }(Box)); 11 | export { BoundingBox }; 12 | //# sourceMappingURL=BoundingBox.js.map -------------------------------------------------------------------------------- /build/es6/classes/BoundingBox.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"BoundingBox.js","sourceRoot":"","sources":["../../../src/classes/BoundingBox.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAS5B;IAAiC,+BAAgB;IAC/C,qBAAY,IAAY,EAAE,GAAW,EAAE,KAAa,EAAE,MAAc,EAAE,uBAAwC;QAAxC,wCAAA,EAAA,+BAAwC;eAC5G,kBAAM,EAAE,IAAI,MAAA,EAAE,GAAG,KAAA,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,EAAE,uBAAuB,CAAC;IAC9D,CAAC;IACH,kBAAC;AAAD,CAAC,AAJD,CAAiC,GAAG,GAInC"} -------------------------------------------------------------------------------- /build/es6/classes/Dimensions.d.ts: -------------------------------------------------------------------------------- 1 | export interface IDimensions { 2 | width: number; 3 | height: number; 4 | } 5 | export declare class Dimensions implements IDimensions { 6 | private _width; 7 | private _height; 8 | constructor(width: number, height: number); 9 | readonly width: number; 10 | readonly height: number; 11 | reverse(): Dimensions; 12 | } 13 | -------------------------------------------------------------------------------- /build/es6/classes/Dimensions.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Dimensions.js","sourceRoot":"","sources":["../../../src/classes/Dimensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAOzC;IAKE,oBAAY,KAAa,EAAE,MAAc;QACvC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;YACnD,MAAM,IAAI,KAAK,CAAC,0FAAwF,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAG,CAAC,CAAA;SAC7I;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,sBAAW,6BAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IACjD,sBAAW,8BAAM;aAAjB,cAA8B,OAAO,IAAI,CAAC,OAAO,CAAA,CAAC,CAAC;;;OAAA;IAE5C,4BAAO,GAAd;QACE,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IACxD,CAAC;IACH,iBAAC;AAAD,CAAC,AApBD,IAoBC"} -------------------------------------------------------------------------------- /build/es6/classes/LabeledBox.d.ts: -------------------------------------------------------------------------------- 1 | import { IBoundingBox } from './BoundingBox'; 2 | import { Box } from './Box'; 3 | import { IRect } from './Rect'; 4 | export declare class LabeledBox extends Box { 5 | static assertIsValidLabeledBox(box: any, callee: string): void; 6 | private _label; 7 | constructor(box: IBoundingBox | IRect | any, label: number); 8 | readonly label: number; 9 | } 10 | -------------------------------------------------------------------------------- /build/es6/classes/LabeledBox.js: -------------------------------------------------------------------------------- 1 | import { __extends } from "tslib"; 2 | import { Box } from './Box'; 3 | import { isValidNumber } from '../utils/index'; 4 | var LabeledBox = /** @class */ (function (_super) { 5 | __extends(LabeledBox, _super); 6 | function LabeledBox(box, label) { 7 | var _this = _super.call(this, box) || this; 8 | _this._label = label; 9 | return _this; 10 | } 11 | LabeledBox.assertIsValidLabeledBox = function (box, callee) { 12 | Box.assertIsValidBox(box, callee); 13 | if (!isValidNumber(box.label)) { 14 | throw new Error(callee + " - expected property label (" + box.label + ") to be a number"); 15 | } 16 | }; 17 | Object.defineProperty(LabeledBox.prototype, "label", { 18 | get: function () { return this._label; }, 19 | enumerable: true, 20 | configurable: true 21 | }); 22 | return LabeledBox; 23 | }(Box)); 24 | export { LabeledBox }; 25 | //# sourceMappingURL=LabeledBox.js.map -------------------------------------------------------------------------------- /build/es6/classes/LabeledBox.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"LabeledBox.js","sourceRoot":"","sources":["../../../src/classes/LabeledBox.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C;IAAgC,8BAAe;IAY7C,oBAAY,GAA+B,EAAE,KAAa;QAA1D,YACE,kBAAM,GAAG,CAAC,SAEX;QADC,KAAI,CAAC,MAAM,GAAG,KAAK,CAAA;;IACrB,CAAC;IAba,kCAAuB,GAArC,UAAsC,GAAQ,EAAE,MAAc;QAC5D,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAEjC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAI,MAAM,oCAA+B,GAAG,CAAC,KAAK,qBAAkB,CAAC,CAAA;SACrF;IACH,CAAC;IASD,sBAAW,6BAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IAEnD,iBAAC;AAAD,CAAC,AAnBD,CAAgC,GAAG,GAmBlC"} -------------------------------------------------------------------------------- /build/es6/classes/ObjectDetection.d.ts: -------------------------------------------------------------------------------- 1 | import { Box } from './Box'; 2 | import { Dimensions, IDimensions } from './Dimensions'; 3 | import { IRect } from './Rect'; 4 | export declare class ObjectDetection { 5 | private _score; 6 | private _classScore; 7 | private _className; 8 | private _box; 9 | private _imageDims; 10 | constructor(score: number, classScore: number, className: string, relativeBox: IRect, imageDims: IDimensions); 11 | readonly score: number; 12 | readonly classScore: number; 13 | readonly className: string; 14 | readonly box: Box; 15 | readonly imageDims: Dimensions; 16 | readonly imageWidth: number; 17 | readonly imageHeight: number; 18 | readonly relativeBox: Box; 19 | forSize(width: number, height: number): ObjectDetection; 20 | } 21 | -------------------------------------------------------------------------------- /build/es6/classes/Point.d.ts: -------------------------------------------------------------------------------- 1 | export interface IPoint { 2 | x: number; 3 | y: number; 4 | } 5 | export declare class Point implements IPoint { 6 | private _x; 7 | private _y; 8 | constructor(x: number, y: number); 9 | readonly x: number; 10 | readonly y: number; 11 | add(pt: IPoint): Point; 12 | sub(pt: IPoint): Point; 13 | mul(pt: IPoint): Point; 14 | div(pt: IPoint): Point; 15 | abs(): Point; 16 | magnitude(): number; 17 | floor(): Point; 18 | } 19 | -------------------------------------------------------------------------------- /build/es6/classes/PredictedBox.d.ts: -------------------------------------------------------------------------------- 1 | import { IBoundingBox } from './BoundingBox'; 2 | import { LabeledBox } from './LabeledBox'; 3 | import { IRect } from './Rect'; 4 | export declare class PredictedBox extends LabeledBox { 5 | static assertIsValidPredictedBox(box: any, callee: string): void; 6 | private _score; 7 | private _classScore; 8 | constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number); 9 | readonly score: number; 10 | readonly classScore: number; 11 | } 12 | -------------------------------------------------------------------------------- /build/es6/classes/PredictedBox.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"PredictedBox.js","sourceRoot":"","sources":["../../../src/classes/PredictedBox.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C;IAAkC,gCAAU;IAgB1C,sBAAY,GAA+B,EAAE,KAAa,EAAE,KAAa,EAAE,UAAkB;QAA7F,YACE,kBAAM,GAAG,EAAE,KAAK,CAAC,SAGlB;QAFC,KAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,KAAI,CAAC,WAAW,GAAG,UAAU,CAAA;;IAC/B,CAAC;IAlBa,sCAAyB,GAAvC,UAAwC,GAAQ,EAAE,MAAc;QAC9D,UAAU,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAE/C,IACE,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;eAC3B,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,EACtC;YACA,MAAM,IAAI,KAAK,CAAI,MAAM,sCAAiC,GAAG,CAAC,KAAK,eAAU,GAAG,CAAC,UAAU,oCAAiC,CAAC,CAAA;SAC9H;IACH,CAAC;IAWD,sBAAW,+BAAK;aAAhB,cAA6B,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;;;OAAA;IACjD,sBAAW,oCAAU;aAArB,cAAkC,OAAO,IAAI,CAAC,WAAW,CAAA,CAAC,CAAC;;;OAAA;IAE7D,mBAAC;AAAD,CAAC,AAzBD,CAAkC,UAAU,GAyB3C"} -------------------------------------------------------------------------------- /build/es6/classes/Rect.d.ts: -------------------------------------------------------------------------------- 1 | import { Box } from './Box'; 2 | export interface IRect { 3 | x: number; 4 | y: number; 5 | width: number; 6 | height: number; 7 | } 8 | export declare class Rect extends Box implements IRect { 9 | constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions?: boolean); 10 | } 11 | -------------------------------------------------------------------------------- /build/es6/classes/Rect.js: -------------------------------------------------------------------------------- 1 | import { __extends } from "tslib"; 2 | import { Box } from './Box'; 3 | var Rect = /** @class */ (function (_super) { 4 | __extends(Rect, _super); 5 | function Rect(x, y, width, height, allowNegativeDimensions) { 6 | if (allowNegativeDimensions === void 0) { allowNegativeDimensions = false; } 7 | return _super.call(this, { x: x, y: y, width: width, height: height }, allowNegativeDimensions) || this; 8 | } 9 | return Rect; 10 | }(Box)); 11 | export { Rect }; 12 | //# sourceMappingURL=Rect.js.map -------------------------------------------------------------------------------- /build/es6/classes/Rect.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"Rect.js","sourceRoot":"","sources":["../../../src/classes/Rect.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAS5B;IAA0B,wBAAS;IACjC,cAAY,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc,EAAE,uBAAwC;QAAxC,wCAAA,EAAA,+BAAwC;eACvG,kBAAM,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,EAAE,uBAAuB,CAAC;IACzD,CAAC;IACH,WAAC;AAAD,CAAC,AAJD,CAA0B,GAAG,GAI5B"} -------------------------------------------------------------------------------- /build/es6/classes/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './BoundingBox'; 2 | export * from './Box'; 3 | export * from './Dimensions'; 4 | export * from './LabeledBox'; 5 | export * from './ObjectDetection'; 6 | export * from './Point'; 7 | export * from './PredictedBox'; 8 | export * from './Rect'; 9 | -------------------------------------------------------------------------------- /build/es6/classes/index.js: -------------------------------------------------------------------------------- 1 | export * from './BoundingBox'; 2 | export * from './Box'; 3 | export * from './Dimensions'; 4 | export * from './LabeledBox'; 5 | export * from './ObjectDetection'; 6 | export * from './Point'; 7 | export * from './PredictedBox'; 8 | export * from './Rect'; 9 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/es6/classes/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/classes/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA"} -------------------------------------------------------------------------------- /build/es6/common/convLayer.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | import { ConvParams } from './types'; 3 | export declare function convLayer(x: tf.Tensor4D, params: ConvParams, padding?: 'valid' | 'same', withRelu?: boolean): tf.Tensor4D; 4 | -------------------------------------------------------------------------------- /build/es6/common/convLayer.js: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export function convLayer(x, params, padding, withRelu) { 3 | if (padding === void 0) { padding = 'same'; } 4 | if (withRelu === void 0) { withRelu = false; } 5 | return tf.tidy(function () { 6 | var out = tf.add(tf.conv2d(x, params.filters, [1, 1], padding), params.bias); 7 | return withRelu ? tf.relu(out) : out; 8 | }); 9 | } 10 | //# sourceMappingURL=convLayer.js.map -------------------------------------------------------------------------------- /build/es6/common/convLayer.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"convLayer.js","sourceRoot":"","sources":["../../../src/common/convLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI5C,MAAM,UAAU,SAAS,CACvB,CAAc,EACd,MAAkB,EAClB,OAAkC,EAClC,QAAyB;IADzB,wBAAA,EAAA,gBAAkC;IAClC,yBAAA,EAAA,gBAAyB;IAEzB,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAChB,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAC7C,MAAM,CAAC,IAAI,CACG,CAAA;QAEhB,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACtC,CAAC,CAAC,CAAA;AACJ,CAAC"} -------------------------------------------------------------------------------- /build/es6/common/disposeUnusedWeightTensors.d.ts: -------------------------------------------------------------------------------- 1 | import { ParamMapping } from './types'; 2 | export declare function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]): void; 3 | -------------------------------------------------------------------------------- /build/es6/common/disposeUnusedWeightTensors.js: -------------------------------------------------------------------------------- 1 | export function disposeUnusedWeightTensors(weightMap, paramMappings) { 2 | Object.keys(weightMap).forEach(function (path) { 3 | if (!paramMappings.some(function (pm) { return pm.originalPath === path; })) { 4 | weightMap[path].dispose(); 5 | } 6 | }); 7 | } 8 | //# sourceMappingURL=disposeUnusedWeightTensors.js.map -------------------------------------------------------------------------------- /build/es6/common/disposeUnusedWeightTensors.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"disposeUnusedWeightTensors.js","sourceRoot":"","sources":["../../../src/common/disposeUnusedWeightTensors.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,0BAA0B,CAAC,SAAc,EAAE,aAA6B;IACtF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,YAAY,KAAK,IAAI,EAAxB,CAAwB,CAAC,EAAE;YACvD,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;SAC1B;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"} -------------------------------------------------------------------------------- /build/es6/common/extractConvParamsFactory.d.ts: -------------------------------------------------------------------------------- 1 | import { ConvParams, ExtractWeightsFunction, ParamMapping } from './types'; 2 | export declare function extractConvParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, filterSize: number, mappedPrefix: string) => ConvParams; 3 | -------------------------------------------------------------------------------- /build/es6/common/extractConvParamsFactory.js: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export function extractConvParamsFactory(extractWeights, paramMappings) { 3 | return function (channelsIn, channelsOut, filterSize, mappedPrefix) { 4 | var filters = tf.tensor4d(extractWeights(channelsIn * channelsOut * filterSize * filterSize), [filterSize, filterSize, channelsIn, channelsOut]); 5 | var bias = tf.tensor1d(extractWeights(channelsOut)); 6 | paramMappings.push({ paramPath: mappedPrefix + "/filters" }, { paramPath: mappedPrefix + "/bias" }); 7 | return { filters: filters, bias: bias }; 8 | }; 9 | } 10 | //# sourceMappingURL=extractConvParamsFactory.js.map -------------------------------------------------------------------------------- /build/es6/common/extractConvParamsFactory.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"extractConvParamsFactory.js","sourceRoot":"","sources":["../../../src/common/extractConvParamsFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI5C,MAAM,UAAU,wBAAwB,CACtC,cAAsC,EACtC,aAA6B;IAG7B,OAAO,UACL,UAAkB,EAClB,WAAmB,EACnB,UAAkB,EAClB,YAAoB;QAGpB,IAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CACzB,cAAc,CAAC,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC,EAClE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAClD,CAAA;QACD,IAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAA;QAErD,aAAa,CAAC,IAAI,CAChB,EAAE,SAAS,EAAK,YAAY,aAAU,EAAE,EACxC,EAAE,SAAS,EAAK,YAAY,UAAO,EAAE,CACtC,CAAA;QAED,OAAO,EAAE,OAAO,SAAA,EAAE,IAAI,MAAA,EAAE,CAAA;IAC1B,CAAC,CAAA;AAEH,CAAC"} -------------------------------------------------------------------------------- /build/es6/common/extractFCParamsFactory.d.ts: -------------------------------------------------------------------------------- 1 | import { ExtractWeightsFunction, FCParams, ParamMapping } from './types'; 2 | export declare function extractFCParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, mappedPrefix: string) => FCParams; 3 | -------------------------------------------------------------------------------- /build/es6/common/extractFCParamsFactory.js: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export function extractFCParamsFactory(extractWeights, paramMappings) { 3 | return function (channelsIn, channelsOut, mappedPrefix) { 4 | var fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]); 5 | var fc_bias = tf.tensor1d(extractWeights(channelsOut)); 6 | paramMappings.push({ paramPath: mappedPrefix + "/weights" }, { paramPath: mappedPrefix + "/bias" }); 7 | return { 8 | weights: fc_weights, 9 | bias: fc_bias 10 | }; 11 | }; 12 | } 13 | //# sourceMappingURL=extractFCParamsFactory.js.map -------------------------------------------------------------------------------- /build/es6/common/extractFCParamsFactory.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"extractFCParamsFactory.js","sourceRoot":"","sources":["../../../src/common/extractFCParamsFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAK5C,MAAM,UAAU,sBAAsB,CACpC,cAAsC,EACtC,aAA6B;IAG7B,OAAO,UACL,UAAkB,EAClB,WAAmB,EACnB,YAAoB;QAGpB,IAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;QACnG,IAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAA;QAExD,aAAa,CAAC,IAAI,CAChB,EAAE,SAAS,EAAK,YAAY,aAAU,EAAE,EACxC,EAAE,SAAS,EAAK,YAAY,UAAO,EAAE,CACtC,CAAA;QAED,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,OAAO;SACd,CAAA;IACH,CAAC,CAAA;AAEH,CAAC"} -------------------------------------------------------------------------------- /build/es6/common/extractSeparableConvParamsFactory.d.ts: -------------------------------------------------------------------------------- 1 | import { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types'; 2 | export declare function extractSeparableConvParamsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]): (channelsIn: number, channelsOut: number, mappedPrefix: string) => SeparableConvParams; 3 | export declare function loadSeparableConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T): (prefix: string) => SeparableConvParams; 4 | -------------------------------------------------------------------------------- /build/es6/common/extractWeightEntryFactory.d.ts: -------------------------------------------------------------------------------- 1 | import { ParamMapping } from './types'; 2 | export declare function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]): (originalPath: string, paramRank: number, mappedPath?: string | undefined) => T; 3 | -------------------------------------------------------------------------------- /build/es6/common/extractWeightEntryFactory.js: -------------------------------------------------------------------------------- 1 | import { isTensor } from '../utils'; 2 | export function extractWeightEntryFactory(weightMap, paramMappings) { 3 | return function (originalPath, paramRank, mappedPath) { 4 | var tensor = weightMap[originalPath]; 5 | if (!isTensor(tensor, paramRank)) { 6 | throw new Error("expected weightMap[" + originalPath + "] to be a Tensor" + paramRank + "D, instead have " + tensor); 7 | } 8 | paramMappings.push({ originalPath: originalPath, paramPath: mappedPath || originalPath }); 9 | return tensor; 10 | }; 11 | } 12 | //# sourceMappingURL=extractWeightEntryFactory.js.map -------------------------------------------------------------------------------- /build/es6/common/extractWeightEntryFactory.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"extractWeightEntryFactory.js","sourceRoot":"","sources":["../../../src/common/extractWeightEntryFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,MAAM,UAAU,yBAAyB,CAAC,SAAc,EAAE,aAA6B;IAErF,OAAO,UAAa,YAAoB,EAAE,SAAiB,EAAE,UAAmB;QAC9E,IAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAAA;QAEtC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,wBAAsB,YAAY,wBAAmB,SAAS,wBAAmB,MAAQ,CAAC,CAAA;SAC3G;QAED,aAAa,CAAC,IAAI,CAChB,EAAE,YAAY,cAAA,EAAE,SAAS,EAAE,UAAU,IAAI,YAAY,EAAE,CACxD,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AAEH,CAAC"} -------------------------------------------------------------------------------- /build/es6/common/extractWeightsFactory.d.ts: -------------------------------------------------------------------------------- 1 | export declare function extractWeightsFactory(weights: Float32Array): { 2 | extractWeights: (numWeights: number) => Float32Array; 3 | getRemainingWeights: () => Float32Array; 4 | }; 5 | -------------------------------------------------------------------------------- /build/es6/common/extractWeightsFactory.js: -------------------------------------------------------------------------------- 1 | export function extractWeightsFactory(weights) { 2 | var remainingWeights = weights; 3 | function extractWeights(numWeights) { 4 | var ret = remainingWeights.slice(0, numWeights); 5 | remainingWeights = remainingWeights.slice(numWeights); 6 | return ret; 7 | } 8 | function getRemainingWeights() { 9 | return remainingWeights; 10 | } 11 | return { 12 | extractWeights: extractWeights, 13 | getRemainingWeights: getRemainingWeights 14 | }; 15 | } 16 | //# sourceMappingURL=extractWeightsFactory.js.map -------------------------------------------------------------------------------- /build/es6/common/extractWeightsFactory.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"extractWeightsFactory.js","sourceRoot":"","sources":["../../../src/common/extractWeightsFactory.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IACzD,IAAI,gBAAgB,GAAG,OAAO,CAAA;IAE9B,SAAS,cAAc,CAAC,UAAkB;QACxC,IAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;QACjD,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACrD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,SAAS,mBAAmB;QAC1B,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,OAAO;QACL,cAAc,gBAAA;QACd,mBAAmB,qBAAA;KACpB,CAAA;AACH,CAAC"} -------------------------------------------------------------------------------- /build/es6/common/getModelUris.d.ts: -------------------------------------------------------------------------------- 1 | export declare function getModelUris(uri: string | undefined, defaultModelName: string): { 2 | modelBaseUri: string; 3 | manifestUri: string; 4 | }; 5 | -------------------------------------------------------------------------------- /build/es6/common/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './convLayer'; 2 | export * from './disposeUnusedWeightTensors'; 3 | export * from './extractConvParamsFactory'; 4 | export * from './extractFCParamsFactory'; 5 | export * from './extractSeparableConvParamsFactory'; 6 | export * from './extractWeightEntryFactory'; 7 | export * from './extractWeightsFactory'; 8 | export * from './getModelUris'; 9 | export * from './types'; 10 | -------------------------------------------------------------------------------- /build/es6/common/index.js: -------------------------------------------------------------------------------- 1 | export * from './convLayer'; 2 | export * from './disposeUnusedWeightTensors'; 3 | export * from './extractConvParamsFactory'; 4 | export * from './extractFCParamsFactory'; 5 | export * from './extractSeparableConvParamsFactory'; 6 | export * from './extractWeightEntryFactory'; 7 | export * from './extractWeightsFactory'; 8 | export * from './getModelUris'; 9 | export * from './types'; 10 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/es6/common/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AACxC,cAAc,qCAAqC,CAAA;AACnD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AACvC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA"} -------------------------------------------------------------------------------- /build/es6/common/types.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export declare type ExtractWeightsFunction = (numWeights: number) => Float32Array; 3 | export declare type ParamMapping = { 4 | originalPath?: string; 5 | paramPath: string; 6 | }; 7 | export declare type ConvParams = { 8 | filters: tf.Tensor4D; 9 | bias: tf.Tensor1D; 10 | }; 11 | export declare type FCParams = { 12 | weights: tf.Tensor2D; 13 | bias: tf.Tensor1D; 14 | }; 15 | export declare class SeparableConvParams { 16 | depthwise_filter: tf.Tensor4D; 17 | pointwise_filter: tf.Tensor4D; 18 | bias: tf.Tensor1D; 19 | constructor(depthwise_filter: tf.Tensor4D, pointwise_filter: tf.Tensor4D, bias: tf.Tensor1D); 20 | } 21 | -------------------------------------------------------------------------------- /build/es6/common/types.js: -------------------------------------------------------------------------------- 1 | var SeparableConvParams = /** @class */ (function () { 2 | function SeparableConvParams(depthwise_filter, pointwise_filter, bias) { 3 | this.depthwise_filter = depthwise_filter; 4 | this.pointwise_filter = pointwise_filter; 5 | this.bias = bias; 6 | } 7 | return SeparableConvParams; 8 | }()); 9 | export { SeparableConvParams }; 10 | //# sourceMappingURL=types.js.map -------------------------------------------------------------------------------- /build/es6/common/types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/common/types.ts"],"names":[],"mappings":"AAmBA;IACE,6BACS,gBAA6B,EAC7B,gBAA6B,EAC7B,IAAiB;QAFjB,qBAAgB,GAAhB,gBAAgB,CAAa;QAC7B,qBAAgB,GAAhB,gBAAgB,CAAa;QAC7B,SAAI,GAAJ,IAAI,CAAa;IACvB,CAAC;IACN,0BAAC;AAAD,CAAC,AAND,IAMC"} -------------------------------------------------------------------------------- /build/es6/dom/awaitMediaLoaded.d.ts: -------------------------------------------------------------------------------- 1 | export declare function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement): Promise; 2 | -------------------------------------------------------------------------------- /build/es6/dom/awaitMediaLoaded.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"awaitMediaLoaded.js","sourceRoot":"","sources":["../../../src/dom/awaitMediaLoaded.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,UAAU,gBAAgB,CAAC,KAA8D;IAE7F,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QACjC,IAAI,KAAK,YAAY,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;YAChE,OAAO,OAAO,EAAE,CAAA;SACjB;QAED,SAAS,MAAM,CAAC,CAAQ;YACtB,IAAI,CAAC,CAAC,CAAC,aAAa;gBAAE,OAAM;YAC5B,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACnD,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACrD,OAAO,CAAC,CAAC,CAAC,CAAA;QACZ,CAAC;QAED,SAAS,OAAO,CAAC,CAAQ;YACvB,IAAI,CAAC,CAAC,CAAC,aAAa;gBAAE,OAAM;YAC5B,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACnD,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACrD,MAAM,CAAC,CAAC,CAAC,CAAA;QACX,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACtC,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC"} -------------------------------------------------------------------------------- /build/es6/dom/bufferToImage.d.ts: -------------------------------------------------------------------------------- 1 | export declare function bufferToImage(buf: Blob): Promise; 2 | -------------------------------------------------------------------------------- /build/es6/dom/bufferToImage.js: -------------------------------------------------------------------------------- 1 | import { env } from '../env'; 2 | export function bufferToImage(buf) { 3 | return new Promise(function (resolve, reject) { 4 | if (!(buf instanceof Blob)) { 5 | return reject('bufferToImage - expected buf to be of type: Blob'); 6 | } 7 | var reader = new FileReader(); 8 | reader.onload = function () { 9 | if (typeof reader.result !== 'string') { 10 | return reject('bufferToImage - expected reader.result to be a string, in onload'); 11 | } 12 | var img = env.getEnv().createImageElement(); 13 | img.onload = function () { return resolve(img); }; 14 | img.onerror = reject; 15 | img.src = reader.result; 16 | }; 17 | reader.onerror = reject; 18 | reader.readAsDataURL(buf); 19 | }); 20 | } 21 | //# sourceMappingURL=bufferToImage.js.map -------------------------------------------------------------------------------- /build/es6/dom/bufferToImage.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"bufferToImage.js","sourceRoot":"","sources":["../../../src/dom/bufferToImage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,MAAM,UAAU,aAAa,CAAC,GAAS;IACrC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QACjC,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,EAAE;YAC1B,OAAO,MAAM,CAAC,kDAAkD,CAAC,CAAA;SAClE;QAED,IAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;QAC/B,MAAM,CAAC,MAAM,GAAG;YACd,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE;gBACrC,OAAO,MAAM,CAAC,kEAAkE,CAAC,CAAA;aAClF;YAED,IAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE,CAAA;YAC7C,GAAG,CAAC,MAAM,GAAG,cAAM,OAAA,OAAO,CAAC,GAAG,CAAC,EAAZ,CAAY,CAAA;YAC/B,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;YACpB,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAA;QACzB,CAAC,CAAA;QACD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAA;QACvB,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC"} -------------------------------------------------------------------------------- /build/es6/dom/createCanvas.d.ts: -------------------------------------------------------------------------------- 1 | import { IDimensions } from '../classes/Dimensions'; 2 | export declare function createCanvas({ width, height }: IDimensions): HTMLCanvasElement; 3 | export declare function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement; 4 | -------------------------------------------------------------------------------- /build/es6/dom/fetchImage.d.ts: -------------------------------------------------------------------------------- 1 | export declare function fetchImage(uri: string): Promise; 2 | -------------------------------------------------------------------------------- /build/es6/dom/fetchImage.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"fetchImage.js","sourceRoot":"","sources":["../../../src/dom/fetchImage.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAgB,UAAU,CAAC,GAAW;;;;;wBAC9B,qBAAM,YAAY,CAAC,GAAG,CAAC,EAAA;;oBAA7B,GAAG,GAAG,SAAuB;oBACtB,qBAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAA;;oBAAzB,IAAI,GAAG,SAAkB;oBAE/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;wBACnC,MAAM,IAAI,KAAK,CAAC,0EAAwE,IAAI,CAAC,IAAI,mBAAc,GAAG,CAAC,GAAK,CAAC,CAAA;qBAC1H;oBACD,sBAAO,aAAa,CAAC,IAAI,CAAC,EAAA;;;;CAC3B"} -------------------------------------------------------------------------------- /build/es6/dom/fetchJson.d.ts: -------------------------------------------------------------------------------- 1 | export declare function fetchJson(uri: string): Promise; 2 | -------------------------------------------------------------------------------- /build/es6/dom/fetchJson.js: -------------------------------------------------------------------------------- 1 | import { __awaiter, __generator } from "tslib"; 2 | import { fetchOrThrow } from './fetchOrThrow'; 3 | export function fetchJson(uri) { 4 | return __awaiter(this, void 0, void 0, function () { 5 | return __generator(this, function (_a) { 6 | switch (_a.label) { 7 | case 0: return [4 /*yield*/, fetchOrThrow(uri)]; 8 | case 1: return [2 /*return*/, (_a.sent()).json()]; 9 | } 10 | }); 11 | }); 12 | } 13 | //# sourceMappingURL=fetchJson.js.map -------------------------------------------------------------------------------- /build/es6/dom/fetchJson.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"fetchJson.js","sourceRoot":"","sources":["../../../src/dom/fetchJson.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAgB,SAAS,CAAI,GAAW;;;;wBACpC,qBAAM,YAAY,CAAC,GAAG,CAAC,EAAA;wBAA/B,sBAAO,CAAC,SAAuB,CAAC,CAAC,IAAI,EAAE,EAAA;;;;CACxC"} -------------------------------------------------------------------------------- /build/es6/dom/fetchNetWeights.d.ts: -------------------------------------------------------------------------------- 1 | export declare function fetchNetWeights(uri: string): Promise; 2 | -------------------------------------------------------------------------------- /build/es6/dom/fetchNetWeights.js: -------------------------------------------------------------------------------- 1 | import { __awaiter, __generator } from "tslib"; 2 | import { fetchOrThrow } from './fetchOrThrow'; 3 | export function fetchNetWeights(uri) { 4 | return __awaiter(this, void 0, void 0, function () { 5 | var _a; 6 | return __generator(this, function (_b) { 7 | switch (_b.label) { 8 | case 0: 9 | _a = Float32Array.bind; 10 | return [4 /*yield*/, fetchOrThrow(uri)]; 11 | case 1: return [4 /*yield*/, (_b.sent()).arrayBuffer()]; 12 | case 2: return [2 /*return*/, new (_a.apply(Float32Array, [void 0, _b.sent()]))()]; 13 | } 14 | }); 15 | }); 16 | } 17 | //# sourceMappingURL=fetchNetWeights.js.map -------------------------------------------------------------------------------- /build/es6/dom/fetchNetWeights.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"fetchNetWeights.js","sourceRoot":"","sources":["../../../src/dom/fetchNetWeights.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAgB,eAAe,CAAC,GAAW;;;;;;yBACpC,YAAY;oBAAQ,qBAAM,YAAY,CAAC,GAAG,CAAC,EAAA;wBAA9B,qBAAM,CAAC,SAAuB,CAAC,CAAC,WAAW,EAAE,EAAA;wBAArE,sBAAO,cAAI,YAAY,WAAC,SAA6C,KAAC,EAAA;;;;CACvE"} -------------------------------------------------------------------------------- /build/es6/dom/fetchOrThrow.d.ts: -------------------------------------------------------------------------------- 1 | export declare function fetchOrThrow(url: string, init?: RequestInit): Promise; 2 | -------------------------------------------------------------------------------- /build/es6/dom/fetchOrThrow.js: -------------------------------------------------------------------------------- 1 | import { __awaiter, __generator } from "tslib"; 2 | import { env } from '../env'; 3 | export function fetchOrThrow(url, init) { 4 | return __awaiter(this, void 0, void 0, function () { 5 | var fetch, res; 6 | return __generator(this, function (_a) { 7 | switch (_a.label) { 8 | case 0: 9 | fetch = env.getEnv().fetch; 10 | return [4 /*yield*/, fetch(url, init)]; 11 | case 1: 12 | res = _a.sent(); 13 | if (!(res.status < 400)) { 14 | throw new Error("failed to fetch: (" + res.status + ") " + res.statusText + ", from url: " + res.url); 15 | } 16 | return [2 /*return*/, res]; 17 | } 18 | }); 19 | }); 20 | } 21 | //# sourceMappingURL=fetchOrThrow.js.map -------------------------------------------------------------------------------- /build/es6/dom/fetchOrThrow.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"fetchOrThrow.js","sourceRoot":"","sources":["../../../src/dom/fetchOrThrow.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,MAAM,UAAgB,YAAY,CAChC,GAAW,EACX,IAAkB;;;;;;oBAGZ,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAA;oBACpB,qBAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAA;;oBAA5B,GAAG,GAAG,SAAsB;oBAClC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;wBACvB,MAAM,IAAI,KAAK,CAAC,uBAAqB,GAAG,CAAC,MAAM,UAAK,GAAG,CAAC,UAAU,oBAAe,GAAG,CAAC,GAAK,CAAC,CAAA;qBAC5F;oBACD,sBAAO,GAAG,EAAA;;;;CACX"} -------------------------------------------------------------------------------- /build/es6/dom/getContext2dOrThrow.d.ts: -------------------------------------------------------------------------------- 1 | export declare function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D; 2 | -------------------------------------------------------------------------------- /build/es6/dom/getContext2dOrThrow.js: -------------------------------------------------------------------------------- 1 | import { env } from '../env'; 2 | import { resolveInput } from './resolveInput'; 3 | export function getContext2dOrThrow(canvasArg) { 4 | var _a = env.getEnv(), Canvas = _a.Canvas, CanvasRenderingContext2D = _a.CanvasRenderingContext2D; 5 | if (canvasArg instanceof CanvasRenderingContext2D) { 6 | return canvasArg; 7 | } 8 | var canvas = resolveInput(canvasArg); 9 | if (!(canvas instanceof Canvas)) { 10 | throw new Error('resolveContext2d - expected canvas to be of instance of Canvas'); 11 | } 12 | var ctx = canvas.getContext('2d'); 13 | if (!ctx) { 14 | throw new Error('resolveContext2d - canvas 2d context is null'); 15 | } 16 | return ctx; 17 | } 18 | //# sourceMappingURL=getContext2dOrThrow.js.map -------------------------------------------------------------------------------- /build/es6/dom/getContext2dOrThrow.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"getContext2dOrThrow.js","sourceRoot":"","sources":["../../../src/dom/getContext2dOrThrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,mBAAmB,CAAC,SAAgE;IAE5F,IAAA,iBAAmD,EAAjD,kBAAM,EAAE,sDAAyC,CAAA;IAEzD,IAAI,SAAS,YAAY,wBAAwB,EAAE;QACjD,OAAO,SAAS,CAAA;KACjB;IAED,IAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IAEtC,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,CAAC,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;KAClF;IAED,IAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;KAChE;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"} -------------------------------------------------------------------------------- /build/es6/dom/getMediaDimensions.d.ts: -------------------------------------------------------------------------------- 1 | import { Dimensions, IDimensions } from '../classes/Dimensions'; 2 | export declare function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions; 3 | -------------------------------------------------------------------------------- /build/es6/dom/getMediaDimensions.js: -------------------------------------------------------------------------------- 1 | import { Dimensions } from '../classes/Dimensions'; 2 | import { env } from '../env'; 3 | export function getMediaDimensions(input) { 4 | var _a = env.getEnv(), Image = _a.Image, Video = _a.Video; 5 | if (input instanceof Image) { 6 | return new Dimensions(input.naturalWidth, input.naturalHeight); 7 | } 8 | if (input instanceof Video) { 9 | return new Dimensions(input.videoWidth, input.videoHeight); 10 | } 11 | return new Dimensions(input.width, input.height); 12 | } 13 | //# sourceMappingURL=getMediaDimensions.js.map -------------------------------------------------------------------------------- /build/es6/dom/getMediaDimensions.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"getMediaDimensions.js","sourceRoot":"","sources":["../../../src/dom/getMediaDimensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,MAAM,UAAU,kBAAkB,CAAC,KAA4E;IAEvG,IAAA,iBAA+B,EAA7B,gBAAK,EAAE,gBAAsB,CAAA;IAErC,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;KAC/D;IACD,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;KAC3D;IACD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;AAClD,CAAC"} -------------------------------------------------------------------------------- /build/es6/dom/imageTensorToCanvas.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export declare function imageTensorToCanvas(imgTensor: tf.Tensor, canvas?: HTMLCanvasElement): Promise; 3 | -------------------------------------------------------------------------------- /build/es6/dom/imageTensorToCanvas.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"imageTensorToCanvas.js","sourceRoot":"","sources":["../../../src/dom/imageTensorToCanvas.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,UAAgB,mBAAmB,CACvC,SAAoB,EACpB,MAA0B;;;;;;oBAGpB,YAAY,GAAG,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,mBAAmB,EAAE,CAAA;oBAE3D,KAA+B,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAlF,MAAM,QAAA,EAAE,KAAK,QAAA,EAAE,WAAW,QAAA,CAAwD;oBACnF,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,cAAM,OAAA,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,KAAK,EAAE,EAAlD,CAAkD,CAAC,CAAA;oBACrF,qBAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,EAAA;;oBAApD,SAAoD,CAAA;oBAEpD,WAAW,CAAC,OAAO,EAAE,CAAA;oBAErB,sBAAO,YAAY,EAAA;;;;CACpB"} -------------------------------------------------------------------------------- /build/es6/dom/imageToSquare.d.ts: -------------------------------------------------------------------------------- 1 | export declare function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage?: boolean): HTMLCanvasElement; 2 | -------------------------------------------------------------------------------- /build/es6/dom/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './awaitMediaLoaded'; 2 | export * from './bufferToImage'; 3 | export * from './createCanvas'; 4 | export * from './fetchImage'; 5 | export * from './fetchJson'; 6 | export * from './fetchNetWeights'; 7 | export * from './fetchOrThrow'; 8 | export * from './getContext2dOrThrow'; 9 | export * from './getMediaDimensions'; 10 | export * from './imageTensorToCanvas'; 11 | export * from './imageToSquare'; 12 | export * from './isMediaElement'; 13 | export * from './isMediaLoaded'; 14 | export * from './loadWeightMap'; 15 | export * from './matchDimensions'; 16 | export * from './NetInput'; 17 | export * from './resolveInput'; 18 | export * from './toNetInput'; 19 | export * from './types'; 20 | -------------------------------------------------------------------------------- /build/es6/dom/index.js: -------------------------------------------------------------------------------- 1 | export * from './awaitMediaLoaded'; 2 | export * from './bufferToImage'; 3 | export * from './createCanvas'; 4 | export * from './fetchImage'; 5 | export * from './fetchJson'; 6 | export * from './fetchNetWeights'; 7 | export * from './fetchOrThrow'; 8 | export * from './getContext2dOrThrow'; 9 | export * from './getMediaDimensions'; 10 | export * from './imageTensorToCanvas'; 11 | export * from './imageToSquare'; 12 | export * from './isMediaElement'; 13 | export * from './isMediaLoaded'; 14 | export * from './loadWeightMap'; 15 | export * from './matchDimensions'; 16 | export * from './NetInput'; 17 | export * from './resolveInput'; 18 | export * from './toNetInput'; 19 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/es6/dom/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dom/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA"} -------------------------------------------------------------------------------- /build/es6/dom/isMediaElement.d.ts: -------------------------------------------------------------------------------- 1 | export declare function isMediaElement(input: any): boolean; 2 | -------------------------------------------------------------------------------- /build/es6/dom/isMediaElement.js: -------------------------------------------------------------------------------- 1 | import { env } from '../env'; 2 | export function isMediaElement(input) { 3 | var _a = env.getEnv(), Image = _a.Image, Canvas = _a.Canvas, Video = _a.Video; 4 | return input instanceof Image 5 | || input instanceof Canvas 6 | || input instanceof Video; 7 | } 8 | //# sourceMappingURL=isMediaElement.js.map -------------------------------------------------------------------------------- /build/es6/dom/isMediaElement.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"isMediaElement.js","sourceRoot":"","sources":["../../../src/dom/isMediaElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,MAAM,UAAU,cAAc,CAAC,KAAU;IAEjC,IAAA,iBAAuC,EAArC,gBAAK,EAAE,kBAAM,EAAE,gBAAsB,CAAA;IAE7C,OAAO,KAAK,YAAY,KAAK;WACxB,KAAK,YAAY,MAAM;WACvB,KAAK,YAAY,KAAK,CAAA;AAC7B,CAAC"} -------------------------------------------------------------------------------- /build/es6/dom/isMediaLoaded.d.ts: -------------------------------------------------------------------------------- 1 | export declare function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement): boolean; 2 | -------------------------------------------------------------------------------- /build/es6/dom/isMediaLoaded.js: -------------------------------------------------------------------------------- 1 | import { env } from '../env'; 2 | export function isMediaLoaded(media) { 3 | var _a = env.getEnv(), Image = _a.Image, Video = _a.Video; 4 | return (media instanceof Image && media.complete) 5 | || (media instanceof Video && media.readyState >= 3); 6 | } 7 | //# sourceMappingURL=isMediaLoaded.js.map -------------------------------------------------------------------------------- /build/es6/dom/isMediaLoaded.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"isMediaLoaded.js","sourceRoot":"","sources":["../../../src/dom/isMediaLoaded.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,MAAM,UAAU,aAAa,CAAC,KAA0C;IAEhE,IAAA,iBAA+B,EAA7B,gBAAK,EAAE,gBAAsB,CAAA;IAErC,OAAO,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC;WAC5C,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAA;AACxD,CAAC"} -------------------------------------------------------------------------------- /build/es6/dom/loadWeightMap.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export declare function loadWeightMap(uri: string | undefined, defaultModelName: string): Promise; 3 | -------------------------------------------------------------------------------- /build/es6/dom/loadWeightMap.js: -------------------------------------------------------------------------------- 1 | import { __awaiter, __generator } from "tslib"; 2 | import * as tf from '@tensorflow/tfjs-core'; 3 | import { getModelUris } from '../common/getModelUris'; 4 | import { fetchJson } from './fetchJson'; 5 | export function loadWeightMap(uri, defaultModelName) { 6 | return __awaiter(this, void 0, void 0, function () { 7 | var _a, manifestUri, modelBaseUri, manifest; 8 | return __generator(this, function (_b) { 9 | switch (_b.label) { 10 | case 0: 11 | _a = getModelUris(uri, defaultModelName), manifestUri = _a.manifestUri, modelBaseUri = _a.modelBaseUri; 12 | return [4 /*yield*/, fetchJson(manifestUri)]; 13 | case 1: 14 | manifest = _b.sent(); 15 | return [2 /*return*/, tf.io.loadWeights(manifest, modelBaseUri)]; 16 | } 17 | }); 18 | }); 19 | } 20 | //# sourceMappingURL=loadWeightMap.js.map -------------------------------------------------------------------------------- /build/es6/dom/loadWeightMap.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"loadWeightMap.js","sourceRoot":"","sources":["../../../src/dom/loadWeightMap.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,UAAgB,aAAa,CACjC,GAAuB,EACvB,gBAAwB;;;;;;oBAElB,KAAgC,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAjE,WAAW,iBAAA,EAAE,YAAY,kBAAA,CAAwC;oBAExD,qBAAM,SAAS,CAA8B,WAAW,CAAC,EAAA;;oBAApE,QAAQ,GAAG,SAAyD;oBAE1E,sBAAO,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAA;;;;CACjD"} -------------------------------------------------------------------------------- /build/es6/dom/matchDimensions.d.ts: -------------------------------------------------------------------------------- 1 | import { IDimensions } from '../classes'; 2 | export declare function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions?: boolean): { 3 | width: number; 4 | height: number; 5 | }; 6 | -------------------------------------------------------------------------------- /build/es6/dom/matchDimensions.js: -------------------------------------------------------------------------------- 1 | import { getMediaDimensions } from './getMediaDimensions'; 2 | export function matchDimensions(input, reference, useMediaDimensions) { 3 | if (useMediaDimensions === void 0) { useMediaDimensions = false; } 4 | var _a = useMediaDimensions 5 | ? getMediaDimensions(reference) 6 | : reference, width = _a.width, height = _a.height; 7 | input.width = width; 8 | input.height = height; 9 | return { width: width, height: height }; 10 | } 11 | //# sourceMappingURL=matchDimensions.js.map -------------------------------------------------------------------------------- /build/es6/dom/matchDimensions.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"matchDimensions.js","sourceRoot":"","sources":["../../../src/dom/matchDimensions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,UAAU,eAAe,CAAC,KAAkB,EAAE,SAAsB,EAAE,kBAAmC;IAAnC,mCAAA,EAAA,0BAAmC;IACvG,IAAA;;mBAEO,EAFL,gBAAK,EAAE,kBAEF,CAAA;IACb,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;IACnB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;IACrB,OAAO,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAA;AAC1B,CAAC"} -------------------------------------------------------------------------------- /build/es6/dom/resolveInput.d.ts: -------------------------------------------------------------------------------- 1 | export declare function resolveInput(arg: string | any): any; 2 | -------------------------------------------------------------------------------- /build/es6/dom/resolveInput.js: -------------------------------------------------------------------------------- 1 | import { env } from '../env'; 2 | export function resolveInput(arg) { 3 | if (!env.isNodejs() && typeof arg === 'string') { 4 | return document.getElementById(arg); 5 | } 6 | return arg; 7 | } 8 | //# sourceMappingURL=resolveInput.js.map -------------------------------------------------------------------------------- /build/es6/dom/resolveInput.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"resolveInput.js","sourceRoot":"","sources":["../../../src/dom/resolveInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,MAAM,UAAU,YAAY,CAAC,GAAiB;IAC5C,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC9C,OAAO,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;KACpC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"} -------------------------------------------------------------------------------- /build/es6/dom/toNetInput.d.ts: -------------------------------------------------------------------------------- 1 | import { NetInput } from './NetInput'; 2 | import { TNetInput } from './types'; 3 | /** 4 | * Validates the input to make sure, they are valid net inputs and awaits all media elements 5 | * to be finished loading. 6 | * 7 | * @param input The input, which can be a media element or an array of different media elements. 8 | * @returns A NetInput instance, which can be passed into one of the neural networks. 9 | */ 10 | export declare function toNetInput(inputs: TNetInput): Promise; 11 | -------------------------------------------------------------------------------- /build/es6/dom/types.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | import { NetInput } from './NetInput'; 3 | export declare type TMediaElement = HTMLImageElement | HTMLVideoElement | HTMLCanvasElement; 4 | export declare type TResolvedNetInput = TMediaElement | tf.Tensor3D | tf.Tensor4D; 5 | export declare type TNetInputArg = string | TResolvedNetInput; 6 | export declare type TNetInput = TNetInputArg | Array | NetInput | tf.Tensor4D; 7 | -------------------------------------------------------------------------------- /build/es6/dom/types.js: -------------------------------------------------------------------------------- 1 | //# sourceMappingURL=types.js.map -------------------------------------------------------------------------------- /build/es6/dom/types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dom/types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /build/es6/draw/DrawBox.d.ts: -------------------------------------------------------------------------------- 1 | import { Box, IBoundingBox, IRect } from '../classes'; 2 | import { DrawTextFieldOptions, IDrawTextFieldOptions } from './DrawTextField'; 3 | export interface IDrawBoxOptions { 4 | boxColor?: string; 5 | lineWidth?: number; 6 | drawLabelOptions?: IDrawTextFieldOptions; 7 | label?: string; 8 | } 9 | export declare class DrawBoxOptions { 10 | boxColor: string; 11 | lineWidth: number; 12 | drawLabelOptions: DrawTextFieldOptions; 13 | label?: string; 14 | constructor(options?: IDrawBoxOptions); 15 | } 16 | export declare class DrawBox { 17 | box: Box; 18 | options: DrawBoxOptions; 19 | constructor(box: IBoundingBox | IRect, options?: IDrawBoxOptions); 20 | draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): void; 21 | } 22 | -------------------------------------------------------------------------------- /build/es6/draw/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './DrawBox'; 2 | export * from './DrawTextField'; 3 | -------------------------------------------------------------------------------- /build/es6/draw/index.js: -------------------------------------------------------------------------------- 1 | export * from './DrawBox'; 2 | export * from './DrawTextField'; 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/es6/draw/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/draw/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"} -------------------------------------------------------------------------------- /build/es6/env/createBrowserEnv.d.ts: -------------------------------------------------------------------------------- 1 | import { Environment } from './types'; 2 | export declare function createBrowserEnv(): Environment; 3 | -------------------------------------------------------------------------------- /build/es6/env/createBrowserEnv.js: -------------------------------------------------------------------------------- 1 | export function createBrowserEnv() { 2 | var fetch = window['fetch'] || function () { 3 | throw new Error('fetch - missing fetch implementation for browser environment'); 4 | }; 5 | var readFile = function () { 6 | throw new Error('readFile - filesystem not available for browser environment'); 7 | }; 8 | return { 9 | Canvas: HTMLCanvasElement, 10 | CanvasRenderingContext2D: CanvasRenderingContext2D, 11 | Image: HTMLImageElement, 12 | ImageData: ImageData, 13 | Video: HTMLVideoElement, 14 | createCanvasElement: function () { return document.createElement('canvas'); }, 15 | createImageElement: function () { return document.createElement('img'); }, 16 | fetch: fetch, 17 | readFile: readFile 18 | }; 19 | } 20 | //# sourceMappingURL=createBrowserEnv.js.map -------------------------------------------------------------------------------- /build/es6/env/createBrowserEnv.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"createBrowserEnv.js","sourceRoot":"","sources":["../../../src/env/createBrowserEnv.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB;IAE9B,IAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI;QAC/B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC,CAAA;IAED,IAAM,QAAQ,GAAG;QACf,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC,CAAA;IAED,OAAO;QACL,MAAM,EAAE,iBAAiB;QACzB,wBAAwB,EAAE,wBAAwB;QAClD,KAAK,EAAE,gBAAgB;QACvB,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,gBAAgB;QACvB,mBAAmB,EAAE,cAAM,OAAA,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAhC,CAAgC;QAC3D,kBAAkB,EAAE,cAAM,OAAA,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAA7B,CAA6B;QACvD,KAAK,OAAA;QACL,QAAQ,UAAA;KACT,CAAA;AACH,CAAC"} -------------------------------------------------------------------------------- /build/es6/env/createFileSystem.d.ts: -------------------------------------------------------------------------------- 1 | import { FileSystem } from './types'; 2 | export declare function createFileSystem(fs?: any): FileSystem; 3 | -------------------------------------------------------------------------------- /build/es6/env/createFileSystem.js: -------------------------------------------------------------------------------- 1 | export function createFileSystem(fs) { 2 | var requireFsError = ''; 3 | if (!fs) { 4 | try { 5 | fs = require('fs'); 6 | } 7 | catch (err) { 8 | requireFsError = err.toString(); 9 | } 10 | } 11 | var readFile = fs 12 | ? function (filePath) { 13 | return new Promise(function (res, rej) { 14 | fs.readFile(filePath, function (err, buffer) { 15 | return err ? rej(err) : res(buffer); 16 | }); 17 | }); 18 | } 19 | : function () { 20 | throw new Error("readFile - failed to require fs in nodejs environment with error: " + requireFsError); 21 | }; 22 | return { 23 | readFile: readFile 24 | }; 25 | } 26 | //# sourceMappingURL=createFileSystem.js.map -------------------------------------------------------------------------------- /build/es6/env/createFileSystem.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"createFileSystem.js","sourceRoot":"","sources":["../../../src/env/createFileSystem.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,EAAQ;IAEvC,IAAI,cAAc,GAAG,EAAE,CAAA;IAEvB,IAAI,CAAC,EAAE,EAAE;QACP,IAAI;YACF,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;SACnB;QAAC,OAAO,GAAG,EAAE;YACZ,cAAc,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;SAChC;KACF;IAED,IAAM,QAAQ,GAAG,EAAE;QACjB,CAAC,CAAC,UAAS,QAAgB;YACzB,OAAO,IAAI,OAAO,CAAS,UAAC,GAAG,EAAE,GAAG;gBAClC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAS,GAAQ,EAAE,MAAc;oBACrD,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACrC,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,CAAC,CAAC;YACA,MAAM,IAAI,KAAK,CAAC,uEAAqE,cAAgB,CAAC,CAAA;QACxG,CAAC,CAAA;IAEH,OAAO;QACL,QAAQ,UAAA;KACT,CAAA;AACH,CAAC"} -------------------------------------------------------------------------------- /build/es6/env/createNodejsEnv.d.ts: -------------------------------------------------------------------------------- 1 | import { Environment } from './types'; 2 | export declare function createNodejsEnv(): Environment; 3 | -------------------------------------------------------------------------------- /build/es6/env/index.d.ts: -------------------------------------------------------------------------------- 1 | import { createBrowserEnv } from './createBrowserEnv'; 2 | import { createFileSystem } from './createFileSystem'; 3 | import { createNodejsEnv } from './createNodejsEnv'; 4 | import { isBrowser } from './isBrowser'; 5 | import { isNodejs } from './isNodejs'; 6 | import { Environment } from './types'; 7 | declare function getEnv(): Environment; 8 | declare function setEnv(env: Environment): void; 9 | declare function initialize(): void; 10 | declare function monkeyPatch(env: Partial): void; 11 | export declare const env: { 12 | getEnv: typeof getEnv; 13 | setEnv: typeof setEnv; 14 | initialize: typeof initialize; 15 | createBrowserEnv: typeof createBrowserEnv; 16 | createFileSystem: typeof createFileSystem; 17 | createNodejsEnv: typeof createNodejsEnv; 18 | monkeyPatch: typeof monkeyPatch; 19 | isBrowser: typeof isBrowser; 20 | isNodejs: typeof isNodejs; 21 | }; 22 | export * from './types'; 23 | -------------------------------------------------------------------------------- /build/es6/env/isBrowser.d.ts: -------------------------------------------------------------------------------- 1 | export declare function isBrowser(): boolean; 2 | -------------------------------------------------------------------------------- /build/es6/env/isBrowser.js: -------------------------------------------------------------------------------- 1 | export function isBrowser() { 2 | return typeof window === 'object' 3 | && typeof document !== 'undefined' 4 | && typeof HTMLImageElement !== 'undefined' 5 | && typeof HTMLCanvasElement !== 'undefined' 6 | && typeof HTMLVideoElement !== 'undefined' 7 | && typeof ImageData !== 'undefined' 8 | && typeof CanvasRenderingContext2D !== 'undefined'; 9 | } 10 | //# sourceMappingURL=isBrowser.js.map -------------------------------------------------------------------------------- /build/es6/env/isBrowser.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"isBrowser.js","sourceRoot":"","sources":["../../../src/env/isBrowser.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,MAAM,KAAK,QAAQ;WAC5B,OAAO,QAAQ,KAAK,WAAW;WAC/B,OAAO,gBAAgB,KAAK,WAAW;WACvC,OAAO,iBAAiB,KAAK,WAAW;WACxC,OAAO,gBAAgB,KAAK,WAAW;WACvC,OAAO,SAAS,KAAK,WAAW;WAChC,OAAO,wBAAwB,KAAK,WAAW,CAAA;AACtD,CAAC"} -------------------------------------------------------------------------------- /build/es6/env/isNodejs.d.ts: -------------------------------------------------------------------------------- 1 | export declare function isNodejs(): boolean; 2 | -------------------------------------------------------------------------------- /build/es6/env/isNodejs.js: -------------------------------------------------------------------------------- 1 | export function isNodejs() { 2 | return typeof global === 'object' 3 | && typeof require === 'function' 4 | && typeof module !== 'undefined' 5 | // issues with gatsby.js: module.exports is undefined 6 | // && !!module.exports 7 | && typeof process !== 'undefined' && !!process.version; 8 | } 9 | //# sourceMappingURL=isNodejs.js.map -------------------------------------------------------------------------------- /build/es6/env/isNodejs.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"isNodejs.js","sourceRoot":"","sources":["../../../src/env/isNodejs.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ;IACtB,OAAO,OAAO,MAAM,KAAK,QAAQ;WAC5B,OAAO,OAAO,KAAK,UAAU;WAC7B,OAAO,MAAM,KAAK,WAAW;QAChC,qDAAqD;QACrD,sBAAsB;WACnB,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;AAC1D,CAAC"} -------------------------------------------------------------------------------- /build/es6/env/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export declare type FileSystem = { 3 | readFile: (filePath: string) => Promise; 4 | }; 5 | export declare type Environment = FileSystem & { 6 | Canvas: typeof HTMLCanvasElement; 7 | CanvasRenderingContext2D: typeof CanvasRenderingContext2D; 8 | Image: typeof HTMLImageElement; 9 | ImageData: typeof ImageData; 10 | Video: typeof HTMLVideoElement; 11 | createCanvasElement: () => HTMLCanvasElement; 12 | createImageElement: () => HTMLImageElement; 13 | fetch: (url: string, init?: RequestInit) => Promise; 14 | }; 15 | -------------------------------------------------------------------------------- /build/es6/env/types.js: -------------------------------------------------------------------------------- 1 | //# sourceMappingURL=types.js.map -------------------------------------------------------------------------------- /build/es6/env/types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/env/types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /build/es6/index.d.ts: -------------------------------------------------------------------------------- 1 | import * as draw from './draw'; 2 | import * as TfjsImageRecognitionBase from './tfjsImageRecognitionBase'; 3 | export * from './classes/index'; 4 | export * from './dom/index'; 5 | export * from './env/index'; 6 | export * from './ops/index'; 7 | export * from './utils'; 8 | export * from './NeuralNetwork'; 9 | export { draw }; 10 | export { TfjsImageRecognitionBase }; 11 | -------------------------------------------------------------------------------- /build/es6/index.js: -------------------------------------------------------------------------------- 1 | import * as draw from './draw'; 2 | import * as TfjsImageRecognitionBase from './tfjsImageRecognitionBase'; 3 | export * from './classes/index'; 4 | export * from './dom/index'; 5 | export * from './env/index'; 6 | export * from './ops/index'; 7 | export * from './utils'; 8 | export * from './NeuralNetwork'; 9 | export { draw }; 10 | // modules, which are not to be reexported 11 | export { TfjsImageRecognitionBase }; 12 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/es6/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,wBAAwB,MAAM,4BAA4B,CAAC;AAEvE,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,CAAA;AACf,0CAA0C;AAC1C,OAAO,EAAE,wBAAwB,EAAE,CAAA"} -------------------------------------------------------------------------------- /build/es6/metrics/assignFalseAndTruePositives.d.ts: -------------------------------------------------------------------------------- 1 | import { Box } from '../classes/Box'; 2 | /** 3 | * Categorize predicted boxes of an image as true or false positives based on IOU to ground truth boxes. 4 | * 5 | * @param groundTruth Ground truth boxes for that image. 6 | * @param predictions Predicted boxes and for that image. 7 | * @param iouThreshold IOU threshold at which a predicted box is considered to be a true positive. 8 | * @returns AP 9 | */ 10 | export declare function assignFalseAndTruePositives(groundTruth: T[], predictions: S[], iouThreshold: number): { 11 | truePositives: S[]; 12 | falsePositives: S[]; 13 | }; 14 | export declare function createSortedIouPairs(groundTruth: T[], predictions: S[]): { 15 | pred: S; 16 | gt: T; 17 | iou: number; 18 | }[]; 19 | -------------------------------------------------------------------------------- /build/es6/metrics/averagePrecision.d.ts: -------------------------------------------------------------------------------- 1 | import { GroundTruthsAndPredictions } from './types'; 2 | /** 3 | * Calculates the average precision (AP) over 11 recall levels between [0, 1]. 4 | * 5 | * @param inputs Array of ground truth and predicted boxes of each image. 6 | * @param iouThreshold IOU threshold at which a predicted box is considered to be a true positive. 7 | * @returns AP 8 | */ 9 | export declare function averagePrecision(inputs: GroundTruthsAndPredictions[], iouThreshold: number): { 10 | averagePrec: number; 11 | accumulatedTps: number; 12 | accumulatedFps: number; 13 | }; 14 | -------------------------------------------------------------------------------- /build/es6/metrics/meanAveragePrecision.d.ts: -------------------------------------------------------------------------------- 1 | import { GroundTruthsAndPredictions } from './types'; 2 | /** 3 | * Calculates the mean average precision (mAP) over all classes. 4 | * 5 | * @param inputs Array ground truth and predicted boxes of each image labeled by class. 6 | * @param iouThreshold IOU threshold at which a predicted box is considered to be a true positive. 7 | * @returns mAP 8 | */ 9 | export declare function meanAveragePrecision(inputs: GroundTruthsAndPredictions[], iouThreshold?: number, classScoreThreshold?: number): { 10 | meanAveragePrec: number; 11 | averagePrecisionsByClass: { 12 | averagePrec: number; 13 | accumulatedTps: number; 14 | accumulatedFps: number; 15 | classLabel: number; 16 | }[]; 17 | }; 18 | -------------------------------------------------------------------------------- /build/es6/metrics/types.d.ts: -------------------------------------------------------------------------------- 1 | import { LabeledBox } from '../classes/LabeledBox'; 2 | import { PredictedBox } from '../classes/PredictedBox'; 3 | export declare type GroundTruthsAndPredictions = { 4 | groundTruth: LabeledBox[]; 5 | predictions: PredictedBox[]; 6 | }; 7 | -------------------------------------------------------------------------------- /build/es6/metrics/types.js: -------------------------------------------------------------------------------- 1 | //# sourceMappingURL=types.js.map -------------------------------------------------------------------------------- /build/es6/metrics/types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/metrics/types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /build/es6/ops/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './iou'; 2 | export * from './minBbox'; 3 | export * from './nonMaxSuppression'; 4 | export * from './normalize'; 5 | export * from './padToSquare'; 6 | export * from './shuffleArray'; 7 | export declare function sigmoid(x: number): number; 8 | export declare function inverseSigmoid(x: number): number; 9 | -------------------------------------------------------------------------------- /build/es6/ops/index.js: -------------------------------------------------------------------------------- 1 | export * from './iou'; 2 | export * from './minBbox'; 3 | export * from './nonMaxSuppression'; 4 | export * from './normalize'; 5 | export * from './padToSquare'; 6 | export * from './shuffleArray'; 7 | export function sigmoid(x) { 8 | return 1 / (1 + Math.exp(-x)); 9 | } 10 | export function inverseSigmoid(x) { 11 | return Math.log(x / (1 - x)); 12 | } 13 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/es6/ops/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ops/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,WAAW,CAAA;AACzB,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAE9B,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC"} -------------------------------------------------------------------------------- /build/es6/ops/iou.d.ts: -------------------------------------------------------------------------------- 1 | import { Box } from '../classes/Box'; 2 | export declare function iou(box1: Box, box2: Box, isIOU?: boolean): number; 3 | -------------------------------------------------------------------------------- /build/es6/ops/iou.js: -------------------------------------------------------------------------------- 1 | export function iou(box1, box2, isIOU) { 2 | if (isIOU === void 0) { isIOU = true; } 3 | var width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left)); 4 | var height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top)); 5 | var interSection = width * height; 6 | return isIOU 7 | ? interSection / (box1.area + box2.area - interSection) 8 | : interSection / Math.min(box1.area, box2.area); 9 | } 10 | //# sourceMappingURL=iou.js.map -------------------------------------------------------------------------------- /build/es6/ops/iou.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"iou.js","sourceRoot":"","sources":["../../../src/ops/iou.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,CAAC,IAAS,EAAE,IAAS,EAAE,KAAqB;IAArB,sBAAA,EAAA,YAAqB;IAC7D,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9F,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/F,IAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAA;IAEnC,OAAO,KAAK;QACV,CAAC,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACvD,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AACnD,CAAC"} -------------------------------------------------------------------------------- /build/es6/ops/minBbox.d.ts: -------------------------------------------------------------------------------- 1 | import { BoundingBox, IPoint } from '../classes'; 2 | export declare function minBbox(pts: IPoint[]): BoundingBox; 3 | -------------------------------------------------------------------------------- /build/es6/ops/minBbox.js: -------------------------------------------------------------------------------- 1 | import { BoundingBox } from '../classes'; 2 | export function minBbox(pts) { 3 | var xs = pts.map(function (pt) { return pt.x; }); 4 | var ys = pts.map(function (pt) { return pt.y; }); 5 | var minX = xs.reduce(function (min, x) { return x < min ? x : min; }, Infinity); 6 | var minY = ys.reduce(function (min, y) { return y < min ? y : min; }, Infinity); 7 | var maxX = xs.reduce(function (max, x) { return max < x ? x : max; }, 0); 8 | var maxY = ys.reduce(function (max, y) { return max < y ? y : max; }, 0); 9 | return new BoundingBox(minX, minY, maxX, maxY); 10 | } 11 | //# sourceMappingURL=minBbox.js.map -------------------------------------------------------------------------------- /build/es6/ops/nonMaxSuppression.d.ts: -------------------------------------------------------------------------------- 1 | import { Box } from '../classes/Box'; 2 | export declare function nonMaxSuppression(boxes: Box[], scores: number[], iouThreshold: number, isIOU?: boolean): number[]; 3 | -------------------------------------------------------------------------------- /build/es6/ops/normalize.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export declare function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D; 3 | -------------------------------------------------------------------------------- /build/es6/ops/normalize.js: -------------------------------------------------------------------------------- 1 | import { __spreadArrays } from "tslib"; 2 | import * as tf from '@tensorflow/tfjs-core'; 3 | export function normalize(x, meanRgb) { 4 | return tf.tidy(function () { 5 | var r = meanRgb[0], g = meanRgb[1], b = meanRgb[2]; 6 | var avg_r = tf.fill(__spreadArrays(x.shape.slice(0, 3), [1]), r); 7 | var avg_g = tf.fill(__spreadArrays(x.shape.slice(0, 3), [1]), g); 8 | var avg_b = tf.fill(__spreadArrays(x.shape.slice(0, 3), [1]), b); 9 | var avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3); 10 | return tf.sub(x, avg_rgb); 11 | }); 12 | } 13 | //# sourceMappingURL=normalize.js.map -------------------------------------------------------------------------------- /build/es6/ops/normalize.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../../src/ops/normalize.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,MAAM,UAAU,SAAS,CAAC,CAAc,EAAE,OAAiB;IACzD,OAAO,EAAE,CAAC,IAAI,CAAC;QACN,IAAA,cAAC,EAAE,cAAC,EAAE,cAAC,CAAW;QACzB,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,gBAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAE,CAAC,IAAG,CAAC,CAAC,CAAA;QACrD,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,gBAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAE,CAAC,IAAG,CAAC,CAAC,CAAA;QACrD,IAAM,KAAK,GAAG,EAAE,CAAC,IAAI,gBAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAE,CAAC,IAAG,CAAC,CAAC,CAAA;QACrD,IAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QAEnD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC"} -------------------------------------------------------------------------------- /build/es6/ops/padToSquare.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | /** 3 | * Pads the smaller dimension of an image tensor with zeros, such that width === height. 4 | * 5 | * @param imgTensor The image tensor. 6 | * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on 7 | * both sides of the minor dimension oof the image. 8 | * @returns The padded tensor with width === height. 9 | */ 10 | export declare function padToSquare(imgTensor: tf.Tensor4D, isCenterImage?: boolean): tf.Tensor4D; 11 | -------------------------------------------------------------------------------- /build/es6/ops/shuffleArray.d.ts: -------------------------------------------------------------------------------- 1 | export declare function shuffleArray(inputArray: any[]): any[]; 2 | -------------------------------------------------------------------------------- /build/es6/ops/shuffleArray.js: -------------------------------------------------------------------------------- 1 | export function shuffleArray(inputArray) { 2 | var array = inputArray.slice(); 3 | for (var i = array.length - 1; i > 0; i--) { 4 | var j = Math.floor(Math.random() * (i + 1)); 5 | var x = array[i]; 6 | array[i] = array[j]; 7 | array[j] = x; 8 | } 9 | return array; 10 | } 11 | //# sourceMappingURL=shuffleArray.js.map -------------------------------------------------------------------------------- /build/es6/ops/shuffleArray.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"shuffleArray.js","sourceRoot":"","sources":["../../../src/ops/shuffleArray.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,UAAiB;IAC5C,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAA;IAChC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,IAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC7C,IAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAClB,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACnB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;KACf;IACD,OAAO,KAAK,CAAA;AACd,CAAC"} -------------------------------------------------------------------------------- /build/es6/tfjsImageRecognitionBase.d.ts: -------------------------------------------------------------------------------- 1 | export * from './common'; 2 | export * from './tinyYolov2/index'; 3 | -------------------------------------------------------------------------------- /build/es6/tfjsImageRecognitionBase.js: -------------------------------------------------------------------------------- 1 | export * from './common'; 2 | export * from './tinyYolov2/index'; 3 | //# sourceMappingURL=tfjsImageRecognitionBase.js.map -------------------------------------------------------------------------------- /build/es6/tfjsImageRecognitionBase.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"tfjsImageRecognitionBase.js","sourceRoot":"","sources":["../../src/tfjsImageRecognitionBase.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC"} -------------------------------------------------------------------------------- /build/es6/tinyYolov2/TinyYolov2Options.d.ts: -------------------------------------------------------------------------------- 1 | export declare enum TinyYolov2SizeType { 2 | XS = 224, 3 | SM = 320, 4 | MD = 416, 5 | LG = 608 6 | } 7 | export interface ITinyYolov2Options { 8 | inputSize?: number; 9 | scoreThreshold?: number; 10 | } 11 | export declare class TinyYolov2Options { 12 | protected _name: string; 13 | private _inputSize; 14 | private _scoreThreshold; 15 | constructor({ inputSize, scoreThreshold }?: ITinyYolov2Options); 16 | readonly inputSize: number; 17 | readonly scoreThreshold: number; 18 | } 19 | -------------------------------------------------------------------------------- /build/es6/tinyYolov2/TinyYolov2Options.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"TinyYolov2Options.js","sourceRoot":"","sources":["../../../src/tinyYolov2/TinyYolov2Options.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,yDAAQ,CAAA;IACR,yDAAQ,CAAA;IACR,yDAAQ,CAAA;IACR,yDAAQ,CAAA;AACV,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;AAOD;IAME,2BAAY,EAAsD;YAAtD,4BAAsD,EAApD,wBAAS,EAAE,kCAAc;QAL7B,UAAK,GAAW,mBAAmB,CAAA;QAM3C,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,GAAG,CAAA;QAClC,IAAI,CAAC,eAAe,GAAG,cAAc,IAAI,GAAG,CAAA;QAE5C,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE;YACrE,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,yDAAsD,CAAC,CAAA;SACrF;QAED,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,EAAE;YACtG,MAAM,IAAI,KAAK,CAAI,IAAI,CAAC,KAAK,8DAA2D,CAAC,CAAA;SAC1F;IACH,CAAC;IAED,sBAAI,wCAAS;aAAb,cAA0B,OAAO,IAAI,CAAC,UAAU,CAAA,CAAC,CAAC;;;OAAA;IAClD,sBAAI,6CAAc;aAAlB,cAA+B,OAAO,IAAI,CAAC,eAAe,CAAA,CAAC,CAAC;;;OAAA;IAC9D,wBAAC;AAAD,CAAC,AArBD,IAqBC"} -------------------------------------------------------------------------------- /build/es6/tinyYolov2/config.d.ts: -------------------------------------------------------------------------------- 1 | import { Point } from '../classes/Point'; 2 | export declare type TinyYolov2Config = { 3 | withSeparableConvs: boolean; 4 | iouThreshold: number; 5 | anchors: Point[]; 6 | classes: string[]; 7 | meanRgb?: [number, number, number]; 8 | withClassScores?: boolean; 9 | filterSizes?: number[]; 10 | isFirstLayerConv2d?: boolean; 11 | }; 12 | export declare function validateConfig(config: any): void; 13 | -------------------------------------------------------------------------------- /build/es6/tinyYolov2/convWithBatchNorm.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | import { ConvWithBatchNorm } from './types'; 3 | export declare function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D; 4 | -------------------------------------------------------------------------------- /build/es6/tinyYolov2/convWithBatchNorm.js: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | import { leaky } from './leaky'; 3 | export function convWithBatchNorm(x, params) { 4 | return tf.tidy(function () { 5 | var out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]); 6 | out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid'); 7 | out = tf.sub(out, params.bn.sub); 8 | out = tf.mul(out, params.bn.truediv); 9 | out = tf.add(out, params.conv.bias); 10 | return leaky(out); 11 | }); 12 | } 13 | //# sourceMappingURL=convWithBatchNorm.js.map -------------------------------------------------------------------------------- /build/es6/tinyYolov2/convWithBatchNorm.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"convWithBatchNorm.js","sourceRoot":"","sources":["../../../src/tinyYolov2/convWithBatchNorm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,MAAM,UAAU,iBAAiB,CAAC,CAAc,EAAE,MAAyB;IACzE,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAgB,CAAA;QAEpE,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC1D,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QAChC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;QACpC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEnC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC"} -------------------------------------------------------------------------------- /build/es6/tinyYolov2/depthwiseSeparableConv.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | import { SeparableConvParams } from '../common/types'; 3 | export declare function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D; 4 | -------------------------------------------------------------------------------- /build/es6/tinyYolov2/depthwiseSeparableConv.js: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | import { leaky } from './leaky'; 3 | export function depthwiseSeparableConv(x, params) { 4 | return tf.tidy(function () { 5 | var out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]); 6 | out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid'); 7 | out = tf.add(out, params.bias); 8 | return leaky(out); 9 | }); 10 | } 11 | //# sourceMappingURL=depthwiseSeparableConv.js.map -------------------------------------------------------------------------------- /build/es6/tinyYolov2/depthwiseSeparableConv.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"depthwiseSeparableConv.js","sourceRoot":"","sources":["../../../src/tinyYolov2/depthwiseSeparableConv.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG5C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,MAAM,UAAU,sBAAsB,CAAC,CAAc,EAAE,MAA2B;IAChF,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAgB,CAAA;QAEpE,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAChG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAE9B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC"} -------------------------------------------------------------------------------- /build/es6/tinyYolov2/extractParams.d.ts: -------------------------------------------------------------------------------- 1 | import { ParamMapping } from '../common/types'; 2 | import { TinyYolov2Config } from './config'; 3 | import { TinyYolov2NetParams } from './types'; 4 | export declare function extractParams(weights: Float32Array, config: TinyYolov2Config, boxEncodingSize: number, filterSizes: number[]): { 5 | params: TinyYolov2NetParams; 6 | paramMappings: ParamMapping[]; 7 | }; 8 | -------------------------------------------------------------------------------- /build/es6/tinyYolov2/extractParamsFromWeigthMap.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | import { ParamMapping } from '../common/types'; 3 | import { TinyYolov2Config } from './config'; 4 | import { TinyYolov2NetParams } from './types'; 5 | export declare function extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap, config: TinyYolov2Config): { 6 | params: TinyYolov2NetParams; 7 | paramMappings: ParamMapping[]; 8 | }; 9 | -------------------------------------------------------------------------------- /build/es6/tinyYolov2/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './TinyYolov2'; 2 | export * from './TinyYolov2Options'; 3 | export * from './config'; 4 | export * from './types'; 5 | -------------------------------------------------------------------------------- /build/es6/tinyYolov2/index.js: -------------------------------------------------------------------------------- 1 | export * from './TinyYolov2'; 2 | export * from './TinyYolov2Options'; 3 | export * from './config'; 4 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/es6/tinyYolov2/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tinyYolov2/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AAEpC,cAAc,UAAU,CAAA"} -------------------------------------------------------------------------------- /build/es6/tinyYolov2/leaky.d.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export declare function leaky(x: tf.Tensor4D): tf.Tensor4D; 3 | -------------------------------------------------------------------------------- /build/es6/tinyYolov2/leaky.js: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | export function leaky(x) { 3 | return tf.tidy(function () { 4 | var min = tf.mul(x, tf.scalar(0.10000000149011612)); 5 | return tf.add(tf.relu(tf.sub(x, min)), min); 6 | //return tf.maximum(x, min) 7 | }); 8 | } 9 | //# sourceMappingURL=leaky.js.map -------------------------------------------------------------------------------- /build/es6/tinyYolov2/leaky.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"leaky.js","sourceRoot":"","sources":["../../../src/tinyYolov2/leaky.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5C,MAAM,UAAU,KAAK,CAAC,CAAc;IAClC,OAAO,EAAE,CAAC,IAAI,CAAC;QACb,IAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;QACrD,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAC3C,2BAA2B;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC"} -------------------------------------------------------------------------------- /build/es6/tinyYolov2/types.js: -------------------------------------------------------------------------------- 1 | //# sourceMappingURL=types.js.map -------------------------------------------------------------------------------- /build/es6/tinyYolov2/types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tinyYolov2/types.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /jasmine-node.json: -------------------------------------------------------------------------------- 1 | { 2 | "spec_dir": "test", 3 | "spec_files": [ 4 | "**/*.test.ts", 5 | "!**/*.browser.test.ts" 6 | ], 7 | "random": false 8 | } -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | const dataFiles = [ 2 | 'test/*.png', 3 | 'test/*.json', 4 | 'test/*.weights' 5 | ].map(pattern => ({ 6 | pattern, 7 | watched: false, 8 | included: false, 9 | served: true, 10 | nocache: false 11 | })) 12 | 13 | module.exports = function(config) { 14 | config.set({ 15 | frameworks: ['jasmine', 'karma-typescript'], 16 | files: [ 17 | 'src/**/*.ts', 18 | 'test/**/*.ts' 19 | ].concat(dataFiles), 20 | exclude: ['test/env.node.ts'], 21 | preprocessors: { 22 | '**/*.ts': ['karma-typescript'] 23 | }, 24 | karmaTypescriptConfig: { 25 | tsconfig: 'tsconfig.test.json' 26 | }, 27 | browsers: ['Chrome'], 28 | browserNoActivityTimeout: 120000, 29 | captureTimeout: 60000, 30 | client: { 31 | jasmine: { 32 | timeoutInterval: 60000 33 | } 34 | } 35 | }) 36 | } 37 | -------------------------------------------------------------------------------- /src/classes/BoundingBox.ts: -------------------------------------------------------------------------------- 1 | import { Box } from './Box'; 2 | 3 | export interface IBoundingBox { 4 | left: number 5 | top: number 6 | right: number 7 | bottom: number 8 | } 9 | 10 | export class BoundingBox extends Box implements IBoundingBox { 11 | constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) { 12 | super({ left, top, right, bottom }, allowNegativeDimensions) 13 | } 14 | } -------------------------------------------------------------------------------- /src/classes/Dimensions.ts: -------------------------------------------------------------------------------- 1 | import { isValidNumber } from '../utils'; 2 | 3 | export interface IDimensions { 4 | width: number 5 | height: number 6 | } 7 | 8 | export class Dimensions implements IDimensions { 9 | 10 | private _width: number 11 | private _height: number 12 | 13 | constructor(width: number, height: number) { 14 | if (!isValidNumber(width) || !isValidNumber(height)) { 15 | throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`) 16 | } 17 | 18 | this._width = width 19 | this._height = height 20 | } 21 | 22 | public get width(): number { return this._width } 23 | public get height(): number { return this._height } 24 | 25 | public reverse(): Dimensions { 26 | return new Dimensions(1 / this.width, 1 / this.height) 27 | } 28 | } -------------------------------------------------------------------------------- /src/classes/LabeledBox.ts: -------------------------------------------------------------------------------- 1 | import { IBoundingBox } from './BoundingBox'; 2 | import { Box } from './Box'; 3 | import { IRect } from './Rect'; 4 | import { isValidNumber } from '../utils/index'; 5 | 6 | export class LabeledBox extends Box { 7 | 8 | public static assertIsValidLabeledBox(box: any, callee: string) { 9 | Box.assertIsValidBox(box, callee) 10 | 11 | if (!isValidNumber(box.label)) { 12 | throw new Error(`${callee} - expected property label (${box.label}) to be a number`) 13 | } 14 | } 15 | 16 | private _label: number 17 | 18 | constructor(box: IBoundingBox | IRect | any, label: number) { 19 | super(box) 20 | this._label = label 21 | } 22 | 23 | public get label(): number { return this._label } 24 | 25 | } -------------------------------------------------------------------------------- /src/classes/Rect.ts: -------------------------------------------------------------------------------- 1 | import { Box } from './Box'; 2 | 3 | export interface IRect { 4 | x: number 5 | y: number 6 | width: number 7 | height: number 8 | } 9 | 10 | export class Rect extends Box implements IRect { 11 | constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) { 12 | super({ x, y, width, height }, allowNegativeDimensions) 13 | } 14 | } -------------------------------------------------------------------------------- /src/classes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './BoundingBox' 2 | export * from './Box' 3 | export * from './Dimensions' 4 | export * from './LabeledBox' 5 | export * from './ObjectDetection' 6 | export * from './Point' 7 | export * from './PredictedBox' 8 | export * from './Rect' -------------------------------------------------------------------------------- /src/common/convLayer.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | 3 | import { ConvParams } from './types'; 4 | 5 | export function convLayer( 6 | x: tf.Tensor4D, 7 | params: ConvParams, 8 | padding: 'valid' | 'same' = 'same', 9 | withRelu: boolean = false 10 | ): tf.Tensor4D { 11 | return tf.tidy(() => { 12 | const out = tf.add( 13 | tf.conv2d(x, params.filters, [1, 1], padding), 14 | params.bias 15 | ) as tf.Tensor4D 16 | 17 | return withRelu ? tf.relu(out) : out 18 | }) 19 | } -------------------------------------------------------------------------------- /src/common/disposeUnusedWeightTensors.ts: -------------------------------------------------------------------------------- 1 | import { ParamMapping } from './types'; 2 | 3 | export function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) { 4 | Object.keys(weightMap).forEach(path => { 5 | if (!paramMappings.some(pm => pm.originalPath === path)) { 6 | weightMap[path].dispose() 7 | } 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /src/common/extractConvParamsFactory.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | 3 | import { ConvParams, ExtractWeightsFunction, ParamMapping } from './types'; 4 | 5 | export function extractConvParamsFactory( 6 | extractWeights: ExtractWeightsFunction, 7 | paramMappings: ParamMapping[] 8 | ) { 9 | 10 | return function( 11 | channelsIn: number, 12 | channelsOut: number, 13 | filterSize: number, 14 | mappedPrefix: string 15 | ): ConvParams { 16 | 17 | const filters = tf.tensor4d( 18 | extractWeights(channelsIn * channelsOut * filterSize * filterSize), 19 | [filterSize, filterSize, channelsIn, channelsOut] 20 | ) 21 | const bias = tf.tensor1d(extractWeights(channelsOut)) 22 | 23 | paramMappings.push( 24 | { paramPath: `${mappedPrefix}/filters` }, 25 | { paramPath: `${mappedPrefix}/bias` } 26 | ) 27 | 28 | return { filters, bias } 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/common/extractFCParamsFactory.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | 3 | import { ExtractWeightsFunction, FCParams, ParamMapping } from './types'; 4 | 5 | 6 | export function extractFCParamsFactory( 7 | extractWeights: ExtractWeightsFunction, 8 | paramMappings: ParamMapping[] 9 | ) { 10 | 11 | return function( 12 | channelsIn: number, 13 | channelsOut: number, 14 | mappedPrefix: string 15 | ): FCParams { 16 | 17 | const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]) 18 | const fc_bias = tf.tensor1d(extractWeights(channelsOut)) 19 | 20 | paramMappings.push( 21 | { paramPath: `${mappedPrefix}/weights` }, 22 | { paramPath: `${mappedPrefix}/bias` } 23 | ) 24 | 25 | return { 26 | weights: fc_weights, 27 | bias: fc_bias 28 | } 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/common/extractWeightEntryFactory.ts: -------------------------------------------------------------------------------- 1 | import { isTensor } from '../utils'; 2 | import { ParamMapping } from './types'; 3 | 4 | export function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) { 5 | 6 | return function (originalPath: string, paramRank: number, mappedPath?: string): T { 7 | const tensor = weightMap[originalPath] 8 | 9 | if (!isTensor(tensor, paramRank)) { 10 | throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`) 11 | } 12 | 13 | paramMappings.push( 14 | { originalPath, paramPath: mappedPath || originalPath } 15 | ) 16 | 17 | return tensor 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/common/extractWeightsFactory.ts: -------------------------------------------------------------------------------- 1 | export function extractWeightsFactory(weights: Float32Array) { 2 | let remainingWeights = weights 3 | 4 | function extractWeights(numWeights: number): Float32Array { 5 | const ret = remainingWeights.slice(0, numWeights) 6 | remainingWeights = remainingWeights.slice(numWeights) 7 | return ret 8 | } 9 | 10 | function getRemainingWeights(): Float32Array { 11 | return remainingWeights 12 | } 13 | 14 | return { 15 | extractWeights, 16 | getRemainingWeights 17 | } 18 | } -------------------------------------------------------------------------------- /src/common/index.ts: -------------------------------------------------------------------------------- 1 | export * from './convLayer' 2 | export * from './disposeUnusedWeightTensors' 3 | export * from './extractConvParamsFactory' 4 | export * from './extractFCParamsFactory' 5 | export * from './extractSeparableConvParamsFactory' 6 | export * from './extractWeightEntryFactory' 7 | export * from './extractWeightsFactory' 8 | export * from './getModelUris' 9 | export * from './types' -------------------------------------------------------------------------------- /src/common/types.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | 3 | export type ExtractWeightsFunction = (numWeights: number) => Float32Array 4 | 5 | export type ParamMapping = { 6 | originalPath?: string 7 | paramPath: string 8 | } 9 | 10 | export type ConvParams = { 11 | filters: tf.Tensor4D 12 | bias: tf.Tensor1D 13 | } 14 | 15 | export type FCParams = { 16 | weights: tf.Tensor2D 17 | bias: tf.Tensor1D 18 | } 19 | 20 | export class SeparableConvParams { 21 | constructor( 22 | public depthwise_filter: tf.Tensor4D, 23 | public pointwise_filter: tf.Tensor4D, 24 | public bias: tf.Tensor1D 25 | ) {} 26 | } -------------------------------------------------------------------------------- /src/dom/awaitMediaLoaded.ts: -------------------------------------------------------------------------------- 1 | import { env } from '../env'; 2 | import { isMediaLoaded } from './isMediaLoaded'; 3 | 4 | export function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) { 5 | 6 | return new Promise((resolve, reject) => { 7 | if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) { 8 | return resolve() 9 | } 10 | 11 | function onLoad(e: Event) { 12 | if (!e.currentTarget) return 13 | e.currentTarget.removeEventListener('load', onLoad) 14 | e.currentTarget.removeEventListener('error', onError) 15 | resolve(e) 16 | } 17 | 18 | function onError(e: Event) { 19 | if (!e.currentTarget) return 20 | e.currentTarget.removeEventListener('load', onLoad) 21 | e.currentTarget.removeEventListener('error', onError) 22 | reject(e) 23 | } 24 | 25 | media.addEventListener('load', onLoad) 26 | media.addEventListener('error', onError) 27 | }) 28 | } -------------------------------------------------------------------------------- /src/dom/bufferToImage.ts: -------------------------------------------------------------------------------- 1 | import { env } from '../env'; 2 | 3 | export function bufferToImage(buf: Blob): Promise { 4 | return new Promise((resolve, reject) => { 5 | if (!(buf instanceof Blob)) { 6 | return reject('bufferToImage - expected buf to be of type: Blob') 7 | } 8 | 9 | const reader = new FileReader() 10 | reader.onload = () => { 11 | if (typeof reader.result !== 'string') { 12 | return reject('bufferToImage - expected reader.result to be a string, in onload') 13 | } 14 | 15 | const img = env.getEnv().createImageElement() 16 | img.onload = () => resolve(img) 17 | img.onerror = reject 18 | img.src = reader.result 19 | } 20 | reader.onerror = reject 21 | reader.readAsDataURL(buf) 22 | }) 23 | } -------------------------------------------------------------------------------- /src/dom/fetchImage.ts: -------------------------------------------------------------------------------- 1 | import { bufferToImage } from './bufferToImage'; 2 | import { fetchOrThrow } from './fetchOrThrow'; 3 | 4 | export async function fetchImage(uri: string): Promise { 5 | const res = await fetchOrThrow(uri) 6 | const blob = await (res).blob() 7 | 8 | if (!blob.type.startsWith('image/')) { 9 | throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`) 10 | } 11 | return bufferToImage(blob) 12 | } 13 | -------------------------------------------------------------------------------- /src/dom/fetchJson.ts: -------------------------------------------------------------------------------- 1 | import { fetchOrThrow } from './fetchOrThrow'; 2 | 3 | export async function fetchJson(uri: string): Promise { 4 | return (await fetchOrThrow(uri)).json() 5 | } 6 | -------------------------------------------------------------------------------- /src/dom/fetchNetWeights.ts: -------------------------------------------------------------------------------- 1 | import { fetchOrThrow } from './fetchOrThrow'; 2 | 3 | export async function fetchNetWeights(uri: string): Promise { 4 | return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer()) 5 | } 6 | -------------------------------------------------------------------------------- /src/dom/fetchOrThrow.ts: -------------------------------------------------------------------------------- 1 | import { env } from '../env'; 2 | 3 | export async function fetchOrThrow( 4 | url: string, 5 | init?: RequestInit 6 | ): Promise { 7 | 8 | const fetch = env.getEnv().fetch 9 | const res = await fetch(url, init) 10 | if (!(res.status < 400)) { 11 | throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`) 12 | } 13 | return res 14 | } -------------------------------------------------------------------------------- /src/dom/getContext2dOrThrow.ts: -------------------------------------------------------------------------------- 1 | import { env } from '../env'; 2 | import { resolveInput } from './resolveInput'; 3 | 4 | export function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D { 5 | 6 | const { Canvas, CanvasRenderingContext2D } = env.getEnv() 7 | 8 | if (canvasArg instanceof CanvasRenderingContext2D) { 9 | return canvasArg 10 | } 11 | 12 | const canvas = resolveInput(canvasArg) 13 | 14 | if (!(canvas instanceof Canvas)) { 15 | throw new Error('resolveContext2d - expected canvas to be of instance of Canvas') 16 | } 17 | 18 | const ctx = canvas.getContext('2d') 19 | if (!ctx) { 20 | throw new Error('resolveContext2d - canvas 2d context is null') 21 | } 22 | 23 | return ctx 24 | } -------------------------------------------------------------------------------- /src/dom/getMediaDimensions.ts: -------------------------------------------------------------------------------- 1 | import { Dimensions, IDimensions } from '../classes/Dimensions'; 2 | import { env } from '../env'; 3 | 4 | export function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions { 5 | 6 | const { Image, Video } = env.getEnv() 7 | 8 | if (input instanceof Image) { 9 | return new Dimensions(input.naturalWidth, input.naturalHeight) 10 | } 11 | if (input instanceof Video) { 12 | return new Dimensions(input.videoWidth, input.videoHeight) 13 | } 14 | return new Dimensions(input.width, input.height) 15 | } 16 | -------------------------------------------------------------------------------- /src/dom/imageTensorToCanvas.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | 3 | import { env } from '../env'; 4 | import { isTensor4D } from '../utils'; 5 | 6 | export async function imageTensorToCanvas( 7 | imgTensor: tf.Tensor, 8 | canvas?: HTMLCanvasElement 9 | ): Promise { 10 | 11 | const targetCanvas = canvas || env.getEnv().createCanvasElement() 12 | 13 | const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0) 14 | const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt()) 15 | await tf.browser.toPixels(imgTensor3D, targetCanvas) 16 | 17 | imgTensor3D.dispose() 18 | 19 | return targetCanvas 20 | } -------------------------------------------------------------------------------- /src/dom/index.ts: -------------------------------------------------------------------------------- 1 | export * from './awaitMediaLoaded' 2 | export * from './bufferToImage' 3 | export * from './createCanvas' 4 | export * from './fetchImage' 5 | export * from './fetchJson' 6 | export * from './fetchNetWeights' 7 | export * from './fetchOrThrow' 8 | export * from './getContext2dOrThrow' 9 | export * from './getMediaDimensions' 10 | export * from './imageTensorToCanvas' 11 | export * from './imageToSquare' 12 | export * from './isMediaElement' 13 | export * from './isMediaLoaded' 14 | export * from './loadWeightMap' 15 | export * from './matchDimensions' 16 | export * from './NetInput' 17 | export * from './resolveInput' 18 | export * from './toNetInput' 19 | export * from './types' -------------------------------------------------------------------------------- /src/dom/isMediaElement.ts: -------------------------------------------------------------------------------- 1 | import { env } from '../env'; 2 | 3 | export function isMediaElement(input: any) { 4 | 5 | const { Image, Canvas, Video } = env.getEnv() 6 | 7 | return input instanceof Image 8 | || input instanceof Canvas 9 | || input instanceof Video 10 | } -------------------------------------------------------------------------------- /src/dom/isMediaLoaded.ts: -------------------------------------------------------------------------------- 1 | import { env } from '../env'; 2 | 3 | export function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean { 4 | 5 | const { Image, Video } = env.getEnv() 6 | 7 | return (media instanceof Image && media.complete) 8 | || (media instanceof Video && media.readyState >= 3) 9 | } 10 | -------------------------------------------------------------------------------- /src/dom/loadWeightMap.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | 3 | import { getModelUris } from '../common/getModelUris'; 4 | import { fetchJson } from './fetchJson'; 5 | 6 | export async function loadWeightMap( 7 | uri: string | undefined, 8 | defaultModelName: string, 9 | ): Promise { 10 | const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName) 11 | 12 | const manifest = await fetchJson(manifestUri) 13 | 14 | return tf.io.loadWeights(manifest, modelBaseUri) 15 | } -------------------------------------------------------------------------------- /src/dom/matchDimensions.ts: -------------------------------------------------------------------------------- 1 | import { IDimensions } from '../classes'; 2 | import { getMediaDimensions } from './getMediaDimensions'; 3 | 4 | export function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) { 5 | const { width, height } = useMediaDimensions 6 | ? getMediaDimensions(reference) 7 | : reference 8 | input.width = width 9 | input.height = height 10 | return { width, height } 11 | } -------------------------------------------------------------------------------- /src/dom/resolveInput.ts: -------------------------------------------------------------------------------- 1 | import { env } from '../env'; 2 | 3 | export function resolveInput(arg: string | any) { 4 | if (!env.isNodejs() && typeof arg === 'string') { 5 | return document.getElementById(arg) 6 | } 7 | return arg 8 | } -------------------------------------------------------------------------------- /src/dom/types.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | 3 | import { NetInput } from './NetInput'; 4 | 5 | export type TMediaElement = HTMLImageElement | HTMLVideoElement | HTMLCanvasElement 6 | 7 | export type TResolvedNetInput = TMediaElement | tf.Tensor3D | tf.Tensor4D 8 | 9 | export type TNetInputArg = string | TResolvedNetInput 10 | 11 | export type TNetInput = TNetInputArg | Array | NetInput | tf.Tensor4D -------------------------------------------------------------------------------- /src/draw/index.ts: -------------------------------------------------------------------------------- 1 | export * from './DrawBox' 2 | export * from './DrawTextField' -------------------------------------------------------------------------------- /src/env/createBrowserEnv.ts: -------------------------------------------------------------------------------- 1 | import { Environment } from './types'; 2 | 3 | export function createBrowserEnv(): Environment { 4 | 5 | const fetch = window['fetch'] || function() { 6 | throw new Error('fetch - missing fetch implementation for browser environment') 7 | } 8 | 9 | const readFile = function() { 10 | throw new Error('readFile - filesystem not available for browser environment') 11 | } 12 | 13 | return { 14 | Canvas: HTMLCanvasElement, 15 | CanvasRenderingContext2D: CanvasRenderingContext2D, 16 | Image: HTMLImageElement, 17 | ImageData: ImageData, 18 | Video: HTMLVideoElement, 19 | createCanvasElement: () => document.createElement('canvas'), 20 | createImageElement: () => document.createElement('img'), 21 | fetch, 22 | readFile 23 | } 24 | } -------------------------------------------------------------------------------- /src/env/createFileSystem.ts: -------------------------------------------------------------------------------- 1 | import { FileSystem } from './types'; 2 | 3 | export function createFileSystem(fs?: any): FileSystem { 4 | 5 | let requireFsError = '' 6 | 7 | if (!fs) { 8 | try { 9 | fs = require('fs') 10 | } catch (err) { 11 | requireFsError = err.toString() 12 | } 13 | } 14 | 15 | const readFile = fs 16 | ? function(filePath: string) { 17 | return new Promise((res, rej) => { 18 | fs.readFile(filePath, function(err: any, buffer: Buffer) { 19 | return err ? rej(err) : res(buffer) 20 | }) 21 | }) 22 | } 23 | : function() { 24 | throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`) 25 | } 26 | 27 | return { 28 | readFile 29 | } 30 | } -------------------------------------------------------------------------------- /src/env/isBrowser.ts: -------------------------------------------------------------------------------- 1 | export function isBrowser(): boolean { 2 | return typeof window === 'object' 3 | && typeof document !== 'undefined' 4 | && typeof HTMLImageElement !== 'undefined' 5 | && typeof HTMLCanvasElement !== 'undefined' 6 | && typeof HTMLVideoElement !== 'undefined' 7 | && typeof ImageData !== 'undefined' 8 | && typeof CanvasRenderingContext2D !== 'undefined' 9 | } -------------------------------------------------------------------------------- /src/env/isNodejs.ts: -------------------------------------------------------------------------------- 1 | export function isNodejs(): boolean { 2 | return typeof global === 'object' 3 | && typeof require === 'function' 4 | && typeof module !== 'undefined' 5 | // issues with gatsby.js: module.exports is undefined 6 | // && !!module.exports 7 | && typeof process !== 'undefined' && !!process.version 8 | } -------------------------------------------------------------------------------- /src/env/types.ts: -------------------------------------------------------------------------------- 1 | export type FileSystem = { 2 | readFile: (filePath: string) => Promise 3 | } 4 | 5 | export type Environment = FileSystem & { 6 | Canvas: typeof HTMLCanvasElement 7 | CanvasRenderingContext2D: typeof CanvasRenderingContext2D 8 | Image: typeof HTMLImageElement 9 | ImageData: typeof ImageData 10 | Video: typeof HTMLVideoElement 11 | createCanvasElement: () => HTMLCanvasElement 12 | createImageElement: () => HTMLImageElement 13 | fetch: (url: string, init?: RequestInit) => Promise 14 | } 15 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import * as draw from './draw'; 2 | import * as TfjsImageRecognitionBase from './tfjsImageRecognitionBase'; 3 | 4 | export * from './classes/index'; 5 | export * from './dom/index'; 6 | export * from './env/index'; 7 | export * from './ops/index'; 8 | export * from './utils'; 9 | export * from './NeuralNetwork'; 10 | 11 | export { draw } 12 | // modules, which are not to be reexported 13 | export { TfjsImageRecognitionBase } -------------------------------------------------------------------------------- /src/metrics/types.ts: -------------------------------------------------------------------------------- 1 | import { LabeledBox } from '../classes/LabeledBox'; 2 | import { PredictedBox } from '../classes/PredictedBox'; 3 | 4 | export type GroundTruthsAndPredictions = { 5 | groundTruth: LabeledBox[] 6 | predictions: PredictedBox[] 7 | } -------------------------------------------------------------------------------- /src/ops/index.ts: -------------------------------------------------------------------------------- 1 | export * from './iou' 2 | export * from './minBbox' 3 | export * from './nonMaxSuppression' 4 | export * from './normalize' 5 | export * from './padToSquare' 6 | export * from './shuffleArray' 7 | 8 | export function sigmoid(x: number) { 9 | return 1 / (1 + Math.exp(-x)) 10 | } 11 | 12 | export function inverseSigmoid(x: number) { 13 | return Math.log(x / (1 - x)) 14 | } -------------------------------------------------------------------------------- /src/ops/iou.ts: -------------------------------------------------------------------------------- 1 | import { Box } from '../classes/Box'; 2 | 3 | export function iou(box1: Box, box2: Box, isIOU: boolean = true) { 4 | const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left)) 5 | const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top)) 6 | const interSection = width * height 7 | 8 | return isIOU 9 | ? interSection / (box1.area + box2.area - interSection) 10 | : interSection / Math.min(box1.area, box2.area) 11 | } -------------------------------------------------------------------------------- /src/ops/minBbox.ts: -------------------------------------------------------------------------------- 1 | import { BoundingBox, IPoint } from '../classes'; 2 | 3 | export function minBbox(pts: IPoint[]): BoundingBox { 4 | const xs = pts.map(pt => pt.x) 5 | const ys = pts.map(pt => pt.y) 6 | const minX = xs.reduce((min, x) => x < min ? x : min, Infinity) 7 | const minY = ys.reduce((min, y) => y < min ? y : min, Infinity) 8 | const maxX = xs.reduce((max, x) => max < x ? x : max, 0) 9 | const maxY = ys.reduce((max, y) => max < y ? y : max, 0) 10 | 11 | return new BoundingBox(minX, minY, maxX, maxY) 12 | } 13 | -------------------------------------------------------------------------------- /src/ops/normalize.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | 3 | export function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D { 4 | return tf.tidy(() => { 5 | const [r, g, b] = meanRgb 6 | const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r) 7 | const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g) 8 | const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b) 9 | const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3) 10 | 11 | return tf.sub(x, avg_rgb) 12 | }) 13 | } -------------------------------------------------------------------------------- /src/ops/shuffleArray.ts: -------------------------------------------------------------------------------- 1 | export function shuffleArray(inputArray: any[]) { 2 | const array = inputArray.slice() 3 | for (let i = array.length - 1; i > 0; i--) { 4 | const j = Math.floor(Math.random() * (i + 1)) 5 | const x = array[i] 6 | array[i] = array[j] 7 | array[j] = x 8 | } 9 | return array 10 | } -------------------------------------------------------------------------------- /src/tfjsImageRecognitionBase.ts: -------------------------------------------------------------------------------- 1 | export * from './common'; 2 | export * from './tinyYolov2/index'; 3 | -------------------------------------------------------------------------------- /src/tinyYolov2/convWithBatchNorm.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | 3 | import { leaky } from './leaky'; 4 | import { ConvWithBatchNorm } from './types'; 5 | 6 | export function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D { 7 | return tf.tidy(() => { 8 | let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D 9 | 10 | out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid') 11 | out = tf.sub(out, params.bn.sub) 12 | out = tf.mul(out, params.bn.truediv) 13 | out = tf.add(out, params.conv.bias) 14 | 15 | return leaky(out) 16 | }) 17 | } -------------------------------------------------------------------------------- /src/tinyYolov2/depthwiseSeparableConv.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | 3 | import { SeparableConvParams } from '../common/types'; 4 | import { leaky } from './leaky'; 5 | 6 | export function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D { 7 | return tf.tidy(() => { 8 | let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D 9 | 10 | out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid') 11 | out = tf.add(out, params.bias) 12 | 13 | return leaky(out) 14 | }) 15 | } -------------------------------------------------------------------------------- /src/tinyYolov2/index.ts: -------------------------------------------------------------------------------- 1 | export * from './TinyYolov2'; 2 | export * from './TinyYolov2Options'; 3 | 4 | export * from './config' 5 | export * from './types' -------------------------------------------------------------------------------- /src/tinyYolov2/leaky.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | 3 | export function leaky(x: tf.Tensor4D): tf.Tensor4D { 4 | return tf.tidy(() => { 5 | const min = tf.mul(x, tf.scalar(0.10000000149011612)) 6 | return tf.add(tf.relu(tf.sub(x, min)), min) 7 | //return tf.maximum(x, min) 8 | }) 9 | } -------------------------------------------------------------------------------- /test/Environment.ts: -------------------------------------------------------------------------------- 1 | export type TestEnv = { 2 | loadImage: (uri: string) => Promise 3 | loadJson: (uri: string) => Promise 4 | } -------------------------------------------------------------------------------- /test/classes/BoundingBox.test.ts: -------------------------------------------------------------------------------- 1 | import { BoundingBox } from '../../src/classes/BoundingBox'; 2 | 3 | describe('BoundingBox', () => { 4 | 5 | describe('constructor', () => { 6 | 7 | it('properties', () => { 8 | const box = new BoundingBox(5, 10, 15, 20) 9 | expect(box.left).toEqual(5) 10 | expect(box.x).toEqual(5) 11 | expect(box.top).toEqual(10) 12 | expect(box.y).toEqual(10) 13 | expect(box.right).toEqual(15) 14 | expect(box.bottom).toEqual(20) 15 | expect(box.width).toEqual(10) 16 | expect(box.height).toEqual(10) 17 | expect(box.area).toEqual(100) 18 | }) 19 | 20 | }) 21 | 22 | }) -------------------------------------------------------------------------------- /test/dom/fetchImage.browser.test.ts: -------------------------------------------------------------------------------- 1 | import { fetchImage } from '../../src/dom/fetchImage'; 2 | 3 | describe('fetchImage', () => { 4 | 5 | it('invalid mime type', async () => { 6 | const url = 'base/test/boxes.json' 7 | 8 | let err = '' 9 | try { 10 | await fetchImage(url) 11 | } catch (e) { 12 | err = e.toString() 13 | } 14 | 15 | expect(err).toContain('fetchImage - expected blob type to be of type image/*, instead have: application/json') 16 | expect(err).toContain(url) 17 | }) 18 | 19 | it('fetches image', async () => { 20 | const url = 'base/test/img.png' 21 | const img = await fetchImage(url) 22 | expect(img instanceof HTMLImageElement).toBe(true) 23 | }) 24 | 25 | }) 26 | -------------------------------------------------------------------------------- /test/dom/fetchJson.browser.test.ts: -------------------------------------------------------------------------------- 1 | import { fetchJson } from '../../src/dom/fetchJson'; 2 | 3 | describe('fetchJson', () => { 4 | 5 | it('fetches json', async () => { 6 | const url = 'base/test/boxes.json' 7 | expect(async () => await fetchJson(url)).not.toThrow() 8 | }) 9 | 10 | }) 11 | -------------------------------------------------------------------------------- /test/dom/fetchNetWeights.browser.test.ts: -------------------------------------------------------------------------------- 1 | import { fetchNetWeights } from '../../src/dom/fetchNetWeights'; 2 | 3 | describe('fetchNetWeights', () => { 4 | 5 | it('fetches .weights file', async () => { 6 | const url = 'base/test/dummy.weights' 7 | const weights = await fetchNetWeights(url) 8 | expect(weights instanceof Float32Array).toBe(true) 9 | }) 10 | 11 | }) 12 | -------------------------------------------------------------------------------- /test/dom/fetchOrThrow.browser.test.ts: -------------------------------------------------------------------------------- 1 | import { fetchOrThrow } from '../../src/dom/fetchOrThrow'; 2 | 3 | describe('fetchOrThrow', () => { 4 | 5 | it('404, throws', async () => { 6 | const url = '/does/not/exist' 7 | 8 | let err = '' 9 | try { 10 | await fetchOrThrow(url) 11 | } catch (e) { 12 | err = e.toString() 13 | } 14 | 15 | expect(err).toContain('failed to fetch: (404)') 16 | expect(err).toContain(url) 17 | }) 18 | 19 | }) 20 | -------------------------------------------------------------------------------- /test/dummy.weights: -------------------------------------------------------------------------------- 1 | +��>�%�8�vZ>w�X>��ʽ��*cz -------------------------------------------------------------------------------- /test/env.node.ts: -------------------------------------------------------------------------------- 1 | import * as fs from 'fs'; 2 | import * as path from 'path'; 3 | 4 | import { env } from '../src'; 5 | import { TestEnv } from './Environment'; 6 | 7 | require('@tensorflow/tfjs-node') 8 | const canvas = require('canvas') 9 | 10 | const { Canvas, Image } = canvas 11 | env.monkeyPatch({ Canvas, Image }) 12 | 13 | async function loadImageNode(uri: string): Promise { 14 | return canvas.loadImage(path.resolve(__dirname, '../', uri)) 15 | } 16 | 17 | async function loadJsonNode(uri: string): Promise { 18 | return JSON.parse(fs.readFileSync(path.resolve(__dirname, '../', uri)).toString()) 19 | } 20 | 21 | const nodeTestEnv: TestEnv = { 22 | loadImage: loadImageNode, 23 | loadJson: loadJsonNode 24 | } 25 | 26 | global['nodeTestEnv'] = nodeTestEnv -------------------------------------------------------------------------------- /test/env.ts: -------------------------------------------------------------------------------- 1 | import { fetchImage, fetchJson } from '../src'; 2 | import { TestEnv } from './Environment'; 3 | 4 | async function loadImageBrowser(uri: string): Promise { 5 | return fetchImage(`base${uri.startsWith('/') ? '' : '/'}${uri}`) 6 | } 7 | 8 | async function loadJsonBrowser(uri: string): Promise { 9 | return fetchJson(`base${uri.startsWith('/') ? '' : '/'}${uri}`) 10 | } 11 | 12 | const browserTestEnv: TestEnv = { 13 | loadImage: loadImageBrowser, 14 | loadJson: loadJsonBrowser 15 | } 16 | 17 | export function getTestEnv(): TestEnv { 18 | return global['nodeTestEnv'] || browserTestEnv 19 | } 20 | -------------------------------------------------------------------------------- /test/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/justadudewhohacks/tfjs-image-recognition-base/df877eecc6d7a616c1d1e7e3dbd6490b90737eb4/test/img.png -------------------------------------------------------------------------------- /test/ops/iou.test.ts: -------------------------------------------------------------------------------- 1 | import * as tf from '@tensorflow/tfjs-core'; 2 | 3 | import { Rect } from '../../src/classes/Rect'; 4 | import { iou } from '../../src/ops/iou'; 5 | 6 | describe('iou', () => { 7 | 8 | it('should be 1.0', () => tf.tidy(() => { 9 | 10 | const box = new Rect(0, 0, 20, 20) 11 | 12 | expect(iou(box, box)).toEqual(1) 13 | 14 | })) 15 | 16 | it('should be 0', () => tf.tidy(() => { 17 | 18 | const box1 = new Rect(0, 0, 20, 20) 19 | const box2 = new Rect(20, 20, 20, 20) 20 | 21 | expect(iou(box1, box2)).toEqual(0) 22 | 23 | })) 24 | 25 | it('should be 0.5', () => tf.tidy(() => { 26 | 27 | const box1 = new Rect(0, 0, 20, 20) 28 | const box2 = new Rect(0, 0, 10, 20) 29 | 30 | expect(iou(box1, box2)).toEqual(0.5) 31 | 32 | })) 33 | 34 | it('should be 0.5', () => tf.tidy(() => { 35 | 36 | const box1 = new Rect(0, 0, 20, 20) 37 | const box2 = new Rect(0, 10, 20, 10) 38 | 39 | expect(iou(box1, box2)).toEqual(0.5) 40 | 41 | })) 42 | 43 | }) -------------------------------------------------------------------------------- /test/utils/index.test.ts: -------------------------------------------------------------------------------- 1 | import { isValidNumber } from '../../src/utils'; 2 | 3 | describe('utils', () => { 4 | 5 | describe('isValidNumber', () => { 6 | 7 | it('0 is valid', () => { 8 | expect(isValidNumber(0)).toBe(true) 9 | }) 10 | 11 | it('1 is valid', () => { 12 | expect(isValidNumber(1)).toBe(true) 13 | }) 14 | 15 | it('-1 is valid', () => { 16 | expect(isValidNumber(-1)).toBe(true) 17 | }) 18 | 19 | it('NaN is invalid', () => { 20 | expect(isValidNumber(NaN)).toBe(false) 21 | }) 22 | 23 | it('Infinity is invalid', () => { 24 | expect(isValidNumber(Infinity)).toBe(false) 25 | }) 26 | 27 | it('-Infinity is invalid', () => { 28 | expect(isValidNumber(-Infinity)).toBe(false) 29 | }) 30 | 31 | it('null is invalid', () => { 32 | expect(isValidNumber(null)).toBe(false) 33 | }) 34 | 35 | it('undefined is invalid', () => { 36 | expect(isValidNumber(undefined)).toBe(false) 37 | }) 38 | 39 | }) 40 | }) 41 | -------------------------------------------------------------------------------- /tsconfig.es6.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "build/es6", 5 | "module": "es6", 6 | "target": "es5" 7 | }, 8 | "include": [ 9 | "src" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "removeComments": false, 4 | "preserveConstEnums": true, 5 | "emitDecoratorMetadata": true, 6 | "experimentalDecorators": true, 7 | "sourceMap": true, 8 | "declaration": true, 9 | "noImplicitAny": true, 10 | "noImplicitReturns": true, 11 | "noImplicitThis": true, 12 | "noFallthroughCasesInSwitch": true, 13 | "suppressImplicitAnyIndexErrors": true, 14 | "strictNullChecks": true, 15 | "importHelpers": true, 16 | "skipLibCheck": true, 17 | "outDir": "build/commonjs", 18 | "module": "commonjs", 19 | "target": "es5", 20 | "moduleResolution": "node", 21 | "lib": ["es2015", "dom"], 22 | "typeRoots": [ 23 | "typings", 24 | "node_modules/@types" 25 | ] 26 | }, 27 | "formatCodeOptions": { 28 | "indentSize": 2, 29 | "tabSize": 2 30 | }, 31 | "include": [ 32 | "src" 33 | ] 34 | } -------------------------------------------------------------------------------- /tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": [ 4 | "src", 5 | "test" 6 | ] 7 | } 8 | --------------------------------------------------------------------------------