custom build tfjs from sources

pull/134/head
Vladimir Mandic 2021-06-06 19:00:34 -04:00
parent ffa5e38d25
commit 3eb4ae69fa
24 changed files with 240719 additions and 5508 deletions

View File

@ -4,3 +4,5 @@ samples
typedoc
test
wiki
dist/tfjs.esm.js
dist/tfjs.esm.js.map

View File

@ -9,7 +9,7 @@ Repository: **<git+https://github.com/vladmandic/human.git>**
## Changelog
### **HEAD -> main** 2021/06/05 mandic00@live.com
### **update wasm to tfjs 3.7.0** 2021/06/06 mandic00@live.com
- modularize build platform
- enable body segmentation and background replacement in demo

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

80253
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

80279
dist/human.js vendored

File diff suppressed because one or more lines are too long

72684
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

@ -41,7 +41,7 @@ const config = {
},
buildLog: 'build.log',
changelog: '../CHANGELOG.md',
lintLocations: ['server/', 'demo/', 'src/', 'test/'],
lintLocations: ['server/', 'src/', 'tfjs/', 'test/', 'demo/'],
};
const targets = {
@ -49,7 +49,7 @@ const targets = {
tfjs: {
platform: 'node',
format: 'cjs',
entryPoints: ['src/tfjs/tf-node.ts'],
entryPoints: ['tfjs/tf-node.ts'],
outfile: 'dist/tfjs.esm.js',
external: ['@tensorflow'],
sourcemap: false,
@ -73,7 +73,7 @@ const targets = {
tfjs: {
platform: 'node',
format: 'cjs',
entryPoints: ['src/tfjs/tf-node-gpu.ts'],
entryPoints: ['tfjs/tf-node-gpu.ts'],
outfile: 'dist/tfjs.esm.js',
external: ['@tensorflow'],
sourcemap: false,
@ -97,7 +97,7 @@ const targets = {
tfjs: {
platform: 'node',
format: 'cjs',
entryPoints: ['src/tfjs/tf-node-wasm.ts'],
entryPoints: ['tfjs/tf-node-wasm.ts'],
outfile: 'dist/tfjs.esm.js',
external: ['@tensorflow'],
sourcemap: false,
@ -122,7 +122,7 @@ const targets = {
tfjs: {
platform: 'browser',
format: 'esm',
entryPoints: ['src/tfjs/tf-browser.ts'],
entryPoints: ['tfjs/tf-browser.ts'],
outfile: 'dist/tfjs.esm.js',
external: ['fs', 'buffer', 'util', 'os', '@tensorflow'],
sourcemap: true,
@ -140,7 +140,7 @@ const targets = {
tfjs: {
platform: 'browser',
format: 'esm',
entryPoints: ['src/tfjs/tf-browser.ts'],
entryPoints: ['tfjs/tf-browser.ts'],
outfile: 'dist/tfjs.esm.js',
external: ['fs', 'buffer', 'util', 'os'],
treeShaking: 'ignore-annotations',

View File

@ -1,21 +1,21 @@
2021-06-06 12:54:07 INFO:  @vladmandic/human version 2.0.0
2021-06-06 12:54:07 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-06-06 12:54:07 INFO:  Toolchain: tfjs: 3.7.0 esbuild 0.12.6; typescript 4.2.4; typedoc: 0.20.36 eslint: 7.27.0
2021-06-06 12:54:07 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-06-06 12:54:07 STATE: target: node type: tfjs: {"imports":1,"importBytes":102,"outputBytes":1307,"outputFiles":"dist/tfjs.esm.js"}
2021-06-06 12:54:07 STATE: target: node type: node: {"imports":41,"importBytes":430493,"outputBytes":376423,"outputFiles":"dist/human.node.js"}
2021-06-06 12:54:07 STATE: target: nodeGPU type: tfjs: {"imports":1,"importBytes":110,"outputBytes":1315,"outputFiles":"dist/tfjs.esm.js"}
2021-06-06 12:54:07 STATE: target: nodeGPU type: node: {"imports":41,"importBytes":430501,"outputBytes":376427,"outputFiles":"dist/human.node-gpu.js"}
2021-06-06 12:54:07 STATE: target: nodeWASM type: tfjs: {"imports":1,"importBytes":149,"outputBytes":1382,"outputFiles":"dist/tfjs.esm.js"}
2021-06-06 12:54:07 STATE: target: nodeWASM type: node: {"imports":41,"importBytes":430568,"outputBytes":376499,"outputFiles":"dist/human.node-wasm.js"}
2021-06-06 12:54:07 STATE: target: browserNoBundle type: tfjs: {"imports":1,"importBytes":2888,"outputBytes":1409,"outputFiles":"dist/tfjs.esm.js"}
2021-06-06 12:54:07 STATE: target: browserNoBundle type: esm: {"imports":41,"importBytes":430595,"outputBytes":247943,"outputFiles":"dist/human.esm-nobundle.js"}
2021-06-06 12:54:08 STATE: target: browserBundle type: tfjs: {"modules":1299,"moduleBytes":4230827,"imports":7,"importBytes":2888,"outputBytes":1140335,"outputFiles":"dist/tfjs.esm.js"}
2021-06-06 12:54:08 STATE: target: browserBundle type: iife: {"imports":41,"importBytes":1569521,"outputBytes":1384133,"outputFiles":"dist/human.js"}
2021-06-06 12:54:09 STATE: target: browserBundle type: esm: {"imports":41,"importBytes":1569521,"outputBytes":1384125,"outputFiles":"dist/human.esm.js"}
2021-06-06 12:54:09 INFO:  Running Linter: ["server/","demo/","src/","test/"]
2021-06-06 12:54:36 INFO:  Linter complete: files: 71 errors: 0 warnings: 0
2021-06-06 12:54:36 INFO:  Generate Typings: ["src/human.ts"] outDir: ["types"]
2021-06-06 12:54:54 INFO:  Generate ChangeLog: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-06-06 12:54:54 INFO:  Generate TypeDocs: ["src/human.ts"] outDir: ["typedoc"]
2021-06-06 12:55:09 INFO:  Documentation generated at /home/vlado/dev/human/typedoc 1
2021-06-06 18:44:28 INFO:  @vladmandic/human version 2.0.0
2021-06-06 18:44:28 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-06-06 18:44:28 INFO:  Toolchain: tfjs: 3.7.0 esbuild 0.12.6; typescript 4.2.4; typedoc: 0.20.36 eslint: 7.27.0
2021-06-06 18:44:28 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true}
2021-06-06 18:44:28 STATE: target: node type: tfjs: {"imports":1,"importBytes":102,"outputBytes":1303,"outputFiles":"dist/tfjs.esm.js"}
2021-06-06 18:44:28 STATE: target: node type: node: {"imports":41,"importBytes":430506,"outputBytes":376423,"outputFiles":"dist/human.node.js"}
2021-06-06 18:44:28 STATE: target: nodeGPU type: tfjs: {"imports":1,"importBytes":110,"outputBytes":1311,"outputFiles":"dist/tfjs.esm.js"}
2021-06-06 18:44:29 STATE: target: nodeGPU type: node: {"imports":41,"importBytes":430514,"outputBytes":376427,"outputFiles":"dist/human.node-gpu.js"}
2021-06-06 18:44:29 STATE: target: nodeWASM type: tfjs: {"imports":1,"importBytes":149,"outputBytes":1378,"outputFiles":"dist/tfjs.esm.js"}
2021-06-06 18:44:29 STATE: target: nodeWASM type: node: {"imports":41,"importBytes":430581,"outputBytes":376499,"outputFiles":"dist/human.node-wasm.js"}
2021-06-06 18:44:29 STATE: target: browserNoBundle type: tfjs: {"imports":1,"importBytes":2938,"outputBytes":1214,"outputFiles":"dist/tfjs.esm.js"}
2021-06-06 18:44:29 STATE: target: browserNoBundle type: esm: {"imports":41,"importBytes":430417,"outputBytes":247743,"outputFiles":"dist/human.esm-nobundle.js"}
2021-06-06 18:44:29 STATE: target: browserBundle type: tfjs: {"modules":1684,"moduleBytes":5720341,"imports":7,"importBytes":2938,"outputBytes":1342379,"outputFiles":"dist/tfjs.esm.js"}
2021-06-06 18:44:29 STATE: target: browserBundle type: iife: {"imports":41,"importBytes":1771582,"outputBytes":1586144,"outputFiles":"dist/human.js"}
2021-06-06 18:44:30 STATE: target: browserBundle type: esm: {"imports":41,"importBytes":1771582,"outputBytes":1586136,"outputFiles":"dist/human.esm.js"}
2021-06-06 18:44:30 INFO:  Running Linter: ["server/","demo/","src/","test/"]
2021-06-06 18:44:54 INFO:  Linter complete: files: 67 errors: 0 warnings: 0
2021-06-06 18:44:54 INFO:  Generate Typings: ["src/human.ts"] outDir: ["types"]
2021-06-06 18:45:10 INFO:  Generate ChangeLog: ["/home/vlado/dev/human/CHANGELOG.md"]
2021-06-06 18:45:10 INFO:  Generate TypeDocs: ["src/human.ts"] outDir: ["typedoc"]
2021-06-06 18:45:23 INFO:  Documentation generated at /home/vlado/dev/human/typedoc 1

View File

@ -6,17 +6,19 @@ let td = null;
const version = TypeDoc.Application.VERSION;
async function typedoc(entryPoint) {
async function typedoc(entryPoints) {
if (!td) {
td = new TypeDoc.Application();
td.options.addReader(new TypeDoc.TSConfigReader());
td.bootstrap({ entryPoints: [entryPoint], theme: 'wiki/theme/' });
td.bootstrap({ entryPoints });
td.logger.warn = log.warn;
td.logger.error = log.error;
td.logger.verbose = () => { /***/ };
// td.logger.verbose = log.data; // remove extra logging
td.logger.log = log.info;
// td.converter = converter;
}
log.info('Generate TypeDocs:', entryPoint, 'outDir:', [tsconfig.typedocOptions.out]);
log.info('Generate TypeDocs:', entryPoints, 'outDir:', [tsconfig.typedocOptions.out]);
const project = td.convert();
if (!project) log.warn('TypeDoc: convert returned empty project');
if (td.logger.hasErrors() || td.logger.hasWarnings()) log.warn('TypeDoc:', 'errors:', td.logger.errorCount, 'warnings:', td.logger.warningCount);
@ -24,5 +26,10 @@ async function typedoc(entryPoint) {
if (result) log.warn('TypeDoc:', result);
}
exports.run = typedoc;
exports.version = version;
if (require.main === module) {
log.header();
typedoc(['src/human.ts']); // generate typedoc
} else {
exports.run = typedoc;
exports.version = version;
}

View File

@ -44,10 +44,14 @@ export type Input = Tensor | typeof Image | ImageData | ImageBitmap | HTMLImageE
*/
export type Error = { error: string };
/** Instance of TensorFlow/JS */
/** Instance of TensorFlow/JS
* @external
*/
export type TensorFlow = typeof tf;
/** Generic Model object type, holds instance of individual models */
/** Generic Model object type
* holds instance of individual models
*/
type Model = unknown;
/**

View File

@ -4,10 +4,12 @@
/**
* TensorFlow Tensor type
* @external
*/
export { Tensor } from '@tensorflow/tfjs-core/dist/index';
/**
* TensorFlow GraphModel type
* @external
*/
export { GraphModel } from '@tensorflow/tfjs-converter/dist/index';

View File

@ -1,120 +1,120 @@
2021-06-06 12:57:08 INFO:  @vladmandic/human version 2.0.0
2021-06-06 12:57:08 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-06-06 12:57:08 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"]
2021-06-06 12:57:08 INFO:  test-node.js start
2021-06-06 12:57:10 STATE: test-node.js passed: create human
2021-06-06 12:57:10 INFO:  test-node.js human version: 2.0.0
2021-06-06 12:57:10 INFO:  test-node.js platform: linux x64 agent: NodeJS v16.0.0
2021-06-06 12:57:10 INFO:  test-node.js tfjs version: 3.7.0
2021-06-06 12:57:10 STATE: test-node.js passed: set backend: tensorflow
2021-06-06 12:57:10 STATE: test-node.js passed: load models
2021-06-06 12:57:10 STATE: test-node.js result: defined models: 14 loaded models: 7
2021-06-06 12:57:10 STATE: test-node.js passed: warmup: none default
2021-06-06 12:57:12 STATE: test-node.js passed: warmup: face default
2021-06-06 12:57:12 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.73,"keypoints":5}
2021-06-06 12:57:12 DATA:  test-node.js result: performance: load: 375 total: 1784
2021-06-06 12:57:14 STATE: test-node.js passed: warmup: body default
2021-06-06 12:57:14 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 12:57:14 DATA:  test-node.js result: performance: load: 375 total: 1614
2021-06-06 12:57:14 INFO:  test-node.js test body variants
2021-06-06 12:57:15 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 12:57:16 STATE: test-node.js passed: detect: samples/ai-body.jpg posenet
2021-06-06 12:57:16 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.96,"keypoints":16}
2021-06-06 12:57:16 DATA:  test-node.js result: performance: load: 375 total: 1070
2021-06-06 12:57:17 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 12:57:17 STATE: test-node.js passed: detect: samples/ai-body.jpg movenet
2021-06-06 12:57:17 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 12:57:17 DATA:  test-node.js result: performance: load: 375 total: 272
2021-06-06 12:57:18 STATE: test-node.js passed: detect: random default
2021-06-06 12:57:18 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 1 person: 0 {} {"score":0.72,"class":"person"} {"score":0,"keypoints":0}
2021-06-06 12:57:18 DATA:  test-node.js result: performance: load: 375 total: 226
2021-06-06 12:57:18 INFO:  test-node.js test: first instance
2021-06-06 12:57:18 STATE: test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-06-06 12:57:18 STATE: test-node.js passed: detect: samples/ai-upper.jpg default
2021-06-06 12:57:18 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 1 person: 0 {} {"score":0.72,"class":"person"} {"score":0.78,"keypoints":7}
2021-06-06 12:57:18 DATA:  test-node.js result: performance: load: 375 total: 206
2021-06-06 12:57:18 INFO:  test-node.js test: second instance
2021-06-06 12:57:19 STATE: test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-06-06 12:57:20 STATE: test-node.js passed: detect: samples/ai-upper.jpg default
2021-06-06 12:57:20 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.78,"keypoints":7}
2021-06-06 12:57:20 DATA:  test-node.js result: performance: load: 3 total: 1254
2021-06-06 12:57:20 INFO:  test-node.js test: concurrent
2021-06-06 12:57:20 STATE: test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-06-06 12:57:20 STATE: test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-06-06 12:57:21 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 12:57:22 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 12:57:31 STATE: test-node.js passed: detect: samples/ai-face.jpg default
2021-06-06 12:57:31 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.73,"keypoints":17}
2021-06-06 12:57:31 DATA:  test-node.js result: performance: load: 375 total: 8584
2021-06-06 12:57:31 STATE: test-node.js passed: detect: samples/ai-face.jpg default
2021-06-06 12:57:31 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.73,"keypoints":17}
2021-06-06 12:57:31 DATA:  test-node.js result: performance: load: 3 total: 8584
2021-06-06 12:57:31 STATE: test-node.js passed: detect: samples/ai-body.jpg default
2021-06-06 12:57:31 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 12:57:31 DATA:  test-node.js result: performance: load: 375 total: 8584
2021-06-06 12:57:31 STATE: test-node.js passed: detect: samples/ai-body.jpg default
2021-06-06 12:57:31 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 12:57:31 DATA:  test-node.js result: performance: load: 3 total: 8584
2021-06-06 12:57:31 INFO:  test-node.js test complete: 20503 ms
2021-06-06 12:57:31 INFO:  test-node-gpu.js start
2021-06-06 12:57:32 WARN:  test-node-gpu.js stderr: 2021-06-06 12:57:32.241541: 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-06-06 12:57:32 WARN:  test-node-gpu.js stderr: 2021-06-06 12:57:32.462321: 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-06-06 12:57:32 WARN:  test-node-gpu.js stderr: 2021-06-06 12:57:32.462355: 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-06-06 12:57:32 STATE: test-node-gpu.js passed: create human
2021-06-06 12:57:32 INFO:  test-node-gpu.js human version: 2.0.0
2021-06-06 12:57:32 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v16.0.0
2021-06-06 12:57:32 INFO:  test-node-gpu.js tfjs version: 3.7.0
2021-06-06 12:57:33 STATE: test-node-gpu.js passed: set backend: tensorflow
2021-06-06 12:57:33 STATE: test-node-gpu.js passed: load models
2021-06-06 12:57:33 STATE: test-node-gpu.js result: defined models: 14 loaded models: 7
2021-06-06 12:57:33 STATE: test-node-gpu.js passed: warmup: none default
2021-06-06 12:57:35 STATE: test-node-gpu.js passed: warmup: face default
2021-06-06 12:57:35 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.73,"keypoints":5}
2021-06-06 12:57:35 DATA:  test-node-gpu.js result: performance: load: 451 total: 2121
2021-06-06 12:57:37 STATE: test-node-gpu.js passed: warmup: body default
2021-06-06 12:57:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 12:57:37 DATA:  test-node-gpu.js result: performance: load: 451 total: 2013
2021-06-06 12:57:37 INFO:  test-node-gpu.js test body variants
2021-06-06 12:57:38 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 12:57:39 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg posenet
2021-06-06 12:57:39 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.96,"keypoints":16}
2021-06-06 12:57:39 DATA:  test-node-gpu.js result: performance: load: 451 total: 1224
2021-06-06 12:57:40 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 12:57:40 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg movenet
2021-06-06 12:57:40 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 12:57:40 DATA:  test-node-gpu.js result: performance: load: 451 total: 268
2021-06-06 12:57:41 STATE: test-node-gpu.js passed: detect: random default
2021-06-06 12:57:41 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0}
2021-06-06 12:57:41 DATA:  test-node-gpu.js result: performance: load: 451 total: 869
2021-06-06 12:57:41 INFO:  test-node-gpu.js test: first instance
2021-06-06 12:57:41 STATE: test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-06-06 12:57:43 STATE: test-node-gpu.js passed: detect: samples/ai-upper.jpg default
2021-06-06 12:57:43 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.78,"keypoints":7}
2021-06-06 12:57:43 DATA:  test-node-gpu.js result: performance: load: 451 total: 1211
2021-06-06 12:57:43 INFO:  test-node-gpu.js test: second instance
2021-06-06 12:57:43 STATE: test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-06-06 12:57:44 STATE: test-node-gpu.js passed: detect: samples/ai-upper.jpg default
2021-06-06 12:57:44 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.78,"keypoints":7}
2021-06-06 12:57:44 DATA:  test-node-gpu.js result: performance: load: 2 total: 1288
2021-06-06 12:57:44 INFO:  test-node-gpu.js test: concurrent
2021-06-06 12:57:44 STATE: test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-06-06 12:57:44 STATE: test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-06-06 12:57:45 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 12:57:46 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 12:57:52 STATE: test-node-gpu.js passed: detect: samples/ai-face.jpg default
2021-06-06 12:57:52 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.73,"keypoints":17}
2021-06-06 12:57:52 DATA:  test-node-gpu.js result: performance: load: 451 total: 5561
2021-06-06 12:57:52 STATE: test-node-gpu.js passed: detect: samples/ai-face.jpg default
2021-06-06 12:57:52 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.73,"keypoints":17}
2021-06-06 12:57:52 DATA:  test-node-gpu.js result: performance: load: 2 total: 5561
2021-06-06 12:57:52 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg default
2021-06-06 12:57:52 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 12:57:52 DATA:  test-node-gpu.js result: performance: load: 451 total: 5561
2021-06-06 12:57:52 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg default
2021-06-06 12:57:52 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 12:57:52 DATA:  test-node-gpu.js result: performance: load: 2 total: 5561
2021-06-06 12:57:52 INFO:  test-node-gpu.js test complete: 19813 ms
2021-06-06 12:57:52 INFO:  test-node-wasm.js start
2021-06-06 12:57:52 ERROR: test-node-wasm.js failed: model server: request to http://localhost:10030/models/ failed, reason: connect ECONNREFUSED 127.0.0.1:10030
2021-06-06 12:57:52 ERROR: test-node-wasm.js aborting test
2021-06-06 12:57:52 INFO:  status: {"passed":46,"failed":1}
2021-06-06 18:58:06 INFO:  @vladmandic/human version 2.0.0
2021-06-06 18:58:06 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-06-06 18:58:06 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"]
2021-06-06 18:58:06 INFO:  test-node.js start
2021-06-06 18:58:07 STATE: test-node.js passed: create human
2021-06-06 18:58:07 INFO:  test-node.js human version: 2.0.0
2021-06-06 18:58:07 INFO:  test-node.js platform: linux x64 agent: NodeJS v16.0.0
2021-06-06 18:58:07 INFO:  test-node.js tfjs version: 3.7.0
2021-06-06 18:58:07 STATE: test-node.js passed: set backend: tensorflow
2021-06-06 18:58:07 STATE: test-node.js passed: load models
2021-06-06 18:58:07 STATE: test-node.js result: defined models: 14 loaded models: 7
2021-06-06 18:58:07 STATE: test-node.js passed: warmup: none default
2021-06-06 18:58:09 STATE: test-node.js passed: warmup: face default
2021-06-06 18:58:09 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.73,"keypoints":5}
2021-06-06 18:58:09 DATA:  test-node.js result: performance: load: 298 total: 1226
2021-06-06 18:58:10 STATE: test-node.js passed: warmup: body default
2021-06-06 18:58:10 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 18:58:10 DATA:  test-node.js result: performance: load: 298 total: 1153
2021-06-06 18:58:10 INFO:  test-node.js test body variants
2021-06-06 18:58:11 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 18:58:11 STATE: test-node.js passed: detect: samples/ai-body.jpg posenet
2021-06-06 18:58:11 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.96,"keypoints":16}
2021-06-06 18:58:11 DATA:  test-node.js result: performance: load: 298 total: 789
2021-06-06 18:58:12 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 18:58:12 STATE: test-node.js passed: detect: samples/ai-body.jpg movenet
2021-06-06 18:58:12 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 18:58:12 DATA:  test-node.js result: performance: load: 298 total: 229
2021-06-06 18:58:13 STATE: test-node.js passed: detect: random default
2021-06-06 18:58:13 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 0 person: 0 {} {} {"score":0,"keypoints":0}
2021-06-06 18:58:13 DATA:  test-node.js result: performance: load: 298 total: 669
2021-06-06 18:58:13 INFO:  test-node.js test: first instance
2021-06-06 18:58:14 STATE: test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-06-06 18:58:15 STATE: test-node.js passed: detect: samples/ai-upper.jpg default
2021-06-06 18:58:15 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.78,"keypoints":7}
2021-06-06 18:58:15 DATA:  test-node.js result: performance: load: 298 total: 977
2021-06-06 18:58:15 INFO:  test-node.js test: second instance
2021-06-06 18:58:15 STATE: test-node.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-06-06 18:58:16 STATE: test-node.js passed: detect: samples/ai-upper.jpg default
2021-06-06 18:58:16 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.78,"keypoints":7}
2021-06-06 18:58:16 DATA:  test-node.js result: performance: load: 2 total: 923
2021-06-06 18:58:16 INFO:  test-node.js test: concurrent
2021-06-06 18:58:16 STATE: test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-06-06 18:58:16 STATE: test-node.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-06-06 18:58:17 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 18:58:18 STATE: test-node.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 18:58:22 STATE: test-node.js passed: detect: samples/ai-face.jpg default
2021-06-06 18:58:22 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.73,"keypoints":17}
2021-06-06 18:58:22 DATA:  test-node.js result: performance: load: 298 total: 4147
2021-06-06 18:58:22 STATE: test-node.js passed: detect: samples/ai-face.jpg default
2021-06-06 18:58:22 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.73,"keypoints":17}
2021-06-06 18:58:22 DATA:  test-node.js result: performance: load: 2 total: 4147
2021-06-06 18:58:22 STATE: test-node.js passed: detect: samples/ai-body.jpg default
2021-06-06 18:58:22 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 18:58:22 DATA:  test-node.js result: performance: load: 298 total: 4147
2021-06-06 18:58:22 STATE: test-node.js passed: detect: samples/ai-body.jpg default
2021-06-06 18:58:22 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 18:58:22 DATA:  test-node.js result: performance: load: 2 total: 4147
2021-06-06 18:58:22 INFO:  test-node.js test complete: 14795 ms
2021-06-06 18:58:22 INFO:  test-node-gpu.js start
2021-06-06 18:58:22 WARN:  test-node-gpu.js stderr: 2021-06-06 18:58:22.766663: 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-06-06 18:58:22 WARN:  test-node-gpu.js stderr: 2021-06-06 18:58:22.810895: 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-06-06 18:58:22 WARN:  test-node-gpu.js stderr: 2021-06-06 18:58:22.810998: 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-06-06 18:58:22 STATE: test-node-gpu.js passed: create human
2021-06-06 18:58:22 INFO:  test-node-gpu.js human version: 2.0.0
2021-06-06 18:58:22 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v16.0.0
2021-06-06 18:58:22 INFO:  test-node-gpu.js tfjs version: 3.7.0
2021-06-06 18:58:23 STATE: test-node-gpu.js passed: set backend: tensorflow
2021-06-06 18:58:23 STATE: test-node-gpu.js passed: load models
2021-06-06 18:58:23 STATE: test-node-gpu.js result: defined models: 14 loaded models: 7
2021-06-06 18:58:23 STATE: test-node-gpu.js passed: warmup: none default
2021-06-06 18:58:24 STATE: test-node-gpu.js passed: warmup: face default
2021-06-06 18:58:24 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.73,"keypoints":5}
2021-06-06 18:58:24 DATA:  test-node-gpu.js result: performance: load: 290 total: 1188
2021-06-06 18:58:25 STATE: test-node-gpu.js passed: warmup: body default
2021-06-06 18:58:25 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 18:58:25 DATA:  test-node-gpu.js result: performance: load: 290 total: 1158
2021-06-06 18:58:25 INFO:  test-node-gpu.js test body variants
2021-06-06 18:58:26 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 18:58:27 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg posenet
2021-06-06 18:58:27 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.96,"keypoints":16}
2021-06-06 18:58:27 DATA:  test-node-gpu.js result: performance: load: 290 total: 797
2021-06-06 18:58:28 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 18:58:28 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg movenet
2021-06-06 18:58:28 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 18:58:28 DATA:  test-node-gpu.js result: performance: load: 290 total: 209
2021-06-06 18:58:28 STATE: test-node-gpu.js passed: detect: random default
2021-06-06 18:58:28 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 0 object: 1 person: 0 {} {"score":0.72,"class":"person"} {"score":0,"keypoints":0}
2021-06-06 18:58:28 DATA:  test-node-gpu.js result: performance: load: 290 total: 186
2021-06-06 18:58:28 INFO:  test-node-gpu.js test: first instance
2021-06-06 18:58:28 STATE: test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-06-06 18:58:29 STATE: test-node-gpu.js passed: detect: samples/ai-upper.jpg default
2021-06-06 18:58:29 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 1 person: 0 {} {"score":0.72,"class":"person"} {"score":0.78,"keypoints":7}
2021-06-06 18:58:29 DATA:  test-node-gpu.js result: performance: load: 290 total: 127
2021-06-06 18:58:29 INFO:  test-node-gpu.js test: second instance
2021-06-06 18:58:29 STATE: test-node-gpu.js passed: load image: samples/ai-upper.jpg [1,720,688,3]
2021-06-06 18:58:30 STATE: test-node-gpu.js passed: detect: samples/ai-upper.jpg default
2021-06-06 18:58:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.78,"keypoints":7}
2021-06-06 18:58:30 DATA:  test-node-gpu.js result: performance: load: 2 total: 1032
2021-06-06 18:58:30 INFO:  test-node-gpu.js test: concurrent
2021-06-06 18:58:30 STATE: test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-06-06 18:58:30 STATE: test-node-gpu.js passed: load image: samples/ai-face.jpg [1,256,256,3]
2021-06-06 18:58:31 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 18:58:32 STATE: test-node-gpu.js passed: load image: samples/ai-body.jpg [1,1200,1200,3]
2021-06-06 18:58:36 STATE: test-node-gpu.js passed: detect: samples/ai-face.jpg default
2021-06-06 18:58:36 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.73,"keypoints":17}
2021-06-06 18:58:36 DATA:  test-node-gpu.js result: performance: load: 290 total: 4052
2021-06-06 18:58:36 STATE: test-node-gpu.js passed: detect: samples/ai-face.jpg default
2021-06-06 18:58:36 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 4 object: 1 person: 1 {"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.73,"keypoints":17}
2021-06-06 18:58:36 DATA:  test-node-gpu.js result: performance: load: 2 total: 4052
2021-06-06 18:58:36 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg default
2021-06-06 18:58:36 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 18:58:36 DATA:  test-node-gpu.js result: performance: load: 290 total: 4052
2021-06-06 18:58:36 STATE: test-node-gpu.js passed: detect: samples/ai-body.jpg default
2021-06-06 18:58:36 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.93,"keypoints":17}
2021-06-06 18:58:36 DATA:  test-node-gpu.js result: performance: load: 2 total: 4052
2021-06-06 18:58:36 INFO:  test-node-gpu.js test complete: 13452 ms
2021-06-06 18:58:36 INFO:  test-node-wasm.js start
2021-06-06 18:58:36 ERROR: test-node-wasm.js failed: model server: request to http://localhost:10030/models/ failed, reason: connect ECONNREFUSED 127.0.0.1:10030
2021-06-06 18:58:36 ERROR: test-node-wasm.js aborting test
2021-06-06 18:58:36 INFO:  status: {"passed":46,"failed":1}

View File

@ -1,10 +1,12 @@
/**
* Creates tfjs bundle used by Human browser build target
* @external
*/
// import from dist
// modules: 1299, moduleBytes: 4230827, imports: 7, importBytes: 2478, outputBytes: 2357435
// get versions of all packages
/*
import * as packageBundle from '@tensorflow/tfjs/package.json';
import * as packageCore from '@tensorflow/tfjs-core/package.json';
import * as packageData from '@tensorflow/tfjs-data/package.json';
@ -23,19 +25,19 @@ export * as data from '@tensorflow/tfjs-data/dist/index.js';
export * from '@tensorflow/tfjs-backend-cpu/dist/index.js';
export * from '@tensorflow/tfjs-backend-webgl/dist/index.js';
export * from '@tensorflow/tfjs-backend-wasm/dist/index.js';
*/
// import from src
// modules: 1681, moduleBytes: 5711239, imports: 7, importBytes: 2701, outputBytes: 2107830
// get versions of all packages
/*
import * as packageBundle from '@tensorflow/tfjs/package.json';
import * as packageCore from '@tensorflow/tfjs-core/package.json';
import * as packageData from '@tensorflow/tfjs-data/package.json';
import * as packageLayers from '@tensorflow/tfjs-layers/package.json';
import * as packageConverter from '@tensorflow/tfjs-converter/package.json';
import { version_cpu } from '@tensorflow/tfjs-backend-cpu/src/index';
import { version_webgl } from '@tensorflow/tfjs-backend-webgl/src/index';
import { version_wasm } from '@tensorflow/tfjs-backend-wasm/src/index';
import { version as tfjsVersion } from '@tensorflow/tfjs/package.json';
import { version as tfjsCoreVersion } from '@tensorflow/tfjs-core/package.json';
import { version as tfjsDataVersion } from '@tensorflow/tfjs-data/package.json';
import { version as tfjsLayersVersion } from '@tensorflow/tfjs-layers/package.json';
import { version as tfjsConverterVersion } from '@tensorflow/tfjs-converter/package.json';
import { version as tfjsBackendCPUVersion } from '@tensorflow/tfjs-backend-cpu/package.json';
import { version as tfjsBackendWebGLVersion } from '@tensorflow/tfjs-backend-webgl/package.json';
import { version as tfjsBackendWASMVersion } from '@tensorflow/tfjs-backend-wasm/package.json';
// export all
export * from '@tensorflow/tfjs-core/src/index';
@ -45,17 +47,18 @@ export * as data from '@tensorflow/tfjs-data/src/index';
export * from '@tensorflow/tfjs-backend-cpu/src/index';
export * from '@tensorflow/tfjs-backend-webgl/src/index';
export * from '@tensorflow/tfjs-backend-wasm/src/index';
/*
*/
// export versions
export const version = {
tfjs: packageBundle?.version || undefined,
'tfjs-core': packageCore?.version || undefined,
'tfjs-data': packageData?.version || undefined,
'tfjs-layers': packageLayers?.version || undefined,
'tfjs-converter': packageConverter?.version || undefined,
'tfjs-backend-cpu': version_cpu || undefined,
'tfjs-backend-webgl': version_webgl || undefined,
'tfjs-backend-wasm': version_wasm || undefined,
tfjs: tfjsVersion,
'tfjs-core': tfjsCoreVersion,
'tfjs-data': tfjsDataVersion,
'tfjs-layers': tfjsLayersVersion,
'tfjs-converter': tfjsConverterVersion,
'tfjs-backend-cpu': tfjsBackendCPUVersion,
'tfjs-backend-webgl': tfjsBackendWebGLVersion,
'tfjs-backend-wasm': tfjsBackendWASMVersion,
};
// export const version = {};

View File

@ -37,8 +37,8 @@
"allowUnreachableCode": false
},
"formatCodeOptions": { "indentSize": 2, "tabSize": 2 },
"include": ["src/*", "src/***/*"],
"exclude": ["node_modules/"],
"exclude": ["node_modules/", "types/"],
"include": ["src/"],
"typedocOptions": {
"excludePrivate": true,
"excludeExternals": true,
@ -49,10 +49,10 @@
"hideGenerator": "true",
"readme": "none",
"out": "typedoc",
"entryPoints": "src/human.ts",
"exclude": ["**/node_modules/**"],
"externalPattern": ["**/node_modules/**"],
"logLevel": "Info",
"entryPoints": ["src/human.ts"],
"exclude": [],
"externalPattern": ["node_modules/", "tfjs/"],
"logLevel": "Verbose",
"logger": "none",
"theme": "wiki/theme/"
}

View File

@ -160,6 +160,10 @@
<div class="lead">
<p>Instance of TensorFlow/JS</p>
</div>
<dl class="tsd-comment-tags">
<dt>external</dt>
<dd></dd>
</dl>
</div>
</section>
</section>

1612
types/dist/tfjs.esm.d.ts vendored

File diff suppressed because one or more lines are too long

View File

@ -20,9 +20,13 @@ export declare type Input = Tensor | typeof Image | ImageData | ImageBitmap | HT
export declare type Error = {
error: string;
};
/** Instance of TensorFlow/JS */
/** Instance of TensorFlow/JS
* @external
*/
export declare type TensorFlow = typeof tf;
/** Generic Model object type, holds instance of individual models */
/** Generic Model object type
* holds instance of individual models
*/
declare type Model = unknown;
/**
* **Human** library main class

View File

@ -3,9 +3,11 @@
*/
/**
* TensorFlow Tensor type
* @external
*/
export { Tensor } from '@tensorflow/tfjs-core/dist/index';
/**
* TensorFlow GraphModel type
* @external
*/
export { GraphModel } from '@tensorflow/tfjs-converter/dist/index';