fix node build and update model signatures

pull/134/head
Vladimir Mandic 2021-05-11 07:53:06 -04:00
parent 4390f94b50
commit 374a5a15c1
32 changed files with 3732 additions and 49554 deletions

View File

@ -1,6 +1,6 @@
# @vladmandic/human
Version: **1.8.3**
Version: **1.8.4**
Description: **Human: AI-powered 3D Face Detection & Rotation Tracking, Face Description & Recognition, Body Pose Tracking, 3D Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction, Gesture Recognition**
Author: **Vladimir Mandic <mandic00@live.com>**
@ -9,11 +9,15 @@ Repository: **<git+https://github.com/vladmandic/human.git>**
## Changelog
### **1.8.4** 2021/05/11 mandic00@live.com
### **origin/main** 2021/05/05 mandic00@live.com
### **1.8.3** 2021/05/05 mandic00@live.com
### **origin/main** 2021/05/04 mandic00@live.com
- switch posenet weights
### **1.8.2** 2021/05/04 mandic00@live.com

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -24,6 +24,7 @@ onmessage = async (msg) => {
}
// must strip canvas from return value as it cannot be transfered from worker thread
if (result.canvas) result.canvas = null;
// @ts-ignore tslint wrong type matching for worker
postMessage({ result });
busy = false;
};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

526
dist/human.esm.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

527
dist/human.js vendored

File diff suppressed because one or more lines are too long

7
dist/human.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -7,12 +7,14 @@
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
var __commonJS = (cb, mod) => () => (mod || cb((mod = {exports: {}}).exports, mod), mod.exports);
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[Object.keys(cb)[0]])((mod = {exports: {}}).exports, mod), mod.exports;
};
var __export = (target, all2) => {
for (var name in all2)
__defProp(target, name, {get: all2[name], enumerable: true});
@ -36,6 +38,11 @@ var __privateGet = (obj, member, getter) => {
__accessCheck(obj, member, "read from private field");
return getter ? getter.call(obj) : member.get(obj);
};
var __privateAdd = (obj, member, value) => {
if (member.has(obj))
throw TypeError("Cannot add the same private member more than once");
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
};
var __privateSet = (obj, member, value, setter) => {
__accessCheck(obj, member, "write to private field");
setter ? setter.call(obj, value) : member.set(obj, value);
@ -43,23 +50,29 @@ var __privateSet = (obj, member, value, setter) => {
};
// dist/tfjs.esm.js
var require_tfjs_esm = __commonJS((exports) => {
var s = Object.create;
var t = Object.defineProperty;
var d = Object.getPrototypeOf;
var g = Object.prototype.hasOwnProperty;
var j = Object.getOwnPropertyNames;
var l = Object.getOwnPropertyDescriptor;
var p = (o) => t(o, "__esModule", {value: true});
var r = (o, e, n) => {
if (e && typeof e == "object" || typeof e == "function")
for (let f of j(e))
!g.call(o, f) && f !== "default" && t(o, f, {get: () => e[f], enumerable: !(n = l(e, f)) || n.enumerable});
return o;
};
var m = (o) => r(p(t(o != null ? s(d(o)) : {}, "default", o && o.__esModule && "default" in o ? {get: () => o.default, enumerable: true} : {value: o, enumerable: true})), o);
p(exports);
r(exports, m(require("@tensorflow/tfjs-node-gpu")));
var require_tfjs_esm = __commonJS({
"dist/tfjs.esm.js"(exports) {
var __create2 = Object.create;
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __getProtoOf2 = Object.getPrototypeOf;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __markAsModule2 = (target) => __defProp2(target, "__esModule", {value: true});
var __reExport2 = (target, module22, desc) => {
if (module22 && typeof module22 === "object" || typeof module22 === "function") {
for (let key of __getOwnPropNames2(module22))
if (!__hasOwnProp2.call(target, key) && key !== "default")
__defProp2(target, key, {get: () => module22[key], enumerable: !(desc = __getOwnPropDesc2(module22, key)) || desc.enumerable});
}
return target;
};
var __toModule2 = (module22) => {
return __reExport2(__markAsModule2(__defProp2(module22 != null ? __create2(__getProtoOf2(module22)) : {}, "default", module22 && module22.__esModule && "default" in module22 ? {get: () => module22.default, enumerable: true} : {value: module22, enumerable: true})), module22);
};
__markAsModule2(exports);
__reExport2(exports, __toModule2(require("@tensorflow/tfjs-node-gpu")));
}
});
// src/human.ts
@ -110,7 +123,7 @@ function mergeDeep(...objects) {
var config = {
backend: "webgl",
modelBasePath: "../models/",
wasmPath: "../assets/",
wasmPath: "../node_modules/@tensorflow/tfjs-backend-wasm/dist//",
debug: true,
async: true,
videoOptimized: true,
@ -19512,16 +19525,16 @@ lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/
2Q==`;
// package.json
var version = "1.8.3";
var version = "1.8.4";
// src/human.ts
var _numTensors, _analyzeMemoryLeaks, _checkSanity, _firstRun, _sanity, _checkBackend, _warmupBitmap, _warmupCanvas, _warmupNode;
var Human = class {
constructor(userConfig = {}) {
_numTensors.set(this, void 0);
_analyzeMemoryLeaks.set(this, void 0);
_checkSanity.set(this, void 0);
_firstRun.set(this, void 0);
__privateAdd(this, _numTensors, void 0);
__privateAdd(this, _analyzeMemoryLeaks, void 0);
__privateAdd(this, _checkSanity, void 0);
__privateAdd(this, _firstRun, void 0);
this.analyze = (...msg) => {
if (!__privateGet(this, _analyzeMemoryLeaks))
return;
@ -19532,7 +19545,7 @@ var Human = class {
if (leaked !== 0)
log(...msg, leaked);
};
_sanity.set(this, (input) => {
__privateAdd(this, _sanity, (input) => {
if (!__privateGet(this, _checkSanity))
return null;
if (!input)
@ -19546,7 +19559,7 @@ var Human = class {
}
return null;
});
_checkBackend.set(this, async (force = false) => {
__privateAdd(this, _checkBackend, async (force = false) => {
var _a;
if (this.config.backend && this.config.backend.length > 0 && force || this.tf.getBackend() !== this.config.backend) {
const timeStamp = now();
@ -19598,7 +19611,7 @@ var Human = class {
this.perf.backend = Math.trunc(now() - timeStamp);
}
});
_warmupBitmap.set(this, async () => {
__privateAdd(this, _warmupBitmap, async () => {
const b64toBlob = (base64, type = "application/octet-stream") => fetch(`data:${type};base64,${base64}`).then((res2) => res2.blob());
let blob;
let res;
@ -19619,7 +19632,7 @@ var Human = class {
}
return res;
});
_warmupCanvas.set(this, async () => new Promise((resolve) => {
__privateAdd(this, _warmupCanvas, async () => new Promise((resolve) => {
let src;
let size = 0;
switch (this.config.warmup) {
@ -19650,7 +19663,7 @@ var Human = class {
else
resolve(null);
}));
_warmupNode.set(this, async () => {
__privateAdd(this, _warmupNode, async () => {
const atob = (str) => Buffer.from(str, "base64");
let img;
if (this.config.warmup === "face")
@ -19660,8 +19673,8 @@ var Human = class {
if (!img)
return null;
let res;
if (typeof tf16.node !== "undefined") {
const data = tf16.node.decodeJpeg(img);
if (typeof tf16["node"] !== "undefined") {
const data = tf16["node"].decodeJpeg(img);
const expanded = data.expandDims(0);
this.tf.dispose(data);
res = await this.detect(expanded, this.config);

View File

@ -7,12 +7,14 @@
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
var __commonJS = (cb, mod) => () => (mod || cb((mod = {exports: {}}).exports, mod), mod.exports);
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[Object.keys(cb)[0]])((mod = {exports: {}}).exports, mod), mod.exports;
};
var __export = (target, all2) => {
for (var name in all2)
__defProp(target, name, {get: all2[name], enumerable: true});
@ -36,6 +38,11 @@ var __privateGet = (obj, member, getter) => {
__accessCheck(obj, member, "read from private field");
return getter ? getter.call(obj) : member.get(obj);
};
var __privateAdd = (obj, member, value) => {
if (member.has(obj))
throw TypeError("Cannot add the same private member more than once");
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
};
var __privateSet = (obj, member, value, setter) => {
__accessCheck(obj, member, "write to private field");
setter ? setter.call(obj, value) : member.set(obj, value);
@ -43,24 +50,30 @@ var __privateSet = (obj, member, value, setter) => {
};
// dist/tfjs.esm.js
var require_tfjs_esm = __commonJS((exports) => {
var w = Object.create;
var e = Object.defineProperty;
var a = Object.getPrototypeOf;
var j = Object.prototype.hasOwnProperty;
var l = Object.getOwnPropertyNames;
var p = Object.getOwnPropertyDescriptor;
var m = (o) => e(o, "__esModule", {value: true});
var f = (o, r, s) => {
if (r && typeof r == "object" || typeof r == "function")
for (let t of l(r))
!j.call(o, t) && t !== "default" && e(o, t, {get: () => r[t], enumerable: !(s = p(r, t)) || s.enumerable});
return o;
};
var n = (o) => f(m(e(o != null ? w(a(o)) : {}, "default", o && o.__esModule && "default" in o ? {get: () => o.default, enumerable: true} : {value: o, enumerable: true})), o);
m(exports);
f(exports, n(require("@tensorflow/tfjs")));
f(exports, n(require("@tensorflow/tfjs-backend-wasm")));
var require_tfjs_esm = __commonJS({
"dist/tfjs.esm.js"(exports) {
var __create2 = Object.create;
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __getProtoOf2 = Object.getPrototypeOf;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __markAsModule2 = (target) => __defProp2(target, "__esModule", {value: true});
var __reExport2 = (target, module22, desc) => {
if (module22 && typeof module22 === "object" || typeof module22 === "function") {
for (let key of __getOwnPropNames2(module22))
if (!__hasOwnProp2.call(target, key) && key !== "default")
__defProp2(target, key, {get: () => module22[key], enumerable: !(desc = __getOwnPropDesc2(module22, key)) || desc.enumerable});
}
return target;
};
var __toModule2 = (module22) => {
return __reExport2(__markAsModule2(__defProp2(module22 != null ? __create2(__getProtoOf2(module22)) : {}, "default", module22 && module22.__esModule && "default" in module22 ? {get: () => module22.default, enumerable: true} : {value: module22, enumerable: true})), module22);
};
__markAsModule2(exports);
__reExport2(exports, __toModule2(require("@tensorflow/tfjs")));
__reExport2(exports, __toModule2(require("@tensorflow/tfjs-backend-wasm")));
}
});
// src/human.ts
@ -111,7 +124,7 @@ function mergeDeep(...objects) {
var config = {
backend: "webgl",
modelBasePath: "../models/",
wasmPath: "../assets/",
wasmPath: "../node_modules/@tensorflow/tfjs-backend-wasm/dist//",
debug: true,
async: true,
videoOptimized: true,
@ -19513,16 +19526,16 @@ lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/
2Q==`;
// package.json
var version = "1.8.3";
var version = "1.8.4";
// src/human.ts
var _numTensors, _analyzeMemoryLeaks, _checkSanity, _firstRun, _sanity, _checkBackend, _warmupBitmap, _warmupCanvas, _warmupNode;
var Human = class {
constructor(userConfig = {}) {
_numTensors.set(this, void 0);
_analyzeMemoryLeaks.set(this, void 0);
_checkSanity.set(this, void 0);
_firstRun.set(this, void 0);
__privateAdd(this, _numTensors, void 0);
__privateAdd(this, _analyzeMemoryLeaks, void 0);
__privateAdd(this, _checkSanity, void 0);
__privateAdd(this, _firstRun, void 0);
this.analyze = (...msg) => {
if (!__privateGet(this, _analyzeMemoryLeaks))
return;
@ -19533,7 +19546,7 @@ var Human = class {
if (leaked !== 0)
log(...msg, leaked);
};
_sanity.set(this, (input) => {
__privateAdd(this, _sanity, (input) => {
if (!__privateGet(this, _checkSanity))
return null;
if (!input)
@ -19547,7 +19560,7 @@ var Human = class {
}
return null;
});
_checkBackend.set(this, async (force = false) => {
__privateAdd(this, _checkBackend, async (force = false) => {
var _a;
if (this.config.backend && this.config.backend.length > 0 && force || this.tf.getBackend() !== this.config.backend) {
const timeStamp = now();
@ -19599,7 +19612,7 @@ var Human = class {
this.perf.backend = Math.trunc(now() - timeStamp);
}
});
_warmupBitmap.set(this, async () => {
__privateAdd(this, _warmupBitmap, async () => {
const b64toBlob = (base64, type = "application/octet-stream") => fetch(`data:${type};base64,${base64}`).then((res2) => res2.blob());
let blob;
let res;
@ -19620,7 +19633,7 @@ var Human = class {
}
return res;
});
_warmupCanvas.set(this, async () => new Promise((resolve) => {
__privateAdd(this, _warmupCanvas, async () => new Promise((resolve) => {
let src;
let size = 0;
switch (this.config.warmup) {
@ -19651,7 +19664,7 @@ var Human = class {
else
resolve(null);
}));
_warmupNode.set(this, async () => {
__privateAdd(this, _warmupNode, async () => {
const atob = (str) => Buffer.from(str, "base64");
let img;
if (this.config.warmup === "face")
@ -19661,8 +19674,8 @@ var Human = class {
if (!img)
return null;
let res;
if (typeof tf16.node !== "undefined") {
const data = tf16.node.decodeJpeg(img);
if (typeof tf16["node"] !== "undefined") {
const data = tf16["node"].decodeJpeg(img);
const expanded = data.expandDims(0);
this.tf.dispose(data);
res = await this.detect(expanded, this.config);

79
dist/human.node.js vendored
View File

@ -7,12 +7,14 @@
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
var __commonJS = (cb, mod) => () => (mod || cb((mod = {exports: {}}).exports, mod), mod.exports);
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[Object.keys(cb)[0]])((mod = {exports: {}}).exports, mod), mod.exports;
};
var __export = (target, all2) => {
for (var name in all2)
__defProp(target, name, {get: all2[name], enumerable: true});
@ -36,6 +38,11 @@ var __privateGet = (obj, member, getter) => {
__accessCheck(obj, member, "read from private field");
return getter ? getter.call(obj) : member.get(obj);
};
var __privateAdd = (obj, member, value) => {
if (member.has(obj))
throw TypeError("Cannot add the same private member more than once");
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
};
var __privateSet = (obj, member, value, setter) => {
__accessCheck(obj, member, "write to private field");
setter ? setter.call(obj, value) : member.set(obj, value);
@ -43,23 +50,29 @@ var __privateSet = (obj, member, value, setter) => {
};
// dist/tfjs.esm.js
var require_tfjs_esm = __commonJS((exports) => {
var d = Object.create;
var t = Object.defineProperty;
var j = Object.getPrototypeOf;
var l = Object.prototype.hasOwnProperty;
var m = Object.getOwnPropertyNames;
var p = Object.getOwnPropertyDescriptor;
var s = (o) => t(o, "__esModule", {value: true});
var r = (o, e, n) => {
if (e && typeof e == "object" || typeof e == "function")
for (let f of m(e))
!l.call(o, f) && f !== "default" && t(o, f, {get: () => e[f], enumerable: !(n = p(e, f)) || n.enumerable});
return o;
};
var w = (o) => r(s(t(o != null ? d(j(o)) : {}, "default", o && o.__esModule && "default" in o ? {get: () => o.default, enumerable: true} : {value: o, enumerable: true})), o);
s(exports);
r(exports, w(require("@tensorflow/tfjs-node")));
var require_tfjs_esm = __commonJS({
"dist/tfjs.esm.js"(exports) {
var __create2 = Object.create;
var __defProp2 = Object.defineProperty;
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
var __getOwnPropNames2 = Object.getOwnPropertyNames;
var __getProtoOf2 = Object.getPrototypeOf;
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
var __markAsModule2 = (target) => __defProp2(target, "__esModule", {value: true});
var __reExport2 = (target, module22, desc) => {
if (module22 && typeof module22 === "object" || typeof module22 === "function") {
for (let key of __getOwnPropNames2(module22))
if (!__hasOwnProp2.call(target, key) && key !== "default")
__defProp2(target, key, {get: () => module22[key], enumerable: !(desc = __getOwnPropDesc2(module22, key)) || desc.enumerable});
}
return target;
};
var __toModule2 = (module22) => {
return __reExport2(__markAsModule2(__defProp2(module22 != null ? __create2(__getProtoOf2(module22)) : {}, "default", module22 && module22.__esModule && "default" in module22 ? {get: () => module22.default, enumerable: true} : {value: module22, enumerable: true})), module22);
};
__markAsModule2(exports);
__reExport2(exports, __toModule2(require("@tensorflow/tfjs-node")));
}
});
// src/human.ts
@ -110,7 +123,7 @@ function mergeDeep(...objects) {
var config = {
backend: "webgl",
modelBasePath: "../models/",
wasmPath: "../assets/",
wasmPath: "../node_modules/@tensorflow/tfjs-backend-wasm/dist//",
debug: true,
async: true,
videoOptimized: true,
@ -19512,16 +19525,16 @@ lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/
2Q==`;
// package.json
var version = "1.8.3";
var version = "1.8.4";
// src/human.ts
var _numTensors, _analyzeMemoryLeaks, _checkSanity, _firstRun, _sanity, _checkBackend, _warmupBitmap, _warmupCanvas, _warmupNode;
var Human = class {
constructor(userConfig = {}) {
_numTensors.set(this, void 0);
_analyzeMemoryLeaks.set(this, void 0);
_checkSanity.set(this, void 0);
_firstRun.set(this, void 0);
__privateAdd(this, _numTensors, void 0);
__privateAdd(this, _analyzeMemoryLeaks, void 0);
__privateAdd(this, _checkSanity, void 0);
__privateAdd(this, _firstRun, void 0);
this.analyze = (...msg) => {
if (!__privateGet(this, _analyzeMemoryLeaks))
return;
@ -19532,7 +19545,7 @@ var Human = class {
if (leaked !== 0)
log(...msg, leaked);
};
_sanity.set(this, (input) => {
__privateAdd(this, _sanity, (input) => {
if (!__privateGet(this, _checkSanity))
return null;
if (!input)
@ -19546,7 +19559,7 @@ var Human = class {
}
return null;
});
_checkBackend.set(this, async (force = false) => {
__privateAdd(this, _checkBackend, async (force = false) => {
var _a;
if (this.config.backend && this.config.backend.length > 0 && force || this.tf.getBackend() !== this.config.backend) {
const timeStamp = now();
@ -19598,7 +19611,7 @@ var Human = class {
this.perf.backend = Math.trunc(now() - timeStamp);
}
});
_warmupBitmap.set(this, async () => {
__privateAdd(this, _warmupBitmap, async () => {
const b64toBlob = (base64, type = "application/octet-stream") => fetch(`data:${type};base64,${base64}`).then((res2) => res2.blob());
let blob;
let res;
@ -19619,7 +19632,7 @@ var Human = class {
}
return res;
});
_warmupCanvas.set(this, async () => new Promise((resolve) => {
__privateAdd(this, _warmupCanvas, async () => new Promise((resolve) => {
let src;
let size = 0;
switch (this.config.warmup) {
@ -19650,7 +19663,7 @@ var Human = class {
else
resolve(null);
}));
_warmupNode.set(this, async () => {
__privateAdd(this, _warmupNode, async () => {
const atob = (str) => Buffer.from(str, "base64");
let img;
if (this.config.warmup === "face")
@ -19660,8 +19673,8 @@ var Human = class {
if (!img)
return null;
let res;
if (typeof tf16.node !== "undefined") {
const data = tf16.node.decodeJpeg(img);
if (typeof tf16["node"] !== "undefined") {
const data = tf16["node"].decodeJpeg(img);
const expanded = data.expandDims(0);
this.tf.dispose(data);
res = await this.detect(expanded, this.config);

2
dist/tfjs.esm.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4,11 +4,18 @@
"convertedBy": "https://github.com/vladmandic",
"userDefinedMetadata":
{
"signature":
"signature":
{
"inputs":
{
"inputs": {"input:0":{"name":"input:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"256"},{"size":"256"},{"size":"3"}]}}},
"outputs": {"Identity_3:0":{"name":"Identity_3:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"384"},{"size":"16"}]}},"Identity:0":{"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"512"},{"size":"1"}]}},"Identity_1:0":{"name":"Identity_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"384"},{"size":"1"}]}},"Identity_2:0":{"name":"Identity_2:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"512"},{"size":"16"}]}}}
"input:0":{"name":"input:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"256"},{"size":"256"},{"size":"3"}]}}
},
"outputs":
{
"Identity_3:0":{"name":"Identity_3:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"384"},{"size":"16"}]}},"Identity:0":{"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"512"},{"size":"1"}]}},
"Identity_1:0":{"name":"Identity_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"384"},{"size":"1"}]}},"Identity_2:0":{"name":"Identity_2:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"512"},{"size":"16"}]}}
}
}
},
"modelTopology":
{
@ -273,10 +280,7 @@
{"name":"Identity_1","op":"Identity","input":["StatefulPartitionedCall/functional_1/tf_op_layer_classificators_2/classificators_2"],"attr":{"T":{"type":"DT_FLOAT"}}}
],
"library": {},
"versions":
{
"producer": 440
}
"versions": {}
},
"weightsManifest":
[

View File

@ -2,18 +2,21 @@
"format": "graph-model",
"generatedBy": "https://github.com/google/mediapipe",
"convertedBy": "https://github.com/vladmandic",
"signature":
"userDefinedMetadata":
{
"signature":
{
"inputs":
{
"input_1:0": {"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"256"},{"size":"256"},{"size":"3"}]}}
"input_1:0": {"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"256"},{"size":"256"},{"size":"3"}]}}
},
"outputs":
{
"ld_3d:0": {"name":"ld_3d:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"195"}]}},
"output_segmentation:0": {"name":"output_segmentation:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"128"},{"size":"128"},{"size":"1"}]}},
"output_poseflag:0": {"name":"output_poseflag:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"}]}}
"ld_3d:0": {"name":"ld_3d:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"195"}]}},
"output_segmentation:0": {"name":"output_segmentation:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"128"},{"size":"128"},{"size":"1"}]}},
"output_poseflag:0": {"name":"output_poseflag:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"}]}}
}
}
},
"modelTopology":
{
@ -616,10 +619,7 @@
{"name":"output_poseflag","op":"Reshape","input":["activation_poseflag","output_poseflag/shape"],"attr":{"Tshape":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}
],
"library": {},
"versions":
{
"producer": 561
}
"versions": {}
},
"weightsManifest":
[

View File

@ -4,11 +4,17 @@
"convertedBy": "https://github.com/vladmandic",
"userDefinedMetadata":
{
"signature":
"signature":
{
"inputs":
{
"inputs": {"input_1:0":{"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"-1"},{"size":"64"},{"size":"64"},{"size":"1"}]}}},
"outputs": {"Identity:0":{"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"-1"},{"size":"7"}]}}}
"input_1:0":{"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"-1"},{"size":"64"},{"size":"64"},{"size":"1"}]}}
},
"outputs":
{
"Identity:0":{"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"-1"},{"size":"7"}]}}
}
}
},
"modelTopology":
{
@ -61,10 +67,7 @@
{"name":"Identity","op":"Identity","input":["StatefulPartitionedCall/model_1/predictions/Softmax"],"attr":{"T":{"type":"DT_FLOAT"}}}
],
"library": {},
"versions":
{
"producer": 440
}
"versions": {}
},
"weightsManifest":
[

View File

@ -4,11 +4,19 @@
"convertedBy": "https://github.com/vladmandic",
"userDefinedMetadata":
{
"signature":
"signature":
{
"inputs":
{
"inputs": {"input_1:0":{"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"192"},{"size":"192"},{"size":"3"}]}}},
"outputs": {"Identity_1:0":{"name":"Identity_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"266"}]}},"Identity_2:0":{"name":"Identity_2:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"}]}},"Identity:0":{"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1404"}]}}}
"input_1:0":{"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"192"},{"size":"192"},{"size":"3"}]}}
},
"outputs":
{
"Identity_1:0":{"name":"Identity_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"266"}]}},
"Identity_2:0":{"name":"Identity_2:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"}]}},
"Identity:0":{"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1404"}]}}
}
}
},
"modelTopology":
{
@ -253,10 +261,8 @@
{"name":"Identity","op":"Identity","input":["StatefulPartitionedCall/model/output_mesh/Reshape","^Func/StatefulPartitionedCall/output_control_node/_204"],"attr":{"T":{"type":"DT_FLOAT"}}},
{"name":"Identity_1","op":"Identity","input":["StatefulPartitionedCall/model/output_contours/Reshape","^Func/StatefulPartitionedCall/output_control_node/_204"],"attr":{"T":{"type":"DT_FLOAT"}}}
],
"versions":
{
"producer": 134
}
"library": {},
"versions": {}
},
"weightsManifest":
[

View File

@ -4,15 +4,16 @@
"convertedBy": "https://github.com/vladmandic",
"signature":
{
"inputs": {
"input_1": { "name": "input_1", "dtype": "DT_FLOAT", "tensorShape":{"dim":[{"size":"-1"},{"size":"224"},{"size":"224"},{"size":"3"}]} }
},
"outputs":
{
"gender_pred/Sigmoid:0": {"name":"gender_pred/Sigmoid:0", "dtype":"DT_FLOAT", "tensorShape":{"dim":[{"size":"1"},{"size":"1"}]} },
"global_pooling/Mean": {"name":"global_pooling/Mean", "dtype":"DT_FLOAT", "tensorShape":{"dim":[{"size":"1"},{"size":"1024"}]} },
"age_pred/Softmax:0": {"name":"age_pred/Softmax:0", "dtype":"DT_FLOAT", "tensorShape":{"dim":[{"size":"1"},{"size":"100"}]} }
}
"inputs":
{
"input_1": { "name": "input_1", "dtype": "DT_FLOAT", "tensorShape":{"dim":[{"size":"-1"},{"size":"224"},{"size":"224"},{"size":"3"}]} }
},
"outputs":
{
"gender_pred/Sigmoid:0": {"name":"gender_pred/Sigmoid:0", "dtype":"DT_FLOAT", "tensorShape":{"dim":[{"size":"1"},{"size":"1"}]} },
"global_pooling/Mean": {"name":"global_pooling/Mean", "dtype":"DT_FLOAT", "tensorShape":{"dim":[{"size":"1"},{"size":"1024"}]} },
"age_pred/Softmax:0": {"name":"age_pred/Softmax:0", "dtype":"DT_FLOAT", "tensorShape":{"dim":[{"size":"1"},{"size":"100"}]} }
}
},
"modelTopology":
{

View File

@ -4,11 +4,17 @@
"convertedBy": "https://github.com/vladmandic",
"userDefinedMetadata":
{
"signature":
"signature":
{
"inputs":
{
"inputs": {"input:0":{"name":"input:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"256"},{"size":"256"},{"size":"3"}]}}},
"outputs": {"Identity:0":{"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"2944"},{"size":"19"}]}}}
"input:0":{"name":"input:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"256"},{"size":"256"},{"size":"3"}]}}
},
"outputs":
{
"Identity:0":{"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"2944"},{"size":"19"}]}}
}
}
},
"modelTopology":
{
@ -366,11 +372,8 @@
{"name":"StatefulPartitionedCall/model/objects/concat","op":"ConcatV2","input":["StatefulPartitionedCall/model/classificators/concat","StatefulPartitionedCall/model/regressors/concat","StatefulPartitionedCall/model/objects/concat/axis"],"attr":{"T":{"type":"DT_FLOAT"},"N":{"i":"2"},"Tidx":{"type":"DT_INT32"}}},
{"name":"Identity","op":"Identity","input":["StatefulPartitionedCall/model/objects/concat"],"attr":{"T":{"type":"DT_FLOAT"}}}
],
"versions":
{
"producer": 134,
"minConsumer": 12
}
"library": {},
"versions": {}
},
"weightsManifest":
[

View File

@ -4,11 +4,18 @@
"convertedBy": "https://github.com/vladmandic",
"userDefinedMetadata":
{
"signature":
"signature":
{
"inputs":
{
"inputs": {"input_1:0":{"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"256"},{"size":"256"},{"size":"3"}]}}},
"outputs": {"Identity_1:0":{"name":"Identity_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"}]}},"Identity:0":{"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"63"}]}}}
"input_1:0":{"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"256"},{"size":"256"},{"size":"3"}]}}
},
"outputs":
{
"Identity_1:0":{"name":"Identity_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"}]}},
"Identity:0":{"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"63"}]}}
}
}
},
"modelTopology":
{
@ -359,10 +366,8 @@
{"name":"Identity","op":"Identity","input":["StatefulPartitionedCall/model/ld_21_3d/Reshape","^Func/StatefulPartitionedCall/output_control_node/_285"],"attr":{"T":{"type":"DT_FLOAT"}}},
{"name":"Identity_1","op":"Identity","input":["StatefulPartitionedCall/model/output_handflag/Reshape","^Func/StatefulPartitionedCall/output_control_node/_285"],"attr":{"T":{"type":"DT_FLOAT"}}}
],
"versions":
{
"producer": 134
}
"library": {},
"versions": {}
},
"weightsManifest":
[

View File

@ -4,11 +4,17 @@
"convertedBy": "https://github.com/vladmandic",
"userDefinedMetadata":
{
"signature":
"signature":
{
"inputs":
{
"inputs": {"input_1:0":{"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"-1"},{"size":"64"},{"size":"64"},{"size":"3"}]}}},
"outputs": {"Identity:0":{"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"-1"},{"size":"1"},{"size":"1"},{"size":"228"}]}}}
"input_1:0":{"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"-1"},{"size":"64"},{"size":"64"},{"size":"3"}]}}
},
"outputs":
{
"Identity:0":{"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"-1"},{"size":"1"},{"size":"1"},{"size":"228"}]}}
}
}
},
"modelTopology":
{

View File

@ -4,19 +4,19 @@
"convertedBy": "https://github.com/vladmandic",
"signature":
{
"inputs":
{
"input_1:0": {"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"3"},{"size":"416"},{"size":"416"}]}}
},
"outputs":
{
"Identity_2:0": {"name":"Identity_2:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"169"},{"size":"80"}]}},
"Identity_5:0": {"name":"Identity_5:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"169"},{"size":"44"}]}},
"Identity_1:0": {"name":"Identity_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"676"},{"size":"80"}]}},
"Identity:0": {"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"2704"},{"size":"80"}]}},
"Identity_4:0": {"name":"Identity_4:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"676"},{"size":"44"}]}},
"Identity_3:0": {"name":"Identity_3:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"2704"},{"size":"44"}]}}
}
"inputs":
{
"input_1:0": {"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"3"},{"size":"416"},{"size":"416"}]}}
},
"outputs":
{
"Identity_2:0": {"name":"Identity_2:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"169"},{"size":"80"}]}},
"Identity_5:0": {"name":"Identity_5:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"169"},{"size":"44"}]}},
"Identity_1:0": {"name":"Identity_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"676"},{"size":"80"}]}},
"Identity:0": {"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"2704"},{"size":"80"}]}},
"Identity_4:0": {"name":"Identity_4:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"676"},{"size":"44"}]}},
"Identity_3:0": {"name":"Identity_3:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"2704"},{"size":"44"}]}}
}
},
"modelTopology":
{
@ -513,10 +513,7 @@
{"name":"Identity_2","op":"Identity","input":["PartitionedCall/onnx_tf_prefix_Transpose_179"],"attr":{"T":{"type":"DT_FLOAT"}}}
],
"library": {},
"versions":
{
"producer": 561
}
"versions": {}
},
"weightsManifest":
[

View File

@ -4,17 +4,17 @@
"convertedBy": "https://github.com/vladmandic",
"signature":
{
"inputs":
{
"image:0": {"name":"image:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"385"},{"size":"385"},{"size":"3"}]}}
},
"outputs":
{
"MobilenetV1/displacement_fwd_2/BiasAdd:0": {"name":"MobilenetV1/displacement_fwd_2/BiasAdd:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"25"},{"size":"25"},{"size":"32"}]}},
"MobilenetV1/heatmap_2/BiasAdd:0": {"name":"MobilenetV1/heatmap_2/BiasAdd:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"25"},{"size":"25"},{"size":"17"}]}},
"MobilenetV1/displacement_bwd_2/BiasAdd:0": {"name":"MobilenetV1/displacement_bwd_2/BiasAdd:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"25"},{"size":"25"},{"size":"32"}]}},
"MobilenetV1/offset_2/BiasAdd:0": {"name":"MobilenetV1/offset_2/BiasAdd:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"25"},{"size":"25"},{"size":"34"}]}}
}
"inputs":
{
"image:0": {"name":"image:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"385"},{"size":"385"},{"size":"3"}]}}
},
"outputs":
{
"MobilenetV1/displacement_fwd_2/BiasAdd:0": {"name":"MobilenetV1/displacement_fwd_2/BiasAdd:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"25"},{"size":"25"},{"size":"32"}]}},
"MobilenetV1/heatmap_2/BiasAdd:0": {"name":"MobilenetV1/heatmap_2/BiasAdd:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"25"},{"size":"25"},{"size":"17"}]}},
"MobilenetV1/displacement_bwd_2/BiasAdd:0": {"name":"MobilenetV1/displacement_bwd_2/BiasAdd:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"25"},{"size":"25"},{"size":"32"}]}},
"MobilenetV1/offset_2/BiasAdd:0": {"name":"MobilenetV1/offset_2/BiasAdd:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"25"},{"size":"25"},{"size":"34"}]}}
}
},
"modelTopology":
{
@ -116,10 +116,7 @@
{"name":"MobilenetV1/displacement_bwd_2/BiasAdd","op":"_FusedConv2D","input":["MobilenetV1/MobilenetV1/Conv2d_13_pointwise/Relu6","Const_61","Const_60"],"device":"/device:CPU:0","attr":{"padding":{"s":"U0FNRQ=="},"dilations":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true},"fused_ops":{"list":{"s":["Qmlhc0FkZA=="]}},"epsilon":{"f":0},"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}},"num_args":{"i":"1"}}}
],
"library": {},
"versions":
{
"producer": 561
}
"versions": {}
},
"weightsManifest":
[

View File

@ -69,6 +69,9 @@ const targets = {
outfile: 'dist/tfjs.esm.js',
external: ['@tensorflow'],
sourcemap: false,
minifyWhitespace: false,
minifyIdentifiers: false,
minifySyntax: false,
},
node: {
platform: 'node',
@ -90,6 +93,9 @@ const targets = {
outfile: 'dist/tfjs.esm.js',
external: ['@tensorflow'],
sourcemap: false,
minifyWhitespace: false,
minifyIdentifiers: false,
minifySyntax: false,
},
node: {
platform: 'node',
@ -111,6 +117,9 @@ const targets = {
outfile: 'dist/tfjs.esm.js',
external: ['@tensorflow'],
sourcemap: false,
minifyWhitespace: false,
minifyIdentifiers: false,
minifySyntax: false,
},
node: {
platform: 'node',
@ -159,7 +168,7 @@ const targets = {
entryPoints: ['src/human.ts'],
outfile: 'dist/human.js',
external: ['fs', 'buffer', 'util', 'os'],
sourcemap: true,
sourcemap: false,
},
esm: {
platform: 'browser',

View File

@ -1,17 +1,17 @@
2021-05-05 10:06:54 INFO:  @vladmandic/human version 1.8.3
2021-05-05 10:06:54 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-05-05 10:06:54 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-05-05 10:06:54 STATE: Build for: node type: tfjs: {"imports":1,"importBytes":39,"outputBytes":696,"outputFiles":"dist/tfjs.esm.js"}
2021-05-05 10:06:54 STATE: Build for: node type: node: {"imports":35,"importBytes":412756,"outputBytes":371901,"outputFiles":"dist/human.node.js"}
2021-05-05 10:06:54 STATE: Build for: nodeGPU type: tfjs: {"imports":1,"importBytes":43,"outputBytes":700,"outputFiles":"dist/tfjs.esm.js"}
2021-05-05 10:06:54 STATE: Build for: nodeGPU type: node: {"imports":35,"importBytes":412760,"outputBytes":371905,"outputFiles":"dist/human.node-gpu.js"}
2021-05-05 10:06:54 STATE: Build for: nodeWASM type: tfjs: {"imports":1,"importBytes":81,"outputBytes":746,"outputFiles":"dist/tfjs.esm.js"}
2021-05-05 10:06:54 STATE: Build for: nodeWASM type: node: {"imports":35,"importBytes":412806,"outputBytes":371955,"outputFiles":"dist/human.node-wasm.js"}
2021-05-05 10:06:55 STATE: Build for: browserNoBundle type: tfjs: {"imports":1,"importBytes":2488,"outputBytes":1394,"outputFiles":"dist/tfjs.esm.js"}
2021-05-05 10:06:55 STATE: Build for: browserNoBundle type: esm: {"imports":35,"importBytes":413454,"outputBytes":229541,"outputFiles":"dist/human.esm-nobundle.js"}
2021-05-05 10:06:55 STATE: Build for: browserBundle type: tfjs: {"modules":1274,"moduleBytes":4114813,"imports":7,"importBytes":2488,"outputBytes":1111306,"outputFiles":"dist/tfjs.esm.js"}
2021-05-05 10:06:56 STATE: Build for: browserBundle type: iife: {"imports":35,"importBytes":1523366,"outputBytes":1337233,"outputFiles":"dist/human.js"}
2021-05-05 10:06:57 STATE: Build for: browserBundle type: esm: {"imports":35,"importBytes":1523366,"outputBytes":1337191,"outputFiles":"dist/human.esm.js"}
2021-05-05 10:06:57 INFO:  Generate types: ["src/human.ts"]
2021-05-05 10:07:01 INFO:  Update Change log: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-05-05 10:07:01 INFO:  Generate TypeDocs: ["src/human.ts"]
2021-05-11 07:50:56 INFO:  @vladmandic/human version 1.8.4
2021-05-11 07:50:56 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-05-11 07:50:56 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-05-11 07:50:56 STATE: Build for: node type: tfjs: {"imports":1,"importBytes":39,"outputBytes":1284,"outputFiles":"dist/tfjs.esm.js"}
2021-05-11 07:50:56 STATE: Build for: node type: node: {"imports":35,"importBytes":413382,"outputBytes":372832,"outputFiles":"dist/human.node.js"}
2021-05-11 07:50:56 STATE: Build for: nodeGPU type: tfjs: {"imports":1,"importBytes":43,"outputBytes":1292,"outputFiles":"dist/tfjs.esm.js"}
2021-05-11 07:50:56 STATE: Build for: nodeGPU type: node: {"imports":35,"importBytes":413390,"outputBytes":372836,"outputFiles":"dist/human.node-gpu.js"}
2021-05-11 07:50:56 STATE: Build for: nodeWASM type: tfjs: {"imports":1,"importBytes":81,"outputBytes":1359,"outputFiles":"dist/tfjs.esm.js"}
2021-05-11 07:50:56 STATE: Build for: nodeWASM type: node: {"imports":35,"importBytes":413457,"outputBytes":372908,"outputFiles":"dist/human.node-wasm.js"}
2021-05-11 07:50:56 STATE: Build for: browserNoBundle type: tfjs: {"imports":1,"importBytes":2488,"outputBytes":1394,"outputFiles":"dist/tfjs.esm.js"}
2021-05-11 07:50:56 STATE: Build for: browserNoBundle type: esm: {"imports":35,"importBytes":413492,"outputBytes":229716,"outputFiles":"dist/human.esm-nobundle.js"}
2021-05-11 07:50:57 STATE: Build for: browserBundle type: tfjs: {"modules":1274,"moduleBytes":4114813,"imports":7,"importBytes":2488,"outputBytes":1111318,"outputFiles":"dist/tfjs.esm.js"}
2021-05-11 07:50:57 STATE: Build for: browserBundle type: iife: {"imports":35,"importBytes":1523416,"outputBytes":1337370,"outputFiles":"dist/human.js"}
2021-05-11 07:50:58 STATE: Build for: browserBundle type: esm: {"imports":35,"importBytes":1523416,"outputBytes":1337362,"outputFiles":"dist/human.esm.js"}
2021-05-11 07:50:58 INFO:  Generate types: ["src/human.ts"]
2021-05-11 07:51:03 INFO:  Update Change log: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-05-11 07:51:03 INFO:  Generate TypeDocs: ["src/human.ts"]

View File

@ -202,7 +202,7 @@ const config: Config = {
backend: 'webgl', // select tfjs backend to use, leave empty to use default backend
// can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl
modelBasePath: '../models/', // base path for all models
wasmPath: '../assets/', // path for wasm binariesm, only used for backend: wasm
wasmPath: '../node_modules/@tensorflow/tfjs-backend-wasm/dist//', // path for wasm binaries, only used for backend: wasm
debug: true, // print additional status messages to console
async: true, // execute enabled models in parallel
videoOptimized: true, // perform additional optimizations when input is video,

View File

@ -21,8 +21,8 @@ export function similarity(embedding1, embedding2, order = 2): number {
// general minkowski distance, euclidean distance is limited case where order is 2
const distance = embedding1
.map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared
.reduce((sum, now) => (sum + now), 0) // sum all distances
** (1 / order); // get root of
.reduce((sum, now) => (sum + now), 0) // sum all distances into total
** (1 / order); // get root of total distances
const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);
return res;
}

View File

@ -1,169 +1,120 @@
2021-05-05 10:05:29 INFO:  @vladmandic/human version 1.8.3
2021-05-05 10:05:29 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-05-05 10:05:29 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"]
2021-05-05 10:05:29 INFO:  test-node.js start
2021-05-05 10:05:30 STATE: test-node.js passed: create human
2021-05-05 10:05:30 INFO:  test-node.js human version: 1.8.3
2021-05-05 10:05:30 INFO:  test-node.js platform: linux x64 agent: NodeJS v16.0.0
2021-05-05 10:05:30 INFO:  test-node.js tfjs version: 3.6.0
2021-05-05 10:05:31 STATE: test-node.js passed: set backend: tensorflow
2021-05-05 10:05:31 STATE: test-node.js passed: load models
2021-05-05 10:05:31 STATE: test-node.js result: defined models: 12 loaded models: 6
2021-05-05 10:05:31 STATE: test-node.js passed: warmup: none default
2021-05-05 10:05:33 STATE: test-node.js passed: warmup: face default
2021-05-05 10:05:33 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.52,"class":"person"} {"score":0.96,"keypoints":5}
2021-05-05 10:05:33 DATA:  test-node.js result: performance: load: 440 total: 1540
2021-05-05 10:05:34 STATE: test-node.js passed: warmup: body default
2021-05-05 10:05:34 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":29.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.92,"keypoints":17}
2021-05-05 10:05:34 DATA:  test-node.js result: performance: load: 440 total: 1455
2021-05-05 10:05:34 INFO:  test-node.js test body variants
2021-05-05 10:05:35 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-05 10:05:37 STATE: test-node.js passed: detect: assets/human-sample-body.jpg posenet
2021-05-05 10:05:37 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.91,"keypoints":17}
2021-05-05 10:05:37 DATA:  test-node.js result: performance: load: 440 total: 1494
2021-05-05 10:05:38 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-05 10:05:39 STATE: test-node.js passed: detect: assets/human-sample-body.jpg blazepose
2021-05-05 10:05:39 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:05:39 DATA:  test-node.js result: performance: load: 440 total: 1483
2021-05-05 10:05:40 STATE: test-node.js passed: detect: random default
2021-05-05 10:05:40 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 {} {} {"score":1,"keypoints":39}
2021-05-05 10:05:40 DATA:  test-node.js result: performance: load: 440 total: 666
2021-05-05 10:05:40 INFO:  test-node.js test: first instance
2021-05-05 10:05:40 STATE: test-node.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-05 10:05:42 STATE: test-node.js passed: detect: assets/sample-me.jpg default
2021-05-05 10:05:42 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.7,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:05:42 DATA:  test-node.js result: performance: load: 440 total: 1531
2021-05-05 10:05:42 INFO:  test-node.js test: second instance
2021-05-05 10:05:42 STATE: test-node.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-05 10:05:43 STATE: test-node.js passed: detect: assets/sample-me.jpg default
2021-05-05 10:05:43 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.7,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:05:43 DATA:  test-node.js result: performance: load: 5 total: 1326
2021-05-05 10:05:43 INFO:  test-node.js test: concurrent
2021-05-05 10:05:43 STATE: test-node.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-05 10:05:43 STATE: test-node.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-05 10:05:44 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-05 10:05:46 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-05 10:05:51 STATE: test-node.js passed: detect: assets/human-sample-face.jpg default
2021-05-05 10:05:51 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.53,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:05:51 DATA:  test-node.js result: performance: load: 440 total: 5170
2021-05-05 10:05:51 STATE: test-node.js passed: detect: assets/human-sample-face.jpg default
2021-05-05 10:05:51 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.53,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:05:51 DATA:  test-node.js result: performance: load: 5 total: 5170
2021-05-05 10:05:51 STATE: test-node.js passed: detect: assets/human-sample-body.jpg default
2021-05-05 10:05:51 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:05:51 DATA:  test-node.js result: performance: load: 440 total: 5170
2021-05-05 10:05:51 STATE: test-node.js passed: detect: assets/human-sample-body.jpg default
2021-05-05 10:05:51 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:05:51 DATA:  test-node.js result: performance: load: 5 total: 5170
2021-05-05 10:05:51 INFO:  test-node.js test complete: 20244 ms
2021-05-05 10:05:51 INFO:  test-node-gpu.js start
2021-05-05 10:05:52 WARN:  test-node-gpu.js stderr: 2021-05-05 10:05:52.364035: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] 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-05-05 10:05:52 WARN:  test-node-gpu.js stderr: 2021-05-05 10:05:52.619918: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2021-05-05 10:05:52 WARN:  test-node-gpu.js stderr: 2021-05-05 10:05:52.619948: 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-05-05 10:05:52 STATE: test-node-gpu.js passed: create human
2021-05-05 10:05:52 INFO:  test-node-gpu.js human version: 1.8.3
2021-05-05 10:05:52 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v16.0.0
2021-05-05 10:05:52 INFO:  test-node-gpu.js tfjs version: 3.6.0
2021-05-05 10:05:53 STATE: test-node-gpu.js passed: set backend: tensorflow
2021-05-05 10:05:53 STATE: test-node-gpu.js passed: load models
2021-05-05 10:05:53 STATE: test-node-gpu.js result: defined models: 12 loaded models: 6
2021-05-05 10:05:53 STATE: test-node-gpu.js passed: warmup: none default
2021-05-05 10:05:54 STATE: test-node-gpu.js passed: warmup: face default
2021-05-05 10:05:54 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.52,"class":"person"} {"score":0.96,"keypoints":5}
2021-05-05 10:05:54 DATA:  test-node-gpu.js result: performance: load: 323 total: 1631
2021-05-05 10:05:56 STATE: test-node-gpu.js passed: warmup: body default
2021-05-05 10:05:56 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":29.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.92,"keypoints":17}
2021-05-05 10:05:56 DATA:  test-node-gpu.js result: performance: load: 323 total: 1407
2021-05-05 10:05:56 INFO:  test-node-gpu.js test body variants
2021-05-05 10:05:57 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-05 10:05:58 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg posenet
2021-05-05 10:05:58 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.91,"keypoints":17}
2021-05-05 10:05:58 DATA:  test-node-gpu.js result: performance: load: 323 total: 1712
2021-05-05 10:05:59 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-05 10:06:01 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg blazepose
2021-05-05 10:06:01 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:06:01 DATA:  test-node-gpu.js result: performance: load: 323 total: 1407
2021-05-05 10:06:02 STATE: test-node-gpu.js passed: detect: random default
2021-05-05 10:06:02 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 {} {} {"score":1,"keypoints":39}
2021-05-05 10:06:02 DATA:  test-node-gpu.js result: performance: load: 323 total: 626
2021-05-05 10:06:02 INFO:  test-node-gpu.js test: first instance
2021-05-05 10:06:02 STATE: test-node-gpu.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-05 10:06:03 STATE: test-node-gpu.js passed: detect: assets/sample-me.jpg default
2021-05-05 10:06:03 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.7,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:06:03 DATA:  test-node-gpu.js result: performance: load: 323 total: 1334
2021-05-05 10:06:03 INFO:  test-node-gpu.js test: second instance
2021-05-05 10:06:04 STATE: test-node-gpu.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-05 10:06:05 STATE: test-node-gpu.js passed: detect: assets/sample-me.jpg default
2021-05-05 10:06:05 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.7,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:06:05 DATA:  test-node-gpu.js result: performance: load: 2 total: 1247
2021-05-05 10:06:05 INFO:  test-node-gpu.js test: concurrent
2021-05-05 10:06:05 STATE: test-node-gpu.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-05 10:06:05 STATE: test-node-gpu.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-05 10:06:06 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-05 10:06:07 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-05 10:06:12 STATE: test-node-gpu.js passed: detect: assets/human-sample-face.jpg default
2021-05-05 10:06:12 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.53,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:06:12 DATA:  test-node-gpu.js result: performance: load: 323 total: 4919
2021-05-05 10:06:12 STATE: test-node-gpu.js passed: detect: assets/human-sample-face.jpg default
2021-05-05 10:06:12 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.53,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:06:12 DATA:  test-node-gpu.js result: performance: load: 2 total: 4919
2021-05-05 10:06:12 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg default
2021-05-05 10:06:12 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:06:12 DATA:  test-node-gpu.js result: performance: load: 323 total: 4919
2021-05-05 10:06:12 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg default
2021-05-05 10:06:12 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":1,"keypoints":39}
2021-05-05 10:06:12 DATA:  test-node-gpu.js result: performance: load: 2 total: 4919
2021-05-05 10:06:12 INFO:  test-node-gpu.js test complete: 19760 ms
2021-05-05 10:06:12 INFO:  test-node-wasm.js start
2021-05-05 10:06:12 STATE: test-node-wasm.js passed: model server: http://localhost:10030/models/
2021-05-05 10:06:12 STATE: test-node-wasm.js passed: create human
2021-05-05 10:06:12 INFO:  test-node-wasm.js human version: 1.8.3
2021-05-05 10:06:12 INFO:  test-node-wasm.js platform: linux x64 agent: NodeJS v16.0.0
2021-05-05 10:06:12 INFO:  test-node-wasm.js tfjs version: 3.6.0
2021-05-05 10:06:13 STATE: test-node-wasm.js passed: set backend: wasm
2021-05-05 10:06:13 STATE: test-node-wasm.js passed: load models
2021-05-05 10:06:13 STATE: test-node-wasm.js result: defined models: 12 loaded models: 5
2021-05-05 10:06:13 STATE: test-node-wasm.js passed: warmup: none default
2021-05-05 10:06:13 ERROR: test-node-wasm.js failed: warmup: face default
2021-05-05 10:06:13 ERROR: test-node-wasm.js failed: warmup: body default
2021-05-05 10:06:13 INFO:  test-node-wasm.js test body variants
2021-05-05 10:06:15 STATE: test-node-wasm.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-05 10:06:18 STATE: test-node-wasm.js passed: detect: assets/human-sample-body.jpg posenet
2021-05-05 10:06:18 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 {"confidence":1,"age":28.5,"gender":"female"} {} {"score":0.91,"keypoints":17}
2021-05-05 10:06:18 DATA:  test-node-wasm.js result: performance: load: 662 total: 3106
2021-05-05 10:06:20 STATE: test-node-wasm.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-05 10:06:23 STATE: test-node-wasm.js passed: detect: assets/human-sample-body.jpg blazepose
2021-05-05 10:06:23 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 {"confidence":1,"age":28.5,"gender":"female"} {} {"score":1,"keypoints":39}
2021-05-05 10:06:23 DATA:  test-node-wasm.js result: performance: load: 662 total: 2724
2021-05-05 10:06:25 STATE: test-node-wasm.js passed: detect: random default
2021-05-05 10:06:25 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 {} {} {"score":1,"keypoints":39}
2021-05-05 10:06:25 DATA:  test-node-wasm.js result: performance: load: 662 total: 1712
2021-05-05 10:06:25 INFO:  test-node-wasm.js test: first instance
2021-05-05 10:06:25 STATE: test-node-wasm.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-05 10:06:28 STATE: test-node-wasm.js passed: detect: assets/sample-me.jpg default
2021-05-05 10:06:28 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 0 {"confidence":1,"age":39.2,"gender":"male"} {} {"score":1,"keypoints":39}
2021-05-05 10:06:28 DATA:  test-node-wasm.js result: performance: load: 662 total: 2380
2021-05-05 10:06:28 INFO:  test-node-wasm.js test: second instance
2021-05-05 10:06:28 STATE: test-node-wasm.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-05 10:06:31 STATE: test-node-wasm.js passed: detect: assets/sample-me.jpg default
2021-05-05 10:06:31 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 0 {"confidence":1,"age":39.2,"gender":"male"} {} {"score":1,"keypoints":39}
2021-05-05 10:06:31 DATA:  test-node-wasm.js result: performance: load: 5 total: 2386
2021-05-05 10:06:31 INFO:  test-node-wasm.js test: concurrent
2021-05-05 10:06:31 STATE: test-node-wasm.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-05 10:06:31 STATE: test-node-wasm.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-05 10:06:33 STATE: test-node-wasm.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-05 10:06:35 STATE: test-node-wasm.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-05 10:06:44 STATE: test-node-wasm.js passed: detect: assets/human-sample-face.jpg default
2021-05-05 10:06:44 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 0 {"confidence":1,"age":23.6,"gender":"female"} {} {"score":1,"keypoints":39}
2021-05-05 10:06:44 DATA:  test-node-wasm.js result: performance: load: 662 total: 9069
2021-05-05 10:06:44 STATE: test-node-wasm.js passed: detect: assets/human-sample-face.jpg default
2021-05-05 10:06:44 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 0 {"confidence":1,"age":23.6,"gender":"female"} {} {"score":1,"keypoints":39}
2021-05-05 10:06:44 DATA:  test-node-wasm.js result: performance: load: 5 total: 9069
2021-05-05 10:06:44 STATE: test-node-wasm.js passed: detect: assets/human-sample-body.jpg default
2021-05-05 10:06:44 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 {"confidence":1,"age":28.5,"gender":"female"} {} {"score":1,"keypoints":39}
2021-05-05 10:06:44 DATA:  test-node-wasm.js result: performance: load: 662 total: 9069
2021-05-05 10:06:44 STATE: test-node-wasm.js passed: detect: assets/human-sample-body.jpg default
2021-05-05 10:06:44 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 0 {"confidence":1,"age":28.5,"gender":"female"} {} {"score":1,"keypoints":39}
2021-05-05 10:06:44 DATA:  test-node-wasm.js result: performance: load: 5 total: 9069
2021-05-05 10:06:44 INFO:  test-node-wasm.js test complete: 31310 ms
2021-05-05 10:06:44 INFO:  status: {"passed":68,"failed":2}
2021-05-11 07:51:30 INFO:  @vladmandic/human version 1.8.4
2021-05-11 07:51:30 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-05-11 07:51:30 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"]
2021-05-11 07:51:30 INFO:  test-node.js start
2021-05-11 07:51:30 STATE: test-node.js passed: create human
2021-05-11 07:51:30 INFO:  test-node.js human version: 1.8.4
2021-05-11 07:51:30 INFO:  test-node.js platform: linux x64 agent: NodeJS v16.0.0
2021-05-11 07:51:30 INFO:  test-node.js tfjs version: 3.6.0
2021-05-11 07:51:31 STATE: test-node.js passed: set backend: tensorflow
2021-05-11 07:51:31 STATE: test-node.js passed: load models
2021-05-11 07:51:31 STATE: test-node.js result: defined models: 12 loaded models: 6
2021-05-11 07:51:31 STATE: test-node.js passed: warmup: none default
2021-05-11 07:51:32 STATE: test-node.js passed: warmup: face default
2021-05-11 07:51:32 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.52,"class":"person"} {"score":0.96,"keypoints":5}
2021-05-11 07:51:32 DATA:  test-node.js result: performance: load: 326 total: 1396
2021-05-11 07:51:34 STATE: test-node.js passed: warmup: body default
2021-05-11 07:51:34 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":29.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.92,"keypoints":17}
2021-05-11 07:51:34 DATA:  test-node.js result: performance: load: 326 total: 1408
2021-05-11 07:51:34 INFO:  test-node.js test body variants
2021-05-11 07:51:35 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-11 07:51:36 STATE: test-node.js passed: detect: assets/human-sample-body.jpg posenet
2021-05-11 07:51:36 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.91,"keypoints":17}
2021-05-11 07:51:36 DATA:  test-node.js result: performance: load: 326 total: 1449
2021-05-11 07:51:37 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-11 07:51:39 STATE: test-node.js passed: detect: assets/human-sample-body.jpg blazepose
2021-05-11 07:51:39 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:51:39 DATA:  test-node.js result: performance: load: 326 total: 1424
2021-05-11 07:51:39 STATE: test-node.js passed: detect: random default
2021-05-11 07:51:39 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 {} {} {"score":1,"keypoints":39}
2021-05-11 07:51:39 DATA:  test-node.js result: performance: load: 326 total: 644
2021-05-11 07:51:39 INFO:  test-node.js test: first instance
2021-05-11 07:51:40 STATE: test-node.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-11 07:51:41 STATE: test-node.js passed: detect: assets/sample-me.jpg default
2021-05-11 07:51:41 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.7,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:51:41 DATA:  test-node.js result: performance: load: 326 total: 1403
2021-05-11 07:51:41 INFO:  test-node.js test: second instance
2021-05-11 07:51:41 STATE: test-node.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-11 07:51:43 STATE: test-node.js passed: detect: assets/sample-me.jpg default
2021-05-11 07:51:43 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.7,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:51:43 DATA:  test-node.js result: performance: load: 2 total: 1289
2021-05-11 07:51:43 INFO:  test-node.js test: concurrent
2021-05-11 07:51:43 STATE: test-node.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-11 07:51:43 STATE: test-node.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-11 07:51:44 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-11 07:51:45 STATE: test-node.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-11 07:51:50 STATE: test-node.js passed: detect: assets/human-sample-face.jpg default
2021-05-11 07:51:50 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.53,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:51:50 DATA:  test-node.js result: performance: load: 326 total: 5531
2021-05-11 07:51:50 STATE: test-node.js passed: detect: assets/human-sample-face.jpg default
2021-05-11 07:51:50 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.53,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:51:50 DATA:  test-node.js result: performance: load: 2 total: 5531
2021-05-11 07:51:50 STATE: test-node.js passed: detect: assets/human-sample-body.jpg default
2021-05-11 07:51:50 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:51:50 DATA:  test-node.js result: performance: load: 326 total: 5531
2021-05-11 07:51:50 STATE: test-node.js passed: detect: assets/human-sample-body.jpg default
2021-05-11 07:51:50 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:51:50 DATA:  test-node.js result: performance: load: 2 total: 5531
2021-05-11 07:51:50 INFO:  test-node.js test complete: 19958 ms
2021-05-11 07:51:50 INFO:  test-node-gpu.js start
2021-05-11 07:51:51 WARN:  test-node-gpu.js stderr: 2021-05-11 07:51:51.375373: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] 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-05-11 07:51:51 WARN:  test-node-gpu.js stderr: 2021-05-11 07:51:51.427921: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2021-05-11 07:51:51 WARN:  test-node-gpu.js stderr: 2021-05-11 07:51:51.428099: 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-05-11 07:51:51 STATE: test-node-gpu.js passed: create human
2021-05-11 07:51:51 INFO:  test-node-gpu.js human version: 1.8.4
2021-05-11 07:51:51 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v16.0.0
2021-05-11 07:51:51 INFO:  test-node-gpu.js tfjs version: 3.6.0
2021-05-11 07:51:51 STATE: test-node-gpu.js passed: set backend: tensorflow
2021-05-11 07:51:51 STATE: test-node-gpu.js passed: load models
2021-05-11 07:51:51 STATE: test-node-gpu.js result: defined models: 12 loaded models: 6
2021-05-11 07:51:51 STATE: test-node-gpu.js passed: warmup: none default
2021-05-11 07:51:53 STATE: test-node-gpu.js passed: warmup: face default
2021-05-11 07:51:53 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.52,"class":"person"} {"score":0.96,"keypoints":5}
2021-05-11 07:51:53 DATA:  test-node-gpu.js result: performance: load: 323 total: 1404
2021-05-11 07:51:54 STATE: test-node-gpu.js passed: warmup: body default
2021-05-11 07:51:54 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":29.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.92,"keypoints":17}
2021-05-11 07:51:54 DATA:  test-node-gpu.js result: performance: load: 323 total: 1454
2021-05-11 07:51:54 INFO:  test-node-gpu.js test body variants
2021-05-11 07:51:55 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-11 07:51:57 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg posenet
2021-05-11 07:51:57 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":0.91,"keypoints":17}
2021-05-11 07:51:57 DATA:  test-node-gpu.js result: performance: load: 323 total: 1449
2021-05-11 07:51:58 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-11 07:51:59 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg blazepose
2021-05-11 07:51:59 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:51:59 DATA:  test-node-gpu.js result: performance: load: 323 total: 1370
2021-05-11 07:52:00 STATE: test-node-gpu.js passed: detect: random default
2021-05-11 07:52:00 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 {} {} {"score":1,"keypoints":39}
2021-05-11 07:52:00 DATA:  test-node-gpu.js result: performance: load: 323 total: 671
2021-05-11 07:52:00 INFO:  test-node-gpu.js test: first instance
2021-05-11 07:52:00 STATE: test-node-gpu.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-11 07:52:02 STATE: test-node-gpu.js passed: detect: assets/sample-me.jpg default
2021-05-11 07:52:02 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.7,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:52:02 DATA:  test-node-gpu.js result: performance: load: 323 total: 1372
2021-05-11 07:52:02 INFO:  test-node-gpu.js test: second instance
2021-05-11 07:52:02 STATE: test-node-gpu.js passed: load image: assets/sample-me.jpg [1,700,700,3]
2021-05-11 07:52:03 STATE: test-node-gpu.js passed: detect: assets/sample-me.jpg default
2021-05-11 07:52:03 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 2 {"confidence":1,"age":39.2,"gender":"male"} {"score":0.7,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:52:03 DATA:  test-node-gpu.js result: performance: load: 6 total: 1446
2021-05-11 07:52:03 INFO:  test-node-gpu.js test: concurrent
2021-05-11 07:52:04 STATE: test-node-gpu.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-11 07:52:04 STATE: test-node-gpu.js passed: load image: assets/human-sample-face.jpg [1,256,256,3]
2021-05-11 07:52:05 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-11 07:52:06 STATE: test-node-gpu.js passed: load image: assets/human-sample-body.jpg [1,1200,1200,3]
2021-05-11 07:52:11 STATE: test-node-gpu.js passed: detect: assets/human-sample-face.jpg default
2021-05-11 07:52:11 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.53,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:52:11 DATA:  test-node-gpu.js result: performance: load: 323 total: 5056
2021-05-11 07:52:11 STATE: test-node-gpu.js passed: detect: assets/human-sample-face.jpg default
2021-05-11 07:52:11 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 6 object: 1 {"confidence":1,"age":23.6,"gender":"female"} {"score":0.53,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:52:11 DATA:  test-node-gpu.js result: performance: load: 6 total: 5056
2021-05-11 07:52:11 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg default
2021-05-11 07:52:11 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:52:11 DATA:  test-node-gpu.js result: performance: load: 323 total: 5056
2021-05-11 07:52:11 STATE: test-node-gpu.js passed: detect: assets/human-sample-body.jpg default
2021-05-11 07:52:11 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 3 {"confidence":1,"age":28.5,"gender":"female"} {"score":0.86,"class":"person"} {"score":1,"keypoints":39}
2021-05-11 07:52:11 DATA:  test-node-gpu.js result: performance: load: 6 total: 5056
2021-05-11 07:52:11 INFO:  test-node-gpu.js test complete: 19594 ms
2021-05-11 07:52:11 INFO:  test-node-wasm.js start
2021-05-11 07:52:11 ERROR: test-node-wasm.js failed: model server: request to http://localhost:10030/models/ failed, reason: connect ECONNREFUSED 127.0.0.1:10030
2021-05-11 07:52:11 ERROR: test-node-wasm.js aborting test
2021-05-11 07:52:11 INFO:  status: {"passed":46,"failed":1}