mirror of https://github.com/vladmandic/human
implement model caching using indexdb
parent
0c2bd1a4c1
commit
3a7b549b7c
|
@ -9,7 +9,10 @@
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
### **HEAD -> main** 2022/01/14 mandic00@live.com
|
### **HEAD -> main** 2022/01/16 mandic00@live.com
|
||||||
|
|
||||||
|
|
||||||
|
### **origin/main** 2022/01/15 mandic00@live.com
|
||||||
|
|
||||||
- fix face box and hand tracking when in front of face
|
- fix face box and hand tracking when in front of face
|
||||||
|
|
||||||
|
|
18
TODO.md
18
TODO.md
|
@ -19,9 +19,6 @@
|
||||||
|
|
||||||
Experimental support only until support is officially added in Chromium
|
Experimental support only until support is officially added in Chromium
|
||||||
|
|
||||||
- Performance issues:
|
|
||||||
<https://github.com/tensorflow/tfjs/issues/5689>
|
|
||||||
|
|
||||||
### Face Detection
|
### Face Detection
|
||||||
|
|
||||||
Enhanced rotation correction for face detection is not working in NodeJS due to missing kernel op in TFJS
|
Enhanced rotation correction for face detection is not working in NodeJS due to missing kernel op in TFJS
|
||||||
|
@ -34,4 +31,17 @@ Feature is automatically disabled in NodeJS without user impact
|
||||||
|
|
||||||
## Pending Release Notes
|
## Pending Release Notes
|
||||||
|
|
||||||
N/A
|
- Add global model cache hander using indexdb in browser environments
|
||||||
|
see `config.cacheModels` setting for details
|
||||||
|
- Add additional demos
|
||||||
|
`human-motion` and `human-avatar`
|
||||||
|
- Updated samples image gallery
|
||||||
|
- Fix face box detections when face is partially occluded
|
||||||
|
- Fix face box scaling
|
||||||
|
- Fix hand tracking when hand is in front of face
|
||||||
|
- Fix compatibility with `ElectronJS`
|
||||||
|
- Fix interpolation for some body keypoints
|
||||||
|
- Updated blazepose calculations
|
||||||
|
- Changes to blazepose and handlandmarks annotations
|
||||||
|
- Strong typing for string enums
|
||||||
|
- Updated `TFJS`
|
||||||
|
|
|
@ -90,7 +90,7 @@ async function main() {
|
||||||
status("loading...");
|
status("loading...");
|
||||||
await human.load();
|
await human.load();
|
||||||
log("backend:", human.tf.getBackend(), "| available:", human.env.backends);
|
log("backend:", human.tf.getBackend(), "| available:", human.env.backends);
|
||||||
log("loaded models:" + Object.values(human.models).filter((model) => model !== null).length);
|
log("loaded models:", Object.values(human.models).filter((model) => model !== null).length);
|
||||||
status("initializing...");
|
status("initializing...");
|
||||||
await human.warmup();
|
await human.warmup();
|
||||||
await webCam();
|
await webCam();
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -102,7 +102,7 @@ async function main() { // main entry point
|
||||||
status('loading...');
|
status('loading...');
|
||||||
await human.load(); // preload all models
|
await human.load(); // preload all models
|
||||||
log('backend:', human.tf.getBackend(), '| available:', human.env.backends);
|
log('backend:', human.tf.getBackend(), '| available:', human.env.backends);
|
||||||
log('loaded models:' + Object.values(human.models).filter((model) => model !== null).length);
|
log('loaded models:', Object.values(human.models).filter((model) => model !== null).length);
|
||||||
status('initializing...');
|
status('initializing...');
|
||||||
await human.warmup(); // warmup function to initialize backend for future faster detection
|
await human.warmup(); // warmup function to initialize backend for future faster detection
|
||||||
await webCam(); // start webcam
|
await webCam(); // start webcam
|
||||||
|
|
|
@ -190,6 +190,10 @@ export declare interface Config {
|
||||||
* default: `../models/` for browsers and `file://models/` for nodejs
|
* default: `../models/` for browsers and `file://models/` for nodejs
|
||||||
*/
|
*/
|
||||||
modelBasePath: string;
|
modelBasePath: string;
|
||||||
|
/** Cache models in IndexDB on first sucessfull load
|
||||||
|
* default: true if indexdb is available (browsers), false if its not (nodejs)
|
||||||
|
*/
|
||||||
|
cacheModels: boolean;
|
||||||
/** Cache sensitivity
|
/** Cache sensitivity
|
||||||
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
||||||
* - set to 0 to disable caching
|
* - set to 0 to disable caching
|
||||||
|
|
|
@ -190,6 +190,10 @@ export declare interface Config {
|
||||||
* default: `../models/` for browsers and `file://models/` for nodejs
|
* default: `../models/` for browsers and `file://models/` for nodejs
|
||||||
*/
|
*/
|
||||||
modelBasePath: string;
|
modelBasePath: string;
|
||||||
|
/** Cache models in IndexDB on first sucessfull load
|
||||||
|
* default: true if indexdb is available (browsers), false if its not (nodejs)
|
||||||
|
*/
|
||||||
|
cacheModels: boolean;
|
||||||
/** Cache sensitivity
|
/** Cache sensitivity
|
||||||
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
||||||
* - set to 0 to disable caching
|
* - set to 0 to disable caching
|
||||||
|
|
|
@ -102,6 +102,7 @@ function mergeDeep(...objects) {
|
||||||
var config = {
|
var config = {
|
||||||
backend: "",
|
backend: "",
|
||||||
modelBasePath: "",
|
modelBasePath: "",
|
||||||
|
cacheModels: true,
|
||||||
wasmPath: "",
|
wasmPath: "",
|
||||||
debug: true,
|
debug: true,
|
||||||
async: true,
|
async: true,
|
||||||
|
@ -1347,46 +1348,59 @@ var Env = class {
|
||||||
};
|
};
|
||||||
var env = new Env();
|
var env = new Env();
|
||||||
|
|
||||||
// package.json
|
|
||||||
var version10 = "2.5.8";
|
|
||||||
|
|
||||||
// src/tfjs/load.ts
|
// src/tfjs/load.ts
|
||||||
var options = {
|
var options = {
|
||||||
appName: "human",
|
cacheModels: false,
|
||||||
autoSave: true,
|
verbose: true,
|
||||||
verbose: true
|
debug: false,
|
||||||
|
modelBasePath: ""
|
||||||
};
|
};
|
||||||
async function httpHandler(url, init2) {
|
async function httpHandler(url, init2) {
|
||||||
if (options.fetchFunc)
|
if (options.debug)
|
||||||
return options.fetchFunc(url, init2);
|
log("load model fetch:", url, init2);
|
||||||
else
|
if (typeof fetch === "undefined") {
|
||||||
log("error: fetch function is not defined");
|
log("error loading model: fetch function is not defined:");
|
||||||
return null;
|
|
||||||
}
|
|
||||||
var tfLoadOptions = {
|
|
||||||
onProgress: (...args) => {
|
|
||||||
if (options.onProgress)
|
|
||||||
options.onProgress(...args);
|
|
||||||
else if (options.verbose)
|
|
||||||
log("load model progress:", ...args);
|
|
||||||
},
|
|
||||||
fetchFunc: (url, init2) => {
|
|
||||||
if (options.verbose)
|
|
||||||
log("load model fetch:", url, init2);
|
|
||||||
if (url.toString().toLowerCase().startsWith("http"))
|
|
||||||
return httpHandler(url, init2);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
return fetch(url, init2);
|
||||||
async function loadModel2(modelUrl, loadOptions) {
|
}
|
||||||
if (loadOptions)
|
function setModelLoadOptions(config3) {
|
||||||
options = mergeDeep(loadOptions);
|
options.cacheModels = config3.cacheModels;
|
||||||
if (!options.fetchFunc && typeof globalThis.fetch !== "undefined")
|
options.verbose = config3.debug;
|
||||||
options.fetchFunc = globalThis.fetch;
|
options.modelBasePath = config3.modelBasePath;
|
||||||
const model18 = await tfjs_esm_exports.loadGraphModel(modelUrl, tfLoadOptions);
|
}
|
||||||
|
async function loadModel(modelPath) {
|
||||||
|
const modelUrl = join(options.modelBasePath, modelPath || "");
|
||||||
|
const modelPathSegments = modelUrl.split("/");
|
||||||
|
const cachedModelName = "indexeddb://" + modelPathSegments[modelPathSegments.length - 1].replace(".json", "");
|
||||||
|
const cachedModels = await tfjs_esm_exports.io.listModels();
|
||||||
|
const modelCached = options.cacheModels && Object.keys(cachedModels).includes(cachedModelName);
|
||||||
|
const model18 = new GraphModel(modelCached ? cachedModelName : modelUrl, { fetchFunc: (url, init2) => httpHandler(url, init2) });
|
||||||
|
try {
|
||||||
|
model18.findIOHandler();
|
||||||
|
if (options.debug)
|
||||||
|
log("model load handler:", model18.handler);
|
||||||
|
const artifacts = await model18.handler.load();
|
||||||
|
model18.loadSync(artifacts);
|
||||||
|
if (options.verbose)
|
||||||
|
log("load model:", model18["modelUrl"]);
|
||||||
|
} catch (err) {
|
||||||
|
log("error loading model:", modelUrl, err);
|
||||||
|
}
|
||||||
|
if (options.cacheModels && !modelCached) {
|
||||||
|
try {
|
||||||
|
const saveResult = await model18.save(cachedModelName);
|
||||||
|
log("model saved:", cachedModelName, saveResult);
|
||||||
|
} catch (err) {
|
||||||
|
log("error saving model:", modelUrl, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
return model18;
|
return model18;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// package.json
|
||||||
|
var version10 = "2.6.0";
|
||||||
|
|
||||||
// src/gear/gear.ts
|
// src/gear/gear.ts
|
||||||
var model;
|
var model;
|
||||||
var last2 = [];
|
var last2 = [];
|
||||||
|
@ -1398,13 +1412,9 @@ var skipped = Number.MAX_SAFE_INTEGER;
|
||||||
async function load(config3) {
|
async function load(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model = null;
|
model = null;
|
||||||
if (!model) {
|
if (!model)
|
||||||
model = await loadModel2(join(config3.modelBasePath, config3.face["gear"].modelPath));
|
model = await loadModel(config3.face["gear"]);
|
||||||
if (!model || !model["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["gear"].modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model["modelUrl"]);
|
log("cached model:", model["modelUrl"]);
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
@ -1479,16 +1489,10 @@ var skipped2 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load2(config3) {
|
async function load2(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model2 = null;
|
model2 = null;
|
||||||
if (!model2) {
|
if (!model2)
|
||||||
model2 = await loadModel2(join(config3.modelBasePath, config3.face["ssrnet"].modelPathAge));
|
model2 = await loadModel(config3.face["ssrnet"].modelPathAge);
|
||||||
if (!model2 || !model2["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["ssrnet"].modelPathAge);
|
log("cached model:", model2["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model2["modelUrl"]);
|
|
||||||
} else {
|
|
||||||
if (config3.debug)
|
|
||||||
log("cached model:", model2["modelUrl"]);
|
|
||||||
}
|
|
||||||
return model2;
|
return model2;
|
||||||
}
|
}
|
||||||
async function predict2(image24, config3, idx, count2) {
|
async function predict2(image24, config3, idx, count2) {
|
||||||
|
@ -1533,13 +1537,9 @@ var rgb = [0.2989, 0.587, 0.114];
|
||||||
async function load3(config3) {
|
async function load3(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model3 = null;
|
model3 = null;
|
||||||
if (!model3) {
|
if (!model3)
|
||||||
model3 = await loadModel2(join(config3.modelBasePath, config3.face["ssrnet"].modelPathGender));
|
model3 = await loadModel(config3.face["ssrnet"].modelPathGender);
|
||||||
if (!model3 || !model3["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["ssrnet"].modelPathGender);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model3["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model3["modelUrl"]);
|
log("cached model:", model3["modelUrl"]);
|
||||||
return model3;
|
return model3;
|
||||||
}
|
}
|
||||||
|
@ -1589,16 +1589,12 @@ var skipped4 = Number.MAX_SAFE_INTEGER;
|
||||||
var lastCount4 = 0;
|
var lastCount4 = 0;
|
||||||
var lastTime4 = 0;
|
var lastTime4 = 0;
|
||||||
async function load4(config3) {
|
async function load4(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model4 = null;
|
model4 = null;
|
||||||
if (!model4) {
|
if (!model4)
|
||||||
model4 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.antispoof) == null ? void 0 : _a.modelPath) || ""));
|
model4 = await loadModel((_a = config3.face.antispoof) == null ? void 0 : _a.modelPath);
|
||||||
if (!model4 || !model4["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.antispoof) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model4["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model4["modelUrl"]);
|
log("cached model:", model4["modelUrl"]);
|
||||||
return model4;
|
return model4;
|
||||||
}
|
}
|
||||||
|
@ -5081,16 +5077,12 @@ var inputSize = 0;
|
||||||
var inputSizeT = null;
|
var inputSizeT = null;
|
||||||
var size = () => inputSize;
|
var size = () => inputSize;
|
||||||
async function load5(config3) {
|
async function load5(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model5 = null;
|
model5 = null;
|
||||||
if (!model5) {
|
if (!model5)
|
||||||
model5 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.detector) == null ? void 0 : _a.modelPath) || ""));
|
model5 = await loadModel((_a = config3.face.detector) == null ? void 0 : _a.modelPath);
|
||||||
if (!model5 || !model5["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.detector) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model5["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model5["modelUrl"]);
|
log("cached model:", model5["modelUrl"]);
|
||||||
inputSize = model5.inputs[0].shape ? model5.inputs[0].shape[2] : 0;
|
inputSize = model5.inputs[0].shape ? model5.inputs[0].shape[2] : 0;
|
||||||
inputSizeT = tfjs_esm_exports.scalar(inputSize, "int32");
|
inputSizeT = tfjs_esm_exports.scalar(inputSize, "int32");
|
||||||
|
@ -5319,14 +5311,10 @@ async function loadDetect(config3) {
|
||||||
if (env3.initial)
|
if (env3.initial)
|
||||||
models.detector = null;
|
models.detector = null;
|
||||||
if (!models.detector && config3.body["detector"] && config3.body["detector"]["modelPath"] || "") {
|
if (!models.detector && config3.body["detector"] && config3.body["detector"]["modelPath"] || "") {
|
||||||
models.detector = await loadModel2(join(config3.modelBasePath, config3.body["detector"]["modelPath"] || ""));
|
models.detector = await loadModel(config3.body["detector"]["modelPath"]);
|
||||||
const inputs = Object.values(models.detector.modelSignature["inputs"]);
|
const inputs = Object.values(models.detector.modelSignature["inputs"]);
|
||||||
inputSize3.detector[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize3.detector[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize3.detector[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize3.detector[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models.detector || !models.detector["modelUrl"])
|
|
||||||
log("load model failed:", config3.body["detector"]["modelPath"]);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models.detector["modelUrl"]);
|
|
||||||
} else if (config3.debug && models.detector)
|
} else if (config3.debug && models.detector)
|
||||||
log("cached model:", models.detector["modelUrl"]);
|
log("cached model:", models.detector["modelUrl"]);
|
||||||
await createAnchors();
|
await createAnchors();
|
||||||
|
@ -5336,14 +5324,10 @@ async function loadPose(config3) {
|
||||||
if (env3.initial)
|
if (env3.initial)
|
||||||
models.landmarks = null;
|
models.landmarks = null;
|
||||||
if (!models.landmarks) {
|
if (!models.landmarks) {
|
||||||
models.landmarks = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
models.landmarks = await loadModel(config3.body.modelPath);
|
||||||
const inputs = Object.values(models.landmarks.modelSignature["inputs"]);
|
const inputs = Object.values(models.landmarks.modelSignature["inputs"]);
|
||||||
inputSize3.landmarks[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize3.landmarks[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize3.landmarks[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize3.landmarks[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models.landmarks || !models.landmarks["modelUrl"])
|
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models.landmarks["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models.landmarks["modelUrl"]);
|
log("cached model:", models.landmarks["modelUrl"]);
|
||||||
return models.landmarks;
|
return models.landmarks;
|
||||||
|
@ -5568,13 +5552,9 @@ async function load6(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model6 = null;
|
model6 = null;
|
||||||
if (!model6) {
|
if (!model6) {
|
||||||
model6 = await loadModel2(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model6 = await loadModel(config3.object.modelPath);
|
||||||
const inputs = Object.values(model6.modelSignature["inputs"]);
|
const inputs = Object.values(model6.modelSignature["inputs"]);
|
||||||
inputSize4 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize4 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!model6 || !model6["modelUrl"])
|
|
||||||
log("load model failed:", config3.object.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model6["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model6["modelUrl"]);
|
log("cached model:", model6["modelUrl"]);
|
||||||
return model6;
|
return model6;
|
||||||
|
@ -5681,13 +5661,9 @@ var skipped7 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load7(config3) {
|
async function load7(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model7 = null;
|
model7 = null;
|
||||||
if (!model7) {
|
if (!model7)
|
||||||
model7 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model7 = await loadModel(config3.body.modelPath);
|
||||||
if (!model7 || !model7["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model7["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model7["modelUrl"]);
|
log("cached model:", model7["modelUrl"]);
|
||||||
return model7;
|
return model7;
|
||||||
}
|
}
|
||||||
|
@ -5795,16 +5771,12 @@ var lastCount5 = 0;
|
||||||
var lastTime8 = 0;
|
var lastTime8 = 0;
|
||||||
var skipped8 = Number.MAX_SAFE_INTEGER;
|
var skipped8 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load8(config3) {
|
async function load8(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model8 = null;
|
model8 = null;
|
||||||
if (!model8) {
|
if (!model8)
|
||||||
model8 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.emotion) == null ? void 0 : _a.modelPath) || ""));
|
model8 = await loadModel((_a = config3.face.emotion) == null ? void 0 : _a.modelPath);
|
||||||
if (!model8 || !model8["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.emotion) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model8["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model8["modelUrl"]);
|
log("cached model:", model8["modelUrl"]);
|
||||||
return model8;
|
return model8;
|
||||||
}
|
}
|
||||||
|
@ -5853,17 +5825,12 @@ var lastCount6 = 0;
|
||||||
var lastTime9 = 0;
|
var lastTime9 = 0;
|
||||||
var skipped9 = Number.MAX_SAFE_INTEGER;
|
var skipped9 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load9(config3) {
|
async function load9(config3) {
|
||||||
const modelUrl = join(config3.modelBasePath, config3.face["mobilefacenet"].modelPath);
|
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model9 = null;
|
model9 = null;
|
||||||
if (!model9) {
|
if (!model9)
|
||||||
model9 = await loadModel2(modelUrl);
|
model9 = await loadModel(config3.face["mobilefacenet"].modelPath);
|
||||||
if (!model9)
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["mobilefacenet"].modelPath);
|
log("cached model:", model9["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", modelUrl);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", modelUrl);
|
|
||||||
return model9;
|
return model9;
|
||||||
}
|
}
|
||||||
async function predict9(input, config3, idx, count2) {
|
async function predict9(input, config3, idx, count2) {
|
||||||
|
@ -5910,16 +5877,12 @@ var irisLandmarks = {
|
||||||
numCoordinates: 76
|
numCoordinates: 76
|
||||||
};
|
};
|
||||||
async function load10(config3) {
|
async function load10(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model10 = null;
|
model10 = null;
|
||||||
if (!model10) {
|
if (!model10)
|
||||||
model10 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.iris) == null ? void 0 : _a.modelPath) || ""));
|
model10 = await loadModel((_a = config3.face.iris) == null ? void 0 : _a.modelPath);
|
||||||
if (!model10 || !model10["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.iris) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model10["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model10["modelUrl"]);
|
log("cached model:", model10["modelUrl"]);
|
||||||
inputSize5 = model10.inputs[0].shape ? model10.inputs[0].shape[2] : 0;
|
inputSize5 = model10.inputs[0].shape ? model10.inputs[0].shape[2] : 0;
|
||||||
if (inputSize5 === -1)
|
if (inputSize5 === -1)
|
||||||
|
@ -6115,16 +6078,12 @@ async function predict10(input, config3) {
|
||||||
return faces;
|
return faces;
|
||||||
}
|
}
|
||||||
async function load11(config3) {
|
async function load11(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model11 = null;
|
model11 = null;
|
||||||
if (!model11) {
|
if (!model11)
|
||||||
model11 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.mesh) == null ? void 0 : _a.modelPath) || ""));
|
model11 = await loadModel((_a = config3.face.mesh) == null ? void 0 : _a.modelPath);
|
||||||
if (!model11 || !model11["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.mesh) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model11["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model11["modelUrl"]);
|
log("cached model:", model11["modelUrl"]);
|
||||||
inputSize6 = model11.inputs[0].shape ? model11.inputs[0].shape[2] : 0;
|
inputSize6 = model11.inputs[0].shape ? model11.inputs[0].shape[2] : 0;
|
||||||
return model11;
|
return model11;
|
||||||
|
@ -6139,18 +6098,13 @@ var lastTime10 = 0;
|
||||||
var lastCount7 = 0;
|
var lastCount7 = 0;
|
||||||
var skipped10 = Number.MAX_SAFE_INTEGER;
|
var skipped10 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load12(config3) {
|
async function load12(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
const modelUrl = join(config3.modelBasePath, ((_a = config3.face.description) == null ? void 0 : _a.modelPath) || "");
|
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model12 = null;
|
model12 = null;
|
||||||
if (!model12) {
|
if (!model12)
|
||||||
model12 = await loadModel2(modelUrl);
|
model12 = await loadModel((_a = config3.face.description) == null ? void 0 : _a.modelPath);
|
||||||
if (!model12)
|
else if (config3.debug)
|
||||||
log("load model failed:", ((_b = config3.face.description) == null ? void 0 : _b.modelPath) || "");
|
log("cached model:", model12["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", modelUrl);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", modelUrl);
|
|
||||||
return model12;
|
return model12;
|
||||||
}
|
}
|
||||||
function enhance(input) {
|
function enhance(input) {
|
||||||
|
@ -9967,26 +9921,16 @@ async function predict12(input, config3) {
|
||||||
return hands;
|
return hands;
|
||||||
}
|
}
|
||||||
async function load13(config3) {
|
async function load13(config3) {
|
||||||
var _a, _b, _c, _d;
|
var _a, _b;
|
||||||
if (env.initial) {
|
if (env.initial) {
|
||||||
handDetectorModel = null;
|
handDetectorModel = null;
|
||||||
handPoseModel = null;
|
handPoseModel = null;
|
||||||
}
|
}
|
||||||
if (!handDetectorModel || !handPoseModel) {
|
if (!handDetectorModel || !handPoseModel) {
|
||||||
[handDetectorModel, handPoseModel] = await Promise.all([
|
[handDetectorModel, handPoseModel] = await Promise.all([
|
||||||
config3.hand.enabled ? loadModel2(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || "")) : null,
|
config3.hand.enabled ? loadModel((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) : null,
|
||||||
config3.hand.landmarks ? loadModel2(join(config3.modelBasePath, ((_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath) || "")) : null
|
config3.hand.landmarks ? loadModel((_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath) : null
|
||||||
]);
|
]);
|
||||||
if (config3.hand.enabled) {
|
|
||||||
if (!handDetectorModel || !handDetectorModel["modelUrl"])
|
|
||||||
log("load model failed:", ((_c = config3.hand.detector) == null ? void 0 : _c.modelPath) || "");
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", handDetectorModel["modelUrl"]);
|
|
||||||
if (!handPoseModel || !handPoseModel["modelUrl"])
|
|
||||||
log("load model failed:", ((_d = config3.hand.skeleton) == null ? void 0 : _d.modelPath) || "");
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", handPoseModel["modelUrl"]);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (config3.debug)
|
if (config3.debug)
|
||||||
log("cached model:", handDetectorModel["modelUrl"]);
|
log("cached model:", handDetectorModel["modelUrl"]);
|
||||||
|
@ -10024,36 +9968,28 @@ var fingerMap = {
|
||||||
palm: [0, 17, 13, 9, 5, 1, 0]
|
palm: [0, 17, 13, 9, 5, 1, 0]
|
||||||
};
|
};
|
||||||
async function loadDetect2(config3) {
|
async function loadDetect2(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
models2[0] = null;
|
models2[0] = null;
|
||||||
if (!models2[0]) {
|
if (!models2[0]) {
|
||||||
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
||||||
models2[0] = await loadModel2(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""));
|
models2[0] = await loadModel((_a = config3.hand.detector) == null ? void 0 : _a.modelPath);
|
||||||
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
||||||
inputSize7[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize7[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize7[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize7[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models2[0] || !models2[0]["modelUrl"])
|
|
||||||
log("load model failed:", (_b = config3.hand.detector) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models2[0]["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models2[0]["modelUrl"]);
|
log("cached model:", models2[0]["modelUrl"]);
|
||||||
return models2[0];
|
return models2[0];
|
||||||
}
|
}
|
||||||
async function loadSkeleton(config3) {
|
async function loadSkeleton(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
models2[1] = null;
|
models2[1] = null;
|
||||||
if (!models2[1]) {
|
if (!models2[1]) {
|
||||||
models2[1] = await loadModel2(join(config3.modelBasePath, ((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath) || ""));
|
models2[1] = await loadModel((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath);
|
||||||
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
||||||
inputSize7[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize7[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize7[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize7[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models2[1] || !models2[1]["modelUrl"])
|
|
||||||
log("load model failed:", (_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models2[1]["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models2[1]["modelUrl"]);
|
log("cached model:", models2[1]["modelUrl"]);
|
||||||
return models2[1];
|
return models2[1];
|
||||||
|
@ -10190,16 +10126,12 @@ var skipped12 = Number.MAX_SAFE_INTEGER;
|
||||||
var lastCount8 = 0;
|
var lastCount8 = 0;
|
||||||
var lastTime13 = 0;
|
var lastTime13 = 0;
|
||||||
async function load14(config3) {
|
async function load14(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model13 = null;
|
model13 = null;
|
||||||
if (!model13) {
|
if (!model13)
|
||||||
model13 = await loadModel(join(config3.modelBasePath, ((_a = config3.face.liveness) == null ? void 0 : _a.modelPath) || ""));
|
model13 = await loadModel((_a = config3.face.liveness) == null ? void 0 : _a.modelPath);
|
||||||
if (!model13 || !model13["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.liveness) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model13["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model13["modelUrl"]);
|
log("cached model:", model13["modelUrl"]);
|
||||||
return model13;
|
return model13;
|
||||||
}
|
}
|
||||||
|
@ -10395,11 +10327,7 @@ async function load15(config3) {
|
||||||
model14 = null;
|
model14 = null;
|
||||||
if (!model14) {
|
if (!model14) {
|
||||||
fakeOps(["size"], config3);
|
fakeOps(["size"], config3);
|
||||||
model14 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model14 = await loadModel(config3.body.modelPath);
|
||||||
if (!model14 || !model14["modelUrl"])
|
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model14["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model14["modelUrl"]);
|
log("cached model:", model14["modelUrl"]);
|
||||||
inputSize8 = model14.inputs[0].shape ? model14.inputs[0].shape[2] : 0;
|
inputSize8 = model14.inputs[0].shape ? model14.inputs[0].shape[2] : 0;
|
||||||
|
@ -10523,13 +10451,9 @@ var inputSize9 = 0;
|
||||||
var scaleBox = 2.5;
|
var scaleBox = 2.5;
|
||||||
async function load16(config3) {
|
async function load16(config3) {
|
||||||
if (!model15 || env.initial) {
|
if (!model15 || env.initial) {
|
||||||
model15 = await loadModel2(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model15 = await loadModel(config3.object.modelPath);
|
||||||
const inputs = Object.values(model15.modelSignature["inputs"]);
|
const inputs = Object.values(model15.modelSignature["inputs"]);
|
||||||
inputSize9 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize9 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!model15 || !model15["modelUrl"])
|
|
||||||
log("load model failed:", config3.object.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model15["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model15["modelUrl"]);
|
log("cached model:", model15["modelUrl"]);
|
||||||
return model15;
|
return model15;
|
||||||
|
@ -10952,13 +10876,9 @@ async function predict17(input, config3) {
|
||||||
return scaled;
|
return scaled;
|
||||||
}
|
}
|
||||||
async function load17(config3) {
|
async function load17(config3) {
|
||||||
if (!model16 || env.initial) {
|
if (!model16 || env.initial)
|
||||||
model16 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model16 = await loadModel(config3.body.modelPath);
|
||||||
if (!model16 || !model16["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model16["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model16["modelUrl"]);
|
log("cached model:", model16["modelUrl"]);
|
||||||
return model16;
|
return model16;
|
||||||
}
|
}
|
||||||
|
@ -10967,13 +10887,9 @@ async function load17(config3) {
|
||||||
var model17;
|
var model17;
|
||||||
var busy = false;
|
var busy = false;
|
||||||
async function load18(config3) {
|
async function load18(config3) {
|
||||||
if (!model17 || env.initial) {
|
if (!model17 || env.initial)
|
||||||
model17 = await loadModel2(join(config3.modelBasePath, config3.segmentation.modelPath || ""));
|
model17 = await loadModel(config3.segmentation.modelPath);
|
||||||
if (!model17 || !model17["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.segmentation.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model17["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model17["modelUrl"]);
|
log("cached model:", model17["modelUrl"]);
|
||||||
return model17;
|
return model17;
|
||||||
}
|
}
|
||||||
|
@ -13442,6 +13358,8 @@ var Human = class {
|
||||||
Object.seal(this.config);
|
Object.seal(this.config);
|
||||||
if (userConfig)
|
if (userConfig)
|
||||||
this.config = mergeDeep(this.config, userConfig);
|
this.config = mergeDeep(this.config, userConfig);
|
||||||
|
this.config.cacheModels = typeof indexedDB !== "undefined";
|
||||||
|
setModelLoadOptions(this.config);
|
||||||
this.tf = tfjs_esm_exports;
|
this.tf = tfjs_esm_exports;
|
||||||
this.state = "idle";
|
this.state = "idle";
|
||||||
__privateSet(this, _numTensors, 0);
|
__privateSet(this, _numTensors, 0);
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -190,6 +190,10 @@ export declare interface Config {
|
||||||
* default: `../models/` for browsers and `file://models/` for nodejs
|
* default: `../models/` for browsers and `file://models/` for nodejs
|
||||||
*/
|
*/
|
||||||
modelBasePath: string;
|
modelBasePath: string;
|
||||||
|
/** Cache models in IndexDB on first sucessfull load
|
||||||
|
* default: true if indexdb is available (browsers), false if its not (nodejs)
|
||||||
|
*/
|
||||||
|
cacheModels: boolean;
|
||||||
/** Cache sensitivity
|
/** Cache sensitivity
|
||||||
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
||||||
* - set to 0 to disable caching
|
* - set to 0 to disable caching
|
||||||
|
|
|
@ -91,6 +91,7 @@ function mergeDeep(...objects) {
|
||||||
var config = {
|
var config = {
|
||||||
backend: "",
|
backend: "",
|
||||||
modelBasePath: "",
|
modelBasePath: "",
|
||||||
|
cacheModels: true,
|
||||||
wasmPath: "",
|
wasmPath: "",
|
||||||
debug: true,
|
debug: true,
|
||||||
async: true,
|
async: true,
|
||||||
|
@ -72182,46 +72183,59 @@ var Env = class {
|
||||||
};
|
};
|
||||||
var env2 = new Env();
|
var env2 = new Env();
|
||||||
|
|
||||||
// package.json
|
|
||||||
var version9 = "2.5.8";
|
|
||||||
|
|
||||||
// src/tfjs/load.ts
|
// src/tfjs/load.ts
|
||||||
var options = {
|
var options = {
|
||||||
appName: "human",
|
cacheModels: false,
|
||||||
autoSave: true,
|
verbose: true,
|
||||||
verbose: true
|
debug: false,
|
||||||
|
modelBasePath: ""
|
||||||
};
|
};
|
||||||
async function httpHandler(url, init3) {
|
async function httpHandler(url, init3) {
|
||||||
if (options.fetchFunc)
|
if (options.debug)
|
||||||
return options.fetchFunc(url, init3);
|
log("load model fetch:", url, init3);
|
||||||
else
|
if (typeof fetch === "undefined") {
|
||||||
log("error: fetch function is not defined");
|
log("error loading model: fetch function is not defined:");
|
||||||
return null;
|
|
||||||
}
|
|
||||||
var tfLoadOptions = {
|
|
||||||
onProgress: (...args) => {
|
|
||||||
if (options.onProgress)
|
|
||||||
options.onProgress(...args);
|
|
||||||
else if (options.verbose)
|
|
||||||
log("load model progress:", ...args);
|
|
||||||
},
|
|
||||||
fetchFunc: (url, init3) => {
|
|
||||||
if (options.verbose)
|
|
||||||
log("load model fetch:", url, init3);
|
|
||||||
if (url.toString().toLowerCase().startsWith("http"))
|
|
||||||
return httpHandler(url, init3);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
return fetch(url, init3);
|
||||||
async function loadModel2(modelUrl, loadOptions) {
|
}
|
||||||
if (loadOptions)
|
function setModelLoadOptions(config3) {
|
||||||
options = mergeDeep(loadOptions);
|
options.cacheModels = config3.cacheModels;
|
||||||
if (!options.fetchFunc && typeof globalThis.fetch !== "undefined")
|
options.verbose = config3.debug;
|
||||||
options.fetchFunc = globalThis.fetch;
|
options.modelBasePath = config3.modelBasePath;
|
||||||
const model19 = await loadGraphModel(modelUrl, tfLoadOptions);
|
}
|
||||||
|
async function loadModel(modelPath) {
|
||||||
|
const modelUrl = join(options.modelBasePath, modelPath || "");
|
||||||
|
const modelPathSegments = modelUrl.split("/");
|
||||||
|
const cachedModelName = "indexeddb://" + modelPathSegments[modelPathSegments.length - 1].replace(".json", "");
|
||||||
|
const cachedModels = await io_exports.listModels();
|
||||||
|
const modelCached = options.cacheModels && Object.keys(cachedModels).includes(cachedModelName);
|
||||||
|
const model19 = new GraphModel(modelCached ? cachedModelName : modelUrl, { fetchFunc: (url, init3) => httpHandler(url, init3) });
|
||||||
|
try {
|
||||||
|
model19.findIOHandler();
|
||||||
|
if (options.debug)
|
||||||
|
log("model load handler:", model19.handler);
|
||||||
|
const artifacts = await model19.handler.load();
|
||||||
|
model19.loadSync(artifacts);
|
||||||
|
if (options.verbose)
|
||||||
|
log("load model:", model19["modelUrl"]);
|
||||||
|
} catch (err) {
|
||||||
|
log("error loading model:", modelUrl, err);
|
||||||
|
}
|
||||||
|
if (options.cacheModels && !modelCached) {
|
||||||
|
try {
|
||||||
|
const saveResult = await model19.save(cachedModelName);
|
||||||
|
log("model saved:", cachedModelName, saveResult);
|
||||||
|
} catch (err) {
|
||||||
|
log("error saving model:", modelUrl, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
return model19;
|
return model19;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// package.json
|
||||||
|
var version9 = "2.6.0";
|
||||||
|
|
||||||
// src/gear/gear.ts
|
// src/gear/gear.ts
|
||||||
var model2;
|
var model2;
|
||||||
var last2 = [];
|
var last2 = [];
|
||||||
|
@ -72233,13 +72247,9 @@ var skipped = Number.MAX_SAFE_INTEGER;
|
||||||
async function load(config3) {
|
async function load(config3) {
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model2 = null;
|
model2 = null;
|
||||||
if (!model2) {
|
if (!model2)
|
||||||
model2 = await loadModel2(join(config3.modelBasePath, config3.face["gear"].modelPath));
|
model2 = await loadModel(config3.face["gear"]);
|
||||||
if (!model2 || !model2["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["gear"].modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model2["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model2["modelUrl"]);
|
log("cached model:", model2["modelUrl"]);
|
||||||
return model2;
|
return model2;
|
||||||
}
|
}
|
||||||
|
@ -72314,16 +72324,10 @@ var skipped2 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load2(config3) {
|
async function load2(config3) {
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model3 = null;
|
model3 = null;
|
||||||
if (!model3) {
|
if (!model3)
|
||||||
model3 = await loadModel2(join(config3.modelBasePath, config3.face["ssrnet"].modelPathAge));
|
model3 = await loadModel(config3.face["ssrnet"].modelPathAge);
|
||||||
if (!model3 || !model3["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["ssrnet"].modelPathAge);
|
log("cached model:", model3["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model3["modelUrl"]);
|
|
||||||
} else {
|
|
||||||
if (config3.debug)
|
|
||||||
log("cached model:", model3["modelUrl"]);
|
|
||||||
}
|
|
||||||
return model3;
|
return model3;
|
||||||
}
|
}
|
||||||
async function predict2(image2, config3, idx, count3) {
|
async function predict2(image2, config3, idx, count3) {
|
||||||
|
@ -72368,13 +72372,9 @@ var rgb = [0.2989, 0.587, 0.114];
|
||||||
async function load3(config3) {
|
async function load3(config3) {
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model4 = null;
|
model4 = null;
|
||||||
if (!model4) {
|
if (!model4)
|
||||||
model4 = await loadModel2(join(config3.modelBasePath, config3.face["ssrnet"].modelPathGender));
|
model4 = await loadModel(config3.face["ssrnet"].modelPathGender);
|
||||||
if (!model4 || !model4["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["ssrnet"].modelPathGender);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model4["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model4["modelUrl"]);
|
log("cached model:", model4["modelUrl"]);
|
||||||
return model4;
|
return model4;
|
||||||
}
|
}
|
||||||
|
@ -72424,16 +72424,12 @@ var skipped4 = Number.MAX_SAFE_INTEGER;
|
||||||
var lastCount4 = 0;
|
var lastCount4 = 0;
|
||||||
var lastTime4 = 0;
|
var lastTime4 = 0;
|
||||||
async function load4(config3) {
|
async function load4(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model5 = null;
|
model5 = null;
|
||||||
if (!model5) {
|
if (!model5)
|
||||||
model5 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.antispoof) == null ? void 0 : _a.modelPath) || ""));
|
model5 = await loadModel((_a = config3.face.antispoof) == null ? void 0 : _a.modelPath);
|
||||||
if (!model5 || !model5["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.antispoof) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model5["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model5["modelUrl"]);
|
log("cached model:", model5["modelUrl"]);
|
||||||
return model5;
|
return model5;
|
||||||
}
|
}
|
||||||
|
@ -75916,16 +75912,12 @@ var inputSize = 0;
|
||||||
var inputSizeT = null;
|
var inputSizeT = null;
|
||||||
var size = () => inputSize;
|
var size = () => inputSize;
|
||||||
async function load5(config3) {
|
async function load5(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model6 = null;
|
model6 = null;
|
||||||
if (!model6) {
|
if (!model6)
|
||||||
model6 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.detector) == null ? void 0 : _a.modelPath) || ""));
|
model6 = await loadModel((_a = config3.face.detector) == null ? void 0 : _a.modelPath);
|
||||||
if (!model6 || !model6["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.detector) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model6["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model6["modelUrl"]);
|
log("cached model:", model6["modelUrl"]);
|
||||||
inputSize = model6.inputs[0].shape ? model6.inputs[0].shape[2] : 0;
|
inputSize = model6.inputs[0].shape ? model6.inputs[0].shape[2] : 0;
|
||||||
inputSizeT = scalar(inputSize, "int32");
|
inputSizeT = scalar(inputSize, "int32");
|
||||||
|
@ -76154,14 +76146,10 @@ async function loadDetect(config3) {
|
||||||
if (env3.initial)
|
if (env3.initial)
|
||||||
models.detector = null;
|
models.detector = null;
|
||||||
if (!models.detector && config3.body["detector"] && config3.body["detector"]["modelPath"] || "") {
|
if (!models.detector && config3.body["detector"] && config3.body["detector"]["modelPath"] || "") {
|
||||||
models.detector = await loadModel2(join(config3.modelBasePath, config3.body["detector"]["modelPath"] || ""));
|
models.detector = await loadModel(config3.body["detector"]["modelPath"]);
|
||||||
const inputs = Object.values(models.detector.modelSignature["inputs"]);
|
const inputs = Object.values(models.detector.modelSignature["inputs"]);
|
||||||
inputSize3.detector[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize3.detector[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize3.detector[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize3.detector[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models.detector || !models.detector["modelUrl"])
|
|
||||||
log("load model failed:", config3.body["detector"]["modelPath"]);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models.detector["modelUrl"]);
|
|
||||||
} else if (config3.debug && models.detector)
|
} else if (config3.debug && models.detector)
|
||||||
log("cached model:", models.detector["modelUrl"]);
|
log("cached model:", models.detector["modelUrl"]);
|
||||||
await createAnchors();
|
await createAnchors();
|
||||||
|
@ -76171,14 +76159,10 @@ async function loadPose(config3) {
|
||||||
if (env3.initial)
|
if (env3.initial)
|
||||||
models.landmarks = null;
|
models.landmarks = null;
|
||||||
if (!models.landmarks) {
|
if (!models.landmarks) {
|
||||||
models.landmarks = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
models.landmarks = await loadModel(config3.body.modelPath);
|
||||||
const inputs = Object.values(models.landmarks.modelSignature["inputs"]);
|
const inputs = Object.values(models.landmarks.modelSignature["inputs"]);
|
||||||
inputSize3.landmarks[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize3.landmarks[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize3.landmarks[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize3.landmarks[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models.landmarks || !models.landmarks["modelUrl"])
|
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models.landmarks["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models.landmarks["modelUrl"]);
|
log("cached model:", models.landmarks["modelUrl"]);
|
||||||
return models.landmarks;
|
return models.landmarks;
|
||||||
|
@ -76403,13 +76387,9 @@ async function load6(config3) {
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model7 = null;
|
model7 = null;
|
||||||
if (!model7) {
|
if (!model7) {
|
||||||
model7 = await loadModel2(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model7 = await loadModel(config3.object.modelPath);
|
||||||
const inputs = Object.values(model7.modelSignature["inputs"]);
|
const inputs = Object.values(model7.modelSignature["inputs"]);
|
||||||
inputSize4 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize4 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!model7 || !model7["modelUrl"])
|
|
||||||
log("load model failed:", config3.object.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model7["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model7["modelUrl"]);
|
log("cached model:", model7["modelUrl"]);
|
||||||
return model7;
|
return model7;
|
||||||
|
@ -76516,13 +76496,9 @@ var skipped7 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load7(config3) {
|
async function load7(config3) {
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model8 = null;
|
model8 = null;
|
||||||
if (!model8) {
|
if (!model8)
|
||||||
model8 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model8 = await loadModel(config3.body.modelPath);
|
||||||
if (!model8 || !model8["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model8["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model8["modelUrl"]);
|
log("cached model:", model8["modelUrl"]);
|
||||||
return model8;
|
return model8;
|
||||||
}
|
}
|
||||||
|
@ -76630,16 +76606,12 @@ var lastCount5 = 0;
|
||||||
var lastTime8 = 0;
|
var lastTime8 = 0;
|
||||||
var skipped8 = Number.MAX_SAFE_INTEGER;
|
var skipped8 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load8(config3) {
|
async function load8(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model9 = null;
|
model9 = null;
|
||||||
if (!model9) {
|
if (!model9)
|
||||||
model9 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.emotion) == null ? void 0 : _a.modelPath) || ""));
|
model9 = await loadModel((_a = config3.face.emotion) == null ? void 0 : _a.modelPath);
|
||||||
if (!model9 || !model9["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.emotion) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model9["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model9["modelUrl"]);
|
log("cached model:", model9["modelUrl"]);
|
||||||
return model9;
|
return model9;
|
||||||
}
|
}
|
||||||
|
@ -76688,17 +76660,12 @@ var lastCount6 = 0;
|
||||||
var lastTime9 = 0;
|
var lastTime9 = 0;
|
||||||
var skipped9 = Number.MAX_SAFE_INTEGER;
|
var skipped9 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load9(config3) {
|
async function load9(config3) {
|
||||||
const modelUrl = join(config3.modelBasePath, config3.face["mobilefacenet"].modelPath);
|
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model10 = null;
|
model10 = null;
|
||||||
if (!model10) {
|
if (!model10)
|
||||||
model10 = await loadModel2(modelUrl);
|
model10 = await loadModel(config3.face["mobilefacenet"].modelPath);
|
||||||
if (!model10)
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["mobilefacenet"].modelPath);
|
log("cached model:", model10["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", modelUrl);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", modelUrl);
|
|
||||||
return model10;
|
return model10;
|
||||||
}
|
}
|
||||||
async function predict9(input2, config3, idx, count3) {
|
async function predict9(input2, config3, idx, count3) {
|
||||||
|
@ -76745,16 +76712,12 @@ var irisLandmarks = {
|
||||||
numCoordinates: 76
|
numCoordinates: 76
|
||||||
};
|
};
|
||||||
async function load10(config3) {
|
async function load10(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model11 = null;
|
model11 = null;
|
||||||
if (!model11) {
|
if (!model11)
|
||||||
model11 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.iris) == null ? void 0 : _a.modelPath) || ""));
|
model11 = await loadModel((_a = config3.face.iris) == null ? void 0 : _a.modelPath);
|
||||||
if (!model11 || !model11["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.iris) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model11["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model11["modelUrl"]);
|
log("cached model:", model11["modelUrl"]);
|
||||||
inputSize5 = model11.inputs[0].shape ? model11.inputs[0].shape[2] : 0;
|
inputSize5 = model11.inputs[0].shape ? model11.inputs[0].shape[2] : 0;
|
||||||
if (inputSize5 === -1)
|
if (inputSize5 === -1)
|
||||||
|
@ -76950,16 +76913,12 @@ async function predict10(input2, config3) {
|
||||||
return faces;
|
return faces;
|
||||||
}
|
}
|
||||||
async function load11(config3) {
|
async function load11(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model12 = null;
|
model12 = null;
|
||||||
if (!model12) {
|
if (!model12)
|
||||||
model12 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.mesh) == null ? void 0 : _a.modelPath) || ""));
|
model12 = await loadModel((_a = config3.face.mesh) == null ? void 0 : _a.modelPath);
|
||||||
if (!model12 || !model12["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.mesh) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model12["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model12["modelUrl"]);
|
log("cached model:", model12["modelUrl"]);
|
||||||
inputSize6 = model12.inputs[0].shape ? model12.inputs[0].shape[2] : 0;
|
inputSize6 = model12.inputs[0].shape ? model12.inputs[0].shape[2] : 0;
|
||||||
return model12;
|
return model12;
|
||||||
|
@ -76974,18 +76933,13 @@ var lastTime10 = 0;
|
||||||
var lastCount7 = 0;
|
var lastCount7 = 0;
|
||||||
var skipped10 = Number.MAX_SAFE_INTEGER;
|
var skipped10 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load12(config3) {
|
async function load12(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
const modelUrl = join(config3.modelBasePath, ((_a = config3.face.description) == null ? void 0 : _a.modelPath) || "");
|
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model13 = null;
|
model13 = null;
|
||||||
if (!model13) {
|
if (!model13)
|
||||||
model13 = await loadModel2(modelUrl);
|
model13 = await loadModel((_a = config3.face.description) == null ? void 0 : _a.modelPath);
|
||||||
if (!model13)
|
else if (config3.debug)
|
||||||
log("load model failed:", ((_b = config3.face.description) == null ? void 0 : _b.modelPath) || "");
|
log("cached model:", model13["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", modelUrl);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", modelUrl);
|
|
||||||
return model13;
|
return model13;
|
||||||
}
|
}
|
||||||
function enhance(input2) {
|
function enhance(input2) {
|
||||||
|
@ -80802,26 +80756,16 @@ async function predict12(input2, config3) {
|
||||||
return hands;
|
return hands;
|
||||||
}
|
}
|
||||||
async function load13(config3) {
|
async function load13(config3) {
|
||||||
var _a, _b, _c, _d;
|
var _a, _b;
|
||||||
if (env2.initial) {
|
if (env2.initial) {
|
||||||
handDetectorModel = null;
|
handDetectorModel = null;
|
||||||
handPoseModel = null;
|
handPoseModel = null;
|
||||||
}
|
}
|
||||||
if (!handDetectorModel || !handPoseModel) {
|
if (!handDetectorModel || !handPoseModel) {
|
||||||
[handDetectorModel, handPoseModel] = await Promise.all([
|
[handDetectorModel, handPoseModel] = await Promise.all([
|
||||||
config3.hand.enabled ? loadModel2(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || "")) : null,
|
config3.hand.enabled ? loadModel((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) : null,
|
||||||
config3.hand.landmarks ? loadModel2(join(config3.modelBasePath, ((_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath) || "")) : null
|
config3.hand.landmarks ? loadModel((_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath) : null
|
||||||
]);
|
]);
|
||||||
if (config3.hand.enabled) {
|
|
||||||
if (!handDetectorModel || !handDetectorModel["modelUrl"])
|
|
||||||
log("load model failed:", ((_c = config3.hand.detector) == null ? void 0 : _c.modelPath) || "");
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", handDetectorModel["modelUrl"]);
|
|
||||||
if (!handPoseModel || !handPoseModel["modelUrl"])
|
|
||||||
log("load model failed:", ((_d = config3.hand.skeleton) == null ? void 0 : _d.modelPath) || "");
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", handPoseModel["modelUrl"]);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (config3.debug)
|
if (config3.debug)
|
||||||
log("cached model:", handDetectorModel["modelUrl"]);
|
log("cached model:", handDetectorModel["modelUrl"]);
|
||||||
|
@ -80859,36 +80803,28 @@ var fingerMap = {
|
||||||
palm: [0, 17, 13, 9, 5, 1, 0]
|
palm: [0, 17, 13, 9, 5, 1, 0]
|
||||||
};
|
};
|
||||||
async function loadDetect2(config3) {
|
async function loadDetect2(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
models2[0] = null;
|
models2[0] = null;
|
||||||
if (!models2[0]) {
|
if (!models2[0]) {
|
||||||
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
||||||
models2[0] = await loadModel2(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""));
|
models2[0] = await loadModel((_a = config3.hand.detector) == null ? void 0 : _a.modelPath);
|
||||||
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
||||||
inputSize7[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize7[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize7[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize7[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models2[0] || !models2[0]["modelUrl"])
|
|
||||||
log("load model failed:", (_b = config3.hand.detector) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models2[0]["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models2[0]["modelUrl"]);
|
log("cached model:", models2[0]["modelUrl"]);
|
||||||
return models2[0];
|
return models2[0];
|
||||||
}
|
}
|
||||||
async function loadSkeleton(config3) {
|
async function loadSkeleton(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
models2[1] = null;
|
models2[1] = null;
|
||||||
if (!models2[1]) {
|
if (!models2[1]) {
|
||||||
models2[1] = await loadModel2(join(config3.modelBasePath, ((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath) || ""));
|
models2[1] = await loadModel((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath);
|
||||||
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
||||||
inputSize7[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize7[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize7[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize7[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models2[1] || !models2[1]["modelUrl"])
|
|
||||||
log("load model failed:", (_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models2[1]["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models2[1]["modelUrl"]);
|
log("cached model:", models2[1]["modelUrl"]);
|
||||||
return models2[1];
|
return models2[1];
|
||||||
|
@ -81025,16 +80961,12 @@ var skipped12 = Number.MAX_SAFE_INTEGER;
|
||||||
var lastCount8 = 0;
|
var lastCount8 = 0;
|
||||||
var lastTime13 = 0;
|
var lastTime13 = 0;
|
||||||
async function load14(config3) {
|
async function load14(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model14 = null;
|
model14 = null;
|
||||||
if (!model14) {
|
if (!model14)
|
||||||
model14 = await loadModel(join(config3.modelBasePath, ((_a = config3.face.liveness) == null ? void 0 : _a.modelPath) || ""));
|
model14 = await loadModel((_a = config3.face.liveness) == null ? void 0 : _a.modelPath);
|
||||||
if (!model14 || !model14["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.liveness) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model14["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model14["modelUrl"]);
|
log("cached model:", model14["modelUrl"]);
|
||||||
return model14;
|
return model14;
|
||||||
}
|
}
|
||||||
|
@ -81230,11 +81162,7 @@ async function load15(config3) {
|
||||||
model15 = null;
|
model15 = null;
|
||||||
if (!model15) {
|
if (!model15) {
|
||||||
fakeOps(["size"], config3);
|
fakeOps(["size"], config3);
|
||||||
model15 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model15 = await loadModel(config3.body.modelPath);
|
||||||
if (!model15 || !model15["modelUrl"])
|
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model15["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model15["modelUrl"]);
|
log("cached model:", model15["modelUrl"]);
|
||||||
inputSize8 = model15.inputs[0].shape ? model15.inputs[0].shape[2] : 0;
|
inputSize8 = model15.inputs[0].shape ? model15.inputs[0].shape[2] : 0;
|
||||||
|
@ -81358,13 +81286,9 @@ var inputSize9 = 0;
|
||||||
var scaleBox = 2.5;
|
var scaleBox = 2.5;
|
||||||
async function load16(config3) {
|
async function load16(config3) {
|
||||||
if (!model16 || env2.initial) {
|
if (!model16 || env2.initial) {
|
||||||
model16 = await loadModel2(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model16 = await loadModel(config3.object.modelPath);
|
||||||
const inputs = Object.values(model16.modelSignature["inputs"]);
|
const inputs = Object.values(model16.modelSignature["inputs"]);
|
||||||
inputSize9 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize9 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!model16 || !model16["modelUrl"])
|
|
||||||
log("load model failed:", config3.object.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model16["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model16["modelUrl"]);
|
log("cached model:", model16["modelUrl"]);
|
||||||
return model16;
|
return model16;
|
||||||
|
@ -81787,13 +81711,9 @@ async function predict17(input2, config3) {
|
||||||
return scaled;
|
return scaled;
|
||||||
}
|
}
|
||||||
async function load17(config3) {
|
async function load17(config3) {
|
||||||
if (!model17 || env2.initial) {
|
if (!model17 || env2.initial)
|
||||||
model17 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model17 = await loadModel(config3.body.modelPath);
|
||||||
if (!model17 || !model17["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model17["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model17["modelUrl"]);
|
log("cached model:", model17["modelUrl"]);
|
||||||
return model17;
|
return model17;
|
||||||
}
|
}
|
||||||
|
@ -81802,13 +81722,9 @@ async function load17(config3) {
|
||||||
var model18;
|
var model18;
|
||||||
var busy = false;
|
var busy = false;
|
||||||
async function load18(config3) {
|
async function load18(config3) {
|
||||||
if (!model18 || env2.initial) {
|
if (!model18 || env2.initial)
|
||||||
model18 = await loadModel2(join(config3.modelBasePath, config3.segmentation.modelPath || ""));
|
model18 = await loadModel(config3.segmentation.modelPath);
|
||||||
if (!model18 || !model18["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.segmentation.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model18["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model18["modelUrl"]);
|
log("cached model:", model18["modelUrl"]);
|
||||||
return model18;
|
return model18;
|
||||||
}
|
}
|
||||||
|
@ -84277,6 +84193,8 @@ var Human = class {
|
||||||
Object.seal(this.config);
|
Object.seal(this.config);
|
||||||
if (userConfig)
|
if (userConfig)
|
||||||
this.config = mergeDeep(this.config, userConfig);
|
this.config = mergeDeep(this.config, userConfig);
|
||||||
|
this.config.cacheModels = typeof indexedDB !== "undefined";
|
||||||
|
setModelLoadOptions(this.config);
|
||||||
this.tf = tfjs_esm_exports;
|
this.tf = tfjs_esm_exports;
|
||||||
this.state = "idle";
|
this.state = "idle";
|
||||||
__privateSet(this, _numTensors, 0);
|
__privateSet(this, _numTensors, 0);
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -190,6 +190,10 @@ export declare interface Config {
|
||||||
* default: `../models/` for browsers and `file://models/` for nodejs
|
* default: `../models/` for browsers and `file://models/` for nodejs
|
||||||
*/
|
*/
|
||||||
modelBasePath: string;
|
modelBasePath: string;
|
||||||
|
/** Cache models in IndexDB on first sucessfull load
|
||||||
|
* default: true if indexdb is available (browsers), false if its not (nodejs)
|
||||||
|
*/
|
||||||
|
cacheModels: boolean;
|
||||||
/** Cache sensitivity
|
/** Cache sensitivity
|
||||||
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
||||||
* - set to 0 to disable caching
|
* - set to 0 to disable caching
|
||||||
|
|
|
@ -152,6 +152,7 @@ function mergeDeep(...objects) {
|
||||||
var config = {
|
var config = {
|
||||||
backend: "",
|
backend: "",
|
||||||
modelBasePath: "",
|
modelBasePath: "",
|
||||||
|
cacheModels: true,
|
||||||
wasmPath: "",
|
wasmPath: "",
|
||||||
debug: true,
|
debug: true,
|
||||||
async: true,
|
async: true,
|
||||||
|
@ -1372,57 +1373,68 @@ var Env = class {
|
||||||
};
|
};
|
||||||
var env = new Env();
|
var env = new Env();
|
||||||
|
|
||||||
|
// src/tfjs/load.ts
|
||||||
|
var tf4 = __toESM(require_tfjs_esm());
|
||||||
|
var options = {
|
||||||
|
cacheModels: false,
|
||||||
|
verbose: true,
|
||||||
|
debug: false,
|
||||||
|
modelBasePath: ""
|
||||||
|
};
|
||||||
|
async function httpHandler(url, init2) {
|
||||||
|
if (options.debug)
|
||||||
|
log("load model fetch:", url, init2);
|
||||||
|
if (typeof fetch === "undefined") {
|
||||||
|
log("error loading model: fetch function is not defined:");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return fetch(url, init2);
|
||||||
|
}
|
||||||
|
function setModelLoadOptions(config3) {
|
||||||
|
options.cacheModels = config3.cacheModels;
|
||||||
|
options.verbose = config3.debug;
|
||||||
|
options.modelBasePath = config3.modelBasePath;
|
||||||
|
}
|
||||||
|
async function loadModel(modelPath) {
|
||||||
|
const modelUrl = join(options.modelBasePath, modelPath || "");
|
||||||
|
const modelPathSegments = modelUrl.split("/");
|
||||||
|
const cachedModelName = "indexeddb://" + modelPathSegments[modelPathSegments.length - 1].replace(".json", "");
|
||||||
|
const cachedModels = await tf4.io.listModels();
|
||||||
|
const modelCached = options.cacheModels && Object.keys(cachedModels).includes(cachedModelName);
|
||||||
|
const model18 = new tf4.GraphModel(modelCached ? cachedModelName : modelUrl, { fetchFunc: (url, init2) => httpHandler(url, init2) });
|
||||||
|
try {
|
||||||
|
model18.findIOHandler();
|
||||||
|
if (options.debug)
|
||||||
|
log("model load handler:", model18.handler);
|
||||||
|
const artifacts = await model18.handler.load();
|
||||||
|
model18.loadSync(artifacts);
|
||||||
|
if (options.verbose)
|
||||||
|
log("load model:", model18["modelUrl"]);
|
||||||
|
} catch (err) {
|
||||||
|
log("error loading model:", modelUrl, err);
|
||||||
|
}
|
||||||
|
if (options.cacheModels && !modelCached) {
|
||||||
|
try {
|
||||||
|
const saveResult = await model18.save(cachedModelName);
|
||||||
|
log("model saved:", cachedModelName, saveResult);
|
||||||
|
} catch (err) {
|
||||||
|
log("error saving model:", modelUrl, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return model18;
|
||||||
|
}
|
||||||
|
|
||||||
// src/human.ts
|
// src/human.ts
|
||||||
var tf36 = __toESM(require_tfjs_esm());
|
var tf36 = __toESM(require_tfjs_esm());
|
||||||
|
|
||||||
// package.json
|
// package.json
|
||||||
var version2 = "2.5.8";
|
var version2 = "2.6.0";
|
||||||
|
|
||||||
// src/tfjs/humangl.ts
|
// src/tfjs/humangl.ts
|
||||||
var tf31 = __toESM(require_tfjs_esm());
|
var tf31 = __toESM(require_tfjs_esm());
|
||||||
|
|
||||||
// src/gear/gear.ts
|
// src/gear/gear.ts
|
||||||
var tf5 = __toESM(require_tfjs_esm());
|
var tf5 = __toESM(require_tfjs_esm());
|
||||||
|
|
||||||
// src/tfjs/load.ts
|
|
||||||
var tf4 = __toESM(require_tfjs_esm());
|
|
||||||
var options = {
|
|
||||||
appName: "human",
|
|
||||||
autoSave: true,
|
|
||||||
verbose: true
|
|
||||||
};
|
|
||||||
async function httpHandler(url, init2) {
|
|
||||||
if (options.fetchFunc)
|
|
||||||
return options.fetchFunc(url, init2);
|
|
||||||
else
|
|
||||||
log("error: fetch function is not defined");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
var tfLoadOptions = {
|
|
||||||
onProgress: (...args) => {
|
|
||||||
if (options.onProgress)
|
|
||||||
options.onProgress(...args);
|
|
||||||
else if (options.verbose)
|
|
||||||
log("load model progress:", ...args);
|
|
||||||
},
|
|
||||||
fetchFunc: (url, init2) => {
|
|
||||||
if (options.verbose)
|
|
||||||
log("load model fetch:", url, init2);
|
|
||||||
if (url.toString().toLowerCase().startsWith("http"))
|
|
||||||
return httpHandler(url, init2);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
async function loadModel2(modelUrl, loadOptions) {
|
|
||||||
if (loadOptions)
|
|
||||||
options = mergeDeep(loadOptions);
|
|
||||||
if (!options.fetchFunc && typeof globalThis.fetch !== "undefined")
|
|
||||||
options.fetchFunc = globalThis.fetch;
|
|
||||||
const model18 = await tf4.loadGraphModel(modelUrl, tfLoadOptions);
|
|
||||||
return model18;
|
|
||||||
}
|
|
||||||
|
|
||||||
// src/gear/gear.ts
|
|
||||||
var model;
|
var model;
|
||||||
var last2 = [];
|
var last2 = [];
|
||||||
var raceNames = ["white", "black", "asian", "indian", "other"];
|
var raceNames = ["white", "black", "asian", "indian", "other"];
|
||||||
|
@ -1433,13 +1445,9 @@ var skipped = Number.MAX_SAFE_INTEGER;
|
||||||
async function load(config3) {
|
async function load(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model = null;
|
model = null;
|
||||||
if (!model) {
|
if (!model)
|
||||||
model = await loadModel2(join(config3.modelBasePath, config3.face["gear"].modelPath));
|
model = await loadModel(config3.face["gear"]);
|
||||||
if (!model || !model["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["gear"].modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model["modelUrl"]);
|
log("cached model:", model["modelUrl"]);
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
@ -1518,16 +1526,10 @@ var skipped2 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load2(config3) {
|
async function load2(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model2 = null;
|
model2 = null;
|
||||||
if (!model2) {
|
if (!model2)
|
||||||
model2 = await loadModel2(join(config3.modelBasePath, config3.face["ssrnet"].modelPathAge));
|
model2 = await loadModel(config3.face["ssrnet"].modelPathAge);
|
||||||
if (!model2 || !model2["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["ssrnet"].modelPathAge);
|
log("cached model:", model2["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model2["modelUrl"]);
|
|
||||||
} else {
|
|
||||||
if (config3.debug)
|
|
||||||
log("cached model:", model2["modelUrl"]);
|
|
||||||
}
|
|
||||||
return model2;
|
return model2;
|
||||||
}
|
}
|
||||||
async function predict2(image24, config3, idx, count2) {
|
async function predict2(image24, config3, idx, count2) {
|
||||||
|
@ -1573,13 +1575,9 @@ var rgb = [0.2989, 0.587, 0.114];
|
||||||
async function load3(config3) {
|
async function load3(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model3 = null;
|
model3 = null;
|
||||||
if (!model3) {
|
if (!model3)
|
||||||
model3 = await loadModel2(join(config3.modelBasePath, config3.face["ssrnet"].modelPathGender));
|
model3 = await loadModel(config3.face["ssrnet"].modelPathGender);
|
||||||
if (!model3 || !model3["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["ssrnet"].modelPathGender);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model3["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model3["modelUrl"]);
|
log("cached model:", model3["modelUrl"]);
|
||||||
return model3;
|
return model3;
|
||||||
}
|
}
|
||||||
|
@ -1630,16 +1628,12 @@ var skipped4 = Number.MAX_SAFE_INTEGER;
|
||||||
var lastCount4 = 0;
|
var lastCount4 = 0;
|
||||||
var lastTime4 = 0;
|
var lastTime4 = 0;
|
||||||
async function load4(config3) {
|
async function load4(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model4 = null;
|
model4 = null;
|
||||||
if (!model4) {
|
if (!model4)
|
||||||
model4 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.antispoof) == null ? void 0 : _a.modelPath) || ""));
|
model4 = await loadModel((_a = config3.face.antispoof) == null ? void 0 : _a.modelPath);
|
||||||
if (!model4 || !model4["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.antispoof) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model4["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model4["modelUrl"]);
|
log("cached model:", model4["modelUrl"]);
|
||||||
return model4;
|
return model4;
|
||||||
}
|
}
|
||||||
|
@ -5128,16 +5122,12 @@ var inputSize = 0;
|
||||||
var inputSizeT = null;
|
var inputSizeT = null;
|
||||||
var size = () => inputSize;
|
var size = () => inputSize;
|
||||||
async function load5(config3) {
|
async function load5(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model5 = null;
|
model5 = null;
|
||||||
if (!model5) {
|
if (!model5)
|
||||||
model5 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.detector) == null ? void 0 : _a.modelPath) || ""));
|
model5 = await loadModel((_a = config3.face.detector) == null ? void 0 : _a.modelPath);
|
||||||
if (!model5 || !model5["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.detector) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model5["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model5["modelUrl"]);
|
log("cached model:", model5["modelUrl"]);
|
||||||
inputSize = model5.inputs[0].shape ? model5.inputs[0].shape[2] : 0;
|
inputSize = model5.inputs[0].shape ? model5.inputs[0].shape[2] : 0;
|
||||||
inputSizeT = tf11.scalar(inputSize, "int32");
|
inputSizeT = tf11.scalar(inputSize, "int32");
|
||||||
|
@ -5370,14 +5360,10 @@ async function loadDetect(config3) {
|
||||||
if (env3.initial)
|
if (env3.initial)
|
||||||
models.detector = null;
|
models.detector = null;
|
||||||
if (!models.detector && config3.body["detector"] && config3.body["detector"]["modelPath"] || "") {
|
if (!models.detector && config3.body["detector"] && config3.body["detector"]["modelPath"] || "") {
|
||||||
models.detector = await loadModel2(join(config3.modelBasePath, config3.body["detector"]["modelPath"] || ""));
|
models.detector = await loadModel(config3.body["detector"]["modelPath"]);
|
||||||
const inputs = Object.values(models.detector.modelSignature["inputs"]);
|
const inputs = Object.values(models.detector.modelSignature["inputs"]);
|
||||||
inputSize3.detector[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize3.detector[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize3.detector[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize3.detector[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models.detector || !models.detector["modelUrl"])
|
|
||||||
log("load model failed:", config3.body["detector"]["modelPath"]);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models.detector["modelUrl"]);
|
|
||||||
} else if (config3.debug && models.detector)
|
} else if (config3.debug && models.detector)
|
||||||
log("cached model:", models.detector["modelUrl"]);
|
log("cached model:", models.detector["modelUrl"]);
|
||||||
await createAnchors();
|
await createAnchors();
|
||||||
|
@ -5387,14 +5373,10 @@ async function loadPose(config3) {
|
||||||
if (env3.initial)
|
if (env3.initial)
|
||||||
models.landmarks = null;
|
models.landmarks = null;
|
||||||
if (!models.landmarks) {
|
if (!models.landmarks) {
|
||||||
models.landmarks = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
models.landmarks = await loadModel(config3.body.modelPath);
|
||||||
const inputs = Object.values(models.landmarks.modelSignature["inputs"]);
|
const inputs = Object.values(models.landmarks.modelSignature["inputs"]);
|
||||||
inputSize3.landmarks[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize3.landmarks[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize3.landmarks[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize3.landmarks[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models.landmarks || !models.landmarks["modelUrl"])
|
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models.landmarks["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models.landmarks["modelUrl"]);
|
log("cached model:", models.landmarks["modelUrl"]);
|
||||||
return models.landmarks;
|
return models.landmarks;
|
||||||
|
@ -5622,13 +5604,9 @@ async function load6(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model6 = null;
|
model6 = null;
|
||||||
if (!model6) {
|
if (!model6) {
|
||||||
model6 = await loadModel2(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model6 = await loadModel(config3.object.modelPath);
|
||||||
const inputs = Object.values(model6.modelSignature["inputs"]);
|
const inputs = Object.values(model6.modelSignature["inputs"]);
|
||||||
inputSize4 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize4 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!model6 || !model6["modelUrl"])
|
|
||||||
log("load model failed:", config3.object.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model6["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model6["modelUrl"]);
|
log("cached model:", model6["modelUrl"]);
|
||||||
return model6;
|
return model6;
|
||||||
|
@ -5738,13 +5716,9 @@ var skipped7 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load7(config3) {
|
async function load7(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model7 = null;
|
model7 = null;
|
||||||
if (!model7) {
|
if (!model7)
|
||||||
model7 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model7 = await loadModel(config3.body.modelPath);
|
||||||
if (!model7 || !model7["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model7["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model7["modelUrl"]);
|
log("cached model:", model7["modelUrl"]);
|
||||||
return model7;
|
return model7;
|
||||||
}
|
}
|
||||||
|
@ -5853,16 +5827,12 @@ var lastCount5 = 0;
|
||||||
var lastTime8 = 0;
|
var lastTime8 = 0;
|
||||||
var skipped8 = Number.MAX_SAFE_INTEGER;
|
var skipped8 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load8(config3) {
|
async function load8(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model8 = null;
|
model8 = null;
|
||||||
if (!model8) {
|
if (!model8)
|
||||||
model8 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.emotion) == null ? void 0 : _a.modelPath) || ""));
|
model8 = await loadModel((_a = config3.face.emotion) == null ? void 0 : _a.modelPath);
|
||||||
if (!model8 || !model8["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.emotion) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model8["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model8["modelUrl"]);
|
log("cached model:", model8["modelUrl"]);
|
||||||
return model8;
|
return model8;
|
||||||
}
|
}
|
||||||
|
@ -5912,17 +5882,12 @@ var lastCount6 = 0;
|
||||||
var lastTime9 = 0;
|
var lastTime9 = 0;
|
||||||
var skipped9 = Number.MAX_SAFE_INTEGER;
|
var skipped9 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load9(config3) {
|
async function load9(config3) {
|
||||||
const modelUrl = join(config3.modelBasePath, config3.face["mobilefacenet"].modelPath);
|
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model9 = null;
|
model9 = null;
|
||||||
if (!model9) {
|
if (!model9)
|
||||||
model9 = await loadModel2(modelUrl);
|
model9 = await loadModel(config3.face["mobilefacenet"].modelPath);
|
||||||
if (!model9)
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["mobilefacenet"].modelPath);
|
log("cached model:", model9["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", modelUrl);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", modelUrl);
|
|
||||||
return model9;
|
return model9;
|
||||||
}
|
}
|
||||||
async function predict9(input, config3, idx, count2) {
|
async function predict9(input, config3, idx, count2) {
|
||||||
|
@ -5973,16 +5938,12 @@ var irisLandmarks = {
|
||||||
numCoordinates: 76
|
numCoordinates: 76
|
||||||
};
|
};
|
||||||
async function load10(config3) {
|
async function load10(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model10 = null;
|
model10 = null;
|
||||||
if (!model10) {
|
if (!model10)
|
||||||
model10 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.iris) == null ? void 0 : _a.modelPath) || ""));
|
model10 = await loadModel((_a = config3.face.iris) == null ? void 0 : _a.modelPath);
|
||||||
if (!model10 || !model10["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.iris) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model10["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model10["modelUrl"]);
|
log("cached model:", model10["modelUrl"]);
|
||||||
inputSize5 = model10.inputs[0].shape ? model10.inputs[0].shape[2] : 0;
|
inputSize5 = model10.inputs[0].shape ? model10.inputs[0].shape[2] : 0;
|
||||||
if (inputSize5 === -1)
|
if (inputSize5 === -1)
|
||||||
|
@ -6178,16 +6139,12 @@ async function predict10(input, config3) {
|
||||||
return faces;
|
return faces;
|
||||||
}
|
}
|
||||||
async function load11(config3) {
|
async function load11(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model11 = null;
|
model11 = null;
|
||||||
if (!model11) {
|
if (!model11)
|
||||||
model11 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.mesh) == null ? void 0 : _a.modelPath) || ""));
|
model11 = await loadModel((_a = config3.face.mesh) == null ? void 0 : _a.modelPath);
|
||||||
if (!model11 || !model11["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.mesh) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model11["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model11["modelUrl"]);
|
log("cached model:", model11["modelUrl"]);
|
||||||
inputSize6 = model11.inputs[0].shape ? model11.inputs[0].shape[2] : 0;
|
inputSize6 = model11.inputs[0].shape ? model11.inputs[0].shape[2] : 0;
|
||||||
return model11;
|
return model11;
|
||||||
|
@ -6203,18 +6160,13 @@ var lastTime10 = 0;
|
||||||
var lastCount7 = 0;
|
var lastCount7 = 0;
|
||||||
var skipped10 = Number.MAX_SAFE_INTEGER;
|
var skipped10 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load12(config3) {
|
async function load12(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
const modelUrl = join(config3.modelBasePath, ((_a = config3.face.description) == null ? void 0 : _a.modelPath) || "");
|
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model12 = null;
|
model12 = null;
|
||||||
if (!model12) {
|
if (!model12)
|
||||||
model12 = await loadModel2(modelUrl);
|
model12 = await loadModel((_a = config3.face.description) == null ? void 0 : _a.modelPath);
|
||||||
if (!model12)
|
else if (config3.debug)
|
||||||
log("load model failed:", ((_b = config3.face.description) == null ? void 0 : _b.modelPath) || "");
|
log("cached model:", model12["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", modelUrl);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", modelUrl);
|
|
||||||
return model12;
|
return model12;
|
||||||
}
|
}
|
||||||
function enhance(input) {
|
function enhance(input) {
|
||||||
|
@ -10036,26 +9988,16 @@ async function predict12(input, config3) {
|
||||||
return hands;
|
return hands;
|
||||||
}
|
}
|
||||||
async function load13(config3) {
|
async function load13(config3) {
|
||||||
var _a, _b, _c, _d;
|
var _a, _b;
|
||||||
if (env.initial) {
|
if (env.initial) {
|
||||||
handDetectorModel = null;
|
handDetectorModel = null;
|
||||||
handPoseModel = null;
|
handPoseModel = null;
|
||||||
}
|
}
|
||||||
if (!handDetectorModel || !handPoseModel) {
|
if (!handDetectorModel || !handPoseModel) {
|
||||||
[handDetectorModel, handPoseModel] = await Promise.all([
|
[handDetectorModel, handPoseModel] = await Promise.all([
|
||||||
config3.hand.enabled ? loadModel2(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || "")) : null,
|
config3.hand.enabled ? loadModel((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) : null,
|
||||||
config3.hand.landmarks ? loadModel2(join(config3.modelBasePath, ((_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath) || "")) : null
|
config3.hand.landmarks ? loadModel((_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath) : null
|
||||||
]);
|
]);
|
||||||
if (config3.hand.enabled) {
|
|
||||||
if (!handDetectorModel || !handDetectorModel["modelUrl"])
|
|
||||||
log("load model failed:", ((_c = config3.hand.detector) == null ? void 0 : _c.modelPath) || "");
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", handDetectorModel["modelUrl"]);
|
|
||||||
if (!handPoseModel || !handPoseModel["modelUrl"])
|
|
||||||
log("load model failed:", ((_d = config3.hand.skeleton) == null ? void 0 : _d.modelPath) || "");
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", handPoseModel["modelUrl"]);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (config3.debug)
|
if (config3.debug)
|
||||||
log("cached model:", handDetectorModel["modelUrl"]);
|
log("cached model:", handDetectorModel["modelUrl"]);
|
||||||
|
@ -10094,36 +10036,28 @@ var fingerMap = {
|
||||||
palm: [0, 17, 13, 9, 5, 1, 0]
|
palm: [0, 17, 13, 9, 5, 1, 0]
|
||||||
};
|
};
|
||||||
async function loadDetect2(config3) {
|
async function loadDetect2(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
models2[0] = null;
|
models2[0] = null;
|
||||||
if (!models2[0]) {
|
if (!models2[0]) {
|
||||||
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
||||||
models2[0] = await loadModel2(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""));
|
models2[0] = await loadModel((_a = config3.hand.detector) == null ? void 0 : _a.modelPath);
|
||||||
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
||||||
inputSize7[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize7[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize7[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize7[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models2[0] || !models2[0]["modelUrl"])
|
|
||||||
log("load model failed:", (_b = config3.hand.detector) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models2[0]["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models2[0]["modelUrl"]);
|
log("cached model:", models2[0]["modelUrl"]);
|
||||||
return models2[0];
|
return models2[0];
|
||||||
}
|
}
|
||||||
async function loadSkeleton(config3) {
|
async function loadSkeleton(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
models2[1] = null;
|
models2[1] = null;
|
||||||
if (!models2[1]) {
|
if (!models2[1]) {
|
||||||
models2[1] = await loadModel2(join(config3.modelBasePath, ((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath) || ""));
|
models2[1] = await loadModel((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath);
|
||||||
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
||||||
inputSize7[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize7[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize7[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize7[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models2[1] || !models2[1]["modelUrl"])
|
|
||||||
log("load model failed:", (_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models2[1]["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models2[1]["modelUrl"]);
|
log("cached model:", models2[1]["modelUrl"]);
|
||||||
return models2[1];
|
return models2[1];
|
||||||
|
@ -10261,16 +10195,12 @@ var skipped12 = Number.MAX_SAFE_INTEGER;
|
||||||
var lastCount8 = 0;
|
var lastCount8 = 0;
|
||||||
var lastTime13 = 0;
|
var lastTime13 = 0;
|
||||||
async function load14(config3) {
|
async function load14(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model13 = null;
|
model13 = null;
|
||||||
if (!model13) {
|
if (!model13)
|
||||||
model13 = await loadModel(join(config3.modelBasePath, ((_a = config3.face.liveness) == null ? void 0 : _a.modelPath) || ""));
|
model13 = await loadModel((_a = config3.face.liveness) == null ? void 0 : _a.modelPath);
|
||||||
if (!model13 || !model13["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.liveness) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model13["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model13["modelUrl"]);
|
log("cached model:", model13["modelUrl"]);
|
||||||
return model13;
|
return model13;
|
||||||
}
|
}
|
||||||
|
@ -10470,11 +10400,7 @@ async function load15(config3) {
|
||||||
model14 = null;
|
model14 = null;
|
||||||
if (!model14) {
|
if (!model14) {
|
||||||
fakeOps(["size"], config3);
|
fakeOps(["size"], config3);
|
||||||
model14 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model14 = await loadModel(config3.body.modelPath);
|
||||||
if (!model14 || !model14["modelUrl"])
|
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model14["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model14["modelUrl"]);
|
log("cached model:", model14["modelUrl"]);
|
||||||
inputSize8 = model14.inputs[0].shape ? model14.inputs[0].shape[2] : 0;
|
inputSize8 = model14.inputs[0].shape ? model14.inputs[0].shape[2] : 0;
|
||||||
|
@ -10599,13 +10525,9 @@ var inputSize9 = 0;
|
||||||
var scaleBox = 2.5;
|
var scaleBox = 2.5;
|
||||||
async function load16(config3) {
|
async function load16(config3) {
|
||||||
if (!model15 || env.initial) {
|
if (!model15 || env.initial) {
|
||||||
model15 = await loadModel2(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model15 = await loadModel(config3.object.modelPath);
|
||||||
const inputs = Object.values(model15.modelSignature["inputs"]);
|
const inputs = Object.values(model15.modelSignature["inputs"]);
|
||||||
inputSize9 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize9 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!model15 || !model15["modelUrl"])
|
|
||||||
log("load model failed:", config3.object.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model15["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model15["modelUrl"]);
|
log("cached model:", model15["modelUrl"]);
|
||||||
return model15;
|
return model15;
|
||||||
|
@ -11031,13 +10953,9 @@ async function predict17(input, config3) {
|
||||||
return scaled;
|
return scaled;
|
||||||
}
|
}
|
||||||
async function load17(config3) {
|
async function load17(config3) {
|
||||||
if (!model16 || env.initial) {
|
if (!model16 || env.initial)
|
||||||
model16 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model16 = await loadModel(config3.body.modelPath);
|
||||||
if (!model16 || !model16["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model16["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model16["modelUrl"]);
|
log("cached model:", model16["modelUrl"]);
|
||||||
return model16;
|
return model16;
|
||||||
}
|
}
|
||||||
|
@ -11047,13 +10965,9 @@ var tf30 = __toESM(require_tfjs_esm());
|
||||||
var model17;
|
var model17;
|
||||||
var busy = false;
|
var busy = false;
|
||||||
async function load18(config3) {
|
async function load18(config3) {
|
||||||
if (!model17 || env.initial) {
|
if (!model17 || env.initial)
|
||||||
model17 = await loadModel2(join(config3.modelBasePath, config3.segmentation.modelPath || ""));
|
model17 = await loadModel(config3.segmentation.modelPath);
|
||||||
if (!model17 || !model17["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.segmentation.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model17["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model17["modelUrl"]);
|
log("cached model:", model17["modelUrl"]);
|
||||||
return model17;
|
return model17;
|
||||||
}
|
}
|
||||||
|
@ -13528,6 +13442,8 @@ var Human = class {
|
||||||
Object.seal(this.config);
|
Object.seal(this.config);
|
||||||
if (userConfig)
|
if (userConfig)
|
||||||
this.config = mergeDeep(this.config, userConfig);
|
this.config = mergeDeep(this.config, userConfig);
|
||||||
|
this.config.cacheModels = typeof indexedDB !== "undefined";
|
||||||
|
setModelLoadOptions(this.config);
|
||||||
this.tf = tf36;
|
this.tf = tf36;
|
||||||
this.state = "idle";
|
this.state = "idle";
|
||||||
__privateSet(this, _numTensors, 0);
|
__privateSet(this, _numTensors, 0);
|
||||||
|
|
|
@ -190,6 +190,10 @@ export declare interface Config {
|
||||||
* default: `../models/` for browsers and `file://models/` for nodejs
|
* default: `../models/` for browsers and `file://models/` for nodejs
|
||||||
*/
|
*/
|
||||||
modelBasePath: string;
|
modelBasePath: string;
|
||||||
|
/** Cache models in IndexDB on first sucessfull load
|
||||||
|
* default: true if indexdb is available (browsers), false if its not (nodejs)
|
||||||
|
*/
|
||||||
|
cacheModels: boolean;
|
||||||
/** Cache sensitivity
|
/** Cache sensitivity
|
||||||
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
||||||
* - set to 0 to disable caching
|
* - set to 0 to disable caching
|
||||||
|
|
|
@ -153,6 +153,7 @@ function mergeDeep(...objects) {
|
||||||
var config = {
|
var config = {
|
||||||
backend: "",
|
backend: "",
|
||||||
modelBasePath: "",
|
modelBasePath: "",
|
||||||
|
cacheModels: true,
|
||||||
wasmPath: "",
|
wasmPath: "",
|
||||||
debug: true,
|
debug: true,
|
||||||
async: true,
|
async: true,
|
||||||
|
@ -1373,57 +1374,68 @@ var Env = class {
|
||||||
};
|
};
|
||||||
var env = new Env();
|
var env = new Env();
|
||||||
|
|
||||||
|
// src/tfjs/load.ts
|
||||||
|
var tf4 = __toESM(require_tfjs_esm());
|
||||||
|
var options = {
|
||||||
|
cacheModels: false,
|
||||||
|
verbose: true,
|
||||||
|
debug: false,
|
||||||
|
modelBasePath: ""
|
||||||
|
};
|
||||||
|
async function httpHandler(url, init2) {
|
||||||
|
if (options.debug)
|
||||||
|
log("load model fetch:", url, init2);
|
||||||
|
if (typeof fetch === "undefined") {
|
||||||
|
log("error loading model: fetch function is not defined:");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return fetch(url, init2);
|
||||||
|
}
|
||||||
|
function setModelLoadOptions(config3) {
|
||||||
|
options.cacheModels = config3.cacheModels;
|
||||||
|
options.verbose = config3.debug;
|
||||||
|
options.modelBasePath = config3.modelBasePath;
|
||||||
|
}
|
||||||
|
async function loadModel(modelPath) {
|
||||||
|
const modelUrl = join(options.modelBasePath, modelPath || "");
|
||||||
|
const modelPathSegments = modelUrl.split("/");
|
||||||
|
const cachedModelName = "indexeddb://" + modelPathSegments[modelPathSegments.length - 1].replace(".json", "");
|
||||||
|
const cachedModels = await tf4.io.listModels();
|
||||||
|
const modelCached = options.cacheModels && Object.keys(cachedModels).includes(cachedModelName);
|
||||||
|
const model18 = new tf4.GraphModel(modelCached ? cachedModelName : modelUrl, { fetchFunc: (url, init2) => httpHandler(url, init2) });
|
||||||
|
try {
|
||||||
|
model18.findIOHandler();
|
||||||
|
if (options.debug)
|
||||||
|
log("model load handler:", model18.handler);
|
||||||
|
const artifacts = await model18.handler.load();
|
||||||
|
model18.loadSync(artifacts);
|
||||||
|
if (options.verbose)
|
||||||
|
log("load model:", model18["modelUrl"]);
|
||||||
|
} catch (err) {
|
||||||
|
log("error loading model:", modelUrl, err);
|
||||||
|
}
|
||||||
|
if (options.cacheModels && !modelCached) {
|
||||||
|
try {
|
||||||
|
const saveResult = await model18.save(cachedModelName);
|
||||||
|
log("model saved:", cachedModelName, saveResult);
|
||||||
|
} catch (err) {
|
||||||
|
log("error saving model:", modelUrl, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return model18;
|
||||||
|
}
|
||||||
|
|
||||||
// src/human.ts
|
// src/human.ts
|
||||||
var tf36 = __toESM(require_tfjs_esm());
|
var tf36 = __toESM(require_tfjs_esm());
|
||||||
|
|
||||||
// package.json
|
// package.json
|
||||||
var version2 = "2.5.8";
|
var version2 = "2.6.0";
|
||||||
|
|
||||||
// src/tfjs/humangl.ts
|
// src/tfjs/humangl.ts
|
||||||
var tf31 = __toESM(require_tfjs_esm());
|
var tf31 = __toESM(require_tfjs_esm());
|
||||||
|
|
||||||
// src/gear/gear.ts
|
// src/gear/gear.ts
|
||||||
var tf5 = __toESM(require_tfjs_esm());
|
var tf5 = __toESM(require_tfjs_esm());
|
||||||
|
|
||||||
// src/tfjs/load.ts
|
|
||||||
var tf4 = __toESM(require_tfjs_esm());
|
|
||||||
var options = {
|
|
||||||
appName: "human",
|
|
||||||
autoSave: true,
|
|
||||||
verbose: true
|
|
||||||
};
|
|
||||||
async function httpHandler(url, init2) {
|
|
||||||
if (options.fetchFunc)
|
|
||||||
return options.fetchFunc(url, init2);
|
|
||||||
else
|
|
||||||
log("error: fetch function is not defined");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
var tfLoadOptions = {
|
|
||||||
onProgress: (...args) => {
|
|
||||||
if (options.onProgress)
|
|
||||||
options.onProgress(...args);
|
|
||||||
else if (options.verbose)
|
|
||||||
log("load model progress:", ...args);
|
|
||||||
},
|
|
||||||
fetchFunc: (url, init2) => {
|
|
||||||
if (options.verbose)
|
|
||||||
log("load model fetch:", url, init2);
|
|
||||||
if (url.toString().toLowerCase().startsWith("http"))
|
|
||||||
return httpHandler(url, init2);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
async function loadModel2(modelUrl, loadOptions) {
|
|
||||||
if (loadOptions)
|
|
||||||
options = mergeDeep(loadOptions);
|
|
||||||
if (!options.fetchFunc && typeof globalThis.fetch !== "undefined")
|
|
||||||
options.fetchFunc = globalThis.fetch;
|
|
||||||
const model18 = await tf4.loadGraphModel(modelUrl, tfLoadOptions);
|
|
||||||
return model18;
|
|
||||||
}
|
|
||||||
|
|
||||||
// src/gear/gear.ts
|
|
||||||
var model;
|
var model;
|
||||||
var last2 = [];
|
var last2 = [];
|
||||||
var raceNames = ["white", "black", "asian", "indian", "other"];
|
var raceNames = ["white", "black", "asian", "indian", "other"];
|
||||||
|
@ -1434,13 +1446,9 @@ var skipped = Number.MAX_SAFE_INTEGER;
|
||||||
async function load(config3) {
|
async function load(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model = null;
|
model = null;
|
||||||
if (!model) {
|
if (!model)
|
||||||
model = await loadModel2(join(config3.modelBasePath, config3.face["gear"].modelPath));
|
model = await loadModel(config3.face["gear"]);
|
||||||
if (!model || !model["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["gear"].modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model["modelUrl"]);
|
log("cached model:", model["modelUrl"]);
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
@ -1519,16 +1527,10 @@ var skipped2 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load2(config3) {
|
async function load2(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model2 = null;
|
model2 = null;
|
||||||
if (!model2) {
|
if (!model2)
|
||||||
model2 = await loadModel2(join(config3.modelBasePath, config3.face["ssrnet"].modelPathAge));
|
model2 = await loadModel(config3.face["ssrnet"].modelPathAge);
|
||||||
if (!model2 || !model2["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["ssrnet"].modelPathAge);
|
log("cached model:", model2["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model2["modelUrl"]);
|
|
||||||
} else {
|
|
||||||
if (config3.debug)
|
|
||||||
log("cached model:", model2["modelUrl"]);
|
|
||||||
}
|
|
||||||
return model2;
|
return model2;
|
||||||
}
|
}
|
||||||
async function predict2(image24, config3, idx, count2) {
|
async function predict2(image24, config3, idx, count2) {
|
||||||
|
@ -1574,13 +1576,9 @@ var rgb = [0.2989, 0.587, 0.114];
|
||||||
async function load3(config3) {
|
async function load3(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model3 = null;
|
model3 = null;
|
||||||
if (!model3) {
|
if (!model3)
|
||||||
model3 = await loadModel2(join(config3.modelBasePath, config3.face["ssrnet"].modelPathGender));
|
model3 = await loadModel(config3.face["ssrnet"].modelPathGender);
|
||||||
if (!model3 || !model3["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["ssrnet"].modelPathGender);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model3["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model3["modelUrl"]);
|
log("cached model:", model3["modelUrl"]);
|
||||||
return model3;
|
return model3;
|
||||||
}
|
}
|
||||||
|
@ -1631,16 +1629,12 @@ var skipped4 = Number.MAX_SAFE_INTEGER;
|
||||||
var lastCount4 = 0;
|
var lastCount4 = 0;
|
||||||
var lastTime4 = 0;
|
var lastTime4 = 0;
|
||||||
async function load4(config3) {
|
async function load4(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model4 = null;
|
model4 = null;
|
||||||
if (!model4) {
|
if (!model4)
|
||||||
model4 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.antispoof) == null ? void 0 : _a.modelPath) || ""));
|
model4 = await loadModel((_a = config3.face.antispoof) == null ? void 0 : _a.modelPath);
|
||||||
if (!model4 || !model4["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.antispoof) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model4["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model4["modelUrl"]);
|
log("cached model:", model4["modelUrl"]);
|
||||||
return model4;
|
return model4;
|
||||||
}
|
}
|
||||||
|
@ -5129,16 +5123,12 @@ var inputSize = 0;
|
||||||
var inputSizeT = null;
|
var inputSizeT = null;
|
||||||
var size = () => inputSize;
|
var size = () => inputSize;
|
||||||
async function load5(config3) {
|
async function load5(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model5 = null;
|
model5 = null;
|
||||||
if (!model5) {
|
if (!model5)
|
||||||
model5 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.detector) == null ? void 0 : _a.modelPath) || ""));
|
model5 = await loadModel((_a = config3.face.detector) == null ? void 0 : _a.modelPath);
|
||||||
if (!model5 || !model5["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.detector) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model5["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model5["modelUrl"]);
|
log("cached model:", model5["modelUrl"]);
|
||||||
inputSize = model5.inputs[0].shape ? model5.inputs[0].shape[2] : 0;
|
inputSize = model5.inputs[0].shape ? model5.inputs[0].shape[2] : 0;
|
||||||
inputSizeT = tf11.scalar(inputSize, "int32");
|
inputSizeT = tf11.scalar(inputSize, "int32");
|
||||||
|
@ -5371,14 +5361,10 @@ async function loadDetect(config3) {
|
||||||
if (env3.initial)
|
if (env3.initial)
|
||||||
models.detector = null;
|
models.detector = null;
|
||||||
if (!models.detector && config3.body["detector"] && config3.body["detector"]["modelPath"] || "") {
|
if (!models.detector && config3.body["detector"] && config3.body["detector"]["modelPath"] || "") {
|
||||||
models.detector = await loadModel2(join(config3.modelBasePath, config3.body["detector"]["modelPath"] || ""));
|
models.detector = await loadModel(config3.body["detector"]["modelPath"]);
|
||||||
const inputs = Object.values(models.detector.modelSignature["inputs"]);
|
const inputs = Object.values(models.detector.modelSignature["inputs"]);
|
||||||
inputSize3.detector[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize3.detector[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize3.detector[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize3.detector[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models.detector || !models.detector["modelUrl"])
|
|
||||||
log("load model failed:", config3.body["detector"]["modelPath"]);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models.detector["modelUrl"]);
|
|
||||||
} else if (config3.debug && models.detector)
|
} else if (config3.debug && models.detector)
|
||||||
log("cached model:", models.detector["modelUrl"]);
|
log("cached model:", models.detector["modelUrl"]);
|
||||||
await createAnchors();
|
await createAnchors();
|
||||||
|
@ -5388,14 +5374,10 @@ async function loadPose(config3) {
|
||||||
if (env3.initial)
|
if (env3.initial)
|
||||||
models.landmarks = null;
|
models.landmarks = null;
|
||||||
if (!models.landmarks) {
|
if (!models.landmarks) {
|
||||||
models.landmarks = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
models.landmarks = await loadModel(config3.body.modelPath);
|
||||||
const inputs = Object.values(models.landmarks.modelSignature["inputs"]);
|
const inputs = Object.values(models.landmarks.modelSignature["inputs"]);
|
||||||
inputSize3.landmarks[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize3.landmarks[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize3.landmarks[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize3.landmarks[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models.landmarks || !models.landmarks["modelUrl"])
|
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models.landmarks["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models.landmarks["modelUrl"]);
|
log("cached model:", models.landmarks["modelUrl"]);
|
||||||
return models.landmarks;
|
return models.landmarks;
|
||||||
|
@ -5623,13 +5605,9 @@ async function load6(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model6 = null;
|
model6 = null;
|
||||||
if (!model6) {
|
if (!model6) {
|
||||||
model6 = await loadModel2(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model6 = await loadModel(config3.object.modelPath);
|
||||||
const inputs = Object.values(model6.modelSignature["inputs"]);
|
const inputs = Object.values(model6.modelSignature["inputs"]);
|
||||||
inputSize4 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize4 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!model6 || !model6["modelUrl"])
|
|
||||||
log("load model failed:", config3.object.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model6["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model6["modelUrl"]);
|
log("cached model:", model6["modelUrl"]);
|
||||||
return model6;
|
return model6;
|
||||||
|
@ -5739,13 +5717,9 @@ var skipped7 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load7(config3) {
|
async function load7(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model7 = null;
|
model7 = null;
|
||||||
if (!model7) {
|
if (!model7)
|
||||||
model7 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model7 = await loadModel(config3.body.modelPath);
|
||||||
if (!model7 || !model7["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model7["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model7["modelUrl"]);
|
log("cached model:", model7["modelUrl"]);
|
||||||
return model7;
|
return model7;
|
||||||
}
|
}
|
||||||
|
@ -5854,16 +5828,12 @@ var lastCount5 = 0;
|
||||||
var lastTime8 = 0;
|
var lastTime8 = 0;
|
||||||
var skipped8 = Number.MAX_SAFE_INTEGER;
|
var skipped8 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load8(config3) {
|
async function load8(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model8 = null;
|
model8 = null;
|
||||||
if (!model8) {
|
if (!model8)
|
||||||
model8 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.emotion) == null ? void 0 : _a.modelPath) || ""));
|
model8 = await loadModel((_a = config3.face.emotion) == null ? void 0 : _a.modelPath);
|
||||||
if (!model8 || !model8["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.emotion) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model8["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model8["modelUrl"]);
|
log("cached model:", model8["modelUrl"]);
|
||||||
return model8;
|
return model8;
|
||||||
}
|
}
|
||||||
|
@ -5913,17 +5883,12 @@ var lastCount6 = 0;
|
||||||
var lastTime9 = 0;
|
var lastTime9 = 0;
|
||||||
var skipped9 = Number.MAX_SAFE_INTEGER;
|
var skipped9 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load9(config3) {
|
async function load9(config3) {
|
||||||
const modelUrl = join(config3.modelBasePath, config3.face["mobilefacenet"].modelPath);
|
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model9 = null;
|
model9 = null;
|
||||||
if (!model9) {
|
if (!model9)
|
||||||
model9 = await loadModel2(modelUrl);
|
model9 = await loadModel(config3.face["mobilefacenet"].modelPath);
|
||||||
if (!model9)
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["mobilefacenet"].modelPath);
|
log("cached model:", model9["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", modelUrl);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", modelUrl);
|
|
||||||
return model9;
|
return model9;
|
||||||
}
|
}
|
||||||
async function predict9(input, config3, idx, count2) {
|
async function predict9(input, config3, idx, count2) {
|
||||||
|
@ -5974,16 +5939,12 @@ var irisLandmarks = {
|
||||||
numCoordinates: 76
|
numCoordinates: 76
|
||||||
};
|
};
|
||||||
async function load10(config3) {
|
async function load10(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model10 = null;
|
model10 = null;
|
||||||
if (!model10) {
|
if (!model10)
|
||||||
model10 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.iris) == null ? void 0 : _a.modelPath) || ""));
|
model10 = await loadModel((_a = config3.face.iris) == null ? void 0 : _a.modelPath);
|
||||||
if (!model10 || !model10["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.iris) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model10["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model10["modelUrl"]);
|
log("cached model:", model10["modelUrl"]);
|
||||||
inputSize5 = model10.inputs[0].shape ? model10.inputs[0].shape[2] : 0;
|
inputSize5 = model10.inputs[0].shape ? model10.inputs[0].shape[2] : 0;
|
||||||
if (inputSize5 === -1)
|
if (inputSize5 === -1)
|
||||||
|
@ -6179,16 +6140,12 @@ async function predict10(input, config3) {
|
||||||
return faces;
|
return faces;
|
||||||
}
|
}
|
||||||
async function load11(config3) {
|
async function load11(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model11 = null;
|
model11 = null;
|
||||||
if (!model11) {
|
if (!model11)
|
||||||
model11 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.mesh) == null ? void 0 : _a.modelPath) || ""));
|
model11 = await loadModel((_a = config3.face.mesh) == null ? void 0 : _a.modelPath);
|
||||||
if (!model11 || !model11["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.mesh) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model11["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model11["modelUrl"]);
|
log("cached model:", model11["modelUrl"]);
|
||||||
inputSize6 = model11.inputs[0].shape ? model11.inputs[0].shape[2] : 0;
|
inputSize6 = model11.inputs[0].shape ? model11.inputs[0].shape[2] : 0;
|
||||||
return model11;
|
return model11;
|
||||||
|
@ -6204,18 +6161,13 @@ var lastTime10 = 0;
|
||||||
var lastCount7 = 0;
|
var lastCount7 = 0;
|
||||||
var skipped10 = Number.MAX_SAFE_INTEGER;
|
var skipped10 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load12(config3) {
|
async function load12(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
const modelUrl = join(config3.modelBasePath, ((_a = config3.face.description) == null ? void 0 : _a.modelPath) || "");
|
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model12 = null;
|
model12 = null;
|
||||||
if (!model12) {
|
if (!model12)
|
||||||
model12 = await loadModel2(modelUrl);
|
model12 = await loadModel((_a = config3.face.description) == null ? void 0 : _a.modelPath);
|
||||||
if (!model12)
|
else if (config3.debug)
|
||||||
log("load model failed:", ((_b = config3.face.description) == null ? void 0 : _b.modelPath) || "");
|
log("cached model:", model12["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", modelUrl);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", modelUrl);
|
|
||||||
return model12;
|
return model12;
|
||||||
}
|
}
|
||||||
function enhance(input) {
|
function enhance(input) {
|
||||||
|
@ -10037,26 +9989,16 @@ async function predict12(input, config3) {
|
||||||
return hands;
|
return hands;
|
||||||
}
|
}
|
||||||
async function load13(config3) {
|
async function load13(config3) {
|
||||||
var _a, _b, _c, _d;
|
var _a, _b;
|
||||||
if (env.initial) {
|
if (env.initial) {
|
||||||
handDetectorModel = null;
|
handDetectorModel = null;
|
||||||
handPoseModel = null;
|
handPoseModel = null;
|
||||||
}
|
}
|
||||||
if (!handDetectorModel || !handPoseModel) {
|
if (!handDetectorModel || !handPoseModel) {
|
||||||
[handDetectorModel, handPoseModel] = await Promise.all([
|
[handDetectorModel, handPoseModel] = await Promise.all([
|
||||||
config3.hand.enabled ? loadModel2(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || "")) : null,
|
config3.hand.enabled ? loadModel((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) : null,
|
||||||
config3.hand.landmarks ? loadModel2(join(config3.modelBasePath, ((_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath) || "")) : null
|
config3.hand.landmarks ? loadModel((_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath) : null
|
||||||
]);
|
]);
|
||||||
if (config3.hand.enabled) {
|
|
||||||
if (!handDetectorModel || !handDetectorModel["modelUrl"])
|
|
||||||
log("load model failed:", ((_c = config3.hand.detector) == null ? void 0 : _c.modelPath) || "");
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", handDetectorModel["modelUrl"]);
|
|
||||||
if (!handPoseModel || !handPoseModel["modelUrl"])
|
|
||||||
log("load model failed:", ((_d = config3.hand.skeleton) == null ? void 0 : _d.modelPath) || "");
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", handPoseModel["modelUrl"]);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (config3.debug)
|
if (config3.debug)
|
||||||
log("cached model:", handDetectorModel["modelUrl"]);
|
log("cached model:", handDetectorModel["modelUrl"]);
|
||||||
|
@ -10095,36 +10037,28 @@ var fingerMap = {
|
||||||
palm: [0, 17, 13, 9, 5, 1, 0]
|
palm: [0, 17, 13, 9, 5, 1, 0]
|
||||||
};
|
};
|
||||||
async function loadDetect2(config3) {
|
async function loadDetect2(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
models2[0] = null;
|
models2[0] = null;
|
||||||
if (!models2[0]) {
|
if (!models2[0]) {
|
||||||
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
||||||
models2[0] = await loadModel2(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""));
|
models2[0] = await loadModel((_a = config3.hand.detector) == null ? void 0 : _a.modelPath);
|
||||||
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
||||||
inputSize7[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize7[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize7[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize7[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models2[0] || !models2[0]["modelUrl"])
|
|
||||||
log("load model failed:", (_b = config3.hand.detector) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models2[0]["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models2[0]["modelUrl"]);
|
log("cached model:", models2[0]["modelUrl"]);
|
||||||
return models2[0];
|
return models2[0];
|
||||||
}
|
}
|
||||||
async function loadSkeleton(config3) {
|
async function loadSkeleton(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
models2[1] = null;
|
models2[1] = null;
|
||||||
if (!models2[1]) {
|
if (!models2[1]) {
|
||||||
models2[1] = await loadModel2(join(config3.modelBasePath, ((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath) || ""));
|
models2[1] = await loadModel((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath);
|
||||||
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
||||||
inputSize7[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize7[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize7[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize7[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models2[1] || !models2[1]["modelUrl"])
|
|
||||||
log("load model failed:", (_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models2[1]["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models2[1]["modelUrl"]);
|
log("cached model:", models2[1]["modelUrl"]);
|
||||||
return models2[1];
|
return models2[1];
|
||||||
|
@ -10262,16 +10196,12 @@ var skipped12 = Number.MAX_SAFE_INTEGER;
|
||||||
var lastCount8 = 0;
|
var lastCount8 = 0;
|
||||||
var lastTime13 = 0;
|
var lastTime13 = 0;
|
||||||
async function load14(config3) {
|
async function load14(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model13 = null;
|
model13 = null;
|
||||||
if (!model13) {
|
if (!model13)
|
||||||
model13 = await loadModel(join(config3.modelBasePath, ((_a = config3.face.liveness) == null ? void 0 : _a.modelPath) || ""));
|
model13 = await loadModel((_a = config3.face.liveness) == null ? void 0 : _a.modelPath);
|
||||||
if (!model13 || !model13["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.liveness) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model13["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model13["modelUrl"]);
|
log("cached model:", model13["modelUrl"]);
|
||||||
return model13;
|
return model13;
|
||||||
}
|
}
|
||||||
|
@ -10471,11 +10401,7 @@ async function load15(config3) {
|
||||||
model14 = null;
|
model14 = null;
|
||||||
if (!model14) {
|
if (!model14) {
|
||||||
fakeOps(["size"], config3);
|
fakeOps(["size"], config3);
|
||||||
model14 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model14 = await loadModel(config3.body.modelPath);
|
||||||
if (!model14 || !model14["modelUrl"])
|
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model14["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model14["modelUrl"]);
|
log("cached model:", model14["modelUrl"]);
|
||||||
inputSize8 = model14.inputs[0].shape ? model14.inputs[0].shape[2] : 0;
|
inputSize8 = model14.inputs[0].shape ? model14.inputs[0].shape[2] : 0;
|
||||||
|
@ -10600,13 +10526,9 @@ var inputSize9 = 0;
|
||||||
var scaleBox = 2.5;
|
var scaleBox = 2.5;
|
||||||
async function load16(config3) {
|
async function load16(config3) {
|
||||||
if (!model15 || env.initial) {
|
if (!model15 || env.initial) {
|
||||||
model15 = await loadModel2(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model15 = await loadModel(config3.object.modelPath);
|
||||||
const inputs = Object.values(model15.modelSignature["inputs"]);
|
const inputs = Object.values(model15.modelSignature["inputs"]);
|
||||||
inputSize9 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize9 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!model15 || !model15["modelUrl"])
|
|
||||||
log("load model failed:", config3.object.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model15["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model15["modelUrl"]);
|
log("cached model:", model15["modelUrl"]);
|
||||||
return model15;
|
return model15;
|
||||||
|
@ -11032,13 +10954,9 @@ async function predict17(input, config3) {
|
||||||
return scaled;
|
return scaled;
|
||||||
}
|
}
|
||||||
async function load17(config3) {
|
async function load17(config3) {
|
||||||
if (!model16 || env.initial) {
|
if (!model16 || env.initial)
|
||||||
model16 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model16 = await loadModel(config3.body.modelPath);
|
||||||
if (!model16 || !model16["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model16["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model16["modelUrl"]);
|
log("cached model:", model16["modelUrl"]);
|
||||||
return model16;
|
return model16;
|
||||||
}
|
}
|
||||||
|
@ -11048,13 +10966,9 @@ var tf30 = __toESM(require_tfjs_esm());
|
||||||
var model17;
|
var model17;
|
||||||
var busy = false;
|
var busy = false;
|
||||||
async function load18(config3) {
|
async function load18(config3) {
|
||||||
if (!model17 || env.initial) {
|
if (!model17 || env.initial)
|
||||||
model17 = await loadModel2(join(config3.modelBasePath, config3.segmentation.modelPath || ""));
|
model17 = await loadModel(config3.segmentation.modelPath);
|
||||||
if (!model17 || !model17["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.segmentation.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model17["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model17["modelUrl"]);
|
log("cached model:", model17["modelUrl"]);
|
||||||
return model17;
|
return model17;
|
||||||
}
|
}
|
||||||
|
@ -13529,6 +13443,8 @@ var Human = class {
|
||||||
Object.seal(this.config);
|
Object.seal(this.config);
|
||||||
if (userConfig)
|
if (userConfig)
|
||||||
this.config = mergeDeep(this.config, userConfig);
|
this.config = mergeDeep(this.config, userConfig);
|
||||||
|
this.config.cacheModels = typeof indexedDB !== "undefined";
|
||||||
|
setModelLoadOptions(this.config);
|
||||||
this.tf = tf36;
|
this.tf = tf36;
|
||||||
this.state = "idle";
|
this.state = "idle";
|
||||||
__privateSet(this, _numTensors, 0);
|
__privateSet(this, _numTensors, 0);
|
||||||
|
|
|
@ -190,6 +190,10 @@ export declare interface Config {
|
||||||
* default: `../models/` for browsers and `file://models/` for nodejs
|
* default: `../models/` for browsers and `file://models/` for nodejs
|
||||||
*/
|
*/
|
||||||
modelBasePath: string;
|
modelBasePath: string;
|
||||||
|
/** Cache models in IndexDB on first sucessfull load
|
||||||
|
* default: true if indexdb is available (browsers), false if its not (nodejs)
|
||||||
|
*/
|
||||||
|
cacheModels: boolean;
|
||||||
/** Cache sensitivity
|
/** Cache sensitivity
|
||||||
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
||||||
* - set to 0 to disable caching
|
* - set to 0 to disable caching
|
||||||
|
|
|
@ -152,6 +152,7 @@ function mergeDeep(...objects) {
|
||||||
var config = {
|
var config = {
|
||||||
backend: "",
|
backend: "",
|
||||||
modelBasePath: "",
|
modelBasePath: "",
|
||||||
|
cacheModels: true,
|
||||||
wasmPath: "",
|
wasmPath: "",
|
||||||
debug: true,
|
debug: true,
|
||||||
async: true,
|
async: true,
|
||||||
|
@ -1372,57 +1373,68 @@ var Env = class {
|
||||||
};
|
};
|
||||||
var env = new Env();
|
var env = new Env();
|
||||||
|
|
||||||
|
// src/tfjs/load.ts
|
||||||
|
var tf4 = __toESM(require_tfjs_esm());
|
||||||
|
var options = {
|
||||||
|
cacheModels: false,
|
||||||
|
verbose: true,
|
||||||
|
debug: false,
|
||||||
|
modelBasePath: ""
|
||||||
|
};
|
||||||
|
async function httpHandler(url, init2) {
|
||||||
|
if (options.debug)
|
||||||
|
log("load model fetch:", url, init2);
|
||||||
|
if (typeof fetch === "undefined") {
|
||||||
|
log("error loading model: fetch function is not defined:");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return fetch(url, init2);
|
||||||
|
}
|
||||||
|
function setModelLoadOptions(config3) {
|
||||||
|
options.cacheModels = config3.cacheModels;
|
||||||
|
options.verbose = config3.debug;
|
||||||
|
options.modelBasePath = config3.modelBasePath;
|
||||||
|
}
|
||||||
|
async function loadModel(modelPath) {
|
||||||
|
const modelUrl = join(options.modelBasePath, modelPath || "");
|
||||||
|
const modelPathSegments = modelUrl.split("/");
|
||||||
|
const cachedModelName = "indexeddb://" + modelPathSegments[modelPathSegments.length - 1].replace(".json", "");
|
||||||
|
const cachedModels = await tf4.io.listModels();
|
||||||
|
const modelCached = options.cacheModels && Object.keys(cachedModels).includes(cachedModelName);
|
||||||
|
const model18 = new tf4.GraphModel(modelCached ? cachedModelName : modelUrl, { fetchFunc: (url, init2) => httpHandler(url, init2) });
|
||||||
|
try {
|
||||||
|
model18.findIOHandler();
|
||||||
|
if (options.debug)
|
||||||
|
log("model load handler:", model18.handler);
|
||||||
|
const artifacts = await model18.handler.load();
|
||||||
|
model18.loadSync(artifacts);
|
||||||
|
if (options.verbose)
|
||||||
|
log("load model:", model18["modelUrl"]);
|
||||||
|
} catch (err) {
|
||||||
|
log("error loading model:", modelUrl, err);
|
||||||
|
}
|
||||||
|
if (options.cacheModels && !modelCached) {
|
||||||
|
try {
|
||||||
|
const saveResult = await model18.save(cachedModelName);
|
||||||
|
log("model saved:", cachedModelName, saveResult);
|
||||||
|
} catch (err) {
|
||||||
|
log("error saving model:", modelUrl, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return model18;
|
||||||
|
}
|
||||||
|
|
||||||
// src/human.ts
|
// src/human.ts
|
||||||
var tf36 = __toESM(require_tfjs_esm());
|
var tf36 = __toESM(require_tfjs_esm());
|
||||||
|
|
||||||
// package.json
|
// package.json
|
||||||
var version2 = "2.5.8";
|
var version2 = "2.6.0";
|
||||||
|
|
||||||
// src/tfjs/humangl.ts
|
// src/tfjs/humangl.ts
|
||||||
var tf31 = __toESM(require_tfjs_esm());
|
var tf31 = __toESM(require_tfjs_esm());
|
||||||
|
|
||||||
// src/gear/gear.ts
|
// src/gear/gear.ts
|
||||||
var tf5 = __toESM(require_tfjs_esm());
|
var tf5 = __toESM(require_tfjs_esm());
|
||||||
|
|
||||||
// src/tfjs/load.ts
|
|
||||||
var tf4 = __toESM(require_tfjs_esm());
|
|
||||||
var options = {
|
|
||||||
appName: "human",
|
|
||||||
autoSave: true,
|
|
||||||
verbose: true
|
|
||||||
};
|
|
||||||
async function httpHandler(url, init2) {
|
|
||||||
if (options.fetchFunc)
|
|
||||||
return options.fetchFunc(url, init2);
|
|
||||||
else
|
|
||||||
log("error: fetch function is not defined");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
var tfLoadOptions = {
|
|
||||||
onProgress: (...args) => {
|
|
||||||
if (options.onProgress)
|
|
||||||
options.onProgress(...args);
|
|
||||||
else if (options.verbose)
|
|
||||||
log("load model progress:", ...args);
|
|
||||||
},
|
|
||||||
fetchFunc: (url, init2) => {
|
|
||||||
if (options.verbose)
|
|
||||||
log("load model fetch:", url, init2);
|
|
||||||
if (url.toString().toLowerCase().startsWith("http"))
|
|
||||||
return httpHandler(url, init2);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
async function loadModel2(modelUrl, loadOptions) {
|
|
||||||
if (loadOptions)
|
|
||||||
options = mergeDeep(loadOptions);
|
|
||||||
if (!options.fetchFunc && typeof globalThis.fetch !== "undefined")
|
|
||||||
options.fetchFunc = globalThis.fetch;
|
|
||||||
const model18 = await tf4.loadGraphModel(modelUrl, tfLoadOptions);
|
|
||||||
return model18;
|
|
||||||
}
|
|
||||||
|
|
||||||
// src/gear/gear.ts
|
|
||||||
var model;
|
var model;
|
||||||
var last2 = [];
|
var last2 = [];
|
||||||
var raceNames = ["white", "black", "asian", "indian", "other"];
|
var raceNames = ["white", "black", "asian", "indian", "other"];
|
||||||
|
@ -1433,13 +1445,9 @@ var skipped = Number.MAX_SAFE_INTEGER;
|
||||||
async function load(config3) {
|
async function load(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model = null;
|
model = null;
|
||||||
if (!model) {
|
if (!model)
|
||||||
model = await loadModel2(join(config3.modelBasePath, config3.face["gear"].modelPath));
|
model = await loadModel(config3.face["gear"]);
|
||||||
if (!model || !model["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["gear"].modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model["modelUrl"]);
|
log("cached model:", model["modelUrl"]);
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
@ -1518,16 +1526,10 @@ var skipped2 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load2(config3) {
|
async function load2(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model2 = null;
|
model2 = null;
|
||||||
if (!model2) {
|
if (!model2)
|
||||||
model2 = await loadModel2(join(config3.modelBasePath, config3.face["ssrnet"].modelPathAge));
|
model2 = await loadModel(config3.face["ssrnet"].modelPathAge);
|
||||||
if (!model2 || !model2["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["ssrnet"].modelPathAge);
|
log("cached model:", model2["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model2["modelUrl"]);
|
|
||||||
} else {
|
|
||||||
if (config3.debug)
|
|
||||||
log("cached model:", model2["modelUrl"]);
|
|
||||||
}
|
|
||||||
return model2;
|
return model2;
|
||||||
}
|
}
|
||||||
async function predict2(image24, config3, idx, count2) {
|
async function predict2(image24, config3, idx, count2) {
|
||||||
|
@ -1573,13 +1575,9 @@ var rgb = [0.2989, 0.587, 0.114];
|
||||||
async function load3(config3) {
|
async function load3(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model3 = null;
|
model3 = null;
|
||||||
if (!model3) {
|
if (!model3)
|
||||||
model3 = await loadModel2(join(config3.modelBasePath, config3.face["ssrnet"].modelPathGender));
|
model3 = await loadModel(config3.face["ssrnet"].modelPathGender);
|
||||||
if (!model3 || !model3["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["ssrnet"].modelPathGender);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model3["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model3["modelUrl"]);
|
log("cached model:", model3["modelUrl"]);
|
||||||
return model3;
|
return model3;
|
||||||
}
|
}
|
||||||
|
@ -1630,16 +1628,12 @@ var skipped4 = Number.MAX_SAFE_INTEGER;
|
||||||
var lastCount4 = 0;
|
var lastCount4 = 0;
|
||||||
var lastTime4 = 0;
|
var lastTime4 = 0;
|
||||||
async function load4(config3) {
|
async function load4(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model4 = null;
|
model4 = null;
|
||||||
if (!model4) {
|
if (!model4)
|
||||||
model4 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.antispoof) == null ? void 0 : _a.modelPath) || ""));
|
model4 = await loadModel((_a = config3.face.antispoof) == null ? void 0 : _a.modelPath);
|
||||||
if (!model4 || !model4["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.antispoof) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model4["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model4["modelUrl"]);
|
log("cached model:", model4["modelUrl"]);
|
||||||
return model4;
|
return model4;
|
||||||
}
|
}
|
||||||
|
@ -5128,16 +5122,12 @@ var inputSize = 0;
|
||||||
var inputSizeT = null;
|
var inputSizeT = null;
|
||||||
var size = () => inputSize;
|
var size = () => inputSize;
|
||||||
async function load5(config3) {
|
async function load5(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model5 = null;
|
model5 = null;
|
||||||
if (!model5) {
|
if (!model5)
|
||||||
model5 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.detector) == null ? void 0 : _a.modelPath) || ""));
|
model5 = await loadModel((_a = config3.face.detector) == null ? void 0 : _a.modelPath);
|
||||||
if (!model5 || !model5["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.detector) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model5["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model5["modelUrl"]);
|
log("cached model:", model5["modelUrl"]);
|
||||||
inputSize = model5.inputs[0].shape ? model5.inputs[0].shape[2] : 0;
|
inputSize = model5.inputs[0].shape ? model5.inputs[0].shape[2] : 0;
|
||||||
inputSizeT = tf11.scalar(inputSize, "int32");
|
inputSizeT = tf11.scalar(inputSize, "int32");
|
||||||
|
@ -5370,14 +5360,10 @@ async function loadDetect(config3) {
|
||||||
if (env3.initial)
|
if (env3.initial)
|
||||||
models.detector = null;
|
models.detector = null;
|
||||||
if (!models.detector && config3.body["detector"] && config3.body["detector"]["modelPath"] || "") {
|
if (!models.detector && config3.body["detector"] && config3.body["detector"]["modelPath"] || "") {
|
||||||
models.detector = await loadModel2(join(config3.modelBasePath, config3.body["detector"]["modelPath"] || ""));
|
models.detector = await loadModel(config3.body["detector"]["modelPath"]);
|
||||||
const inputs = Object.values(models.detector.modelSignature["inputs"]);
|
const inputs = Object.values(models.detector.modelSignature["inputs"]);
|
||||||
inputSize3.detector[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize3.detector[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize3.detector[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize3.detector[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models.detector || !models.detector["modelUrl"])
|
|
||||||
log("load model failed:", config3.body["detector"]["modelPath"]);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models.detector["modelUrl"]);
|
|
||||||
} else if (config3.debug && models.detector)
|
} else if (config3.debug && models.detector)
|
||||||
log("cached model:", models.detector["modelUrl"]);
|
log("cached model:", models.detector["modelUrl"]);
|
||||||
await createAnchors();
|
await createAnchors();
|
||||||
|
@ -5387,14 +5373,10 @@ async function loadPose(config3) {
|
||||||
if (env3.initial)
|
if (env3.initial)
|
||||||
models.landmarks = null;
|
models.landmarks = null;
|
||||||
if (!models.landmarks) {
|
if (!models.landmarks) {
|
||||||
models.landmarks = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
models.landmarks = await loadModel(config3.body.modelPath);
|
||||||
const inputs = Object.values(models.landmarks.modelSignature["inputs"]);
|
const inputs = Object.values(models.landmarks.modelSignature["inputs"]);
|
||||||
inputSize3.landmarks[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize3.landmarks[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize3.landmarks[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize3.landmarks[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models.landmarks || !models.landmarks["modelUrl"])
|
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models.landmarks["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models.landmarks["modelUrl"]);
|
log("cached model:", models.landmarks["modelUrl"]);
|
||||||
return models.landmarks;
|
return models.landmarks;
|
||||||
|
@ -5622,13 +5604,9 @@ async function load6(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model6 = null;
|
model6 = null;
|
||||||
if (!model6) {
|
if (!model6) {
|
||||||
model6 = await loadModel2(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model6 = await loadModel(config3.object.modelPath);
|
||||||
const inputs = Object.values(model6.modelSignature["inputs"]);
|
const inputs = Object.values(model6.modelSignature["inputs"]);
|
||||||
inputSize4 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize4 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!model6 || !model6["modelUrl"])
|
|
||||||
log("load model failed:", config3.object.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model6["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model6["modelUrl"]);
|
log("cached model:", model6["modelUrl"]);
|
||||||
return model6;
|
return model6;
|
||||||
|
@ -5738,13 +5716,9 @@ var skipped7 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load7(config3) {
|
async function load7(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model7 = null;
|
model7 = null;
|
||||||
if (!model7) {
|
if (!model7)
|
||||||
model7 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model7 = await loadModel(config3.body.modelPath);
|
||||||
if (!model7 || !model7["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model7["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model7["modelUrl"]);
|
log("cached model:", model7["modelUrl"]);
|
||||||
return model7;
|
return model7;
|
||||||
}
|
}
|
||||||
|
@ -5853,16 +5827,12 @@ var lastCount5 = 0;
|
||||||
var lastTime8 = 0;
|
var lastTime8 = 0;
|
||||||
var skipped8 = Number.MAX_SAFE_INTEGER;
|
var skipped8 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load8(config3) {
|
async function load8(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model8 = null;
|
model8 = null;
|
||||||
if (!model8) {
|
if (!model8)
|
||||||
model8 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.emotion) == null ? void 0 : _a.modelPath) || ""));
|
model8 = await loadModel((_a = config3.face.emotion) == null ? void 0 : _a.modelPath);
|
||||||
if (!model8 || !model8["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.emotion) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model8["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model8["modelUrl"]);
|
log("cached model:", model8["modelUrl"]);
|
||||||
return model8;
|
return model8;
|
||||||
}
|
}
|
||||||
|
@ -5912,17 +5882,12 @@ var lastCount6 = 0;
|
||||||
var lastTime9 = 0;
|
var lastTime9 = 0;
|
||||||
var skipped9 = Number.MAX_SAFE_INTEGER;
|
var skipped9 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load9(config3) {
|
async function load9(config3) {
|
||||||
const modelUrl = join(config3.modelBasePath, config3.face["mobilefacenet"].modelPath);
|
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model9 = null;
|
model9 = null;
|
||||||
if (!model9) {
|
if (!model9)
|
||||||
model9 = await loadModel2(modelUrl);
|
model9 = await loadModel(config3.face["mobilefacenet"].modelPath);
|
||||||
if (!model9)
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.face["mobilefacenet"].modelPath);
|
log("cached model:", model9["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", modelUrl);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", modelUrl);
|
|
||||||
return model9;
|
return model9;
|
||||||
}
|
}
|
||||||
async function predict9(input, config3, idx, count2) {
|
async function predict9(input, config3, idx, count2) {
|
||||||
|
@ -5973,16 +5938,12 @@ var irisLandmarks = {
|
||||||
numCoordinates: 76
|
numCoordinates: 76
|
||||||
};
|
};
|
||||||
async function load10(config3) {
|
async function load10(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model10 = null;
|
model10 = null;
|
||||||
if (!model10) {
|
if (!model10)
|
||||||
model10 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.iris) == null ? void 0 : _a.modelPath) || ""));
|
model10 = await loadModel((_a = config3.face.iris) == null ? void 0 : _a.modelPath);
|
||||||
if (!model10 || !model10["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.iris) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model10["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model10["modelUrl"]);
|
log("cached model:", model10["modelUrl"]);
|
||||||
inputSize5 = model10.inputs[0].shape ? model10.inputs[0].shape[2] : 0;
|
inputSize5 = model10.inputs[0].shape ? model10.inputs[0].shape[2] : 0;
|
||||||
if (inputSize5 === -1)
|
if (inputSize5 === -1)
|
||||||
|
@ -6178,16 +6139,12 @@ async function predict10(input, config3) {
|
||||||
return faces;
|
return faces;
|
||||||
}
|
}
|
||||||
async function load11(config3) {
|
async function load11(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model11 = null;
|
model11 = null;
|
||||||
if (!model11) {
|
if (!model11)
|
||||||
model11 = await loadModel2(join(config3.modelBasePath, ((_a = config3.face.mesh) == null ? void 0 : _a.modelPath) || ""));
|
model11 = await loadModel((_a = config3.face.mesh) == null ? void 0 : _a.modelPath);
|
||||||
if (!model11 || !model11["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.mesh) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model11["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model11["modelUrl"]);
|
log("cached model:", model11["modelUrl"]);
|
||||||
inputSize6 = model11.inputs[0].shape ? model11.inputs[0].shape[2] : 0;
|
inputSize6 = model11.inputs[0].shape ? model11.inputs[0].shape[2] : 0;
|
||||||
return model11;
|
return model11;
|
||||||
|
@ -6203,18 +6160,13 @@ var lastTime10 = 0;
|
||||||
var lastCount7 = 0;
|
var lastCount7 = 0;
|
||||||
var skipped10 = Number.MAX_SAFE_INTEGER;
|
var skipped10 = Number.MAX_SAFE_INTEGER;
|
||||||
async function load12(config3) {
|
async function load12(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
const modelUrl = join(config3.modelBasePath, ((_a = config3.face.description) == null ? void 0 : _a.modelPath) || "");
|
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model12 = null;
|
model12 = null;
|
||||||
if (!model12) {
|
if (!model12)
|
||||||
model12 = await loadModel2(modelUrl);
|
model12 = await loadModel((_a = config3.face.description) == null ? void 0 : _a.modelPath);
|
||||||
if (!model12)
|
else if (config3.debug)
|
||||||
log("load model failed:", ((_b = config3.face.description) == null ? void 0 : _b.modelPath) || "");
|
log("cached model:", model12["modelUrl"]);
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", modelUrl);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", modelUrl);
|
|
||||||
return model12;
|
return model12;
|
||||||
}
|
}
|
||||||
function enhance(input) {
|
function enhance(input) {
|
||||||
|
@ -10036,26 +9988,16 @@ async function predict12(input, config3) {
|
||||||
return hands;
|
return hands;
|
||||||
}
|
}
|
||||||
async function load13(config3) {
|
async function load13(config3) {
|
||||||
var _a, _b, _c, _d;
|
var _a, _b;
|
||||||
if (env.initial) {
|
if (env.initial) {
|
||||||
handDetectorModel = null;
|
handDetectorModel = null;
|
||||||
handPoseModel = null;
|
handPoseModel = null;
|
||||||
}
|
}
|
||||||
if (!handDetectorModel || !handPoseModel) {
|
if (!handDetectorModel || !handPoseModel) {
|
||||||
[handDetectorModel, handPoseModel] = await Promise.all([
|
[handDetectorModel, handPoseModel] = await Promise.all([
|
||||||
config3.hand.enabled ? loadModel2(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || "")) : null,
|
config3.hand.enabled ? loadModel((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) : null,
|
||||||
config3.hand.landmarks ? loadModel2(join(config3.modelBasePath, ((_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath) || "")) : null
|
config3.hand.landmarks ? loadModel((_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath) : null
|
||||||
]);
|
]);
|
||||||
if (config3.hand.enabled) {
|
|
||||||
if (!handDetectorModel || !handDetectorModel["modelUrl"])
|
|
||||||
log("load model failed:", ((_c = config3.hand.detector) == null ? void 0 : _c.modelPath) || "");
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", handDetectorModel["modelUrl"]);
|
|
||||||
if (!handPoseModel || !handPoseModel["modelUrl"])
|
|
||||||
log("load model failed:", ((_d = config3.hand.skeleton) == null ? void 0 : _d.modelPath) || "");
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", handPoseModel["modelUrl"]);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (config3.debug)
|
if (config3.debug)
|
||||||
log("cached model:", handDetectorModel["modelUrl"]);
|
log("cached model:", handDetectorModel["modelUrl"]);
|
||||||
|
@ -10094,36 +10036,28 @@ var fingerMap = {
|
||||||
palm: [0, 17, 13, 9, 5, 1, 0]
|
palm: [0, 17, 13, 9, 5, 1, 0]
|
||||||
};
|
};
|
||||||
async function loadDetect2(config3) {
|
async function loadDetect2(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
models2[0] = null;
|
models2[0] = null;
|
||||||
if (!models2[0]) {
|
if (!models2[0]) {
|
||||||
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
||||||
models2[0] = await loadModel2(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""));
|
models2[0] = await loadModel((_a = config3.hand.detector) == null ? void 0 : _a.modelPath);
|
||||||
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
||||||
inputSize7[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize7[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize7[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize7[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models2[0] || !models2[0]["modelUrl"])
|
|
||||||
log("load model failed:", (_b = config3.hand.detector) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models2[0]["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models2[0]["modelUrl"]);
|
log("cached model:", models2[0]["modelUrl"]);
|
||||||
return models2[0];
|
return models2[0];
|
||||||
}
|
}
|
||||||
async function loadSkeleton(config3) {
|
async function loadSkeleton(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
models2[1] = null;
|
models2[1] = null;
|
||||||
if (!models2[1]) {
|
if (!models2[1]) {
|
||||||
models2[1] = await loadModel2(join(config3.modelBasePath, ((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath) || ""));
|
models2[1] = await loadModel((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath);
|
||||||
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
||||||
inputSize7[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize7[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize7[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize7[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models2[1] || !models2[1]["modelUrl"])
|
|
||||||
log("load model failed:", (_b = config3.hand.skeleton) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", models2[1]["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", models2[1]["modelUrl"]);
|
log("cached model:", models2[1]["modelUrl"]);
|
||||||
return models2[1];
|
return models2[1];
|
||||||
|
@ -10261,16 +10195,12 @@ var skipped12 = Number.MAX_SAFE_INTEGER;
|
||||||
var lastCount8 = 0;
|
var lastCount8 = 0;
|
||||||
var lastTime13 = 0;
|
var lastTime13 = 0;
|
||||||
async function load14(config3) {
|
async function load14(config3) {
|
||||||
var _a, _b;
|
var _a;
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model13 = null;
|
model13 = null;
|
||||||
if (!model13) {
|
if (!model13)
|
||||||
model13 = await loadModel(join(config3.modelBasePath, ((_a = config3.face.liveness) == null ? void 0 : _a.modelPath) || ""));
|
model13 = await loadModel((_a = config3.face.liveness) == null ? void 0 : _a.modelPath);
|
||||||
if (!model13 || !model13["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", (_b = config3.face.liveness) == null ? void 0 : _b.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model13["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model13["modelUrl"]);
|
log("cached model:", model13["modelUrl"]);
|
||||||
return model13;
|
return model13;
|
||||||
}
|
}
|
||||||
|
@ -10470,11 +10400,7 @@ async function load15(config3) {
|
||||||
model14 = null;
|
model14 = null;
|
||||||
if (!model14) {
|
if (!model14) {
|
||||||
fakeOps(["size"], config3);
|
fakeOps(["size"], config3);
|
||||||
model14 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model14 = await loadModel(config3.body.modelPath);
|
||||||
if (!model14 || !model14["modelUrl"])
|
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model14["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model14["modelUrl"]);
|
log("cached model:", model14["modelUrl"]);
|
||||||
inputSize8 = model14.inputs[0].shape ? model14.inputs[0].shape[2] : 0;
|
inputSize8 = model14.inputs[0].shape ? model14.inputs[0].shape[2] : 0;
|
||||||
|
@ -10599,13 +10525,9 @@ var inputSize9 = 0;
|
||||||
var scaleBox = 2.5;
|
var scaleBox = 2.5;
|
||||||
async function load16(config3) {
|
async function load16(config3) {
|
||||||
if (!model15 || env.initial) {
|
if (!model15 || env.initial) {
|
||||||
model15 = await loadModel2(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model15 = await loadModel(config3.object.modelPath);
|
||||||
const inputs = Object.values(model15.modelSignature["inputs"]);
|
const inputs = Object.values(model15.modelSignature["inputs"]);
|
||||||
inputSize9 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize9 = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!model15 || !model15["modelUrl"])
|
|
||||||
log("load model failed:", config3.object.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model15["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
} else if (config3.debug)
|
||||||
log("cached model:", model15["modelUrl"]);
|
log("cached model:", model15["modelUrl"]);
|
||||||
return model15;
|
return model15;
|
||||||
|
@ -11031,13 +10953,9 @@ async function predict17(input, config3) {
|
||||||
return scaled;
|
return scaled;
|
||||||
}
|
}
|
||||||
async function load17(config3) {
|
async function load17(config3) {
|
||||||
if (!model16 || env.initial) {
|
if (!model16 || env.initial)
|
||||||
model16 = await loadModel2(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model16 = await loadModel(config3.body.modelPath);
|
||||||
if (!model16 || !model16["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.body.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model16["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model16["modelUrl"]);
|
log("cached model:", model16["modelUrl"]);
|
||||||
return model16;
|
return model16;
|
||||||
}
|
}
|
||||||
|
@ -11047,13 +10965,9 @@ var tf30 = __toESM(require_tfjs_esm());
|
||||||
var model17;
|
var model17;
|
||||||
var busy = false;
|
var busy = false;
|
||||||
async function load18(config3) {
|
async function load18(config3) {
|
||||||
if (!model17 || env.initial) {
|
if (!model17 || env.initial)
|
||||||
model17 = await loadModel2(join(config3.modelBasePath, config3.segmentation.modelPath || ""));
|
model17 = await loadModel(config3.segmentation.modelPath);
|
||||||
if (!model17 || !model17["modelUrl"])
|
else if (config3.debug)
|
||||||
log("load model failed:", config3.segmentation.modelPath);
|
|
||||||
else if (config3.debug)
|
|
||||||
log("load model:", model17["modelUrl"]);
|
|
||||||
} else if (config3.debug)
|
|
||||||
log("cached model:", model17["modelUrl"]);
|
log("cached model:", model17["modelUrl"]);
|
||||||
return model17;
|
return model17;
|
||||||
}
|
}
|
||||||
|
@ -13528,6 +13442,8 @@ var Human = class {
|
||||||
Object.seal(this.config);
|
Object.seal(this.config);
|
||||||
if (userConfig)
|
if (userConfig)
|
||||||
this.config = mergeDeep(this.config, userConfig);
|
this.config = mergeDeep(this.config, userConfig);
|
||||||
|
this.config.cacheModels = typeof indexedDB !== "undefined";
|
||||||
|
setModelLoadOptions(this.config);
|
||||||
this.tf = tf36;
|
this.tf = tf36;
|
||||||
this.state = "idle";
|
this.state = "idle";
|
||||||
__privateSet(this, _numTensors, 0);
|
__privateSet(this, _numTensors, 0);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@vladmandic/human",
|
"name": "@vladmandic/human",
|
||||||
"version": "2.5.8",
|
"version": "2.6.0",
|
||||||
"description": "Human: AI-powered 3D Face Detection & Rotation Tracking, Face Description & Recognition, Body Pose Tracking, 3D Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction, Gesture Recognition",
|
"description": "Human: AI-powered 3D Face Detection & Rotation Tracking, Face Description & Recognition, Body Pose Tracking, 3D Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction, Gesture Recognition",
|
||||||
"sideEffects": false,
|
"sideEffects": false,
|
||||||
"main": "dist/human.node.js",
|
"main": "dist/human.node.js",
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
"@tensorflow/tfjs-layers": "^3.13.0",
|
"@tensorflow/tfjs-layers": "^3.13.0",
|
||||||
"@tensorflow/tfjs-node": "^3.13.0",
|
"@tensorflow/tfjs-node": "^3.13.0",
|
||||||
"@tensorflow/tfjs-node-gpu": "^3.13.0",
|
"@tensorflow/tfjs-node-gpu": "^3.13.0",
|
||||||
"@types/node": "^17.0.8",
|
"@types/node": "^17.0.9",
|
||||||
"@types/offscreencanvas": "^2019.6.4",
|
"@types/offscreencanvas": "^2019.6.4",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.9.1",
|
"@typescript-eslint/eslint-plugin": "^5.9.1",
|
||||||
"@typescript-eslint/parser": "^5.9.1",
|
"@typescript-eslint/parser": "^5.9.1",
|
||||||
|
@ -75,14 +75,14 @@
|
||||||
"canvas": "^2.8.0",
|
"canvas": "^2.8.0",
|
||||||
"dayjs": "^1.10.7",
|
"dayjs": "^1.10.7",
|
||||||
"esbuild": "^0.14.11",
|
"esbuild": "^0.14.11",
|
||||||
"eslint": "8.6.0",
|
"eslint": "8.7.0",
|
||||||
"eslint-config-airbnb-base": "^15.0.0",
|
"eslint-config-airbnb-base": "^15.0.0",
|
||||||
"eslint-plugin-html": "^6.2.0",
|
"eslint-plugin-html": "^6.2.0",
|
||||||
"eslint-plugin-import": "^2.25.4",
|
"eslint-plugin-import": "^2.25.4",
|
||||||
"eslint-plugin-json": "^3.1.0",
|
"eslint-plugin-json": "^3.1.0",
|
||||||
"eslint-plugin-node": "^11.1.0",
|
"eslint-plugin-node": "^11.1.0",
|
||||||
"eslint-plugin-promise": "^6.0.0",
|
"eslint-plugin-promise": "^6.0.0",
|
||||||
"node-fetch": "^3.1.0",
|
"node-fetch": "^3.1.1",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"seedrandom": "^3.0.5",
|
"seedrandom": "^3.0.5",
|
||||||
"tslib": "^2.3.1",
|
"tslib": "^2.3.1",
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
import { constants } from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import type { BodyKeypoint, BodyResult, BodyLandmark, Box, Point, BodyAnnotation } from '../result';
|
import type { BodyKeypoint, BodyResult, BodyLandmark, Box, Point, BodyAnnotation } from '../result';
|
||||||
import type { GraphModel, Tensor } from '../tfjs/types';
|
import type { GraphModel, Tensor } from '../tfjs/types';
|
||||||
import type { Config } from '../config';
|
import type { Config } from '../config';
|
||||||
|
@ -33,12 +33,10 @@ const sigmoid = (x) => (1 - (1 / (1 + Math.exp(x))));
|
||||||
export async function loadDetect(config: Config): Promise<GraphModel> {
|
export async function loadDetect(config: Config): Promise<GraphModel> {
|
||||||
if (env.initial) models.detector = null;
|
if (env.initial) models.detector = null;
|
||||||
if (!models.detector && config.body['detector'] && config.body['detector']['modelPath'] || '') {
|
if (!models.detector && config.body['detector'] && config.body['detector']['modelPath'] || '') {
|
||||||
models.detector = await loadModel(join(config.modelBasePath, config.body['detector']['modelPath'] || '')) as unknown as GraphModel;
|
models.detector = await loadModel(config.body['detector']['modelPath']);
|
||||||
const inputs = Object.values(models.detector.modelSignature['inputs']);
|
const inputs = Object.values(models.detector.modelSignature['inputs']);
|
||||||
inputSize.detector[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize.detector[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize.detector[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize.detector[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models.detector || !models.detector['modelUrl']) log('load model failed:', config.body['detector']['modelPath']);
|
|
||||||
else if (config.debug) log('load model:', models.detector['modelUrl']);
|
|
||||||
} else if (config.debug && models.detector) log('cached model:', models.detector['modelUrl']);
|
} else if (config.debug && models.detector) log('cached model:', models.detector['modelUrl']);
|
||||||
await detect.createAnchors();
|
await detect.createAnchors();
|
||||||
return models.detector as GraphModel;
|
return models.detector as GraphModel;
|
||||||
|
@ -47,12 +45,10 @@ export async function loadDetect(config: Config): Promise<GraphModel> {
|
||||||
export async function loadPose(config: Config): Promise<GraphModel> {
|
export async function loadPose(config: Config): Promise<GraphModel> {
|
||||||
if (env.initial) models.landmarks = null;
|
if (env.initial) models.landmarks = null;
|
||||||
if (!models.landmarks) {
|
if (!models.landmarks) {
|
||||||
models.landmarks = await loadModel(join(config.modelBasePath, config.body.modelPath || '')) as unknown as GraphModel;
|
models.landmarks = await loadModel(config.body.modelPath);
|
||||||
const inputs = Object.values(models.landmarks.modelSignature['inputs']);
|
const inputs = Object.values(models.landmarks.modelSignature['inputs']);
|
||||||
inputSize.landmarks[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize.landmarks[0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize.landmarks[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize.landmarks[1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models.landmarks || !models.landmarks['modelUrl']) log('load model failed:', config.body.modelPath);
|
|
||||||
else if (config.debug) log('load model:', models.landmarks['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', models.landmarks['modelUrl']);
|
} else if (config.debug) log('cached model:', models.landmarks['modelUrl']);
|
||||||
return models.landmarks;
|
return models.landmarks;
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,27 +85,3 @@ export async function decode(boxesTensor: Tensor, logitsTensor: Tensor, config:
|
||||||
Object.keys(t).forEach((tensor) => tf.dispose(t[tensor]));
|
Object.keys(t).forEach((tensor) => tf.dispose(t[tensor]));
|
||||||
return detected;
|
return detected;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
const humanConfig: Partial<Config> = {
|
|
||||||
warmup: 'full' as const,
|
|
||||||
modelBasePath: '../../models',
|
|
||||||
cacheSensitivity: 0,
|
|
||||||
filter: { enabled: false },
|
|
||||||
face: { enabled: false },
|
|
||||||
hand: { enabled: false },
|
|
||||||
object: { enabled: false },
|
|
||||||
gesture: { enabled: false },
|
|
||||||
body: {
|
|
||||||
enabled: true,
|
|
||||||
minConfidence: 0.1,
|
|
||||||
modelPath: 'blazepose/blazepose-full.json',
|
|
||||||
detector: {
|
|
||||||
enabled: false,
|
|
||||||
modelPath: 'blazepose/blazepose-detector.json',
|
|
||||||
minConfidence: 0.1,
|
|
||||||
iouThreshold: 0.1,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* Based on: [**EfficientPose**](https://github.com/daniegr/EfficientPose)
|
* Based on: [**EfficientPose**](https://github.com/daniegr/EfficientPose)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
import * as coords from './efficientposecoords';
|
import * as coords from './efficientposecoords';
|
||||||
|
@ -26,11 +26,8 @@ let skipped = Number.MAX_SAFE_INTEGER;
|
||||||
|
|
||||||
export async function load(config: Config): Promise<GraphModel> {
|
export async function load(config: Config): Promise<GraphModel> {
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) model = await loadModel(config.body.modelPath);
|
||||||
model = await loadModel(join(config.modelBasePath, config.body.modelPath || '')) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.body.modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* Based on: [**MoveNet**](https://blog.tensorflow.org/2021/05/next-generation-pose-detection-with-movenet-and-tensorflowjs.html)
|
* Based on: [**MoveNet**](https://blog.tensorflow.org/2021/05/next-generation-pose-detection-with-movenet-and-tensorflowjs.html)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import * as box from '../util/box';
|
import * as box from '../util/box';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as coords from './movenetcoords';
|
import * as coords from './movenetcoords';
|
||||||
|
@ -35,9 +35,7 @@ export async function load(config: Config): Promise<GraphModel> {
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) {
|
||||||
fakeOps(['size'], config);
|
fakeOps(['size'], config);
|
||||||
model = await loadModel(join(config.modelBasePath, config.body.modelPath || '')) as unknown as GraphModel;
|
model = await loadModel(config.body.modelPath);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.body.modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
} else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
inputSize = model.inputs[0].shape ? model.inputs[0].shape[2] : 0;
|
inputSize = model.inputs[0].shape ? model.inputs[0].shape[2] : 0;
|
||||||
if (inputSize < 64) inputSize = 256;
|
if (inputSize < 64) inputSize = 256;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* Based on: [**PoseNet**](https://medium.com/tensorflow/real-time-human-pose-estimation-in-the-browser-with-tensorflow-js-7dd0bc881cd5)
|
* Based on: [**PoseNet**](https://medium.com/tensorflow/real-time-human-pose-estimation-in-the-browser-with-tensorflow-js-7dd0bc881cd5)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join } from '../util/util';
|
import { log } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
import type { BodyResult, BodyLandmark, Box } from '../result';
|
import type { BodyResult, BodyLandmark, Box } from '../result';
|
||||||
|
@ -179,10 +179,7 @@ export async function predict(input: Tensor, config: Config): Promise<BodyResult
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function load(config: Config): Promise<GraphModel> {
|
export async function load(config: Config): Promise<GraphModel> {
|
||||||
if (!model || env.initial) {
|
if (!model || env.initial) model = await loadModel(config.body.modelPath);
|
||||||
model = await loadModel(join(config.modelBasePath, config.body.modelPath || '')) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.body.modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
|
@ -248,6 +248,11 @@ export interface Config {
|
||||||
*/
|
*/
|
||||||
modelBasePath: string,
|
modelBasePath: string,
|
||||||
|
|
||||||
|
/** Cache models in IndexDB on first sucessfull load
|
||||||
|
* default: true if indexdb is available (browsers), false if its not (nodejs)
|
||||||
|
*/
|
||||||
|
cacheModels: boolean,
|
||||||
|
|
||||||
/** Cache sensitivity
|
/** Cache sensitivity
|
||||||
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
||||||
* - set to 0 to disable caching
|
* - set to 0 to disable caching
|
||||||
|
@ -288,6 +293,7 @@ export interface Config {
|
||||||
const config: Config = {
|
const config: Config = {
|
||||||
backend: '',
|
backend: '',
|
||||||
modelBasePath: '',
|
modelBasePath: '',
|
||||||
|
cacheModels: true,
|
||||||
wasmPath: '',
|
wasmPath: '',
|
||||||
debug: true,
|
debug: true,
|
||||||
async: true,
|
async: true,
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* Anti-spoofing model implementation
|
* Anti-spoofing model implementation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import type { Config } from '../config';
|
import type { Config } from '../config';
|
||||||
import type { GraphModel, Tensor } from '../tfjs/types';
|
import type { GraphModel, Tensor } from '../tfjs/types';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
|
@ -17,11 +17,8 @@ let lastTime = 0;
|
||||||
|
|
||||||
export async function load(config: Config): Promise<GraphModel> {
|
export async function load(config: Config): Promise<GraphModel> {
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) model = await loadModel(config.face.antispoof?.modelPath);
|
||||||
model = await loadModel(join(config.modelBasePath, config.face.antispoof?.modelPath || '')) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.face.antispoof?.modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* See `facemesh.ts` for entry point
|
* See `facemesh.ts` for entry point
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join } from '../util/util';
|
import { log } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as util from './facemeshutil';
|
import * as util from './facemeshutil';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
|
@ -26,11 +26,8 @@ export const size = () => inputSize;
|
||||||
|
|
||||||
export async function load(config: Config): Promise<GraphModel> {
|
export async function load(config: Config): Promise<GraphModel> {
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) model = await loadModel(config.face.detector?.modelPath);
|
||||||
model = await loadModel(join(config.modelBasePath, config.face.detector?.modelPath || '')) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.face.detector?.modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
|
||||||
inputSize = model.inputs[0].shape ? model.inputs[0].shape[2] : 0;
|
inputSize = model.inputs[0].shape ? model.inputs[0].shape[2] : 0;
|
||||||
inputSizeT = tf.scalar(inputSize, 'int32') as Tensor;
|
inputSizeT = tf.scalar(inputSize, 'int32') as Tensor;
|
||||||
anchors = tf.tensor2d(util.generateAnchors(inputSize)) as Tensor;
|
anchors = tf.tensor2d(util.generateAnchors(inputSize)) as Tensor;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
* - Eye Iris Details: [**MediaPipe Iris**](https://drive.google.com/file/d/1bsWbokp9AklH2ANjCfmjqEzzxO1CNbMu/view)
|
* - Eye Iris Details: [**MediaPipe Iris**](https://drive.google.com/file/d/1bsWbokp9AklH2ANjCfmjqEzzxO1CNbMu/view)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as blazeface from './blazeface';
|
import * as blazeface from './blazeface';
|
||||||
|
@ -111,11 +111,8 @@ export async function predict(input: Tensor, config: Config): Promise<FaceResult
|
||||||
|
|
||||||
export async function load(config: Config): Promise<GraphModel> {
|
export async function load(config: Config): Promise<GraphModel> {
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) model = await loadModel(config.face.mesh?.modelPath);
|
||||||
model = await loadModel(join(config.modelBasePath, config.face.mesh?.modelPath || '')) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.face.mesh?.modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
|
||||||
inputSize = model.inputs[0].shape ? model.inputs[0].shape[2] : 0;
|
inputSize = model.inputs[0].shape ? model.inputs[0].shape[2] : 0;
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
* Based on: [**HSE-FaceRes**](https://github.com/HSE-asavchenko/HSE_FaceRec_tf)
|
* Based on: [**HSE-FaceRes**](https://github.com/HSE-asavchenko/HSE_FaceRec_tf)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
|
@ -31,13 +31,9 @@ let lastCount = 0;
|
||||||
let skipped = Number.MAX_SAFE_INTEGER;
|
let skipped = Number.MAX_SAFE_INTEGER;
|
||||||
|
|
||||||
export async function load(config: Config): Promise<GraphModel> {
|
export async function load(config: Config): Promise<GraphModel> {
|
||||||
const modelUrl = join(config.modelBasePath, config.face.description?.modelPath || '');
|
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) model = await loadModel(config.face.description?.modelPath);
|
||||||
model = await loadModel(modelUrl) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model) log('load model failed:', config.face.description?.modelPath || '');
|
|
||||||
else if (config.debug) log('load model:', modelUrl);
|
|
||||||
} else if (config.debug) log('cached model:', modelUrl);
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ import * as util from './facemeshutil';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import type { Tensor, GraphModel } from '../tfjs/types';
|
import type { Tensor, GraphModel } from '../tfjs/types';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
import { log, join } from '../util/util';
|
import { log } from '../util/util';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
import type { Config } from '../config';
|
import type { Config } from '../config';
|
||||||
import type { Point } from '../result';
|
import type { Point } from '../result';
|
||||||
|
@ -30,11 +30,8 @@ const irisLandmarks = {
|
||||||
|
|
||||||
export async function load(config: Config): Promise<GraphModel> {
|
export async function load(config: Config): Promise<GraphModel> {
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) model = await loadModel(config.face.iris?.modelPath);
|
||||||
model = await loadModel(join(config.modelBasePath, config.face.iris?.modelPath || ''));
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.face.iris?.modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
|
||||||
inputSize = model.inputs[0].shape ? model.inputs[0].shape[2] : 0;
|
inputSize = model.inputs[0].shape ? model.inputs[0].shape[2] : 0;
|
||||||
if (inputSize === -1) inputSize = 64;
|
if (inputSize === -1) inputSize = 64;
|
||||||
return model;
|
return model;
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
* Anti-spoofing model implementation
|
* Anti-spoofing model implementation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
|
import { loadModel } from '../tfjs/load';
|
||||||
import type { Config } from '../config';
|
import type { Config } from '../config';
|
||||||
import type { GraphModel, Tensor } from '../tfjs/types';
|
import type { GraphModel, Tensor } from '../tfjs/types';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
|
@ -16,11 +17,8 @@ let lastTime = 0;
|
||||||
|
|
||||||
export async function load(config: Config): Promise<GraphModel> {
|
export async function load(config: Config): Promise<GraphModel> {
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) model = await loadModel(config.face.liveness?.modelPath);
|
||||||
model = await loadModel(join(config.modelBasePath, config.face.liveness?.modelPath || '')) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.face.liveness?.modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* Obsolete and replaced by `faceres` that performs age/gender/descriptor analysis
|
* Obsolete and replaced by `faceres` that performs age/gender/descriptor analysis
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
import type { Tensor, GraphModel } from '../tfjs/types';
|
import type { Tensor, GraphModel } from '../tfjs/types';
|
||||||
|
@ -20,13 +20,9 @@ let lastTime = 0;
|
||||||
let skipped = Number.MAX_SAFE_INTEGER;
|
let skipped = Number.MAX_SAFE_INTEGER;
|
||||||
|
|
||||||
export async function load(config: Config): Promise<GraphModel> {
|
export async function load(config: Config): Promise<GraphModel> {
|
||||||
const modelUrl = join(config.modelBasePath, config.face['mobilefacenet'].modelPath);
|
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) model = await loadModel(config.face['mobilefacenet'].modelPath);
|
||||||
model = await loadModel(modelUrl) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model) log('load model failed:', config.face['mobilefacenet'].modelPath);
|
|
||||||
else if (config.debug) log('load model:', modelUrl);
|
|
||||||
} else if (config.debug) log('cached model:', modelUrl);
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Emotion } from '../result';
|
import type { Emotion } from '../result';
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import type { Config } from '../config';
|
import type { Config } from '../config';
|
||||||
import type { GraphModel, Tensor } from '../tfjs/types';
|
import type { GraphModel, Tensor } from '../tfjs/types';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
|
@ -22,11 +22,8 @@ let skipped = Number.MAX_SAFE_INTEGER;
|
||||||
|
|
||||||
export async function load(config: Config): Promise<GraphModel> {
|
export async function load(config: Config): Promise<GraphModel> {
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) model = await loadModel(config.face.emotion?.modelPath);
|
||||||
model = await loadModel(join(config.modelBasePath, config.face.emotion?.modelPath || '')) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.face.emotion?.modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* Based on: [**GEAR Predictor**](https://github.com/Udolf15/GEAR-Predictor)
|
* Based on: [**GEAR Predictor**](https://github.com/Udolf15/GEAR-Predictor)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
import type { Gender, Race } from '../result';
|
import type { Gender, Race } from '../result';
|
||||||
|
@ -24,11 +24,8 @@ let skipped = Number.MAX_SAFE_INTEGER;
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
export async function load(config: Config) {
|
export async function load(config: Config) {
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) model = await loadModel(config.face['gear']);
|
||||||
model = await loadModel(join(config.modelBasePath, config.face['gear'].modelPath)) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.face['gear'].modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* Based on: [**SSR-Net**](https://github.com/shamangary/SSR-Net)
|
* Based on: [**SSR-Net**](https://github.com/shamangary/SSR-Net)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
|
@ -21,13 +21,8 @@ let skipped = Number.MAX_SAFE_INTEGER;
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
export async function load(config: Config) {
|
export async function load(config: Config) {
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) model = await loadModel(config.face['ssrnet'].modelPathAge);
|
||||||
model = await loadModel(join(config.modelBasePath, config.face['ssrnet'].modelPathAge)) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.face['ssrnet'].modelPathAge);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else {
|
|
||||||
if (config.debug) log('cached model:', model['modelUrl']);
|
|
||||||
}
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* Based on: [**SSR-Net**](https://github.com/shamangary/SSR-Net)
|
* Based on: [**SSR-Net**](https://github.com/shamangary/SSR-Net)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
import { constants } from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
|
@ -25,11 +25,8 @@ const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
export async function load(config: Config | any) {
|
export async function load(config: Config | any) {
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) model = await loadModel(config.face['ssrnet'].modelPathGender);
|
||||||
model = await loadModel(join(config.modelBasePath, config.face['ssrnet'].modelPathGender)) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.face['ssrnet'].modelPathGender);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* Based on: [**MediaPipe HandPose**](https://drive.google.com/file/d/1sv4sSb9BSNVZhLzxXJ0jBv9DqD-4jnAz/view)
|
* Based on: [**MediaPipe HandPose**](https://drive.google.com/file/d/1sv4sSb9BSNVZhLzxXJ0jBv9DqD-4jnAz/view)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join } from '../util/util';
|
import { log } from '../util/util';
|
||||||
import * as handdetector from './handposedetector';
|
import * as handdetector from './handposedetector';
|
||||||
import * as handpipeline from './handposepipeline';
|
import * as handpipeline from './handposepipeline';
|
||||||
import * as fingerPose from './fingerpose';
|
import * as fingerPose from './fingerpose';
|
||||||
|
@ -89,15 +89,9 @@ export async function load(config: Config): Promise<[GraphModel | null, GraphMod
|
||||||
}
|
}
|
||||||
if (!handDetectorModel || !handPoseModel) {
|
if (!handDetectorModel || !handPoseModel) {
|
||||||
[handDetectorModel, handPoseModel] = await Promise.all([
|
[handDetectorModel, handPoseModel] = await Promise.all([
|
||||||
config.hand.enabled ? loadModel(join(config.modelBasePath, config.hand.detector?.modelPath || '')) as unknown as GraphModel : null,
|
config.hand.enabled ? loadModel(config.hand.detector?.modelPath) : null,
|
||||||
config.hand.landmarks ? loadModel(join(config.modelBasePath, config.hand.skeleton?.modelPath || '')) as unknown as GraphModel : null,
|
config.hand.landmarks ? loadModel(config.hand.skeleton?.modelPath) : null,
|
||||||
]);
|
]);
|
||||||
if (config.hand.enabled) {
|
|
||||||
if (!handDetectorModel || !handDetectorModel['modelUrl']) log('load model failed:', config.hand.detector?.modelPath || '');
|
|
||||||
else if (config.debug) log('load model:', handDetectorModel['modelUrl']);
|
|
||||||
if (!handPoseModel || !handPoseModel['modelUrl']) log('load model failed:', config.hand.skeleton?.modelPath || '');
|
|
||||||
else if (config.debug) log('load model:', handPoseModel['modelUrl']);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (config.debug) log('cached model:', handDetectorModel['modelUrl']);
|
if (config.debug) log('cached model:', handDetectorModel['modelUrl']);
|
||||||
if (config.debug) log('cached model:', handPoseModel['modelUrl']);
|
if (config.debug) log('cached model:', handPoseModel['modelUrl']);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* - Hand Tracking: [**HandTracking**](https://github.com/victordibia/handtracking)
|
* - Hand Tracking: [**HandTracking**](https://github.com/victordibia/handtracking)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import * as box from '../util/box';
|
import * as box from '../util/box';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
|
@ -75,12 +75,10 @@ export async function loadDetect(config: Config): Promise<GraphModel> {
|
||||||
// handtrack model has some kernel ops defined in model but those are never referenced and non-existent in tfjs
|
// handtrack model has some kernel ops defined in model but those are never referenced and non-existent in tfjs
|
||||||
// ideally need to prune the model itself
|
// ideally need to prune the model itself
|
||||||
fakeOps(['tensorlistreserve', 'enter', 'tensorlistfromtensor', 'merge', 'loopcond', 'switch', 'exit', 'tensorliststack', 'nextiteration', 'tensorlistsetitem', 'tensorlistgetitem', 'reciprocal', 'shape', 'split', 'where'], config);
|
fakeOps(['tensorlistreserve', 'enter', 'tensorlistfromtensor', 'merge', 'loopcond', 'switch', 'exit', 'tensorliststack', 'nextiteration', 'tensorlistsetitem', 'tensorlistgetitem', 'reciprocal', 'shape', 'split', 'where'], config);
|
||||||
models[0] = await loadModel(join(config.modelBasePath, config.hand.detector?.modelPath || '')) as unknown as GraphModel;
|
models[0] = await loadModel(config.hand.detector?.modelPath);
|
||||||
const inputs = Object.values(models[0].modelSignature['inputs']);
|
const inputs = Object.values(models[0].modelSignature['inputs']);
|
||||||
inputSize[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models[0] || !models[0]['modelUrl']) log('load model failed:', config.hand.detector?.modelPath);
|
|
||||||
else if (config.debug) log('load model:', models[0]['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', models[0]['modelUrl']);
|
} else if (config.debug) log('cached model:', models[0]['modelUrl']);
|
||||||
return models[0];
|
return models[0];
|
||||||
}
|
}
|
||||||
|
@ -88,12 +86,10 @@ export async function loadDetect(config: Config): Promise<GraphModel> {
|
||||||
export async function loadSkeleton(config: Config): Promise<GraphModel> {
|
export async function loadSkeleton(config: Config): Promise<GraphModel> {
|
||||||
if (env.initial) models[1] = null;
|
if (env.initial) models[1] = null;
|
||||||
if (!models[1]) {
|
if (!models[1]) {
|
||||||
models[1] = await loadModel(join(config.modelBasePath, config.hand.skeleton?.modelPath || '')) as unknown as GraphModel;
|
models[1] = await loadModel(config.hand.skeleton?.modelPath);
|
||||||
const inputs = Object.values(models[1].modelSignature['inputs']);
|
const inputs = Object.values(models[1].modelSignature['inputs']);
|
||||||
inputSize[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!models[1] || !models[1]['modelUrl']) log('load model failed:', config.hand.skeleton?.modelPath);
|
|
||||||
else if (config.debug) log('load model:', models[1]['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', models[1]['modelUrl']);
|
} else if (config.debug) log('cached model:', models[1]['modelUrl']);
|
||||||
return models[1];
|
return models[1];
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
import { log, now, mergeDeep, validate } from './util/util';
|
import { log, now, mergeDeep, validate } from './util/util';
|
||||||
import { defaults } from './config';
|
import { defaults } from './config';
|
||||||
import { env, Env } from './util/env';
|
import { env, Env } from './util/env';
|
||||||
|
import { setModelLoadOptions } from './tfjs/load';
|
||||||
import * as tf from '../dist/tfjs.esm.js';
|
import * as tf from '../dist/tfjs.esm.js';
|
||||||
import * as app from '../package.json';
|
import * as app from '../package.json';
|
||||||
import * as backend from './tfjs/backend';
|
import * as backend from './tfjs/backend';
|
||||||
|
@ -134,6 +135,8 @@ export class Human {
|
||||||
this.config = JSON.parse(JSON.stringify(defaults));
|
this.config = JSON.parse(JSON.stringify(defaults));
|
||||||
Object.seal(this.config);
|
Object.seal(this.config);
|
||||||
if (userConfig) this.config = mergeDeep(this.config, userConfig);
|
if (userConfig) this.config = mergeDeep(this.config, userConfig);
|
||||||
|
this.config.cacheModels = typeof indexedDB !== 'undefined';
|
||||||
|
setModelLoadOptions(this.config);
|
||||||
this.tf = tf;
|
this.tf = tf;
|
||||||
this.state = 'idle';
|
this.state = 'idle';
|
||||||
this.#numTensors = 0;
|
this.#numTensors = 0;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* Based on: [**NanoDet**](https://github.com/RangiLyu/nanodet)
|
* Based on: [**NanoDet**](https://github.com/RangiLyu/nanodet)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
import { labels } from './labels';
|
import { labels } from './labels';
|
||||||
|
@ -23,11 +23,9 @@ export async function load(config: Config): Promise<GraphModel> {
|
||||||
if (env.initial) model = null;
|
if (env.initial) model = null;
|
||||||
if (!model) {
|
if (!model) {
|
||||||
// fakeOps(['floormod'], config);
|
// fakeOps(['floormod'], config);
|
||||||
model = await loadModel(join(config.modelBasePath, config.object.modelPath || '')) as unknown as GraphModel;
|
model = await loadModel(config.object.modelPath);
|
||||||
const inputs = Object.values(model.modelSignature['inputs']);
|
const inputs = Object.values(model.modelSignature['inputs']);
|
||||||
inputSize = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.object.modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
} else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* Based on: [**MB3-CenterNet**](https://github.com/610265158/mobilenetv3_centernet)
|
* Based on: [**MB3-CenterNet**](https://github.com/610265158/mobilenetv3_centernet)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, now } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
import { constants } from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
|
@ -24,11 +24,9 @@ const scaleBox = 2.5; // increase box size
|
||||||
|
|
||||||
export async function load(config: Config): Promise<GraphModel> {
|
export async function load(config: Config): Promise<GraphModel> {
|
||||||
if (!model || env.initial) {
|
if (!model || env.initial) {
|
||||||
model = await loadModel(join(config.modelBasePath, config.object.modelPath || '')) as unknown as GraphModel;
|
model = await loadModel(config.object.modelPath);
|
||||||
const inputs = Object.values(model.modelSignature['inputs']);
|
const inputs = Object.values(model.modelSignature['inputs']);
|
||||||
inputSize = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.object.modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
} else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* - [**MediaPipe Selfie**](https://drive.google.com/file/d/1dCfozqknMa068vVsO2j_1FgZkW_e3VWv/preview)
|
* - [**MediaPipe Selfie**](https://drive.google.com/file/d/1dCfozqknMa068vVsO2j_1FgZkW_e3VWv/preview)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { log, join } from '../util/util';
|
import { log } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { loadModel } from '../tfjs/load';
|
import { loadModel } from '../tfjs/load';
|
||||||
import * as image from '../image/image';
|
import * as image from '../image/image';
|
||||||
|
@ -20,11 +20,8 @@ let model: GraphModel;
|
||||||
let busy = false;
|
let busy = false;
|
||||||
|
|
||||||
export async function load(config: Config): Promise<GraphModel> {
|
export async function load(config: Config): Promise<GraphModel> {
|
||||||
if (!model || env.initial) {
|
if (!model || env.initial) model = await loadModel(config.segmentation.modelPath);
|
||||||
model = await loadModel(join(config.modelBasePath, config.segmentation.modelPath || '')) as unknown as GraphModel;
|
else if (config.debug) log('cached model:', model['modelUrl']);
|
||||||
if (!model || !model['modelUrl']) log('load model failed:', config.segmentation.modelPath);
|
|
||||||
else if (config.debug) log('load model:', model['modelUrl']);
|
|
||||||
} else if (config.debug) log('cached model:', model['modelUrl']);
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,45 +1,57 @@
|
||||||
import { log, mergeDeep } from '../util/util';
|
import { log, join } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import type { GraphModel } from './types';
|
import type { GraphModel } from './types';
|
||||||
|
import type { Config } from '../config';
|
||||||
|
|
||||||
type FetchFunc = (url: RequestInfo, init?: RequestInit) => Promise<Response>;
|
const options = {
|
||||||
type ProgressFunc = (...args) => void;
|
cacheModels: false,
|
||||||
|
|
||||||
export type LoadOptions = {
|
|
||||||
appName: string,
|
|
||||||
autoSave: boolean,
|
|
||||||
verbose: boolean,
|
|
||||||
fetchFunc?: FetchFunc,
|
|
||||||
onProgress?: ProgressFunc,
|
|
||||||
}
|
|
||||||
|
|
||||||
let options: LoadOptions = {
|
|
||||||
appName: 'human',
|
|
||||||
autoSave: true,
|
|
||||||
verbose: true,
|
verbose: true,
|
||||||
|
debug: false,
|
||||||
|
modelBasePath: '',
|
||||||
};
|
};
|
||||||
|
|
||||||
async function httpHandler(url: RequestInfo, init?: RequestInit): Promise<Response | null> {
|
async function httpHandler(url, init?): Promise<Response | null> {
|
||||||
if (options.fetchFunc) return options.fetchFunc(url, init);
|
if (options.debug) log('load model fetch:', url, init);
|
||||||
else log('error: fetch function is not defined');
|
if (typeof fetch === 'undefined') {
|
||||||
return null;
|
log('error loading model: fetch function is not defined:');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return fetch(url, init);
|
||||||
}
|
}
|
||||||
|
|
||||||
const tfLoadOptions = {
|
export function setModelLoadOptions(config: Config) {
|
||||||
onProgress: (...args) => {
|
options.cacheModels = config.cacheModels;
|
||||||
if (options.onProgress) options.onProgress(...args);
|
options.verbose = config.debug;
|
||||||
else if (options.verbose) log('load model progress:', ...args);
|
options.modelBasePath = config.modelBasePath;
|
||||||
},
|
}
|
||||||
fetchFunc: (url: RequestInfo, init?: RequestInit) => {
|
|
||||||
if (options.verbose) log('load model fetch:', url, init);
|
|
||||||
if (url.toString().toLowerCase().startsWith('http')) return httpHandler(url, init);
|
|
||||||
return null;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export async function loadModel(modelUrl: string, loadOptions?: LoadOptions): Promise<GraphModel> {
|
export async function loadModel(modelPath: string | undefined): Promise<GraphModel> {
|
||||||
if (loadOptions) options = mergeDeep(loadOptions);
|
const modelUrl = join(options.modelBasePath, modelPath || '');
|
||||||
if (!options.fetchFunc && (typeof globalThis.fetch !== 'undefined')) options.fetchFunc = globalThis.fetch;
|
const modelPathSegments = modelUrl.split('/');
|
||||||
const model = await tf.loadGraphModel(modelUrl, tfLoadOptions) as unknown as GraphModel;
|
const cachedModelName = 'indexeddb://' + modelPathSegments[modelPathSegments.length - 1].replace('.json', ''); // generate short model name for cache
|
||||||
|
const cachedModels = await tf.io.listModels(); // list all models already in cache
|
||||||
|
const modelCached = options.cacheModels && Object.keys(cachedModels).includes(cachedModelName); // is model found in cache
|
||||||
|
// create model prototype and decide if load from cache or from original modelurl
|
||||||
|
const model: GraphModel = new tf.GraphModel(modelCached ? cachedModelName : modelUrl, { fetchFunc: (url, init?) => httpHandler(url, init) }) as unknown as GraphModel;
|
||||||
|
try {
|
||||||
|
// @ts-ignore private function
|
||||||
|
model.findIOHandler(); // decide how to actually load a model
|
||||||
|
// @ts-ignore private property
|
||||||
|
if (options.debug) log('model load handler:', model.handler);
|
||||||
|
// @ts-ignore private property
|
||||||
|
const artifacts = await model.handler.load(); // load manifest
|
||||||
|
model.loadSync(artifacts); // load weights
|
||||||
|
if (options.verbose) log('load model:', model['modelUrl']);
|
||||||
|
} catch (err) {
|
||||||
|
log('error loading model:', modelUrl, err);
|
||||||
|
}
|
||||||
|
if (options.cacheModels && !modelCached) { // save model to cache
|
||||||
|
try {
|
||||||
|
const saveResult = await model.save(cachedModelName);
|
||||||
|
log('model saved:', cachedModelName, saveResult);
|
||||||
|
} catch (err) {
|
||||||
|
log('error saving model:', modelUrl, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
601
test/build.log
601
test/build.log
File diff suppressed because one or more lines are too long
1246
test/test.log
1246
test/test.log
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Env | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="Env.html">Env</a></li></ul><h1>Class Env</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Env | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="Env.html">Env</a></li></ul><h1>Class Env</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Env class that holds detected capabilities</p>
|
<p>Env class that holds detected capabilities</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">Env</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Constructors</h3><ul class="tsd-index-list"><li class="tsd-kind-constructor tsd-parent-kind-class"><a href="Env.html#constructor" class="tsd-kind-icon">constructor</a></li></ul></section><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#Canvas" class="tsd-kind-icon">Canvas</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#Image" class="tsd-kind-icon">Image</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#ImageData" class="tsd-kind-icon">Image<wbr/>Data</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#agent" class="tsd-kind-icon">agent</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#backends" class="tsd-kind-icon">backends</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#browser" class="tsd-kind-icon">browser</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#cpu" class="tsd-kind-icon">cpu</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#filter" class="tsd-kind-icon">filter</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#initial" class="tsd-kind-icon">initial</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#kernels" class="tsd-kind-icon">kernels</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#node" class="tsd-kind-icon">node</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#offscreen" class="tsd-kind-icon">offscreen</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#perfadd" class="tsd-kind-icon">perfadd</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#platform" class="tsd-kind-icon">platform</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#tfjs" class="tsd-kind-icon">tfjs</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#wasm" class="tsd-kind-icon">wasm</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#webgl" class="tsd-kind-icon">webgl</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#webgpu" class="tsd-kind-icon">webgpu</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#worker" class="tsd-kind-icon">worker</a></li></ul></section><section class="tsd-index-section "><h3>Methods</h3><ul class="tsd-index-list"><li class="tsd-kind-method tsd-parent-kind-class"><a href="Env.html#updateBackend" class="tsd-kind-icon">update<wbr/>Backend</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="Env.html#updateCPU" class="tsd-kind-icon">updateCPU</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Constructors</h2><section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class"><a id="constructor" class="tsd-anchor"></a><h3>constructor</h3><ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">new <wbr/>Env<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Env.html" class="tsd-signature-type" data-tsd-kind="Class">Env</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/util/env.ts#L81">src/util/env.ts:81</a></li></ul></aside><h4 class="tsd-returns-title">Returns <a href="Env.html" class="tsd-signature-type" data-tsd-kind="Class">Env</a></h4></li></ul></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class"><a id="Canvas" class="tsd-anchor"></a><h3>Canvas</h3><div class="tsd-signature tsd-kind-icon">Canvas<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">undefined</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/util/env.ts#L75">src/util/env.ts:75</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">Env</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Constructors</h3><ul class="tsd-index-list"><li class="tsd-kind-constructor tsd-parent-kind-class"><a href="Env.html#constructor" class="tsd-kind-icon">constructor</a></li></ul></section><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#Canvas" class="tsd-kind-icon">Canvas</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#Image" class="tsd-kind-icon">Image</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#ImageData" class="tsd-kind-icon">Image<wbr/>Data</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#agent" class="tsd-kind-icon">agent</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#backends" class="tsd-kind-icon">backends</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#browser" class="tsd-kind-icon">browser</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#cpu" class="tsd-kind-icon">cpu</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#filter" class="tsd-kind-icon">filter</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#initial" class="tsd-kind-icon">initial</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#kernels" class="tsd-kind-icon">kernels</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#node" class="tsd-kind-icon">node</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#offscreen" class="tsd-kind-icon">offscreen</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#perfadd" class="tsd-kind-icon">perfadd</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#platform" class="tsd-kind-icon">platform</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#tfjs" class="tsd-kind-icon">tfjs</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#wasm" class="tsd-kind-icon">wasm</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#webgl" class="tsd-kind-icon">webgl</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#webgpu" class="tsd-kind-icon">webgpu</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="Env.html#worker" class="tsd-kind-icon">worker</a></li></ul></section><section class="tsd-index-section "><h3>Methods</h3><ul class="tsd-index-list"><li class="tsd-kind-method tsd-parent-kind-class"><a href="Env.html#updateBackend" class="tsd-kind-icon">update<wbr/>Backend</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="Env.html#updateCPU" class="tsd-kind-icon">updateCPU</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Constructors</h2><section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class"><a id="constructor" class="tsd-anchor"></a><h3>constructor</h3><ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">new <wbr/>Env<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Env.html" class="tsd-signature-type" data-tsd-kind="Class">Env</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/util/env.ts#L81">src/util/env.ts:81</a></li></ul></aside><h4 class="tsd-returns-title">Returns <a href="Env.html" class="tsd-signature-type" data-tsd-kind="Class">Env</a></h4></li></ul></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class"><a id="Canvas" class="tsd-anchor"></a><h3>Canvas</h3><div class="tsd-signature tsd-kind-icon">Canvas<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">undefined</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/util/env.ts#L75">src/util/env.ts:75</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>MonkeyPatch for Canvas</p>
|
<p>MonkeyPatch for Canvas</p>
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>GraphModel | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="GraphModel.html">GraphModel</a></li></ul><h1>Class GraphModel</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>GraphModel | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="GraphModel.html">GraphModel</a></li></ul><h1>Class GraphModel</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>A <code>tf.GraphModel</code> is a directed, acyclic graph built from a
|
<p>A <code>tf.GraphModel</code> is a directed, acyclic graph built from a
|
||||||
SavedModel GraphDef and allows inference execution.</p>
|
SavedModel GraphDef and allows inference execution.</p>
|
||||||
</div><div><p>A <code>tf.GraphModel</code> can only be created by loading from a model converted from
|
</div><div><p>A <code>tf.GraphModel</code> can only be created by loading from a model converted from
|
||||||
a <a href="https://www.tensorflow.org/guide/saved_model">TensorFlow SavedModel</a> using
|
a <a href="https://www.tensorflow.org/guide/saved_model">TensorFlow SavedModel</a> using
|
||||||
the command line converter tool and loaded via <code>loadModel</code>.</p>
|
the command line converter tool and loaded via <code>tf.loadGraphModel</code>.</p>
|
||||||
</div><dl class="tsd-comment-tags"><dt>doc</dt><dd><p>{heading: 'Models', subheading: 'Classes'}</p>
|
</div><dl class="tsd-comment-tags"><dt>doc</dt><dd><p>{heading: 'Models', subheading: 'Classes'}</p>
|
||||||
</dd></dl></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">GraphModel</span></li></ul></section><section class="tsd-panel"><h3>Implements</h3><ul class="tsd-hierarchy"><li><span class="tsd-signature-type">InferenceModel</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Constructors</h3><ul class="tsd-index-list"><li class="tsd-kind-constructor tsd-parent-kind-class"><a href="GraphModel.html#constructor" class="tsd-kind-icon">constructor</a></li></ul></section><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#inputNodes" class="tsd-kind-icon">input<wbr/>Nodes</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#inputs" class="tsd-kind-icon">inputs</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#metadata" class="tsd-kind-icon">metadata</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#modelSignature" class="tsd-kind-icon">model<wbr/>Signature</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#modelVersion" class="tsd-kind-icon">model<wbr/>Version</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#outputNodes" class="tsd-kind-icon">output<wbr/>Nodes</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#outputs" class="tsd-kind-icon">outputs</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#weights" class="tsd-kind-icon">weights</a></li></ul></section><section class="tsd-index-section "><h3>Methods</h3><ul class="tsd-index-list"><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#dispose" class="tsd-kind-icon">dispose</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#disposeIntermediateTensors" class="tsd-kind-icon">dispose<wbr/>Intermediate<wbr/>Tensors</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#execute" class="tsd-kind-icon">execute</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#executeAsync" class="tsd-kind-icon">execute<wbr/>Async</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#getIntermediateTensors" class="tsd-kind-icon">get<wbr/>Intermediate<wbr/>Tensors</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#load" class="tsd-kind-icon">load</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#loadSync" class="tsd-kind-icon">load<wbr/>Sync</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#predict" class="tsd-kind-icon">predict</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#save" class="tsd-kind-icon">save</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Constructors</h2><section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class"><a id="constructor" class="tsd-anchor"></a><h3>constructor</h3><ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">new <wbr/>Graph<wbr/>Model<span class="tsd-signature-symbol">(</span>modelUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">IOHandler</span>, loadOptions<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">LoadOptions</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="GraphModel.html" class="tsd-signature-type" data-tsd-kind="Class">GraphModel</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in node_modules/.pnpm/@tensorflow+tfjs-converter@3.13.0_@tensorflow+tfjs-core@3.13.0/node_modules/@tensorflow/tfjs-converter/dist/executor/graph_model.d.ts:59</li></ul></aside><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>modelUrl: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">IOHandler</span></h5><div class="tsd-comment tsd-typography"><div class="lead">
|
</dd></dl></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">GraphModel</span></li></ul></section><section class="tsd-panel"><h3>Implements</h3><ul class="tsd-hierarchy"><li><span class="tsd-signature-type">InferenceModel</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Constructors</h3><ul class="tsd-index-list"><li class="tsd-kind-constructor tsd-parent-kind-class"><a href="GraphModel.html#constructor" class="tsd-kind-icon">constructor</a></li></ul></section><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#inputNodes" class="tsd-kind-icon">input<wbr/>Nodes</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#inputs" class="tsd-kind-icon">inputs</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#metadata" class="tsd-kind-icon">metadata</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#modelSignature" class="tsd-kind-icon">model<wbr/>Signature</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#modelVersion" class="tsd-kind-icon">model<wbr/>Version</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#outputNodes" class="tsd-kind-icon">output<wbr/>Nodes</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#outputs" class="tsd-kind-icon">outputs</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="GraphModel.html#weights" class="tsd-kind-icon">weights</a></li></ul></section><section class="tsd-index-section "><h3>Methods</h3><ul class="tsd-index-list"><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#dispose" class="tsd-kind-icon">dispose</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#disposeIntermediateTensors" class="tsd-kind-icon">dispose<wbr/>Intermediate<wbr/>Tensors</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#execute" class="tsd-kind-icon">execute</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#executeAsync" class="tsd-kind-icon">execute<wbr/>Async</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#getIntermediateTensors" class="tsd-kind-icon">get<wbr/>Intermediate<wbr/>Tensors</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#load" class="tsd-kind-icon">load</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#loadSync" class="tsd-kind-icon">load<wbr/>Sync</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#predict" class="tsd-kind-icon">predict</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="GraphModel.html#save" class="tsd-kind-icon">save</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Constructors</h2><section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class"><a id="constructor" class="tsd-anchor"></a><h3>constructor</h3><ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">new <wbr/>Graph<wbr/>Model<span class="tsd-signature-symbol">(</span>modelUrl<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">IOHandler</span>, loadOptions<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">LoadOptions</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="GraphModel.html" class="tsd-signature-type" data-tsd-kind="Class">GraphModel</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in node_modules/.pnpm/@tensorflow+tfjs-converter@3.13.0_@tensorflow+tfjs-core@3.13.0/node_modules/@tensorflow/tfjs-converter/dist/executor/graph_model.d.ts:59</li></ul></aside><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>modelUrl: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">IOHandler</span></h5><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>url for the model, or an <code>io.IOHandler</code>.</p>
|
<p>url for the model, or an <code>io.IOHandler</code>.</p>
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Models | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="Models.html">Models</a></li></ul><h1>Class Models</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Models | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="Models.html">Models</a></li></ul><h1>Class Models</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Instances of all possible TFJS Graph Models used by Human</p>
|
<p>Instances of all possible TFJS Graph Models used by Human</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>loaded as needed based on configuration</li>
|
<li>loaded as needed based on configuration</li>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Tensor | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="Tensor.html">Tensor</a></li></ul><h1>Class Tensor<R></h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Tensor | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="Tensor.html">Tensor</a></li></ul><h1>Class Tensor<R></h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>A <code>tf.Tensor</code> object represents an immutable, multidimensional array of
|
<p>A <code>tf.Tensor</code> object represents an immutable, multidimensional array of
|
||||||
numbers that has a shape and a data type.</p>
|
numbers that has a shape and a data type.</p>
|
||||||
</div><div><p>For performance reasons, functions that create tensors do not necessarily
|
</div><div><p>For performance reasons, functions that create tensors do not necessarily
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BodyConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="BodyConfig.html">BodyConfig</a></li></ul><h1>Interface BodyConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BodyConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="BodyConfig.html">BodyConfig</a></li></ul><h1>Interface BodyConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Configures all body detection specific options</p>
|
<p>Configures all body detection specific options</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">BodyConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="BodyConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyConfig.html#maxDetected" class="tsd-kind-icon">max<wbr/>Detected</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyConfig.html#minConfidence" class="tsd-kind-icon">min<wbr/>Confidence</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="BodyConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="BodyConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="BodyConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">BodyConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="BodyConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyConfig.html#maxDetected" class="tsd-kind-icon">max<wbr/>Detected</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyConfig.html#minConfidence" class="tsd-kind-icon">min<wbr/>Confidence</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="BodyConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="BodyConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="BodyConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>is module enabled?</p>
|
<p>is module enabled?</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BodyKeypoint | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="BodyKeypoint.html">BodyKeypoint</a></li></ul><h1>Interface BodyKeypoint</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BodyKeypoint | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="BodyKeypoint.html">BodyKeypoint</a></li></ul><h1>Interface BodyKeypoint</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Body Result keypoints</p>
|
<p>Body Result keypoints</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">BodyKeypoint</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyKeypoint.html#distance" class="tsd-kind-icon">distance</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyKeypoint.html#part" class="tsd-kind-icon">part</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyKeypoint.html#position" class="tsd-kind-icon">position</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyKeypoint.html#positionRaw" class="tsd-kind-icon">position<wbr/>Raw</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyKeypoint.html#score" class="tsd-kind-icon">score</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="distance" class="tsd-anchor"></a><h3><span class="tsd-flag ts-flagOptional">Optional</span> distance</h3><div class="tsd-signature tsd-kind-icon">distance<span class="tsd-signature-symbol">?:</span> <a href="../index.html#Point" class="tsd-signature-type" data-tsd-kind="Type alias">Point</a></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/result.ts#L94">src/result.ts:94</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">BodyKeypoint</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyKeypoint.html#distance" class="tsd-kind-icon">distance</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyKeypoint.html#part" class="tsd-kind-icon">part</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyKeypoint.html#position" class="tsd-kind-icon">position</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyKeypoint.html#positionRaw" class="tsd-kind-icon">position<wbr/>Raw</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyKeypoint.html#score" class="tsd-kind-icon">score</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="distance" class="tsd-anchor"></a><h3><span class="tsd-flag ts-flagOptional">Optional</span> distance</h3><div class="tsd-signature tsd-kind-icon">distance<span class="tsd-signature-symbol">?:</span> <a href="../index.html#Point" class="tsd-signature-type" data-tsd-kind="Type alias">Point</a></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/result.ts#L94">src/result.ts:94</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>body part position relative to body center in meters</p>
|
<p>body part position relative to body center in meters</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BodyResult | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="BodyResult.html">BodyResult</a></li></ul><h1>Interface BodyResult</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>BodyResult | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="BodyResult.html">BodyResult</a></li></ul><h1>Interface BodyResult</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Body results</p>
|
<p>Body results</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">BodyResult</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyResult.html#annotations" class="tsd-kind-icon">annotations</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyResult.html#box" class="tsd-kind-icon">box</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyResult.html#boxRaw" class="tsd-kind-icon">box<wbr/>Raw</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyResult.html#id" class="tsd-kind-icon">id</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyResult.html#keypoints" class="tsd-kind-icon">keypoints</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyResult.html#score" class="tsd-kind-icon">score</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="annotations" class="tsd-anchor"></a><h3>annotations</h3><div class="tsd-signature tsd-kind-icon">annotations<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</span><a href="../index.html#BodyAnnotation" class="tsd-signature-type" data-tsd-kind="Type alias">BodyAnnotation</a><span class="tsd-signature-symbol">, </span><a href="../index.html#Point" class="tsd-signature-type" data-tsd-kind="Type alias">Point</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/result.ts#L112">src/result.ts:112</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">BodyResult</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyResult.html#annotations" class="tsd-kind-icon">annotations</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyResult.html#box" class="tsd-kind-icon">box</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyResult.html#boxRaw" class="tsd-kind-icon">box<wbr/>Raw</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyResult.html#id" class="tsd-kind-icon">id</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyResult.html#keypoints" class="tsd-kind-icon">keypoints</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="BodyResult.html#score" class="tsd-kind-icon">score</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="annotations" class="tsd-anchor"></a><h3>annotations</h3><div class="tsd-signature tsd-kind-icon">annotations<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</span><a href="../index.html#BodyAnnotation" class="tsd-signature-type" data-tsd-kind="Type alias">BodyAnnotation</a><span class="tsd-signature-symbol">, </span><a href="../index.html#Point" class="tsd-signature-type" data-tsd-kind="Type alias">Point</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/result.ts#L112">src/result.ts:112</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>detected body keypoints combined into annotated parts</p>
|
<p>detected body keypoints combined into annotated parts</p>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Config | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="Config.html">Config</a></li></ul><h1>Interface Config</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Config | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="Config.html">Config</a></li></ul><h1>Interface Config</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Configuration interface definition for <strong>Human</strong> library
|
<p>Configuration interface definition for <strong>Human</strong> library
|
||||||
Contains all configurable parameters
|
Contains all configurable parameters
|
||||||
Defaults: <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L262">config</a></p>
|
Defaults: <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L262">config</a></p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">Config</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#async" class="tsd-kind-icon">async</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#backend" class="tsd-kind-icon">backend</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#body" class="tsd-kind-icon">body</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#cacheSensitivity" class="tsd-kind-icon">cache<wbr/>Sensitivity</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#deallocate" class="tsd-kind-icon">deallocate</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#debug" class="tsd-kind-icon">debug</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#face" class="tsd-kind-icon">face</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#filter" class="tsd-kind-icon">filter</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#gesture" class="tsd-kind-icon">gesture</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#hand" class="tsd-kind-icon">hand</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#modelBasePath" class="tsd-kind-icon">model<wbr/>Base<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#object" class="tsd-kind-icon">object</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#segmentation" class="tsd-kind-icon">segmentation</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#skipAllowed" class="tsd-kind-icon">skip<wbr/>Allowed</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#warmup" class="tsd-kind-icon">warmup</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#wasmPath" class="tsd-kind-icon">wasm<wbr/>Path</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="async" class="tsd-anchor"></a><h3>async</h3><div class="tsd-signature tsd-kind-icon">async<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L234">src/config.ts:234</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">Config</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#async" class="tsd-kind-icon">async</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#backend" class="tsd-kind-icon">backend</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#body" class="tsd-kind-icon">body</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#cacheModels" class="tsd-kind-icon">cache<wbr/>Models</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#cacheSensitivity" class="tsd-kind-icon">cache<wbr/>Sensitivity</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#deallocate" class="tsd-kind-icon">deallocate</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#debug" class="tsd-kind-icon">debug</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#face" class="tsd-kind-icon">face</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#filter" class="tsd-kind-icon">filter</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#gesture" class="tsd-kind-icon">gesture</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#hand" class="tsd-kind-icon">hand</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#modelBasePath" class="tsd-kind-icon">model<wbr/>Base<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#object" class="tsd-kind-icon">object</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#segmentation" class="tsd-kind-icon">segmentation</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#skipAllowed" class="tsd-kind-icon">skip<wbr/>Allowed</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#warmup" class="tsd-kind-icon">warmup</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#wasmPath" class="tsd-kind-icon">wasm<wbr/>Path</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="async" class="tsd-anchor"></a><h3>async</h3><div class="tsd-signature tsd-kind-icon">async<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L234">src/config.ts:234</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Perform model loading and inference concurrently or sequentially</p>
|
<p>Perform model loading and inference concurrently or sequentially</p>
|
||||||
</div><div><p>default: <code>true</code></p>
|
</div><div><p>default: <code>true</code></p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="backend" class="tsd-anchor"></a><h3>backend</h3><div class="tsd-signature tsd-kind-icon">backend<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">""</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"cpu"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"wasm"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"webgl"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"humangl"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"tensorflow"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"webgpu"</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L216">src/config.ts:216</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="backend" class="tsd-anchor"></a><h3>backend</h3><div class="tsd-signature tsd-kind-icon">backend<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">""</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"cpu"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"wasm"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"webgl"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"humangl"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"tensorflow"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"webgpu"</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L216">src/config.ts:216</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
|
@ -13,27 +13,30 @@ valid build-in backends are:</p>
|
||||||
<li>NodeJS: <code>cpu</code>, <code>wasm</code>, <code>tensorflow</code>
|
<li>NodeJS: <code>cpu</code>, <code>wasm</code>, <code>tensorflow</code>
|
||||||
default: <code>humangl</code> for browser and <code>tensorflow</code> for nodejs</li>
|
default: <code>humangl</code> for browser and <code>tensorflow</code> for nodejs</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="body" class="tsd-anchor"></a><h3>body</h3><div class="tsd-signature tsd-kind-icon">body<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="BodyConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">BodyConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L275">src/config.ts:275</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="body" class="tsd-anchor"></a><h3>body</h3><div class="tsd-signature tsd-kind-icon">body<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="BodyConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">BodyConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L280">src/config.ts:280</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Body config <a href="BodyConfig.html">BodyConfig</a></p>
|
<p>Body config <a href="BodyConfig.html">BodyConfig</a></p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="cacheSensitivity" class="tsd-anchor"></a><h3>cache<wbr/>Sensitivity</h3><div class="tsd-signature tsd-kind-icon">cache<wbr/>Sensitivity<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L257">src/config.ts:257</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="cacheModels" class="tsd-anchor"></a><h3>cache<wbr/>Models</h3><div class="tsd-signature tsd-kind-icon">cache<wbr/>Models<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L254">src/config.ts:254</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
|
<p>Cache models in IndexDB on first sucessfull load
|
||||||
|
default: true if indexdb is available (browsers), false if its not (nodejs)</p>
|
||||||
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="cacheSensitivity" class="tsd-anchor"></a><h3>cache<wbr/>Sensitivity</h3><div class="tsd-signature tsd-kind-icon">cache<wbr/>Sensitivity<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L262">src/config.ts:262</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Cache sensitivity</p>
|
<p>Cache sensitivity</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>values 0..1 where 0.01 means reset cache if input changed more than 1%</li>
|
<li>values 0..1 where 0.01 means reset cache if input changed more than 1%</li>
|
||||||
<li>set to 0 to disable caching</li>
|
<li>set to 0 to disable caching</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div><div><p>default: 0.7</p>
|
</div><div><p>default: 0.7</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="deallocate" class="tsd-anchor"></a><h3>deallocate</h3><div class="tsd-signature tsd-kind-icon">deallocate<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L260">src/config.ts:260</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="deallocate" class="tsd-anchor"></a><h3>deallocate</h3><div class="tsd-signature tsd-kind-icon">deallocate<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L265">src/config.ts:265</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Perform immediate garbage collection on deallocated tensors instead of caching them</p>
|
<p>Perform immediate garbage collection on deallocated tensors instead of caching them</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="debug" class="tsd-anchor"></a><h3>debug</h3><div class="tsd-signature tsd-kind-icon">debug<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L228">src/config.ts:228</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="debug" class="tsd-anchor"></a><h3>debug</h3><div class="tsd-signature tsd-kind-icon">debug<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L228">src/config.ts:228</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Print debug statements to console</p>
|
<p>Print debug statements to console</p>
|
||||||
</div><div><p>default: <code>true</code></p>
|
</div><div><p>default: <code>true</code></p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="face" class="tsd-anchor"></a><h3>face</h3><div class="tsd-signature tsd-kind-icon">face<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="FaceConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L272">src/config.ts:272</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="face" class="tsd-anchor"></a><h3>face</h3><div class="tsd-signature tsd-kind-icon">face<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="FaceConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L277">src/config.ts:277</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Face config <a href="FaceConfig.html">FaceConfig</a></p>
|
<p>Face config <a href="FaceConfig.html">FaceConfig</a></p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="filter" class="tsd-anchor"></a><h3>filter</h3><div class="tsd-signature tsd-kind-icon">filter<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="FilterConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FilterConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L266">src/config.ts:266</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="filter" class="tsd-anchor"></a><h3>filter</h3><div class="tsd-signature tsd-kind-icon">filter<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="FilterConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FilterConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L271">src/config.ts:271</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Filter config <a href="FilterConfig.html">FilterConfig</a></p>
|
<p>Filter config <a href="FilterConfig.html">FilterConfig</a></p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="gesture" class="tsd-anchor"></a><h3>gesture</h3><div class="tsd-signature tsd-kind-icon">gesture<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="GestureConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GestureConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L269">src/config.ts:269</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="gesture" class="tsd-anchor"></a><h3>gesture</h3><div class="tsd-signature tsd-kind-icon">gesture<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="GestureConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GestureConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L274">src/config.ts:274</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Gesture config <a href="GestureConfig.html">GestureConfig</a></p>
|
<p>Gesture config <a href="GestureConfig.html">GestureConfig</a></p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="hand" class="tsd-anchor"></a><h3>hand</h3><div class="tsd-signature tsd-kind-icon">hand<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="HandConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">HandConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L278">src/config.ts:278</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="hand" class="tsd-anchor"></a><h3>hand</h3><div class="tsd-signature tsd-kind-icon">hand<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="HandConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">HandConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L283">src/config.ts:283</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Hand config <a href="HandConfig.html">HandConfig</a></p>
|
<p>Hand config <a href="HandConfig.html">HandConfig</a></p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="modelBasePath" class="tsd-anchor"></a><h3>model<wbr/>Base<wbr/>Path</h3><div class="tsd-signature tsd-kind-icon">model<wbr/>Base<wbr/>Path<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L249">src/config.ts:249</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="modelBasePath" class="tsd-anchor"></a><h3>model<wbr/>Base<wbr/>Path</h3><div class="tsd-signature tsd-kind-icon">model<wbr/>Base<wbr/>Path<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L249">src/config.ts:249</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Base model path (typically starting with file://, http:// or https://) for all models</p>
|
<p>Base model path (typically starting with file://, http:// or https://) for all models</p>
|
||||||
|
@ -41,11 +44,11 @@ default: <code>humangl</code> for browser and <code>tensorflow</code> for nodejs
|
||||||
<li>individual modelPath values are relative to this path</li>
|
<li>individual modelPath values are relative to this path</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div><div><p>default: <code>../models/</code> for browsers and <code>file://models/</code> for nodejs</p>
|
</div><div><p>default: <code>../models/</code> for browsers and <code>file://models/</code> for nodejs</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="object" class="tsd-anchor"></a><h3>object</h3><div class="tsd-signature tsd-kind-icon">object<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="ObjectConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">ObjectConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L281">src/config.ts:281</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="object" class="tsd-anchor"></a><h3>object</h3><div class="tsd-signature tsd-kind-icon">object<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="ObjectConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">ObjectConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L286">src/config.ts:286</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Object config <a href="ObjectConfig.html">ObjectConfig</a></p>
|
<p>Object config <a href="ObjectConfig.html">ObjectConfig</a></p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="segmentation" class="tsd-anchor"></a><h3>segmentation</h3><div class="tsd-signature tsd-kind-icon">segmentation<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="SegmentationConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">SegmentationConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L284">src/config.ts:284</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="segmentation" class="tsd-anchor"></a><h3>segmentation</h3><div class="tsd-signature tsd-kind-icon">segmentation<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="SegmentationConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">SegmentationConfig</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L289">src/config.ts:289</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Segmentation config <a href="SegmentationConfig.html">SegmentationConfig</a></p>
|
<p>Segmentation config <a href="SegmentationConfig.html">SegmentationConfig</a></p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="skipAllowed" class="tsd-anchor"></a><h3>skip<wbr/>Allowed</h3><div class="tsd-signature tsd-kind-icon">skip<wbr/>Allowed<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L263">src/config.ts:263</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="skipAllowed" class="tsd-anchor"></a><h3>skip<wbr/>Allowed</h3><div class="tsd-signature tsd-kind-icon">skip<wbr/>Allowed<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L268">src/config.ts:268</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Internal Variable</p>
|
<p>Internal Variable</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="warmup" class="tsd-anchor"></a><h3>warmup</h3><div class="tsd-signature tsd-kind-icon">warmup<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">""</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"face"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"body"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"none"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"full"</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L242">src/config.ts:242</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="warmup" class="tsd-anchor"></a><h3>warmup</h3><div class="tsd-signature tsd-kind-icon">warmup<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">""</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"face"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"body"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"none"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"full"</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L242">src/config.ts:242</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>What to use for <code>human.warmup()</code></p>
|
<p>What to use for <code>human.warmup()</code></p>
|
||||||
|
@ -57,4 +60,4 @@ default: <code>humangl</code> for browser and <code>tensorflow</code> for nodejs
|
||||||
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="wasmPath" class="tsd-anchor"></a><h3>wasm<wbr/>Path</h3><div class="tsd-signature tsd-kind-icon">wasm<wbr/>Path<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L222">src/config.ts:222</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="wasmPath" class="tsd-anchor"></a><h3>wasm<wbr/>Path</h3><div class="tsd-signature tsd-kind-icon">wasm<wbr/>Path<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L222">src/config.ts:222</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Path to *.wasm files if backend is set to <code>wasm</code></p>
|
<p>Path to *.wasm files if backend is set to <code>wasm</code></p>
|
||||||
</div><div><p>default: auto-detects to link to CDN <code>jsdelivr</code> when running in browser</p>
|
</div><div><p>default: auto-detects to link to CDN <code>jsdelivr</code> when running in browser</p>
|
||||||
</div></div></section></section></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class=""><a href="../index.html">Exports</a></li><li class=" tsd-kind-namespace"><a href="../modules/Tensor.html">Tensor</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-interface"><a href="Config.html" class="tsd-kind-icon">Config</a><ul><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#async" class="tsd-kind-icon">async</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#backend" class="tsd-kind-icon">backend</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#body" class="tsd-kind-icon">body</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#cacheSensitivity" class="tsd-kind-icon">cache<wbr/>Sensitivity</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#deallocate" class="tsd-kind-icon">deallocate</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#debug" class="tsd-kind-icon">debug</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#face" class="tsd-kind-icon">face</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#filter" class="tsd-kind-icon">filter</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#gesture" class="tsd-kind-icon">gesture</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#hand" class="tsd-kind-icon">hand</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#modelBasePath" class="tsd-kind-icon">model<wbr/>Base<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#object" class="tsd-kind-icon">object</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#segmentation" class="tsd-kind-icon">segmentation</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#skipAllowed" class="tsd-kind-icon">skip<wbr/>Allowed</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#warmup" class="tsd-kind-icon">warmup</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#wasmPath" class="tsd-kind-icon">wasm<wbr/>Path</a></li></ul></li></ul></nav></div></div></div><footer class=""><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="overlay"></div><script src="../assets/main.js"></script></body></html>
|
</div></div></section></section></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class=""><a href="../index.html">Exports</a></li><li class=" tsd-kind-namespace"><a href="../modules/Tensor.html">Tensor</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-interface"><a href="Config.html" class="tsd-kind-icon">Config</a><ul><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#async" class="tsd-kind-icon">async</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#backend" class="tsd-kind-icon">backend</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#body" class="tsd-kind-icon">body</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#cacheModels" class="tsd-kind-icon">cache<wbr/>Models</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#cacheSensitivity" class="tsd-kind-icon">cache<wbr/>Sensitivity</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#deallocate" class="tsd-kind-icon">deallocate</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#debug" class="tsd-kind-icon">debug</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#face" class="tsd-kind-icon">face</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#filter" class="tsd-kind-icon">filter</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#gesture" class="tsd-kind-icon">gesture</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#hand" class="tsd-kind-icon">hand</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#modelBasePath" class="tsd-kind-icon">model<wbr/>Base<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#object" class="tsd-kind-icon">object</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#segmentation" class="tsd-kind-icon">segmentation</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#skipAllowed" class="tsd-kind-icon">skip<wbr/>Allowed</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#warmup" class="tsd-kind-icon">warmup</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Config.html#wasmPath" class="tsd-kind-icon">wasm<wbr/>Path</a></li></ul></li></ul></nav></div></div></div><footer class=""><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="overlay"></div><script src="../assets/main.js"></script></body></html>
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceAntiSpoofConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="FaceAntiSpoofConfig.html">FaceAntiSpoofConfig</a></li></ul><h1>Interface FaceAntiSpoofConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceAntiSpoofConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="FaceAntiSpoofConfig.html">FaceAntiSpoofConfig</a></li></ul><h1>Interface FaceAntiSpoofConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Anti-spoofing part of face configuration</p>
|
<p>Anti-spoofing part of face configuration</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">FaceAntiSpoofConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section tsd-is-inherited"><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceAntiSpoofConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceAntiSpoofConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceAntiSpoofConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceAntiSpoofConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group tsd-is-inherited"><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">FaceAntiSpoofConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section tsd-is-inherited"><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceAntiSpoofConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceAntiSpoofConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceAntiSpoofConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceAntiSpoofConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group tsd-is-inherited"><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>is module enabled?</p>
|
<p>is module enabled?</p>
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceDescriptionConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="FaceDescriptionConfig.html">FaceDescriptionConfig</a></li></ul><h1>Interface FaceDescriptionConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceDescriptionConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="FaceDescriptionConfig.html">FaceDescriptionConfig</a></li></ul><h1>Interface FaceDescriptionConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Description or face embedding part of face configuration</p>
|
<p>Description or face embedding part of face configuration</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>also used by age and gender detection</li>
|
<li>also used by age and gender detection</li>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceDetectorConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="FaceDetectorConfig.html">FaceDetectorConfig</a></li></ul><h1>Interface FaceDetectorConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceDetectorConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="FaceDetectorConfig.html">FaceDetectorConfig</a></li></ul><h1>Interface FaceDetectorConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Detector part of face configuration</p>
|
<p>Detector part of face configuration</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">FaceDetectorConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceDetectorConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceDetectorConfig.html#iouThreshold" class="tsd-kind-icon">iou<wbr/>Threshold</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceDetectorConfig.html#mask" class="tsd-kind-icon">mask</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceDetectorConfig.html#maxDetected" class="tsd-kind-icon">max<wbr/>Detected</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceDetectorConfig.html#minConfidence" class="tsd-kind-icon">min<wbr/>Confidence</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceDetectorConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceDetectorConfig.html#return" class="tsd-kind-icon">return</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceDetectorConfig.html#rotation" class="tsd-kind-icon">rotation</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceDetectorConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceDetectorConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">FaceDetectorConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceDetectorConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceDetectorConfig.html#iouThreshold" class="tsd-kind-icon">iou<wbr/>Threshold</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceDetectorConfig.html#mask" class="tsd-kind-icon">mask</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceDetectorConfig.html#maxDetected" class="tsd-kind-icon">max<wbr/>Detected</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceDetectorConfig.html#minConfidence" class="tsd-kind-icon">min<wbr/>Confidence</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceDetectorConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceDetectorConfig.html#return" class="tsd-kind-icon">return</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceDetectorConfig.html#rotation" class="tsd-kind-icon">rotation</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceDetectorConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceDetectorConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>is module enabled?</p>
|
<p>is module enabled?</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceEmotionConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="FaceEmotionConfig.html">FaceEmotionConfig</a></li></ul><h1>Interface FaceEmotionConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceEmotionConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="FaceEmotionConfig.html">FaceEmotionConfig</a></li></ul><h1>Interface FaceEmotionConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Emotion part of face configuration</p>
|
<p>Emotion part of face configuration</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">FaceEmotionConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceEmotionConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceEmotionConfig.html#minConfidence" class="tsd-kind-icon">min<wbr/>Confidence</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceEmotionConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceEmotionConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceEmotionConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">FaceEmotionConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceEmotionConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceEmotionConfig.html#minConfidence" class="tsd-kind-icon">min<wbr/>Confidence</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceEmotionConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceEmotionConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceEmotionConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>is module enabled?</p>
|
<p>is module enabled?</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceIrisConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="FaceIrisConfig.html">FaceIrisConfig</a></li></ul><h1>Interface FaceIrisConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceIrisConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="FaceIrisConfig.html">FaceIrisConfig</a></li></ul><h1>Interface FaceIrisConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Iris part of face configuration</p>
|
<p>Iris part of face configuration</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">FaceIrisConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section tsd-is-inherited"><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceIrisConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceIrisConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceIrisConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceIrisConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group tsd-is-inherited"><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">FaceIrisConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section tsd-is-inherited"><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceIrisConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceIrisConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceIrisConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceIrisConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group tsd-is-inherited"><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>is module enabled?</p>
|
<p>is module enabled?</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceLivenessConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="FaceLivenessConfig.html">FaceLivenessConfig</a></li></ul><h1>Interface FaceLivenessConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceLivenessConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="FaceLivenessConfig.html">FaceLivenessConfig</a></li></ul><h1>Interface FaceLivenessConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Liveness part of face configuration</p>
|
<p>Liveness part of face configuration</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">FaceLivenessConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section tsd-is-inherited"><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceLivenessConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceLivenessConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceLivenessConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceLivenessConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group tsd-is-inherited"><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">FaceLivenessConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section tsd-is-inherited"><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceLivenessConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceLivenessConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceLivenessConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceLivenessConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group tsd-is-inherited"><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>is module enabled?</p>
|
<p>is module enabled?</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceMeshConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="FaceMeshConfig.html">FaceMeshConfig</a></li></ul><h1>Interface FaceMeshConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceMeshConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="FaceMeshConfig.html">FaceMeshConfig</a></li></ul><h1>Interface FaceMeshConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Mesh part of face configuration</p>
|
<p>Mesh part of face configuration</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">FaceMeshConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section tsd-is-inherited"><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceMeshConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceMeshConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceMeshConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceMeshConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group tsd-is-inherited"><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">FaceMeshConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section tsd-is-inherited"><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceMeshConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceMeshConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceMeshConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="FaceMeshConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group tsd-is-inherited"><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>is module enabled?</p>
|
<p>is module enabled?</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceResult | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="FaceResult.html">FaceResult</a></li></ul><h1>Interface FaceResult</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FaceResult | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="FaceResult.html">FaceResult</a></li></ul><h1>Interface FaceResult</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Face results</p>
|
<p>Face results</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Combined results of face detector, face mesh, age, gender, emotion, embedding, iris models</li>
|
<li>Combined results of face detector, face mesh, age, gender, emotion, embedding, iris models</li>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FilterConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="FilterConfig.html">FilterConfig</a></li></ul><h1>Interface FilterConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>FilterConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="FilterConfig.html">FilterConfig</a></li></ul><h1>Interface FilterConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Run input through image filters before inference</p>
|
<p>Run input through image filters before inference</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>available only in Browser environments</li>
|
<li>available only in Browser environments</li>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>GenericConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="GenericConfig.html">GenericConfig</a></li></ul><h1>Interface GenericConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>GenericConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="GenericConfig.html">GenericConfig</a></li></ul><h1>Interface GenericConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Generic config type inherited by all module types</p>
|
<p>Generic config type inherited by all module types</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">GenericConfig</span><ul class="tsd-hierarchy"><li><a href="FaceDetectorConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceDetectorConfig</a></li><li><a href="FaceMeshConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceMeshConfig</a></li><li><a href="FaceIrisConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceIrisConfig</a></li><li><a href="FaceDescriptionConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceDescriptionConfig</a></li><li><a href="FaceEmotionConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceEmotionConfig</a></li><li><a href="FaceAntiSpoofConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceAntiSpoofConfig</a></li><li><a href="FaceLivenessConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceLivenessConfig</a></li><li><a href="FaceConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceConfig</a></li><li><a href="BodyConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">BodyConfig</a></li><li><a href="HandConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">HandConfig</a></li><li><a href="ObjectConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">ObjectConfig</a></li><li><a href="SegmentationConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">SegmentationConfig</a></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="GenericConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="GenericConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="GenericConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="GenericConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">GenericConfig</span><ul class="tsd-hierarchy"><li><a href="FaceDetectorConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceDetectorConfig</a></li><li><a href="FaceMeshConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceMeshConfig</a></li><li><a href="FaceIrisConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceIrisConfig</a></li><li><a href="FaceDescriptionConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceDescriptionConfig</a></li><li><a href="FaceEmotionConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceEmotionConfig</a></li><li><a href="FaceAntiSpoofConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceAntiSpoofConfig</a></li><li><a href="FaceLivenessConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceLivenessConfig</a></li><li><a href="FaceConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">FaceConfig</a></li><li><a href="BodyConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">BodyConfig</a></li><li><a href="HandConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">HandConfig</a></li><li><a href="ObjectConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">ObjectConfig</a></li><li><a href="SegmentationConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">SegmentationConfig</a></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="GenericConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="GenericConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="GenericConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="GenericConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>is module enabled?</p>
|
<p>is module enabled?</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>GestureConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="GestureConfig.html">GestureConfig</a></li></ul><h1>Interface GestureConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>GestureConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="GestureConfig.html">GestureConfig</a></li></ul><h1>Interface GestureConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Controlls gesture detection</p>
|
<p>Controlls gesture detection</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">GestureConfig</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="GestureConfig.html#enabled" class="tsd-kind-icon">enabled</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L196">src/config.ts:196</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">GestureConfig</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="GestureConfig.html#enabled" class="tsd-kind-icon">enabled</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L196">src/config.ts:196</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>is gesture detection enabled?</p>
|
<p>is gesture detection enabled?</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>HandConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="HandConfig.html">HandConfig</a></li></ul><h1>Interface HandConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>HandConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="HandConfig.html">HandConfig</a></li></ul><h1>Interface HandConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Configures all hand detection specific options</p>
|
<p>Configures all hand detection specific options</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">HandConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#detector" class="tsd-kind-icon">detector</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="HandConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#iouThreshold" class="tsd-kind-icon">iou<wbr/>Threshold</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#landmarks" class="tsd-kind-icon">landmarks</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#maxDetected" class="tsd-kind-icon">max<wbr/>Detected</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#minConfidence" class="tsd-kind-icon">min<wbr/>Confidence</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="HandConfig.html#modelPath-1" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#rotation" class="tsd-kind-icon">rotation</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#skeleton" class="tsd-kind-icon">skeleton</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="HandConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="HandConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="detector" class="tsd-anchor"></a><h3>detector</h3><div class="tsd-signature tsd-kind-icon">detector<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{ </span>modelPath<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> }</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L107">src/config.ts:107</a></li></ul></aside><div class="tsd-type-declaration"><h4>Type declaration</h4><ul class="tsd-parameters"><li class="tsd-parameter"><h5><span class="tsd-flag ts-flagOptional">Optional</span> model<wbr/>Path<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span></h5><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">HandConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#detector" class="tsd-kind-icon">detector</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="HandConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#iouThreshold" class="tsd-kind-icon">iou<wbr/>Threshold</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#landmarks" class="tsd-kind-icon">landmarks</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#maxDetected" class="tsd-kind-icon">max<wbr/>Detected</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#minConfidence" class="tsd-kind-icon">min<wbr/>Confidence</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="HandConfig.html#modelPath-1" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#rotation" class="tsd-kind-icon">rotation</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandConfig.html#skeleton" class="tsd-kind-icon">skeleton</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="HandConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="HandConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="detector" class="tsd-anchor"></a><h3>detector</h3><div class="tsd-signature tsd-kind-icon">detector<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{ </span>modelPath<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> }</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L107">src/config.ts:107</a></li></ul></aside><div class="tsd-type-declaration"><h4>Type declaration</h4><ul class="tsd-parameters"><li class="tsd-parameter"><h5><span class="tsd-flag ts-flagOptional">Optional</span> model<wbr/>Path<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span></h5><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>path to hand detector model json</p>
|
<p>path to hand detector model json</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>HandResult | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="HandResult.html">HandResult</a></li></ul><h1>Interface HandResult</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>HandResult | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="HandResult.html">HandResult</a></li></ul><h1>Interface HandResult</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Hand results</p>
|
<p>Hand results</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">HandResult</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#annotations" class="tsd-kind-icon">annotations</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#box" class="tsd-kind-icon">box</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#boxRaw" class="tsd-kind-icon">box<wbr/>Raw</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#boxScore" class="tsd-kind-icon">box<wbr/>Score</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#fingerScore" class="tsd-kind-icon">finger<wbr/>Score</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#id" class="tsd-kind-icon">id</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#keypoints" class="tsd-kind-icon">keypoints</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#label" class="tsd-kind-icon">label</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#landmarks" class="tsd-kind-icon">landmarks</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#score" class="tsd-kind-icon">score</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="annotations" class="tsd-anchor"></a><h3>annotations</h3><div class="tsd-signature tsd-kind-icon">annotations<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</span><a href="../index.html#Finger" class="tsd-signature-type" data-tsd-kind="Type alias">Finger</a><span class="tsd-signature-symbol">, </span><a href="../index.html#Point" class="tsd-signature-type" data-tsd-kind="Type alias">Point</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/result.ts#L139">src/result.ts:139</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">HandResult</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#annotations" class="tsd-kind-icon">annotations</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#box" class="tsd-kind-icon">box</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#boxRaw" class="tsd-kind-icon">box<wbr/>Raw</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#boxScore" class="tsd-kind-icon">box<wbr/>Score</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#fingerScore" class="tsd-kind-icon">finger<wbr/>Score</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#id" class="tsd-kind-icon">id</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#keypoints" class="tsd-kind-icon">keypoints</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#label" class="tsd-kind-icon">label</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#landmarks" class="tsd-kind-icon">landmarks</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="HandResult.html#score" class="tsd-kind-icon">score</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="annotations" class="tsd-anchor"></a><h3>annotations</h3><div class="tsd-signature tsd-kind-icon">annotations<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</span><a href="../index.html#Finger" class="tsd-signature-type" data-tsd-kind="Type alias">Finger</a><span class="tsd-signature-symbol">, </span><a href="../index.html#Point" class="tsd-signature-type" data-tsd-kind="Type alias">Point</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/result.ts#L139">src/result.ts:139</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>detected hand keypoints combined into annotated parts</p>
|
<p>detected hand keypoints combined into annotated parts</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ObjectConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="ObjectConfig.html">ObjectConfig</a></li></ul><h1>Interface ObjectConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ObjectConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="ObjectConfig.html">ObjectConfig</a></li></ul><h1>Interface ObjectConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Configures all object detection specific options</p>
|
<p>Configures all object detection specific options</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">ObjectConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="ObjectConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectConfig.html#iouThreshold" class="tsd-kind-icon">iou<wbr/>Threshold</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectConfig.html#maxDetected" class="tsd-kind-icon">max<wbr/>Detected</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectConfig.html#minConfidence" class="tsd-kind-icon">min<wbr/>Confidence</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="ObjectConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="ObjectConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="ObjectConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="GenericConfig.html" class="tsd-signature-type" data-tsd-kind="Interface">GenericConfig</a><ul class="tsd-hierarchy"><li><span class="target">ObjectConfig</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="ObjectConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectConfig.html#iouThreshold" class="tsd-kind-icon">iou<wbr/>Threshold</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectConfig.html#maxDetected" class="tsd-kind-icon">max<wbr/>Detected</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectConfig.html#minConfidence" class="tsd-kind-icon">min<wbr/>Confidence</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="ObjectConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="ObjectConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</a></li><li class="tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a href="ObjectConfig.html#skipTime" class="tsd-kind-icon">skip<wbr/>Time</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-inherited"><a id="enabled" class="tsd-anchor"></a><h3>enabled</h3><div class="tsd-signature tsd-kind-icon">enabled<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div><aside class="tsd-sources"><p>Inherited from <a href="GenericConfig.html">GenericConfig</a>.<a href="GenericConfig.html#enabled">enabled</a></p><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/config.ts#L7">src/config.ts:7</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>is module enabled?</p>
|
<p>is module enabled?</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ObjectResult | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="ObjectResult.html">ObjectResult</a></li></ul><h1>Interface ObjectResult</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ObjectResult | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="ObjectResult.html">ObjectResult</a></li></ul><h1>Interface ObjectResult</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Object results</p>
|
<p>Object results</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">ObjectResult</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectResult.html#box" class="tsd-kind-icon">box</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectResult.html#boxRaw" class="tsd-kind-icon">box<wbr/>Raw</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectResult.html#class" class="tsd-kind-icon">class</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectResult.html#id" class="tsd-kind-icon">id</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectResult.html#label" class="tsd-kind-icon">label</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectResult.html#score" class="tsd-kind-icon">score</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="box" class="tsd-anchor"></a><h3>box</h3><div class="tsd-signature tsd-kind-icon">box<span class="tsd-signature-symbol">:</span> <a href="../index.html#Box" class="tsd-signature-type" data-tsd-kind="Type alias">Box</a></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/result.ts#L162">src/result.ts:162</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">ObjectResult</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectResult.html#box" class="tsd-kind-icon">box</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectResult.html#boxRaw" class="tsd-kind-icon">box<wbr/>Raw</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectResult.html#class" class="tsd-kind-icon">class</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectResult.html#id" class="tsd-kind-icon">id</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectResult.html#label" class="tsd-kind-icon">label</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="ObjectResult.html#score" class="tsd-kind-icon">score</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="box" class="tsd-anchor"></a><h3>box</h3><div class="tsd-signature tsd-kind-icon">box<span class="tsd-signature-symbol">:</span> <a href="../index.html#Box" class="tsd-signature-type" data-tsd-kind="Type alias">Box</a></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/result.ts#L162">src/result.ts:162</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>detected object box</p>
|
<p>detected object box</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>PersonResult | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="PersonResult.html">PersonResult</a></li></ul><h1>Interface PersonResult</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>PersonResult | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="PersonResult.html">PersonResult</a></li></ul><h1>Interface PersonResult</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Person getter</p>
|
<p>Person getter</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Triggers combining all individual results into a virtual person object</li>
|
<li>Triggers combining all individual results into a virtual person object</li>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Result | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="Result.html">Result</a></li></ul><h1>Interface Result</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Result | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="Result.html">Result</a></li></ul><h1>Interface Result</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Result interface definition for <strong>Human</strong> library</p>
|
<p>Result interface definition for <strong>Human</strong> library</p>
|
||||||
</div><div><p>Contains all possible detection results</p>
|
</div><div><p>Contains all possible detection results</p>
|
||||||
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">Result</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#body" class="tsd-kind-icon">body</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#canvas" class="tsd-kind-icon">canvas</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#error" class="tsd-kind-icon">error</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#face" class="tsd-kind-icon">face</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#gesture" class="tsd-kind-icon">gesture</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#hand" class="tsd-kind-icon">hand</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#object" class="tsd-kind-icon">object</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#performance" class="tsd-kind-icon">performance</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#persons" class="tsd-kind-icon">persons</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#timestamp" class="tsd-kind-icon">timestamp</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="body" class="tsd-anchor"></a><h3>body</h3><div class="tsd-signature tsd-kind-icon">body<span class="tsd-signature-symbol">:</span> <a href="BodyResult.html" class="tsd-signature-type" data-tsd-kind="Interface">BodyResult</a><span class="tsd-signature-symbol">[]</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/result.ts#L207">src/result.ts:207</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">Result</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#body" class="tsd-kind-icon">body</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#canvas" class="tsd-kind-icon">canvas</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#error" class="tsd-kind-icon">error</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#face" class="tsd-kind-icon">face</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#gesture" class="tsd-kind-icon">gesture</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#hand" class="tsd-kind-icon">hand</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#object" class="tsd-kind-icon">object</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#performance" class="tsd-kind-icon">performance</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#persons" class="tsd-kind-icon">persons</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="Result.html#timestamp" class="tsd-kind-icon">timestamp</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a id="body" class="tsd-anchor"></a><h3>body</h3><div class="tsd-signature tsd-kind-icon">body<span class="tsd-signature-symbol">:</span> <a href="BodyResult.html" class="tsd-signature-type" data-tsd-kind="Interface">BodyResult</a><span class="tsd-signature-symbol">[]</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/vladmandic/human/blob/main/src/result.ts#L207">src/result.ts:207</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>SegmentationConfig | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="SegmentationConfig.html">SegmentationConfig</a></li></ul><h1>Interface SegmentationConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>SegmentationConfig | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="SegmentationConfig.html">SegmentationConfig</a></li></ul><h1>Interface SegmentationConfig</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
<p>Configures all body segmentation module
|
<p>Configures all body segmentation module
|
||||||
removes background from input containing person
|
removes background from input containing person
|
||||||
if segmentation is enabled it will run as preprocessing task before any other model
|
if segmentation is enabled it will run as preprocessing task before any other model
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Tensor | @vladmandic/human - v2.5.8</title><meta name="description" content="Documentation for @vladmandic/human - v2.5.8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.5.8</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.5.8</a></li><li><a href="Tensor.html">Tensor</a></li></ul><h1>Namespace Tensor</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class=""><a href="../index.html">Exports</a></li><li class="current tsd-kind-namespace"><a href="Tensor.html">Tensor</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul></ul></nav></div></div></div><footer class=""><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="overlay"></div><script src="../assets/main.js"></script></body></html>
|
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Tensor | @vladmandic/human - v2.6.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.6.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vladmandic/human - v2.6.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../index.html">@vladmandic/human - v2.6.0</a></li><li><a href="Tensor.html">Tensor</a></li></ul><h1>Namespace Tensor</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class=""><a href="../index.html">Exports</a></li><li class="current tsd-kind-namespace"><a href="Tensor.html">Tensor</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul></ul></nav></div></div></div><footer class=""><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="overlay"></div><script src="../assets/main.js"></script></body></html>
|
|
@ -190,6 +190,10 @@ export declare interface Config {
|
||||||
* default: `../models/` for browsers and `file://models/` for nodejs
|
* default: `../models/` for browsers and `file://models/` for nodejs
|
||||||
*/
|
*/
|
||||||
modelBasePath: string;
|
modelBasePath: string;
|
||||||
|
/** Cache models in IndexDB on first sucessfull load
|
||||||
|
* default: true if indexdb is available (browsers), false if its not (nodejs)
|
||||||
|
*/
|
||||||
|
cacheModels: boolean;
|
||||||
/** Cache sensitivity
|
/** Cache sensitivity
|
||||||
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
* - values 0..1 where 0.01 means reset cache if input changed more than 1%
|
||||||
* - set to 0 to disable caching
|
* - set to 0 to disable caching
|
||||||
|
@ -778,7 +782,7 @@ declare interface GPUData {
|
||||||
*
|
*
|
||||||
* A `tf.GraphModel` can only be created by loading from a model converted from
|
* A `tf.GraphModel` can only be created by loading from a model converted from
|
||||||
* a [TensorFlow SavedModel](https://www.tensorflow.org/guide/saved_model) using
|
* a [TensorFlow SavedModel](https://www.tensorflow.org/guide/saved_model) using
|
||||||
* the command line converter tool and loaded via `loadModel`.
|
* the command line converter tool and loaded via `tf.loadGraphModel`.
|
||||||
*
|
*
|
||||||
* @doc {heading: 'Models', subheading: 'Classes'}
|
* @doc {heading: 'Models', subheading: 'Classes'}
|
||||||
*/
|
*/
|
||||||
|
@ -847,13 +851,13 @@ export declare class GraphModel implements InferenceModel {
|
||||||
* ```js
|
* ```js
|
||||||
* const modelUrl =
|
* const modelUrl =
|
||||||
* 'https://storage.googleapis.com/tfjs-models/savedmodel/mobilenet_v2_1.0_224/model.json';
|
* 'https://storage.googleapis.com/tfjs-models/savedmodel/mobilenet_v2_1.0_224/model.json';
|
||||||
* const model = await loadModel(modelUrl);
|
* const model = await tf.loadGraphModel(modelUrl);
|
||||||
* const zeros = tf.zeros([1, 224, 224, 3]);
|
* const zeros = tf.zeros([1, 224, 224, 3]);
|
||||||
* model.predict(zeros).print();
|
* model.predict(zeros).print();
|
||||||
*
|
*
|
||||||
* const saveResults = await model.save('localstorage://my-model-1');
|
* const saveResults = await model.save('localstorage://my-model-1');
|
||||||
*
|
*
|
||||||
* const loadedModel = await loadModel('localstorage://my-model-1');
|
* const loadedModel = await tf.loadGraphModel('localstorage://my-model-1');
|
||||||
* console.log('Prediction from loaded model:');
|
* console.log('Prediction from loaded model:');
|
||||||
* model.predict(zeros).print();
|
* model.predict(zeros).print();
|
||||||
* ```
|
* ```
|
||||||
|
|
Loading…
Reference in New Issue