mirror of https://github.com/vladmandic/human
support for dynamic backend switching
parent
8bed89e7d4
commit
081fb7b49f
|
@ -102,10 +102,6 @@ function mergeDeep(...objects) {
|
|||
return prev;
|
||||
}, {});
|
||||
}
|
||||
async function wait(time) {
|
||||
const waiting = new Promise((resolve) => setTimeout(() => resolve(true), time));
|
||||
await waiting;
|
||||
}
|
||||
|
||||
// src/config.ts
|
||||
var config = {
|
||||
|
@ -11293,10 +11289,10 @@ async function register(instance) {
|
|||
}
|
||||
|
||||
// src/tfjs/backend.ts
|
||||
async function check(instance) {
|
||||
if (env.initial || instance.config.backend && instance.config.backend.length > 0 && tfjs_esm_exports.getBackend() !== instance.config.backend) {
|
||||
async function check(instance, force = false) {
|
||||
instance.state = "backend";
|
||||
if (force || env.initial || instance.config.backend && instance.config.backend.length > 0 && tfjs_esm_exports.getBackend() !== instance.config.backend) {
|
||||
const timeStamp = now();
|
||||
instance.state = "backend";
|
||||
if (instance.config.backend && instance.config.backend.length > 0) {
|
||||
if (typeof window === "undefined" && typeof WorkerGlobalScope !== "undefined" && instance.config.debug) {
|
||||
if (instance.config.debug)
|
||||
|
@ -12115,6 +12111,7 @@ async function warmupBitmap(instance) {
|
|||
case "face":
|
||||
blob = await b64toBlob(face3);
|
||||
break;
|
||||
case "body":
|
||||
case "full":
|
||||
blob = await b64toBlob(body3);
|
||||
break;
|
||||
|
@ -12191,22 +12188,25 @@ async function warmupNode(instance) {
|
|||
}
|
||||
async function warmup(instance, userConfig) {
|
||||
const t0 = now();
|
||||
instance.state = "warmup";
|
||||
if (userConfig)
|
||||
instance.config = mergeDeep(instance.config, userConfig);
|
||||
if (!instance.config.warmup || instance.config.warmup === "none")
|
||||
return { error: "null" };
|
||||
let res;
|
||||
if (typeof createImageBitmap === "function")
|
||||
res = await warmupBitmap(instance);
|
||||
else if (typeof Image !== "undefined" || env.Canvas !== void 0)
|
||||
res = await warmupCanvas(instance);
|
||||
else
|
||||
res = await warmupNode(instance);
|
||||
const t1 = now();
|
||||
if (instance.config.debug)
|
||||
log("Warmup", instance.config.warmup, Math.round(t1 - t0), "ms");
|
||||
instance.emit("warmup");
|
||||
return res;
|
||||
return new Promise(async (resolve) => {
|
||||
if (typeof createImageBitmap === "function")
|
||||
res = await warmupBitmap(instance);
|
||||
else if (typeof Image !== "undefined" || env.Canvas !== void 0)
|
||||
res = await warmupCanvas(instance);
|
||||
else
|
||||
res = await warmupNode(instance);
|
||||
const t1 = now();
|
||||
if (instance.config.debug)
|
||||
log("Warmup", instance.config.warmup, Math.round(t1 - t0), "ms");
|
||||
instance.emit("warmup");
|
||||
resolve(res);
|
||||
});
|
||||
}
|
||||
|
||||
// src/human.ts
|
||||
|
@ -12254,7 +12254,11 @@ var Human = class {
|
|||
}
|
||||
return null;
|
||||
});
|
||||
__publicField(this, "reset", () => this.config = JSON.parse(JSON.stringify(config)));
|
||||
__publicField(this, "reset", () => {
|
||||
const currentBackend = this.config.backend;
|
||||
this.config = JSON.parse(JSON.stringify(config));
|
||||
this.config.backend = currentBackend;
|
||||
});
|
||||
__publicField(this, "validate", (userConfig) => validate(config, userConfig || this.config));
|
||||
__publicField(this, "image", (input) => process2(input, this.config));
|
||||
__publicField(this, "emit", (event) => {
|
||||
|
@ -12326,8 +12330,9 @@ var Human = class {
|
|||
match(faceEmbedding, db, threshold = 0) {
|
||||
return match(faceEmbedding, db, threshold);
|
||||
}
|
||||
init() {
|
||||
check(this);
|
||||
async init() {
|
||||
await check(this, true);
|
||||
await this.tf.ready();
|
||||
set(this.env);
|
||||
}
|
||||
async load(userConfig) {
|
||||
|
@ -12371,8 +12376,7 @@ var Human = class {
|
|||
return warmup(this, userConfig);
|
||||
}
|
||||
async detect(input, userConfig) {
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
this.state = "detect";
|
||||
return new Promise(async (resolve) => {
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
||||
this.state = "config";
|
||||
|
@ -12388,16 +12392,15 @@ var Human = class {
|
|||
const timeStart = now();
|
||||
await check(this);
|
||||
await this.load();
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
timeStamp = now();
|
||||
this.state = "image";
|
||||
let img = process2(input, this.config);
|
||||
this.process = img;
|
||||
this.performance.image = Math.trunc(now() - timeStamp);
|
||||
this.analyze("Get Image:");
|
||||
if (this.config.segmentation.enabled && this.process && img.tensor && img.canvas) {
|
||||
this.analyze("Start Segmentation:");
|
||||
this.state = "run:segmentation";
|
||||
this.state = "detect:segmentation";
|
||||
timeStamp = now();
|
||||
await predict11(img);
|
||||
elapsedTime = Math.trunc(now() - timeStamp);
|
||||
|
@ -12431,7 +12434,7 @@ var Human = class {
|
|||
let bodyRes = [];
|
||||
let handRes = [];
|
||||
let objectRes = [];
|
||||
this.state = "run:face";
|
||||
this.state = "detect:face";
|
||||
if (this.config.async) {
|
||||
faceRes = this.config.face.enabled ? detectFace(this, img.tensor) : [];
|
||||
if (this.performance.face)
|
||||
|
@ -12444,7 +12447,7 @@ var Human = class {
|
|||
this.performance.face = elapsedTime;
|
||||
}
|
||||
this.analyze("Start Body:");
|
||||
this.state = "run:body";
|
||||
this.state = "detect:body";
|
||||
if (this.config.async) {
|
||||
if ((_a = this.config.body.modelPath) == null ? void 0 : _a.includes("posenet"))
|
||||
bodyRes = this.config.body.enabled ? predict4(img.tensor, this.config) : [];
|
||||
|
@ -12472,7 +12475,7 @@ var Human = class {
|
|||
}
|
||||
this.analyze("End Body:");
|
||||
this.analyze("Start Hand:");
|
||||
this.state = "run:hand";
|
||||
this.state = "detect:hand";
|
||||
if (this.config.async) {
|
||||
handRes = this.config.hand.enabled ? predict5(img.tensor, this.config) : [];
|
||||
if (this.performance.hand)
|
||||
|
@ -12486,7 +12489,7 @@ var Human = class {
|
|||
}
|
||||
this.analyze("End Hand:");
|
||||
this.analyze("Start Object:");
|
||||
this.state = "run:object";
|
||||
this.state = "detect:object";
|
||||
if (this.config.async) {
|
||||
if ((_i = this.config.object.modelPath) == null ? void 0 : _i.includes("nanodet"))
|
||||
objectRes = this.config.object.enabled ? predict9(img.tensor, this.config) : [];
|
||||
|
@ -12505,12 +12508,10 @@ var Human = class {
|
|||
this.performance.object = elapsedTime;
|
||||
}
|
||||
this.analyze("End Object:");
|
||||
this.state = "run:await";
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
this.state = "detect:await";
|
||||
if (this.config.async)
|
||||
[faceRes, bodyRes, handRes, objectRes] = await Promise.all([faceRes, bodyRes, handRes, objectRes]);
|
||||
this.state = "run:gesture";
|
||||
this.state = "detect:gesture";
|
||||
let gestureRes = [];
|
||||
if (this.config.gesture.enabled) {
|
||||
timeStamp = now();
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -91,10 +91,6 @@ function mergeDeep(...objects) {
|
|||
return prev;
|
||||
}, {});
|
||||
}
|
||||
async function wait(time2) {
|
||||
const waiting = new Promise((resolve) => setTimeout(() => resolve(true), time2));
|
||||
await waiting;
|
||||
}
|
||||
|
||||
// src/config.ts
|
||||
var config = {
|
||||
|
@ -71350,10 +71346,10 @@ async function register(instance) {
|
|||
}
|
||||
|
||||
// src/tfjs/backend.ts
|
||||
async function check(instance) {
|
||||
if (env2.initial || instance.config.backend && instance.config.backend.length > 0 && getBackend() !== instance.config.backend) {
|
||||
async function check(instance, force = false) {
|
||||
instance.state = "backend";
|
||||
if (force || env2.initial || instance.config.backend && instance.config.backend.length > 0 && getBackend() !== instance.config.backend) {
|
||||
const timeStamp = now();
|
||||
instance.state = "backend";
|
||||
if (instance.config.backend && instance.config.backend.length > 0) {
|
||||
if (typeof window === "undefined" && typeof WorkerGlobalScope !== "undefined" && instance.config.debug) {
|
||||
if (instance.config.debug)
|
||||
|
@ -72172,6 +72168,7 @@ async function warmupBitmap(instance) {
|
|||
case "face":
|
||||
blob = await b64toBlob(face3);
|
||||
break;
|
||||
case "body":
|
||||
case "full":
|
||||
blob = await b64toBlob(body3);
|
||||
break;
|
||||
|
@ -72248,22 +72245,25 @@ async function warmupNode(instance) {
|
|||
}
|
||||
async function warmup(instance, userConfig) {
|
||||
const t0 = now();
|
||||
instance.state = "warmup";
|
||||
if (userConfig)
|
||||
instance.config = mergeDeep(instance.config, userConfig);
|
||||
if (!instance.config.warmup || instance.config.warmup === "none")
|
||||
return { error: "null" };
|
||||
let res;
|
||||
if (typeof createImageBitmap === "function")
|
||||
res = await warmupBitmap(instance);
|
||||
else if (typeof Image !== "undefined" || env2.Canvas !== void 0)
|
||||
res = await warmupCanvas(instance);
|
||||
else
|
||||
res = await warmupNode(instance);
|
||||
const t1 = now();
|
||||
if (instance.config.debug)
|
||||
log("Warmup", instance.config.warmup, Math.round(t1 - t0), "ms");
|
||||
instance.emit("warmup");
|
||||
return res;
|
||||
return new Promise(async (resolve) => {
|
||||
if (typeof createImageBitmap === "function")
|
||||
res = await warmupBitmap(instance);
|
||||
else if (typeof Image !== "undefined" || env2.Canvas !== void 0)
|
||||
res = await warmupCanvas(instance);
|
||||
else
|
||||
res = await warmupNode(instance);
|
||||
const t1 = now();
|
||||
if (instance.config.debug)
|
||||
log("Warmup", instance.config.warmup, Math.round(t1 - t0), "ms");
|
||||
instance.emit("warmup");
|
||||
resolve(res);
|
||||
});
|
||||
}
|
||||
|
||||
// src/human.ts
|
||||
|
@ -72311,7 +72311,11 @@ var Human = class {
|
|||
}
|
||||
return null;
|
||||
});
|
||||
__publicField(this, "reset", () => this.config = JSON.parse(JSON.stringify(config)));
|
||||
__publicField(this, "reset", () => {
|
||||
const currentBackend = this.config.backend;
|
||||
this.config = JSON.parse(JSON.stringify(config));
|
||||
this.config.backend = currentBackend;
|
||||
});
|
||||
__publicField(this, "validate", (userConfig) => validate(config, userConfig || this.config));
|
||||
__publicField(this, "image", (input2) => process2(input2, this.config));
|
||||
__publicField(this, "emit", (event) => {
|
||||
|
@ -72383,8 +72387,9 @@ var Human = class {
|
|||
match(faceEmbedding, db, threshold3 = 0) {
|
||||
return match(faceEmbedding, db, threshold3);
|
||||
}
|
||||
init() {
|
||||
check(this);
|
||||
async init() {
|
||||
await check(this, true);
|
||||
await this.tf.ready();
|
||||
set(this.env);
|
||||
}
|
||||
async load(userConfig) {
|
||||
|
@ -72428,8 +72433,7 @@ var Human = class {
|
|||
return warmup(this, userConfig);
|
||||
}
|
||||
async detect(input2, userConfig) {
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
this.state = "detect";
|
||||
return new Promise(async (resolve) => {
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
||||
this.state = "config";
|
||||
|
@ -72445,16 +72449,15 @@ var Human = class {
|
|||
const timeStart = now();
|
||||
await check(this);
|
||||
await this.load();
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
timeStamp = now();
|
||||
this.state = "image";
|
||||
let img = process2(input2, this.config);
|
||||
this.process = img;
|
||||
this.performance.image = Math.trunc(now() - timeStamp);
|
||||
this.analyze("Get Image:");
|
||||
if (this.config.segmentation.enabled && this.process && img.tensor && img.canvas) {
|
||||
this.analyze("Start Segmentation:");
|
||||
this.state = "run:segmentation";
|
||||
this.state = "detect:segmentation";
|
||||
timeStamp = now();
|
||||
await predict11(img);
|
||||
elapsedTime = Math.trunc(now() - timeStamp);
|
||||
|
@ -72488,7 +72491,7 @@ var Human = class {
|
|||
let bodyRes = [];
|
||||
let handRes = [];
|
||||
let objectRes = [];
|
||||
this.state = "run:face";
|
||||
this.state = "detect:face";
|
||||
if (this.config.async) {
|
||||
faceRes = this.config.face.enabled ? detectFace(this, img.tensor) : [];
|
||||
if (this.performance.face)
|
||||
|
@ -72501,7 +72504,7 @@ var Human = class {
|
|||
this.performance.face = elapsedTime;
|
||||
}
|
||||
this.analyze("Start Body:");
|
||||
this.state = "run:body";
|
||||
this.state = "detect:body";
|
||||
if (this.config.async) {
|
||||
if ((_a = this.config.body.modelPath) == null ? void 0 : _a.includes("posenet"))
|
||||
bodyRes = this.config.body.enabled ? predict4(img.tensor, this.config) : [];
|
||||
|
@ -72529,7 +72532,7 @@ var Human = class {
|
|||
}
|
||||
this.analyze("End Body:");
|
||||
this.analyze("Start Hand:");
|
||||
this.state = "run:hand";
|
||||
this.state = "detect:hand";
|
||||
if (this.config.async) {
|
||||
handRes = this.config.hand.enabled ? predict5(img.tensor, this.config) : [];
|
||||
if (this.performance.hand)
|
||||
|
@ -72543,7 +72546,7 @@ var Human = class {
|
|||
}
|
||||
this.analyze("End Hand:");
|
||||
this.analyze("Start Object:");
|
||||
this.state = "run:object";
|
||||
this.state = "detect:object";
|
||||
if (this.config.async) {
|
||||
if ((_i = this.config.object.modelPath) == null ? void 0 : _i.includes("nanodet"))
|
||||
objectRes = this.config.object.enabled ? predict9(img.tensor, this.config) : [];
|
||||
|
@ -72562,12 +72565,10 @@ var Human = class {
|
|||
this.performance.object = elapsedTime;
|
||||
}
|
||||
this.analyze("End Object:");
|
||||
this.state = "run:await";
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
this.state = "detect:await";
|
||||
if (this.config.async)
|
||||
[faceRes, bodyRes, handRes, objectRes] = await Promise.all([faceRes, bodyRes, handRes, objectRes]);
|
||||
this.state = "run:gesture";
|
||||
this.state = "detect:gesture";
|
||||
let gestureRes = [];
|
||||
if (this.config.gesture.enabled) {
|
||||
timeStamp = now();
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -147,10 +147,6 @@ function mergeDeep(...objects) {
|
|||
return prev;
|
||||
}, {});
|
||||
}
|
||||
async function wait(time) {
|
||||
const waiting = new Promise((resolve) => setTimeout(() => resolve(true), time));
|
||||
await waiting;
|
||||
}
|
||||
|
||||
// src/config.ts
|
||||
var config = {
|
||||
|
@ -11355,10 +11351,10 @@ async function register(instance) {
|
|||
|
||||
// src/tfjs/backend.ts
|
||||
var tf22 = __toModule(require_tfjs_esm());
|
||||
async function check(instance) {
|
||||
if (env.initial || instance.config.backend && instance.config.backend.length > 0 && tf22.getBackend() !== instance.config.backend) {
|
||||
async function check(instance, force = false) {
|
||||
instance.state = "backend";
|
||||
if (force || env.initial || instance.config.backend && instance.config.backend.length > 0 && tf22.getBackend() !== instance.config.backend) {
|
||||
const timeStamp = now();
|
||||
instance.state = "backend";
|
||||
if (instance.config.backend && instance.config.backend.length > 0) {
|
||||
if (typeof window === "undefined" && typeof WorkerGlobalScope !== "undefined" && instance.config.debug) {
|
||||
if (instance.config.debug)
|
||||
|
@ -12178,6 +12174,7 @@ async function warmupBitmap(instance) {
|
|||
case "face":
|
||||
blob = await b64toBlob(face3);
|
||||
break;
|
||||
case "body":
|
||||
case "full":
|
||||
blob = await b64toBlob(body3);
|
||||
break;
|
||||
|
@ -12254,22 +12251,25 @@ async function warmupNode(instance) {
|
|||
}
|
||||
async function warmup(instance, userConfig) {
|
||||
const t0 = now();
|
||||
instance.state = "warmup";
|
||||
if (userConfig)
|
||||
instance.config = mergeDeep(instance.config, userConfig);
|
||||
if (!instance.config.warmup || instance.config.warmup === "none")
|
||||
return { error: "null" };
|
||||
let res;
|
||||
if (typeof createImageBitmap === "function")
|
||||
res = await warmupBitmap(instance);
|
||||
else if (typeof Image !== "undefined" || env.Canvas !== void 0)
|
||||
res = await warmupCanvas(instance);
|
||||
else
|
||||
res = await warmupNode(instance);
|
||||
const t1 = now();
|
||||
if (instance.config.debug)
|
||||
log("Warmup", instance.config.warmup, Math.round(t1 - t0), "ms");
|
||||
instance.emit("warmup");
|
||||
return res;
|
||||
return new Promise(async (resolve) => {
|
||||
if (typeof createImageBitmap === "function")
|
||||
res = await warmupBitmap(instance);
|
||||
else if (typeof Image !== "undefined" || env.Canvas !== void 0)
|
||||
res = await warmupCanvas(instance);
|
||||
else
|
||||
res = await warmupNode(instance);
|
||||
const t1 = now();
|
||||
if (instance.config.debug)
|
||||
log("Warmup", instance.config.warmup, Math.round(t1 - t0), "ms");
|
||||
instance.emit("warmup");
|
||||
resolve(res);
|
||||
});
|
||||
}
|
||||
|
||||
// src/human.ts
|
||||
|
@ -12317,7 +12317,11 @@ var Human = class {
|
|||
}
|
||||
return null;
|
||||
});
|
||||
__publicField(this, "reset", () => this.config = JSON.parse(JSON.stringify(config)));
|
||||
__publicField(this, "reset", () => {
|
||||
const currentBackend = this.config.backend;
|
||||
this.config = JSON.parse(JSON.stringify(config));
|
||||
this.config.backend = currentBackend;
|
||||
});
|
||||
__publicField(this, "validate", (userConfig) => validate(config, userConfig || this.config));
|
||||
__publicField(this, "image", (input) => process2(input, this.config));
|
||||
__publicField(this, "emit", (event) => {
|
||||
|
@ -12389,8 +12393,9 @@ var Human = class {
|
|||
match(faceEmbedding, db, threshold = 0) {
|
||||
return match(faceEmbedding, db, threshold);
|
||||
}
|
||||
init() {
|
||||
check(this);
|
||||
async init() {
|
||||
await check(this, true);
|
||||
await this.tf.ready();
|
||||
set(this.env);
|
||||
}
|
||||
async load(userConfig) {
|
||||
|
@ -12434,8 +12439,7 @@ var Human = class {
|
|||
return warmup(this, userConfig);
|
||||
}
|
||||
async detect(input, userConfig) {
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
this.state = "detect";
|
||||
return new Promise(async (resolve) => {
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
||||
this.state = "config";
|
||||
|
@ -12451,16 +12455,15 @@ var Human = class {
|
|||
const timeStart = now();
|
||||
await check(this);
|
||||
await this.load();
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
timeStamp = now();
|
||||
this.state = "image";
|
||||
let img = process2(input, this.config);
|
||||
this.process = img;
|
||||
this.performance.image = Math.trunc(now() - timeStamp);
|
||||
this.analyze("Get Image:");
|
||||
if (this.config.segmentation.enabled && this.process && img.tensor && img.canvas) {
|
||||
this.analyze("Start Segmentation:");
|
||||
this.state = "run:segmentation";
|
||||
this.state = "detect:segmentation";
|
||||
timeStamp = now();
|
||||
await predict11(img);
|
||||
elapsedTime = Math.trunc(now() - timeStamp);
|
||||
|
@ -12494,7 +12497,7 @@ var Human = class {
|
|||
let bodyRes = [];
|
||||
let handRes = [];
|
||||
let objectRes = [];
|
||||
this.state = "run:face";
|
||||
this.state = "detect:face";
|
||||
if (this.config.async) {
|
||||
faceRes = this.config.face.enabled ? detectFace(this, img.tensor) : [];
|
||||
if (this.performance.face)
|
||||
|
@ -12507,7 +12510,7 @@ var Human = class {
|
|||
this.performance.face = elapsedTime;
|
||||
}
|
||||
this.analyze("Start Body:");
|
||||
this.state = "run:body";
|
||||
this.state = "detect:body";
|
||||
if (this.config.async) {
|
||||
if ((_a = this.config.body.modelPath) == null ? void 0 : _a.includes("posenet"))
|
||||
bodyRes = this.config.body.enabled ? predict4(img.tensor, this.config) : [];
|
||||
|
@ -12535,7 +12538,7 @@ var Human = class {
|
|||
}
|
||||
this.analyze("End Body:");
|
||||
this.analyze("Start Hand:");
|
||||
this.state = "run:hand";
|
||||
this.state = "detect:hand";
|
||||
if (this.config.async) {
|
||||
handRes = this.config.hand.enabled ? predict5(img.tensor, this.config) : [];
|
||||
if (this.performance.hand)
|
||||
|
@ -12549,7 +12552,7 @@ var Human = class {
|
|||
}
|
||||
this.analyze("End Hand:");
|
||||
this.analyze("Start Object:");
|
||||
this.state = "run:object";
|
||||
this.state = "detect:object";
|
||||
if (this.config.async) {
|
||||
if ((_i = this.config.object.modelPath) == null ? void 0 : _i.includes("nanodet"))
|
||||
objectRes = this.config.object.enabled ? predict9(img.tensor, this.config) : [];
|
||||
|
@ -12568,12 +12571,10 @@ var Human = class {
|
|||
this.performance.object = elapsedTime;
|
||||
}
|
||||
this.analyze("End Object:");
|
||||
this.state = "run:await";
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
this.state = "detect:await";
|
||||
if (this.config.async)
|
||||
[faceRes, bodyRes, handRes, objectRes] = await Promise.all([faceRes, bodyRes, handRes, objectRes]);
|
||||
this.state = "run:gesture";
|
||||
this.state = "detect:gesture";
|
||||
let gestureRes = [];
|
||||
if (this.config.gesture.enabled) {
|
||||
timeStamp = now();
|
||||
|
|
|
@ -148,10 +148,6 @@ function mergeDeep(...objects) {
|
|||
return prev;
|
||||
}, {});
|
||||
}
|
||||
async function wait(time) {
|
||||
const waiting = new Promise((resolve) => setTimeout(() => resolve(true), time));
|
||||
await waiting;
|
||||
}
|
||||
|
||||
// src/config.ts
|
||||
var config = {
|
||||
|
@ -11356,10 +11352,10 @@ async function register(instance) {
|
|||
|
||||
// src/tfjs/backend.ts
|
||||
var tf22 = __toModule(require_tfjs_esm());
|
||||
async function check(instance) {
|
||||
if (env.initial || instance.config.backend && instance.config.backend.length > 0 && tf22.getBackend() !== instance.config.backend) {
|
||||
async function check(instance, force = false) {
|
||||
instance.state = "backend";
|
||||
if (force || env.initial || instance.config.backend && instance.config.backend.length > 0 && tf22.getBackend() !== instance.config.backend) {
|
||||
const timeStamp = now();
|
||||
instance.state = "backend";
|
||||
if (instance.config.backend && instance.config.backend.length > 0) {
|
||||
if (typeof window === "undefined" && typeof WorkerGlobalScope !== "undefined" && instance.config.debug) {
|
||||
if (instance.config.debug)
|
||||
|
@ -12179,6 +12175,7 @@ async function warmupBitmap(instance) {
|
|||
case "face":
|
||||
blob = await b64toBlob(face3);
|
||||
break;
|
||||
case "body":
|
||||
case "full":
|
||||
blob = await b64toBlob(body3);
|
||||
break;
|
||||
|
@ -12255,22 +12252,25 @@ async function warmupNode(instance) {
|
|||
}
|
||||
async function warmup(instance, userConfig) {
|
||||
const t0 = now();
|
||||
instance.state = "warmup";
|
||||
if (userConfig)
|
||||
instance.config = mergeDeep(instance.config, userConfig);
|
||||
if (!instance.config.warmup || instance.config.warmup === "none")
|
||||
return { error: "null" };
|
||||
let res;
|
||||
if (typeof createImageBitmap === "function")
|
||||
res = await warmupBitmap(instance);
|
||||
else if (typeof Image !== "undefined" || env.Canvas !== void 0)
|
||||
res = await warmupCanvas(instance);
|
||||
else
|
||||
res = await warmupNode(instance);
|
||||
const t1 = now();
|
||||
if (instance.config.debug)
|
||||
log("Warmup", instance.config.warmup, Math.round(t1 - t0), "ms");
|
||||
instance.emit("warmup");
|
||||
return res;
|
||||
return new Promise(async (resolve) => {
|
||||
if (typeof createImageBitmap === "function")
|
||||
res = await warmupBitmap(instance);
|
||||
else if (typeof Image !== "undefined" || env.Canvas !== void 0)
|
||||
res = await warmupCanvas(instance);
|
||||
else
|
||||
res = await warmupNode(instance);
|
||||
const t1 = now();
|
||||
if (instance.config.debug)
|
||||
log("Warmup", instance.config.warmup, Math.round(t1 - t0), "ms");
|
||||
instance.emit("warmup");
|
||||
resolve(res);
|
||||
});
|
||||
}
|
||||
|
||||
// src/human.ts
|
||||
|
@ -12318,7 +12318,11 @@ var Human = class {
|
|||
}
|
||||
return null;
|
||||
});
|
||||
__publicField(this, "reset", () => this.config = JSON.parse(JSON.stringify(config)));
|
||||
__publicField(this, "reset", () => {
|
||||
const currentBackend = this.config.backend;
|
||||
this.config = JSON.parse(JSON.stringify(config));
|
||||
this.config.backend = currentBackend;
|
||||
});
|
||||
__publicField(this, "validate", (userConfig) => validate(config, userConfig || this.config));
|
||||
__publicField(this, "image", (input) => process2(input, this.config));
|
||||
__publicField(this, "emit", (event) => {
|
||||
|
@ -12390,8 +12394,9 @@ var Human = class {
|
|||
match(faceEmbedding, db, threshold = 0) {
|
||||
return match(faceEmbedding, db, threshold);
|
||||
}
|
||||
init() {
|
||||
check(this);
|
||||
async init() {
|
||||
await check(this, true);
|
||||
await this.tf.ready();
|
||||
set(this.env);
|
||||
}
|
||||
async load(userConfig) {
|
||||
|
@ -12435,8 +12440,7 @@ var Human = class {
|
|||
return warmup(this, userConfig);
|
||||
}
|
||||
async detect(input, userConfig) {
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
this.state = "detect";
|
||||
return new Promise(async (resolve) => {
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
||||
this.state = "config";
|
||||
|
@ -12452,16 +12456,15 @@ var Human = class {
|
|||
const timeStart = now();
|
||||
await check(this);
|
||||
await this.load();
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
timeStamp = now();
|
||||
this.state = "image";
|
||||
let img = process2(input, this.config);
|
||||
this.process = img;
|
||||
this.performance.image = Math.trunc(now() - timeStamp);
|
||||
this.analyze("Get Image:");
|
||||
if (this.config.segmentation.enabled && this.process && img.tensor && img.canvas) {
|
||||
this.analyze("Start Segmentation:");
|
||||
this.state = "run:segmentation";
|
||||
this.state = "detect:segmentation";
|
||||
timeStamp = now();
|
||||
await predict11(img);
|
||||
elapsedTime = Math.trunc(now() - timeStamp);
|
||||
|
@ -12495,7 +12498,7 @@ var Human = class {
|
|||
let bodyRes = [];
|
||||
let handRes = [];
|
||||
let objectRes = [];
|
||||
this.state = "run:face";
|
||||
this.state = "detect:face";
|
||||
if (this.config.async) {
|
||||
faceRes = this.config.face.enabled ? detectFace(this, img.tensor) : [];
|
||||
if (this.performance.face)
|
||||
|
@ -12508,7 +12511,7 @@ var Human = class {
|
|||
this.performance.face = elapsedTime;
|
||||
}
|
||||
this.analyze("Start Body:");
|
||||
this.state = "run:body";
|
||||
this.state = "detect:body";
|
||||
if (this.config.async) {
|
||||
if ((_a = this.config.body.modelPath) == null ? void 0 : _a.includes("posenet"))
|
||||
bodyRes = this.config.body.enabled ? predict4(img.tensor, this.config) : [];
|
||||
|
@ -12536,7 +12539,7 @@ var Human = class {
|
|||
}
|
||||
this.analyze("End Body:");
|
||||
this.analyze("Start Hand:");
|
||||
this.state = "run:hand";
|
||||
this.state = "detect:hand";
|
||||
if (this.config.async) {
|
||||
handRes = this.config.hand.enabled ? predict5(img.tensor, this.config) : [];
|
||||
if (this.performance.hand)
|
||||
|
@ -12550,7 +12553,7 @@ var Human = class {
|
|||
}
|
||||
this.analyze("End Hand:");
|
||||
this.analyze("Start Object:");
|
||||
this.state = "run:object";
|
||||
this.state = "detect:object";
|
||||
if (this.config.async) {
|
||||
if ((_i = this.config.object.modelPath) == null ? void 0 : _i.includes("nanodet"))
|
||||
objectRes = this.config.object.enabled ? predict9(img.tensor, this.config) : [];
|
||||
|
@ -12569,12 +12572,10 @@ var Human = class {
|
|||
this.performance.object = elapsedTime;
|
||||
}
|
||||
this.analyze("End Object:");
|
||||
this.state = "run:await";
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
this.state = "detect:await";
|
||||
if (this.config.async)
|
||||
[faceRes, bodyRes, handRes, objectRes] = await Promise.all([faceRes, bodyRes, handRes, objectRes]);
|
||||
this.state = "run:gesture";
|
||||
this.state = "detect:gesture";
|
||||
let gestureRes = [];
|
||||
if (this.config.gesture.enabled) {
|
||||
timeStamp = now();
|
||||
|
|
|
@ -147,10 +147,6 @@ function mergeDeep(...objects) {
|
|||
return prev;
|
||||
}, {});
|
||||
}
|
||||
async function wait(time) {
|
||||
const waiting = new Promise((resolve) => setTimeout(() => resolve(true), time));
|
||||
await waiting;
|
||||
}
|
||||
|
||||
// src/config.ts
|
||||
var config = {
|
||||
|
@ -11355,10 +11351,10 @@ async function register(instance) {
|
|||
|
||||
// src/tfjs/backend.ts
|
||||
var tf22 = __toModule(require_tfjs_esm());
|
||||
async function check(instance) {
|
||||
if (env.initial || instance.config.backend && instance.config.backend.length > 0 && tf22.getBackend() !== instance.config.backend) {
|
||||
async function check(instance, force = false) {
|
||||
instance.state = "backend";
|
||||
if (force || env.initial || instance.config.backend && instance.config.backend.length > 0 && tf22.getBackend() !== instance.config.backend) {
|
||||
const timeStamp = now();
|
||||
instance.state = "backend";
|
||||
if (instance.config.backend && instance.config.backend.length > 0) {
|
||||
if (typeof window === "undefined" && typeof WorkerGlobalScope !== "undefined" && instance.config.debug) {
|
||||
if (instance.config.debug)
|
||||
|
@ -12178,6 +12174,7 @@ async function warmupBitmap(instance) {
|
|||
case "face":
|
||||
blob = await b64toBlob(face3);
|
||||
break;
|
||||
case "body":
|
||||
case "full":
|
||||
blob = await b64toBlob(body3);
|
||||
break;
|
||||
|
@ -12254,22 +12251,25 @@ async function warmupNode(instance) {
|
|||
}
|
||||
async function warmup(instance, userConfig) {
|
||||
const t0 = now();
|
||||
instance.state = "warmup";
|
||||
if (userConfig)
|
||||
instance.config = mergeDeep(instance.config, userConfig);
|
||||
if (!instance.config.warmup || instance.config.warmup === "none")
|
||||
return { error: "null" };
|
||||
let res;
|
||||
if (typeof createImageBitmap === "function")
|
||||
res = await warmupBitmap(instance);
|
||||
else if (typeof Image !== "undefined" || env.Canvas !== void 0)
|
||||
res = await warmupCanvas(instance);
|
||||
else
|
||||
res = await warmupNode(instance);
|
||||
const t1 = now();
|
||||
if (instance.config.debug)
|
||||
log("Warmup", instance.config.warmup, Math.round(t1 - t0), "ms");
|
||||
instance.emit("warmup");
|
||||
return res;
|
||||
return new Promise(async (resolve) => {
|
||||
if (typeof createImageBitmap === "function")
|
||||
res = await warmupBitmap(instance);
|
||||
else if (typeof Image !== "undefined" || env.Canvas !== void 0)
|
||||
res = await warmupCanvas(instance);
|
||||
else
|
||||
res = await warmupNode(instance);
|
||||
const t1 = now();
|
||||
if (instance.config.debug)
|
||||
log("Warmup", instance.config.warmup, Math.round(t1 - t0), "ms");
|
||||
instance.emit("warmup");
|
||||
resolve(res);
|
||||
});
|
||||
}
|
||||
|
||||
// src/human.ts
|
||||
|
@ -12317,7 +12317,11 @@ var Human = class {
|
|||
}
|
||||
return null;
|
||||
});
|
||||
__publicField(this, "reset", () => this.config = JSON.parse(JSON.stringify(config)));
|
||||
__publicField(this, "reset", () => {
|
||||
const currentBackend = this.config.backend;
|
||||
this.config = JSON.parse(JSON.stringify(config));
|
||||
this.config.backend = currentBackend;
|
||||
});
|
||||
__publicField(this, "validate", (userConfig) => validate(config, userConfig || this.config));
|
||||
__publicField(this, "image", (input) => process2(input, this.config));
|
||||
__publicField(this, "emit", (event) => {
|
||||
|
@ -12389,8 +12393,9 @@ var Human = class {
|
|||
match(faceEmbedding, db, threshold = 0) {
|
||||
return match(faceEmbedding, db, threshold);
|
||||
}
|
||||
init() {
|
||||
check(this);
|
||||
async init() {
|
||||
await check(this, true);
|
||||
await this.tf.ready();
|
||||
set(this.env);
|
||||
}
|
||||
async load(userConfig) {
|
||||
|
@ -12434,8 +12439,7 @@ var Human = class {
|
|||
return warmup(this, userConfig);
|
||||
}
|
||||
async detect(input, userConfig) {
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
this.state = "detect";
|
||||
return new Promise(async (resolve) => {
|
||||
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
||||
this.state = "config";
|
||||
|
@ -12451,16 +12455,15 @@ var Human = class {
|
|||
const timeStart = now();
|
||||
await check(this);
|
||||
await this.load();
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
timeStamp = now();
|
||||
this.state = "image";
|
||||
let img = process2(input, this.config);
|
||||
this.process = img;
|
||||
this.performance.image = Math.trunc(now() - timeStamp);
|
||||
this.analyze("Get Image:");
|
||||
if (this.config.segmentation.enabled && this.process && img.tensor && img.canvas) {
|
||||
this.analyze("Start Segmentation:");
|
||||
this.state = "run:segmentation";
|
||||
this.state = "detect:segmentation";
|
||||
timeStamp = now();
|
||||
await predict11(img);
|
||||
elapsedTime = Math.trunc(now() - timeStamp);
|
||||
|
@ -12494,7 +12497,7 @@ var Human = class {
|
|||
let bodyRes = [];
|
||||
let handRes = [];
|
||||
let objectRes = [];
|
||||
this.state = "run:face";
|
||||
this.state = "detect:face";
|
||||
if (this.config.async) {
|
||||
faceRes = this.config.face.enabled ? detectFace(this, img.tensor) : [];
|
||||
if (this.performance.face)
|
||||
|
@ -12507,7 +12510,7 @@ var Human = class {
|
|||
this.performance.face = elapsedTime;
|
||||
}
|
||||
this.analyze("Start Body:");
|
||||
this.state = "run:body";
|
||||
this.state = "detect:body";
|
||||
if (this.config.async) {
|
||||
if ((_a = this.config.body.modelPath) == null ? void 0 : _a.includes("posenet"))
|
||||
bodyRes = this.config.body.enabled ? predict4(img.tensor, this.config) : [];
|
||||
|
@ -12535,7 +12538,7 @@ var Human = class {
|
|||
}
|
||||
this.analyze("End Body:");
|
||||
this.analyze("Start Hand:");
|
||||
this.state = "run:hand";
|
||||
this.state = "detect:hand";
|
||||
if (this.config.async) {
|
||||
handRes = this.config.hand.enabled ? predict5(img.tensor, this.config) : [];
|
||||
if (this.performance.hand)
|
||||
|
@ -12549,7 +12552,7 @@ var Human = class {
|
|||
}
|
||||
this.analyze("End Hand:");
|
||||
this.analyze("Start Object:");
|
||||
this.state = "run:object";
|
||||
this.state = "detect:object";
|
||||
if (this.config.async) {
|
||||
if ((_i = this.config.object.modelPath) == null ? void 0 : _i.includes("nanodet"))
|
||||
objectRes = this.config.object.enabled ? predict9(img.tensor, this.config) : [];
|
||||
|
@ -12568,12 +12571,10 @@ var Human = class {
|
|||
this.performance.object = elapsedTime;
|
||||
}
|
||||
this.analyze("End Object:");
|
||||
this.state = "run:await";
|
||||
if (this.config.yield)
|
||||
await wait(1);
|
||||
this.state = "detect:await";
|
||||
if (this.config.async)
|
||||
[faceRes, bodyRes, handRes, objectRes] = await Promise.all([faceRes, bodyRes, handRes, objectRes]);
|
||||
this.state = "run:gesture";
|
||||
this.state = "detect:gesture";
|
||||
let gestureRes = [];
|
||||
if (this.config.gesture.enabled) {
|
||||
timeStamp = now();
|
||||
|
|
34
src/human.ts
34
src/human.ts
|
@ -2,7 +2,7 @@
|
|||
* Human main module
|
||||
*/
|
||||
|
||||
import { log, now, mergeDeep, validate, wait } from './helpers';
|
||||
import { log, now, mergeDeep, validate } from './helpers';
|
||||
import { Config, defaults } from './config';
|
||||
import type { Result, FaceResult, HandResult, BodyResult, ObjectResult, GestureResult, PersonResult } from './result';
|
||||
import * as tf from '../dist/tfjs.esm.js';
|
||||
|
@ -252,7 +252,11 @@ export class Human {
|
|||
}
|
||||
|
||||
/** Reset configuration to default values */
|
||||
reset = () => this.config = JSON.parse(JSON.stringify(defaults));
|
||||
reset = () => {
|
||||
const currentBackend = this.config.backend; // save backend;
|
||||
this.config = JSON.parse(JSON.stringify(defaults));
|
||||
this.config.backend = currentBackend;
|
||||
}
|
||||
|
||||
/** Validate current configuration schema */
|
||||
validate = (userConfig?: Partial<Config>) => validate(defaults, userConfig || this.config);
|
||||
|
@ -314,12 +318,13 @@ export class Human {
|
|||
/** Explicit backend initialization
|
||||
* - Normally done implicitly during initial load phase
|
||||
* - Call to explictly register and initialize TFJS backend without any other operations
|
||||
* - Used in webworker environments where there can be multiple instances of Human and not all initialized
|
||||
* - Use when changing backend during runtime
|
||||
*
|
||||
* @return Promise<void>
|
||||
*/
|
||||
init() {
|
||||
backend.check(this);
|
||||
async init() {
|
||||
await backend.check(this, true);
|
||||
await this.tf.ready();
|
||||
env.set(this.env);
|
||||
}
|
||||
|
||||
|
@ -396,7 +401,7 @@ export class Human {
|
|||
*/
|
||||
async detect(input: Input, userConfig?: Partial<Config>): Promise<Result | Error> {
|
||||
// detection happens inside a promise
|
||||
if (this.config.yield) await wait(1);
|
||||
this.state = 'detect';
|
||||
return new Promise(async (resolve) => {
|
||||
this.state = 'config';
|
||||
let timeStamp;
|
||||
|
@ -421,8 +426,8 @@ export class Human {
|
|||
// load models if enabled
|
||||
await this.load();
|
||||
|
||||
if (this.config.yield) await wait(1);
|
||||
timeStamp = now();
|
||||
this.state = 'image';
|
||||
let img = image.process(input, this.config);
|
||||
this.process = img;
|
||||
this.performance.image = Math.trunc(now() - timeStamp);
|
||||
|
@ -431,7 +436,7 @@ export class Human {
|
|||
// run segmentation prethis.processing
|
||||
if (this.config.segmentation.enabled && this.process && img.tensor && img.canvas) {
|
||||
this.analyze('Start Segmentation:');
|
||||
this.state = 'run:segmentation';
|
||||
this.state = 'detect:segmentation';
|
||||
timeStamp = now();
|
||||
await segmentation.predict(img);
|
||||
elapsedTime = Math.trunc(now() - timeStamp);
|
||||
|
@ -468,7 +473,7 @@ export class Human {
|
|||
let objectRes: ObjectResult[] | Promise<ObjectResult[]> | never[] = [];
|
||||
|
||||
// run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion
|
||||
this.state = 'run:face';
|
||||
this.state = 'detect:face';
|
||||
if (this.config.async) {
|
||||
faceRes = this.config.face.enabled ? face.detectFace(this, img.tensor) : [];
|
||||
if (this.performance.face) delete this.performance.face;
|
||||
|
@ -481,7 +486,7 @@ export class Human {
|
|||
|
||||
// run body: can be posenet, blazepose, efficientpose, movenet
|
||||
this.analyze('Start Body:');
|
||||
this.state = 'run:body';
|
||||
this.state = 'detect:body';
|
||||
if (this.config.async) {
|
||||
if (this.config.body.modelPath?.includes('posenet')) bodyRes = this.config.body.enabled ? posenet.predict(img.tensor, this.config) : [];
|
||||
else if (this.config.body.modelPath?.includes('blazepose')) bodyRes = this.config.body.enabled ? blazepose.predict(img.tensor, this.config) : [];
|
||||
|
@ -501,7 +506,7 @@ export class Human {
|
|||
|
||||
// run handpose
|
||||
this.analyze('Start Hand:');
|
||||
this.state = 'run:hand';
|
||||
this.state = 'detect:hand';
|
||||
if (this.config.async) {
|
||||
handRes = this.config.hand.enabled ? handpose.predict(img.tensor, this.config) : [];
|
||||
if (this.performance.hand) delete this.performance.hand;
|
||||
|
@ -515,7 +520,7 @@ export class Human {
|
|||
|
||||
// run nanodet
|
||||
this.analyze('Start Object:');
|
||||
this.state = 'run:object';
|
||||
this.state = 'detect:object';
|
||||
if (this.config.async) {
|
||||
if (this.config.object.modelPath?.includes('nanodet')) objectRes = this.config.object.enabled ? nanodet.predict(img.tensor, this.config) : [];
|
||||
else if (this.config.object.modelPath?.includes('centernet')) objectRes = this.config.object.enabled ? centernet.predict(img.tensor, this.config) : [];
|
||||
|
@ -530,12 +535,11 @@ export class Human {
|
|||
this.analyze('End Object:');
|
||||
|
||||
// if async wait for results
|
||||
this.state = 'run:await';
|
||||
if (this.config.yield) await wait(1);
|
||||
this.state = 'detect:await';
|
||||
if (this.config.async) [faceRes, bodyRes, handRes, objectRes] = await Promise.all([faceRes, bodyRes, handRes, objectRes]);
|
||||
|
||||
// run gesture analysis last
|
||||
this.state = 'run:gesture';
|
||||
this.state = 'detect:gesture';
|
||||
let gestureRes: GestureResult[] = [];
|
||||
if (this.config.gesture.enabled) {
|
||||
timeStamp = now();
|
||||
|
|
|
@ -3,10 +3,10 @@ import * as humangl from './humangl';
|
|||
import * as env from '../env';
|
||||
import * as tf from '../../dist/tfjs.esm.js';
|
||||
|
||||
export async function check(instance) {
|
||||
if (env.env.initial || (instance.config.backend && (instance.config.backend.length > 0) && (tf.getBackend() !== instance.config.backend))) {
|
||||
export async function check(instance, force = false) {
|
||||
instance.state = 'backend';
|
||||
if (force || env.env.initial || (instance.config.backend && (instance.config.backend.length > 0) && (tf.getBackend() !== instance.config.backend))) {
|
||||
const timeStamp = now();
|
||||
instance.state = 'backend';
|
||||
|
||||
if (instance.config.backend && instance.config.backend.length > 0) {
|
||||
// detect web worker
|
||||
|
|
|
@ -12,6 +12,7 @@ async function warmupBitmap(instance) {
|
|||
let res;
|
||||
switch (instance.config.warmup) {
|
||||
case 'face': blob = await b64toBlob(sample.face); break;
|
||||
case 'body':
|
||||
case 'full': blob = await b64toBlob(sample.body); break;
|
||||
default: blob = null;
|
||||
}
|
||||
|
@ -98,14 +99,17 @@ async function warmupNode(instance) {
|
|||
*/
|
||||
export async function warmup(instance, userConfig?: Partial<Config>): Promise<Result | { error }> {
|
||||
const t0 = now();
|
||||
instance.state = 'warmup';
|
||||
if (userConfig) instance.config = mergeDeep(instance.config, userConfig) as Config;
|
||||
if (!instance.config.warmup || instance.config.warmup === 'none') return { error: 'null' };
|
||||
let res;
|
||||
if (typeof createImageBitmap === 'function') res = await warmupBitmap(instance);
|
||||
else if (typeof Image !== 'undefined' || env.Canvas !== undefined) res = await warmupCanvas(instance);
|
||||
else res = await warmupNode(instance);
|
||||
const t1 = now();
|
||||
if (instance.config.debug) log('Warmup', instance.config.warmup, Math.round(t1 - t0), 'ms');
|
||||
instance.emit('warmup');
|
||||
return res;
|
||||
return new Promise(async (resolve) => {
|
||||
if (typeof createImageBitmap === 'function') res = await warmupBitmap(instance);
|
||||
else if (typeof Image !== 'undefined' || env.Canvas !== undefined) res = await warmupCanvas(instance);
|
||||
else res = await warmupNode(instance);
|
||||
const t1 = now();
|
||||
if (instance.config.debug) log('Warmup', instance.config.warmup, Math.round(t1 - t0), 'ms');
|
||||
instance.emit('warmup');
|
||||
resolve(res);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -14,28 +14,30 @@
|
|||
@font-face { font-family: 'Lato'; font-display: swap; font-style: normal; font-weight: 100; src: local('Lato'), url('../../assets/lato-light.woff2') }
|
||||
html { font-family: 'Lato', 'Segoe UI'; font-size: 14px; font-variant: small-caps; }
|
||||
body { margin: 0; background: black; color: white; }
|
||||
canvas { position: absolute; bottom: 10px; right: 10px; width: 256px; height: 256px; }
|
||||
pre { line-height: 150%; }
|
||||
.events { position: absolute; top: 10px; right: 10px; width: 12rem; height: 1.25rem; background-color: grey; padding: 8px; }
|
||||
.state { position: absolute; top: 60px; right: 10px; width: 12rem; height: 1.25rem; background-color: grey; padding: 8px; }
|
||||
.canvas { position: absolute; bottom: 10px; right: 10px; width: 256px; height: 256px; z-index: 99; }
|
||||
.pre { line-height: 150%; }
|
||||
.events { position: absolute; top: 10px; right: 10px; width: 12rem; height: 1.25rem; background-color: grey; padding: 8px; z-index: 99; }
|
||||
.state { position: absolute; top: 60px; right: 10px; width: 12rem; height: 1.25rem; background-color: grey; padding: 8px; z-index: 99; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="log"></pre>
|
||||
<pre id="log" class="pre"></pre>
|
||||
<div id="events" class="events"></div>
|
||||
<div id="state" class="state"></div>
|
||||
<canvas id="canvas" class="canvas" width=256 height=256></canvas>
|
||||
<script type="module">
|
||||
import Human from '../dist/human.esm.js';
|
||||
|
||||
const config = {
|
||||
async: true,
|
||||
warmup: 'full',
|
||||
warmup: 'none',
|
||||
debug: true,
|
||||
cacheSensitivity: 0,
|
||||
object: { enabled: true },
|
||||
}
|
||||
|
||||
const backends = ['wasm', 'webgl', 'humangl'];
|
||||
// const backends = ['wasm', 'wasm'];
|
||||
// const backends = ['humangl'];
|
||||
|
||||
const start = performance.now();
|
||||
|
@ -50,9 +52,14 @@
|
|||
return line + '\n';
|
||||
}
|
||||
|
||||
let last = new Date();
|
||||
async function log(...msgs) {
|
||||
document.getElementById('log').innerHTML += str(...msgs);
|
||||
console.log(...msgs);
|
||||
const dt = new Date();
|
||||
const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;
|
||||
const elap = (dt - last).toString().padStart(5, '0');
|
||||
document.getElementById('log').innerHTML += ts + ' +' + elap + 'ms' + ' ' + str(...msgs);
|
||||
console.log(ts, elap, ...msgs);
|
||||
last = dt;
|
||||
}
|
||||
|
||||
async function image(url) {
|
||||
|
@ -69,6 +76,13 @@
|
|||
await waiting;
|
||||
}
|
||||
|
||||
function draw(canvas = null) {
|
||||
const c = document.getElementById('canvas');
|
||||
const ctx = c.getContext('2d');
|
||||
if (canvas) ctx.drawImage(canvas, 0, 0, c.width, c.height);
|
||||
else ctx.clearRect(0, 0, c.width, c.height);
|
||||
}
|
||||
|
||||
async function events(event) {
|
||||
document.getElementById('events').innerText = `${Math.round(performance.now() - start)}ms Event: ${event}`;
|
||||
}
|
||||
|
@ -77,66 +91,62 @@
|
|||
log('human tests');
|
||||
let res;
|
||||
let human = new Human(config);
|
||||
setInterval(() => { document.getElementById('state').innerText = `State: ${human.state}`; }, 10);
|
||||
human.events.addEventListener('warmup', () => events('warmup'));
|
||||
human.events.addEventListener('image', () => events('image'));
|
||||
human.events.addEventListener('detect', () => events('detect'));
|
||||
const timer = setInterval(() => { document.getElementById('state').innerText = `State: ${human.state}`; }, 10);
|
||||
log({ version: human.version });
|
||||
log({ env: human.env });
|
||||
log({ config: human.config });
|
||||
log({ tfjs: human.tf.version.tfjs, backend: human.config.backend });
|
||||
await human.load();
|
||||
const models = Object.keys(human.models).map((model) => ({ name: model, loaded: (human.models[model] !== null) }));
|
||||
log({ models });
|
||||
for (const backend of backends) {
|
||||
log('');
|
||||
log();
|
||||
log('test start:', backend);
|
||||
human.config.backend = backend;
|
||||
human = new Human(config);
|
||||
human.events.addEventListener('warmup', () => events('warmup'));
|
||||
human.events.addEventListener('image', () => events('image'));
|
||||
human.events.addEventListener('detect', () => events('detect'));
|
||||
await human.load();
|
||||
human.env.offscreen = false;
|
||||
human.env.initial = false;
|
||||
await human.init();
|
||||
log({ tfjs: human.tf.version.tfjs, backend: human.tf.getBackend() });
|
||||
const models = Object.keys(human.models).map((model) => ({ name: model, loaded: (human.models[model] !== null) }));
|
||||
log({ models: { models }});
|
||||
log({ memory: human.tf.engine().state });
|
||||
log({ initialized: human.tf.getBackend() });
|
||||
log({ memory: human.tf.memory() });
|
||||
res = await human.validate();
|
||||
log({ validate: res });
|
||||
res = await human.warmup();
|
||||
log({ warmup: res });
|
||||
res = await human.warmup({ warmup: 'face'});
|
||||
draw(res.canvas);
|
||||
log({ warmup: 'face' });
|
||||
let img = await image('../../samples/ai-body.jpg');
|
||||
const input = await human.image(img);
|
||||
let node = document.body.appendChild(res.canvas);
|
||||
await wait(100);
|
||||
log({ input });
|
||||
log({ input: input.tensor.shape });
|
||||
draw(res.canvas);
|
||||
res = await human.detect(input.tensor);
|
||||
log({ detect: res});
|
||||
log({ detect: true });
|
||||
const interpolated = human.next();
|
||||
log({ interpolated });
|
||||
log({ interpolated: true });
|
||||
const persons = res.persons;
|
||||
log({ persons: { persons } });
|
||||
log({ persons: true });
|
||||
log({ summary: { persons: persons.length, face: res.face.length, body: res.body.length, hand: res.hand.length, object: res.object.length, gesture: res.gesture.length }});
|
||||
log({ performance: human.performance });
|
||||
human.tf.dispose(input.tensor);
|
||||
document.body.removeChild(node);
|
||||
await wait(100);
|
||||
draw();
|
||||
|
||||
img = await image('../../samples/ai-face.jpg');
|
||||
human.reset();
|
||||
human.config.backend = backend;
|
||||
for (const val of [0, 0.25, 0.5, 0.75, 10]) {
|
||||
human.performance = {};
|
||||
const t0 = performance.now();
|
||||
for (let i = 0; i < 10; i++) {
|
||||
res = await human.detect(img, { cacheSensitivity: val, filter: { pixelate: 5 * i } });
|
||||
node = document.body.appendChild(res.canvas);
|
||||
res = await human.detect(img, { cacheSensitivity: val, filter: { pixelate: 5 * i }, object: { enabled: false } });
|
||||
draw(res.canvas);
|
||||
}
|
||||
const t1 = performance.now();
|
||||
log({ benchmark: { time: Math.round((t1 - t0) / 10), cacheSensitivity: val }, performance: human.performance });
|
||||
await wait(100);
|
||||
await wait(10);
|
||||
}
|
||||
document.body.removeChild(node);
|
||||
draw();
|
||||
|
||||
log({ memory: human.tf.engine().state });
|
||||
log({ memory: human.tf.memory() });
|
||||
}
|
||||
log('');
|
||||
clearInterval(timer);
|
||||
log();
|
||||
log('tests complete');
|
||||
}
|
||||
|
||||
|
|
2050
test/build.log
2050
test/build.log
File diff suppressed because it is too large
Load Diff
|
@ -233,8 +233,8 @@ async function test(Human, inputConfig) {
|
|||
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 match ', res1, res2, res3);
|
||||
else log('state', 'passed: face match');
|
||||
if (res1 !== 51 || res2 !== 49 || res3 !== 53) log('error', 'failed: face similarity ', res1, res2, res3);
|
||||
else log('state', 'passed: face similarity');
|
||||
|
||||
// test face matching
|
||||
log('info', 'test face matching');
|
||||
|
@ -247,7 +247,7 @@ async function test(Human, inputConfig) {
|
|||
res1 = human.match(desc1, db);
|
||||
res2 = human.match(desc2, db);
|
||||
res3 = human.match(desc3, db);
|
||||
if (!res1 || !res1['name'] || !res2 || !res2['name'] || !res3 || !res3['name']) log('error', 'failed: face match ', res1);
|
||||
if (!res1 || !res1['name'] || !res2 || !res2['name'] || !res3 || !res3['name']) log('error', 'failed: face match ', res1, res2, res3);
|
||||
else log('state', 'passed: face match', { first: { name: res1.name, similarity: res1.similarity } }, { second: { name: res2.name, similarity: res2.similarity } }, { third: { name: res3.name, similarity: res3.similarity } });
|
||||
|
||||
// test object detection
|
||||
|
|
732
test/test.log
732
test/test.log
|
@ -1,547 +1,185 @@
|
|||
2021-09-20 09:23:38 [36mINFO: [39m @vladmandic/human version 2.2.2
|
||||
2021-09-20 09:23:38 [36mINFO: [39m User: vlado Platform: linux Arch: x64 Node: v16.5.0
|
||||
2021-09-20 09:23:38 [36mINFO: [39m tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"]
|
||||
2021-09-20 09:23:38 [36mINFO: [39m demos: ["../demo/nodejs/node.js","../demo/nodejs/node-canvas.js","../demo/nodejs/node-env.js","../demo/nodejs/node-event.js","../demo/nodejs/node-multiprocess.js"]
|
||||
2021-09-20 09:23:38 [36mINFO: [39m
|
||||
2021-09-20 09:23:38 [36mINFO: [39m test-node.js start
|
||||
2021-09-20 09:23:39 [35mSTATE:[39m test-node.js passed: configuration default validation []
|
||||
2021-09-20 09:23:39 [35mSTATE:[39m test-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}]
|
||||
2021-09-20 09:23:40 [35mSTATE:[39m test-node.js passed: models loaded 14 7
|
||||
2021-09-20 09:23:40 [35mSTATE:[39m test-node.js passed: create human
|
||||
2021-09-20 09:23:40 [36mINFO: [39m test-node.js human version: 2.2.2
|
||||
2021-09-20 09:23:40 [36mINFO: [39m test-node.js platform: linux x64 agent: NodeJS v16.5.0
|
||||
2021-09-20 09:23:40 [36mINFO: [39m test-node.js tfjs version: 3.9.0
|
||||
2021-09-20 09:23:40 [35mSTATE:[39m test-node.js passed: set backend: tensorflow
|
||||
2021-09-20 09:23:40 [35mSTATE:[39m test-node.js tensors 1456
|
||||
2021-09-20 09:23:40 [35mSTATE:[39m test-node.js passed: load models
|
||||
2021-09-20 09:23:40 [35mSTATE:[39m test-node.js result: defined models: 14 loaded models: 7
|
||||
2021-09-20 09:23:40 [35mSTATE:[39m test-node.js passed: warmup: none default
|
||||
2021-09-20 09:23:40 [35mSTATE:[39m test-node.js passed: warmup none result match
|
||||
2021-09-20 09:23:40 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:41 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:41 [35mSTATE:[39m test-node.js event: warmup
|
||||
2021-09-20 09:23:41 [35mSTATE:[39m test-node.js passed: warmup: face default
|
||||
2021-09-20 09:23:41 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4}
|
||||
2021-09-20 09:23:41 [32mDATA: [39m test-node.js result: performance: load: 300 total: 1111
|
||||
2021-09-20 09:23:41 [35mSTATE:[39m test-node.js passed: warmup face result match
|
||||
2021-09-20 09:23:41 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:42 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:42 [35mSTATE:[39m test-node.js event: warmup
|
||||
2021-09-20 09:23:42 [35mSTATE:[39m test-node.js passed: warmup: body default
|
||||
2021-09-20 09:23:42 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:23:42 [32mDATA: [39m test-node.js result: performance: load: 300 total: 1018
|
||||
2021-09-20 09:23:42 [35mSTATE:[39m test-node.js passed: warmup body result match
|
||||
2021-09-20 09:23:42 [36mINFO: [39m test-node.js test default
|
||||
2021-09-20 09:23:43 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:23:43 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:44 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:44 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:23:44 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:23:44 [32mDATA: [39m test-node.js result: performance: load: 300 total: 1038
|
||||
2021-09-20 09:23:44 [35mSTATE:[39m test-node.js passed: default result face match
|
||||
2021-09-20 09:23:44 [36mINFO: [39m test-node.js test sync
|
||||
2021-09-20 09:23:44 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:23:44 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:45 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:45 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:23:45 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:23:45 [32mDATA: [39m test-node.js result: performance: load: 300 total: 1009
|
||||
2021-09-20 09:23:45 [35mSTATE:[39m test-node.js passed: default sync
|
||||
2021-09-20 09:23:45 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 09:23:45 [35mSTATE:[39m test-node.js passed: image input null [1,256,256,3]
|
||||
2021-09-20 09:23:45 [35mSTATE:[39m test-node.js passed: invalid input {"error":"could not convert input to tensor"}
|
||||
2021-09-20 09:23:45 [36mINFO: [39m test-node.js test face similarity
|
||||
2021-09-20 09:23:46 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 09:23:46 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:46 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:46 [35mSTATE:[39m test-node.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 09:23:46 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":4}
|
||||
2021-09-20 09:23:46 [32mDATA: [39m test-node.js result: performance: load: 300 total: 731
|
||||
2021-09-20 09:23:47 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:23:47 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:48 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:48 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:23:48 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:23:48 [32mDATA: [39m test-node.js result: performance: load: 300 total: 916
|
||||
2021-09-20 09:23:48 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 09:23:48 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:49 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:49 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:23:49 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 09:23:49 [32mDATA: [39m test-node.js result: performance: load: 300 total: 707
|
||||
2021-09-20 09:23:49 [35mSTATE:[39m test-node.js passed: face descriptor
|
||||
2021-09-20 09:23:49 [35mSTATE:[39m test-node.js passed: face match
|
||||
2021-09-20 09:23:49 [36mINFO: [39m test-node.js test face matching
|
||||
2021-09-20 09:23:49 [35mSTATE:[39m test-node.js passed: face database 102
|
||||
2021-09-20 09:23:49 [35mSTATE:[39m test-node.js passed: face match {"first":{"name":"ai face","similarity":0.7679640257895076}} {"second":{"name":"ai face","similarity":0.5102876185668009}} {"third":{"name":"ai upper","similarity":0.7726724047990643}}
|
||||
2021-09-20 09:23:49 [36mINFO: [39m test-node.js test object
|
||||
2021-09-20 09:23:50 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:23:50 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:51 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:51 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:23:51 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:23:51 [32mDATA: [39m test-node.js result: performance: load: 300 total: 914
|
||||
2021-09-20 09:23:51 [35mSTATE:[39m test-node.js passed: object result match
|
||||
2021-09-20 09:23:51 [36mINFO: [39m test-node.js test sensitive
|
||||
2021-09-20 09:23:52 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:23:52 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:53 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:53 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:23:53 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 3 gesture: 9 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:23:53 [32mDATA: [39m test-node.js result: performance: load: 300 total: 1582
|
||||
2021-09-20 09:23:53 [35mSTATE:[39m test-node.js passed: sensitive result match
|
||||
2021-09-20 09:23:53 [35mSTATE:[39m test-node.js passed: sensitive face result match
|
||||
2021-09-20 09:23:53 [35mSTATE:[39m test-node.js passed: sensitive body result match
|
||||
2021-09-20 09:23:53 [35mSTATE:[39m test-node.js passed: sensitive hand result match
|
||||
2021-09-20 09:23:53 [36mINFO: [39m test-node.js test detectors
|
||||
2021-09-20 09:23:54 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:23:54 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:55 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:55 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:23:55 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:23:55 [32mDATA: [39m test-node.js result: performance: load: 300 total: 543
|
||||
2021-09-20 09:23:55 [35mSTATE:[39m test-node.js passed: detector result face match
|
||||
2021-09-20 09:23:55 [35mSTATE:[39m test-node.js passed: detector result hand match
|
||||
2021-09-20 09:23:55 [36mINFO: [39m test-node.js test body variants
|
||||
2021-09-20 09:23:56 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:23:56 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:56 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:56 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg posenet
|
||||
2021-09-20 09:23:56 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.91,"keypoints":17}
|
||||
2021-09-20 09:23:56 [32mDATA: [39m test-node.js result: performance: load: 300 total: 742
|
||||
2021-09-20 09:23:57 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:23:57 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:58 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:58 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg movenet
|
||||
2021-09-20 09:23:58 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:23:58 [32mDATA: [39m test-node.js result: performance: load: 300 total: 643
|
||||
2021-09-20 09:23:58 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:23:58 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:23:58 [35mSTATE:[39m test-node.js passed: detect: random default
|
||||
2021-09-20 09:23:58 [32mDATA: [39m test-node.js result: face: 0 body: 1 hand: 1 gesture: 1 object: 0 person: 0 {} {} {"score":0.08,"keypoints":17}
|
||||
2021-09-20 09:23:58 [32mDATA: [39m test-node.js result: performance: load: 300 total: 542
|
||||
2021-09-20 09:23:58 [36mINFO: [39m test-node.js test: first instance
|
||||
2021-09-20 09:23:59 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 09:23:59 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:23:59 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 09:23:59 [32mDATA: [39m test-node.js result: performance: load: 4 total: 599
|
||||
2021-09-20 09:23:59 [36mINFO: [39m test-node.js test: second instance
|
||||
2021-09-20 09:24:00 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 09:24:00 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:24:00 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 09:24:00 [32mDATA: [39m test-node.js result: performance: load: 2 total: 600
|
||||
2021-09-20 09:24:00 [36mINFO: [39m test-node.js test: concurrent
|
||||
2021-09-20 09:24:00 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 09:24:00 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 09:24:00 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 09:24:01 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:02 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:03 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:03 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 09:24:03 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 09:24:04 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 09:24:04 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:24:04 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:24:04 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":10}
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: performance: load: 300 total: 4915
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: face: 2 body: 1 hand: 0 gesture: 1 object: 1 person: 2 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":10}
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: performance: load: 4 total: 4915
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: face: 3 body: 1 hand: 0 gesture: 1 object: 1 person: 3 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":10}
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: performance: load: 2 total: 4915
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: face: 7 body: 1 hand: 0 gesture: 1 object: 1 person: 7 {"score":0.91} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: performance: load: 300 total: 4915
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: face: 8 body: 1 hand: 0 gesture: 1 object: 1 person: 8 {"score":0.91} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: performance: load: 4 total: 4915
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: face: 9 body: 1 hand: 0 gesture: 1 object: 1 person: 9 {"score":0.91} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: performance: load: 2 total: 4915
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: face: 4 body: 1 hand: 1 gesture: 1 object: 1 person: 4 {"score":0.91} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":10}
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: performance: load: 300 total: 4920
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: face: 5 body: 1 hand: 1 gesture: 1 object: 1 person: 5 {"score":0.91} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":10}
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: performance: load: 4 total: 4920
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: face: 6 body: 1 hand: 1 gesture: 1 object: 1 person: 6 {"score":0.91} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":10}
|
||||
2021-09-20 09:24:09 [32mDATA: [39m test-node.js result: performance: load: 2 total: 4920
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passed: monkey patch
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passed: segmentation [256,256]
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passeed: no memory leak
|
||||
2021-09-20 09:24:09 [35mSTATE:[39m test-node.js passeed: equal usage
|
||||
2021-09-20 09:24:09 [36mINFO: [39m test-node.js events: {"image":17,"detect":17,"warmup":2}
|
||||
2021-09-20 09:24:09 [36mINFO: [39m test-node.js test complete: 30181 ms
|
||||
2021-09-20 09:24:09 [36mINFO: [39m
|
||||
2021-09-20 09:24:09 [36mINFO: [39m test-node-gpu.js start
|
||||
2021-09-20 09:24:10 [33mWARN: [39m test-node-gpu.js stderr: 2021-09-20 09:24:10.701918: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory
|
||||
2021-09-20 09:24:10 [33mWARN: [39m test-node-gpu.js stderr: 2021-09-20 09:24:10.850258: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
|
||||
2021-09-20 09:24:10 [33mWARN: [39m test-node-gpu.js stderr: 2021-09-20 09:24:10.850363: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (wyse): /proc/driver/nvidia/version does not exist
|
||||
2021-09-20 09:24:10 [35mSTATE:[39m test-node-gpu.js passed: configuration default validation []
|
||||
2021-09-20 09:24:10 [35mSTATE:[39m test-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}]
|
||||
2021-09-20 09:24:11 [35mSTATE:[39m test-node-gpu.js passed: models loaded 14 7
|
||||
2021-09-20 09:24:11 [35mSTATE:[39m test-node-gpu.js passed: create human
|
||||
2021-09-20 09:24:11 [36mINFO: [39m test-node-gpu.js human version: 2.2.2
|
||||
2021-09-20 09:24:11 [36mINFO: [39m test-node-gpu.js platform: linux x64 agent: NodeJS v16.5.0
|
||||
2021-09-20 09:24:11 [36mINFO: [39m test-node-gpu.js tfjs version: 3.9.0
|
||||
2021-09-20 09:24:11 [35mSTATE:[39m test-node-gpu.js passed: set backend: tensorflow
|
||||
2021-09-20 09:24:11 [35mSTATE:[39m test-node-gpu.js tensors 1456
|
||||
2021-09-20 09:24:11 [35mSTATE:[39m test-node-gpu.js passed: load models
|
||||
2021-09-20 09:24:11 [35mSTATE:[39m test-node-gpu.js result: defined models: 14 loaded models: 7
|
||||
2021-09-20 09:24:11 [35mSTATE:[39m test-node-gpu.js passed: warmup: none default
|
||||
2021-09-20 09:24:11 [35mSTATE:[39m test-node-gpu.js passed: warmup none result match
|
||||
2021-09-20 09:24:11 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:12 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:12 [35mSTATE:[39m test-node-gpu.js event: warmup
|
||||
2021-09-20 09:24:12 [35mSTATE:[39m test-node-gpu.js passed: warmup: face default
|
||||
2021-09-20 09:24:12 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4}
|
||||
2021-09-20 09:24:12 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 1174
|
||||
2021-09-20 09:24:12 [35mSTATE:[39m test-node-gpu.js passed: warmup face result match
|
||||
2021-09-20 09:24:12 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:13 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:13 [35mSTATE:[39m test-node-gpu.js event: warmup
|
||||
2021-09-20 09:24:13 [35mSTATE:[39m test-node-gpu.js passed: warmup: body default
|
||||
2021-09-20 09:24:13 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:24:13 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 1055
|
||||
2021-09-20 09:24:13 [35mSTATE:[39m test-node-gpu.js passed: warmup body result match
|
||||
2021-09-20 09:24:13 [36mINFO: [39m test-node-gpu.js test default
|
||||
2021-09-20 09:24:14 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:14 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:15 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:15 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:15 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:24:15 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 1028
|
||||
2021-09-20 09:24:15 [35mSTATE:[39m test-node-gpu.js passed: default result face match
|
||||
2021-09-20 09:24:15 [36mINFO: [39m test-node-gpu.js test sync
|
||||
2021-09-20 09:24:16 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:16 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:17 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:17 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:17 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:24:17 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 1006
|
||||
2021-09-20 09:24:17 [35mSTATE:[39m test-node-gpu.js passed: default sync
|
||||
2021-09-20 09:24:17 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 09:24:17 [35mSTATE:[39m test-node-gpu.js passed: image input null [1,256,256,3]
|
||||
2021-09-20 09:24:17 [35mSTATE:[39m test-node-gpu.js passed: invalid input {"error":"could not convert input to tensor"}
|
||||
2021-09-20 09:24:17 [36mINFO: [39m test-node-gpu.js test face similarity
|
||||
2021-09-20 09:24:17 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 09:24:17 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:18 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:18 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 09:24:18 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":4}
|
||||
2021-09-20 09:24:18 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 733
|
||||
2021-09-20 09:24:18 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:18 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:19 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:19 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:19 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:24:19 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 934
|
||||
2021-09-20 09:24:20 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 09:24:20 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:20 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:20 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:24:20 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 09:24:20 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 712
|
||||
2021-09-20 09:24:20 [35mSTATE:[39m test-node-gpu.js passed: face descriptor
|
||||
2021-09-20 09:24:20 [35mSTATE:[39m test-node-gpu.js passed: face match
|
||||
2021-09-20 09:24:20 [36mINFO: [39m test-node-gpu.js test face matching
|
||||
2021-09-20 09:24:20 [35mSTATE:[39m test-node-gpu.js passed: face database 102
|
||||
2021-09-20 09:24:20 [35mSTATE:[39m test-node-gpu.js passed: face match {"first":{"name":"ai face","similarity":0.7679640257895076}} {"second":{"name":"ai face","similarity":0.5102876185668009}} {"third":{"name":"ai upper","similarity":0.7726724047990643}}
|
||||
2021-09-20 09:24:20 [36mINFO: [39m test-node-gpu.js test object
|
||||
2021-09-20 09:24:21 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:21 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:22 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:22 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:22 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:24:22 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 911
|
||||
2021-09-20 09:24:22 [35mSTATE:[39m test-node-gpu.js passed: object result match
|
||||
2021-09-20 09:24:22 [36mINFO: [39m test-node-gpu.js test sensitive
|
||||
2021-09-20 09:24:23 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:23 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:25 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:25 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:25 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 3 gesture: 9 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:24:25 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 1580
|
||||
2021-09-20 09:24:25 [35mSTATE:[39m test-node-gpu.js passed: sensitive result match
|
||||
2021-09-20 09:24:25 [35mSTATE:[39m test-node-gpu.js passed: sensitive face result match
|
||||
2021-09-20 09:24:25 [35mSTATE:[39m test-node-gpu.js passed: sensitive body result match
|
||||
2021-09-20 09:24:25 [35mSTATE:[39m test-node-gpu.js passed: sensitive hand result match
|
||||
2021-09-20 09:24:25 [36mINFO: [39m test-node-gpu.js test detectors
|
||||
2021-09-20 09:24:25 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:25 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:26 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:26 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:26 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:24:26 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 562
|
||||
2021-09-20 09:24:26 [35mSTATE:[39m test-node-gpu.js passed: detector result face match
|
||||
2021-09-20 09:24:26 [35mSTATE:[39m test-node-gpu.js passed: detector result hand match
|
||||
2021-09-20 09:24:26 [36mINFO: [39m test-node-gpu.js test body variants
|
||||
2021-09-20 09:24:27 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:27 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:28 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:28 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg posenet
|
||||
2021-09-20 09:24:28 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.91,"keypoints":17}
|
||||
2021-09-20 09:24:28 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 680
|
||||
2021-09-20 09:24:28 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:28 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:29 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:29 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg movenet
|
||||
2021-09-20 09:24:29 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:24:29 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 641
|
||||
2021-09-20 09:24:29 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:30 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:30 [35mSTATE:[39m test-node-gpu.js passed: detect: random default
|
||||
2021-09-20 09:24:30 [32mDATA: [39m test-node-gpu.js result: face: 0 body: 1 hand: 1 gesture: 1 object: 0 person: 0 {} {} {"score":0.08,"keypoints":17}
|
||||
2021-09-20 09:24:30 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 559
|
||||
2021-09-20 09:24:30 [36mINFO: [39m test-node-gpu.js test: first instance
|
||||
2021-09-20 09:24:30 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 09:24:31 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:24:31 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 09:24:31 [32mDATA: [39m test-node-gpu.js result: performance: load: 3 total: 598
|
||||
2021-09-20 09:24:31 [36mINFO: [39m test-node-gpu.js test: second instance
|
||||
2021-09-20 09:24:31 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 09:24:32 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:24:32 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 09:24:32 [32mDATA: [39m test-node-gpu.js result: performance: load: 3 total: 628
|
||||
2021-09-20 09:24:32 [36mINFO: [39m test-node-gpu.js test: concurrent
|
||||
2021-09-20 09:24:32 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 09:24:32 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 09:24:32 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 09:24:33 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:33 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:34 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 09:24:35 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 09:24:35 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 09:24:35 [35mSTATE:[39m test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 09:24:35 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:35 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:35 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":10}
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 4970
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: face: 2 body: 1 hand: 0 gesture: 1 object: 1 person: 2 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":10}
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: performance: load: 3 total: 4970
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: face: 3 body: 1 hand: 0 gesture: 1 object: 1 person: 3 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":10}
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: performance: load: 3 total: 4970
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: face: 7 body: 1 hand: 0 gesture: 1 object: 1 person: 7 {"score":0.91} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 4970
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: face: 8 body: 1 hand: 0 gesture: 1 object: 1 person: 8 {"score":0.91} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: performance: load: 3 total: 4970
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: face: 9 body: 1 hand: 0 gesture: 1 object: 1 person: 9 {"score":0.91} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: performance: load: 3 total: 4970
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: face: 4 body: 1 hand: 1 gesture: 1 object: 1 person: 4 {"score":0.91} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":10}
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: performance: load: 285 total: 4974
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: face: 5 body: 1 hand: 1 gesture: 1 object: 1 person: 5 {"score":0.91} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":10}
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: performance: load: 3 total: 4974
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: face: 6 body: 1 hand: 1 gesture: 1 object: 1 person: 6 {"score":0.91} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":10}
|
||||
2021-09-20 09:24:40 [32mDATA: [39m test-node-gpu.js result: performance: load: 3 total: 4975
|
||||
2021-09-20 09:24:40 [35mSTATE:[39m test-node-gpu.js event: image
|
||||
2021-09-20 09:24:41 [35mSTATE:[39m test-node-gpu.js event: detect
|
||||
2021-09-20 09:24:41 [35mSTATE:[39m test-node-gpu.js passed: monkey patch
|
||||
2021-09-20 09:24:41 [35mSTATE:[39m test-node-gpu.js passed: segmentation [256,256]
|
||||
2021-09-20 09:24:41 [35mSTATE:[39m test-node-gpu.js passeed: no memory leak
|
||||
2021-09-20 09:24:41 [35mSTATE:[39m test-node-gpu.js passeed: equal usage
|
||||
2021-09-20 09:24:41 [36mINFO: [39m test-node-gpu.js events: {"image":17,"detect":17,"warmup":2}
|
||||
2021-09-20 09:24:41 [36mINFO: [39m test-node-gpu.js test complete: 30495 ms
|
||||
2021-09-20 09:24:41 [36mINFO: [39m
|
||||
2021-09-20 09:24:41 [36mINFO: [39m test-node-wasm.js start
|
||||
2021-09-20 09:24:41 [35mSTATE:[39m test-node-wasm.js passed: model server: https://vladmandic.github.io/human/models/
|
||||
2021-09-20 09:24:41 [35mSTATE:[39m test-node-wasm.js passed: configuration default validation []
|
||||
2021-09-20 09:24:41 [35mSTATE:[39m test-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}]
|
||||
2021-09-20 09:24:44 [35mSTATE:[39m test-node-wasm.js passed: models loaded 14 7
|
||||
2021-09-20 09:24:44 [35mSTATE:[39m test-node-wasm.js passed: create human
|
||||
2021-09-20 09:24:44 [36mINFO: [39m test-node-wasm.js human version: 2.2.2
|
||||
2021-09-20 09:24:44 [36mINFO: [39m test-node-wasm.js platform: linux x64 agent: NodeJS v16.5.0
|
||||
2021-09-20 09:24:44 [36mINFO: [39m test-node-wasm.js tfjs version: 3.9.0
|
||||
2021-09-20 09:24:44 [35mSTATE:[39m test-node-wasm.js passed: set backend: wasm
|
||||
2021-09-20 09:24:44 [35mSTATE:[39m test-node-wasm.js tensors 1456
|
||||
2021-09-20 09:24:44 [35mSTATE:[39m test-node-wasm.js passed: load models
|
||||
2021-09-20 09:24:44 [35mSTATE:[39m test-node-wasm.js result: defined models: 14 loaded models: 7
|
||||
2021-09-20 09:24:44 [35mSTATE:[39m test-node-wasm.js passed: warmup: none default
|
||||
2021-09-20 09:24:44 [35mSTATE:[39m test-node-wasm.js passed: warmup none result match
|
||||
2021-09-20 09:24:44 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:24:45 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:24:45 [35mSTATE:[39m test-node-wasm.js event: warmup
|
||||
2021-09-20 09:24:45 [35mSTATE:[39m test-node-wasm.js passed: warmup: face default
|
||||
2021-09-20 09:24:45 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"score":1,"age":23.6,"gender":"female"} {} {"score":0.47,"keypoints":4}
|
||||
2021-09-20 09:24:45 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 1043
|
||||
2021-09-20 09:24:45 [35mSTATE:[39m test-node-wasm.js passed: warmup face result match
|
||||
2021-09-20 09:24:48 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:24:49 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:24:49 [35mSTATE:[39m test-node-wasm.js event: warmup
|
||||
2021-09-20 09:24:49 [35mSTATE:[39m test-node-wasm.js passed: warmup: body default
|
||||
2021-09-20 09:24:49 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:24:49 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 2666
|
||||
2021-09-20 09:24:49 [35mSTATE:[39m test-node-wasm.js passed: warmup body result match
|
||||
2021-09-20 09:24:49 [36mINFO: [39m test-node-wasm.js test default
|
||||
2021-09-20 09:24:51 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856}
|
||||
2021-09-20 09:24:52 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:24:53 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:24:53 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:53 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:24:53 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 2520
|
||||
2021-09-20 09:24:53 [35mSTATE:[39m test-node-wasm.js passed: default result face match
|
||||
2021-09-20 09:24:53 [36mINFO: [39m test-node-wasm.js test sync
|
||||
2021-09-20 09:24:55 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856}
|
||||
2021-09-20 09:24:56 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:24:57 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:24:57 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:24:57 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:24:57 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 2574
|
||||
2021-09-20 09:24:57 [35mSTATE:[39m test-node-wasm.js passed: default sync
|
||||
2021-09-20 09:24:57 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34697856}
|
||||
2021-09-20 09:24:57 [35mSTATE:[39m test-node-wasm.js passed: image input null [1,256,256,3]
|
||||
2021-09-20 09:24:57 [35mSTATE:[39m test-node-wasm.js passed: invalid input {"error":"could not convert input to tensor"}
|
||||
2021-09-20 09:24:57 [36mINFO: [39m test-node-wasm.js test face similarity
|
||||
2021-09-20 09:24:58 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34697856}
|
||||
2021-09-20 09:24:59 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:25:00 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:25:00 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 09:25:00 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:25:00 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 2583
|
||||
2021-09-20 09:25:02 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856}
|
||||
2021-09-20 09:25:03 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:25:04 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:25:04 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:25:04 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:25:04 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 2496
|
||||
2021-09-20 09:25:05 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151155104}
|
||||
2021-09-20 09:25:06 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:25:07 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:25:07 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:25:07 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:25:07 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 2482
|
||||
2021-09-20 09:25:07 [35mSTATE:[39m test-node-wasm.js passed: face descriptor
|
||||
2021-09-20 09:25:07 [31mERROR:[39m test-node-wasm.js failed: face match 100 100 100
|
||||
2021-09-20 09:25:07 [36mINFO: [39m test-node-wasm.js test face matching
|
||||
2021-09-20 09:25:07 [35mSTATE:[39m test-node-wasm.js passed: face database 102
|
||||
2021-09-20 09:25:07 [35mSTATE:[39m test-node-wasm.js passed: face match {"first":{"name":"ai face","similarity":0.5102875790637588}} {"second":{"name":"ai face","similarity":0.5102875790637588}} {"third":{"name":"ai face","similarity":0.5102875790637588}}
|
||||
2021-09-20 09:25:07 [36mINFO: [39m test-node-wasm.js test object
|
||||
2021-09-20 09:25:09 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856}
|
||||
2021-09-20 09:25:10 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:25:11 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:25:11 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:25:11 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:25:11 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 2504
|
||||
2021-09-20 09:25:11 [31mERROR:[39m test-node-wasm.js failed: object result mismatch 0
|
||||
2021-09-20 09:25:11 [36mINFO: [39m test-node-wasm.js test sensitive
|
||||
2021-09-20 09:25:13 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856}
|
||||
2021-09-20 09:25:14 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:25:17 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:25:17 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:25:17 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 3 gesture: 9 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:25:17 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 4049
|
||||
2021-09-20 09:25:17 [35mSTATE:[39m test-node-wasm.js passed: sensitive result match
|
||||
2021-09-20 09:25:17 [31mERROR:[39m test-node-wasm.js failed: sensitive face result mismatch 1 4 478 3 1024 9
|
||||
2021-09-20 09:25:17 [35mSTATE:[39m test-node-wasm.js passed: sensitive body result match
|
||||
2021-09-20 09:25:17 [35mSTATE:[39m test-node-wasm.js passed: sensitive hand result match
|
||||
2021-09-20 09:25:17 [36mINFO: [39m test-node-wasm.js test detectors
|
||||
2021-09-20 09:25:18 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856}
|
||||
2021-09-20 09:25:20 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:25:20 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:25:20 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:25:20 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 0 person: 1 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:25:20 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 1951
|
||||
2021-09-20 09:25:20 [35mSTATE:[39m test-node-wasm.js passed: detector result face match
|
||||
2021-09-20 09:25:20 [35mSTATE:[39m test-node-wasm.js passed: detector result hand match
|
||||
2021-09-20 09:25:20 [36mINFO: [39m test-node-wasm.js test body variants
|
||||
2021-09-20 09:25:23 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856}
|
||||
2021-09-20 09:25:25 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:25:25 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:25:25 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-body.jpg posenet
|
||||
2021-09-20 09:25:25 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 0 person: 1 {"score":0.93} {} {"score":0.91,"keypoints":17}
|
||||
2021-09-20 09:25:25 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 2087
|
||||
2021-09-20 09:25:27 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856}
|
||||
2021-09-20 09:25:29 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:25:29 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:25:29 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-body.jpg movenet
|
||||
2021-09-20 09:25:29 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 0 person: 1 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:25:29 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 1945
|
||||
2021-09-20 09:25:31 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:25:31 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:25:31 [35mSTATE:[39m test-node-wasm.js passed: detect: random default
|
||||
2021-09-20 09:25:31 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 0 person: 1 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:25:31 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 1957
|
||||
2021-09-20 09:25:31 [36mINFO: [39m test-node-wasm.js test: first instance
|
||||
2021-09-20 09:25:32 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151155104}
|
||||
2021-09-20 09:25:34 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:25:34 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 0 person: 1 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:25:34 [32mDATA: [39m test-node-wasm.js result: performance: load: 3 total: 1896
|
||||
2021-09-20 09:25:34 [36mINFO: [39m test-node-wasm.js test: second instance
|
||||
2021-09-20 09:25:34 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151155104}
|
||||
2021-09-20 09:25:36 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:25:36 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 0 person: 1 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:25:36 [32mDATA: [39m test-node-wasm.js result: performance: load: 2 total: 1869
|
||||
2021-09-20 09:25:36 [36mINFO: [39m test-node-wasm.js test: concurrent
|
||||
2021-09-20 09:25:36 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34697856}
|
||||
2021-09-20 09:25:36 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34697856}
|
||||
2021-09-20 09:25:36 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34697856}
|
||||
2021-09-20 09:25:38 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856}
|
||||
2021-09-20 09:25:39 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856}
|
||||
2021-09-20 09:25:41 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856}
|
||||
2021-09-20 09:25:41 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151155104}
|
||||
2021-09-20 09:25:42 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151155104}
|
||||
2021-09-20 09:25:42 [35mSTATE:[39m test-node-wasm.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151155104}
|
||||
2021-09-20 09:25:44 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:25:49 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:25:54 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 0 person: 1 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 17484
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: face: 2 body: 1 hand: 1 gesture: 1 object: 0 person: 2 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: performance: load: 3 total: 17484
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: face: 3 body: 1 hand: 1 gesture: 1 object: 0 person: 3 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: performance: load: 2 total: 17484
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: face: 4 body: 1 hand: 1 gesture: 1 object: 0 person: 4 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 17484
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: face: 5 body: 1 hand: 1 gesture: 1 object: 0 person: 5 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: performance: load: 3 total: 17484
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: face: 6 body: 1 hand: 1 gesture: 1 object: 0 person: 6 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: performance: load: 2 total: 17484
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: face: 7 body: 1 hand: 1 gesture: 1 object: 0 person: 7 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: performance: load: 2250 total: 17484
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: face: 8 body: 1 hand: 1 gesture: 1 object: 0 person: 8 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: performance: load: 3 total: 17484
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: face: 9 body: 1 hand: 1 gesture: 1 object: 0 person: 9 {"score":0.93} {} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 09:26:00 [32mDATA: [39m test-node-wasm.js result: performance: load: 2 total: 17484
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js event: image
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js event: detect
|
||||
2021-09-20 09:26:00 [35mSTATE:[39m test-node-wasm.js passed: monkey patch
|
||||
2021-09-20 09:26:01 [35mSTATE:[39m test-node-wasm.js passed: segmentation [256,256]
|
||||
2021-09-20 09:26:01 [35mSTATE:[39m test-node-wasm.js passeed: no memory leak
|
||||
2021-09-20 09:26:01 [35mSTATE:[39m test-node-wasm.js passeed: equal usage
|
||||
2021-09-20 09:26:01 [36mINFO: [39m test-node-wasm.js events: {"image":17,"detect":17,"warmup":2}
|
||||
2021-09-20 09:26:01 [36mINFO: [39m test-node-wasm.js test complete: 79029 ms
|
||||
2021-09-20 09:26:01 [36mINFO: [39m
|
||||
2021-09-20 09:26:01 [36mINFO: [39m status: {"test-node.js":{"passed":73,"failed":0},"test-node-gpu.js":{"passed":73,"failed":0},"test-node-wasm.js":{"passed":71,"failed":3}}
|
||||
2021-09-20 21:59:16 [36mINFO: [39m @vladmandic/human version 2.2.2
|
||||
2021-09-20 21:59:16 [36mINFO: [39m User: vlado Platform: linux Arch: x64 Node: v16.5.0
|
||||
2021-09-20 21:59:16 [36mINFO: [39m tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"]
|
||||
2021-09-20 21:59:16 [36mINFO: [39m demos: ["../demo/nodejs/node.js","../demo/nodejs/node-canvas.js","../demo/nodejs/node-env.js","../demo/nodejs/node-event.js","../demo/nodejs/node-multiprocess.js"]
|
||||
2021-09-20 21:59:16 [36mINFO: [39m
|
||||
2021-09-20 21:59:16 [36mINFO: [39m test-node.js start
|
||||
2021-09-20 21:59:17 [35mSTATE:[39m test-node.js passed: configuration default validation []
|
||||
2021-09-20 21:59:17 [35mSTATE:[39m test-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}]
|
||||
2021-09-20 21:59:17 [35mSTATE:[39m test-node.js passed: models loaded 14 7
|
||||
2021-09-20 21:59:17 [35mSTATE:[39m test-node.js passed: create human
|
||||
2021-09-20 21:59:17 [36mINFO: [39m test-node.js human version: 2.2.2
|
||||
2021-09-20 21:59:17 [36mINFO: [39m test-node.js platform: linux x64 agent: NodeJS v16.5.0
|
||||
2021-09-20 21:59:17 [36mINFO: [39m test-node.js tfjs version: 3.9.0
|
||||
2021-09-20 21:59:17 [35mSTATE:[39m test-node.js passed: set backend: tensorflow
|
||||
2021-09-20 21:59:17 [35mSTATE:[39m test-node.js tensors 1456
|
||||
2021-09-20 21:59:17 [35mSTATE:[39m test-node.js passed: load models
|
||||
2021-09-20 21:59:17 [35mSTATE:[39m test-node.js result: defined models: 14 loaded models: 7
|
||||
2021-09-20 21:59:17 [35mSTATE:[39m test-node.js passed: warmup: none default
|
||||
2021-09-20 21:59:17 [35mSTATE:[39m test-node.js passed: warmup none result match
|
||||
2021-09-20 21:59:17 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:19 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:19 [35mSTATE:[39m test-node.js event: warmup
|
||||
2021-09-20 21:59:19 [35mSTATE:[39m test-node.js passed: warmup: face default
|
||||
2021-09-20 21:59:19 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4}
|
||||
2021-09-20 21:59:19 [32mDATA: [39m test-node.js result: performance: load: 292 total: 1260
|
||||
2021-09-20 21:59:19 [35mSTATE:[39m test-node.js passed: warmup face result match
|
||||
2021-09-20 21:59:19 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:20 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:20 [35mSTATE:[39m test-node.js event: warmup
|
||||
2021-09-20 21:59:20 [35mSTATE:[39m test-node.js passed: warmup: body default
|
||||
2021-09-20 21:59:20 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 21:59:20 [32mDATA: [39m test-node.js result: performance: load: 292 total: 1085
|
||||
2021-09-20 21:59:20 [35mSTATE:[39m test-node.js passed: warmup body result match
|
||||
2021-09-20 21:59:20 [36mINFO: [39m test-node.js test default
|
||||
2021-09-20 21:59:21 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 21:59:21 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:22 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:22 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 21:59:22 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 21:59:22 [32mDATA: [39m test-node.js result: performance: load: 292 total: 1161
|
||||
2021-09-20 21:59:22 [35mSTATE:[39m test-node.js passed: default result face match
|
||||
2021-09-20 21:59:22 [36mINFO: [39m test-node.js test sync
|
||||
2021-09-20 21:59:23 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 21:59:23 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:24 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:24 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 21:59:24 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 21:59:24 [32mDATA: [39m test-node.js result: performance: load: 292 total: 1059
|
||||
2021-09-20 21:59:24 [35mSTATE:[39m test-node.js passed: default sync
|
||||
2021-09-20 21:59:24 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 21:59:24 [35mSTATE:[39m test-node.js passed: image input null [1,256,256,3]
|
||||
2021-09-20 21:59:24 [35mSTATE:[39m test-node.js passed: invalid input {"error":"could not convert input to tensor"}
|
||||
2021-09-20 21:59:24 [36mINFO: [39m test-node.js test face similarity
|
||||
2021-09-20 21:59:24 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 21:59:24 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:25 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:25 [35mSTATE:[39m test-node.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 21:59:25 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":4}
|
||||
2021-09-20 21:59:25 [32mDATA: [39m test-node.js result: performance: load: 292 total: 734
|
||||
2021-09-20 21:59:25 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 21:59:25 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:26 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:26 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 21:59:26 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 21:59:26 [32mDATA: [39m test-node.js result: performance: load: 292 total: 928
|
||||
2021-09-20 21:59:27 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 21:59:27 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:27 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:27 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 21:59:27 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 21:59:27 [32mDATA: [39m test-node.js result: performance: load: 292 total: 733
|
||||
2021-09-20 21:59:27 [35mSTATE:[39m test-node.js passed: face descriptor
|
||||
2021-09-20 21:59:27 [35mSTATE:[39m test-node.js passed: face similarity
|
||||
2021-09-20 21:59:27 [36mINFO: [39m test-node.js test face matching
|
||||
2021-09-20 21:59:27 [35mSTATE:[39m test-node.js passed: face database 102
|
||||
2021-09-20 21:59:27 [35mSTATE:[39m test-node.js passed: face match {"first":{"name":"ai face","similarity":0.7679640257895076}} {"second":{"name":"ai face","similarity":0.5102876185668009}} {"third":{"name":"ai upper","similarity":0.7726724047990643}}
|
||||
2021-09-20 21:59:27 [36mINFO: [39m test-node.js test object
|
||||
2021-09-20 21:59:28 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 21:59:28 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:29 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:29 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 21:59:29 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 21:59:29 [32mDATA: [39m test-node.js result: performance: load: 292 total: 996
|
||||
2021-09-20 21:59:29 [35mSTATE:[39m test-node.js passed: object result match
|
||||
2021-09-20 21:59:29 [36mINFO: [39m test-node.js test sensitive
|
||||
2021-09-20 21:59:30 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 21:59:30 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:32 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:32 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 21:59:32 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 3 gesture: 9 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 21:59:32 [32mDATA: [39m test-node.js result: performance: load: 292 total: 1647
|
||||
2021-09-20 21:59:32 [35mSTATE:[39m test-node.js passed: sensitive result match
|
||||
2021-09-20 21:59:32 [35mSTATE:[39m test-node.js passed: sensitive face result match
|
||||
2021-09-20 21:59:32 [35mSTATE:[39m test-node.js passed: sensitive body result match
|
||||
2021-09-20 21:59:32 [35mSTATE:[39m test-node.js passed: sensitive hand result match
|
||||
2021-09-20 21:59:32 [36mINFO: [39m test-node.js test detectors
|
||||
2021-09-20 21:59:33 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 21:59:33 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:33 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:33 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 21:59:33 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 21:59:33 [32mDATA: [39m test-node.js result: performance: load: 292 total: 559
|
||||
2021-09-20 21:59:33 [35mSTATE:[39m test-node.js passed: detector result face match
|
||||
2021-09-20 21:59:33 [35mSTATE:[39m test-node.js passed: detector result hand match
|
||||
2021-09-20 21:59:33 [36mINFO: [39m test-node.js test body variants
|
||||
2021-09-20 21:59:34 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 21:59:34 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:35 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:35 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg posenet
|
||||
2021-09-20 21:59:35 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.91,"keypoints":17}
|
||||
2021-09-20 21:59:35 [32mDATA: [39m test-node.js result: performance: load: 292 total: 663
|
||||
2021-09-20 21:59:36 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 21:59:36 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:36 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:36 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg movenet
|
||||
2021-09-20 21:59:36 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17}
|
||||
2021-09-20 21:59:36 [32mDATA: [39m test-node.js result: performance: load: 292 total: 650
|
||||
2021-09-20 21:59:37 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:37 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:37 [35mSTATE:[39m test-node.js passed: detect: random default
|
||||
2021-09-20 21:59:37 [32mDATA: [39m test-node.js result: face: 0 body: 1 hand: 1 gesture: 1 object: 0 person: 0 {} {} {"score":0.08,"keypoints":17}
|
||||
2021-09-20 21:59:37 [32mDATA: [39m test-node.js result: performance: load: 292 total: 625
|
||||
2021-09-20 21:59:37 [36mINFO: [39m test-node.js test: first instance
|
||||
2021-09-20 21:59:37 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 21:59:38 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 21:59:38 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 21:59:38 [32mDATA: [39m test-node.js result: performance: load: 3 total: 659
|
||||
2021-09-20 21:59:38 [36mINFO: [39m test-node.js test: second instance
|
||||
2021-09-20 21:59:38 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 21:59:39 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 21:59:39 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 21:59:39 [32mDATA: [39m test-node.js result: performance: load: 4 total: 641
|
||||
2021-09-20 21:59:39 [36mINFO: [39m test-node.js test: concurrent
|
||||
2021-09-20 21:59:39 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 21:59:39 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 21:59:39 [35mSTATE:[39m test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3] {"checksum":34696120}
|
||||
2021-09-20 21:59:40 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 21:59:41 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 21:59:42 [35mSTATE:[39m test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864}
|
||||
2021-09-20 21:59:42 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 21:59:42 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 21:59:43 [35mSTATE:[39m test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3] {"checksum":151289040}
|
||||
2021-09-20 21:59:43 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:43 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:43 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":10}
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: performance: load: 292 total: 5041
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: face: 2 body: 1 hand: 0 gesture: 1 object: 1 person: 2 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":10}
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: performance: load: 3 total: 5041
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js passed: detect: samples/ai-face.jpg default
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: face: 3 body: 1 hand: 0 gesture: 1 object: 1 person: 3 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":10}
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: performance: load: 4 total: 5041
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: face: 7 body: 1 hand: 0 gesture: 1 object: 1 person: 7 {"score":0.91} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: performance: load: 292 total: 5041
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: face: 8 body: 1 hand: 0 gesture: 1 object: 1 person: 8 {"score":0.91} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: performance: load: 3 total: 5041
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js passed: detect: samples/ai-upper.jpg default
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: face: 9 body: 1 hand: 0 gesture: 1 object: 1 person: 9 {"score":0.91} {"score":0.71,"class":"person"} {"score":0.69,"keypoints":10}
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: performance: load: 4 total: 5041
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: face: 4 body: 1 hand: 1 gesture: 1 object: 1 person: 4 {"score":0.91} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":10}
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: performance: load: 292 total: 5047
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: face: 5 body: 1 hand: 1 gesture: 1 object: 1 person: 5 {"score":0.91} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":10}
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: performance: load: 3 total: 5047
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js passed: detect: samples/ai-body.jpg default
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: face: 6 body: 1 hand: 1 gesture: 1 object: 1 person: 6 {"score":0.91} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":10}
|
||||
2021-09-20 21:59:48 [32mDATA: [39m test-node.js result: performance: load: 4 total: 5047
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js event: image
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js event: detect
|
||||
2021-09-20 21:59:48 [35mSTATE:[39m test-node.js passed: monkey patch
|
||||
2021-09-20 21:59:49 [35mSTATE:[39m test-node.js passed: segmentation [256,256]
|
||||
2021-09-20 21:59:49 [35mSTATE:[39m test-node.js passeed: no memory leak
|
||||
2021-09-20 21:59:49 [35mSTATE:[39m test-node.js passeed: equal usage
|
||||
2021-09-20 21:59:49 [36mINFO: [39m test-node.js events: {"image":17,"detect":17,"warmup":2}
|
||||
2021-09-20 21:59:49 [36mINFO: [39m test-node.js test complete: 31407 ms
|
||||
2021-09-20 21:59:49 [36mINFO: [39m
|
||||
2021-09-20 21:59:49 [36mINFO: [39m test-node-gpu.js start
|
||||
|
|
Loading…
Reference in New Issue