mirror of https://github.com/vladmandic/human
tweaked default values
parent
0a05da2e71
commit
2f4d4f8620
|
@ -9,8 +9,14 @@
|
|||
|
||||
## 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
|
||||
- implement box caching for movenet
|
||||
- autodetect number of bodies and hands
|
||||
|
|
|
@ -139,7 +139,7 @@ var config = {
|
|||
modelPath: "blazeface.json",
|
||||
rotation: true,
|
||||
maxDetected: 1,
|
||||
skipFrames: 15,
|
||||
skipFrames: 11,
|
||||
minConfidence: 0.2,
|
||||
iouThreshold: 0.1,
|
||||
return: false
|
||||
|
@ -152,17 +152,17 @@ var config = {
|
|||
enabled: true,
|
||||
modelPath: "iris.json"
|
||||
},
|
||||
description: {
|
||||
enabled: true,
|
||||
modelPath: "faceres.json",
|
||||
skipFrames: 11,
|
||||
minConfidence: 0.1
|
||||
},
|
||||
emotion: {
|
||||
enabled: true,
|
||||
minConfidence: 0.1,
|
||||
skipFrames: 17,
|
||||
skipFrames: 12,
|
||||
modelPath: "emotion.json"
|
||||
},
|
||||
description: {
|
||||
enabled: true,
|
||||
modelPath: "faceres.json",
|
||||
skipFrames: 13,
|
||||
minConfidence: 0.1
|
||||
}
|
||||
},
|
||||
body: {
|
||||
|
@ -178,7 +178,7 @@ var config = {
|
|||
hand: {
|
||||
enabled: true,
|
||||
rotation: true,
|
||||
skipFrames: 18,
|
||||
skipFrames: 14,
|
||||
minConfidence: 0.5,
|
||||
iouThreshold: 0.2,
|
||||
maxDetected: -1,
|
||||
|
@ -196,7 +196,7 @@ var config = {
|
|||
minConfidence: 0.2,
|
||||
iouThreshold: 0.4,
|
||||
maxDetected: 10,
|
||||
skipFrames: 19
|
||||
skipFrames: 15
|
||||
},
|
||||
segmentation: {
|
||||
enabled: false,
|
||||
|
@ -9572,7 +9572,7 @@ async function detectHands(input, config3) {
|
|||
const classScores = tfjs_esm_exports.unstack(t.scores, 1);
|
||||
let id = 0;
|
||||
for (let i = 0; i < classScores.length; i++) {
|
||||
if (i !== 0 && i !== 1)
|
||||
if (i === 4)
|
||||
continue;
|
||||
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();
|
||||
|
@ -9618,9 +9618,7 @@ async function detectFingers(input, h, config3) {
|
|||
landmarks: {},
|
||||
annotations: {}
|
||||
};
|
||||
if (!input || !models2[1])
|
||||
return hand3;
|
||||
if (config3.hand.landmarks) {
|
||||
if (input && models2[1] && config3.hand.landmarks) {
|
||||
const t = {};
|
||||
if (!h.yxBox)
|
||||
return hand3;
|
||||
|
@ -9628,8 +9626,9 @@ async function detectFingers(input, h, config3) {
|
|||
t.cast = tfjs_esm_exports.cast(t.crop, "float32");
|
||||
t.div = tfjs_esm_exports.div(t.cast, 255);
|
||||
[t.score, t.keypoints] = models2[1].execute(t.div);
|
||||
const score2 = Math.round(100 * (await t.score.data())[0] / 100);
|
||||
if (score2 > (config3.hand.minConfidence || 0)) {
|
||||
const rawScore = (await t.score.data())[0];
|
||||
const score2 = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||
if (score2 >= (config3.hand.minConfidence || 0)) {
|
||||
hand3.fingerScore = score2;
|
||||
t.reshaped = tfjs_esm_exports.reshape(t.keypoints, [-1, 3]);
|
||||
const rawCoords = await t.reshaped.array();
|
||||
|
@ -9647,7 +9646,9 @@ async function detectFingers(input, h, config3) {
|
|||
for (const key of Object.keys(fingerMap)) {
|
||||
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]));
|
||||
}
|
||||
|
@ -9659,6 +9660,8 @@ async function predict6(input, config3) {
|
|||
cache.tmpBoxes = [];
|
||||
if (!config3.hand.landmarks)
|
||||
cache.fingerBoxes = cache.handBoxes;
|
||||
if (!config3.skipFrame)
|
||||
cache.fingerBoxes = [];
|
||||
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
||||
skipped4++;
|
||||
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)));
|
||||
if (hands.length !== config3.hand.maxDetected) {
|
||||
cache.handBoxes = await detectHands(input, config3);
|
||||
const newHands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||
hands = hands.concat(newHands);
|
||||
hands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||
}
|
||||
}
|
||||
cache.fingerBoxes = [...cache.tmpBoxes];
|
||||
|
@ -11260,10 +11262,10 @@ async function hand2(inCanvas2, result, drawOptions) {
|
|||
if (localOptions.drawLabels) {
|
||||
if (localOptions.shadowColor && 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.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();
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -135,7 +135,7 @@ var config = {
|
|||
modelPath: "blazeface.json",
|
||||
rotation: true,
|
||||
maxDetected: 1,
|
||||
skipFrames: 15,
|
||||
skipFrames: 11,
|
||||
minConfidence: 0.2,
|
||||
iouThreshold: 0.1,
|
||||
return: false
|
||||
|
@ -148,17 +148,17 @@ var config = {
|
|||
enabled: true,
|
||||
modelPath: "iris.json"
|
||||
},
|
||||
description: {
|
||||
enabled: true,
|
||||
modelPath: "faceres.json",
|
||||
skipFrames: 11,
|
||||
minConfidence: 0.1
|
||||
},
|
||||
emotion: {
|
||||
enabled: true,
|
||||
minConfidence: 0.1,
|
||||
skipFrames: 17,
|
||||
skipFrames: 12,
|
||||
modelPath: "emotion.json"
|
||||
},
|
||||
description: {
|
||||
enabled: true,
|
||||
modelPath: "faceres.json",
|
||||
skipFrames: 13,
|
||||
minConfidence: 0.1
|
||||
}
|
||||
},
|
||||
body: {
|
||||
|
@ -174,7 +174,7 @@ var config = {
|
|||
hand: {
|
||||
enabled: true,
|
||||
rotation: true,
|
||||
skipFrames: 18,
|
||||
skipFrames: 14,
|
||||
minConfidence: 0.5,
|
||||
iouThreshold: 0.2,
|
||||
maxDetected: -1,
|
||||
|
@ -192,7 +192,7 @@ var config = {
|
|||
minConfidence: 0.2,
|
||||
iouThreshold: 0.4,
|
||||
maxDetected: 10,
|
||||
skipFrames: 19
|
||||
skipFrames: 15
|
||||
},
|
||||
segmentation: {
|
||||
enabled: false,
|
||||
|
@ -69640,7 +69640,7 @@ async function detectHands(input2, config3) {
|
|||
const classScores = unstack(t.scores, 1);
|
||||
let id = 0;
|
||||
for (let i = 0; i < classScores.length; i++) {
|
||||
if (i !== 0 && i !== 1)
|
||||
if (i === 4)
|
||||
continue;
|
||||
t.nms = await image.nonMaxSuppressionAsync(t.boxes, classScores[i], config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
||||
const nms = await t.nms.data();
|
||||
|
@ -69686,9 +69686,7 @@ async function detectFingers(input2, h, config3) {
|
|||
landmarks: {},
|
||||
annotations: {}
|
||||
};
|
||||
if (!input2 || !models2[1])
|
||||
return hand3;
|
||||
if (config3.hand.landmarks) {
|
||||
if (input2 && models2[1] && config3.hand.landmarks) {
|
||||
const t = {};
|
||||
if (!h.yxBox)
|
||||
return hand3;
|
||||
|
@ -69696,8 +69694,9 @@ async function detectFingers(input2, h, config3) {
|
|||
t.cast = cast(t.crop, "float32");
|
||||
t.div = div(t.cast, 255);
|
||||
[t.score, t.keypoints] = models2[1].execute(t.div);
|
||||
const score2 = Math.round(100 * (await t.score.data())[0] / 100);
|
||||
if (score2 > (config3.hand.minConfidence || 0)) {
|
||||
const rawScore = (await t.score.data())[0];
|
||||
const score2 = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||
if (score2 >= (config3.hand.minConfidence || 0)) {
|
||||
hand3.fingerScore = score2;
|
||||
t.reshaped = reshape(t.keypoints, [-1, 3]);
|
||||
const rawCoords = await t.reshaped.array();
|
||||
|
@ -69715,7 +69714,9 @@ async function detectFingers(input2, h, config3) {
|
|||
for (const key of Object.keys(fingerMap)) {
|
||||
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]));
|
||||
}
|
||||
|
@ -69727,6 +69728,8 @@ async function predict6(input2, config3) {
|
|||
cache.tmpBoxes = [];
|
||||
if (!config3.hand.landmarks)
|
||||
cache.fingerBoxes = cache.handBoxes;
|
||||
if (!config3.skipFrame)
|
||||
cache.fingerBoxes = [];
|
||||
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
||||
skipped4++;
|
||||
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)));
|
||||
if (hands.length !== config3.hand.maxDetected) {
|
||||
cache.handBoxes = await detectHands(input2, config3);
|
||||
const newHands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input2, hand3, config3)));
|
||||
hands = hands.concat(newHands);
|
||||
hands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input2, hand3, config3)));
|
||||
}
|
||||
}
|
||||
cache.fingerBoxes = [...cache.tmpBoxes];
|
||||
|
@ -71328,10 +71330,10 @@ async function hand2(inCanvas2, result, drawOptions) {
|
|||
if (localOptions.drawLabels) {
|
||||
if (localOptions.shadowColor && 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.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();
|
||||
}
|
||||
|
|
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",
|
||||
rotation: true,
|
||||
maxDetected: 1,
|
||||
skipFrames: 15,
|
||||
skipFrames: 11,
|
||||
minConfidence: 0.2,
|
||||
iouThreshold: 0.1,
|
||||
return: false
|
||||
|
@ -195,17 +195,17 @@ var config = {
|
|||
enabled: true,
|
||||
modelPath: "iris.json"
|
||||
},
|
||||
description: {
|
||||
enabled: true,
|
||||
modelPath: "faceres.json",
|
||||
skipFrames: 11,
|
||||
minConfidence: 0.1
|
||||
},
|
||||
emotion: {
|
||||
enabled: true,
|
||||
minConfidence: 0.1,
|
||||
skipFrames: 17,
|
||||
skipFrames: 12,
|
||||
modelPath: "emotion.json"
|
||||
},
|
||||
description: {
|
||||
enabled: true,
|
||||
modelPath: "faceres.json",
|
||||
skipFrames: 13,
|
||||
minConfidence: 0.1
|
||||
}
|
||||
},
|
||||
body: {
|
||||
|
@ -221,7 +221,7 @@ var config = {
|
|||
hand: {
|
||||
enabled: true,
|
||||
rotation: true,
|
||||
skipFrames: 18,
|
||||
skipFrames: 14,
|
||||
minConfidence: 0.5,
|
||||
iouThreshold: 0.2,
|
||||
maxDetected: -1,
|
||||
|
@ -239,7 +239,7 @@ var config = {
|
|||
minConfidence: 0.2,
|
||||
iouThreshold: 0.4,
|
||||
maxDetected: 10,
|
||||
skipFrames: 19
|
||||
skipFrames: 15
|
||||
},
|
||||
segmentation: {
|
||||
enabled: false,
|
||||
|
@ -9624,7 +9624,7 @@ async function detectHands(input, config3) {
|
|||
const classScores = tf16.unstack(t.scores, 1);
|
||||
let id = 0;
|
||||
for (let i = 0; i < classScores.length; i++) {
|
||||
if (i !== 0 && i !== 1)
|
||||
if (i === 4)
|
||||
continue;
|
||||
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();
|
||||
|
@ -9670,9 +9670,7 @@ async function detectFingers(input, h, config3) {
|
|||
landmarks: {},
|
||||
annotations: {}
|
||||
};
|
||||
if (!input || !models2[1])
|
||||
return hand3;
|
||||
if (config3.hand.landmarks) {
|
||||
if (input && models2[1] && config3.hand.landmarks) {
|
||||
const t = {};
|
||||
if (!h.yxBox)
|
||||
return hand3;
|
||||
|
@ -9680,8 +9678,9 @@ async function detectFingers(input, h, config3) {
|
|||
t.cast = tf16.cast(t.crop, "float32");
|
||||
t.div = tf16.div(t.cast, 255);
|
||||
[t.score, t.keypoints] = models2[1].execute(t.div);
|
||||
const score2 = Math.round(100 * (await t.score.data())[0] / 100);
|
||||
if (score2 > (config3.hand.minConfidence || 0)) {
|
||||
const rawScore = (await t.score.data())[0];
|
||||
const score2 = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||
if (score2 >= (config3.hand.minConfidence || 0)) {
|
||||
hand3.fingerScore = score2;
|
||||
t.reshaped = tf16.reshape(t.keypoints, [-1, 3]);
|
||||
const rawCoords = await t.reshaped.array();
|
||||
|
@ -9699,7 +9698,9 @@ async function detectFingers(input, h, config3) {
|
|||
for (const key of Object.keys(fingerMap)) {
|
||||
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]));
|
||||
}
|
||||
|
@ -9711,6 +9712,8 @@ async function predict6(input, config3) {
|
|||
cache.tmpBoxes = [];
|
||||
if (!config3.hand.landmarks)
|
||||
cache.fingerBoxes = cache.handBoxes;
|
||||
if (!config3.skipFrame)
|
||||
cache.fingerBoxes = [];
|
||||
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
||||
skipped4++;
|
||||
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)));
|
||||
if (hands.length !== config3.hand.maxDetected) {
|
||||
cache.handBoxes = await detectHands(input, config3);
|
||||
const newHands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||
hands = hands.concat(newHands);
|
||||
hands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||
}
|
||||
}
|
||||
cache.fingerBoxes = [...cache.tmpBoxes];
|
||||
|
@ -11326,10 +11328,10 @@ async function hand2(inCanvas2, result, drawOptions) {
|
|||
if (localOptions.drawLabels) {
|
||||
if (localOptions.shadowColor && 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.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();
|
||||
}
|
||||
|
|
|
@ -183,7 +183,7 @@ var config = {
|
|||
modelPath: "blazeface.json",
|
||||
rotation: true,
|
||||
maxDetected: 1,
|
||||
skipFrames: 15,
|
||||
skipFrames: 11,
|
||||
minConfidence: 0.2,
|
||||
iouThreshold: 0.1,
|
||||
return: false
|
||||
|
@ -196,17 +196,17 @@ var config = {
|
|||
enabled: true,
|
||||
modelPath: "iris.json"
|
||||
},
|
||||
description: {
|
||||
enabled: true,
|
||||
modelPath: "faceres.json",
|
||||
skipFrames: 11,
|
||||
minConfidence: 0.1
|
||||
},
|
||||
emotion: {
|
||||
enabled: true,
|
||||
minConfidence: 0.1,
|
||||
skipFrames: 17,
|
||||
skipFrames: 12,
|
||||
modelPath: "emotion.json"
|
||||
},
|
||||
description: {
|
||||
enabled: true,
|
||||
modelPath: "faceres.json",
|
||||
skipFrames: 13,
|
||||
minConfidence: 0.1
|
||||
}
|
||||
},
|
||||
body: {
|
||||
|
@ -222,7 +222,7 @@ var config = {
|
|||
hand: {
|
||||
enabled: true,
|
||||
rotation: true,
|
||||
skipFrames: 18,
|
||||
skipFrames: 14,
|
||||
minConfidence: 0.5,
|
||||
iouThreshold: 0.2,
|
||||
maxDetected: -1,
|
||||
|
@ -240,7 +240,7 @@ var config = {
|
|||
minConfidence: 0.2,
|
||||
iouThreshold: 0.4,
|
||||
maxDetected: 10,
|
||||
skipFrames: 19
|
||||
skipFrames: 15
|
||||
},
|
||||
segmentation: {
|
||||
enabled: false,
|
||||
|
@ -9625,7 +9625,7 @@ async function detectHands(input, config3) {
|
|||
const classScores = tf16.unstack(t.scores, 1);
|
||||
let id = 0;
|
||||
for (let i = 0; i < classScores.length; i++) {
|
||||
if (i !== 0 && i !== 1)
|
||||
if (i === 4)
|
||||
continue;
|
||||
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();
|
||||
|
@ -9671,9 +9671,7 @@ async function detectFingers(input, h, config3) {
|
|||
landmarks: {},
|
||||
annotations: {}
|
||||
};
|
||||
if (!input || !models2[1])
|
||||
return hand3;
|
||||
if (config3.hand.landmarks) {
|
||||
if (input && models2[1] && config3.hand.landmarks) {
|
||||
const t = {};
|
||||
if (!h.yxBox)
|
||||
return hand3;
|
||||
|
@ -9681,8 +9679,9 @@ async function detectFingers(input, h, config3) {
|
|||
t.cast = tf16.cast(t.crop, "float32");
|
||||
t.div = tf16.div(t.cast, 255);
|
||||
[t.score, t.keypoints] = models2[1].execute(t.div);
|
||||
const score2 = Math.round(100 * (await t.score.data())[0] / 100);
|
||||
if (score2 > (config3.hand.minConfidence || 0)) {
|
||||
const rawScore = (await t.score.data())[0];
|
||||
const score2 = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||
if (score2 >= (config3.hand.minConfidence || 0)) {
|
||||
hand3.fingerScore = score2;
|
||||
t.reshaped = tf16.reshape(t.keypoints, [-1, 3]);
|
||||
const rawCoords = await t.reshaped.array();
|
||||
|
@ -9700,7 +9699,9 @@ async function detectFingers(input, h, config3) {
|
|||
for (const key of Object.keys(fingerMap)) {
|
||||
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]));
|
||||
}
|
||||
|
@ -9712,6 +9713,8 @@ async function predict6(input, config3) {
|
|||
cache.tmpBoxes = [];
|
||||
if (!config3.hand.landmarks)
|
||||
cache.fingerBoxes = cache.handBoxes;
|
||||
if (!config3.skipFrame)
|
||||
cache.fingerBoxes = [];
|
||||
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
||||
skipped4++;
|
||||
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)));
|
||||
if (hands.length !== config3.hand.maxDetected) {
|
||||
cache.handBoxes = await detectHands(input, config3);
|
||||
const newHands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||
hands = hands.concat(newHands);
|
||||
hands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||
}
|
||||
}
|
||||
cache.fingerBoxes = [...cache.tmpBoxes];
|
||||
|
@ -11327,10 +11329,10 @@ async function hand2(inCanvas2, result, drawOptions) {
|
|||
if (localOptions.drawLabels) {
|
||||
if (localOptions.shadowColor && 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.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();
|
||||
}
|
||||
|
|
|
@ -182,7 +182,7 @@ var config = {
|
|||
modelPath: "blazeface.json",
|
||||
rotation: true,
|
||||
maxDetected: 1,
|
||||
skipFrames: 15,
|
||||
skipFrames: 11,
|
||||
minConfidence: 0.2,
|
||||
iouThreshold: 0.1,
|
||||
return: false
|
||||
|
@ -195,17 +195,17 @@ var config = {
|
|||
enabled: true,
|
||||
modelPath: "iris.json"
|
||||
},
|
||||
description: {
|
||||
enabled: true,
|
||||
modelPath: "faceres.json",
|
||||
skipFrames: 11,
|
||||
minConfidence: 0.1
|
||||
},
|
||||
emotion: {
|
||||
enabled: true,
|
||||
minConfidence: 0.1,
|
||||
skipFrames: 17,
|
||||
skipFrames: 12,
|
||||
modelPath: "emotion.json"
|
||||
},
|
||||
description: {
|
||||
enabled: true,
|
||||
modelPath: "faceres.json",
|
||||
skipFrames: 13,
|
||||
minConfidence: 0.1
|
||||
}
|
||||
},
|
||||
body: {
|
||||
|
@ -221,7 +221,7 @@ var config = {
|
|||
hand: {
|
||||
enabled: true,
|
||||
rotation: true,
|
||||
skipFrames: 18,
|
||||
skipFrames: 14,
|
||||
minConfidence: 0.5,
|
||||
iouThreshold: 0.2,
|
||||
maxDetected: -1,
|
||||
|
@ -239,7 +239,7 @@ var config = {
|
|||
minConfidence: 0.2,
|
||||
iouThreshold: 0.4,
|
||||
maxDetected: 10,
|
||||
skipFrames: 19
|
||||
skipFrames: 15
|
||||
},
|
||||
segmentation: {
|
||||
enabled: false,
|
||||
|
@ -9624,7 +9624,7 @@ async function detectHands(input, config3) {
|
|||
const classScores = tf16.unstack(t.scores, 1);
|
||||
let id = 0;
|
||||
for (let i = 0; i < classScores.length; i++) {
|
||||
if (i !== 0 && i !== 1)
|
||||
if (i === 4)
|
||||
continue;
|
||||
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();
|
||||
|
@ -9670,9 +9670,7 @@ async function detectFingers(input, h, config3) {
|
|||
landmarks: {},
|
||||
annotations: {}
|
||||
};
|
||||
if (!input || !models2[1])
|
||||
return hand3;
|
||||
if (config3.hand.landmarks) {
|
||||
if (input && models2[1] && config3.hand.landmarks) {
|
||||
const t = {};
|
||||
if (!h.yxBox)
|
||||
return hand3;
|
||||
|
@ -9680,8 +9678,9 @@ async function detectFingers(input, h, config3) {
|
|||
t.cast = tf16.cast(t.crop, "float32");
|
||||
t.div = tf16.div(t.cast, 255);
|
||||
[t.score, t.keypoints] = models2[1].execute(t.div);
|
||||
const score2 = Math.round(100 * (await t.score.data())[0] / 100);
|
||||
if (score2 > (config3.hand.minConfidence || 0)) {
|
||||
const rawScore = (await t.score.data())[0];
|
||||
const score2 = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||
if (score2 >= (config3.hand.minConfidence || 0)) {
|
||||
hand3.fingerScore = score2;
|
||||
t.reshaped = tf16.reshape(t.keypoints, [-1, 3]);
|
||||
const rawCoords = await t.reshaped.array();
|
||||
|
@ -9699,7 +9698,9 @@ async function detectFingers(input, h, config3) {
|
|||
for (const key of Object.keys(fingerMap)) {
|
||||
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]));
|
||||
}
|
||||
|
@ -9711,6 +9712,8 @@ async function predict6(input, config3) {
|
|||
cache.tmpBoxes = [];
|
||||
if (!config3.hand.landmarks)
|
||||
cache.fingerBoxes = cache.handBoxes;
|
||||
if (!config3.skipFrame)
|
||||
cache.fingerBoxes = [];
|
||||
if (skipped4 < (config3.hand.skipFrames || 0) && config3.skipFrame) {
|
||||
skipped4++;
|
||||
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)));
|
||||
if (hands.length !== config3.hand.maxDetected) {
|
||||
cache.handBoxes = await detectHands(input, config3);
|
||||
const newHands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||
hands = hands.concat(newHands);
|
||||
hands = await Promise.all(cache.handBoxes.map((hand3) => detectFingers(input, hand3, config3)));
|
||||
}
|
||||
}
|
||||
cache.fingerBoxes = [...cache.tmpBoxes];
|
||||
|
@ -11326,10 +11328,10 @@ async function hand2(inCanvas2, result, drawOptions) {
|
|||
if (localOptions.drawLabels) {
|
||||
if (localOptions.shadowColor && 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.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();
|
||||
}
|
||||
|
|
|
@ -358,7 +358,7 @@ const config: Config = {
|
|||
// this parameter is not valid in nodejs
|
||||
maxDetected: 1, // maximum number of faces detected in the input
|
||||
// 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
|
||||
// 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
|
||||
|
@ -380,23 +380,23 @@ const config: Config = {
|
|||
// 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: {
|
||||
enabled: true, // to improve accuracy of face description extraction it is
|
||||
// recommended to enable detector.rotation and mesh.enabled
|
||||
modelPath: 'faceres.json', // face description model
|
||||
// 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
|
||||
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: {
|
||||
|
@ -420,7 +420,7 @@ const config: Config = {
|
|||
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
|
||||
// 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
|
||||
// e.g., if model is running st 25 FPS, we can re-use existing bounding
|
||||
// box for updated hand skeleton analysis as the hand
|
||||
|
@ -447,7 +447,7 @@ const config: Config = {
|
|||
minConfidence: 0.2, // threshold for discarding a prediction
|
||||
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
|
||||
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
|
||||
},
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ async function detectHands(input: Tensor, config: Config): Promise<HandDetectRes
|
|||
if (!input || !models[0]) return hands;
|
||||
const t: Record<string, Tensor> = {};
|
||||
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;
|
||||
t.resize = tf.image.resizeBilinear(input, [height, width]); // todo: resize with padding
|
||||
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);
|
||||
let id = 0;
|
||||
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);
|
||||
const nms = await t.nms.data();
|
||||
tf.dispose(t.nms);
|
||||
|
@ -151,16 +151,17 @@ async function detectFingers(input: Tensor, h: HandDetectResult, config: Config)
|
|||
landmarks: {} as HandResult['landmarks'],
|
||||
annotations: {} as HandResult['annotations'],
|
||||
};
|
||||
if (!input || !models[1]) return hand; // something is wrong
|
||||
if (config.hand.landmarks) {
|
||||
if (input && models[1] && config.hand.landmarks) {
|
||||
const t: Record<string, Tensor> = {};
|
||||
if (!h.yxBox) return hand;
|
||||
t.crop = tf.image.cropAndResize(input, [h.yxBox], [0], [inputSize[1][0], inputSize[1][1]], 'bilinear');
|
||||
t.cast = tf.cast(t.crop, 'float32');
|
||||
t.div = tf.div(t.cast, 255);
|
||||
[t.score, t.keypoints] = models[1].execute(t.div) as Tensor[];
|
||||
const score = Math.round(100 * (await t.score.data())[0] / 100);
|
||||
if (score > (config.hand.minConfidence || 0)) {
|
||||
// const score = Math.round(100 * (await t.score.data())[0] / 100);
|
||||
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;
|
||||
t.reshaped = tf.reshape(t.keypoints, [-1, 3]);
|
||||
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
|
||||
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]));
|
||||
}
|
||||
|
@ -190,16 +192,16 @@ export async function predict(input: Tensor, config: Config): Promise<HandResult
|
|||
let hands: Array<HandResult> = [];
|
||||
cache.tmpBoxes = []; // clear temp 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
|
||||
skipped++;
|
||||
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
|
||||
skipped = 0;
|
||||
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);
|
||||
const newHands = await Promise.all(cache.handBoxes.map((hand) => detectFingers(input, hand, config)));
|
||||
hands = hands.concat(newHands);
|
||||
hands = await Promise.all(cache.handBoxes.map((hand) => detectFingers(input, hand, config)));
|
||||
}
|
||||
}
|
||||
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.shadowColor && 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.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();
|
||||
}
|
||||
|
|
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();
|
||||
const models = Object.keys(human.models).map((model) => ({ name: model, loaded: (human.models[model] !== null) }));
|
||||
const loaded = models.filter((model) => model.loaded);
|
||||
if (models.length === 19 && loaded.length === 10) log('state', 'passed: models loaded', models);
|
||||
else log('error', 'failed: 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.length, loaded.length, models);
|
||||
|
||||
// increase defaults
|
||||
config.face = { detector: { maxDetected: 20 } };
|
||||
|
||||
// test warmup sequences
|
||||
await testInstance(human);
|
||||
config.cacheSensitivity = 0;
|
||||
config.warmup = 'none';
|
||||
res = await testWarmup(human, 'default');
|
||||
if (res.error !== 'null') log('error', 'failed: warmup none result mismatch');
|
||||
else log('state', 'passed: warmup none result match');
|
||||
config.warmup = 'face';
|
||||
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');
|
||||
config.warmup = 'body';
|
||||
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');
|
||||
|
||||
// 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;
|
||||
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');
|
||||
res1 = Math.round(100 * human.similarity(desc1, desc2));
|
||||
res2 = Math.round(100 * human.similarity(desc1, desc3));
|
||||
res3 = Math.round(100 * human.similarity(desc2, desc3));
|
||||
if (res1 !== 51 || res2 !== 49 || res3 !== 53) log('error', 'failed: face similarity ', res1, res2, res3);
|
||||
res1 = Math.round(10 * human.similarity(desc1, desc2));
|
||||
res2 = Math.round(10 * human.similarity(desc1, desc3));
|
||||
res3 = Math.round(10 * human.similarity(desc2, desc3));
|
||||
if (res1 !== 5 || res2 !== 5 || res3 !== 5) log('error', 'failed: face similarity ', res1, res2, res3);
|
||||
else log('state', 'passed: face similarity');
|
||||
|
||||
// test face matching
|
||||
|
@ -266,17 +270,19 @@ async function test(Human, inputConfig) {
|
|||
human.reset();
|
||||
config.cacheSensitivity = 0;
|
||||
config.face = { detector: { minConfidence: 0.0001, maxDetected: 1 } };
|
||||
config.body = { minConfidence: 0.0001, maxDetected: 1 };
|
||||
config.hand = { minConfidence: 0.0001, maxDetected: 3 };
|
||||
config.body = { minConfidence: 0.0001 };
|
||||
config.hand = { minConfidence: 0.0001 };
|
||||
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');
|
||||
|
||||
// test sensitive details face
|
||||
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) {
|
||||
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);
|
||||
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?.embedding?.length, face?.rotation?.matrix?.length);
|
||||
} 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
|
||||
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');
|
||||
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');
|
||||
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');
|
||||
|
||||
// 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
|
||||
|
||||
const config = {
|
||||
// modelBasePath: 'http://localhost:10030/models/',
|
||||
modelBasePath: 'https://vladmandic.github.io/human/models/',
|
||||
// modelBasePath: 'http://localhost:10030/models/',
|
||||
backend: 'wasm',
|
||||
wasmPath: 'node_modules/@tensorflow/tfjs-backend-wasm/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>
|
||||
</div><div><p>All methods and properties are available only as members of Human class</p>
|
||||
<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>
|
||||
</div><div><p>Parameters:</p>
|
||||
<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>
|
||||
</div><div><p>Each results has:</p>
|
||||
<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>
|
||||
</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">
|
||||
|
|
|
@ -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
|
||||
Accessed via <code>human.draw.options</code> or provided per each draw method as the drawOptions optional parameter
|
||||
-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>
|
||||
<ul>
|
||||
<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>
|
||||
<ul>
|
||||
<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>
|
||||
</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>
|
||||
</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>
|
||||
</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
|
||||
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>
|
||||
|
|
|
@ -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>
|
||||
<ul>
|
||||
<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>
|
||||
</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>
|
||||
</div><div><p>Parameters:</p>
|
||||
<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>
|
||||
</div><div><p>Each result has:</p>
|
||||
<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>
|
||||
<ul>
|
||||
<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>
|
||||
</div><div><p>Array of individual results with one object per detected gesture
|
||||
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>
|
||||
</div><dl class="tsd-comment-tags"><dt>interface</dt><dd><p>Person Interface</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>
|
||||
</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">
|
||||
|
|
|
@ -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
|
||||
removes background from input containing person
|
||||
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
|
||||
*/
|
||||
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 getAdjacentKeyPoints(keypoints: any, minConfidence: number): any[];
|
||||
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;
|
||||
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 { Config } from '../config';
|
||||
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 uvmap: number[][];
|
||||
//# 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
|
||||
* See `facemesh.ts` for entry point
|
||||
*/
|
||||
export declare const MESH_ANNOTATIONS: {
|
||||
export declare const meshAnnotations: {
|
||||
silhouette: number[];
|
||||
lipsUpperOuter: number[];
|
||||
lipsLowerOuter: number[];
|
||||
|
@ -36,6 +36,20 @@ export declare const MESH_ANNOTATIONS: {
|
|||
rightCheek: 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: {
|
||||
key: string;
|
||||
indices: number[];
|
||||
|
@ -51,4 +65,4 @@ export declare const VTX7: number[];
|
|||
export declare const UV68: number[][];
|
||||
export declare const UV33: 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
|
||||
*/
|
||||
declare const Finger: {
|
||||
export declare const Finger: {
|
||||
thumb: number;
|
||||
index: number;
|
||||
middle: number;
|
||||
|
@ -26,7 +26,7 @@ declare const Finger: {
|
|||
getName: (value: any) => any;
|
||||
getPoints: (value: any) => any;
|
||||
};
|
||||
declare const FingerCurl: {
|
||||
export declare const FingerCurl: {
|
||||
none: number;
|
||||
half: number;
|
||||
full: number;
|
||||
|
@ -37,7 +37,7 @@ declare const FingerCurl: {
|
|||
};
|
||||
getName: (value: any) => any;
|
||||
};
|
||||
declare const FingerDirection: {
|
||||
export declare const FingerDirection: {
|
||||
verticalUp: number;
|
||||
verticalDown: number;
|
||||
horizontalLeft: number;
|
||||
|
@ -58,5 +58,16 @@ declare const FingerDirection: {
|
|||
};
|
||||
getName: (value: any) => any;
|
||||
};
|
||||
export { Finger, FingerCurl, FingerDirection };
|
||||
//# sourceMappingURL=description.d.ts.map
|
||||
export declare class FingerGesture {
|
||||
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 * as tf from '../dist/tfjs.esm.js';
|
||||
import * as models from './models';
|
||||
import * as facemesh from './blazeface/facemesh';
|
||||
import * as facemesh from './face/facemesh';
|
||||
import * as env from './util/env';
|
||||
import type { Tensor } from './tfjs/types';
|
||||
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
|
||||
*/
|
||||
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>;
|
||||
//# 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