package update

pull/34/head
Vladimir Mandic 2020-12-15 08:15:43 -05:00
parent 366f021f37
commit 7e1b110d8b
25 changed files with 13730 additions and 34907 deletions

View File

@ -6,7 +6,7 @@ This is updated **face-api.js** with latest available TensorFlow/JS as the origi
Forked from [face-api.js](https://github.com/justadudewhohacks/face-api.js) version **0.22.2** released on March 22nd, 2020
Currently based on **`TensorFlow/JS` 2.7.0**
Currently based on **`TensorFlow/JS` 2.8.0**
### Why?
@ -171,11 +171,6 @@ and then in your `index.js`
```js
import * as faceapi from 'dist/face-api.esm.js';
```
or to use non-bundled version:
```js
import * as tf from `https://cdnjs.cloudflare.com/ajax/libs/tensorflow/2.7.0/tf.es2017.min.js`; // load tfjs directly from CDN link or your local system
import * as faceapi from 'dist/face-api.esm-nobundle.js';
```
#### 2.2. With Bundler

View File

@ -78,7 +78,7 @@ const targets = {
entryPoints: ['src/index.ts'],
outfile: 'dist/face-api.esm-nobundle.js',
metafile: 'dist/face-api.esm-nobundle.json',
external: ['fs', 'buffer', 'util', '@tensorflow'],
external: ['fs', 'buffer', 'util', '@tensorflow', 'tfjs.esm.js'],
},
},
browserBundle: {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -490,8 +490,11 @@
]
},
"src/dom/NetInput.ts": {
"bytes": 5452,
"bytes": 5453,
"imports": [
{
"path": "dist/tfjs.esm.js"
},
{
"path": "src/env/index.ts"
},
@ -700,7 +703,7 @@
]
},
"src/NeuralNetwork.ts": {
"bytes": 5351,
"bytes": 5095,
"imports": [
{
"path": "dist/tfjs.esm.js"
@ -2133,7 +2136,7 @@
"dist/face-api.esm-nobundle.js.map": {
"imports": [],
"inputs": {},
"bytes": 393016
"bytes": 392501
},
"dist/face-api.esm-nobundle.js": {
"imports": [],
@ -2406,7 +2409,7 @@
"bytesInOutput": 147
},
"src/dom/NetInput.ts": {
"bytesInOutput": 2962
"bytesInOutput": 2908
},
"src/dom/imageToSquare.ts": {
"bytesInOutput": 704
@ -2730,7 +2733,7 @@
"bytesInOutput": 19
}
},
"bytes": 131024
"bytes": 130970
}
}
}

5262
dist/face-api.esm.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

12592
dist/face-api.esm.json vendored

File diff suppressed because it is too large Load Diff

5262
dist/face-api.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

12592
dist/face-api.json vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -490,8 +490,11 @@
]
},
"src/dom/NetInput.ts": {
"bytes": 5452,
"bytes": 5453,
"imports": [
{
"path": "dist/tfjs.esm.js"
},
{
"path": "src/env/index.ts"
},
@ -700,7 +703,7 @@
]
},
"src/NeuralNetwork.ts": {
"bytes": 5351,
"bytes": 5095,
"imports": [
{
"path": "dist/tfjs.esm.js"
@ -2133,7 +2136,7 @@
"dist/face-api.node-gpu.js.map": {
"imports": [],
"inputs": {},
"bytes": 392651
"bytes": 392125
},
"dist/face-api.node-gpu.js": {
"imports": [],
@ -2284,7 +2287,7 @@
"bytesInOutput": 147
},
"src/dom/NetInput.ts": {
"bytesInOutput": 2922
"bytesInOutput": 2908
},
"src/dom/imageToSquare.ts": {
"bytesInOutput": 704
@ -2608,7 +2611,7 @@
"bytesInOutput": 19
}
},
"bytes": 134198
"bytes": 134184
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -490,8 +490,11 @@
]
},
"src/dom/NetInput.ts": {
"bytes": 5452,
"bytes": 5453,
"imports": [
{
"path": "dist/tfjs.esm.js"
},
{
"path": "src/env/index.ts"
},
@ -700,7 +703,7 @@
]
},
"src/NeuralNetwork.ts": {
"bytes": 5351,
"bytes": 5095,
"imports": [
{
"path": "dist/tfjs.esm.js"
@ -2133,7 +2136,7 @@
"dist/face-api.node.js.map": {
"imports": [],
"inputs": {},
"bytes": 392643
"bytes": 392117
},
"dist/face-api.node.js": {
"imports": [],
@ -2284,7 +2287,7 @@
"bytesInOutput": 147
},
"src/dom/NetInput.ts": {
"bytesInOutput": 2922
"bytesInOutput": 2908
},
"src/dom/imageToSquare.ts": {
"bytesInOutput": 704
@ -2608,7 +2611,7 @@
"bytesInOutput": 19
}
},
"bytes": 134190
"bytes": 134176
}
}
}

5250
dist/tfjs.esm.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

7465
dist/tfjs.esm.json vendored

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,6 @@
<meta http-equiv="content-type">
<meta content="text/html">
<meta charset="UTF-8">
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/tensorflow/2.6.0/tf.min.js"></script> -->
<script src="./index.js" type="module"></script>
</head>
<body style="font-family: monospace; background: black; color: white; font-size: 16px; line-height: 22px; margin: 0;">

107
package-lock.json generated
View File

@ -5,17 +5,17 @@
"requires": true,
"dependencies": {
"@tensorflow/tfjs": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs/-/tfjs-2.7.0.tgz",
"integrity": "sha512-LTYK6+emFweYa3zn/o511JUR6s14/yGZpoXvFSUtdwolYHI+J50r/CyYeFpvtoTD7uwcNFQhbBAtp4L4e3Hsaw==",
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs/-/tfjs-2.8.0.tgz",
"integrity": "sha512-jIG+WqaBq3NsTU5SnJuxqfgkKLpjVPlU2dbVepKgEqVY7XdffiJEoLBslOSgEJQc0j3GskOmZRw4F9u3NqgB1g==",
"dev": true,
"requires": {
"@tensorflow/tfjs-backend-cpu": "2.7.0",
"@tensorflow/tfjs-backend-webgl": "2.7.0",
"@tensorflow/tfjs-converter": "2.7.0",
"@tensorflow/tfjs-core": "2.7.0",
"@tensorflow/tfjs-data": "2.7.0",
"@tensorflow/tfjs-layers": "2.7.0",
"@tensorflow/tfjs-backend-cpu": "2.8.0",
"@tensorflow/tfjs-backend-webgl": "2.8.0",
"@tensorflow/tfjs-converter": "2.8.0",
"@tensorflow/tfjs-core": "2.8.0",
"@tensorflow/tfjs-data": "2.8.0",
"@tensorflow/tfjs-layers": "2.8.0",
"argparse": "^1.0.10",
"chalk": "^4.1.0",
"core-js": "3",
@ -24,9 +24,9 @@
}
},
"@tensorflow/tfjs-backend-cpu": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-2.7.0.tgz",
"integrity": "sha512-R6ORcWq3ub81ABvBZEZ8Ok5OOT59B4AsRe66ds7B/NK0nN+k6y37bR3ZDVjgkEKNWNvzB7ydODikge3GNmgQIQ==",
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-2.8.0.tgz",
"integrity": "sha512-RmseKyCWJR0Jz7HyRXm6VVjpaM9Rbql9Vr7Jrx4SCpYX8BzrRVxDYq9aMZqYh93qBj4xX5upoQ5y5zoaFjpbTw==",
"dev": true,
"requires": {
"@types/seedrandom": "2.4.27",
@ -34,21 +34,22 @@
}
},
"@tensorflow/tfjs-backend-wasm": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-wasm/-/tfjs-backend-wasm-2.7.0.tgz",
"integrity": "sha512-q1p6vR99kvxNjPMH4SMzg5R43g2ACmp3GRMoS2JVCruMyBWroD3KrmgXX2f94t0bl8BysW0JBkGXihajifjd6Q==",
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-wasm/-/tfjs-backend-wasm-2.8.0.tgz",
"integrity": "sha512-gBu0Td7CA5ufyIolwb/YAlE5cTCEa9RcfzRsIxt5zSjt0D2VWVVw7wh1rsYS81OLhKl+Zm9m9eOe8QTJL6A8Xw==",
"dev": true,
"requires": {
"@tensorflow/tfjs-backend-cpu": "2.8.0",
"@types/emscripten": "~0.0.34"
}
},
"@tensorflow/tfjs-backend-webgl": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-2.7.0.tgz",
"integrity": "sha512-K7Rk5YTSWOZ969EZvh3w786daPn2ub4mA2JsX7mXKhBPUaOP9dKbBdLj9buCuMcu4zVq2pAp0QwpHSa4PHm3xg==",
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-2.8.0.tgz",
"integrity": "sha512-GZNpRyXQBHe3Tkt5m63HjgGyklfvU5kAoIuZe+jyfznzxkn3dhmiiLyMByQkxuc0LMZD1987riv0ALMSAXvVbQ==",
"dev": true,
"requires": {
"@tensorflow/tfjs-backend-cpu": "2.7.0",
"@tensorflow/tfjs-backend-cpu": "2.8.0",
"@types/offscreencanvas": "~2019.3.0",
"@types/seedrandom": "2.4.27",
"@types/webgl-ext": "0.0.30",
@ -57,15 +58,15 @@
}
},
"@tensorflow/tfjs-converter": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-2.7.0.tgz",
"integrity": "sha512-SBpKYn/MkN8US7DeTcnvqHpvp/WKcwzpdgkQF+eHMHEbS1lXSlt4BHhOFgRdLPzy1gEC9+6P0VdTE8NQ737t/Q==",
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-2.8.0.tgz",
"integrity": "sha512-GvVzPu0+gtgfq0+UAA2mHV7z5TT359TAUUJHOI7/dDSlfCMfLx5bSa0CamW7PIPkzSn9urljXTbocdeNAdpJKQ==",
"dev": true
},
"@tensorflow/tfjs-core": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-2.7.0.tgz",
"integrity": "sha512-4w5zjK6C5nkLatHpzARVQNd5QKtIocJRwjZIwWcScT9z2z1dX4rVmDoUpYg1cdD4H+yRRdI0awRaI3SL34yy8Q==",
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-2.8.0.tgz",
"integrity": "sha512-MMU5wG9bRPccFjxfc5vORw8YkjfFrPUtnoPQ/1WOqud5l3z3a318WAGqzSloPUMOMPD0c7x0vPQBsUgteliC2w==",
"dev": true,
"requires": {
"@types/offscreencanvas": "~2019.3.0",
@ -76,9 +77,9 @@
}
},
"@tensorflow/tfjs-data": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-data/-/tfjs-data-2.7.0.tgz",
"integrity": "sha512-gsVklCwqqlxhykI7U2Uy5c2hjommQCAi+3y2/LER4TNtzQTzWaGKyIXvuLuL0tE896yuzXILIMZhkUjDmUiGxA==",
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-data/-/tfjs-data-2.8.0.tgz",
"integrity": "sha512-U0UbL6Hffcq6O6r6Isb6cPM9GxXUcU998gcPSIBeTMaGnBGbm/tl6Nf7f8SbGV4076ojeeFr4+0ly8heyBnfew==",
"dev": true,
"requires": {
"@types/node-fetch": "^2.1.2",
@ -86,19 +87,19 @@
}
},
"@tensorflow/tfjs-layers": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-layers/-/tfjs-layers-2.7.0.tgz",
"integrity": "sha512-78zsD2LLrHQuDYv0EeV83LiF0M69lKsBfuTB3FIBgS85gapZPyHh4wooKda2Y4H9EtLogU+C6bArZuDo8PaX+g==",
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-layers/-/tfjs-layers-2.8.0.tgz",
"integrity": "sha512-g7ZEXyo46osVbJAR90KXbwWr82OlcqZOohSEIMXSZ/egnXLQpQqUBmGg8p8Nw2es6jmpSfOBDivv1z59HExVvg==",
"dev": true
},
"@tensorflow/tfjs-node": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-node/-/tfjs-node-2.7.0.tgz",
"integrity": "sha512-0cWplm7AE40gi2llqoAp+lD/0X3dVJ8kb7Arrqb5lMhShRWUFZpULH+F0fJI6Yax4LBTzBi2SZKGL/O8krZsxg==",
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-node/-/tfjs-node-2.8.0.tgz",
"integrity": "sha512-u62AqvIS9jaMrw09Hl/Dy1YKiqEkltQ1c+RoJuW0XE685bjRue7FRmkJy69+EvsnXLY6gvPR1y+LguTPql8ZwA==",
"dev": true,
"requires": {
"@tensorflow/tfjs": "2.7.0",
"@tensorflow/tfjs-core": "2.7.0",
"@tensorflow/tfjs": "2.8.0",
"@tensorflow/tfjs-core": "2.8.0",
"adm-zip": "^0.4.11",
"google-protobuf": "^3.9.2",
"https-proxy-agent": "^2.2.1",
@ -120,13 +121,13 @@
}
},
"@tensorflow/tfjs-node-gpu": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-node-gpu/-/tfjs-node-gpu-2.7.0.tgz",
"integrity": "sha512-aL49B/0R7sBJpgeQ3sOeH38UFf78Hr0mi3CLLswGFgt+DALd+1sc4jBpSORycoHjZLiPysW5YsFz9t5BNIw8ig==",
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/@tensorflow/tfjs-node-gpu/-/tfjs-node-gpu-2.8.0.tgz",
"integrity": "sha512-8k2N+OTXSbiwn3vJ0F1ukQHfWiw1Rwy4e/JnJFN6d/9Tp6bkdfx3Il/C/uk0RDAc6Pq5n7pHs9Pthg5gApTj1A==",
"dev": true,
"requires": {
"@tensorflow/tfjs": "2.7.0",
"@tensorflow/tfjs-core": "2.7.0",
"@tensorflow/tfjs": "2.8.0",
"@tensorflow/tfjs-core": "2.8.0",
"adm-zip": "^0.4.11",
"google-protobuf": "^3.9.2",
"https-proxy-agent": "^2.2.1",
@ -154,9 +155,9 @@
"dev": true
},
"@types/node": {
"version": "14.14.12",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.12.tgz",
"integrity": "sha512-ASH8OPHMNlkdjrEdmoILmzFfsJICvhBsFfAum4aKZ/9U4B6M6tTmTPh+f3ttWdD74CEGV5XvXWkbyfSdXaTd7g==",
"version": "14.14.13",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.13.tgz",
"integrity": "sha512-vbxr0VZ8exFMMAjCW8rJwaya0dMCDyYW2ZRdTyjtrCvJoENMpdUHOT/eTzvgyA5ZnqRZ/sI0NwqAxNHKYokLJQ==",
"dev": true
},
"@types/node-fetch": {
@ -381,9 +382,9 @@
"dev": true
},
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
"requires": {
"ms": "^2.1.1"
@ -441,9 +442,9 @@
}
},
"esbuild": {
"version": "0.8.22",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.22.tgz",
"integrity": "sha512-7cgcJwjff5pw6JLTpUyN3QZ6raOYamfvBt7ry0tyGZwZJ/W8mJrHuv+VC5rbNEO4Mz8s8ElmcavKc7R2g1HWow==",
"version": "0.8.23",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.8.23.tgz",
"integrity": "sha512-LkgCmotGnhVgRGxjDkTBBYrnJ5stcxK+40cEJGtXUS16hcAWy90cn1qjxKCogzLPJ75gW/L6ejly7VKrMstVGQ==",
"dev": true
},
"escalade": {
@ -696,9 +697,9 @@
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
"needle": {

View File

@ -38,12 +38,12 @@
"@vladmandic/pilogger": "^0.2.10"
},
"devDependencies": {
"@tensorflow/tfjs": "^2.7.0",
"@tensorflow/tfjs-node": "^2.7.0",
"@tensorflow/tfjs-node-gpu": "^2.7.0",
"@tensorflow/tfjs-backend-wasm": "^2.7.0",
"@types/node": "^14.14.12",
"esbuild": "^0.8.22",
"@tensorflow/tfjs": "^2.8.0",
"@tensorflow/tfjs-node": "^2.8.0",
"@tensorflow/tfjs-node-gpu": "^2.8.0",
"@tensorflow/tfjs-backend-wasm": "^2.8.0",
"@types/node": "^14.14.13",
"esbuild": "^0.8.23",
"rimraf": "^3.0.2",
"ts-node": "^9.1.1",
"tslib": "^2.0.3",

View File

@ -11,14 +11,6 @@ export abstract class NeuralNetwork<TNetParams> {
protected _paramMappings: ParamMapping[] = []
constructor(protected _name: string) {
/*
try {
const testTensor = tf.tensor([0]);
testTensor.toFloat();
} catch (err) {
throw new Error(`tfjs module not loaded: load '@tensorflow/tfjs' or '@tensorflow/tfjs-core' with appropriate backend explicitly`);
}
*/
}
public get params(): TNetParams | undefined { return this._params }

View File

@ -1,4 +1,4 @@
import * as tf from '@tensorflow/tfjs-core';
import * as tf from '../../dist/tfjs.esm.js';
import { Dimensions } from '../classes/Dimensions';
import { env } from '../env';