add gear-e models

pull/356/head
Vladimir Mandic 2023-02-01 09:19:15 -05:00
parent 6fb4d04df3
commit eb53988f90
16 changed files with 160 additions and 100 deletions

View File

@ -9,8 +9,9 @@
## Changelog
### **HEAD -> main** 2023/01/29 mandic00@live.com
### **HEAD -> main** 2023/01/31 mandic00@live.com
- redo blazeface annotations
### **3.0.4** 2023/01/29 mandic00@live.com

View File

@ -444,7 +444,7 @@ For more info, see [**Configuration Details**](https://github.com/vladmandic/hum
<br><hr><br>
`Human` library is written in [TypeScript](https://www.typescriptlang.org/docs/handbook/intro.html) **4.9** using [TensorFlow/JS](https://www.tensorflow.org/js/) **4.1** and conforming to latest `JavaScript` [ECMAScript version 2022](https://262.ecma-international.org/) standard
`Human` library is written in [TypeScript](https://www.typescriptlang.org/docs/handbook/intro.html) **4.9** using [TensorFlow/JS](https://www.tensorflow.org/js/) **4.2** and conforming to latest `JavaScript` [ECMAScript version 2022](https://262.ecma-international.org/) standard
Build target for distributables is `JavaScript` [EMCAScript version 2018](https://262.ecma-international.org/9.0/)

File diff suppressed because one or more lines are too long

7
dist/human.esm.js vendored
View File

@ -32621,6 +32621,8 @@ __export(models_exports, {
faceres: () => faceres,
"faceres-deep": () => faceres_deep,
gear: () => gear,
"gear-e1": () => gear_e1,
"gear-e2": () => gear_e2,
gender: () => gender,
"gender-ssrnet-imdb": () => gender_ssrnet_imdb,
handdetect: () => handdetect,
@ -32678,6 +32680,8 @@ var facemesh_attention = 2382414;
var facemesh_detection_full = 1026192;
var facemesh_detection_short = 201268;
var faceres_deep = 13957620;
var gear_e1 = 112438;
var gear_e2 = 112438;
var gear = 1498916;
var gender_ssrnet_imdb = 161236;
var gender = 201808;
@ -32734,6 +32738,8 @@ var models_default = {
"facemesh-detection-full": facemesh_detection_full,
"facemesh-detection-short": facemesh_detection_short,
"faceres-deep": faceres_deep,
"gear-e1": gear_e1,
"gear-e2": gear_e2,
gear,
"gender-ssrnet-imdb": gender_ssrnet_imdb,
gender,
@ -33158,7 +33164,6 @@ async function check(instance, force = false) {
instance.config.backend = Rie();
await env.updateBackend();
registerCustomOps(instance.config);
env.initial = false;
}
return true;
}

File diff suppressed because one or more lines are too long

20
dist/human.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

12
dist/human.node.js vendored

File diff suppressed because one or more lines are too long

View File

@ -25,6 +25,8 @@
"facemesh-detection-full": 1026192,
"facemesh-detection-short": 201268,
"faceres-deep": 13957620,
"gear-e1": 112438,
"gear-e2": 112438,
"gear": 1498916,
"gender-ssrnet-imdb": 161236,
"gender": 201808,

View File

@ -288,7 +288,6 @@ export class Human {
const timeStamp = now();
const count = Object.values(this.models.models).filter((model) => model).length;
if (userConfig) this.config = mergeDeep(this.config, userConfig) as Config;
if (this.env.initial) { // print version info on first run and check for correct backend setup
if (!await backend.check(this, false)) log('error: backend check failed');
await tf.ready();

View File

@ -217,7 +217,7 @@ export async function check(instance: Human, force = false) {
await env.updateBackend(); // update env on backend init
registerCustomOps(instance.config);
// await env.updateBackend(); // update env on backend init
env.initial = false;
// env.initial = false;
}
return true;
}

View File

@ -1,50 +1,50 @@
2023-01-31 08:51:47 DATA:  Build {"name":"@vladmandic/human","version":"3.0.4"}
2023-01-31 08:51:47 INFO:  Application: {"name":"@vladmandic/human","version":"3.0.4"}
2023-01-31 08:51:47 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
2023-01-31 08:51:47 INFO:  Toolchain: {"build":"0.7.15","esbuild":"0.16.17","typescript":"4.9.5","typedoc":"0.23.24","eslint":"8.33.0"}
2023-01-31 08:51:47 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
2023-01-31 08:51:47 STATE: Clean: {"locations":["dist/*","types/*","typedoc/*"]}
2023-01-31 08:51:47 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1289,"outputBytes":361}
2023-01-31 08:51:47 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":569,"outputBytes":924}
2023-01-31 08:51:47 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":80,"inputBytes":672712,"outputBytes":318340}
2023-01-31 08:51:47 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":577,"outputBytes":928}
2023-01-31 08:51:47 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":80,"inputBytes":672716,"outputBytes":318344}
2023-01-31 08:51:47 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":665,"outputBytes":1876}
2023-01-31 08:51:47 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":80,"inputBytes":673664,"outputBytes":318455}
2023-01-31 08:51:47 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1375,"outputBytes":670}
2023-01-31 08:51:47 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":80,"inputBytes":672458,"outputBytes":316915}
2023-01-31 08:51:47 STATE: Compile: {"name":"tfjs/browser/esm/bundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":10,"inputBytes":1375,"outputBytes":1151306}
2023-01-31 08:51:47 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":80,"inputBytes":1823094,"outputBytes":1464164}
2023-01-31 08:51:47 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":80,"inputBytes":1823094,"outputBytes":1930337}
2023-01-31 08:51:51 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":15}
2023-01-31 08:51:53 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":77,"generated":true}
2023-01-31 08:51:53 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":6117,"outputBytes":2901}
2023-01-31 08:51:53 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":17503,"outputBytes":9403}
2023-01-31 08:52:02 STATE: Lint: {"locations":["**/*.json","src/**/*.ts","test/**/*.js","demo/**/*.js","**/*.md"],"files":169,"errors":0,"warnings":0}
2023-01-31 08:52:02 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
2023-01-31 08:52:02 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts","output":"types/tfjs-core.d.ts"}
2023-01-31 08:52:02 INFO:  Done...
2023-01-31 08:52:02 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs.d.ts","output":"types/tfjs.esm.d.ts"}
2023-01-31 08:52:02 STATE: Copy: {"input":"src/types/tsconfig.json","output":"types/tsconfig.json"}
2023-01-31 08:52:02 STATE: Copy: {"input":"src/types/eslint.json","output":"types/.eslintrc.json"}
2023-01-31 08:52:02 STATE: Copy: {"input":"src/types/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"}
2023-01-31 08:52:02 STATE: Filter: {"input":"types/tfjs-core.d.ts"}
2023-01-31 08:52:04 STATE: API-Extractor: {"succeeeded":true,"errors":0,"warnings":204}
2023-01-31 08:52:04 STATE: Filter: {"input":"types/human.d.ts"}
2023-01-31 08:52:04 STATE: Write: {"output":"dist/human.esm-nobundle.d.ts"}
2023-01-31 08:52:04 STATE: Write: {"output":"dist/human.esm.d.ts"}
2023-01-31 08:52:04 STATE: Write: {"output":"dist/human.d.ts"}
2023-01-31 08:52:04 STATE: Write: {"output":"dist/human.node-gpu.d.ts"}
2023-01-31 08:52:04 STATE: Write: {"output":"dist/human.node.d.ts"}
2023-01-31 08:52:04 STATE: Write: {"output":"dist/human.node-wasm.d.ts"}
2023-01-31 08:52:04 INFO:  Analyze models: {"folders":8,"result":"models/models.json"}
2023-01-31 08:52:04 STATE: Models {"folder":"./models","models":12}
2023-01-31 08:52:04 STATE: Models {"folder":"../human-models/models","models":41}
2023-01-31 08:52:04 STATE: Models {"folder":"../blazepose/model/","models":4}
2023-01-31 08:52:04 STATE: Models {"folder":"../anti-spoofing/model","models":1}
2023-01-31 08:52:04 STATE: Models {"folder":"../efficientpose/models","models":3}
2023-01-31 08:52:04 STATE: Models {"folder":"../insightface/models","models":5}
2023-01-31 08:52:04 STATE: Models {"folder":"../movenet/models","models":3}
2023-01-31 08:52:04 STATE: Models {"folder":"../nanodet/models","models":4}
2023-01-31 08:52:04 STATE: Models: {"count":55,"totalSize":372917743}
2023-01-31 08:52:04 INFO:  Human Build complete... {"logFile":"test/build.log"}
2023-02-01 09:17:59 DATA:  Build {"name":"@vladmandic/human","version":"3.0.4"}
2023-02-01 09:17:59 INFO:  Application: {"name":"@vladmandic/human","version":"3.0.4"}
2023-02-01 09:17:59 INFO:  Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
2023-02-01 09:17:59 INFO:  Toolchain: {"build":"0.7.15","esbuild":"0.16.17","typescript":"4.9.5","typedoc":"0.23.24","eslint":"8.33.0"}
2023-02-01 09:17:59 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
2023-02-01 09:17:59 STATE: Clean: {"locations":["dist/*","types/*","typedoc/*"]}
2023-02-01 09:17:59 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1289,"outputBytes":361}
2023-02-01 09:17:59 STATE: Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":569,"outputBytes":924}
2023-02-01 09:17:59 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":80,"inputBytes":672756,"outputBytes":318407}
2023-02-01 09:17:59 STATE: Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":577,"outputBytes":928}
2023-02-01 09:17:59 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":80,"inputBytes":672760,"outputBytes":318411}
2023-02-01 09:17:59 STATE: Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":665,"outputBytes":1876}
2023-02-01 09:17:59 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":80,"inputBytes":673708,"outputBytes":318522}
2023-02-01 09:17:59 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":1375,"outputBytes":670}
2023-02-01 09:17:59 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":80,"inputBytes":672502,"outputBytes":316982}
2023-02-01 09:17:59 STATE: Compile: {"name":"tfjs/browser/esm/bundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":10,"inputBytes":1375,"outputBytes":1151306}
2023-02-01 09:17:59 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":80,"inputBytes":1823138,"outputBytes":1464236}
2023-02-01 09:17:59 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":80,"inputBytes":1823138,"outputBytes":1930456}
2023-02-01 09:18:03 STATE: Typings: {"input":"src/human.ts","output":"types/lib","files":15}
2023-02-01 09:18:05 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":77,"generated":true}
2023-02-01 09:18:05 STATE: Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":6117,"outputBytes":2901}
2023-02-01 09:18:05 STATE: Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":17503,"outputBytes":9403}
2023-02-01 09:18:15 STATE: Lint: {"locations":["**/*.json","src/**/*.ts","test/**/*.js","demo/**/*.js","**/*.md"],"files":170,"errors":0,"warnings":0}
2023-02-01 09:18:15 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
2023-02-01 09:18:15 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs-core.d.ts","output":"types/tfjs-core.d.ts"}
2023-02-01 09:18:15 INFO:  Done...
2023-02-01 09:18:15 STATE: Copy: {"input":"node_modules/@vladmandic/tfjs/types/tfjs.d.ts","output":"types/tfjs.esm.d.ts"}
2023-02-01 09:18:15 STATE: Copy: {"input":"src/types/tsconfig.json","output":"types/tsconfig.json"}
2023-02-01 09:18:15 STATE: Copy: {"input":"src/types/eslint.json","output":"types/.eslintrc.json"}
2023-02-01 09:18:15 STATE: Copy: {"input":"src/types/tfjs.esm.d.ts","output":"dist/tfjs.esm.d.ts"}
2023-02-01 09:18:15 STATE: Filter: {"input":"types/tfjs-core.d.ts"}
2023-02-01 09:18:16 STATE: API-Extractor: {"succeeeded":true,"errors":0,"warnings":204}
2023-02-01 09:18:16 STATE: Filter: {"input":"types/human.d.ts"}
2023-02-01 09:18:16 STATE: Write: {"output":"dist/human.esm-nobundle.d.ts"}
2023-02-01 09:18:16 STATE: Write: {"output":"dist/human.esm.d.ts"}
2023-02-01 09:18:16 STATE: Write: {"output":"dist/human.d.ts"}
2023-02-01 09:18:16 STATE: Write: {"output":"dist/human.node-gpu.d.ts"}
2023-02-01 09:18:16 STATE: Write: {"output":"dist/human.node.d.ts"}
2023-02-01 09:18:16 STATE: Write: {"output":"dist/human.node-wasm.d.ts"}
2023-02-01 09:18:16 INFO:  Analyze models: {"folders":8,"result":"models/models.json"}
2023-02-01 09:18:16 STATE: Models {"folder":"./models","models":12}
2023-02-01 09:18:16 STATE: Models {"folder":"../human-models/models","models":43}
2023-02-01 09:18:16 STATE: Models {"folder":"../blazepose/model/","models":4}
2023-02-01 09:18:16 STATE: Models {"folder":"../anti-spoofing/model","models":1}
2023-02-01 09:18:16 STATE: Models {"folder":"../efficientpose/models","models":3}
2023-02-01 09:18:16 STATE: Models {"folder":"../insightface/models","models":5}
2023-02-01 09:18:16 STATE: Models {"folder":"../movenet/models","models":3}
2023-02-01 09:18:16 STATE: Models {"folder":"../nanodet/models","models":4}
2023-02-01 09:18:16 STATE: Models: {"count":57,"totalSize":373142619}
2023-02-01 09:18:16 INFO:  Human Build complete... {"logFile":"test/build.log"}

53
test/test-node-emotion.js Normal file
View File

@ -0,0 +1,53 @@
const fs = require('fs');
const path = require('path');
const log = require('@vladmandic/pilogger');
const H = require('../dist/human.node.js');
const models = ['emotion.json', 'gear-e1.json', 'gear-e2.json'];
const humanConfig = {
cacheSensitivity: 0,
modelBasePath: 'https://vladmandic.github.io/human-models/models/',
face: {
scale: 1.4,
detector: { enabled: true, maxDetected: 1 },
mesh: { enabled: true },
iris: { enabled: false },
description: { enabled: false },
emotion: { enabled: true },
},
body: { enabled: false },
hand: { enabled: false },
object: { enabled: false },
gestures: { enabled: false },
};
function samples() {
const dir = path.join(__dirname, '../samples/in');
return fs.readdirSync(dir).filter((f) => f.includes('emotions')).map((i) => path.join(dir, i));
}
async function main() {
log.configure({ inspect: { breakLength: 350 } });
const inputs = process.argv.length > 2 ? process.argv.slice(2, -1) : samples();
const human = new H.Human(humanConfig);
for (const model of models) {
human.env.initial = true; // reset to allow model change instead of using cached model
humanConfig.face.emotion.modelPath = model;
await human.load(humanConfig);
for (const input of inputs) {
const stat = fs.statSync(input);
const files = [];
if (stat.isFile()) files.push(input);
else if (stat.isDirectory()) fs.readdirSync(input).forEach((f) => files.push(path.join(input, f)));
for (const f of files) {
const buffer = fs.readFileSync(f);
const tensor = human.tf.node.decodeImage(buffer, 3);
const res = await human.detect(tensor);
res.face.forEach((face) => log.info({ model, image: f, emotion: face.emotion }));
human.tf.dispose(tensor);
}
}
}
}
main();

View File

@ -43,7 +43,7 @@ function getImageTensor(imageFile) {
function printResult(obj) {
if (!obj || !obj.res || !obj.res.face || obj.res.face.length === 0) log('warn', 'failed: no faces detected');
else obj.res.face.forEach((face, i) => log('data', 'results', { face: i, model: obj.model, image: obj.image, age: face.age, gender: face.gender, genderScore: face.genderScore, race: face.race }));
else obj.res.face.forEach((face, i) => log('data', 'results', { face: i, model: obj.model, image: obj.image, age: face.age, gender: face.gender, genderScore: face.genderScore, race: face.race, emotion: face.emotion }));
}
async function main() {

View File

@ -307,7 +307,7 @@ Possible events:</p>
</div></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/Result.html" class="tsd-signature-type" data-tsd-kind="Interface">Result</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L380">src/human.ts:380</a></li></ul></aside></li></ul></section>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L379">src/human.ts:379</a></li></ul></aside></li></ul></section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="emit" class="tsd-anchor"></a>
<h3 class="tsd-anchor-link"><span>emit</span><a href="#emit" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@ -322,7 +322,7 @@ Possible events:</p>
<h5>event: <span class="tsd-signature-type">string</span></h5></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L316">src/human.ts:316</a></li></ul></aside></li></ul></section>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L315">src/human.ts:315</a></li></ul></aside></li></ul></section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="image" class="tsd-anchor"></a>
<h3 class="tsd-anchor-link"><span>image</span><a href="#image" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@ -399,7 +399,7 @@ Interpolation is based on time since last known result so can be called independ
</div></li></ul></div>
<h4 class="tsd-returns-title">Returns <a href="../interfaces/Result.html" class="tsd-signature-type" data-tsd-kind="Interface">Result</a></h4><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L326">src/human.ts:326</a></li></ul></aside></li></ul></section>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L325">src/human.ts:325</a></li></ul></aside></li></ul></section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="now" class="tsd-anchor"></a>
<h3 class="tsd-anchor-link"><span>now</span><a href="#now" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@ -430,7 +430,7 @@ Interpolation is based on time since last known result so can be called independ
<h5><code class="tsd-tag ts-flagOptional">Optional</code> userConfig: <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/Config.html" class="tsd-signature-type" data-tsd-kind="Interface">Config</a><span class="tsd-signature-symbol">&gt;</span></h5></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-symbol">{ </span><br/><span>    </span>kernel<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span>perc<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span>    </span>time<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L348">src/human.ts:348</a></li></ul></aside></li></ul></section>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L347">src/human.ts:347</a></li></ul></aside></li></ul></section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="reset" class="tsd-anchor"></a>
<h3 class="tsd-anchor-link"><span>reset</span><a href="#reset" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@ -478,7 +478,7 @@ Returns tensor which contains image data in RGBA format</p>
</div></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L544">src/human.ts:544</a></li></ul></aside></li></ul></section>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L543">src/human.ts:543</a></li></ul></aside></li></ul></section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="validate" class="tsd-anchor"></a>
<h3 class="tsd-anchor-link"><span>validate</span><a href="#validate" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@ -518,7 +518,7 @@ Returns tensor which contains image data in RGBA format</p>
</div></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L555">src/human.ts:555</a></li></ul></aside></li></ul></section>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L554">src/human.ts:554</a></li></ul></aside></li></ul></section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="warmup" class="tsd-anchor"></a>
<h3 class="tsd-anchor-link"><span>warmup</span><a href="#warmup" aria-label="Permalink" class="tsd-anchor-icon"><svg class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><use href="#icon-anchor-a"></use><use href="#icon-anchor-b"></use><use href="#icon-anchor-c"></use></svg></a></h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
@ -541,7 +541,7 @@ Returns tensor which contains image data in RGBA format</p>
</div></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> | </span><a href="../interfaces/Result.html" class="tsd-signature-type" data-tsd-kind="Interface">Result</a><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L336">src/human.ts:336</a></li></ul></aside></li></ul></section></section></div>
<li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/human.ts#L335">src/human.ts:335</a></li></ul></aside></li></ul></section></section></div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<div class="tsd-navigation settings">
<details class="tsd-index-accordion"><summary class="tsd-accordion-summary">