mirror of https://github.com/vladmandic/human
tweaked default values
parent
0a05da2e71
commit
2f4d4f8620
|
@ -9,8 +9,14 @@
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
### **HEAD -> main** 2021/09/27 mandic00@live.com
|
### **HEAD -> main** 2021/09/28 mandic00@live.com
|
||||||
|
|
||||||
|
- enable handtrack as default model
|
||||||
|
- redesign face processing
|
||||||
|
|
||||||
|
### **origin/main** 2021/09/27 mandic00@live.com
|
||||||
|
|
||||||
|
- refactoring
|
||||||
- define app specific types
|
- define app specific types
|
||||||
- implement box caching for movenet
|
- implement box caching for movenet
|
||||||
- autodetect number of bodies and hands
|
- autodetect number of bodies and hands
|
||||||
|
|
|
@ -139,7 +139,7 @@ var config = {
|
||||||
modelPath: "blazeface.json",
|
modelPath: "blazeface.json",
|
||||||
rotation: true,
|
rotation: true,
|
||||||
maxDetected: 1,
|
maxDetected: 1,
|
||||||
skipFrames: 15,
|
skipFrames: 11,
|
||||||
minConfidence: 0.2,
|
minConfidence: 0.2,
|
||||||
iouThreshold: 0.1,
|
iouThreshold: 0.1,
|
||||||
return: false
|
return: false
|
||||||
|
@ -152,17 +152,17 @@ var config = {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
modelPath: "iris.json"
|
modelPath: "iris.json"
|
||||||
},
|
},
|
||||||
description: {
|
|
||||||
enabled: true,
|
|
||||||
modelPath: "faceres.json",
|
|
||||||
skipFrames: 11,
|
|
||||||
minConfidence: 0.1
|
|
||||||
},
|
|
||||||
emotion: {
|
emotion: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
minConfidence: 0.1,
|
minConfidence: 0.1,
|
||||||
skipFrames: 17,
|
skipFrames: 12,
|
||||||
modelPath: "emotion.json"
|
modelPath: "emotion.json"
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
enabled: true,
|
||||||
|
modelPath: "faceres.json",
|
||||||
|
skipFrames: 13,
|
||||||
|
minConfidence: 0.1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
body: {
|
body: {
|
||||||
|
@ -178,7 +178,7 @@ var config = {
|
||||||
hand: {
|
hand: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
rotation: true,
|
rotation: true,
|
||||||
skipFrames: 18,
|
skipFrames: 14,
|
||||||
minConfidence: 0.5,
|
minConfidence: 0.5,
|
||||||
iouThreshold: 0.2,
|
iouThreshold: 0.2,
|
||||||
maxDetected: -1,
|
maxDetected: -1,
|
||||||
|
@ -196,7 +196,7 @@ var config = {
|
||||||
minConfidence: 0.2,
|
minConfidence: 0.2,
|
||||||
iouThreshold: 0.4,
|
iouThreshold: 0.4,
|
||||||
maxDetected: 10,
|
maxDetected: 10,
|
||||||
skipFrames: 19
|
skipFrames: 15
|
||||||
},
|
},
|
||||||
segmentation: {
|
segmentation: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
|
@ -9572,7 +9572,7 @@ async function detectHands(input, config3) {
|
||||||
const classScores = tfjs_esm_exports.unstack(t.scores, 1);
|
const classScores = tfjs_esm_exports.unstack(t.scores, 1);
|
||||||
let id = 0;
|
let id = 0;
|
||||||
for (let i = 0; i < classScores.length; i++) {
|
for (let i = 0; i < classScores.length; i++) {
|
||||||
if (i !== 0 && i !== 1)
|
if (i === 4)
|
||||||
continue;
|
continue;
|
||||||
t.nms = await tfjs_esm_exports.image.nonMaxSuppressionAsync(t.boxes, classScores[i], config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
t.nms = await tfjs_esm_exports.image.nonMaxSuppressionAsync(t.boxes, classScores[i], config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
||||||
const nms = await t.nms.data();
|
const nms = await t.nms.data();
|
||||||
|
@ -9618,9 +9618,7 @@ async function detectFingers(input, h, config3) {
|
||||||
landmarks: {},
|
landmarks: {},
|
||||||
annotations: {}
|
annotations: {}
|
||||||
};
|
};
|
||||||
if (!input || !models2[1])
|
if (input && models2[1] && config3.hand.landmarks) {
|
||||||
return hand3;
|
|
||||||
if (config3.hand.landmarks) {
|
|
||||||
const t = {};
|
const t = {};
|
||||||
if (!h.yxBox)
|
if (!h.yxBox)
|
||||||
return hand3;
|
return hand3;
|
||||||
|
@ -9628,8 +9626,9 @@ async function detectFingers(input, h, config3) {
|
||||||
t.cast = tfjs_esm_exports.cast(t.crop, "float32");
|
t.cast = tfjs_esm_exports.cast(t.crop, "float32");
|
||||||
t.div = tfjs_esm_exports.div(t.cast, 255);
|
t.div = tfjs_esm_exports.div(t.cast, 255);
|
||||||
[t.score, t.keypoints] = models2[1].execute(t.div);
|
[t.score, t.keypoints] = models2[1].execute(t.div);
|
||||||
const score2 = Math.round(100 * (await t.score.data())[0] / 100);
|
const rawScore = (await t.score.data())[0];
|
||||||
if (score2 > (config3.hand.minConfidence || 0)) {
|
const score2 = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||||
|
if (score2 >= (config3.hand.minConfidence || 0)) {
|
||||||
hand3.fingerScore = score2;
|
hand3.fingerScore = score2;
|
||||||
t.reshaped = tfjs_esm_exports.reshape(t.keypoints, [-1, 3]);
|
t.reshaped = tfjs_esm_exports.reshape(t.keypoints, [-1, 3]);
|
||||||
const rawCoords = await t.reshaped.array();
|
const rawCoords = await t.reshaped.array();
|
||||||
|
@ -9647,7 +9646,9 @@ async function detectFingers(input, h, config3) {
|
||||||
for (const key of Object.keys(fingerMap)) {
|
for (const key of Object.keys(fingerMap)) {
|
||||||
hand3.annotations[key] = fingerMap[key].map((index) => hand3.landmarks && hand3.keypoints[index] ? hand3.keypoints[index] : null);
|
hand3.annotations[key] = fingerMap[key].map((index) => hand3.landmarks && hand3.keypoints[index] ? hand3.keypoints[index] : null);
|
||||||
}
|
}
|
||||||
cache.tmpBoxes.push(h);
|
const ratioBoxFrame = Math.min(h.box[2] / (input.shape[2] || 1), h.box[3] / (input.shape[1] || 1));
|
||||||
|
if (ratioBoxFrame > 0.05)
|
||||||
|
cache.tmpBoxes.push(h);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tfjs_esm_exports.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tfjs_esm_exports.dispose(t[tensor3]));
|
||||||
}
|
}
|
||||||
|
@ -9659,6 +9660,8 @@ async function predict6(input, config3) {
|
||||||
cache.tmpBoxes = [];
|
cache.tmpBoxes = [];
|
||||||
if (!config3.hand.landmarks)
|
if (!config3.hand.landmarks)
|
||||||
cache.fingerBoxes = cache.handBoxes;
|
cache.fingerBoxes = cache.handBoxes;
|
||||||
|
if (!config3.skipFrame)
|
||||||
|
cache.fingerBoxes = [];
|
||||||
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
||||||
skipped4++;
|
skipped4++;
|
||||||
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||||
|
@ -9667,8 +9670,7 @@ async function predict6(input, config3) {
|
||||||
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||||
if (hands.length !== config3.hand.maxDetected) {
|
if (hands.length !== config3.hand.maxDetected) {
|
||||||
cache.handBoxes = await detectHands(input, config3);
|
cache.handBoxes = await detectHands(input, config3);
|
||||||
const newHands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
hands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||||
hands = hands.concat(newHands);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cache.fingerBoxes = [...cache.tmpBoxes];
|
cache.fingerBoxes = [...cache.tmpBoxes];
|
||||||
|
@ -11260,10 +11262,10 @@ async function hand2(inCanvas2, result, drawOptions) {
|
||||||
if (localOptions.drawLabels) {
|
if (localOptions.drawLabels) {
|
||||||
if (localOptions.shadowColor && localOptions.shadowColor !== "") {
|
if (localOptions.shadowColor && localOptions.shadowColor !== "") {
|
||||||
ctx.fillStyle = localOptions.shadowColor;
|
ctx.fillStyle = localOptions.shadowColor;
|
||||||
ctx.fillText(`${h.label}:${Math.trunc(100 * h.score)}%`, h.box[0] + 3, 1 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
ctx.fillText(`hand:${Math.trunc(100 * h.score)}%`, h.box[0] + 3, 1 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
||||||
}
|
}
|
||||||
ctx.fillStyle = localOptions.labelColor;
|
ctx.fillStyle = localOptions.labelColor;
|
||||||
ctx.fillText(`${h.label}:${Math.trunc(100 * h.score)}%`, h.box[0] + 2, 0 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
ctx.fillText(`hand:${Math.trunc(100 * h.score)}%`, h.box[0] + 2, 0 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
||||||
}
|
}
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -135,7 +135,7 @@ var config = {
|
||||||
modelPath: "blazeface.json",
|
modelPath: "blazeface.json",
|
||||||
rotation: true,
|
rotation: true,
|
||||||
maxDetected: 1,
|
maxDetected: 1,
|
||||||
skipFrames: 15,
|
skipFrames: 11,
|
||||||
minConfidence: 0.2,
|
minConfidence: 0.2,
|
||||||
iouThreshold: 0.1,
|
iouThreshold: 0.1,
|
||||||
return: false
|
return: false
|
||||||
|
@ -148,17 +148,17 @@ var config = {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
modelPath: "iris.json"
|
modelPath: "iris.json"
|
||||||
},
|
},
|
||||||
description: {
|
|
||||||
enabled: true,
|
|
||||||
modelPath: "faceres.json",
|
|
||||||
skipFrames: 11,
|
|
||||||
minConfidence: 0.1
|
|
||||||
},
|
|
||||||
emotion: {
|
emotion: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
minConfidence: 0.1,
|
minConfidence: 0.1,
|
||||||
skipFrames: 17,
|
skipFrames: 12,
|
||||||
modelPath: "emotion.json"
|
modelPath: "emotion.json"
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
enabled: true,
|
||||||
|
modelPath: "faceres.json",
|
||||||
|
skipFrames: 13,
|
||||||
|
minConfidence: 0.1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
body: {
|
body: {
|
||||||
|
@ -174,7 +174,7 @@ var config = {
|
||||||
hand: {
|
hand: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
rotation: true,
|
rotation: true,
|
||||||
skipFrames: 18,
|
skipFrames: 14,
|
||||||
minConfidence: 0.5,
|
minConfidence: 0.5,
|
||||||
iouThreshold: 0.2,
|
iouThreshold: 0.2,
|
||||||
maxDetected: -1,
|
maxDetected: -1,
|
||||||
|
@ -192,7 +192,7 @@ var config = {
|
||||||
minConfidence: 0.2,
|
minConfidence: 0.2,
|
||||||
iouThreshold: 0.4,
|
iouThreshold: 0.4,
|
||||||
maxDetected: 10,
|
maxDetected: 10,
|
||||||
skipFrames: 19
|
skipFrames: 15
|
||||||
},
|
},
|
||||||
segmentation: {
|
segmentation: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
|
@ -69640,7 +69640,7 @@ async function detectHands(input2, config3) {
|
||||||
const classScores = unstack(t.scores, 1);
|
const classScores = unstack(t.scores, 1);
|
||||||
let id = 0;
|
let id = 0;
|
||||||
for (let i = 0; i < classScores.length; i++) {
|
for (let i = 0; i < classScores.length; i++) {
|
||||||
if (i !== 0 && i !== 1)
|
if (i === 4)
|
||||||
continue;
|
continue;
|
||||||
t.nms = await image.nonMaxSuppressionAsync(t.boxes, classScores[i], config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
t.nms = await image.nonMaxSuppressionAsync(t.boxes, classScores[i], config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
||||||
const nms = await t.nms.data();
|
const nms = await t.nms.data();
|
||||||
|
@ -69686,9 +69686,7 @@ async function detectFingers(input2, h, config3) {
|
||||||
landmarks: {},
|
landmarks: {},
|
||||||
annotations: {}
|
annotations: {}
|
||||||
};
|
};
|
||||||
if (!input2 || !models2[1])
|
if (input2 && models2[1] && config3.hand.landmarks) {
|
||||||
return hand3;
|
|
||||||
if (config3.hand.landmarks) {
|
|
||||||
const t = {};
|
const t = {};
|
||||||
if (!h.yxBox)
|
if (!h.yxBox)
|
||||||
return hand3;
|
return hand3;
|
||||||
|
@ -69696,8 +69694,9 @@ async function detectFingers(input2, h, config3) {
|
||||||
t.cast = cast(t.crop, "float32");
|
t.cast = cast(t.crop, "float32");
|
||||||
t.div = div(t.cast, 255);
|
t.div = div(t.cast, 255);
|
||||||
[t.score, t.keypoints] = models2[1].execute(t.div);
|
[t.score, t.keypoints] = models2[1].execute(t.div);
|
||||||
const score2 = Math.round(100 * (await t.score.data())[0] / 100);
|
const rawScore = (await t.score.data())[0];
|
||||||
if (score2 > (config3.hand.minConfidence || 0)) {
|
const score2 = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||||
|
if (score2 >= (config3.hand.minConfidence || 0)) {
|
||||||
hand3.fingerScore = score2;
|
hand3.fingerScore = score2;
|
||||||
t.reshaped = reshape(t.keypoints, [-1, 3]);
|
t.reshaped = reshape(t.keypoints, [-1, 3]);
|
||||||
const rawCoords = await t.reshaped.array();
|
const rawCoords = await t.reshaped.array();
|
||||||
|
@ -69715,7 +69714,9 @@ async function detectFingers(input2, h, config3) {
|
||||||
for (const key of Object.keys(fingerMap)) {
|
for (const key of Object.keys(fingerMap)) {
|
||||||
hand3.annotations[key] = fingerMap[key].map((index) => hand3.landmarks && hand3.keypoints[index] ? hand3.keypoints[index] : null);
|
hand3.annotations[key] = fingerMap[key].map((index) => hand3.landmarks && hand3.keypoints[index] ? hand3.keypoints[index] : null);
|
||||||
}
|
}
|
||||||
cache.tmpBoxes.push(h);
|
const ratioBoxFrame = Math.min(h.box[2] / (input2.shape[2] || 1), h.box[3] / (input2.shape[1] || 1));
|
||||||
|
if (ratioBoxFrame > 0.05)
|
||||||
|
cache.tmpBoxes.push(h);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor2) => dispose(t[tensor2]));
|
Object.keys(t).forEach((tensor2) => dispose(t[tensor2]));
|
||||||
}
|
}
|
||||||
|
@ -69727,6 +69728,8 @@ async function predict6(input2, config3) {
|
||||||
cache.tmpBoxes = [];
|
cache.tmpBoxes = [];
|
||||||
if (!config3.hand.landmarks)
|
if (!config3.hand.landmarks)
|
||||||
cache.fingerBoxes = cache.handBoxes;
|
cache.fingerBoxes = cache.handBoxes;
|
||||||
|
if (!config3.skipFrame)
|
||||||
|
cache.fingerBoxes = [];
|
||||||
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
||||||
skipped4++;
|
skipped4++;
|
||||||
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input2, hand3, config3)));
|
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input2, hand3, config3)));
|
||||||
|
@ -69735,8 +69738,7 @@ async function predict6(input2, config3) {
|
||||||
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input2, hand3, config3)));
|
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input2, hand3, config3)));
|
||||||
if (hands.length !== config3.hand.maxDetected) {
|
if (hands.length !== config3.hand.maxDetected) {
|
||||||
cache.handBoxes = await detectHands(input2, config3);
|
cache.handBoxes = await detectHands(input2, config3);
|
||||||
const newHands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input2, hand3, config3)));
|
hands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input2, hand3, config3)));
|
||||||
hands = hands.concat(newHands);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cache.fingerBoxes = [...cache.tmpBoxes];
|
cache.fingerBoxes = [...cache.tmpBoxes];
|
||||||
|
@ -71328,10 +71330,10 @@ async function hand2(inCanvas2, result, drawOptions) {
|
||||||
if (localOptions.drawLabels) {
|
if (localOptions.drawLabels) {
|
||||||
if (localOptions.shadowColor && localOptions.shadowColor !== "") {
|
if (localOptions.shadowColor && localOptions.shadowColor !== "") {
|
||||||
ctx.fillStyle = localOptions.shadowColor;
|
ctx.fillStyle = localOptions.shadowColor;
|
||||||
ctx.fillText(`${h.label}:${Math.trunc(100 * h.score)}%`, h.box[0] + 3, 1 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
ctx.fillText(`hand:${Math.trunc(100 * h.score)}%`, h.box[0] + 3, 1 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
||||||
}
|
}
|
||||||
ctx.fillStyle = localOptions.labelColor;
|
ctx.fillStyle = localOptions.labelColor;
|
||||||
ctx.fillText(`${h.label}:${Math.trunc(100 * h.score)}%`, h.box[0] + 2, 0 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
ctx.fillText(`hand:${Math.trunc(100 * h.score)}%`, h.box[0] + 2, 0 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
||||||
}
|
}
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -182,7 +182,7 @@ var config = {
|
||||||
modelPath: "blazeface.json",
|
modelPath: "blazeface.json",
|
||||||
rotation: true,
|
rotation: true,
|
||||||
maxDetected: 1,
|
maxDetected: 1,
|
||||||
skipFrames: 15,
|
skipFrames: 11,
|
||||||
minConfidence: 0.2,
|
minConfidence: 0.2,
|
||||||
iouThreshold: 0.1,
|
iouThreshold: 0.1,
|
||||||
return: false
|
return: false
|
||||||
|
@ -195,17 +195,17 @@ var config = {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
modelPath: "iris.json"
|
modelPath: "iris.json"
|
||||||
},
|
},
|
||||||
description: {
|
|
||||||
enabled: true,
|
|
||||||
modelPath: "faceres.json",
|
|
||||||
skipFrames: 11,
|
|
||||||
minConfidence: 0.1
|
|
||||||
},
|
|
||||||
emotion: {
|
emotion: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
minConfidence: 0.1,
|
minConfidence: 0.1,
|
||||||
skipFrames: 17,
|
skipFrames: 12,
|
||||||
modelPath: "emotion.json"
|
modelPath: "emotion.json"
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
enabled: true,
|
||||||
|
modelPath: "faceres.json",
|
||||||
|
skipFrames: 13,
|
||||||
|
minConfidence: 0.1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
body: {
|
body: {
|
||||||
|
@ -221,7 +221,7 @@ var config = {
|
||||||
hand: {
|
hand: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
rotation: true,
|
rotation: true,
|
||||||
skipFrames: 18,
|
skipFrames: 14,
|
||||||
minConfidence: 0.5,
|
minConfidence: 0.5,
|
||||||
iouThreshold: 0.2,
|
iouThreshold: 0.2,
|
||||||
maxDetected: -1,
|
maxDetected: -1,
|
||||||
|
@ -239,7 +239,7 @@ var config = {
|
||||||
minConfidence: 0.2,
|
minConfidence: 0.2,
|
||||||
iouThreshold: 0.4,
|
iouThreshold: 0.4,
|
||||||
maxDetected: 10,
|
maxDetected: 10,
|
||||||
skipFrames: 19
|
skipFrames: 15
|
||||||
},
|
},
|
||||||
segmentation: {
|
segmentation: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
|
@ -9624,7 +9624,7 @@ async function detectHands(input, config3) {
|
||||||
const classScores = tf16.unstack(t.scores, 1);
|
const classScores = tf16.unstack(t.scores, 1);
|
||||||
let id = 0;
|
let id = 0;
|
||||||
for (let i = 0; i < classScores.length; i++) {
|
for (let i = 0; i < classScores.length; i++) {
|
||||||
if (i !== 0 && i !== 1)
|
if (i === 4)
|
||||||
continue;
|
continue;
|
||||||
t.nms = await tf16.image.nonMaxSuppressionAsync(t.boxes, classScores[i], config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
t.nms = await tf16.image.nonMaxSuppressionAsync(t.boxes, classScores[i], config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
||||||
const nms = await t.nms.data();
|
const nms = await t.nms.data();
|
||||||
|
@ -9670,9 +9670,7 @@ async function detectFingers(input, h, config3) {
|
||||||
landmarks: {},
|
landmarks: {},
|
||||||
annotations: {}
|
annotations: {}
|
||||||
};
|
};
|
||||||
if (!input || !models2[1])
|
if (input && models2[1] && config3.hand.landmarks) {
|
||||||
return hand3;
|
|
||||||
if (config3.hand.landmarks) {
|
|
||||||
const t = {};
|
const t = {};
|
||||||
if (!h.yxBox)
|
if (!h.yxBox)
|
||||||
return hand3;
|
return hand3;
|
||||||
|
@ -9680,8 +9678,9 @@ async function detectFingers(input, h, config3) {
|
||||||
t.cast = tf16.cast(t.crop, "float32");
|
t.cast = tf16.cast(t.crop, "float32");
|
||||||
t.div = tf16.div(t.cast, 255);
|
t.div = tf16.div(t.cast, 255);
|
||||||
[t.score, t.keypoints] = models2[1].execute(t.div);
|
[t.score, t.keypoints] = models2[1].execute(t.div);
|
||||||
const score2 = Math.round(100 * (await t.score.data())[0] / 100);
|
const rawScore = (await t.score.data())[0];
|
||||||
if (score2 > (config3.hand.minConfidence || 0)) {
|
const score2 = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||||
|
if (score2 >= (config3.hand.minConfidence || 0)) {
|
||||||
hand3.fingerScore = score2;
|
hand3.fingerScore = score2;
|
||||||
t.reshaped = tf16.reshape(t.keypoints, [-1, 3]);
|
t.reshaped = tf16.reshape(t.keypoints, [-1, 3]);
|
||||||
const rawCoords = await t.reshaped.array();
|
const rawCoords = await t.reshaped.array();
|
||||||
|
@ -9699,7 +9698,9 @@ async function detectFingers(input, h, config3) {
|
||||||
for (const key of Object.keys(fingerMap)) {
|
for (const key of Object.keys(fingerMap)) {
|
||||||
hand3.annotations[key] = fingerMap[key].map((index) => hand3.landmarks && hand3.keypoints[index] ? hand3.keypoints[index] : null);
|
hand3.annotations[key] = fingerMap[key].map((index) => hand3.landmarks && hand3.keypoints[index] ? hand3.keypoints[index] : null);
|
||||||
}
|
}
|
||||||
cache.tmpBoxes.push(h);
|
const ratioBoxFrame = Math.min(h.box[2] / (input.shape[2] || 1), h.box[3] / (input.shape[1] || 1));
|
||||||
|
if (ratioBoxFrame > 0.05)
|
||||||
|
cache.tmpBoxes.push(h);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf16.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf16.dispose(t[tensor3]));
|
||||||
}
|
}
|
||||||
|
@ -9711,6 +9712,8 @@ async function predict6(input, config3) {
|
||||||
cache.tmpBoxes = [];
|
cache.tmpBoxes = [];
|
||||||
if (!config3.hand.landmarks)
|
if (!config3.hand.landmarks)
|
||||||
cache.fingerBoxes = cache.handBoxes;
|
cache.fingerBoxes = cache.handBoxes;
|
||||||
|
if (!config3.skipFrame)
|
||||||
|
cache.fingerBoxes = [];
|
||||||
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
||||||
skipped4++;
|
skipped4++;
|
||||||
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||||
|
@ -9719,8 +9722,7 @@ async function predict6(input, config3) {
|
||||||
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||||
if (hands.length !== config3.hand.maxDetected) {
|
if (hands.length !== config3.hand.maxDetected) {
|
||||||
cache.handBoxes = await detectHands(input, config3);
|
cache.handBoxes = await detectHands(input, config3);
|
||||||
const newHands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
hands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||||
hands = hands.concat(newHands);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cache.fingerBoxes = [...cache.tmpBoxes];
|
cache.fingerBoxes = [...cache.tmpBoxes];
|
||||||
|
@ -11326,10 +11328,10 @@ async function hand2(inCanvas2, result, drawOptions) {
|
||||||
if (localOptions.drawLabels) {
|
if (localOptions.drawLabels) {
|
||||||
if (localOptions.shadowColor && localOptions.shadowColor !== "") {
|
if (localOptions.shadowColor && localOptions.shadowColor !== "") {
|
||||||
ctx.fillStyle = localOptions.shadowColor;
|
ctx.fillStyle = localOptions.shadowColor;
|
||||||
ctx.fillText(`${h.label}:${Math.trunc(100 * h.score)}%`, h.box[0] + 3, 1 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
ctx.fillText(`hand:${Math.trunc(100 * h.score)}%`, h.box[0] + 3, 1 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
||||||
}
|
}
|
||||||
ctx.fillStyle = localOptions.labelColor;
|
ctx.fillStyle = localOptions.labelColor;
|
||||||
ctx.fillText(`${h.label}:${Math.trunc(100 * h.score)}%`, h.box[0] + 2, 0 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
ctx.fillText(`hand:${Math.trunc(100 * h.score)}%`, h.box[0] + 2, 0 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
||||||
}
|
}
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,7 +183,7 @@ var config = {
|
||||||
modelPath: "blazeface.json",
|
modelPath: "blazeface.json",
|
||||||
rotation: true,
|
rotation: true,
|
||||||
maxDetected: 1,
|
maxDetected: 1,
|
||||||
skipFrames: 15,
|
skipFrames: 11,
|
||||||
minConfidence: 0.2,
|
minConfidence: 0.2,
|
||||||
iouThreshold: 0.1,
|
iouThreshold: 0.1,
|
||||||
return: false
|
return: false
|
||||||
|
@ -196,17 +196,17 @@ var config = {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
modelPath: "iris.json"
|
modelPath: "iris.json"
|
||||||
},
|
},
|
||||||
description: {
|
|
||||||
enabled: true,
|
|
||||||
modelPath: "faceres.json",
|
|
||||||
skipFrames: 11,
|
|
||||||
minConfidence: 0.1
|
|
||||||
},
|
|
||||||
emotion: {
|
emotion: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
minConfidence: 0.1,
|
minConfidence: 0.1,
|
||||||
skipFrames: 17,
|
skipFrames: 12,
|
||||||
modelPath: "emotion.json"
|
modelPath: "emotion.json"
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
enabled: true,
|
||||||
|
modelPath: "faceres.json",
|
||||||
|
skipFrames: 13,
|
||||||
|
minConfidence: 0.1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
body: {
|
body: {
|
||||||
|
@ -222,7 +222,7 @@ var config = {
|
||||||
hand: {
|
hand: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
rotation: true,
|
rotation: true,
|
||||||
skipFrames: 18,
|
skipFrames: 14,
|
||||||
minConfidence: 0.5,
|
minConfidence: 0.5,
|
||||||
iouThreshold: 0.2,
|
iouThreshold: 0.2,
|
||||||
maxDetected: -1,
|
maxDetected: -1,
|
||||||
|
@ -240,7 +240,7 @@ var config = {
|
||||||
minConfidence: 0.2,
|
minConfidence: 0.2,
|
||||||
iouThreshold: 0.4,
|
iouThreshold: 0.4,
|
||||||
maxDetected: 10,
|
maxDetected: 10,
|
||||||
skipFrames: 19
|
skipFrames: 15
|
||||||
},
|
},
|
||||||
segmentation: {
|
segmentation: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
|
@ -9625,7 +9625,7 @@ async function detectHands(input, config3) {
|
||||||
const classScores = tf16.unstack(t.scores, 1);
|
const classScores = tf16.unstack(t.scores, 1);
|
||||||
let id = 0;
|
let id = 0;
|
||||||
for (let i = 0; i < classScores.length; i++) {
|
for (let i = 0; i < classScores.length; i++) {
|
||||||
if (i !== 0 && i !== 1)
|
if (i === 4)
|
||||||
continue;
|
continue;
|
||||||
t.nms = await tf16.image.nonMaxSuppressionAsync(t.boxes, classScores[i], config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
t.nms = await tf16.image.nonMaxSuppressionAsync(t.boxes, classScores[i], config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
||||||
const nms = await t.nms.data();
|
const nms = await t.nms.data();
|
||||||
|
@ -9671,9 +9671,7 @@ async function detectFingers(input, h, config3) {
|
||||||
landmarks: {},
|
landmarks: {},
|
||||||
annotations: {}
|
annotations: {}
|
||||||
};
|
};
|
||||||
if (!input || !models2[1])
|
if (input && models2[1] && config3.hand.landmarks) {
|
||||||
return hand3;
|
|
||||||
if (config3.hand.landmarks) {
|
|
||||||
const t = {};
|
const t = {};
|
||||||
if (!h.yxBox)
|
if (!h.yxBox)
|
||||||
return hand3;
|
return hand3;
|
||||||
|
@ -9681,8 +9679,9 @@ async function detectFingers(input, h, config3) {
|
||||||
t.cast = tf16.cast(t.crop, "float32");
|
t.cast = tf16.cast(t.crop, "float32");
|
||||||
t.div = tf16.div(t.cast, 255);
|
t.div = tf16.div(t.cast, 255);
|
||||||
[t.score, t.keypoints] = models2[1].execute(t.div);
|
[t.score, t.keypoints] = models2[1].execute(t.div);
|
||||||
const score2 = Math.round(100 * (await t.score.data())[0] / 100);
|
const rawScore = (await t.score.data())[0];
|
||||||
if (score2 > (config3.hand.minConfidence || 0)) {
|
const score2 = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||||
|
if (score2 >= (config3.hand.minConfidence || 0)) {
|
||||||
hand3.fingerScore = score2;
|
hand3.fingerScore = score2;
|
||||||
t.reshaped = tf16.reshape(t.keypoints, [-1, 3]);
|
t.reshaped = tf16.reshape(t.keypoints, [-1, 3]);
|
||||||
const rawCoords = await t.reshaped.array();
|
const rawCoords = await t.reshaped.array();
|
||||||
|
@ -9700,7 +9699,9 @@ async function detectFingers(input, h, config3) {
|
||||||
for (const key of Object.keys(fingerMap)) {
|
for (const key of Object.keys(fingerMap)) {
|
||||||
hand3.annotations[key] = fingerMap[key].map((index) => hand3.landmarks && hand3.keypoints[index] ? hand3.keypoints[index] : null);
|
hand3.annotations[key] = fingerMap[key].map((index) => hand3.landmarks && hand3.keypoints[index] ? hand3.keypoints[index] : null);
|
||||||
}
|
}
|
||||||
cache.tmpBoxes.push(h);
|
const ratioBoxFrame = Math.min(h.box[2] / (input.shape[2] || 1), h.box[3] / (input.shape[1] || 1));
|
||||||
|
if (ratioBoxFrame > 0.05)
|
||||||
|
cache.tmpBoxes.push(h);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf16.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf16.dispose(t[tensor3]));
|
||||||
}
|
}
|
||||||
|
@ -9712,6 +9713,8 @@ async function predict6(input, config3) {
|
||||||
cache.tmpBoxes = [];
|
cache.tmpBoxes = [];
|
||||||
if (!config3.hand.landmarks)
|
if (!config3.hand.landmarks)
|
||||||
cache.fingerBoxes = cache.handBoxes;
|
cache.fingerBoxes = cache.handBoxes;
|
||||||
|
if (!config3.skipFrame)
|
||||||
|
cache.fingerBoxes = [];
|
||||||
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
||||||
skipped4++;
|
skipped4++;
|
||||||
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||||
|
@ -9720,8 +9723,7 @@ async function predict6(input, config3) {
|
||||||
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||||
if (hands.length !== config3.hand.maxDetected) {
|
if (hands.length !== config3.hand.maxDetected) {
|
||||||
cache.handBoxes = await detectHands(input, config3);
|
cache.handBoxes = await detectHands(input, config3);
|
||||||
const newHands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
hands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||||
hands = hands.concat(newHands);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cache.fingerBoxes = [...cache.tmpBoxes];
|
cache.fingerBoxes = [...cache.tmpBoxes];
|
||||||
|
@ -11327,10 +11329,10 @@ async function hand2(inCanvas2, result, drawOptions) {
|
||||||
if (localOptions.drawLabels) {
|
if (localOptions.drawLabels) {
|
||||||
if (localOptions.shadowColor && localOptions.shadowColor !== "") {
|
if (localOptions.shadowColor && localOptions.shadowColor !== "") {
|
||||||
ctx.fillStyle = localOptions.shadowColor;
|
ctx.fillStyle = localOptions.shadowColor;
|
||||||
ctx.fillText(`${h.label}:${Math.trunc(100 * h.score)}%`, h.box[0] + 3, 1 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
ctx.fillText(`hand:${Math.trunc(100 * h.score)}%`, h.box[0] + 3, 1 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
||||||
}
|
}
|
||||||
ctx.fillStyle = localOptions.labelColor;
|
ctx.fillStyle = localOptions.labelColor;
|
||||||
ctx.fillText(`${h.label}:${Math.trunc(100 * h.score)}%`, h.box[0] + 2, 0 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
ctx.fillText(`hand:${Math.trunc(100 * h.score)}%`, h.box[0] + 2, 0 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
||||||
}
|
}
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
}
|
}
|
||||||
|
|
|
@ -182,7 +182,7 @@ var config = {
|
||||||
modelPath: "blazeface.json",
|
modelPath: "blazeface.json",
|
||||||
rotation: true,
|
rotation: true,
|
||||||
maxDetected: 1,
|
maxDetected: 1,
|
||||||
skipFrames: 15,
|
skipFrames: 11,
|
||||||
minConfidence: 0.2,
|
minConfidence: 0.2,
|
||||||
iouThreshold: 0.1,
|
iouThreshold: 0.1,
|
||||||
return: false
|
return: false
|
||||||
|
@ -195,17 +195,17 @@ var config = {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
modelPath: "iris.json"
|
modelPath: "iris.json"
|
||||||
},
|
},
|
||||||
description: {
|
|
||||||
enabled: true,
|
|
||||||
modelPath: "faceres.json",
|
|
||||||
skipFrames: 11,
|
|
||||||
minConfidence: 0.1
|
|
||||||
},
|
|
||||||
emotion: {
|
emotion: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
minConfidence: 0.1,
|
minConfidence: 0.1,
|
||||||
skipFrames: 17,
|
skipFrames: 12,
|
||||||
modelPath: "emotion.json"
|
modelPath: "emotion.json"
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
enabled: true,
|
||||||
|
modelPath: "faceres.json",
|
||||||
|
skipFrames: 13,
|
||||||
|
minConfidence: 0.1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
body: {
|
body: {
|
||||||
|
@ -221,7 +221,7 @@ var config = {
|
||||||
hand: {
|
hand: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
rotation: true,
|
rotation: true,
|
||||||
skipFrames: 18,
|
skipFrames: 14,
|
||||||
minConfidence: 0.5,
|
minConfidence: 0.5,
|
||||||
iouThreshold: 0.2,
|
iouThreshold: 0.2,
|
||||||
maxDetected: -1,
|
maxDetected: -1,
|
||||||
|
@ -239,7 +239,7 @@ var config = {
|
||||||
minConfidence: 0.2,
|
minConfidence: 0.2,
|
||||||
iouThreshold: 0.4,
|
iouThreshold: 0.4,
|
||||||
maxDetected: 10,
|
maxDetected: 10,
|
||||||
skipFrames: 19
|
skipFrames: 15
|
||||||
},
|
},
|
||||||
segmentation: {
|
segmentation: {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
|
@ -9624,7 +9624,7 @@ async function detectHands(input, config3) {
|
||||||
const classScores = tf16.unstack(t.scores, 1);
|
const classScores = tf16.unstack(t.scores, 1);
|
||||||
let id = 0;
|
let id = 0;
|
||||||
for (let i = 0; i < classScores.length; i++) {
|
for (let i = 0; i < classScores.length; i++) {
|
||||||
if (i !== 0 && i !== 1)
|
if (i === 4)
|
||||||
continue;
|
continue;
|
||||||
t.nms = await tf16.image.nonMaxSuppressionAsync(t.boxes, classScores[i], config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
t.nms = await tf16.image.nonMaxSuppressionAsync(t.boxes, classScores[i], config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
||||||
const nms = await t.nms.data();
|
const nms = await t.nms.data();
|
||||||
|
@ -9670,9 +9670,7 @@ async function detectFingers(input, h, config3) {
|
||||||
landmarks: {},
|
landmarks: {},
|
||||||
annotations: {}
|
annotations: {}
|
||||||
};
|
};
|
||||||
if (!input || !models2[1])
|
if (input && models2[1] && config3.hand.landmarks) {
|
||||||
return hand3;
|
|
||||||
if (config3.hand.landmarks) {
|
|
||||||
const t = {};
|
const t = {};
|
||||||
if (!h.yxBox)
|
if (!h.yxBox)
|
||||||
return hand3;
|
return hand3;
|
||||||
|
@ -9680,8 +9678,9 @@ async function detectFingers(input, h, config3) {
|
||||||
t.cast = tf16.cast(t.crop, "float32");
|
t.cast = tf16.cast(t.crop, "float32");
|
||||||
t.div = tf16.div(t.cast, 255);
|
t.div = tf16.div(t.cast, 255);
|
||||||
[t.score, t.keypoints] = models2[1].execute(t.div);
|
[t.score, t.keypoints] = models2[1].execute(t.div);
|
||||||
const score2 = Math.round(100 * (await t.score.data())[0] / 100);
|
const rawScore = (await t.score.data())[0];
|
||||||
if (score2 > (config3.hand.minConfidence || 0)) {
|
const score2 = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||||
|
if (score2 >= (config3.hand.minConfidence || 0)) {
|
||||||
hand3.fingerScore = score2;
|
hand3.fingerScore = score2;
|
||||||
t.reshaped = tf16.reshape(t.keypoints, [-1, 3]);
|
t.reshaped = tf16.reshape(t.keypoints, [-1, 3]);
|
||||||
const rawCoords = await t.reshaped.array();
|
const rawCoords = await t.reshaped.array();
|
||||||
|
@ -9699,7 +9698,9 @@ async function detectFingers(input, h, config3) {
|
||||||
for (const key of Object.keys(fingerMap)) {
|
for (const key of Object.keys(fingerMap)) {
|
||||||
hand3.annotations[key] = fingerMap[key].map((index) => hand3.landmarks && hand3.keypoints[index] ? hand3.keypoints[index] : null);
|
hand3.annotations[key] = fingerMap[key].map((index) => hand3.landmarks && hand3.keypoints[index] ? hand3.keypoints[index] : null);
|
||||||
}
|
}
|
||||||
cache.tmpBoxes.push(h);
|
const ratioBoxFrame = Math.min(h.box[2] / (input.shape[2] || 1), h.box[3] / (input.shape[1] || 1));
|
||||||
|
if (ratioBoxFrame > 0.05)
|
||||||
|
cache.tmpBoxes.push(h);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf16.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf16.dispose(t[tensor3]));
|
||||||
}
|
}
|
||||||
|
@ -9711,6 +9712,8 @@ async function predict6(input, config3) {
|
||||||
cache.tmpBoxes = [];
|
cache.tmpBoxes = [];
|
||||||
if (!config3.hand.landmarks)
|
if (!config3.hand.landmarks)
|
||||||
cache.fingerBoxes = cache.handBoxes;
|
cache.fingerBoxes = cache.handBoxes;
|
||||||
|
if (!config3.skipFrame)
|
||||||
|
cache.fingerBoxes = [];
|
||||||
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
||||||
skipped4++;
|
skipped4++;
|
||||||
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||||
|
@ -9719,8 +9722,7 @@ async function predict6(input, config3) {
|
||||||
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
hands = await Promise.all(cache.fingerBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||||
if (hands.length !== config3.hand.maxDetected) {
|
if (hands.length !== config3.hand.maxDetected) {
|
||||||
cache.handBoxes = await detectHands(input, config3);
|
cache.handBoxes = await detectHands(input, config3);
|
||||||
const newHands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
hands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||||
hands = hands.concat(newHands);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cache.fingerBoxes = [...cache.tmpBoxes];
|
cache.fingerBoxes = [...cache.tmpBoxes];
|
||||||
|
@ -11326,10 +11328,10 @@ async function hand2(inCanvas2, result, drawOptions) {
|
||||||
if (localOptions.drawLabels) {
|
if (localOptions.drawLabels) {
|
||||||
if (localOptions.shadowColor && localOptions.shadowColor !== "") {
|
if (localOptions.shadowColor && localOptions.shadowColor !== "") {
|
||||||
ctx.fillStyle = localOptions.shadowColor;
|
ctx.fillStyle = localOptions.shadowColor;
|
||||||
ctx.fillText(`${h.label}:${Math.trunc(100 * h.score)}%`, h.box[0] + 3, 1 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
ctx.fillText(`hand:${Math.trunc(100 * h.score)}%`, h.box[0] + 3, 1 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
||||||
}
|
}
|
||||||
ctx.fillStyle = localOptions.labelColor;
|
ctx.fillStyle = localOptions.labelColor;
|
||||||
ctx.fillText(`${h.label}:${Math.trunc(100 * h.score)}%`, h.box[0] + 2, 0 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
ctx.fillText(`hand:${Math.trunc(100 * h.score)}%`, h.box[0] + 2, 0 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
||||||
}
|
}
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
}
|
}
|
||||||
|
|
|
@ -358,7 +358,7 @@ const config: Config = {
|
||||||
// this parameter is not valid in nodejs
|
// this parameter is not valid in nodejs
|
||||||
maxDetected: 1, // maximum number of faces detected in the input
|
maxDetected: 1, // maximum number of faces detected in the input
|
||||||
// should be set to the minimum number for performance
|
// should be set to the minimum number for performance
|
||||||
skipFrames: 15, // how many max frames to go without re-running the face bounding box detector
|
skipFrames: 11, // how many max frames to go without re-running the face bounding box detector
|
||||||
// only used when cacheSensitivity is not zero
|
// only used when cacheSensitivity is not zero
|
||||||
// e.g., if model is running st 25 FPS, we can re-use existing bounding
|
// e.g., if model is running st 25 FPS, we can re-use existing bounding
|
||||||
// box for updated face analysis as the head does not move fast
|
// box for updated face analysis as the head does not move fast
|
||||||
|
@ -380,23 +380,23 @@ const config: Config = {
|
||||||
// can be either absolute path or relative to modelBasePath
|
// can be either absolute path or relative to modelBasePath
|
||||||
},
|
},
|
||||||
|
|
||||||
|
emotion: {
|
||||||
|
enabled: true,
|
||||||
|
minConfidence: 0.1, // threshold for discarding a prediction
|
||||||
|
skipFrames: 12, // how max many frames to go without re-running the detector
|
||||||
|
// only used when cacheSensitivity is not zero
|
||||||
|
modelPath: 'emotion.json', // face emotion model, can be absolute path or relative to modelBasePath
|
||||||
|
},
|
||||||
|
|
||||||
description: {
|
description: {
|
||||||
enabled: true, // to improve accuracy of face description extraction it is
|
enabled: true, // to improve accuracy of face description extraction it is
|
||||||
// recommended to enable detector.rotation and mesh.enabled
|
// recommended to enable detector.rotation and mesh.enabled
|
||||||
modelPath: 'faceres.json', // face description model
|
modelPath: 'faceres.json', // face description model
|
||||||
// can be either absolute path or relative to modelBasePath
|
// can be either absolute path or relative to modelBasePath
|
||||||
skipFrames: 11, // how many max frames to go without re-running the detector
|
skipFrames: 13, // how many max frames to go without re-running the detector
|
||||||
// only used when cacheSensitivity is not zero
|
// only used when cacheSensitivity is not zero
|
||||||
minConfidence: 0.1, // threshold for discarding a prediction
|
minConfidence: 0.1, // threshold for discarding a prediction
|
||||||
},
|
},
|
||||||
|
|
||||||
emotion: {
|
|
||||||
enabled: true,
|
|
||||||
minConfidence: 0.1, // threshold for discarding a prediction
|
|
||||||
skipFrames: 17, // how max many frames to go without re-running the detector
|
|
||||||
// only used when cacheSensitivity is not zero
|
|
||||||
modelPath: 'emotion.json', // face emotion model, can be absolute path or relative to modelBasePath
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
body: {
|
body: {
|
||||||
|
@ -420,7 +420,7 @@ const config: Config = {
|
||||||
rotation: true, // use best-guess rotated hand image or just box with rotation as-is
|
rotation: true, // use best-guess rotated hand image or just box with rotation as-is
|
||||||
// false means higher performance, but incorrect finger mapping if hand is inverted
|
// false means higher performance, but incorrect finger mapping if hand is inverted
|
||||||
// only valid for `handdetect` variation
|
// only valid for `handdetect` variation
|
||||||
skipFrames: 18, // how many max frames to go without re-running the hand bounding box detector
|
skipFrames: 14, // how many max frames to go without re-running the hand bounding box detector
|
||||||
// only used when cacheSensitivity is not zero
|
// only used when cacheSensitivity is not zero
|
||||||
// e.g., if model is running st 25 FPS, we can re-use existing bounding
|
// e.g., if model is running st 25 FPS, we can re-use existing bounding
|
||||||
// box for updated hand skeleton analysis as the hand
|
// box for updated hand skeleton analysis as the hand
|
||||||
|
@ -447,7 +447,7 @@ const config: Config = {
|
||||||
minConfidence: 0.2, // threshold for discarding a prediction
|
minConfidence: 0.2, // threshold for discarding a prediction
|
||||||
iouThreshold: 0.4, // ammount of overlap between two detected objects before one object is removed
|
iouThreshold: 0.4, // ammount of overlap between two detected objects before one object is removed
|
||||||
maxDetected: 10, // maximum number of objects detected in the input
|
maxDetected: 10, // maximum number of objects detected in the input
|
||||||
skipFrames: 19, // how many max frames to go without re-running the detector
|
skipFrames: 15, // how many max frames to go without re-running the detector
|
||||||
// only used when cacheSensitivity is not zero
|
// only used when cacheSensitivity is not zero
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,7 @@ async function detectHands(input: Tensor, config: Config): Promise<HandDetectRes
|
||||||
if (!input || !models[0]) return hands;
|
if (!input || !models[0]) return hands;
|
||||||
const t: Record<string, Tensor> = {};
|
const t: Record<string, Tensor> = {};
|
||||||
const ratio = (input.shape[2] || 1) / (input.shape[1] || 1);
|
const ratio = (input.shape[2] || 1) / (input.shape[1] || 1);
|
||||||
const height = Math.min(Math.round((input.shape[1] || 0) / 8) * 8, 512); // use dynamic input size but cap at 1024
|
const height = Math.min(Math.round((input.shape[1] || 0) / 8) * 8, 512); // use dynamic input size but cap at 512
|
||||||
const width = Math.round(height * ratio / 8) * 8;
|
const width = Math.round(height * ratio / 8) * 8;
|
||||||
t.resize = tf.image.resizeBilinear(input, [height, width]); // todo: resize with padding
|
t.resize = tf.image.resizeBilinear(input, [height, width]); // todo: resize with padding
|
||||||
t.cast = tf.cast(t.resize, 'int32');
|
t.cast = tf.cast(t.resize, 'int32');
|
||||||
|
@ -106,7 +106,7 @@ async function detectHands(input: Tensor, config: Config): Promise<HandDetectRes
|
||||||
const classScores = tf.unstack(t.scores, 1);
|
const classScores = tf.unstack(t.scores, 1);
|
||||||
let id = 0;
|
let id = 0;
|
||||||
for (let i = 0; i < classScores.length; i++) {
|
for (let i = 0; i < classScores.length; i++) {
|
||||||
if (i !== 0 && i !== 1) continue;
|
if (i === 4) continue; // skip faces
|
||||||
t.nms = await tf.image.nonMaxSuppressionAsync(t.boxes, classScores[i], config.hand.maxDetected, config.hand.iouThreshold, config.hand.minConfidence);
|
t.nms = await tf.image.nonMaxSuppressionAsync(t.boxes, classScores[i], config.hand.maxDetected, config.hand.iouThreshold, config.hand.minConfidence);
|
||||||
const nms = await t.nms.data();
|
const nms = await t.nms.data();
|
||||||
tf.dispose(t.nms);
|
tf.dispose(t.nms);
|
||||||
|
@ -151,16 +151,17 @@ async function detectFingers(input: Tensor, h: HandDetectResult, config: Config)
|
||||||
landmarks: {} as HandResult['landmarks'],
|
landmarks: {} as HandResult['landmarks'],
|
||||||
annotations: {} as HandResult['annotations'],
|
annotations: {} as HandResult['annotations'],
|
||||||
};
|
};
|
||||||
if (!input || !models[1]) return hand; // something is wrong
|
if (input && models[1] && config.hand.landmarks) {
|
||||||
if (config.hand.landmarks) {
|
|
||||||
const t: Record<string, Tensor> = {};
|
const t: Record<string, Tensor> = {};
|
||||||
if (!h.yxBox) return hand;
|
if (!h.yxBox) return hand;
|
||||||
t.crop = tf.image.cropAndResize(input, [h.yxBox], [0], [inputSize[1][0], inputSize[1][1]], 'bilinear');
|
t.crop = tf.image.cropAndResize(input, [h.yxBox], [0], [inputSize[1][0], inputSize[1][1]], 'bilinear');
|
||||||
t.cast = tf.cast(t.crop, 'float32');
|
t.cast = tf.cast(t.crop, 'float32');
|
||||||
t.div = tf.div(t.cast, 255);
|
t.div = tf.div(t.cast, 255);
|
||||||
[t.score, t.keypoints] = models[1].execute(t.div) as Tensor[];
|
[t.score, t.keypoints] = models[1].execute(t.div) as Tensor[];
|
||||||
const score = Math.round(100 * (await t.score.data())[0] / 100);
|
// const score = Math.round(100 * (await t.score.data())[0] / 100);
|
||||||
if (score > (config.hand.minConfidence || 0)) {
|
const rawScore = (await t.score.data())[0];
|
||||||
|
const score = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100; // reverse sigmoid value
|
||||||
|
if (score >= (config.hand.minConfidence || 0)) {
|
||||||
hand.fingerScore = score;
|
hand.fingerScore = score;
|
||||||
t.reshaped = tf.reshape(t.keypoints, [-1, 3]);
|
t.reshaped = tf.reshape(t.keypoints, [-1, 3]);
|
||||||
const rawCoords = await t.reshaped.array() as Point[];
|
const rawCoords = await t.reshaped.array() as Point[];
|
||||||
|
@ -178,7 +179,8 @@ async function detectFingers(input: Tensor, h: HandDetectResult, config: Config)
|
||||||
for (const key of Object.keys(fingerMap)) { // map keypoints to per-finger annotations
|
for (const key of Object.keys(fingerMap)) { // map keypoints to per-finger annotations
|
||||||
hand.annotations[key] = fingerMap[key].map((index) => (hand.landmarks && hand.keypoints[index] ? hand.keypoints[index] : null));
|
hand.annotations[key] = fingerMap[key].map((index) => (hand.landmarks && hand.keypoints[index] ? hand.keypoints[index] : null));
|
||||||
}
|
}
|
||||||
cache.tmpBoxes.push(h); // if finger detection is enabled, only update cache if fingers are detected
|
const ratioBoxFrame = Math.min(h.box[2] / (input.shape[2] || 1), h.box[3] / (input.shape[1] || 1));
|
||||||
|
if (ratioBoxFrame > 0.05) cache.tmpBoxes.push(h); // if finger detection is enabled, only update cache if fingers are detected and box is big enough
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor) => tf.dispose(t[tensor]));
|
Object.keys(t).forEach((tensor) => tf.dispose(t[tensor]));
|
||||||
}
|
}
|
||||||
|
@ -190,16 +192,16 @@ export async function predict(input: Tensor, config: Config): Promise<HandResult
|
||||||
let hands: Array<HandResult> = [];
|
let hands: Array<HandResult> = [];
|
||||||
cache.tmpBoxes = []; // clear temp cache
|
cache.tmpBoxes = []; // clear temp cache
|
||||||
if (!config.hand.landmarks) cache.fingerBoxes = cache.handBoxes; // if hand detection only reset finger boxes cache
|
if (!config.hand.landmarks) cache.fingerBoxes = cache.handBoxes; // if hand detection only reset finger boxes cache
|
||||||
|
if (!config.skipFrame) cache.fingerBoxes = [];
|
||||||
if ((skipped < (config.hand.skipFrames || 0)) && config.skipFrame) { // just run finger detection while reusing cached boxes
|
if ((skipped < (config.hand.skipFrames || 0)) && config.skipFrame) { // just run finger detection while reusing cached boxes
|
||||||
skipped++;
|
skipped++;
|
||||||
hands = await Promise.all(cache.fingerBoxes.map((hand) => detectFingers(input, hand, config))); // run from finger box cache
|
hands = await Promise.all(cache.fingerBoxes.map((hand) => detectFingers(input, hand, config))); // run from finger box cache
|
||||||
} else { // calculate new boxes and run finger detection
|
} else { // calculate new boxes and run finger detection
|
||||||
skipped = 0;
|
skipped = 0;
|
||||||
hands = await Promise.all(cache.fingerBoxes.map((hand) => detectFingers(input, hand, config))); // run from finger box cache
|
hands = await Promise.all(cache.fingerBoxes.map((hand) => detectFingers(input, hand, config))); // run from finger box cache
|
||||||
if (hands.length !== config.hand.maxDetected) { // run hand detection only if we dont have enough hands in cache
|
if (hands.length !== config.hand.maxDetected) { // re-run with hand detection only if we dont have enough hands in cache
|
||||||
cache.handBoxes = await detectHands(input, config);
|
cache.handBoxes = await detectHands(input, config);
|
||||||
const newHands = await Promise.all(cache.handBoxes.map((hand) => detectFingers(input, hand, config)));
|
hands = await Promise.all(cache.handBoxes.map((hand) => detectFingers(input, hand, config)));
|
||||||
hands = hands.concat(newHands);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cache.fingerBoxes = [...cache.tmpBoxes]; // repopulate cache with validated hands
|
cache.fingerBoxes = [...cache.tmpBoxes]; // repopulate cache with validated hands
|
||||||
|
|
|
@ -391,10 +391,10 @@ export async function hand(inCanvas: HTMLCanvasElement | OffscreenCanvas, result
|
||||||
if (localOptions.drawLabels) {
|
if (localOptions.drawLabels) {
|
||||||
if (localOptions.shadowColor && localOptions.shadowColor !== '') {
|
if (localOptions.shadowColor && localOptions.shadowColor !== '') {
|
||||||
ctx.fillStyle = localOptions.shadowColor;
|
ctx.fillStyle = localOptions.shadowColor;
|
||||||
ctx.fillText(`${h.label}:${Math.trunc(100 * h.score)}%`, h.box[0] + 3, 1 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
ctx.fillText(`hand:${Math.trunc(100 * h.score)}%`, h.box[0] + 3, 1 + h.box[1] + localOptions.lineHeight, h.box[2]); // can use h.label
|
||||||
}
|
}
|
||||||
ctx.fillStyle = localOptions.labelColor;
|
ctx.fillStyle = localOptions.labelColor;
|
||||||
ctx.fillText(`${h.label}:${Math.trunc(100 * h.score)}%`, h.box[0] + 2, 0 + h.box[1] + localOptions.lineHeight, h.box[2]);
|
ctx.fillText(`hand:${Math.trunc(100 * h.score)}%`, h.box[0] + 2, 0 + h.box[1] + localOptions.lineHeight, h.box[2]); // can use h.label
|
||||||
}
|
}
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
}
|
}
|
||||||
|
|
4884
test/build.log
4884
test/build.log
File diff suppressed because it is too large
Load Diff
|
@ -173,22 +173,26 @@ async function test(Human, inputConfig) {
|
||||||
await human.load();
|
await human.load();
|
||||||
const models = Object.keys(human.models).map((model) => ({ name: model, loaded: (human.models[model] !== null) }));
|
const models = Object.keys(human.models).map((model) => ({ name: model, loaded: (human.models[model] !== null) }));
|
||||||
const loaded = models.filter((model) => model.loaded);
|
const loaded = models.filter((model) => model.loaded);
|
||||||
if (models.length === 19 && loaded.length === 10) log('state', 'passed: models loaded', models);
|
if (models.length === 20 && loaded.length === 10) log('state', 'passed: models loaded', models.length, loaded.length, models);
|
||||||
else log('error', 'failed: models loaded', models);
|
else log('error', 'failed: models loaded', models.length, loaded.length, models);
|
||||||
|
|
||||||
|
// increase defaults
|
||||||
|
config.face = { detector: { maxDetected: 20 } };
|
||||||
|
|
||||||
// test warmup sequences
|
// test warmup sequences
|
||||||
await testInstance(human);
|
await testInstance(human);
|
||||||
|
config.cacheSensitivity = 0;
|
||||||
config.warmup = 'none';
|
config.warmup = 'none';
|
||||||
res = await testWarmup(human, 'default');
|
res = await testWarmup(human, 'default');
|
||||||
if (res.error !== 'null') log('error', 'failed: warmup none result mismatch');
|
if (res.error !== 'null') log('error', 'failed: warmup none result mismatch');
|
||||||
else log('state', 'passed: warmup none result match');
|
else log('state', 'passed: warmup none result match');
|
||||||
config.warmup = 'face';
|
config.warmup = 'face';
|
||||||
res = await testWarmup(human, 'default');
|
res = await testWarmup(human, 'default');
|
||||||
if (!res || res?.face?.length !== 1 || res?.body?.length !== 1 || res?.hand?.length !== 0 || res?.gesture?.length !== 3) log('error', 'failed: warmup face result mismatch', res?.face?.length, res?.body?.length, res?.hand?.length, res?.gesture?.length);
|
if (!res || res?.face?.length !== 1 || res?.body?.length !== 1 || res?.hand?.length !== 1 || res?.gesture?.length !== 6) log('error', 'failed: warmup face result mismatch', res?.face?.length, res?.body?.length, res?.hand?.length, res?.gesture?.length);
|
||||||
else log('state', 'passed: warmup face result match');
|
else log('state', 'passed: warmup face result match');
|
||||||
config.warmup = 'body';
|
config.warmup = 'body';
|
||||||
res = await testWarmup(human, 'default');
|
res = await testWarmup(human, 'default');
|
||||||
if (!res || res?.face?.length !== 1 || res?.body?.length !== 1 || res?.hand?.length !== 0 || res?.gesture?.length !== 3) log('error', 'failed: warmup body result mismatch', res?.face?.length, res?.body?.length, res?.hand?.length, res?.gesture?.length);
|
if (!res || res?.face?.length !== 1 || res?.body?.length !== 0 || res?.hand?.length !== 1 || res?.gesture?.length !== 4) log('error', 'failed: warmup body result mismatch', res?.face?.length, res?.body?.length, res?.hand?.length, res?.gesture?.length);
|
||||||
else log('state', 'passed: warmup body result match');
|
else log('state', 'passed: warmup body result match');
|
||||||
|
|
||||||
// test default config async
|
// test default config async
|
||||||
|
@ -233,10 +237,10 @@ async function test(Human, inputConfig) {
|
||||||
const desc3 = res3 && res3.face && res3.face[0] && res3.face[0].embedding ? [...res3.face[0].embedding] : null;
|
const desc3 = res3 && res3.face && res3.face[0] && res3.face[0].embedding ? [...res3.face[0].embedding] : null;
|
||||||
if (!desc1 || !desc2 || !desc3 || desc1.length !== 1024 || desc2.length !== 1024 || desc3.length !== 1024) log('error', 'failed: face descriptor', desc1?.length, desc2?.length, desc3?.length);
|
if (!desc1 || !desc2 || !desc3 || desc1.length !== 1024 || desc2.length !== 1024 || desc3.length !== 1024) log('error', 'failed: face descriptor', desc1?.length, desc2?.length, desc3?.length);
|
||||||
else log('state', 'passed: face descriptor');
|
else log('state', 'passed: face descriptor');
|
||||||
res1 = Math.round(100 * human.similarity(desc1, desc2));
|
res1 = Math.round(10 * human.similarity(desc1, desc2));
|
||||||
res2 = Math.round(100 * human.similarity(desc1, desc3));
|
res2 = Math.round(10 * human.similarity(desc1, desc3));
|
||||||
res3 = Math.round(100 * human.similarity(desc2, desc3));
|
res3 = Math.round(10 * human.similarity(desc2, desc3));
|
||||||
if (res1 !== 51 || res2 !== 49 || res3 !== 53) log('error', 'failed: face similarity ', res1, res2, res3);
|
if (res1 !== 5 || res2 !== 5 || res3 !== 5) log('error', 'failed: face similarity ', res1, res2, res3);
|
||||||
else log('state', 'passed: face similarity');
|
else log('state', 'passed: face similarity');
|
||||||
|
|
||||||
// test face matching
|
// test face matching
|
||||||
|
@ -266,17 +270,19 @@ async function test(Human, inputConfig) {
|
||||||
human.reset();
|
human.reset();
|
||||||
config.cacheSensitivity = 0;
|
config.cacheSensitivity = 0;
|
||||||
config.face = { detector: { minConfidence: 0.0001, maxDetected: 1 } };
|
config.face = { detector: { minConfidence: 0.0001, maxDetected: 1 } };
|
||||||
config.body = { minConfidence: 0.0001, maxDetected: 1 };
|
config.body = { minConfidence: 0.0001 };
|
||||||
config.hand = { minConfidence: 0.0001, maxDetected: 3 };
|
config.hand = { minConfidence: 0.0001 };
|
||||||
res = await testDetect(human, 'samples/in/ai-body.jpg', 'default');
|
res = await testDetect(human, 'samples/in/ai-body.jpg', 'default');
|
||||||
if (!res || res?.face?.length !== 1 || res?.body?.length !== 1 || res?.hand?.length !== 3 || res?.gesture?.length !== 9) log('error', 'failed: sensitive result mismatch', res?.face?.length, res?.body?.length, res?.hand?.length, res?.gesture?.length);
|
if (!res || res?.face?.length !== 1 || res?.body?.length !== 1 || res?.hand?.length !== 2 || res?.gesture?.length !== 7) log('error', 'failed: sensitive result mismatch', res?.face?.length, res?.body?.length, res?.hand?.length, res?.gesture?.length);
|
||||||
else log('state', 'passed: sensitive result match');
|
else log('state', 'passed: sensitive result match');
|
||||||
|
|
||||||
// test sensitive details face
|
// test sensitive details face
|
||||||
const face = res && res.face ? res.face[0] : null;
|
const face = res && res.face ? res.face[0] : null;
|
||||||
if (!face || face?.box?.length !== 4 || face?.mesh?.length !== 478 || face?.emotion?.length !== 4 || face?.embedding?.length !== 1024 || face?.rotation?.matrix?.length !== 9) {
|
if (!face || face?.box?.length !== 4 || face?.mesh?.length !== 478 || face?.embedding?.length !== 1024 || face?.rotation?.matrix?.length !== 9) {
|
||||||
log('error', 'failed: sensitive face result mismatch', res?.face?.length, face?.box?.length, face?.mesh?.length, face?.emotion?.length, face?.embedding?.length, face?.rotation?.matrix?.length);
|
log('error', 'failed: sensitive face result mismatch', res?.face?.length, face?.box?.length, face?.mesh?.length, face?.embedding?.length, face?.rotation?.matrix?.length);
|
||||||
} else log('state', 'passed: sensitive face result match');
|
} else log('state', 'passed: sensitive face result match');
|
||||||
|
if (!face || face?.emotion?.length !== 4) log('error', 'failed: sensitive face emotion result mismatch', face?.emotion.length);
|
||||||
|
else log('state', 'passed: sensitive face emotion result mismatch', face?.emotion.length);
|
||||||
|
|
||||||
// test sensitive details body
|
// test sensitive details body
|
||||||
const body = res && res.body ? res.body[0] : null;
|
const body = res && res.body ? res.body[0] : null;
|
||||||
|
@ -296,7 +302,7 @@ async function test(Human, inputConfig) {
|
||||||
res = await testDetect(human, 'samples/in/ai-body.jpg', 'default');
|
res = await testDetect(human, 'samples/in/ai-body.jpg', 'default');
|
||||||
if (!res || res?.face?.length !== 1 || res?.face[0]?.gender || res?.face[0]?.age || res?.face[0]?.embedding) log('error', 'failed: detectors result face mismatch', res?.face);
|
if (!res || res?.face?.length !== 1 || res?.face[0]?.gender || res?.face[0]?.age || res?.face[0]?.embedding) log('error', 'failed: detectors result face mismatch', res?.face);
|
||||||
else log('state', 'passed: detector result face match');
|
else log('state', 'passed: detector result face match');
|
||||||
if (!res || res?.hand?.length !== 2 || res?.hand[0]?.landmarks) log('error', 'failed: detectors result hand mismatch', res?.hand?.length);
|
if (!res || res?.hand?.length !== 1 || res?.hand[0]?.landmarks?.length > 0) log('error', 'failed: detectors result hand mismatch', res?.hand?.length);
|
||||||
else log('state', 'passed: detector result hand match');
|
else log('state', 'passed: detector result hand match');
|
||||||
|
|
||||||
// test posenet and movenet
|
// test posenet and movenet
|
||||||
|
|
|
@ -10,8 +10,8 @@ Human.env.Canvas = Canvas; // requires monkey-patch as wasm does not have tf.bro
|
||||||
Human.env.Image = Image; // requires monkey-patch as wasm does not have tf.browser namespace
|
Human.env.Image = Image; // requires monkey-patch as wasm does not have tf.browser namespace
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
// modelBasePath: 'http://localhost:10030/models/',
|
|
||||||
modelBasePath: 'https://vladmandic.github.io/human/models/',
|
modelBasePath: 'https://vladmandic.github.io/human/models/',
|
||||||
|
// modelBasePath: 'http://localhost:10030/models/',
|
||||||
backend: 'wasm',
|
backend: 'wasm',
|
||||||
wasmPath: 'node_modules/@tensorflow/tfjs-backend-wasm/dist/',
|
wasmPath: 'node_modules/@tensorflow/tfjs-backend-wasm/dist/',
|
||||||
// wasmPath: 'https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@3.9.0/dist/',
|
// wasmPath: 'https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@3.9.0/dist/',
|
||||||
|
|
1204
test/test.log
1204
test/test.log
File diff suppressed because it is too large
Load Diff
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Human | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</a></li><li><a href="Human.html">Human</a></li></ul><h1>Class Human</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Human | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.0</a></li><li><a href="Human.html">Human</a></li></ul><h1>Class Human</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><em>Human</em>* library main class</p>
|
<p><em>Human</em>* library main class</p>
|
||||||
</div><div><p>All methods and properties are available only as members of Human class</p>
|
</div><div><p>All methods and properties are available only as members of Human class</p>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>BodyConfig | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>BodyConfig | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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>Controlls and configures all body detection specific options</p>
|
<p>Controlls and configures all body detection specific options</p>
|
||||||
</div><div><p>Parameters:</p>
|
</div><div><p>Parameters:</p>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>BodyResult | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>BodyResult | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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><p>Each results has:</p>
|
</div><div><p>Each results has:</p>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Config | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Config | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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>
|
<p>Configuration interface definition for <strong>Human</strong> library</p>
|
||||||
</div><div><p>Contains all configurable parameters</p>
|
</div><div><p>Contains all configurable parameters</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#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#skipFrame" class="tsd-kind-icon">skip<wbr/>Frame</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 name="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#L249">config.ts:249</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#cacheSensitivity" class="tsd-kind-icon">cache<wbr/>Sensitivity</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#skipFrame" class="tsd-kind-icon">skip<wbr/>Frame</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 name="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#L249">config.ts:249</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>DrawOptions | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</a></li><li><a href="DrawOptions.html">DrawOptions</a></li></ul><h1>Interface DrawOptions</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>DrawOptions | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.0</a></li><li><a href="DrawOptions.html">DrawOptions</a></li></ul><h1>Interface DrawOptions</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>Draw Options
|
<p>Draw Options
|
||||||
Accessed via <code>human.draw.options</code> or provided per each draw method as the drawOptions optional parameter
|
Accessed via <code>human.draw.options</code> or provided per each draw method as the drawOptions optional parameter
|
||||||
-color: draw color
|
-color: draw color
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FaceConfig | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</a></li><li><a href="FaceConfig.html">FaceConfig</a></li></ul><h1>Interface FaceConfig</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FaceConfig | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.0</a></li><li><a href="FaceConfig.html">FaceConfig</a></li></ul><h1>Interface FaceConfig</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 and configures all face-specific options:</p>
|
<p>Controlls and configures all face-specific options:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>face detection, face mesh detection, age, gender, emotion detection and face description</li>
|
<li>face detection, face mesh detection, age, gender, emotion detection and face description</li>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FaceDescriptionConfig | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FaceDescriptionConfig | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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>
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,3 +1,3 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FaceEmotionConfig | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FaceEmotionConfig | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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><span class="target">FaceEmotionConfig</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="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"><a href="FaceEmotionConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceEmotionConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</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 name="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#L39">config.ts:39</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a name="minConfidence" class="tsd-anchor"></a><h3>min<wbr/>Confidence</h3><div class="tsd-signature tsd-kind-icon">min<wbr/>Confidence<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#L40">config.ts:40</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a name="modelPath" class="tsd-anchor"></a><h3>model<wbr/>Path</h3><div class="tsd-signature tsd-kind-icon">model<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#L42">config.ts:42</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a name="skipFrames" class="tsd-anchor"></a><h3>skip<wbr/>Frames</h3><div class="tsd-signature tsd-kind-icon">skip<wbr/>Frames<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#L41">config.ts:41</a></li></ul></aside></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></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-interface"><a href="FaceEmotionConfig.html" class="tsd-kind-icon">Face<wbr/>Emotion<wbr/>Config</a><ul><li class="tsd-kind-property tsd-parent-kind-interface"><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"><a href="FaceEmotionConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceEmotionConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</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 class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">FaceEmotionConfig</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="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"><a href="FaceEmotionConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceEmotionConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</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 name="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#L39">config.ts:39</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a name="minConfidence" class="tsd-anchor"></a><h3>min<wbr/>Confidence</h3><div class="tsd-signature tsd-kind-icon">min<wbr/>Confidence<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#L40">config.ts:40</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a name="modelPath" class="tsd-anchor"></a><h3>model<wbr/>Path</h3><div class="tsd-signature tsd-kind-icon">model<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#L42">config.ts:42</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a name="skipFrames" class="tsd-anchor"></a><h3>skip<wbr/>Frames</h3><div class="tsd-signature tsd-kind-icon">skip<wbr/>Frames<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#L41">config.ts:41</a></li></ul></aside></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></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-interface"><a href="FaceEmotionConfig.html" class="tsd-kind-icon">Face<wbr/>Emotion<wbr/>Config</a><ul><li class="tsd-kind-property tsd-parent-kind-interface"><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"><a href="FaceEmotionConfig.html#modelPath" class="tsd-kind-icon">model<wbr/>Path</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceEmotionConfig.html#skipFrames" class="tsd-kind-icon">skip<wbr/>Frames</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,3 +1,3 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FaceIrisConfig | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FaceIrisConfig | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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><span class="target">FaceIrisConfig</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="FaceIrisConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceIrisConfig.html#modelPath" class="tsd-kind-icon">model<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 name="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#L23">config.ts:23</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a name="modelPath" class="tsd-anchor"></a><h3>model<wbr/>Path</h3><div class="tsd-signature tsd-kind-icon">model<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#L24">config.ts:24</a></li></ul></aside></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></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-interface"><a href="FaceIrisConfig.html" class="tsd-kind-icon">Face<wbr/>Iris<wbr/>Config</a><ul><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceIrisConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceIrisConfig.html#modelPath" class="tsd-kind-icon">model<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 class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">FaceIrisConfig</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="FaceIrisConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceIrisConfig.html#modelPath" class="tsd-kind-icon">model<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 name="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#L23">config.ts:23</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a name="modelPath" class="tsd-anchor"></a><h3>model<wbr/>Path</h3><div class="tsd-signature tsd-kind-icon">model<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#L24">config.ts:24</a></li></ul></aside></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></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-interface"><a href="FaceIrisConfig.html" class="tsd-kind-icon">Face<wbr/>Iris<wbr/>Config</a><ul><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceIrisConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceIrisConfig.html#modelPath" class="tsd-kind-icon">model<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,3 +1,3 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FaceMeshConfig | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FaceMeshConfig | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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><span class="target">FaceMeshConfig</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="FaceMeshConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceMeshConfig.html#modelPath" class="tsd-kind-icon">model<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 name="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#L17">config.ts:17</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a name="modelPath" class="tsd-anchor"></a><h3>model<wbr/>Path</h3><div class="tsd-signature tsd-kind-icon">model<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#L18">config.ts:18</a></li></ul></aside></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></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-interface"><a href="FaceMeshConfig.html" class="tsd-kind-icon">Face<wbr/>Mesh<wbr/>Config</a><ul><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceMeshConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceMeshConfig.html#modelPath" class="tsd-kind-icon">model<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 class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">FaceMeshConfig</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="FaceMeshConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceMeshConfig.html#modelPath" class="tsd-kind-icon">model<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 name="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#L17">config.ts:17</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface"><a name="modelPath" class="tsd-anchor"></a><h3>model<wbr/>Path</h3><div class="tsd-signature tsd-kind-icon">model<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#L18">config.ts:18</a></li></ul></aside></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></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-interface"><a href="FaceMeshConfig.html" class="tsd-kind-icon">Face<wbr/>Mesh<wbr/>Config</a><ul><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceMeshConfig.html#enabled" class="tsd-kind-icon">enabled</a></li><li class="tsd-kind-property tsd-parent-kind-interface"><a href="FaceMeshConfig.html#modelPath" class="tsd-kind-icon">model<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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FaceResult | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FaceResult | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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>Face results
|
||||||
Combined results of face detector, face mesh, age, gender, emotion, embedding, iris models
|
Combined results of face detector, face mesh, age, gender, emotion, embedding, iris models
|
||||||
Some values may be null if specific model is not enabled</p>
|
Some values may be null if specific model is not enabled</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FilterConfig | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>FilterConfig | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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,3 +1,3 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>GestureConfig | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>GestureConfig | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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 name="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#L215">config.ts:215</a></li></ul></aside></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></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-interface"><a href="GestureConfig.html" class="tsd-kind-icon">Gesture<wbr/>Config</a><ul><li class="tsd-kind-property tsd-parent-kind-interface"><a href="GestureConfig.html#enabled" class="tsd-kind-icon">enabled</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 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 name="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#L215">config.ts:215</a></li></ul></aside></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></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-interface"><a href="GestureConfig.html" class="tsd-kind-icon">Gesture<wbr/>Config</a><ul><li class="tsd-kind-property tsd-parent-kind-interface"><a href="GestureConfig.html#enabled" class="tsd-kind-icon">enabled</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>HandConfig | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>HandConfig | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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>Controlls and configures all hand detection specific options</p>
|
<p>Controlls and configures all hand detection specific options</p>
|
||||||
</div><div><p>Parameters:</p>
|
</div><div><p>Parameters:</p>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>HandResult | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>HandResult | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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><p>Each result has:</p>
|
</div><div><p>Each result has:</p>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>ObjectConfig | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>ObjectConfig | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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>Controlls and configures all object detection specific options</p>
|
<p>Controlls and configures all object detection specific options</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>enabled: true/false</li>
|
<li>enabled: true/false</li>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>ObjectResult | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>ObjectResult | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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><p>Array of individual results with one object per detected gesture
|
</div><div><p>Array of individual results with one object per detected gesture
|
||||||
Each result has:</p>
|
Each result has:</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>PersonResult | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>PersonResult | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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>
|
||||||
</div><dl class="tsd-comment-tags"><dt>interface</dt><dd><p>Person Interface</p>
|
</div><dl class="tsd-comment-tags"><dt>interface</dt><dd><p>Person Interface</p>
|
||||||
<p>Each result has:</p>
|
<p>Each result has:</p>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Result | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Result | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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#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 name="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#L185">result.ts:185</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#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 name="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#L185">result.ts:185</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>SegmentationConfig | @vladmandic/human - v2.2.3</title><meta name="description" content="Documentation for @vladmandic/human - v2.2.3"/><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><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.2.3</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.2.3</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 no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>SegmentationConfig | @vladmandic/human - v2.3.0</title><meta name="description" content="Documentation for @vladmandic/human - v2.3.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><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.3.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.3.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>Controlls and configures all body segmentation module
|
<p>Controlls and 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,31 +0,0 @@
|
||||||
/**
|
|
||||||
* BlazeFace, FaceMesh & Iris model implementation
|
|
||||||
* See `facemesh.ts` for entry point
|
|
||||||
*/
|
|
||||||
import type { Config } from '../config';
|
|
||||||
import type { Tensor, GraphModel } from '../tfjs/types';
|
|
||||||
export declare class BlazeFaceModel {
|
|
||||||
model: GraphModel;
|
|
||||||
anchorsData: [number, number][];
|
|
||||||
anchors: Tensor;
|
|
||||||
inputSize: number;
|
|
||||||
config: Config;
|
|
||||||
constructor(model: any, config: Config);
|
|
||||||
getBoundingBoxes(inputImage: Tensor, userConfig: Config): Promise<{
|
|
||||||
boxes: never[];
|
|
||||||
scaleFactor?: never;
|
|
||||||
} | {
|
|
||||||
boxes: {
|
|
||||||
box: {
|
|
||||||
startPoint: Tensor;
|
|
||||||
endPoint: Tensor;
|
|
||||||
};
|
|
||||||
landmarks: Tensor;
|
|
||||||
anchor: [number, number] | undefined;
|
|
||||||
confidence: number;
|
|
||||||
}[];
|
|
||||||
scaleFactor: number[];
|
|
||||||
}>;
|
|
||||||
}
|
|
||||||
export declare function load(config: Config): Promise<BlazeFaceModel>;
|
|
||||||
//# sourceMappingURL=blazeface.d.ts.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"blazeface.d.ts","sourceRoot":"","sources":["../../../src/blazeface/blazeface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAmBxD,qBAAa,cAAc;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;gBAEH,KAAK,KAAA,EAAE,MAAM,EAAE,MAAM;IAQ3B,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;;;;;iBA4BxB;gBAAE,UAAU,EAAE,MAAM,CAAC;gBAAC,QAAQ,EAAE,MAAM,CAAA;aAAE;uBAAa,MAAM;oBAAU,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;wBAAc,MAAM;;;;CAoB3J;AAED,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,2BAMxC"}
|
|
|
@ -1,32 +0,0 @@
|
||||||
/**
|
|
||||||
* BlazeFace, FaceMesh & Iris model implementation
|
|
||||||
* See `facemesh.ts` for entry point
|
|
||||||
*/
|
|
||||||
export declare function scaleBoxCoordinates(box: any, factor: any): {
|
|
||||||
startPoint: number[];
|
|
||||||
endPoint: number[];
|
|
||||||
};
|
|
||||||
export declare function getBoxSize(box: any): [number, number];
|
|
||||||
export declare function getBoxCenter(box: any): [number, number];
|
|
||||||
export declare function cutBoxFromImageAndResize(box: any, image: any, cropSize: any): any;
|
|
||||||
export declare function enlargeBox(box: any, factor?: number): {
|
|
||||||
startPoint: number[];
|
|
||||||
endPoint: number[];
|
|
||||||
landmarks: any;
|
|
||||||
};
|
|
||||||
export declare function squarifyBox(box: any): {
|
|
||||||
startPoint: number[];
|
|
||||||
endPoint: number[];
|
|
||||||
landmarks: any;
|
|
||||||
};
|
|
||||||
export declare function calculateLandmarksBoundingBox(landmarks: any): {
|
|
||||||
startPoint: number[];
|
|
||||||
endPoint: number[];
|
|
||||||
landmarks: any;
|
|
||||||
};
|
|
||||||
export declare const disposeBox: (t: any) => void;
|
|
||||||
export declare const createBox: (startEndTensor: any) => {
|
|
||||||
startPoint: any;
|
|
||||||
endPoint: any;
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=box.d.ts.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../../../src/blazeface/box.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wBAAgB,mBAAmB,CAAC,GAAG,KAAA,EAAE,MAAM,KAAA;;;EAI9C;AAED,wBAAgB,UAAU,CAAC,GAAG,KAAA,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAKhD;AAED,wBAAgB,YAAY,CAAC,GAAG,KAAA,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAKlD;AAED,wBAAgB,wBAAwB,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,QAAQ,KAAA,OAU5D;AAED,wBAAgB,UAAU,CAAC,GAAG,KAAA,EAAE,MAAM,SAAM;;;;EAO3C;AAED,wBAAgB,WAAW,CAAC,GAAG,KAAA;;;;EAQ9B;AAED,wBAAgB,6BAA6B,CAAC,SAAS,KAAA;;;;EAMtD;AAED,eAAO,MAAM,UAAU,kBAGtB,CAAC;AAEF,eAAO,MAAM,SAAS;;;CAGpB,CAAC"}
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"coords.d.ts","sourceRoot":"","sources":["../../../src/blazeface/coords.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC5B,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;GAUpC,CAAC;AAEF,eAAO,MAAM,KAAK,YAqdjB,CAAC;AAEF,eAAO,MAAM,MAAM,UAoF+H,CAAC;AAEnJ,eAAO,MAAM,KAAK,UAOuI,CAAC;AAE1J,eAAO,MAAM,KAAK,UASjB,CAAC;AAEF,eAAO,MAAM,IAAI,UAA8B,CAAC;AAEhD,eAAO,MAAM,KAAK,UAOjB,CAAC;AAEF,eAAO,MAAM,KAAK,UAAyJ,CAAC;AAE5K,eAAO,MAAM,IAAI,UAAkC,CAAC;AAEpD,eAAO,MAAM,IAAI,YAA6B,CAAC;AAE/C,eAAO,MAAM,IAAI,YAA6B,CAAC;AAE/C,eAAO,MAAM,GAAG,YAA4B,CAAC"}
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"facemesh.d.ts","sourceRoot":"","sources":["../../../src/blazeface/facemesh.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAO,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAMxC,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAyClF;AAED,wBAAsB,IAAI,CAAC,MAAM,KAAA,GAAG,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC,CAuBrG;AAED,eAAO,MAAM,aAAa,UAAgB,CAAC;AAC3C,eAAO,MAAM,KAAK,YAAe,CAAC"}
|
|
|
@ -1,53 +0,0 @@
|
||||||
/**
|
|
||||||
* BlazeFace, FaceMesh & Iris model implementation
|
|
||||||
* See `facemesh.ts` for entry point
|
|
||||||
*/
|
|
||||||
import type { GraphModel } from '../tfjs/types';
|
|
||||||
import type { BlazeFaceModel } from './blazeface';
|
|
||||||
import type { Point } from '../result';
|
|
||||||
export declare class Pipeline {
|
|
||||||
storedBoxes: Array<{
|
|
||||||
startPoint: number[];
|
|
||||||
endPoint: number[];
|
|
||||||
landmarks: Array<number>;
|
|
||||||
confidence: number;
|
|
||||||
faceConfidence?: number | undefined;
|
|
||||||
}>;
|
|
||||||
boundingBoxDetector: BlazeFaceModel;
|
|
||||||
meshDetector: GraphModel;
|
|
||||||
irisModel: GraphModel;
|
|
||||||
boxSize: number;
|
|
||||||
meshSize: number;
|
|
||||||
irisSize: number;
|
|
||||||
irisEnlarge: number;
|
|
||||||
skipped: number;
|
|
||||||
detectedFaces: number;
|
|
||||||
constructor(boundingBoxDetector: any, meshDetector: any, irisModel: any);
|
|
||||||
transformRawCoords(rawCoords: any, box: any, angle: any, rotationMatrix: any): any;
|
|
||||||
getLeftToRightEyeDepthDifference(rawCoords: any): number;
|
|
||||||
getEyeBox(rawCoords: any, face: any, eyeInnerCornerIndex: any, eyeOuterCornerIndex: any, flip?: boolean): {
|
|
||||||
box: {
|
|
||||||
startPoint: number[];
|
|
||||||
endPoint: number[];
|
|
||||||
landmarks: any;
|
|
||||||
};
|
|
||||||
boxSize: [number, number];
|
|
||||||
crop: any;
|
|
||||||
};
|
|
||||||
getEyeCoords(eyeData: any, eyeBox: any, eyeBoxSize: any, flip?: boolean): {
|
|
||||||
rawCoords: Point[];
|
|
||||||
iris: Point[];
|
|
||||||
};
|
|
||||||
getAdjustedIrisCoords(rawCoords: any, irisCoords: any, direction: any): any;
|
|
||||||
correctFaceRotation(config: any, box: any, input: any): any[];
|
|
||||||
augmentIris(rawCoords: any, face: any, config: any): Promise<any>;
|
|
||||||
predict(input: any, config: any): Promise<{
|
|
||||||
mesh: any;
|
|
||||||
box: any;
|
|
||||||
faceConfidence: any;
|
|
||||||
boxConfidence: any;
|
|
||||||
confidence: any;
|
|
||||||
image: any;
|
|
||||||
}[] | null>;
|
|
||||||
}
|
|
||||||
//# sourceMappingURL=facepipeline.d.ts.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"facepipeline.d.ts","sourceRoot":"","sources":["../../../src/blazeface/facepipeline.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAmDvC,qBAAa,QAAQ;IACnB,WAAW,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IACpJ,mBAAmB,EAAE,cAAc,CAAC;IACpC,YAAY,EAAE,UAAU,CAAC;IACzB,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;gBAEV,mBAAmB,KAAA,EAAE,YAAY,KAAA,EAAE,SAAS,KAAA;IAcxD,kBAAkB,CAAC,SAAS,KAAA,EAAE,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,cAAc,KAAA;IAmBxD,gCAAgC,CAAC,SAAS,KAAA;IAO1C,SAAS,CAAC,SAAS,KAAA,EAAE,IAAI,KAAA,EAAE,mBAAmB,KAAA,EAAE,mBAAmB,KAAA,EAAE,IAAI,UAAQ;;;;;;;;;IAiBjF,YAAY,CAAC,OAAO,KAAA,EAAE,MAAM,KAAA,EAAE,UAAU,KAAA,EAAE,IAAI,UAAQ;;;;IAgBtD,qBAAqB,CAAC,SAAS,KAAA,EAAE,UAAU,KAAA,EAAE,SAAS,KAAA;IAgBtD,mBAAmB,CAAC,MAAM,KAAA,EAAE,GAAG,KAAA,EAAE,KAAK,KAAA;IAgBhC,WAAW,CAAC,SAAS,KAAA,EAAE,IAAI,KAAA,EAAE,MAAM,KAAA;IAmCnC,OAAO,CAAC,KAAK,KAAA,EAAE,MAAM,KAAA;;;;;;;;CAiI5B"}
|
|
|
@ -1,27 +0,0 @@
|
||||||
/**
|
|
||||||
* BlazeFace, FaceMesh & Iris model implementation
|
|
||||||
* See `facemesh.ts` for entry point
|
|
||||||
*/
|
|
||||||
export declare const IDENTITY_MATRIX: number[][];
|
|
||||||
/**
|
|
||||||
* Normalizes the provided angle to the range -pi to pi.
|
|
||||||
* @param angle The angle in radians to be normalized.
|
|
||||||
*/
|
|
||||||
export declare function normalizeRadians(angle: any): number;
|
|
||||||
/**
|
|
||||||
* Computes the angle of rotation between two anchor points.
|
|
||||||
* @param point1 First anchor point
|
|
||||||
* @param point2 Second anchor point
|
|
||||||
*/
|
|
||||||
export declare function computeRotation(point1: any, point2: any): number;
|
|
||||||
export declare function radToDegrees(rad: any): number;
|
|
||||||
export declare function buildTranslationMatrix(x: any, y: any): any[][];
|
|
||||||
export declare function dot(v1: any, v2: any): number;
|
|
||||||
export declare function getColumnFrom2DArr(arr: any, columnIndex: any): number[];
|
|
||||||
export declare function multiplyTransformMatrices(mat1: any, mat2: any): number[][];
|
|
||||||
export declare function buildRotationMatrix(rotation: any, center: any): number[][];
|
|
||||||
export declare function invertTransformMatrix(matrix: any): any[][];
|
|
||||||
export declare function rotatePoint(homogeneousCoordinate: any, rotationMatrix: any): number[];
|
|
||||||
export declare function xyDistanceBetweenPoints(a: any, b: any): number;
|
|
||||||
export declare function generateAnchors(inputSize: any): [number, number][];
|
|
||||||
//# sourceMappingURL=util.d.ts.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/blazeface/util.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe,YAAoC,CAAC;AACjE;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,KAAA,UAErC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,KAAA,EAAE,MAAM,KAAA,UAG7C;AAED,wBAAgB,YAAY,CAAC,GAAG,KAAA,UAE/B;AAED,wBAAgB,sBAAsB,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,WAE1C;AAED,wBAAgB,GAAG,CAAC,EAAE,KAAA,EAAE,EAAE,KAAA,UAMzB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,KAAA,EAAE,WAAW,KAAA,YAMlD;AAED,wBAAgB,yBAAyB,CAAC,IAAI,KAAA,EAAE,IAAI,KAAA,cAUnD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,KAAA,EAAE,MAAM,KAAA,cAQnD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,KAAA,WAY3C;AAED,wBAAgB,WAAW,CAAC,qBAAqB,KAAA,EAAE,cAAc,KAAA,YAKhE;AAED,wBAAgB,uBAAuB,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,UAE3C;AAED,wBAAgB,eAAe,CAAC,SAAS,KAAA,sBAmBxC"}
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
/**
|
||||||
|
* PoseNet body detection model implementation
|
||||||
|
*
|
||||||
|
* Based on: [**PoseNet**](https://medium.com/tensorflow/real-time-human-pose-estimation-in-the-browser-with-tensorflow-js-7dd0bc881cd5)
|
||||||
|
*/
|
||||||
|
import type { BodyResult, Box } from '../result';
|
||||||
|
import type { Tensor, GraphModel } from '../tfjs/types';
|
||||||
|
import type { Config } from '../config';
|
||||||
|
import * as utils from './posenetutils';
|
||||||
|
export declare function decodePose(root: any, scores: any, offsets: any, displacementsFwd: any, displacementsBwd: any): any[];
|
||||||
|
export declare function buildPartWithScoreQueue(minConfidence: any, scores: any): utils.MaxHeap;
|
||||||
|
export declare function decode(offsets: any, scores: any, displacementsFwd: any, displacementsBwd: any, maxDetected: any, minConfidence: any): {
|
||||||
|
keypoints: any;
|
||||||
|
box: Box;
|
||||||
|
score: number;
|
||||||
|
}[];
|
||||||
|
export declare function predict(input: Tensor, config: Config): Promise<BodyResult[]>;
|
||||||
|
export declare function load(config: Config): Promise<GraphModel>;
|
||||||
|
//# sourceMappingURL=posenet.d.ts.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"posenet.d.ts","sourceRoot":"","sources":["../../../src/body/posenet.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AAsCxC,wBAAgB,UAAU,CAAC,IAAI,KAAA,EAAE,MAAM,KAAA,EAAE,OAAO,KAAA,EAAE,gBAAgB,KAAA,EAAE,gBAAgB,KAAA,SA+BnF;AAqBD,wBAAgB,uBAAuB,CAAC,aAAa,KAAA,EAAE,MAAM,KAAA,iBAe5D;AAkBD,wBAAgB,MAAM,CAAC,OAAO,KAAA,EAAE,MAAM,KAAA,EAAE,gBAAgB,KAAA,EAAE,gBAAgB,KAAA,EAAE,WAAW,KAAA,EAAE,aAAa,KAAA;;;WACnD,MAAM;IAmBxD;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAkBlF;AAED,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAO9D"}
|
|
@ -3,6 +3,11 @@
|
||||||
* See `posenet.ts` for entry point
|
* See `posenet.ts` for entry point
|
||||||
*/
|
*/
|
||||||
import type { BodyResult } from '../result';
|
import type { BodyResult } from '../result';
|
||||||
|
export declare const partNames: string[];
|
||||||
|
export declare const count: number;
|
||||||
|
export declare const partIds: {};
|
||||||
|
export declare const connectedPartIndices: any[][];
|
||||||
|
export declare const poseChain: string[][];
|
||||||
export declare function eitherPointDoesntMeetConfidence(a: number, b: number, minConfidence: number): boolean;
|
export declare function eitherPointDoesntMeetConfidence(a: number, b: number, minConfidence: number): boolean;
|
||||||
export declare function getAdjacentKeyPoints(keypoints: any, minConfidence: number): any[];
|
export declare function getAdjacentKeyPoints(keypoints: any, minConfidence: number): any[];
|
||||||
export declare function getBoundingBox(keypoints: any): [number, number, number, number];
|
export declare function getBoundingBox(keypoints: any): [number, number, number, number];
|
||||||
|
@ -43,4 +48,4 @@ export declare function clampVector(a: any, min: any, max: any): {
|
||||||
y: any;
|
y: any;
|
||||||
x: any;
|
x: any;
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=utils.d.ts.map
|
//# sourceMappingURL=posenetutils.d.ts.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"posenetutils.d.ts","sourceRoot":"","sources":["../../../src/body/posenetutils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,eAAO,MAAM,SAAS,UAIrB,CAAC;AAEF,eAAO,MAAM,KAAK,QAAmB,CAAC;AAEtC,eAAO,MAAM,OAAO,IAGd,CAAC;AAUP,eAAO,MAAM,oBAAoB,SAAqG,CAAC;AAEvI,eAAO,MAAM,SAAS,YASrB,CAAC;AAEF,wBAAgB,+BAA+B,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,WAE1F;AAED,wBAAgB,oBAAoB,CAAC,SAAS,KAAA,EAAE,aAAa,EAAE,MAAM,SAQpE;AAED,wBAAgB,cAAc,CAAC,SAAS,KAAA,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAa1E;AAED,wBAAgB,UAAU,CAAC,KAAK,KAAA,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,YAAA,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,YAAA,GAAG,KAAK,CAAC,UAAU,CAAC,CAiBnH;AAGD,qBAAa,OAAO;IAClB,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;gBAEb,OAAO,KAAA,EAAE,eAAe,KAAA;IAMpC,OAAO,CAAC,CAAC,KAAA;IAKT,OAAO;IAQP,KAAK;IAEL,IAAI;IAEJ,GAAG;IAEH,GAAG;IAEH,IAAI,CAAC,CAAC,KAAA;IAON,IAAI,CAAC,CAAC,KAAA;IAUN,UAAU,CAAC,CAAC,KAAA;IAKZ,IAAI,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;IAIT,QAAQ,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;CAKd;AAED,wBAAgB,cAAc,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,EAAE,QAAQ,KAAA,EAAE,OAAO,KAAA;;;EAKrD;AAED,wBAAgB,cAAc,CAAC,IAAI,KAAA,EAAE,YAAY,KAAA,EAAE,OAAO,KAAA;;;EAOzD;AAED,wBAAgB,SAAS,CAAC,OAAO,KAAA,EAAE,IAAI,KAAA,SAMtC;AAED,wBAAgB,KAAK,CAAC,CAAC,KAAA,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA,OAIhC;AAED,wBAAgB,eAAe,CAAC,EAAE,KAAA,EAAE,EAAE,KAAA,EAAE,EAAE,KAAA,EAAE,EAAE,KAAA,UAI7C;AAED,wBAAgB,UAAU,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;;;EAE9B;AAED,wBAAgB,WAAW,CAAC,CAAC,KAAA,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA;;;EAEtC"}
|
|
@ -0,0 +1,13 @@
|
||||||
|
export declare const calculateFaceAngle: (face: any, imageSize: any) => {
|
||||||
|
angle: {
|
||||||
|
pitch: number;
|
||||||
|
yaw: number;
|
||||||
|
roll: number;
|
||||||
|
};
|
||||||
|
matrix: [number, number, number, number, number, number, number, number, number];
|
||||||
|
gaze: {
|
||||||
|
bearing: number;
|
||||||
|
strength: number;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=angles.d.ts.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"angles.d.ts","sourceRoot":"","sources":["../../../src/face/angles.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,kBAAkB;WACtB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;YAC3C,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;UAC1E;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAmG5C,CAAC"}
|
|
@ -0,0 +1,24 @@
|
||||||
|
/**
|
||||||
|
* BlazeFace, FaceMesh & Iris model implementation
|
||||||
|
* See `facemesh.ts` for entry point
|
||||||
|
*/
|
||||||
|
import type { Config } from '../config';
|
||||||
|
import type { Tensor, GraphModel } from '../tfjs/types';
|
||||||
|
export declare const size: () => number;
|
||||||
|
export declare function load(config: Config): Promise<GraphModel>;
|
||||||
|
export declare function getBoxes(inputImage: Tensor, config: Config): Promise<{
|
||||||
|
boxes: never[];
|
||||||
|
scaleFactor?: never;
|
||||||
|
} | {
|
||||||
|
boxes: {
|
||||||
|
box: {
|
||||||
|
startPoint: Tensor;
|
||||||
|
endPoint: Tensor;
|
||||||
|
};
|
||||||
|
landmarks: Tensor;
|
||||||
|
anchor: [number, number] | undefined;
|
||||||
|
confidence: number;
|
||||||
|
}[];
|
||||||
|
scaleFactor: number[];
|
||||||
|
}>;
|
||||||
|
//# sourceMappingURL=blazeface.d.ts.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"blazeface.d.ts","sourceRoot":"","sources":["../../../src/face/blazeface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAUxD,eAAO,MAAM,IAAI,cAAkB,CAAC;AAEpC,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAY9D;AAiBD,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;aA0B5B;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE;mBAAa,MAAM;gBAAU,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;oBAAc,MAAM;;;GAmBzJ"}
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"face.d.ts","sourceRoot":"","sources":["../../../src/face/face.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAwI5C,eAAO,MAAM,UAAU,uBAAiD,MAAM,KAAG,QAAQ,UAAU,EAAE,CAoHpG,CAAC"}
|
{"version":3,"file":"face.d.ts","sourceRoot":"","sources":["../../../src/face/face.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5C,eAAO,MAAM,UAAU,uBAAiD,MAAM,KAAG,QAAQ,UAAU,EAAE,CAqHpG,CAAC"}
|
|
@ -10,7 +10,7 @@ import type { GraphModel, Tensor } from '../tfjs/types';
|
||||||
import type { FaceResult } from '../result';
|
import type { FaceResult } from '../result';
|
||||||
import type { Config } from '../config';
|
import type { Config } from '../config';
|
||||||
export declare function predict(input: Tensor, config: Config): Promise<FaceResult[]>;
|
export declare function predict(input: Tensor, config: Config): Promise<FaceResult[]>;
|
||||||
export declare function load(config: any): Promise<[GraphModel | null, GraphModel | null, GraphModel | null]>;
|
export declare function load(config: Config): Promise<GraphModel>;
|
||||||
export declare const triangulation: number[];
|
export declare const triangulation: number[];
|
||||||
export declare const uvmap: number[][];
|
export declare const uvmap: number[][];
|
||||||
//# sourceMappingURL=facemesh.d.ts.map
|
//# sourceMappingURL=facemesh.d.ts.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"facemesh.d.ts","sourceRoot":"","sources":["../../../src/face/facemesh.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAUxC,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAgGlF;AAED,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAU9D;AAED,eAAO,MAAM,aAAa,UAAgB,CAAC;AAC3C,eAAO,MAAM,KAAK,YAAe,CAAC"}
|
|
@ -2,7 +2,7 @@
|
||||||
* BlazeFace, FaceMesh & Iris model implementation
|
* BlazeFace, FaceMesh & Iris model implementation
|
||||||
* See `facemesh.ts` for entry point
|
* See `facemesh.ts` for entry point
|
||||||
*/
|
*/
|
||||||
export declare const MESH_ANNOTATIONS: {
|
export declare const meshAnnotations: {
|
||||||
silhouette: number[];
|
silhouette: number[];
|
||||||
lipsUpperOuter: number[];
|
lipsUpperOuter: number[];
|
||||||
lipsLowerOuter: number[];
|
lipsLowerOuter: number[];
|
||||||
|
@ -36,6 +36,20 @@ export declare const MESH_ANNOTATIONS: {
|
||||||
rightCheek: number[];
|
rightCheek: number[];
|
||||||
leftCheek: number[];
|
leftCheek: number[];
|
||||||
};
|
};
|
||||||
|
export declare const meshLandmarks: {
|
||||||
|
count: number;
|
||||||
|
mouth: number;
|
||||||
|
symmetryLine: number[];
|
||||||
|
};
|
||||||
|
export declare const blazeFaceLandmarks: {
|
||||||
|
leftEye: number;
|
||||||
|
rightEye: number;
|
||||||
|
nose: number;
|
||||||
|
mouth: number;
|
||||||
|
leftEar: number;
|
||||||
|
rightEar: number;
|
||||||
|
symmetryLine: number[];
|
||||||
|
};
|
||||||
export declare const MESH_TO_IRIS_INDICES_MAP: {
|
export declare const MESH_TO_IRIS_INDICES_MAP: {
|
||||||
key: string;
|
key: string;
|
||||||
indices: number[];
|
indices: number[];
|
||||||
|
@ -51,4 +65,4 @@ export declare const VTX7: number[];
|
||||||
export declare const UV68: number[][];
|
export declare const UV68: number[][];
|
||||||
export declare const UV33: number[][];
|
export declare const UV33: number[][];
|
||||||
export declare const UV7: number[][];
|
export declare const UV7: number[][];
|
||||||
//# sourceMappingURL=coords.d.ts.map
|
//# sourceMappingURL=facemeshcoords.d.ts.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"facemeshcoords.d.ts","sourceRoot":"","sources":["../../../src/face/facemeshcoords.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC3B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;CAIzB,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;CAQ9B,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;GAUpC,CAAC;AAEF,eAAO,MAAM,KAAK,YAqdjB,CAAC;AAEF,eAAO,MAAM,MAAM,UAoF+H,CAAC;AAEnJ,eAAO,MAAM,KAAK,UAOuI,CAAC;AAE1J,eAAO,MAAM,KAAK,UASjB,CAAC;AAEF,eAAO,MAAM,IAAI,UAA8B,CAAC;AAEhD,eAAO,MAAM,KAAK,UAOjB,CAAC;AAEF,eAAO,MAAM,KAAK,UAAyJ,CAAC;AAE5K,eAAO,MAAM,IAAI,UAAkC,CAAC;AAEpD,eAAO,MAAM,IAAI,YAA6B,CAAC;AAE/C,eAAO,MAAM,IAAI,YAA6B,CAAC;AAE/C,eAAO,MAAM,GAAG,YAA4B,CAAC"}
|
|
@ -0,0 +1,50 @@
|
||||||
|
/**
|
||||||
|
* BlazeFace, FaceMesh & Iris model implementation
|
||||||
|
* See `facemesh.ts` for entry point
|
||||||
|
*/
|
||||||
|
import type { Box, Point } from '../result';
|
||||||
|
export declare const createBox: (startEndTensor: any) => {
|
||||||
|
startPoint: any;
|
||||||
|
endPoint: any;
|
||||||
|
};
|
||||||
|
export declare const disposeBox: (t: any) => void;
|
||||||
|
export declare const getBoxSize: (box: any) => [number, number];
|
||||||
|
export declare const getBoxCenter: (box: any) => [number, number];
|
||||||
|
export declare const getClampedBox: (box: any, input: any) => Box;
|
||||||
|
export declare const getRawBox: (box: any, input: any) => Box;
|
||||||
|
export declare const scaleBoxCoordinates: (box: any, factor: any) => {
|
||||||
|
startPoint: number[];
|
||||||
|
endPoint: number[];
|
||||||
|
};
|
||||||
|
export declare const cutBoxFromImageAndResize: (box: any, image: any, cropSize: any) => any;
|
||||||
|
export declare const enlargeBox: (box: any, factor?: number) => {
|
||||||
|
startPoint: Point;
|
||||||
|
endPoint: Point;
|
||||||
|
landmarks: any;
|
||||||
|
};
|
||||||
|
export declare const squarifyBox: (box: any) => {
|
||||||
|
startPoint: Point;
|
||||||
|
endPoint: Point;
|
||||||
|
landmarks: any;
|
||||||
|
};
|
||||||
|
export declare const calculateLandmarksBoundingBox: (landmarks: any) => {
|
||||||
|
startPoint: number[];
|
||||||
|
endPoint: number[];
|
||||||
|
landmarks: any;
|
||||||
|
};
|
||||||
|
export declare const IDENTITY_MATRIX: number[][];
|
||||||
|
export declare const normalizeRadians: (angle: any) => number;
|
||||||
|
export declare const computeRotation: (point1: any, point2: any) => number;
|
||||||
|
export declare const radToDegrees: (rad: any) => number;
|
||||||
|
export declare const buildTranslationMatrix: (x: any, y: any) => any[][];
|
||||||
|
export declare const dot: (v1: any, v2: any) => number;
|
||||||
|
export declare const getColumnFrom2DArr: (arr: any, columnIndex: any) => number[];
|
||||||
|
export declare const multiplyTransformMatrices: (mat1: any, mat2: any) => number[][];
|
||||||
|
export declare const buildRotationMatrix: (rotation: any, center: any) => number[][];
|
||||||
|
export declare const invertTransformMatrix: (matrix: any) => any[][];
|
||||||
|
export declare const rotatePoint: (homogeneousCoordinate: any, rotationMatrix: any) => number[];
|
||||||
|
export declare const xyDistanceBetweenPoints: (a: any, b: any) => number;
|
||||||
|
export declare function generateAnchors(inputSize: any): [number, number][];
|
||||||
|
export declare function transformRawCoords(rawCoords: any, box: any, angle: any, rotationMatrix: any, inputSize: any): any;
|
||||||
|
export declare function correctFaceRotation(box: any, input: any, inputSize: any): any[];
|
||||||
|
//# sourceMappingURL=facemeshutil.d.ts.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"facemeshutil.d.ts","sourceRoot":"","sources":["../../../src/face/facemeshutil.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAE5C,eAAO,MAAM,SAAS;;;CAAuI,CAAC;AAE9J,eAAO,MAAM,UAAU,kBAAgD,CAAC;AAExE,eAAO,MAAM,UAAU,gBAAU,CAAC,MAAM,EAAE,MAAM,CAAmG,CAAC;AAEpJ,eAAO,MAAM,YAAY,gBAAU,CAAC,MAAM,EAAE,MAAM,CAAmI,CAAC;AAEtL,eAAO,MAAM,aAAa,+BAKT,CAAC;AAElB,eAAO,MAAM,SAAS,+BAKL,CAAC;AAElB,eAAO,MAAM,mBAAmB;;;CAI/B,CAAC;AAEF,eAAO,MAAM,wBAAwB,8CAIpC,CAAC;AAEF,eAAO,MAAM,UAAU;;;;CAKtB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;CAKvB,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;CAIzC,CAAC;AAEF,eAAO,MAAM,eAAe,YAAoC,CAAC;AAEjE,eAAO,MAAM,gBAAgB,wBAAiF,CAAC;AAE/G,eAAO,MAAM,eAAe,sCAAkH,CAAC;AAE/I,eAAO,MAAM,YAAY,sBAA+B,CAAC;AAEzD,eAAO,MAAM,sBAAsB,6BAA8C,CAAC;AAElF,eAAO,MAAM,GAAG,8BAIf,CAAC;AAEF,eAAO,MAAM,kBAAkB,0CAI9B,CAAC;AAEF,eAAO,MAAM,yBAAyB,sCAQrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,4CAQ/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,0BAKjC,CAAC;AAEF,eAAO,MAAM,WAAW,+DAA4I,CAAC;AAErK,eAAO,MAAM,uBAAuB,4BAAmE,CAAC;AAExG,wBAAgB,eAAe,CAAC,SAAS,KAAA,sBAiBxC;AAED,wBAAgB,kBAAkB,CAAC,SAAS,KAAA,EAAE,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,cAAc,KAAA,EAAE,SAAS,KAAA,OAgBlF;AAED,wBAAgB,mBAAmB,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,SAAS,KAAA,SAYxD"}
|
|
@ -0,0 +1,21 @@
|
||||||
|
import type { GraphModel } from '../tfjs/types';
|
||||||
|
import type { Config } from '../config';
|
||||||
|
import type { Point } from '../result';
|
||||||
|
export declare function load(config: Config): Promise<GraphModel>;
|
||||||
|
export declare const getLeftToRightEyeDepthDifference: (rawCoords: any) => number;
|
||||||
|
export declare const getEyeBox: (rawCoords: any, face: any, eyeInnerCornerIndex: any, eyeOuterCornerIndex: any, flip: boolean | undefined, meshSize: any) => {
|
||||||
|
box: {
|
||||||
|
startPoint: Point;
|
||||||
|
endPoint: Point;
|
||||||
|
landmarks: any;
|
||||||
|
};
|
||||||
|
boxSize: [number, number];
|
||||||
|
crop: any;
|
||||||
|
};
|
||||||
|
export declare const getEyeCoords: (eyeData: any, eyeBox: any, eyeBoxSize: any, flip?: boolean) => {
|
||||||
|
rawCoords: Point[];
|
||||||
|
iris: Point[];
|
||||||
|
};
|
||||||
|
export declare const getAdjustedIrisCoords: (rawCoords: any, irisCoords: any, direction: any) => any;
|
||||||
|
export declare function augmentIris(rawCoords: any, face: any, config: any, meshSize: any): Promise<any>;
|
||||||
|
//# sourceMappingURL=iris.d.ts.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"iris.d.ts","sourceRoot":"","sources":["../../../src/face/iris.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,eAAe,CAAC;AAGxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAsBvC,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAU9D;AAqBD,eAAO,MAAM,gCAAgC,4BAI5C,CAAC;AAGF,eAAO,MAAM,SAAS;;;;;;;;CAcrB,CAAC;AAGF,eAAO,MAAM,YAAY;;;CAYxB,CAAC;AAIF,eAAO,MAAM,qBAAqB,0DAcjC,CAAC;AAEF,wBAAsB,WAAW,CAAC,SAAS,KAAA,EAAE,IAAI,KAAA,EAAE,MAAM,KAAA,EAAE,QAAQ,KAAA,gBAiClE"}
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"description.d.ts","sourceRoot":"","sources":["../../../src/fingerpose/description.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;CAwBX,CAAC;AAEF,QAAA,MAAM,UAAU;;;;;;;;;;CAMf,CAAC;AAEF,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;CAWpB,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC"}
|
|
|
@ -1,9 +0,0 @@
|
||||||
/**
|
|
||||||
* FingerPose algorithm implementation
|
|
||||||
* See `fingerpose.ts` for entry point
|
|
||||||
*/
|
|
||||||
export declare function estimate(landmarks: any): {
|
|
||||||
curls: number[];
|
|
||||||
directions: number[];
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=estimator.d.ts.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"estimator.d.ts","sourceRoot":"","sources":["../../../src/fingerpose/estimator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwKH,wBAAgB,QAAQ,CAAC,SAAS,KAAA;;;EA0CjC"}
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"fingerpose.d.ts","sourceRoot":"","sources":["../../../src/fingerpose/fingerpose.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,wBAAgB,OAAO,CAAC,SAAS,KAAA,aAYhC;AAED,wBAAgB,KAAK,CAAC,SAAS,KAAA;UACF,MAAM;gBAAc,MAAM;IAStD"}
|
|
|
@ -1,17 +0,0 @@
|
||||||
/**
|
|
||||||
* FingerPose algorithm implementation
|
|
||||||
* See `fingerpose.ts` for entry point
|
|
||||||
*/
|
|
||||||
export default class Gesture {
|
|
||||||
name: any;
|
|
||||||
curls: any;
|
|
||||||
directions: any;
|
|
||||||
weights: any;
|
|
||||||
weightsRelative: any;
|
|
||||||
constructor(name: any);
|
|
||||||
addCurl(finger: any, curl: any, confidence: any): void;
|
|
||||||
addDirection(finger: any, position: any, confidence: any): void;
|
|
||||||
setWeight(finger: any, weight: any): void;
|
|
||||||
matchAgainst(detectedCurls: any, detectedDirections: any): number;
|
|
||||||
}
|
|
||||||
//# sourceMappingURL=gesture.d.ts.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"gesture.d.ts","sourceRoot":"","sources":["../../../src/fingerpose/gesture.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,OAAO,OAAO,OAAO;IAC1B,IAAI,MAAC;IACL,KAAK,MAAC;IACN,UAAU,MAAC;IACX,OAAO,MAAC;IACR,eAAe,MAAC;gBAEJ,IAAI,KAAA;IAShB,OAAO,CAAC,MAAM,KAAA,EAAE,IAAI,KAAA,EAAE,UAAU,KAAA;IAKhC,YAAY,CAAC,MAAM,KAAA,EAAE,QAAQ,KAAA,EAAE,UAAU,KAAA;IAKzC,SAAS,CAAC,MAAM,KAAA,EAAE,MAAM,KAAA;IAOxB,YAAY,CAAC,aAAa,KAAA,EAAE,kBAAkB,KAAA;CAyC/C"}
|
|
|
@ -1,8 +0,0 @@
|
||||||
/**
|
|
||||||
* FingerPose algorithm implementation
|
|
||||||
* See `fingerpose.ts` for entry point
|
|
||||||
*/
|
|
||||||
import Gesture from './gesture';
|
|
||||||
declare const _default: Gesture[];
|
|
||||||
export default _default;
|
|
||||||
//# sourceMappingURL=gestures.d.ts.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"gestures.d.ts","sourceRoot":"","sources":["../../../src/fingerpose/gestures.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,OAAO,MAAM,WAAW,CAAC;;AAqChC,wBAAmC"}
|
|
|
@ -1,8 +1,8 @@
|
||||||
/**
|
/**
|
||||||
* FingerPose algorithm implementation constants
|
* FingerPose algorithm implementation
|
||||||
* See `fingerpose.ts` for entry point
|
* See `fingerpose.ts` for entry point
|
||||||
*/
|
*/
|
||||||
declare const Finger: {
|
export declare const Finger: {
|
||||||
thumb: number;
|
thumb: number;
|
||||||
index: number;
|
index: number;
|
||||||
middle: number;
|
middle: number;
|
||||||
|
@ -26,7 +26,7 @@ declare const Finger: {
|
||||||
getName: (value: any) => any;
|
getName: (value: any) => any;
|
||||||
getPoints: (value: any) => any;
|
getPoints: (value: any) => any;
|
||||||
};
|
};
|
||||||
declare const FingerCurl: {
|
export declare const FingerCurl: {
|
||||||
none: number;
|
none: number;
|
||||||
half: number;
|
half: number;
|
||||||
full: number;
|
full: number;
|
||||||
|
@ -37,7 +37,7 @@ declare const FingerCurl: {
|
||||||
};
|
};
|
||||||
getName: (value: any) => any;
|
getName: (value: any) => any;
|
||||||
};
|
};
|
||||||
declare const FingerDirection: {
|
export declare const FingerDirection: {
|
||||||
verticalUp: number;
|
verticalUp: number;
|
||||||
verticalDown: number;
|
verticalDown: number;
|
||||||
horizontalLeft: number;
|
horizontalLeft: number;
|
||||||
|
@ -58,5 +58,16 @@ declare const FingerDirection: {
|
||||||
};
|
};
|
||||||
getName: (value: any) => any;
|
getName: (value: any) => any;
|
||||||
};
|
};
|
||||||
export { Finger, FingerCurl, FingerDirection };
|
export declare class FingerGesture {
|
||||||
//# sourceMappingURL=description.d.ts.map
|
name: any;
|
||||||
|
curls: any;
|
||||||
|
directions: any;
|
||||||
|
weights: any;
|
||||||
|
weightsRelative: any;
|
||||||
|
constructor(name: any);
|
||||||
|
addCurl(finger: any, curl: any, confidence: any): void;
|
||||||
|
addDirection(finger: any, position: any, confidence: any): void;
|
||||||
|
setWeight(finger: any, weight: any): void;
|
||||||
|
matchAgainst(detectedCurls: any, detectedDirections: any): number;
|
||||||
|
}
|
||||||
|
//# sourceMappingURL=fingerdef.d.ts.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"fingerdef.d.ts","sourceRoot":"","sources":["../../../src/hand/fingerdef.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;CAwBlB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;CAMtB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;CAW3B,CAAC;AAEF,qBAAa,aAAa;IACxB,IAAI,MAAC;IACL,KAAK,MAAC;IACN,UAAU,MAAC;IACX,OAAO,MAAC;IACR,eAAe,MAAC;gBAEJ,IAAI,KAAA;IAShB,OAAO,CAAC,MAAM,KAAA,EAAE,IAAI,KAAA,EAAE,UAAU,KAAA;IAKhC,YAAY,CAAC,MAAM,KAAA,EAAE,QAAQ,KAAA,EAAE,UAAU,KAAA;IAKzC,SAAS,CAAC,MAAM,KAAA,EAAE,MAAM,KAAA;IAOxB,YAAY,CAAC,aAAa,KAAA,EAAE,kBAAkB,KAAA;CAyC/C"}
|
|
@ -0,0 +1,8 @@
|
||||||
|
/**
|
||||||
|
* FingerPose algorithm implementation
|
||||||
|
* See `fingerpose.ts` for entry point
|
||||||
|
*/
|
||||||
|
import { FingerGesture } from './fingerdef';
|
||||||
|
declare const _default: FingerGesture[];
|
||||||
|
export default _default;
|
||||||
|
//# sourceMappingURL=fingergesture.d.ts.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"fingergesture.d.ts","sourceRoot":"","sources":["../../../src/hand/fingergesture.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAuC,aAAa,EAAE,MAAM,aAAa,CAAC;;AAqCjF,wBAAmC"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"fingerpose.d.ts","sourceRoot":"","sources":["../../../src/hand/fingerpose.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsNH,wBAAgB,OAAO,CAAC,SAAS,KAAA,aAYhC;AAED,wBAAgB,KAAK,CAAC,SAAS,KAAA;UACF,MAAM;gBAAc,MAAM;IAStD"}
|
|
@ -5,7 +5,7 @@ import { Config } from './config';
|
||||||
import type { Result } from './result';
|
import type { Result } from './result';
|
||||||
import * as tf from '../dist/tfjs.esm.js';
|
import * as tf from '../dist/tfjs.esm.js';
|
||||||
import * as models from './models';
|
import * as models from './models';
|
||||||
import * as facemesh from './blazeface/facemesh';
|
import * as facemesh from './face/facemesh';
|
||||||
import * as env from './util/env';
|
import * as env from './util/env';
|
||||||
import type { Tensor } from './tfjs/types';
|
import type { Tensor } from './tfjs/types';
|
||||||
import type { DrawOptions } from './util/draw';
|
import type { DrawOptions } from './util/draw';
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"human.d.ts","sourceRoot":"","sources":["../../src/human.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAY,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAiF,MAAM,UAAU,CAAC;AACtH,OAAO,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AAiBjD,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAKlC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,oBAAY,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAEpJ;;;;;;;GAOG;AACH,oBAAY,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEjF;;GAEG;AACH,oBAAY,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC;;GAEG;AACH,oBAAY,UAAU,GAAG,OAAO,EAAE,CAAC;AAEnC;;;;;;;;;;GAUG;AACH,qBAAa,KAAK;;IAChB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;MAGE;IACF,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd,iDAAiD;IACjD,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,eAAe,GAAG,iBAAiB,GAAG,IAAI,CAAA;KAAE,CAAC;IAEvF;;;;;OAKG;IACH,EAAE,EAAE,UAAU,CAAC;IAEf,qEAAqE;IACrE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;IAEb;;;;;;;OAOG;IACH,IAAI,EAAE;QAAE,MAAM,MAAC;QAAC,IAAI,MAAC;QAAC,IAAI,MAAC;QAAC,IAAI,MAAC;QAAC,OAAO,MAAC;QAAC,MAAM,MAAC;QAAC,MAAM,MAAC;QAAC,GAAG,MAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC;IAEvF;;;MAGE;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IAEtB;;;;;;;;;OASG;IACH,MAAM,EAAE,WAAW,CAAC;IACpB,oGAAoG;IACpG,iBAAiB,EAAE,OAAO,QAAQ,CAAC,aAAa,CAAC;IACjD,0EAA0E;IAC1E,SAAS,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC;IACjC,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAIpC,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAG5B;;;;;OAKG;gBACS,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;IA8CxC,cAAc;IACd,OAAO,WAAY,MAAM,EAAE,UAO1B;IAgBD,4CAA4C;IAC5C,KAAK;IAML,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;;;;;IAIrC;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,KAAK;;;;IAIlB;;;;;;;MAOE;IAEF,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM;IAIxE;;;;;;;;;;;;OAYG;IACG,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,iBAAiB,GAAG,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC;IAIxL;;;;OAIG;IAEH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIrC;;;;;;OAMG;IAEH,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,EAAE,SAAS,SAAI,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE;IAI/L;;;;;;OAMG;IACG,IAAI;IAMV;;;;;MAKE;IACI,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;IAgCvC,cAAc;IACd,IAAI,UAAW,MAAM,aAAkD;IAEvE;;;;;OAKG;IACH,IAAI,CAAC,MAAM,GAAE,MAAoB;IAIjC;;;;;MAKE;IACI,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG;QAAE,KAAK,MAAA;KAAE,CAAC;IAIvE;;;;;;;;;MASE;IACI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;CAkKlF;AAED,oCAAoC;AACpC,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,CAAC"}
|
{"version":3,"file":"human.d.ts","sourceRoot":"","sources":["../../src/human.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAY,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAiF,MAAM,UAAU,CAAC;AACtH,OAAO,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAiB5C,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAKlC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,oBAAY,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAEpJ;;;;;;;GAOG;AACH,oBAAY,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEjF;;GAEG;AACH,oBAAY,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC;;GAEG;AACH,oBAAY,UAAU,GAAG,OAAO,EAAE,CAAC;AAEnC;;;;;;;;;;GAUG;AACH,qBAAa,KAAK;;IAChB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;MAGE;IACF,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd,iDAAiD;IACjD,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,eAAe,GAAG,iBAAiB,GAAG,IAAI,CAAA;KAAE,CAAC;IAEvF;;;;;OAKG;IACH,EAAE,EAAE,UAAU,CAAC;IAEf,qEAAqE;IACrE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;IAEb;;;;;;;OAOG;IACH,IAAI,EAAE;QAAE,MAAM,MAAC;QAAC,IAAI,MAAC;QAAC,IAAI,MAAC;QAAC,IAAI,MAAC;QAAC,OAAO,MAAC;QAAC,MAAM,MAAC;QAAC,MAAM,MAAC;QAAC,GAAG,MAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC;IAEvF;;;MAGE;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IAEtB;;;;;;;;;OASG;IACH,MAAM,EAAE,WAAW,CAAC;IACpB,oGAAoG;IACpG,iBAAiB,EAAE,OAAO,QAAQ,CAAC,aAAa,CAAC;IACjD,0EAA0E;IAC1E,SAAS,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC;IACjC,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAIpC,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAG5B;;;;;OAKG;gBACS,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;IA8CxC,cAAc;IACd,OAAO,WAAY,MAAM,EAAE,UAO1B;IAgBD,4CAA4C;IAC5C,KAAK;IAML,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;;;;;IAIrC;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,KAAK;;;;IAIlB;;;;;;;MAOE;IAEF,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM;IAIxE;;;;;;;;;;;;OAYG;IACG,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,iBAAiB,GAAG,eAAe,GAAG,IAAI,CAAA;KAAE,CAAC;IAIxL;;;;OAIG;IAEH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIrC;;;;;;OAMG;IAEH,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,EAAE,SAAS,SAAI,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE;IAI/L;;;;;;OAMG;IACG,IAAI;IAMV;;;;;MAKE;IACI,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;IAgCvC,cAAc;IACd,IAAI,UAAW,MAAM,aAAkD;IAEvE;;;;;OAKG;IACH,IAAI,CAAC,MAAM,GAAE,MAAoB;IAIjC;;;;;MAKE;IACI,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG;QAAE,KAAK,MAAA;KAAE,CAAC;IAIvE;;;;;;;;;MASE;IACI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;CAkKlF;AAED,oCAAoC;AACpC,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,CAAC"}
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAa/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIrC;;;;;GAKG;AACH,qBAAa,MAAM;IACjB,GAAG,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACpD,aAAa,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC9D,eAAe,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAChE,SAAS,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC1D,SAAS,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC1D,aAAa,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC9D,SAAS,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC1D,OAAO,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACxD,UAAU,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3D,QAAQ,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACzD,QAAQ,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACzD,OAAO,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACxD,MAAM,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACvD,QAAQ,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACzD,YAAY,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC7D,SAAS,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC1D,OAAO,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACxD,OAAO,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACxD,OAAO,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACxD,YAAY,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;CAC9D;AAED,wBAAgB,KAAK,CAAC,QAAQ,EAAE,KAAK,QAGpC;AAED,oEAAoE;AACpE,wBAAsB,IAAI,CAAC,QAAQ,EAAE,KAAK,iBA8BzC;AAED,wBAAsB,QAAQ,CAAC,QAAQ,KAAA,iBA4CtC"}
|
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAe/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIrC;;;;;GAKG;AACH,qBAAa,MAAM;IACjB,GAAG,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACpD,aAAa,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC9D,eAAe,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAChE,SAAS,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC1D,SAAS,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC1D,aAAa,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC9D,SAAS,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC1D,OAAO,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACxD,UAAU,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3D,QAAQ,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACzD,QAAQ,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACzD,OAAO,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACxD,MAAM,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACvD,QAAQ,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACzD,YAAY,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC7D,SAAS,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC1D,OAAO,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACxD,OAAO,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACxD,OAAO,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;IACxD,YAAY,EAAE,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAQ;CAC9D;AAED,wBAAgB,KAAK,CAAC,QAAQ,EAAE,KAAK,QAGpC;AAED,oEAAoE;AACpE,wBAAsB,IAAI,CAAC,QAAQ,EAAE,KAAK,iBA4BzC;AAED,wBAAsB,QAAQ,CAAC,QAAQ,KAAA,iBA4CtC"}
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"persons.d.ts","sourceRoot":"","sources":["../../src/persons.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAO,MAAM,UAAU,CAAC;AAErG,wBAAgB,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CA4DzL"}
|
|
|
@ -1,10 +0,0 @@
|
||||||
/**
|
|
||||||
* PoseNet body detection model implementation constants
|
|
||||||
* See `posenet.ts` for entry point
|
|
||||||
*/
|
|
||||||
export declare const partNames: string[];
|
|
||||||
export declare const count: number;
|
|
||||||
export declare const partIds: {};
|
|
||||||
export declare const connectedPartIndices: any[][];
|
|
||||||
export declare const poseChain: string[][];
|
|
||||||
//# sourceMappingURL=keypoints.d.ts.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"keypoints.d.ts","sourceRoot":"","sources":["../../../src/posenet/keypoints.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,SAAS,UAIrB,CAAC;AAEF,eAAO,MAAM,KAAK,QAAmB,CAAC;AAEtC,eAAO,MAAM,OAAO,IAGd,CAAC;AAUP,eAAO,MAAM,oBAAoB,SAAqG,CAAC;AAEvI,eAAO,MAAM,SAAS,YASrB,CAAC"}
|
|
|
@ -1,11 +0,0 @@
|
||||||
/**
|
|
||||||
* PoseNet body detection model implementation
|
|
||||||
*
|
|
||||||
* Based on: [**PoseNet**](https://medium.com/tensorflow/real-time-human-pose-estimation-in-the-browser-with-tensorflow-js-7dd0bc881cd5)
|
|
||||||
*/
|
|
||||||
import type { BodyResult } from '../result';
|
|
||||||
import type { Tensor, GraphModel } from '../tfjs/types';
|
|
||||||
import type { Config } from '../config';
|
|
||||||
export declare function predict(input: Tensor, config: Config): Promise<BodyResult[]>;
|
|
||||||
export declare function load(config: Config): Promise<GraphModel>;
|
|
||||||
//# sourceMappingURL=posenet.d.ts.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"posenet.d.ts","sourceRoot":"","sources":["../../../src/posenet/posenet.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAMxC,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAkBlF;AAED,wBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAO9D"}
|
|
|
@ -1,14 +0,0 @@
|
||||||
/**
|
|
||||||
* PoseNet body detection model implementation
|
|
||||||
* See `posenet.ts` for entry point
|
|
||||||
*/
|
|
||||||
import * as utils from './utils';
|
|
||||||
import type { Box } from '../result';
|
|
||||||
export declare function decodePose(root: any, scores: any, offsets: any, displacementsFwd: any, displacementsBwd: any): any[];
|
|
||||||
export declare function buildPartWithScoreQueue(minConfidence: any, scores: any): utils.MaxHeap;
|
|
||||||
export declare function decode(offsets: any, scores: any, displacementsFwd: any, displacementsBwd: any, maxDetected: any, minConfidence: any): {
|
|
||||||
keypoints: any;
|
|
||||||
box: Box;
|
|
||||||
score: number;
|
|
||||||
}[];
|
|
||||||
//# sourceMappingURL=poses.d.ts.map
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"poses.d.ts","sourceRoot":"","sources":["../../../src/posenet/poses.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAmCrC,wBAAgB,UAAU,CAAC,IAAI,KAAA,EAAE,MAAM,KAAA,EAAE,OAAO,KAAA,EAAE,gBAAgB,KAAA,EAAE,gBAAgB,KAAA,SA+BnF;AAqBD,wBAAgB,uBAAuB,CAAC,aAAa,KAAA,EAAE,MAAM,KAAA,iBAe5D;AAkBD,wBAAgB,MAAM,CAAC,OAAO,KAAA,EAAE,MAAM,KAAA,EAAE,gBAAgB,KAAA,EAAE,gBAAgB,KAAA,EAAE,WAAW,KAAA,EAAE,aAAa,KAAA;;;WACnD,MAAM;IAmBxD"}
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/posenet/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,wBAAgB,+BAA+B,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,WAE1F;AAED,wBAAgB,oBAAoB,CAAC,SAAS,KAAA,EAAE,aAAa,EAAE,MAAM,SAQpE;AAED,wBAAgB,cAAc,CAAC,SAAS,KAAA,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAa1E;AAED,wBAAgB,UAAU,CAAC,KAAK,KAAA,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,YAAA,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,YAAA,GAAG,KAAK,CAAC,UAAU,CAAC,CAiBnH;AAGD,qBAAa,OAAO;IAClB,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;gBAEb,OAAO,KAAA,EAAE,eAAe,KAAA;IAMpC,OAAO,CAAC,CAAC,KAAA;IAKT,OAAO;IAQP,KAAK;IAEL,IAAI;IAEJ,GAAG;IAEH,GAAG;IAEH,IAAI,CAAC,CAAC,KAAA;IAON,IAAI,CAAC,CAAC,KAAA;IAUN,UAAU,CAAC,CAAC,KAAA;IAKZ,IAAI,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;IAIT,QAAQ,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;CAKd;AAED,wBAAgB,cAAc,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,EAAE,QAAQ,KAAA,EAAE,OAAO,KAAA;;;EAKrD;AAED,wBAAgB,cAAc,CAAC,IAAI,KAAA,EAAE,YAAY,KAAA,EAAE,OAAO,KAAA;;;EAOzD;AAED,wBAAgB,SAAS,CAAC,OAAO,KAAA,EAAE,IAAI,KAAA,SAMtC;AAED,wBAAgB,KAAK,CAAC,CAAC,KAAA,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA,OAIhC;AAED,wBAAgB,eAAe,CAAC,EAAE,KAAA,EAAE,EAAE,KAAA,EAAE,EAAE,KAAA,EAAE,EAAE,KAAA,UAI7C;AAED,wBAAgB,UAAU,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA;;;EAE9B;AAED,wBAAgB,WAAW,CAAC,CAAC,KAAA,EAAE,GAAG,KAAA,EAAE,GAAG,KAAA;;;EAEtC"}
|
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../../../src/util/draw.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,OAAO,EAAE,WAkBrB,CAAC;AA2EF,wBAAsB,OAAO,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBAuB5I;AAED,wBAAsB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBAoGtI;AAED,wBAAsB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBA4GtI;AAED,wBAAsB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBA+DtI;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBAuB1I;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBAwB1I;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,iBAI1J;AAED,wBAAsB,GAAG,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,kDAc1H"}
|
{"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../../../src/util/draw.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,OAAO,EAAE,WAkBrB,CAAC;AA2EF,wBAAsB,OAAO,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBAuB5I;AAED,wBAAsB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBAqGtI;AAED,wBAAsB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBA4GtI;AAED,wBAAsB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBA+DtI;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBAuB1I;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,iBAwB1I;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,iBAI1J;AAED,wBAAsB,GAAG,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,kDAc1H"}
|
|
@ -1,6 +1,6 @@
|
||||||
/**
|
/**
|
||||||
* Analyze detection Results and sort&combine them into per-person view
|
* Analyze detection Results and sort&combine them into per-person view
|
||||||
*/
|
*/
|
||||||
import type { FaceResult, BodyResult, HandResult, GestureResult, PersonResult } from './result';
|
import type { FaceResult, BodyResult, HandResult, GestureResult, PersonResult } from '../result';
|
||||||
export declare function join(faces: Array<FaceResult>, bodies: Array<BodyResult>, hands: Array<HandResult>, gestures: Array<GestureResult>, shape: Array<number> | undefined): Array<PersonResult>;
|
export declare function join(faces: Array<FaceResult>, bodies: Array<BodyResult>, hands: Array<HandResult>, gestures: Array<GestureResult>, shape: Array<number> | undefined): Array<PersonResult>;
|
||||||
//# sourceMappingURL=persons.d.ts.map
|
//# sourceMappingURL=persons.d.ts.map
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"persons.d.ts","sourceRoot":"","sources":["../../../src/util/persons.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAO,MAAM,WAAW,CAAC;AAEtG,wBAAgB,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CA4DzL"}
|
Loading…
Reference in New Issue