update build process

pull/50/head
Vladimir Mandic 2020-10-22 18:50:09 -04:00
parent 8c221d05aa
commit 0b36b05dd7
13 changed files with 148811 additions and 7952 deletions

View File

@ -44,12 +44,13 @@ There are multiple ways to use `Human` library, pick one that suits you:
### Included
- `dist/human.js`: IIFE format minified bundle with TFJS for Browsers
- `dist/human.esm.js`: ESM format minified bundle with TFJS for Browsers
- `dist/human.esm-nobundle.js`: ESM format non-minified bundle without TFJS for Browsers
- `dist/human.cjs`: CommonJS format non-minified bundle without TFJS for NodeJS
- `dist/human.js`: IIFE format bundle with TFJS for Browsers
- `dist/human.esm.js`: ESM format bundle with TFJS for Browsers
- `dist/human.esm-nobundle.js`: ESM format bundle without TFJS for Browsers
- `dist/human.cjs`: CommonJS format bundle without TFJS for NodeJS
All versions include `sourcemap` and build `manifest`
All versions include `sourcemap` and build `manifest`
While `Human` is in pre-release mode, all bundles are non-minified
Defaults:
```json
@ -433,9 +434,9 @@ Development dependencies are [eslint](https://github.com/eslint) used for code l
Performance will vary depending on your hardware, but also on number of resolution of input video/image, enabled modules as well as their parameters
For example, on a desktop with a low-end nVidia GTX1050 it can perform multiple face detections at 60+ FPS, but drops to ~15 FPS on a medium complex images if all modules are enabled
For example, it can perform multiple face detections at 60+ FPS, but drops to ~15 FPS on a medium complex images if all modules are enabled
Performance per module:
Performance per module on a **notebook** with nVidia GTX1050 GPU:
- Enabled all: 15 FPS
- Image filters: 80 FPS (standalone)
@ -448,6 +449,19 @@ Performance per module:
- Hand: 40 FPS (standalone)
- Body: 50 FPS (standalone)
Performance per module on a **smartphone** with Snapdragon 855:
- Enabled all: 3 FPS
- Image filters: 30 FPS (standalone)
- Face Detect: 20 FPS (standalone)
- Face Geometry: 10 FPS (includes face detect)
- Face Iris: 5 FPS (includes face detect and face geometry)
- Age: 20 FPS (includes face detect)
- Gender: 20 FPS (includes face detect)
- Emotion: 20 FPS (includes face detect)
- Hand: 40 FPS (standalone)
- Body: 10 FPS (standalone)
For performance details, see output of `result.performance` object during runtime
<hr>

8
dist/human.cjs vendored
View File

@ -5777,7 +5777,7 @@ var require_config = __commonJS((exports2) => {
var require_package = __commonJS((exports2, module2) => {
module2.exports = {
name: "@vladmandic/human",
version: "0.4.1",
version: "0.4.2",
description: "human: 3D Face Detection, Iris Tracking and Age & Gender Prediction",
sideEffects: false,
main: "dist/human.cjs",
@ -5816,9 +5816,9 @@ var require_package = __commonJS((exports2, module2) => {
scripts: {
start: "node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation src/node.js",
lint: "eslint src/*.js demo/*.js",
"build-iife": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=iife --minify --external:fs --global-name=Human --metafile=dist/human.json --outfile=dist/human.js src/human.js",
"build-esm-bundle": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --minify --external:fs --metafile=dist/human.esm.json --outfile=dist/human.esm.js src/human.js",
"build-esm-nobundle": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --minify --external:@tensorflow --external:fs --metafile=dist/human.esm-nobundle.json --outfile=dist/human.esm-nobundle.js src/human.js",
"build-iife": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=iife --external:fs --global-name=Human --metafile=dist/human.json --outfile=dist/human.js src/human.js",
"build-esm-bundle": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --external:fs --metafile=dist/human.esm.json --outfile=dist/human.esm.js src/human.js",
"build-esm-nobundle": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --external:@tensorflow --external:fs --metafile=dist/human.esm-nobundle.json --outfile=dist/human.esm-nobundle.js src/human.js",
"build-node": "esbuild --bundle --platform=node --sourcemap --target=esnext --format=cjs --external:@tensorflow --metafile=dist/human.cjs.json --outfile=dist/human.cjs src/human.js",
build: "rimraf dist/* && npm run build-iife && npm run build-esm-bundle && npm run build-esm-nobundle && npm run build-node && ls -l dist/",
update: "npm update --depth 20 && npm dedupe && npm prune && npm audit",

6
dist/human.cjs.json vendored
View File

@ -5,7 +5,7 @@
"imports": []
},
"package.json": {
"bytes": 2634,
"bytes": 2607,
"imports": []
},
"src/emotion/emotion.js": {
@ -353,7 +353,7 @@
"bytesInOutput": 2199
},
"package.json": {
"bytesInOutput": 2777
"bytesInOutput": 2750
},
"src/human.js": {
"bytesInOutput": 47
@ -362,7 +362,7 @@
"bytesInOutput": 10193
}
},
"bytes": 154561
"bytes": 154534
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -5,7 +5,7 @@
"imports": []
},
"package.json": {
"bytes": 2634,
"bytes": 2607,
"imports": []
},
"src/emotion/emotion.js": {
@ -260,109 +260,109 @@
"dist/human.esm-nobundle.js.map": {
"imports": [],
"inputs": {},
"bytes": 228002
"bytes": 252197
},
"dist/human.esm-nobundle.js": {
"imports": [],
"inputs": {
"src/facemesh/blazeface.js": {
"bytesInOutput": 3131
"bytesInOutput": 7121
},
"src/facemesh/keypoints.js": {
"bytesInOutput": 1950
"bytesInOutput": 2768
},
"src/facemesh/box.js": {
"bytesInOutput": 1026
"bytesInOutput": 2076
},
"src/facemesh/util.js": {
"bytesInOutput": 1176
"bytesInOutput": 3016
},
"src/facemesh/pipeline.js": {
"bytesInOutput": 5576
"bytesInOutput": 13258
},
"src/facemesh/uvcoords.js": {
"bytesInOutput": 16790
"bytesInOutput": 20584
},
"src/facemesh/triangulation.js": {
"bytesInOutput": 9995
"bytesInOutput": 23309
},
"src/facemesh/facemesh.js": {
"bytesInOutput": 1259
"bytesInOutput": 2661
},
"src/ssrnet/ssrnet.js": {
"bytesInOutput": 934
"bytesInOutput": 1744
},
"src/emotion/emotion.js": {
"bytesInOutput": 944
"bytesInOutput": 1718
},
"src/posenet/modelBase.js": {
"bytesInOutput": 597
"bytesInOutput": 1118
},
"src/posenet/modelMobileNet.js": {
"bytesInOutput": 272
"bytesInOutput": 504
},
"src/posenet/heapSort.js": {
"bytesInOutput": 1046
"bytesInOutput": 1637
},
"src/posenet/buildParts.js": {
"bytesInOutput": 551
"bytesInOutput": 1752
},
"src/posenet/keypoints.js": {
"bytesInOutput": 1626
"bytesInOutput": 2277
},
"src/posenet/vectors.js": {
"bytesInOutput": 612
"bytesInOutput": 1408
},
"src/posenet/decodePose.js": {
"bytesInOutput": 1021
"bytesInOutput": 3773
},
"src/posenet/decodeMultiple.js": {
"bytesInOutput": 608
"bytesInOutput": 1990
},
"src/posenet/util.js": {
"bytesInOutput": 1058
"bytesInOutput": 2396
},
"src/posenet/modelPoseNet.js": {
"bytesInOutput": 846
"bytesInOutput": 1936
},
"src/posenet/posenet.js": {
"bytesInOutput": 464
"bytesInOutput": 903
},
"src/handpose/box.js": {
"bytesInOutput": 1400
"bytesInOutput": 2805
},
"src/handpose/handdetector.js": {
"bytesInOutput": 2046
"bytesInOutput": 4117
},
"src/handpose/keypoints.js": {
"bytesInOutput": 160
"bytesInOutput": 263
},
"src/handpose/util.js": {
"bytesInOutput": 977
"bytesInOutput": 2663
},
"src/handpose/pipeline.js": {
"bytesInOutput": 3207
"bytesInOutput": 7604
},
"src/handpose/handpose.js": {
"bytesInOutput": 1211
"bytesInOutput": 2270
},
"src/imagefx.js": {
"bytesInOutput": 11088
"bytesInOutput": 20195
},
"config.js": {
"bytesInOutput": 1324
"bytesInOutput": 2197
},
"package.json": {
"bytesInOutput": 2304
"bytesInOutput": 2747
},
"src/human.js": {
"bytesInOutput": 6381
"bytesInOutput": 10193
},
"src/human.js": {
"bytesInOutput": 0
}
},
"bytes": 81845
"bytes": 154393
}
}
}

75104
dist/human.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

106
dist/human.esm.json vendored
View File

@ -149,7 +149,7 @@
]
},
"package.json": {
"bytes": 2634,
"bytes": 2607,
"imports": []
},
"src/emotion/emotion.js": {
@ -468,166 +468,166 @@
"dist/human.esm.js.map": {
"imports": [],
"inputs": {},
"bytes": 4989054
"bytes": 5081413
},
"dist/human.esm.js": {
"imports": [],
"inputs": {
"empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js": {
"bytesInOutput": 18
"bytesInOutput": 45
},
"empty:util": {
"bytesInOutput": 18
"bytesInOutput": 42
},
"empty:crypto": {
"bytesInOutput": 18
"bytesInOutput": 44
},
"node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js": {
"bytesInOutput": 293678
"bytesInOutput": 1004764
},
"node_modules/@tensorflow/tfjs-layers/dist/tf-layers.node.js": {
"bytesInOutput": 238720
"bytesInOutput": 514491
},
"node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js": {
"bytesInOutput": 108682
"bytesInOutput": 246275
},
"empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js": {
"bytesInOutput": 18
"bytesInOutput": 52
},
"node_modules/@tensorflow/tfjs-data/dist/tf-data.node.js": {
"bytesInOutput": 52362
"bytesInOutput": 129586
},
"node_modules/seedrandom/lib/alea.js": {
"bytesInOutput": 995
"bytesInOutput": 2112
},
"node_modules/seedrandom/lib/xor128.js": {
"bytesInOutput": 760
"bytesInOutput": 1699
},
"node_modules/seedrandom/lib/xorwow.js": {
"bytesInOutput": 850
"bytesInOutput": 1897
},
"node_modules/seedrandom/lib/xorshift7.js": {
"bytesInOutput": 1006
"bytesInOutput": 2307
},
"node_modules/seedrandom/lib/xor4096.js": {
"bytesInOutput": 1169
"bytesInOutput": 2742
},
"node_modules/seedrandom/lib/tychei.js": {
"bytesInOutput": 885
"bytesInOutput": 1940
},
"node_modules/seedrandom/seedrandom.js": {
"bytesInOutput": 1612
"bytesInOutput": 4019
},
"node_modules/seedrandom/index.js": {
"bytesInOutput": 176
"bytesInOutput": 458
},
"node_modules/@tensorflow/tfjs-backend-cpu/dist/tf-backend-cpu.node.js": {
"bytesInOutput": 75760
"bytesInOutput": 245995
},
"node_modules/@tensorflow/tfjs-backend-webgl/dist/tf-backend-webgl.node.js": {
"bytesInOutput": 251382
"bytesInOutput": 527935
},
"node_modules/@tensorflow/tfjs/dist/tf.node.js": {
"bytesInOutput": 765
"bytesInOutput": 3025
},
"src/facemesh/blazeface.js": {
"bytesInOutput": 3142
"bytesInOutput": 7111
},
"src/facemesh/keypoints.js": {
"bytesInOutput": 1951
"bytesInOutput": 2768
},
"src/facemesh/box.js": {
"bytesInOutput": 1011
"bytesInOutput": 2066
},
"src/facemesh/util.js": {
"bytesInOutput": 1195
"bytesInOutput": 3017
},
"src/facemesh/pipeline.js": {
"bytesInOutput": 5568
"bytesInOutput": 13249
},
"src/facemesh/uvcoords.js": {
"bytesInOutput": 16791
"bytesInOutput": 20584
},
"src/facemesh/triangulation.js": {
"bytesInOutput": 9996
"bytesInOutput": 23309
},
"src/facemesh/facemesh.js": {
"bytesInOutput": 1242
"bytesInOutput": 2651
},
"src/ssrnet/ssrnet.js": {
"bytesInOutput": 930
"bytesInOutput": 1734
},
"src/emotion/emotion.js": {
"bytesInOutput": 932
"bytesInOutput": 1708
},
"src/posenet/modelBase.js": {
"bytesInOutput": 575
"bytesInOutput": 1108
},
"src/posenet/modelMobileNet.js": {
"bytesInOutput": 250
"bytesInOutput": 494
},
"src/posenet/heapSort.js": {
"bytesInOutput": 1047
"bytesInOutput": 1637
},
"src/posenet/buildParts.js": {
"bytesInOutput": 552
"bytesInOutput": 1752
},
"src/posenet/keypoints.js": {
"bytesInOutput": 1638
"bytesInOutput": 2277
},
"src/posenet/vectors.js": {
"bytesInOutput": 621
"bytesInOutput": 1408
},
"src/posenet/decodePose.js": {
"bytesInOutput": 1029
"bytesInOutput": 3773
},
"src/posenet/decodeMultiple.js": {
"bytesInOutput": 609
"bytesInOutput": 1990
},
"src/posenet/util.js": {
"bytesInOutput": 1067
"bytesInOutput": 2396
},
"src/posenet/modelPoseNet.js": {
"bytesInOutput": 824
"bytesInOutput": 1926
},
"src/posenet/posenet.js": {
"bytesInOutput": 479
"bytesInOutput": 903
},
"src/handpose/box.js": {
"bytesInOutput": 1386
"bytesInOutput": 2795
},
"src/handpose/handdetector.js": {
"bytesInOutput": 2052
"bytesInOutput": 4107
},
"src/handpose/keypoints.js": {
"bytesInOutput": 161
"bytesInOutput": 263
},
"src/handpose/util.js": {
"bytesInOutput": 993
"bytesInOutput": 2663
},
"src/handpose/pipeline.js": {
"bytesInOutput": 3205
"bytesInOutput": 7594
},
"src/handpose/handpose.js": {
"bytesInOutput": 1189
"bytesInOutput": 2260
},
"src/imagefx.js": {
"bytesInOutput": 11089
"bytesInOutput": 20195
},
"config.js": {
"bytesInOutput": 1325
"bytesInOutput": 2197
},
"package.json": {
"bytesInOutput": 2305
"bytesInOutput": 2747
},
"src/human.js": {
"bytesInOutput": 6398
"bytesInOutput": 10183
},
"src/human.js": {
"bytesInOutput": 0
}
},
"bytes": 1118695
"bytes": 2844644
}
}
}

75201
dist/human.js vendored

File diff suppressed because one or more lines are too long

2
dist/human.js.map vendored

File diff suppressed because one or more lines are too long

106
dist/human.json vendored
View File

@ -149,7 +149,7 @@
]
},
"package.json": {
"bytes": 2634,
"bytes": 2607,
"imports": []
},
"src/emotion/emotion.js": {
@ -468,163 +468,163 @@
"dist/human.js.map": {
"imports": [],
"inputs": {},
"bytes": 4989055
"bytes": 5085325
},
"dist/human.js": {
"imports": [],
"inputs": {
"empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js": {
"bytesInOutput": 18
"bytesInOutput": 49
},
"empty:util": {
"bytesInOutput": 18
"bytesInOutput": 46
},
"empty:crypto": {
"bytesInOutput": 18
"bytesInOutput": 48
},
"node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js": {
"bytesInOutput": 293678
"bytesInOutput": 1055423
},
"node_modules/@tensorflow/tfjs-layers/dist/tf-layers.node.js": {
"bytesInOutput": 238720
"bytesInOutput": 541660
},
"node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js": {
"bytesInOutput": 108682
"bytesInOutput": 259681
},
"empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js": {
"bytesInOutput": 18
"bytesInOutput": 56
},
"node_modules/@tensorflow/tfjs-data/dist/tf-data.node.js": {
"bytesInOutput": 52362
"bytesInOutput": 136974
},
"node_modules/seedrandom/lib/alea.js": {
"bytesInOutput": 995
"bytesInOutput": 2276
},
"node_modules/seedrandom/lib/xor128.js": {
"bytesInOutput": 760
"bytesInOutput": 1827
},
"node_modules/seedrandom/lib/xorwow.js": {
"bytesInOutput": 850
"bytesInOutput": 2039
},
"node_modules/seedrandom/lib/xorshift7.js": {
"bytesInOutput": 1006
"bytesInOutput": 2481
},
"node_modules/seedrandom/lib/xor4096.js": {
"bytesInOutput": 1169
"bytesInOutput": 2946
},
"node_modules/seedrandom/lib/tychei.js": {
"bytesInOutput": 885
"bytesInOutput": 2080
},
"node_modules/seedrandom/seedrandom.js": {
"bytesInOutput": 1612
"bytesInOutput": 4275
},
"node_modules/seedrandom/index.js": {
"bytesInOutput": 176
"bytesInOutput": 490
},
"node_modules/@tensorflow/tfjs-backend-cpu/dist/tf-backend-cpu.node.js": {
"bytesInOutput": 75760
"bytesInOutput": 256744
},
"node_modules/@tensorflow/tfjs-backend-webgl/dist/tf-backend-webgl.node.js": {
"bytesInOutput": 251382
"bytesInOutput": 546737
},
"node_modules/@tensorflow/tfjs/dist/tf.node.js": {
"bytesInOutput": 765
"bytesInOutput": 3189
},
"src/facemesh/blazeface.js": {
"bytesInOutput": 3142
"bytesInOutput": 7400
},
"src/facemesh/keypoints.js": {
"bytesInOutput": 1951
"bytesInOutput": 2936
},
"src/facemesh/box.js": {
"bytesInOutput": 1011
"bytesInOutput": 2172
},
"src/facemesh/util.js": {
"bytesInOutput": 1195
"bytesInOutput": 3179
},
"src/facemesh/pipeline.js": {
"bytesInOutput": 5568
"bytesInOutput": 13773
},
"src/facemesh/uvcoords.js": {
"bytesInOutput": 16791
"bytesInOutput": 21528
},
"src/facemesh/triangulation.js": {
"bytesInOutput": 9996
"bytesInOutput": 28603
},
"src/facemesh/facemesh.js": {
"bytesInOutput": 1242
"bytesInOutput": 2775
},
"src/ssrnet/ssrnet.js": {
"bytesInOutput": 930
"bytesInOutput": 1835
},
"src/emotion/emotion.js": {
"bytesInOutput": 932
"bytesInOutput": 1796
},
"src/posenet/modelBase.js": {
"bytesInOutput": 575
"bytesInOutput": 1165
},
"src/posenet/modelMobileNet.js": {
"bytesInOutput": 250
"bytesInOutput": 519
},
"src/posenet/heapSort.js": {
"bytesInOutput": 1047
"bytesInOutput": 1765
},
"src/posenet/buildParts.js": {
"bytesInOutput": 552
"bytesInOutput": 1834
},
"src/posenet/keypoints.js": {
"bytesInOutput": 1638
"bytesInOutput": 2447
},
"src/posenet/vectors.js": {
"bytesInOutput": 621
"bytesInOutput": 1506
},
"src/posenet/decodePose.js": {
"bytesInOutput": 1029
"bytesInOutput": 3905
},
"src/posenet/decodeMultiple.js": {
"bytesInOutput": 609
"bytesInOutput": 2064
},
"src/posenet/util.js": {
"bytesInOutput": 1067
"bytesInOutput": 2522
},
"src/posenet/modelPoseNet.js": {
"bytesInOutput": 824
"bytesInOutput": 2012
},
"src/posenet/posenet.js": {
"bytesInOutput": 479
"bytesInOutput": 943
},
"src/handpose/box.js": {
"bytesInOutput": 1386
"bytesInOutput": 2931
},
"src/handpose/handdetector.js": {
"bytesInOutput": 2052
"bytesInOutput": 4247
},
"src/handpose/keypoints.js": {
"bytesInOutput": 161
"bytesInOutput": 283
},
"src/handpose/util.js": {
"bytesInOutput": 993
"bytesInOutput": 2803
},
"src/handpose/pipeline.js": {
"bytesInOutput": 3205
"bytesInOutput": 7911
},
"src/handpose/handpose.js": {
"bytesInOutput": 1189
"bytesInOutput": 2365
},
"src/imagefx.js": {
"bytesInOutput": 11089
"bytesInOutput": 21613
},
"config.js": {
"bytesInOutput": 1325
"bytesInOutput": 2387
},
"package.json": {
"bytesInOutput": 2305
"bytesInOutput": 2875
},
"src/human.js": {
"bytesInOutput": 6440
"bytesInOutput": 11380
}
},
"bytes": 1118744
"bytes": 2986996
}
}
}

View File

@ -39,9 +39,9 @@
"scripts": {
"start": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation src/node.js",
"lint": "eslint src/*.js demo/*.js",
"build-iife": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=iife --minify --external:fs --global-name=Human --metafile=dist/human.json --outfile=dist/human.js src/human.js",
"build-esm-bundle": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --minify --external:fs --metafile=dist/human.esm.json --outfile=dist/human.esm.js src/human.js",
"build-esm-nobundle": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --minify --external:@tensorflow --external:fs --metafile=dist/human.esm-nobundle.json --outfile=dist/human.esm-nobundle.js src/human.js",
"build-iife": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=iife --external:fs --global-name=Human --metafile=dist/human.json --outfile=dist/human.js src/human.js",
"build-esm-bundle": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --external:fs --metafile=dist/human.esm.json --outfile=dist/human.esm.js src/human.js",
"build-esm-nobundle": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --external:@tensorflow --external:fs --metafile=dist/human.esm-nobundle.json --outfile=dist/human.esm-nobundle.js src/human.js",
"build-node": "esbuild --bundle --platform=node --sourcemap --target=esnext --format=cjs --external:@tensorflow --metafile=dist/human.cjs.json --outfile=dist/human.cjs src/human.js",
"build": "rimraf dist/* && npm run build-iife && npm run build-esm-bundle && npm run build-esm-nobundle && npm run build-node && ls -l dist/",
"update": "npm update --depth 20 && npm dedupe && npm prune && npm audit",