mirror of https://github.com/vladmandic/human
complete model refactoring
parent
9912232413
commit
72836738b3
|
@ -355,7 +355,6 @@ config = {
|
||||||
enlargeFactor: 1.65, // empiric tuning as skeleton prediction prefers hand box with some whitespace
|
enlargeFactor: 1.65, // empiric tuning as skeleton prediction prefers hand box with some whitespace
|
||||||
maxHands: 10, // maximum number of hands detected in the input, should be set to the minimum number for performance
|
maxHands: 10, // maximum number of hands detected in the input, should be set to the minimum number for performance
|
||||||
detector: {
|
detector: {
|
||||||
anchors: '../models/handdetect/anchors.json',
|
|
||||||
modelPath: '../models/handdetect/model.json',
|
modelPath: '../models/handdetect/model.json',
|
||||||
},
|
},
|
||||||
skeleton: {
|
skeleton: {
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 121 KiB |
19
config.js
19
config.js
|
@ -46,7 +46,7 @@ export default {
|
||||||
// face.enabled is required for all face models: detector, mesh, iris, age, gender, emotion
|
// face.enabled is required for all face models: detector, mesh, iris, age, gender, emotion
|
||||||
// (note: module is not loaded until it is required)
|
// (note: module is not loaded until it is required)
|
||||||
detector: {
|
detector: {
|
||||||
modelPath: '../models/blazeface/back/model.json', // can be 'front' or 'back'.
|
modelPath: '../models/blazeface-back.json', // can be 'front' or 'back'.
|
||||||
// 'front' is optimized for large faces such as front-facing camera and 'back' is optimized for distanct faces.
|
// 'front' is optimized for large faces such as front-facing camera and 'back' is optimized for distanct faces.
|
||||||
inputSize: 256, // fixed value: 128 for front and 256 for 'back'
|
inputSize: 256, // fixed value: 128 for front and 256 for 'back'
|
||||||
maxFaces: 10, // maximum number of faces detected in the input, should be set to the minimum number for performance
|
maxFaces: 10, // maximum number of faces detected in the input, should be set to the minimum number for performance
|
||||||
|
@ -59,18 +59,18 @@ export default {
|
||||||
},
|
},
|
||||||
mesh: {
|
mesh: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
modelPath: '../models/facemesh/model.json',
|
modelPath: '../models/facemesh.json',
|
||||||
inputSize: 192, // fixed value
|
inputSize: 192, // fixed value
|
||||||
},
|
},
|
||||||
iris: {
|
iris: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
modelPath: '../models/iris/model.json',
|
modelPath: '../models/iris.json',
|
||||||
enlargeFactor: 2.3, // empiric tuning
|
enlargeFactor: 2.3, // empiric tuning
|
||||||
inputSize: 64, // fixed value
|
inputSize: 64, // fixed value
|
||||||
},
|
},
|
||||||
age: {
|
age: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
modelPath: '../models/ssrnet-age/imdb/model.json', // can be 'imdb' or 'wiki'
|
modelPath: '../models/ssrnet-age-imdb.json', // can be 'imdb' or 'wiki'
|
||||||
// which determines training set for model
|
// which determines training set for model
|
||||||
inputSize: 64, // fixed value
|
inputSize: 64, // fixed value
|
||||||
skipFrames: 10, // how many frames to go without re-running the detector, only used for video inputs
|
skipFrames: 10, // how many frames to go without re-running the detector, only used for video inputs
|
||||||
|
@ -78,19 +78,19 @@ export default {
|
||||||
gender: {
|
gender: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
minConfidence: 0.8, // threshold for discarding a prediction
|
minConfidence: 0.8, // threshold for discarding a prediction
|
||||||
modelPath: '../models/ssrnet-gender/imdb/model.json',
|
modelPath: '../models/ssrnet-gender-imdb.json',
|
||||||
},
|
},
|
||||||
emotion: {
|
emotion: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
inputSize: 64, // fixed value
|
inputSize: 64, // fixed value
|
||||||
minConfidence: 0.5, // threshold for discarding a prediction
|
minConfidence: 0.5, // threshold for discarding a prediction
|
||||||
skipFrames: 10, // how many frames to go without re-running the detector
|
skipFrames: 10, // how many frames to go without re-running the detector
|
||||||
modelPath: '../models/emotion/model.json',
|
modelPath: '../models/emotion.json',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
body: {
|
body: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
modelPath: '../models/posenet/model.json',
|
modelPath: '../models/posenet.json',
|
||||||
inputResolution: 257, // fixed value
|
inputResolution: 257, // fixed value
|
||||||
outputStride: 16, // fixed value
|
outputStride: 16, // fixed value
|
||||||
maxDetections: 10, // maximum number of people detected in the input, should be set to the minimum number for performance
|
maxDetections: 10, // maximum number of people detected in the input, should be set to the minimum number for performance
|
||||||
|
@ -109,11 +109,10 @@ export default {
|
||||||
enlargeFactor: 1.65, // empiric tuning as skeleton prediction prefers hand box with some whitespace
|
enlargeFactor: 1.65, // empiric tuning as skeleton prediction prefers hand box with some whitespace
|
||||||
maxHands: 10, // maximum number of hands detected in the input, should be set to the minimum number for performance
|
maxHands: 10, // maximum number of hands detected in the input, should be set to the minimum number for performance
|
||||||
detector: {
|
detector: {
|
||||||
anchors: '../models/handdetect/anchors.json',
|
modelPath: '../models/handdetect.json',
|
||||||
modelPath: '../models/handdetect/model.json',
|
|
||||||
},
|
},
|
||||||
skeleton: {
|
skeleton: {
|
||||||
modelPath: '../models/handskeleton/model.json',
|
modelPath: '../models/handskeleton.json',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -223,7 +223,7 @@ function runHumanDetect(input, canvas) {
|
||||||
async function processImage(input) {
|
async function processImage(input) {
|
||||||
timeStamp = performance.now();
|
timeStamp = performance.now();
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const image = document.getElementById('image');
|
const image = new Image();
|
||||||
image.onload = async () => {
|
image.onload = async () => {
|
||||||
log('Processing image:', image.src);
|
log('Processing image:', image.src);
|
||||||
const canvas = document.getElementById('canvas');
|
const canvas = document.getElementById('canvas');
|
||||||
|
@ -234,13 +234,12 @@ async function processImage(input) {
|
||||||
const result = await human.detect(image, config);
|
const result = await human.detect(image, config);
|
||||||
drawResults(image, result, canvas);
|
drawResults(image, result, canvas);
|
||||||
const thumb = document.createElement('canvas');
|
const thumb = document.createElement('canvas');
|
||||||
|
thumb.className = 'thumbnail';
|
||||||
thumb.width = window.innerWidth / (ui.columns + 0.1);
|
thumb.width = window.innerWidth / (ui.columns + 0.1);
|
||||||
thumb.height = canvas.height / (window.innerWidth / thumb.width);
|
thumb.height = canvas.height / (window.innerWidth / thumb.width);
|
||||||
thumb.style.margin = '8px';
|
|
||||||
thumb.style.boxShadow = '4px 4px 4px 0 dimgrey';
|
|
||||||
const ctx = thumb.getContext('2d');
|
const ctx = thumb.getContext('2d');
|
||||||
ctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, thumb.width, thumb.height);
|
ctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, thumb.width, thumb.height);
|
||||||
document.getElementById('samples').appendChild(thumb);
|
document.getElementById('samples-container').appendChild(thumb);
|
||||||
image.src = '';
|
image.src = '';
|
||||||
resolve(true);
|
resolve(true);
|
||||||
};
|
};
|
||||||
|
@ -251,7 +250,7 @@ async function processImage(input) {
|
||||||
// just initialize everything and call main function
|
// just initialize everything and call main function
|
||||||
async function detectVideo() {
|
async function detectVideo() {
|
||||||
config.videoOptimized = true;
|
config.videoOptimized = true;
|
||||||
document.getElementById('samples').style.display = 'none';
|
document.getElementById('samples-container').style.display = 'none';
|
||||||
document.getElementById('canvas').style.display = 'block';
|
document.getElementById('canvas').style.display = 'block';
|
||||||
const video = document.getElementById('video');
|
const video = document.getElementById('video');
|
||||||
const canvas = document.getElementById('canvas');
|
const canvas = document.getElementById('canvas');
|
||||||
|
@ -277,9 +276,12 @@ async function detectSampleImages() {
|
||||||
ui.baseFont = ui.baseFontProto.replace(/{size}/, `${1.2 * ui.columns}rem`);
|
ui.baseFont = ui.baseFontProto.replace(/{size}/, `${1.2 * ui.columns}rem`);
|
||||||
ui.baseLineHeight = ui.baseLineHeightProto * ui.columns;
|
ui.baseLineHeight = ui.baseLineHeightProto * ui.columns;
|
||||||
document.getElementById('canvas').style.display = 'none';
|
document.getElementById('canvas').style.display = 'none';
|
||||||
document.getElementById('samples').style.display = 'block';
|
document.getElementById('samples-container').style.display = 'block';
|
||||||
log('Running detection of sample images');
|
log('Running detection of sample images');
|
||||||
|
status('processing images');
|
||||||
|
document.getElementById('samples-container').innerHTML = '';
|
||||||
for (const sample of ui.samples) await processImage(sample);
|
for (const sample of ui.samples) await processImage(sample);
|
||||||
|
status('');
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupMenu() {
|
function setupMenu() {
|
||||||
|
@ -364,17 +366,18 @@ function setupMenu() {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
log('Human demo starting ...');
|
log('Human: demo starting ...');
|
||||||
setupMenu();
|
setupMenu();
|
||||||
const msg = `Human Library: version: ${human.version} TensorFlow/JS version: ${human.tf.version_core}`;
|
document.getElementById('log').innerText = `Human: version: ${human.version} TensorFlow/JS version: ${human.tf.version_core}`;
|
||||||
document.getElementById('log').innerText = msg;
|
// this is not required, just pre-warms the library
|
||||||
status('loading');
|
status('loading');
|
||||||
log(msg);
|
|
||||||
await human.load();
|
await human.load();
|
||||||
status('initializing');
|
status('initializing');
|
||||||
const warmup = new ImageData(50, 50);
|
const warmup = new ImageData(50, 50);
|
||||||
await human.detect(warmup);
|
await human.detect(warmup);
|
||||||
status('human: ready');
|
status('human: ready');
|
||||||
|
document.getElementById('loader').style.display = 'none';
|
||||||
|
document.getElementById('play').style.display = 'block';
|
||||||
}
|
}
|
||||||
|
|
||||||
window.onload = main;
|
window.onload = main;
|
||||||
|
|
|
@ -17,19 +17,42 @@
|
||||||
<!-- <script src="../assets/tf-backend-webgpu.js"></script> -->
|
<!-- <script src="../assets/tf-backend-webgpu.js"></script> -->
|
||||||
<!-- <script src='../assets/tfjs-vis.min.js'></script> -->
|
<!-- <script src='../assets/tfjs-vis.min.js'></script> -->
|
||||||
<script src="./browser.js" type="module"></script>
|
<script src="./browser.js" type="module"></script>
|
||||||
|
<style>
|
||||||
|
body { margin: 0; background: black; color: white; font-family: 'Segoe UI'; font-size: 16px; font-variant: small-caps; overflow-x: hidden; scrollbar-width: none; }
|
||||||
|
body::-webkit-scrollbar { display: none; }
|
||||||
|
.play { position: absolute; width: 300px; height: 300px; z-index: 25; top: 30%; left: 50%; margin-left: -150px; display: none; }
|
||||||
|
.play-background { fill:darkslategray; cursor:pointer; opacity: 0.6; }
|
||||||
|
.play-foreground { fill:white; cursor:pointer; opacity: 0.8; }
|
||||||
|
.play-foreground:hover { opacity: 1; }
|
||||||
|
.status { position: absolute; width: 100vw; top: 100px; text-align: center; font-size: 4rem; font-weight: 100; text-shadow: 2px 2px darkslategrey; }
|
||||||
|
.thumbnail { margin: 8px; box-shadow: 0 0 4px 4px dimgrey; }
|
||||||
|
.thumbnail:hover { box-shadow: 0 0 8px 8px dimgrey; filter: grayscale(1); }
|
||||||
|
.log { position: fixed; bottom: 0; }
|
||||||
|
.samples-container { display: flex; flex-wrap: wrap; }
|
||||||
|
.video { display: none; }
|
||||||
|
.canvas { margin: 0 auto; width: 100%; }
|
||||||
|
.loader { width: 300px; height: 300px; border: 3px solid transparent; border-radius: 50%; border-top: 4px solid #f15e41; animation: spin 4s linear infinite; position: absolute; top: 30%; left: 50%; margin-left: -150px; }
|
||||||
|
.loader::before, .loader::after { content: ""; position: absolute; top: 6px; bottom: 6px; left: 6px; right: 6px; border-radius: 50%; border: 4px solid transparent; }
|
||||||
|
.loader::before { border-top-color: #bad375; animation: 3s spin linear infinite; }
|
||||||
|
.loader::after { border-top-color: #26a9e0; animation: spin 1.5s linear infinite; }
|
||||||
|
@keyframes spin {
|
||||||
|
from { transform: rotate(0deg); }
|
||||||
|
to { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin: 0; background: black; color: white; font-family: 'Segoe UI'; font-size: 16px; font-variant: small-caps; overflow: hidden">
|
<body>
|
||||||
<div id="play" style="position: absolute; width: 250px; height: 250px; z-index: 25; top: 30%; left: 50%; margin-left: -125px">
|
<div id="play" class="play">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||||
<path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z" style="fill:darkslategray; cursor:pointer; opacity: 0.6"/>
|
<path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z" class="play-background"/>
|
||||||
<path d="M371.7 280l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z" style="fill:white; cursor:pointer"/>
|
<path d="M371.7 280l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z" class="play-foreground"/>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<div id="status" style="position: absolute; width: 100vw; top: 100px; text-align: center; font-size: 4rem; font-weight: 100; text-shadow: 2px 2px darkslategrey;"></div>
|
<div id="loader" class="loader"></div>
|
||||||
<video id="video" playsinline style="display: none"></video>
|
<div id="status" class="status"></div>
|
||||||
<image id="image" src="" style="display: none"></video>
|
<video id="video" playsinline class="video"></video>
|
||||||
<canvas id="canvas" style="margin: 0 auto; width: 100%"></canvas>
|
<canvas id="canvas" class="canvas"></canvas>
|
||||||
<div id="samples" style="display: flex; flex-wrap: wrap"></div>
|
<div id="samples-container" class="samples-container"></div>
|
||||||
<div id="log" style="position: fixed; bottom: 0"></div>
|
<div id="log" class="log"></div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
18
demo/node.js
18
demo/node.js
|
@ -28,17 +28,17 @@ const config = {
|
||||||
console: true,
|
console: true,
|
||||||
videoOptimized: false,
|
videoOptimized: false,
|
||||||
face: {
|
face: {
|
||||||
detector: { modelPath: 'file://models/blazeface/back/model.json' },
|
detector: { modelPath: 'file://models/blazeface-back.json' },
|
||||||
mesh: { modelPath: 'file://models/facemesh/model.json' },
|
mesh: { modelPath: 'file://models/facemesh.json' },
|
||||||
iris: { modelPath: 'file://models/iris/model.json' },
|
iris: { modelPath: 'file://models/iris.json' },
|
||||||
age: { modelPath: 'file://models/ssrnet-age/imdb/model.json' },
|
age: { modelPath: 'file://models/ssrnet-age-imdb.json' },
|
||||||
gender: { modelPath: 'file://models/ssrnet-gender/imdb/model.json' },
|
gender: { modelPath: 'file://models/ssrnet-gender-imdb.json' },
|
||||||
emotion: { modelPath: 'file://models/emotion/model.json' },
|
emotion: { modelPath: 'file://models/emotion.json' },
|
||||||
},
|
},
|
||||||
body: { modelPath: 'file://models/posenet/model.json' },
|
body: { modelPath: 'file://models/posenet.json' },
|
||||||
hand: {
|
hand: {
|
||||||
detector: { anchors: 'file://models/handdetect/anchors.json', modelPath: 'file://models/handdetect/model.json' },
|
detector: { modelPath: 'file://models/handdetect.json' },
|
||||||
skeleton: { modelPath: 'file://models/handskeleton/model.json' },
|
skeleton: { modelPath: 'file://models/handskeleton.json' },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,11 +1,11 @@
|
||||||
{
|
{
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"config.js": {
|
"config.js": {
|
||||||
"bytes": 7322,
|
"bytes": 7216,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"package.json": {
|
"package.json": {
|
||||||
"bytes": 2870,
|
"bytes": 2915,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/emotion/emotion.js": {
|
"src/emotion/emotion.js": {
|
||||||
|
@ -74,6 +74,10 @@
|
||||||
"bytes": 19592,
|
"bytes": 19592,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
|
"src/handpose/anchors.js": {
|
||||||
|
"bytes": 224151,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
"src/handpose/box.js": {
|
"src/handpose/box.js": {
|
||||||
"bytes": 2572,
|
"bytes": 2572,
|
||||||
"imports": []
|
"imports": []
|
||||||
|
@ -87,7 +91,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/handpose/handpose.js": {
|
"src/handpose/handpose.js": {
|
||||||
"bytes": 2152,
|
"bytes": 1849,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "src/handpose/handdetector.js"
|
"path": "src/handpose/handdetector.js"
|
||||||
|
@ -97,6 +101,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "src/handpose/pipeline.js"
|
"path": "src/handpose/pipeline.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/handpose/anchors.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -120,7 +127,7 @@
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytes": 15047,
|
"bytes": 15055,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "src/facemesh/facemesh.js"
|
"path": "src/facemesh/facemesh.js"
|
||||||
|
@ -152,7 +159,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/imagefx.js": {
|
"src/imagefx.js": {
|
||||||
"bytes": 19396,
|
"bytes": 19352,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/posenet/buildParts.js": {
|
"src/posenet/buildParts.js": {
|
||||||
|
@ -275,112 +282,115 @@
|
||||||
"dist/human.esm-nobundle.js.map": {
|
"dist/human.esm-nobundle.js.map": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"bytes": 256473
|
"bytes": 605105
|
||||||
},
|
},
|
||||||
"dist/human.esm-nobundle.js": {
|
"dist/human.esm-nobundle.js": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"src/facemesh/blazeface.js": {
|
"src/facemesh/blazeface.js": {
|
||||||
"bytesInOutput": 7133
|
"bytesInOutput": 3082
|
||||||
},
|
},
|
||||||
"src/facemesh/keypoints.js": {
|
"src/facemesh/keypoints.js": {
|
||||||
"bytesInOutput": 2768
|
"bytesInOutput": 1945
|
||||||
},
|
},
|
||||||
"src/facemesh/box.js": {
|
"src/facemesh/box.js": {
|
||||||
"bytesInOutput": 2076
|
"bytesInOutput": 1021
|
||||||
},
|
},
|
||||||
"src/facemesh/util.js": {
|
"src/facemesh/util.js": {
|
||||||
"bytesInOutput": 3016
|
"bytesInOutput": 1171
|
||||||
},
|
},
|
||||||
"src/facemesh/pipeline.js": {
|
"src/facemesh/pipeline.js": {
|
||||||
"bytesInOutput": 13258
|
"bytesInOutput": 5571
|
||||||
},
|
},
|
||||||
"src/facemesh/uvcoords.js": {
|
"src/facemesh/uvcoords.js": {
|
||||||
"bytesInOutput": 20584
|
"bytesInOutput": 16785
|
||||||
},
|
},
|
||||||
"src/facemesh/triangulation.js": {
|
"src/facemesh/triangulation.js": {
|
||||||
"bytesInOutput": 23309
|
"bytesInOutput": 9990
|
||||||
},
|
},
|
||||||
"src/facemesh/facemesh.js": {
|
"src/facemesh/facemesh.js": {
|
||||||
"bytesInOutput": 2661
|
"bytesInOutput": 1254
|
||||||
},
|
},
|
||||||
"src/profile.js": {
|
"src/profile.js": {
|
||||||
"bytesInOutput": 1092
|
"bytesInOutput": 619
|
||||||
},
|
},
|
||||||
"src/ssrnet/ssrnet.js": {
|
"src/ssrnet/ssrnet.js": {
|
||||||
"bytesInOutput": 2344
|
"bytesInOutput": 1236
|
||||||
},
|
},
|
||||||
"src/emotion/emotion.js": {
|
"src/emotion/emotion.js": {
|
||||||
"bytesInOutput": 2040
|
"bytesInOutput": 1082
|
||||||
},
|
},
|
||||||
"src/posenet/modelBase.js": {
|
"src/posenet/modelBase.js": {
|
||||||
"bytesInOutput": 910
|
"bytesInOutput": 455
|
||||||
},
|
},
|
||||||
"src/posenet/modelMobileNet.js": {
|
"src/posenet/modelMobileNet.js": {
|
||||||
"bytesInOutput": 504
|
"bytesInOutput": 267
|
||||||
},
|
},
|
||||||
"src/posenet/heapSort.js": {
|
"src/posenet/heapSort.js": {
|
||||||
"bytesInOutput": 1637
|
"bytesInOutput": 1041
|
||||||
},
|
},
|
||||||
"src/posenet/buildParts.js": {
|
"src/posenet/buildParts.js": {
|
||||||
"bytesInOutput": 1752
|
"bytesInOutput": 546
|
||||||
},
|
},
|
||||||
"src/posenet/keypoints.js": {
|
"src/posenet/keypoints.js": {
|
||||||
"bytesInOutput": 2277
|
"bytesInOutput": 1621
|
||||||
},
|
},
|
||||||
"src/posenet/vectors.js": {
|
"src/posenet/vectors.js": {
|
||||||
"bytesInOutput": 1408
|
"bytesInOutput": 607
|
||||||
},
|
},
|
||||||
"src/posenet/decodePose.js": {
|
"src/posenet/decodePose.js": {
|
||||||
"bytesInOutput": 3773
|
"bytesInOutput": 1016
|
||||||
},
|
},
|
||||||
"src/posenet/decodeMultiple.js": {
|
"src/posenet/decodeMultiple.js": {
|
||||||
"bytesInOutput": 1990
|
"bytesInOutput": 603
|
||||||
},
|
},
|
||||||
"src/posenet/util.js": {
|
"src/posenet/util.js": {
|
||||||
"bytesInOutput": 2396
|
"bytesInOutput": 1053
|
||||||
},
|
},
|
||||||
"src/posenet/modelPoseNet.js": {
|
"src/posenet/modelPoseNet.js": {
|
||||||
"bytesInOutput": 1936
|
"bytesInOutput": 841
|
||||||
},
|
},
|
||||||
"src/posenet/posenet.js": {
|
"src/posenet/posenet.js": {
|
||||||
"bytesInOutput": 903
|
"bytesInOutput": 459
|
||||||
},
|
},
|
||||||
"src/handpose/box.js": {
|
"src/handpose/box.js": {
|
||||||
"bytesInOutput": 2744
|
"bytesInOutput": 1376
|
||||||
},
|
},
|
||||||
"src/handpose/handdetector.js": {
|
"src/handpose/handdetector.js": {
|
||||||
"bytesInOutput": 4027
|
"bytesInOutput": 2004
|
||||||
},
|
},
|
||||||
"src/handpose/keypoints.js": {
|
"src/handpose/keypoints.js": {
|
||||||
"bytesInOutput": 263
|
"bytesInOutput": 155
|
||||||
},
|
},
|
||||||
"src/handpose/util.js": {
|
"src/handpose/util.js": {
|
||||||
"bytesInOutput": 2663
|
"bytesInOutput": 972
|
||||||
},
|
},
|
||||||
"src/handpose/pipeline.js": {
|
"src/handpose/pipeline.js": {
|
||||||
"bytesInOutput": 7651
|
"bytesInOutput": 3223
|
||||||
|
},
|
||||||
|
"src/handpose/anchors.js": {
|
||||||
|
"bytesInOutput": 127000
|
||||||
},
|
},
|
||||||
"src/handpose/handpose.js": {
|
"src/handpose/handpose.js": {
|
||||||
"bytesInOutput": 2270
|
"bytesInOutput": 1014
|
||||||
},
|
},
|
||||||
"src/imagefx.js": {
|
"src/imagefx.js": {
|
||||||
"bytesInOutput": 20137
|
"bytesInOutput": 11013
|
||||||
},
|
},
|
||||||
"config.js": {
|
"config.js": {
|
||||||
"bytesInOutput": 2291
|
"bytesInOutput": 1272
|
||||||
},
|
},
|
||||||
"package.json": {
|
"package.json": {
|
||||||
"bytesInOutput": 3012
|
"bytesInOutput": 2567
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytesInOutput": 13231
|
"bytesInOutput": 8359
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytesInOutput": 0
|
"bytesInOutput": 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bytes": 159430
|
"bytes": 211512
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"config.js": {
|
"config.js": {
|
||||||
"bytes": 7322,
|
"bytes": 7216,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/dist/tf-backend-cpu.node.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/dist/tf-backend-cpu.node.js": {
|
||||||
|
@ -149,7 +149,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"package.json": {
|
"package.json": {
|
||||||
"bytes": 2870,
|
"bytes": 2915,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/emotion/emotion.js": {
|
"src/emotion/emotion.js": {
|
||||||
|
@ -235,6 +235,10 @@
|
||||||
"bytes": 19592,
|
"bytes": 19592,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
|
"src/handpose/anchors.js": {
|
||||||
|
"bytes": 224151,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
"src/handpose/box.js": {
|
"src/handpose/box.js": {
|
||||||
"bytes": 2572,
|
"bytes": 2572,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
@ -255,7 +259,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/handpose/handpose.js": {
|
"src/handpose/handpose.js": {
|
||||||
"bytes": 2152,
|
"bytes": 1849,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "node_modules/@tensorflow/tfjs/dist/tf.node.js"
|
"path": "node_modules/@tensorflow/tfjs/dist/tf.node.js"
|
||||||
|
@ -268,6 +272,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "src/handpose/pipeline.js"
|
"path": "src/handpose/pipeline.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/handpose/anchors.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -294,7 +301,7 @@
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytes": 15047,
|
"bytes": 15055,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "node_modules/@tensorflow/tfjs/dist/tf.node.js"
|
"path": "node_modules/@tensorflow/tfjs/dist/tf.node.js"
|
||||||
|
@ -329,7 +336,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/imagefx.js": {
|
"src/imagefx.js": {
|
||||||
"bytes": 19396,
|
"bytes": 19352,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/posenet/buildParts.js": {
|
"src/posenet/buildParts.js": {
|
||||||
|
@ -481,169 +488,172 @@
|
||||||
"dist/human.esm.js.map": {
|
"dist/human.esm.js.map": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"bytes": 5129779
|
"bytes": 5400887
|
||||||
},
|
},
|
||||||
"dist/human.esm.js": {
|
"dist/human.esm.js": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js": {
|
"empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js": {
|
||||||
"bytesInOutput": 45
|
"bytesInOutput": 13
|
||||||
},
|
},
|
||||||
"empty:util": {
|
"empty:util": {
|
||||||
"bytesInOutput": 42
|
"bytesInOutput": 13
|
||||||
},
|
},
|
||||||
"empty:crypto": {
|
"empty:crypto": {
|
||||||
"bytesInOutput": 44
|
"bytesInOutput": 13
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js": {
|
"node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js": {
|
||||||
"bytesInOutput": 1010339
|
"bytesInOutput": 295099
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-layers/dist/tf-layers.node.js": {
|
"node_modules/@tensorflow/tfjs-layers/dist/tf-layers.node.js": {
|
||||||
"bytesInOutput": 514491
|
"bytesInOutput": 238715
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js": {
|
"node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js": {
|
||||||
"bytesInOutput": 258960
|
"bytesInOutput": 115224
|
||||||
},
|
},
|
||||||
"empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js": {
|
"empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js": {
|
||||||
"bytesInOutput": 52
|
"bytesInOutput": 13
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-data/dist/tf-data.node.js": {
|
"node_modules/@tensorflow/tfjs-data/dist/tf-data.node.js": {
|
||||||
"bytesInOutput": 129585
|
"bytesInOutput": 52357
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js": {
|
||||||
"bytesInOutput": 2112
|
"bytesInOutput": 990
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js": {
|
||||||
"bytesInOutput": 1699
|
"bytesInOutput": 755
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js": {
|
||||||
"bytesInOutput": 1897
|
"bytesInOutput": 845
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js": {
|
||||||
"bytesInOutput": 2307
|
"bytesInOutput": 1001
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js": {
|
||||||
"bytesInOutput": 2742
|
"bytesInOutput": 1164
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js": {
|
||||||
"bytesInOutput": 1940
|
"bytesInOutput": 880
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js": {
|
||||||
"bytesInOutput": 4019
|
"bytesInOutput": 1607
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js": {
|
||||||
"bytesInOutput": 458
|
"bytesInOutput": 171
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/dist/tf-backend-cpu.node.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/dist/tf-backend-cpu.node.js": {
|
||||||
"bytesInOutput": 272394
|
"bytesInOutput": 82510
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-webgl/dist/tf-backend-webgl.node.js": {
|
"node_modules/@tensorflow/tfjs-backend-webgl/dist/tf-backend-webgl.node.js": {
|
||||||
"bytesInOutput": 561656
|
"bytesInOutput": 261415
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs/dist/tf.node.js": {
|
"node_modules/@tensorflow/tfjs/dist/tf.node.js": {
|
||||||
"bytesInOutput": 3025
|
"bytesInOutput": 760
|
||||||
},
|
},
|
||||||
"src/facemesh/blazeface.js": {
|
"src/facemesh/blazeface.js": {
|
||||||
"bytesInOutput": 7123
|
"bytesInOutput": 3093
|
||||||
},
|
},
|
||||||
"src/facemesh/keypoints.js": {
|
"src/facemesh/keypoints.js": {
|
||||||
"bytesInOutput": 2768
|
"bytesInOutput": 1946
|
||||||
},
|
},
|
||||||
"src/facemesh/box.js": {
|
"src/facemesh/box.js": {
|
||||||
"bytesInOutput": 2066
|
"bytesInOutput": 1006
|
||||||
},
|
},
|
||||||
"src/facemesh/util.js": {
|
"src/facemesh/util.js": {
|
||||||
"bytesInOutput": 3017
|
"bytesInOutput": 1190
|
||||||
},
|
},
|
||||||
"src/facemesh/pipeline.js": {
|
"src/facemesh/pipeline.js": {
|
||||||
"bytesInOutput": 13249
|
"bytesInOutput": 5563
|
||||||
},
|
},
|
||||||
"src/facemesh/uvcoords.js": {
|
"src/facemesh/uvcoords.js": {
|
||||||
"bytesInOutput": 20584
|
"bytesInOutput": 16786
|
||||||
},
|
},
|
||||||
"src/facemesh/triangulation.js": {
|
"src/facemesh/triangulation.js": {
|
||||||
"bytesInOutput": 23309
|
"bytesInOutput": 9991
|
||||||
},
|
},
|
||||||
"src/facemesh/facemesh.js": {
|
"src/facemesh/facemesh.js": {
|
||||||
"bytesInOutput": 2651
|
"bytesInOutput": 1237
|
||||||
},
|
},
|
||||||
"src/profile.js": {
|
"src/profile.js": {
|
||||||
"bytesInOutput": 1092
|
"bytesInOutput": 620
|
||||||
},
|
},
|
||||||
"src/ssrnet/ssrnet.js": {
|
"src/ssrnet/ssrnet.js": {
|
||||||
"bytesInOutput": 2334
|
"bytesInOutput": 1236
|
||||||
},
|
},
|
||||||
"src/emotion/emotion.js": {
|
"src/emotion/emotion.js": {
|
||||||
"bytesInOutput": 2030
|
"bytesInOutput": 1071
|
||||||
},
|
},
|
||||||
"src/posenet/modelBase.js": {
|
"src/posenet/modelBase.js": {
|
||||||
"bytesInOutput": 900
|
"bytesInOutput": 433
|
||||||
},
|
},
|
||||||
"src/posenet/modelMobileNet.js": {
|
"src/posenet/modelMobileNet.js": {
|
||||||
"bytesInOutput": 494
|
"bytesInOutput": 245
|
||||||
},
|
},
|
||||||
"src/posenet/heapSort.js": {
|
"src/posenet/heapSort.js": {
|
||||||
"bytesInOutput": 1637
|
"bytesInOutput": 1042
|
||||||
},
|
},
|
||||||
"src/posenet/buildParts.js": {
|
"src/posenet/buildParts.js": {
|
||||||
"bytesInOutput": 1752
|
"bytesInOutput": 547
|
||||||
},
|
},
|
||||||
"src/posenet/keypoints.js": {
|
"src/posenet/keypoints.js": {
|
||||||
"bytesInOutput": 2277
|
"bytesInOutput": 1633
|
||||||
},
|
},
|
||||||
"src/posenet/vectors.js": {
|
"src/posenet/vectors.js": {
|
||||||
"bytesInOutput": 1408
|
"bytesInOutput": 616
|
||||||
},
|
},
|
||||||
"src/posenet/decodePose.js": {
|
"src/posenet/decodePose.js": {
|
||||||
"bytesInOutput": 3773
|
"bytesInOutput": 1024
|
||||||
},
|
},
|
||||||
"src/posenet/decodeMultiple.js": {
|
"src/posenet/decodeMultiple.js": {
|
||||||
"bytesInOutput": 1990
|
"bytesInOutput": 604
|
||||||
},
|
},
|
||||||
"src/posenet/util.js": {
|
"src/posenet/util.js": {
|
||||||
"bytesInOutput": 2396
|
"bytesInOutput": 1062
|
||||||
},
|
},
|
||||||
"src/posenet/modelPoseNet.js": {
|
"src/posenet/modelPoseNet.js": {
|
||||||
"bytesInOutput": 1926
|
"bytesInOutput": 819
|
||||||
},
|
},
|
||||||
"src/posenet/posenet.js": {
|
"src/posenet/posenet.js": {
|
||||||
"bytesInOutput": 903
|
"bytesInOutput": 474
|
||||||
},
|
},
|
||||||
"src/handpose/box.js": {
|
"src/handpose/box.js": {
|
||||||
"bytesInOutput": 2734
|
"bytesInOutput": 1362
|
||||||
},
|
},
|
||||||
"src/handpose/handdetector.js": {
|
"src/handpose/handdetector.js": {
|
||||||
"bytesInOutput": 4017
|
"bytesInOutput": 2010
|
||||||
},
|
},
|
||||||
"src/handpose/keypoints.js": {
|
"src/handpose/keypoints.js": {
|
||||||
"bytesInOutput": 263
|
"bytesInOutput": 156
|
||||||
},
|
},
|
||||||
"src/handpose/util.js": {
|
"src/handpose/util.js": {
|
||||||
"bytesInOutput": 2663
|
"bytesInOutput": 988
|
||||||
},
|
},
|
||||||
"src/handpose/pipeline.js": {
|
"src/handpose/pipeline.js": {
|
||||||
"bytesInOutput": 7641
|
"bytesInOutput": 3221
|
||||||
|
},
|
||||||
|
"src/handpose/anchors.js": {
|
||||||
|
"bytesInOutput": 127001
|
||||||
},
|
},
|
||||||
"src/handpose/handpose.js": {
|
"src/handpose/handpose.js": {
|
||||||
"bytesInOutput": 2260
|
"bytesInOutput": 992
|
||||||
},
|
},
|
||||||
"src/imagefx.js": {
|
"src/imagefx.js": {
|
||||||
"bytesInOutput": 20137
|
"bytesInOutput": 11014
|
||||||
},
|
},
|
||||||
"config.js": {
|
"config.js": {
|
||||||
"bytesInOutput": 2291
|
"bytesInOutput": 1273
|
||||||
},
|
},
|
||||||
"package.json": {
|
"package.json": {
|
||||||
"bytesInOutput": 3012
|
"bytesInOutput": 2568
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytesInOutput": 13221
|
"bytesInOutput": 8375
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytesInOutput": 0
|
"bytesInOutput": 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bytes": 2928396
|
"bytes": 1273058
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"config.js": {
|
"config.js": {
|
||||||
"bytes": 7322,
|
"bytes": 7216,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/dist/tf-backend-cpu.node.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/dist/tf-backend-cpu.node.js": {
|
||||||
|
@ -149,7 +149,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"package.json": {
|
"package.json": {
|
||||||
"bytes": 2870,
|
"bytes": 2915,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/emotion/emotion.js": {
|
"src/emotion/emotion.js": {
|
||||||
|
@ -235,6 +235,10 @@
|
||||||
"bytes": 19592,
|
"bytes": 19592,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
|
"src/handpose/anchors.js": {
|
||||||
|
"bytes": 224151,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
"src/handpose/box.js": {
|
"src/handpose/box.js": {
|
||||||
"bytes": 2572,
|
"bytes": 2572,
|
||||||
"imports": [
|
"imports": [
|
||||||
|
@ -255,7 +259,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/handpose/handpose.js": {
|
"src/handpose/handpose.js": {
|
||||||
"bytes": 2152,
|
"bytes": 1849,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "node_modules/@tensorflow/tfjs/dist/tf.node.js"
|
"path": "node_modules/@tensorflow/tfjs/dist/tf.node.js"
|
||||||
|
@ -268,6 +272,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "src/handpose/pipeline.js"
|
"path": "src/handpose/pipeline.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/handpose/anchors.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -294,7 +301,7 @@
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytes": 15047,
|
"bytes": 15055,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "node_modules/@tensorflow/tfjs/dist/tf.node.js"
|
"path": "node_modules/@tensorflow/tfjs/dist/tf.node.js"
|
||||||
|
@ -329,7 +336,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/imagefx.js": {
|
"src/imagefx.js": {
|
||||||
"bytes": 19396,
|
"bytes": 19352,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/posenet/buildParts.js": {
|
"src/posenet/buildParts.js": {
|
||||||
|
@ -481,166 +488,169 @@
|
||||||
"dist/human.js.map": {
|
"dist/human.js.map": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"bytes": 5133676
|
"bytes": 5400883
|
||||||
},
|
},
|
||||||
"dist/human.js": {
|
"dist/human.js": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js": {
|
"empty:/home/vlado/dev/human/node_modules/node-fetch/browser.js": {
|
||||||
"bytesInOutput": 49
|
"bytesInOutput": 13
|
||||||
},
|
},
|
||||||
"empty:util": {
|
"empty:util": {
|
||||||
"bytesInOutput": 46
|
"bytesInOutput": 13
|
||||||
},
|
},
|
||||||
"empty:crypto": {
|
"empty:crypto": {
|
||||||
"bytesInOutput": 48
|
"bytesInOutput": 13
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js": {
|
"node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js": {
|
||||||
"bytesInOutput": 1061246
|
"bytesInOutput": 295099
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-layers/dist/tf-layers.node.js": {
|
"node_modules/@tensorflow/tfjs-layers/dist/tf-layers.node.js": {
|
||||||
"bytesInOutput": 541660
|
"bytesInOutput": 238715
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js": {
|
"node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js": {
|
||||||
"bytesInOutput": 273096
|
"bytesInOutput": 115224
|
||||||
},
|
},
|
||||||
"empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js": {
|
"empty:/home/vlado/dev/human/node_modules/string_decoder/lib/string_decoder.js": {
|
||||||
"bytesInOutput": 56
|
"bytesInOutput": 13
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-data/dist/tf-data.node.js": {
|
"node_modules/@tensorflow/tfjs-data/dist/tf-data.node.js": {
|
||||||
"bytesInOutput": 136972
|
"bytesInOutput": 52357
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js": {
|
||||||
"bytesInOutput": 2276
|
"bytesInOutput": 990
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js": {
|
||||||
"bytesInOutput": 1827
|
"bytesInOutput": 755
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js": {
|
||||||
"bytesInOutput": 2039
|
"bytesInOutput": 845
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js": {
|
||||||
"bytesInOutput": 2481
|
"bytesInOutput": 1001
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js": {
|
||||||
"bytesInOutput": 2946
|
"bytesInOutput": 1164
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js": {
|
||||||
"bytesInOutput": 2080
|
"bytesInOutput": 880
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js": {
|
||||||
"bytesInOutput": 4275
|
"bytesInOutput": 1607
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js": {
|
||||||
"bytesInOutput": 490
|
"bytesInOutput": 171
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-cpu/dist/tf-backend-cpu.node.js": {
|
"node_modules/@tensorflow/tfjs-backend-cpu/dist/tf-backend-cpu.node.js": {
|
||||||
"bytesInOutput": 284249
|
"bytesInOutput": 82510
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs-backend-webgl/dist/tf-backend-webgl.node.js": {
|
"node_modules/@tensorflow/tfjs-backend-webgl/dist/tf-backend-webgl.node.js": {
|
||||||
"bytesInOutput": 581862
|
"bytesInOutput": 261415
|
||||||
},
|
},
|
||||||
"node_modules/@tensorflow/tfjs/dist/tf.node.js": {
|
"node_modules/@tensorflow/tfjs/dist/tf.node.js": {
|
||||||
"bytesInOutput": 3189
|
"bytesInOutput": 760
|
||||||
},
|
},
|
||||||
"src/facemesh/blazeface.js": {
|
"src/facemesh/blazeface.js": {
|
||||||
"bytesInOutput": 7420
|
"bytesInOutput": 3093
|
||||||
},
|
},
|
||||||
"src/facemesh/keypoints.js": {
|
"src/facemesh/keypoints.js": {
|
||||||
"bytesInOutput": 2936
|
"bytesInOutput": 1946
|
||||||
},
|
},
|
||||||
"src/facemesh/box.js": {
|
"src/facemesh/box.js": {
|
||||||
"bytesInOutput": 2172
|
"bytesInOutput": 1006
|
||||||
},
|
},
|
||||||
"src/facemesh/util.js": {
|
"src/facemesh/util.js": {
|
||||||
"bytesInOutput": 3179
|
"bytesInOutput": 1190
|
||||||
},
|
},
|
||||||
"src/facemesh/pipeline.js": {
|
"src/facemesh/pipeline.js": {
|
||||||
"bytesInOutput": 13773
|
"bytesInOutput": 5563
|
||||||
},
|
},
|
||||||
"src/facemesh/uvcoords.js": {
|
"src/facemesh/uvcoords.js": {
|
||||||
"bytesInOutput": 21528
|
"bytesInOutput": 16786
|
||||||
},
|
},
|
||||||
"src/facemesh/triangulation.js": {
|
"src/facemesh/triangulation.js": {
|
||||||
"bytesInOutput": 28603
|
"bytesInOutput": 9991
|
||||||
},
|
},
|
||||||
"src/facemesh/facemesh.js": {
|
"src/facemesh/facemesh.js": {
|
||||||
"bytesInOutput": 2775
|
"bytesInOutput": 1237
|
||||||
},
|
},
|
||||||
"src/profile.js": {
|
"src/profile.js": {
|
||||||
"bytesInOutput": 1140
|
"bytesInOutput": 620
|
||||||
},
|
},
|
||||||
"src/ssrnet/ssrnet.js": {
|
"src/ssrnet/ssrnet.js": {
|
||||||
"bytesInOutput": 2454
|
"bytesInOutput": 1236
|
||||||
},
|
},
|
||||||
"src/emotion/emotion.js": {
|
"src/emotion/emotion.js": {
|
||||||
"bytesInOutput": 2133
|
"bytesInOutput": 1071
|
||||||
},
|
},
|
||||||
"src/posenet/modelBase.js": {
|
"src/posenet/modelBase.js": {
|
||||||
"bytesInOutput": 954
|
"bytesInOutput": 433
|
||||||
},
|
},
|
||||||
"src/posenet/modelMobileNet.js": {
|
"src/posenet/modelMobileNet.js": {
|
||||||
"bytesInOutput": 519
|
"bytesInOutput": 245
|
||||||
},
|
},
|
||||||
"src/posenet/heapSort.js": {
|
"src/posenet/heapSort.js": {
|
||||||
"bytesInOutput": 1765
|
"bytesInOutput": 1042
|
||||||
},
|
},
|
||||||
"src/posenet/buildParts.js": {
|
"src/posenet/buildParts.js": {
|
||||||
"bytesInOutput": 1834
|
"bytesInOutput": 547
|
||||||
},
|
},
|
||||||
"src/posenet/keypoints.js": {
|
"src/posenet/keypoints.js": {
|
||||||
"bytesInOutput": 2447
|
"bytesInOutput": 1633
|
||||||
},
|
},
|
||||||
"src/posenet/vectors.js": {
|
"src/posenet/vectors.js": {
|
||||||
"bytesInOutput": 1506
|
"bytesInOutput": 616
|
||||||
},
|
},
|
||||||
"src/posenet/decodePose.js": {
|
"src/posenet/decodePose.js": {
|
||||||
"bytesInOutput": 3905
|
"bytesInOutput": 1024
|
||||||
},
|
},
|
||||||
"src/posenet/decodeMultiple.js": {
|
"src/posenet/decodeMultiple.js": {
|
||||||
"bytesInOutput": 2064
|
"bytesInOutput": 604
|
||||||
},
|
},
|
||||||
"src/posenet/util.js": {
|
"src/posenet/util.js": {
|
||||||
"bytesInOutput": 2522
|
"bytesInOutput": 1062
|
||||||
},
|
},
|
||||||
"src/posenet/modelPoseNet.js": {
|
"src/posenet/modelPoseNet.js": {
|
||||||
"bytesInOutput": 2012
|
"bytesInOutput": 819
|
||||||
},
|
},
|
||||||
"src/posenet/posenet.js": {
|
"src/posenet/posenet.js": {
|
||||||
"bytesInOutput": 943
|
"bytesInOutput": 474
|
||||||
},
|
},
|
||||||
"src/handpose/box.js": {
|
"src/handpose/box.js": {
|
||||||
"bytesInOutput": 2864
|
"bytesInOutput": 1362
|
||||||
},
|
},
|
||||||
"src/handpose/handdetector.js": {
|
"src/handpose/handdetector.js": {
|
||||||
"bytesInOutput": 4151
|
"bytesInOutput": 2010
|
||||||
},
|
},
|
||||||
"src/handpose/keypoints.js": {
|
"src/handpose/keypoints.js": {
|
||||||
"bytesInOutput": 283
|
"bytesInOutput": 156
|
||||||
},
|
},
|
||||||
"src/handpose/util.js": {
|
"src/handpose/util.js": {
|
||||||
"bytesInOutput": 2803
|
"bytesInOutput": 988
|
||||||
},
|
},
|
||||||
"src/handpose/pipeline.js": {
|
"src/handpose/pipeline.js": {
|
||||||
"bytesInOutput": 7958
|
"bytesInOutput": 3221
|
||||||
|
},
|
||||||
|
"src/handpose/anchors.js": {
|
||||||
|
"bytesInOutput": 127001
|
||||||
},
|
},
|
||||||
"src/handpose/handpose.js": {
|
"src/handpose/handpose.js": {
|
||||||
"bytesInOutput": 2365
|
"bytesInOutput": 992
|
||||||
},
|
},
|
||||||
"src/imagefx.js": {
|
"src/imagefx.js": {
|
||||||
"bytesInOutput": 21557
|
"bytesInOutput": 11014
|
||||||
},
|
},
|
||||||
"config.js": {
|
"config.js": {
|
||||||
"bytesInOutput": 2491
|
"bytesInOutput": 1273
|
||||||
},
|
},
|
||||||
"package.json": {
|
"package.json": {
|
||||||
"bytesInOutput": 3144
|
"bytesInOutput": 2567
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytesInOutput": 14666
|
"bytesInOutput": 8413
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bytes": 3074572
|
"bytes": 1273103
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,11 +1,11 @@
|
||||||
{
|
{
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"config.js": {
|
"config.js": {
|
||||||
"bytes": 7322,
|
"bytes": 7216,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"package.json": {
|
"package.json": {
|
||||||
"bytes": 2870,
|
"bytes": 2915,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/emotion/emotion.js": {
|
"src/emotion/emotion.js": {
|
||||||
|
@ -74,6 +74,10 @@
|
||||||
"bytes": 19592,
|
"bytes": 19592,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
|
"src/handpose/anchors.js": {
|
||||||
|
"bytes": 224151,
|
||||||
|
"imports": []
|
||||||
|
},
|
||||||
"src/handpose/box.js": {
|
"src/handpose/box.js": {
|
||||||
"bytes": 2572,
|
"bytes": 2572,
|
||||||
"imports": []
|
"imports": []
|
||||||
|
@ -87,7 +91,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/handpose/handpose.js": {
|
"src/handpose/handpose.js": {
|
||||||
"bytes": 2152,
|
"bytes": 1849,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "src/handpose/handdetector.js"
|
"path": "src/handpose/handdetector.js"
|
||||||
|
@ -97,6 +101,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "src/handpose/pipeline.js"
|
"path": "src/handpose/pipeline.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "src/handpose/anchors.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -120,7 +127,7 @@
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytes": 15047,
|
"bytes": 15055,
|
||||||
"imports": [
|
"imports": [
|
||||||
{
|
{
|
||||||
"path": "src/facemesh/facemesh.js"
|
"path": "src/facemesh/facemesh.js"
|
||||||
|
@ -152,7 +159,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/imagefx.js": {
|
"src/imagefx.js": {
|
||||||
"bytes": 19396,
|
"bytes": 19352,
|
||||||
"imports": []
|
"imports": []
|
||||||
},
|
},
|
||||||
"src/posenet/buildParts.js": {
|
"src/posenet/buildParts.js": {
|
||||||
|
@ -275,112 +282,115 @@
|
||||||
"dist/human.node-nobundle.js.map": {
|
"dist/human.node-nobundle.js.map": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"bytes": 271929
|
"bytes": 620560
|
||||||
},
|
},
|
||||||
"dist/human.node-nobundle.js": {
|
"dist/human.node-nobundle.js": {
|
||||||
"imports": [],
|
"imports": [],
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"src/facemesh/blazeface.js": {
|
"src/facemesh/blazeface.js": {
|
||||||
"bytesInOutput": 7137
|
"bytesInOutput": 3082
|
||||||
},
|
},
|
||||||
"src/facemesh/keypoints.js": {
|
"src/facemesh/keypoints.js": {
|
||||||
"bytesInOutput": 2771
|
"bytesInOutput": 1945
|
||||||
},
|
},
|
||||||
"src/facemesh/box.js": {
|
"src/facemesh/box.js": {
|
||||||
"bytesInOutput": 2083
|
"bytesInOutput": 1021
|
||||||
},
|
},
|
||||||
"src/facemesh/util.js": {
|
"src/facemesh/util.js": {
|
||||||
"bytesInOutput": 3027
|
"bytesInOutput": 1171
|
||||||
},
|
},
|
||||||
"src/facemesh/pipeline.js": {
|
"src/facemesh/pipeline.js": {
|
||||||
"bytesInOutput": 13260
|
"bytesInOutput": 5571
|
||||||
},
|
},
|
||||||
"src/facemesh/uvcoords.js": {
|
"src/facemesh/uvcoords.js": {
|
||||||
"bytesInOutput": 20586
|
"bytesInOutput": 16785
|
||||||
},
|
},
|
||||||
"src/facemesh/triangulation.js": {
|
"src/facemesh/triangulation.js": {
|
||||||
"bytesInOutput": 23311
|
"bytesInOutput": 9990
|
||||||
},
|
},
|
||||||
"src/facemesh/facemesh.js": {
|
"src/facemesh/facemesh.js": {
|
||||||
"bytesInOutput": 2666
|
"bytesInOutput": 1254
|
||||||
},
|
},
|
||||||
"src/profile.js": {
|
"src/profile.js": {
|
||||||
"bytesInOutput": 1095
|
"bytesInOutput": 619
|
||||||
},
|
},
|
||||||
"src/ssrnet/ssrnet.js": {
|
"src/ssrnet/ssrnet.js": {
|
||||||
"bytesInOutput": 2348
|
"bytesInOutput": 1236
|
||||||
},
|
},
|
||||||
"src/emotion/emotion.js": {
|
"src/emotion/emotion.js": {
|
||||||
"bytesInOutput": 2043
|
"bytesInOutput": 1082
|
||||||
},
|
},
|
||||||
"src/posenet/modelBase.js": {
|
"src/posenet/modelBase.js": {
|
||||||
"bytesInOutput": 912
|
"bytesInOutput": 455
|
||||||
},
|
},
|
||||||
"src/posenet/modelMobileNet.js": {
|
"src/posenet/modelMobileNet.js": {
|
||||||
"bytesInOutput": 506
|
"bytesInOutput": 267
|
||||||
},
|
},
|
||||||
"src/posenet/heapSort.js": {
|
"src/posenet/heapSort.js": {
|
||||||
"bytesInOutput": 1639
|
"bytesInOutput": 1041
|
||||||
},
|
},
|
||||||
"src/posenet/buildParts.js": {
|
"src/posenet/buildParts.js": {
|
||||||
"bytesInOutput": 1754
|
"bytesInOutput": 546
|
||||||
},
|
},
|
||||||
"src/posenet/keypoints.js": {
|
"src/posenet/keypoints.js": {
|
||||||
"bytesInOutput": 2288
|
"bytesInOutput": 1621
|
||||||
},
|
},
|
||||||
"src/posenet/vectors.js": {
|
"src/posenet/vectors.js": {
|
||||||
"bytesInOutput": 1416
|
"bytesInOutput": 607
|
||||||
},
|
},
|
||||||
"src/posenet/decodePose.js": {
|
"src/posenet/decodePose.js": {
|
||||||
"bytesInOutput": 3775
|
"bytesInOutput": 1016
|
||||||
},
|
},
|
||||||
"src/posenet/decodeMultiple.js": {
|
"src/posenet/decodeMultiple.js": {
|
||||||
"bytesInOutput": 1992
|
"bytesInOutput": 603
|
||||||
},
|
},
|
||||||
"src/posenet/util.js": {
|
"src/posenet/util.js": {
|
||||||
"bytesInOutput": 2404
|
"bytesInOutput": 1053
|
||||||
},
|
},
|
||||||
"src/posenet/modelPoseNet.js": {
|
"src/posenet/modelPoseNet.js": {
|
||||||
"bytesInOutput": 1939
|
"bytesInOutput": 841
|
||||||
},
|
},
|
||||||
"src/posenet/posenet.js": {
|
"src/posenet/posenet.js": {
|
||||||
"bytesInOutput": 917
|
"bytesInOutput": 459
|
||||||
},
|
},
|
||||||
"src/handpose/box.js": {
|
"src/handpose/box.js": {
|
||||||
"bytesInOutput": 2752
|
"bytesInOutput": 1376
|
||||||
},
|
},
|
||||||
"src/handpose/handdetector.js": {
|
"src/handpose/handdetector.js": {
|
||||||
"bytesInOutput": 4029
|
"bytesInOutput": 2004
|
||||||
},
|
},
|
||||||
"src/handpose/keypoints.js": {
|
"src/handpose/keypoints.js": {
|
||||||
"bytesInOutput": 265
|
"bytesInOutput": 155
|
||||||
},
|
},
|
||||||
"src/handpose/util.js": {
|
"src/handpose/util.js": {
|
||||||
"bytesInOutput": 2671
|
"bytesInOutput": 972
|
||||||
},
|
},
|
||||||
"src/handpose/pipeline.js": {
|
"src/handpose/pipeline.js": {
|
||||||
"bytesInOutput": 7653
|
"bytesInOutput": 3223
|
||||||
|
},
|
||||||
|
"src/handpose/anchors.js": {
|
||||||
|
"bytesInOutput": 127000
|
||||||
},
|
},
|
||||||
"src/handpose/handpose.js": {
|
"src/handpose/handpose.js": {
|
||||||
"bytesInOutput": 2273
|
"bytesInOutput": 1014
|
||||||
},
|
},
|
||||||
"src/imagefx.js": {
|
"src/imagefx.js": {
|
||||||
"bytesInOutput": 20139
|
"bytesInOutput": 11013
|
||||||
},
|
},
|
||||||
"config.js": {
|
"config.js": {
|
||||||
"bytesInOutput": 2293
|
"bytesInOutput": 1272
|
||||||
},
|
},
|
||||||
"package.json": {
|
"package.json": {
|
||||||
"bytesInOutput": 3015
|
"bytesInOutput": 2567
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytesInOutput": 47
|
"bytesInOutput": 29
|
||||||
},
|
},
|
||||||
"src/human.js": {
|
"src/human.js": {
|
||||||
"bytesInOutput": 13231
|
"bytesInOutput": 8359
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bytes": 159587
|
"bytes": 211520
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"name": "Human Library",
|
||||||
|
"short_name": "Human",
|
||||||
|
"icons": [
|
||||||
|
{ "src": "/assets/icon.png", "sizes": "853x853", "type": "image/png", "purpose": "any maskable" }
|
||||||
|
],
|
||||||
|
"start_url": "/",
|
||||||
|
"scope": "/",
|
||||||
|
"display": "standalone",
|
||||||
|
"background_color": "#000000",
|
||||||
|
"theme_color": "#000000"
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,105 @@
|
||||||
|
{
|
||||||
|
"format": "graph-model",
|
||||||
|
"generatedBy": "2.3.1",
|
||||||
|
"convertedBy": "TensorFlow.js Converter v2.4.0",
|
||||||
|
"userDefinedMetadata":
|
||||||
|
{
|
||||||
|
"signature":
|
||||||
|
{
|
||||||
|
"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"}]}}}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"modelTopology":
|
||||||
|
{
|
||||||
|
"node":
|
||||||
|
[
|
||||||
|
{"name":"unknown_60","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"64"},{"size":"1"}]}}}}},
|
||||||
|
{"name":"unknown_66","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"128"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"unknown_43","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"32"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"unknown_49","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"64"},{"size":"1"}]}}}}},
|
||||||
|
{"name":"unknown_26","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"16"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"unknown_32","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"32"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"unknown_9","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"8"},{"size":"1"}]}}}}},
|
||||||
|
{"name":"unknown_15","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"16"},{"size":"1"}]}}}}},
|
||||||
|
{"name":"unknown_77","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"128"},{"size":"7"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"unknown_78","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"7"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/global_average_pooling2d_1/Mean/reduction_indices","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}},
|
||||||
|
{"name":"input_1","op":"Placeholder","attr":{"dtype":{"type":"DT_FLOAT"},"shape":{"shape":{"dim":[{"size":"-1"},{"size":"64"},{"size":"64"},{"size":"1"}]}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_1/Conv2D_weights","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"1"},{"size":"8"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_6/Conv2D_weights","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"64"},{"size":"128"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_1/Conv2D_bn_offset","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"8"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_2/Conv2D_weights","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"8"},{"size":"8"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_6/Conv2D_bn_offset","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"128"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_2/Conv2D_bn_offset","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"8"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_3/Conv2D_weights","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"8"},{"size":"16"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_7/separable_conv2d_weights","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"64"},{"size":"128"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_3/Conv2D_bn_offset","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"16"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_1/separable_conv2d_weights","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"8"},{"size":"16"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_1/separable_conv2d_bn_offset","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"16"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_7/separable_conv2d_bn_offset","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"128"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_2/separable_conv2d_weights","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"16"},{"size":"16"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_2/separable_conv2d_bn_offset","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"16"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_4/Conv2D_weights","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"16"},{"size":"32"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_4/Conv2D_bn_offset","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"32"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_3/separable_conv2d_weights","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"16"},{"size":"32"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_3/separable_conv2d_bn_offset","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"32"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_8/separable_conv2d_weights","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"128"},{"size":"128"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_4/separable_conv2d_weights","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"32"},{"size":"32"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_4/separable_conv2d_bn_offset","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"32"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_5/Conv2D_weights","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"32"},{"size":"64"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_8/separable_conv2d_bn_offset","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"128"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_5/Conv2D_bn_offset","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"64"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_5/separable_conv2d_weights","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"32"},{"size":"64"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_5/separable_conv2d_bn_offset","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"64"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_6/separable_conv2d_weights","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"64"},{"size":"64"}]}}},"dtype":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_6/separable_conv2d_bn_offset","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"64"}]}}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/activation_1/Relu","op":"_FusedConv2D","input":["input_1","StatefulPartitionedCall/model_1/conv2d_1/Conv2D_weights","StatefulPartitionedCall/model_1/conv2d_1/Conv2D_bn_offset"],"device":"/device:CPU:0","attr":{"use_cudnn_on_gpu":{"b":true},"T":{"type":"DT_FLOAT"},"num_args":{"i":"1"},"data_format":{"s":"TkhXQw=="},"fused_ops":{"list":{"s":["Qmlhc0FkZA==","UmVsdQ=="]}},"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}},"epsilon":{"f":0}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/activation_2/Relu","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/activation_1/Relu","StatefulPartitionedCall/model_1/conv2d_2/Conv2D_weights","StatefulPartitionedCall/model_1/conv2d_2/Conv2D_bn_offset"],"device":"/device:CPU:0","attr":{"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"fused_ops":{"list":{"s":["Qmlhc0FkZA==","UmVsdQ=="]}},"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"num_args":{"i":"1"},"strides":{"list":{"i":["1","1","1","1"]}},"epsilon":{"f":0},"explicit_paddings":{"list":{}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_1/separable_conv2d/depthwise","op":"DepthwiseConv2dNative","input":["StatefulPartitionedCall/model_1/activation_2/Relu","unknown_9"],"attr":{"padding":{"s":"U0FNRQ=="},"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/batch_normalization_3/FusedBatchNormV3","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/activation_2/Relu","StatefulPartitionedCall/model_1/conv2d_3/Conv2D_weights","StatefulPartitionedCall/model_1/conv2d_3/Conv2D_bn_offset"],"device":"/device:CPU:0","attr":{"fused_ops":{"list":{"s":["Qmlhc0FkZA=="]}},"epsilon":{"f":0},"strides":{"list":{"i":["1","2","2","1"]}},"data_format":{"s":"TkhXQw=="},"use_cudnn_on_gpu":{"b":true},"explicit_paddings":{"list":{}},"num_args":{"i":"1"},"padding":{"s":"U0FNRQ=="},"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/activation_3/Relu","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/separable_conv2d_1/separable_conv2d/depthwise","StatefulPartitionedCall/model_1/separable_conv2d_1/separable_conv2d_weights","StatefulPartitionedCall/model_1/separable_conv2d_1/separable_conv2d_bn_offset"],"device":"/device:CPU:0","attr":{"epsilon":{"f":0},"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}},"fused_ops":{"list":{"s":["Qmlhc0FkZA==","UmVsdQ=="]}},"data_format":{"s":"TkhXQw=="},"use_cudnn_on_gpu":{"b":true},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}},"num_args":{"i":"1"},"explicit_paddings":{"list":{}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_2/separable_conv2d/depthwise","op":"DepthwiseConv2dNative","input":["StatefulPartitionedCall/model_1/activation_3/Relu","unknown_15"],"attr":{"padding":{"s":"U0FNRQ=="},"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/batch_normalization_5/FusedBatchNormV3","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/separable_conv2d_2/separable_conv2d/depthwise","StatefulPartitionedCall/model_1/separable_conv2d_2/separable_conv2d_weights","StatefulPartitionedCall/model_1/separable_conv2d_2/separable_conv2d_bn_offset"],"device":"/device:CPU:0","attr":{"num_args":{"i":"1"},"fused_ops":{"list":{"s":["Qmlhc0FkZA=="]}},"dilations":{"list":{"i":["1","1","1","1"]}},"epsilon":{"f":0},"use_cudnn_on_gpu":{"b":true},"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="},"data_format":{"s":"TkhXQw=="},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/max_pooling2d_1/MaxPool","op":"MaxPool","input":["StatefulPartitionedCall/model_1/batch_normalization_5/FusedBatchNormV3"],"attr":{"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","2","2","1"]}},"data_format":{"s":"TkhXQw=="},"ksize":{"list":{"i":["1","3","3","1"]}},"padding":{"s":"U0FNRQ=="}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/add_1/add","op":"AddV2","input":["StatefulPartitionedCall/model_1/max_pooling2d_1/MaxPool","StatefulPartitionedCall/model_1/batch_normalization_3/FusedBatchNormV3"],"attr":{"T":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_3/separable_conv2d/depthwise","op":"DepthwiseConv2dNative","input":["StatefulPartitionedCall/model_1/add_1/add","unknown_26"],"attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"U0FNRQ=="},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/batch_normalization_6/FusedBatchNormV3","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/add_1/add","StatefulPartitionedCall/model_1/conv2d_4/Conv2D_weights","StatefulPartitionedCall/model_1/conv2d_4/Conv2D_bn_offset"],"device":"/device:CPU:0","attr":{"fused_ops":{"list":{"s":["Qmlhc0FkZA=="]}},"epsilon":{"f":0},"padding":{"s":"U0FNRQ=="},"strides":{"list":{"i":["1","2","2","1"]}},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}},"num_args":{"i":"1"},"data_format":{"s":"TkhXQw=="},"use_cudnn_on_gpu":{"b":true}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/activation_4/Relu","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/separable_conv2d_3/separable_conv2d/depthwise","StatefulPartitionedCall/model_1/separable_conv2d_3/separable_conv2d_weights","StatefulPartitionedCall/model_1/separable_conv2d_3/separable_conv2d_bn_offset"],"device":"/device:CPU:0","attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"fused_ops":{"list":{"s":["Qmlhc0FkZA==","UmVsdQ=="]}},"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"epsilon":{"f":0},"num_args":{"i":"1"},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_4/separable_conv2d/depthwise","op":"DepthwiseConv2dNative","input":["StatefulPartitionedCall/model_1/activation_4/Relu","unknown_32"],"attr":{"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","1","1","1"]}},"dilations":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"padding":{"s":"U0FNRQ=="}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/batch_normalization_8/FusedBatchNormV3","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/separable_conv2d_4/separable_conv2d/depthwise","StatefulPartitionedCall/model_1/separable_conv2d_4/separable_conv2d_weights","StatefulPartitionedCall/model_1/separable_conv2d_4/separable_conv2d_bn_offset"],"device":"/device:CPU:0","attr":{"data_format":{"s":"TkhXQw=="},"fused_ops":{"list":{"s":["Qmlhc0FkZA=="]}},"strides":{"list":{"i":["1","1","1","1"]}},"dilations":{"list":{"i":["1","1","1","1"]}},"num_args":{"i":"1"},"explicit_paddings":{"list":{}},"epsilon":{"f":0},"use_cudnn_on_gpu":{"b":true},"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/max_pooling2d_2/MaxPool","op":"MaxPool","input":["StatefulPartitionedCall/model_1/batch_normalization_8/FusedBatchNormV3"],"attr":{"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="},"padding":{"s":"U0FNRQ=="},"strides":{"list":{"i":["1","2","2","1"]}},"ksize":{"list":{"i":["1","3","3","1"]}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/add_2/add","op":"AddV2","input":["StatefulPartitionedCall/model_1/max_pooling2d_2/MaxPool","StatefulPartitionedCall/model_1/batch_normalization_6/FusedBatchNormV3"],"attr":{"T":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_5/separable_conv2d/depthwise","op":"DepthwiseConv2dNative","input":["StatefulPartitionedCall/model_1/add_2/add","unknown_43"],"attr":{"padding":{"s":"U0FNRQ=="},"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/batch_normalization_9/FusedBatchNormV3","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/add_2/add","StatefulPartitionedCall/model_1/conv2d_5/Conv2D_weights","StatefulPartitionedCall/model_1/conv2d_5/Conv2D_bn_offset"],"device":"/device:CPU:0","attr":{"num_args":{"i":"1"},"strides":{"list":{"i":["1","2","2","1"]}},"padding":{"s":"U0FNRQ=="},"use_cudnn_on_gpu":{"b":true},"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"fused_ops":{"list":{"s":["Qmlhc0FkZA=="]}},"dilations":{"list":{"i":["1","1","1","1"]}},"epsilon":{"f":0},"T":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/activation_5/Relu","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/separable_conv2d_5/separable_conv2d/depthwise","StatefulPartitionedCall/model_1/separable_conv2d_5/separable_conv2d_weights","StatefulPartitionedCall/model_1/separable_conv2d_5/separable_conv2d_bn_offset"],"device":"/device:CPU:0","attr":{"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"epsilon":{"f":0},"num_args":{"i":"1"},"padding":{"s":"VkFMSUQ="},"fused_ops":{"list":{"s":["Qmlhc0FkZA==","UmVsdQ=="]}},"explicit_paddings":{"list":{}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_6/separable_conv2d/depthwise","op":"DepthwiseConv2dNative","input":["StatefulPartitionedCall/model_1/activation_5/Relu","unknown_49"],"attr":{"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"U0FNRQ=="},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/batch_normalization_11/FusedBatchNormV3","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/separable_conv2d_6/separable_conv2d/depthwise","StatefulPartitionedCall/model_1/separable_conv2d_6/separable_conv2d_weights","StatefulPartitionedCall/model_1/separable_conv2d_6/separable_conv2d_bn_offset"],"device":"/device:CPU:0","attr":{"epsilon":{"f":0},"use_cudnn_on_gpu":{"b":true},"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"num_args":{"i":"1"},"explicit_paddings":{"list":{}},"fused_ops":{"list":{"s":["Qmlhc0FkZA=="]}},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/max_pooling2d_3/MaxPool","op":"MaxPool","input":["StatefulPartitionedCall/model_1/batch_normalization_11/FusedBatchNormV3"],"attr":{"padding":{"s":"U0FNRQ=="},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","2","2","1"]}},"data_format":{"s":"TkhXQw=="},"ksize":{"list":{"i":["1","3","3","1"]}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/add_3/add","op":"AddV2","input":["StatefulPartitionedCall/model_1/max_pooling2d_3/MaxPool","StatefulPartitionedCall/model_1/batch_normalization_9/FusedBatchNormV3"],"attr":{"T":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/batch_normalization_12/FusedBatchNormV3","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/add_3/add","StatefulPartitionedCall/model_1/conv2d_6/Conv2D_weights","StatefulPartitionedCall/model_1/conv2d_6/Conv2D_bn_offset"],"device":"/device:CPU:0","attr":{"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"num_args":{"i":"1"},"explicit_paddings":{"list":{}},"padding":{"s":"U0FNRQ=="},"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}},"epsilon":{"f":0},"fused_ops":{"list":{"s":["Qmlhc0FkZA=="]}},"strides":{"list":{"i":["1","2","2","1"]}}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_7/separable_conv2d/depthwise","op":"DepthwiseConv2dNative","input":["StatefulPartitionedCall/model_1/add_3/add","unknown_60"],"attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"U0FNRQ=="},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/activation_6/Relu","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/separable_conv2d_7/separable_conv2d/depthwise","StatefulPartitionedCall/model_1/separable_conv2d_7/separable_conv2d_weights","StatefulPartitionedCall/model_1/separable_conv2d_7/separable_conv2d_bn_offset"],"device":"/device:CPU:0","attr":{"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}},"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"num_args":{"i":"1"},"fused_ops":{"list":{"s":["Qmlhc0FkZA==","UmVsdQ=="]}},"epsilon":{"f":0},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"use_cudnn_on_gpu":{"b":true}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/separable_conv2d_8/separable_conv2d/depthwise","op":"DepthwiseConv2dNative","input":["StatefulPartitionedCall/model_1/activation_6/Relu","unknown_66"],"attr":{"data_format":{"s":"TkhXQw=="},"padding":{"s":"U0FNRQ=="},"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/batch_normalization_14/FusedBatchNormV3","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/separable_conv2d_8/separable_conv2d/depthwise","StatefulPartitionedCall/model_1/separable_conv2d_8/separable_conv2d_weights","StatefulPartitionedCall/model_1/separable_conv2d_8/separable_conv2d_bn_offset"],"device":"/device:CPU:0","attr":{"explicit_paddings":{"list":{}},"fused_ops":{"list":{"s":["Qmlhc0FkZA=="]}},"epsilon":{"f":0},"use_cudnn_on_gpu":{"b":true},"padding":{"s":"VkFMSUQ="},"dilations":{"list":{"i":["1","1","1","1"]}},"num_args":{"i":"1"},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/max_pooling2d_4/MaxPool","op":"MaxPool","input":["StatefulPartitionedCall/model_1/batch_normalization_14/FusedBatchNormV3"],"attr":{"data_format":{"s":"TkhXQw=="},"ksize":{"list":{"i":["1","3","3","1"]}},"strides":{"list":{"i":["1","2","2","1"]}},"padding":{"s":"U0FNRQ=="},"T":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/add_4/add","op":"AddV2","input":["StatefulPartitionedCall/model_1/max_pooling2d_4/MaxPool","StatefulPartitionedCall/model_1/batch_normalization_12/FusedBatchNormV3"],"attr":{"T":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/conv2d_7/BiasAdd","op":"_FusedConv2D","input":["StatefulPartitionedCall/model_1/add_4/add","unknown_77","unknown_78"],"device":"/device:CPU:0","attr":{"epsilon":{"f":0},"num_args":{"i":"1"},"fused_ops":{"list":{"s":["Qmlhc0FkZA=="]}},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"U0FNRQ=="},"T":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/global_average_pooling2d_1/Mean","op":"Mean","input":["StatefulPartitionedCall/model_1/conv2d_7/BiasAdd","StatefulPartitionedCall/model_1/global_average_pooling2d_1/Mean/reduction_indices"],"attr":{"keep_dims":{"b":false},"Tidx":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"StatefulPartitionedCall/model_1/predictions/Softmax","op":"Softmax","input":["StatefulPartitionedCall/model_1/global_average_pooling2d_1/Mean"],"attr":{"T":{"type":"DT_FLOAT"}}},
|
||||||
|
{"name":"Identity","op":"Identity","input":["StatefulPartitionedCall/model_1/predictions/Softmax"],"attr":{"T":{"type":"DT_FLOAT"}}}
|
||||||
|
],
|
||||||
|
"library": {},
|
||||||
|
"versions":
|
||||||
|
{
|
||||||
|
"producer": 440
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"weightsManifest":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"paths": ["emotion.bin"],
|
||||||
|
"weights": [{"name":"unknown_60","shape":[3,3,64,1],"dtype":"float32"},{"name":"unknown_66","shape":[3,3,128,1],"dtype":"float32"},{"name":"unknown_43","shape":[3,3,32,1],"dtype":"float32"},{"name":"unknown_49","shape":[3,3,64,1],"dtype":"float32"},{"name":"unknown_26","shape":[3,3,16,1],"dtype":"float32"},{"name":"unknown_32","shape":[3,3,32,1],"dtype":"float32"},{"name":"unknown_9","shape":[3,3,8,1],"dtype":"float32"},{"name":"unknown_15","shape":[3,3,16,1],"dtype":"float32"},{"name":"unknown_77","shape":[3,3,128,7],"dtype":"float32"},{"name":"unknown_78","shape":[7],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/global_average_pooling2d_1/Mean/reduction_indices","shape":[2],"dtype":"int32"},{"name":"StatefulPartitionedCall/model_1/conv2d_1/Conv2D_weights","shape":[3,3,1,8],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/conv2d_6/Conv2D_weights","shape":[1,1,64,128],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/conv2d_1/Conv2D_bn_offset","shape":[8],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/conv2d_2/Conv2D_weights","shape":[3,3,8,8],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/conv2d_6/Conv2D_bn_offset","shape":[128],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/conv2d_2/Conv2D_bn_offset","shape":[8],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/conv2d_3/Conv2D_weights","shape":[1,1,8,16],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_7/separable_conv2d_weights","shape":[1,1,64,128],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/conv2d_3/Conv2D_bn_offset","shape":[16],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_1/separable_conv2d_weights","shape":[1,1,8,16],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_1/separable_conv2d_bn_offset","shape":[16],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_7/separable_conv2d_bn_offset","shape":[128],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_2/separable_conv2d_weights","shape":[1,1,16,16],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_2/separable_conv2d_bn_offset","shape":[16],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/conv2d_4/Conv2D_weights","shape":[1,1,16,32],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/conv2d_4/Conv2D_bn_offset","shape":[32],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_3/separable_conv2d_weights","shape":[1,1,16,32],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_3/separable_conv2d_bn_offset","shape":[32],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_8/separable_conv2d_weights","shape":[1,1,128,128],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_4/separable_conv2d_weights","shape":[1,1,32,32],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_4/separable_conv2d_bn_offset","shape":[32],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/conv2d_5/Conv2D_weights","shape":[1,1,32,64],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_8/separable_conv2d_bn_offset","shape":[128],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/conv2d_5/Conv2D_bn_offset","shape":[64],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_5/separable_conv2d_weights","shape":[1,1,32,64],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_5/separable_conv2d_bn_offset","shape":[64],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_6/separable_conv2d_weights","shape":[1,1,64,64],"dtype":"float32"},{"name":"StatefulPartitionedCall/model_1/separable_conv2d_6/separable_conv2d_bn_offset","shape":[64],"dtype":"float32"}]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
10
package.json
10
package.json
|
@ -40,11 +40,11 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation src/node.js",
|
"start": "node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation src/node.js",
|
||||||
"lint": "eslint src/*.js demo/*.js",
|
"lint": "eslint src/*.js demo/*.js",
|
||||||
"build-iife": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=iife --external:fs --global-name=Human --metafile=dist/human.json --outfile=dist/human.js src/human.js",
|
"build-iife": "esbuild --bundle --minify --platform=browser --sourcemap --target=esnext --format=iife --external:fs --global-name=Human --metafile=dist/human.json --outfile=dist/human.js src/human.js",
|
||||||
"build-esm-bundle": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --external:fs --metafile=dist/human.esm.json --outfile=dist/human.esm.js src/human.js",
|
"build-esm-bundle": "esbuild --bundle --minify --platform=browser --sourcemap --target=esnext --format=esm --external:fs --metafile=dist/human.esm.json --outfile=dist/human.esm.js src/human.js",
|
||||||
"build-esm-nobundle": "esbuild --bundle --platform=browser --sourcemap --target=esnext --format=esm --external:@tensorflow --external:fs --metafile=dist/human.esm-nobundle.json --outfile=dist/human.esm-nobundle.js src/human.js",
|
"build-esm-nobundle": "esbuild --bundle --minify --platform=browser --sourcemap --target=esnext --format=esm --external:@tensorflow --external:fs --metafile=dist/human.esm-nobundle.json --outfile=dist/human.esm-nobundle.js src/human.js",
|
||||||
"build-node": "esbuild --bundle --platform=node --sourcemap --target=esnext --format=cjs --metafile=dist/human.node.json --outfile=dist/human.node.js src/human.js",
|
"build-node": "esbuild --bundle --minify --platform=node --sourcemap --target=esnext --format=cjs --metafile=dist/human.node.json --outfile=dist/human.node.js src/human.js",
|
||||||
"build-node-nobundle": "esbuild --bundle --platform=node --sourcemap --target=esnext --format=cjs --external:@tensorflow --metafile=dist/human.node.json --outfile=dist/human.node-nobundle.js src/human.js",
|
"build-node-nobundle": "esbuild --bundle --minify --platform=node --sourcemap --target=esnext --format=cjs --external:@tensorflow --metafile=dist/human.node.json --outfile=dist/human.node-nobundle.js src/human.js",
|
||||||
"build": "rimraf dist/* && npm run build-iife && npm run build-esm-bundle && npm run build-esm-nobundle && npm run build-node && npm run build-node-nobundle && ls -l dist/",
|
"build": "rimraf dist/* && npm run build-iife && npm run build-esm-bundle && npm run build-esm-nobundle && npm run build-node && npm run build-node-nobundle && ls -l dist/",
|
||||||
"update": "npm update --depth 20 --force && npm dedupe && npm prune && npm audit",
|
"update": "npm update --depth 20 --force && npm dedupe && npm prune && npm audit",
|
||||||
"changelog": "node changelog.js"
|
"changelog": "node changelog.js"
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2,6 +2,7 @@ const tf = require('@tensorflow/tfjs');
|
||||||
const hand = require('./handdetector');
|
const hand = require('./handdetector');
|
||||||
const keypoints = require('./keypoints');
|
const keypoints = require('./keypoints');
|
||||||
const pipe = require('./pipeline');
|
const pipe = require('./pipeline');
|
||||||
|
const anchors = require('./anchors.js');
|
||||||
|
|
||||||
class HandPose {
|
class HandPose {
|
||||||
constructor(pipeline) {
|
constructor(pipeline) {
|
||||||
|
@ -33,23 +34,12 @@ class HandPose {
|
||||||
}
|
}
|
||||||
exports.HandPose = HandPose;
|
exports.HandPose = HandPose;
|
||||||
|
|
||||||
async function loadAnchors(url) {
|
|
||||||
if (tf.env().features.IS_NODE) {
|
|
||||||
// eslint-disable-next-line global-require
|
|
||||||
const fs = require('fs');
|
|
||||||
const data = await fs.readFileSync(url.replace('file://', ''));
|
|
||||||
return JSON.parse(data);
|
|
||||||
}
|
|
||||||
return tf.util.fetch(url).then((d) => d.json());
|
|
||||||
}
|
|
||||||
|
|
||||||
async function load(config) {
|
async function load(config) {
|
||||||
const [anchors, handDetectorModel, handPoseModel] = await Promise.all([
|
const [handDetectorModel, handPoseModel] = await Promise.all([
|
||||||
loadAnchors(config.detector.anchors),
|
|
||||||
tf.loadGraphModel(config.detector.modelPath, { fromTFHub: config.detector.modelPath.includes('tfhub.dev') }),
|
tf.loadGraphModel(config.detector.modelPath, { fromTFHub: config.detector.modelPath.includes('tfhub.dev') }),
|
||||||
tf.loadGraphModel(config.skeleton.modelPath, { fromTFHub: config.skeleton.modelPath.includes('tfhub.dev') }),
|
tf.loadGraphModel(config.skeleton.modelPath, { fromTFHub: config.skeleton.modelPath.includes('tfhub.dev') }),
|
||||||
]);
|
]);
|
||||||
const detector = new hand.HandDetector(handDetectorModel, anchors, config);
|
const detector = new hand.HandDetector(handDetectorModel, anchors.anchors, config);
|
||||||
const pipeline = new pipe.HandPipeline(detector, handPoseModel, config);
|
const pipeline = new pipe.HandPipeline(detector, handPoseModel, config);
|
||||||
const handpose = new HandPose(pipeline);
|
const handpose = new HandPose(pipeline);
|
||||||
return handpose;
|
return handpose;
|
||||||
|
|
28
src/human.js
28
src/human.js
|
@ -109,28 +109,36 @@ class Human {
|
||||||
|
|
||||||
async load(userConfig) {
|
async load(userConfig) {
|
||||||
if (userConfig) this.config = mergeDeep(defaults, userConfig);
|
if (userConfig) this.config = mergeDeep(defaults, userConfig);
|
||||||
|
|
||||||
|
if (first) {
|
||||||
|
this.log(`version: ${this.version} TensorFlow/JS version: ${tf.version_core}`);
|
||||||
|
this.log('configuration:', this.config);
|
||||||
|
this.log('flags:', tf.ENV.flags);
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (this.config.face.enabled && !this.models.facemesh) {
|
if (this.config.face.enabled && !this.models.facemesh) {
|
||||||
this.log('Load model: Face');
|
this.log('load model: face');
|
||||||
this.models.facemesh = await facemesh.load(this.config.face);
|
this.models.facemesh = await facemesh.load(this.config.face);
|
||||||
}
|
}
|
||||||
if (this.config.body.enabled && !this.models.posenet) {
|
if (this.config.body.enabled && !this.models.posenet) {
|
||||||
this.log('Load model: Body');
|
this.log('load model: body');
|
||||||
this.models.posenet = await posenet.load(this.config.body);
|
this.models.posenet = await posenet.load(this.config.body);
|
||||||
}
|
}
|
||||||
if (this.config.hand.enabled && !this.models.handpose) {
|
if (this.config.hand.enabled && !this.models.handpose) {
|
||||||
this.log('Load model: Hand');
|
this.log('load model: hand');
|
||||||
this.models.handpose = await handpose.load(this.config.hand);
|
this.models.handpose = await handpose.load(this.config.hand);
|
||||||
}
|
}
|
||||||
if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) {
|
if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) {
|
||||||
this.log('Load model: Age');
|
this.log('load model: age');
|
||||||
this.models.age = await ssrnet.loadAge(this.config);
|
this.models.age = await ssrnet.loadAge(this.config);
|
||||||
}
|
}
|
||||||
if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) {
|
if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) {
|
||||||
this.log('Load model: Gender');
|
this.log('load model: gender');
|
||||||
this.models.gender = await ssrnet.loadGender(this.config);
|
this.models.gender = await ssrnet.loadGender(this.config);
|
||||||
}
|
}
|
||||||
if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) {
|
if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) {
|
||||||
this.log('Load model: Emotion');
|
this.log('load model: emotion');
|
||||||
this.models.emotion = await emotion.load(this.config);
|
this.models.emotion = await emotion.load(this.config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -260,14 +268,6 @@ class Human {
|
||||||
await this.checkBackend();
|
await this.checkBackend();
|
||||||
perf.backend = Math.trunc(now() - timeStamp);
|
perf.backend = Math.trunc(now() - timeStamp);
|
||||||
|
|
||||||
// check number of loaded models
|
|
||||||
if (first) {
|
|
||||||
this.log('Starting');
|
|
||||||
this.log('Configuration:', this.config);
|
|
||||||
this.log('Flags:', tf.ENV.flags);
|
|
||||||
first = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// load models if enabled
|
// load models if enabled
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
this.state = 'load';
|
this.state = 'load';
|
||||||
|
|
|
@ -73,7 +73,7 @@ const WebGLImageFilter = function (params) {
|
||||||
// key is the shader program source, value is the compiled program
|
// key is the shader program source, value is the compiled program
|
||||||
const _shaderProgramCache = { };
|
const _shaderProgramCache = { };
|
||||||
|
|
||||||
const gl = _canvas.getContext('webgl') || _canvas.getContext('experimental-webgl');
|
const gl = _canvas.getContext('webgl');
|
||||||
if (!gl) throw new Error('Filter: getContext() failed');
|
if (!gl) throw new Error('Filter: getContext() failed');
|
||||||
|
|
||||||
this.addFilter = function (name) {
|
this.addFilter = function (name) {
|
||||||
|
|
|
@ -35,7 +35,7 @@ const config = {
|
||||||
},
|
},
|
||||||
body: { modelPath: 'file://models/posenet/model.json' },
|
body: { modelPath: 'file://models/posenet/model.json' },
|
||||||
hand: {
|
hand: {
|
||||||
detector: { anchors: 'file://models/handdetect/anchors.json', modelPath: 'file://models/handdetect/model.json' },
|
detector: { modelPath: 'file://models/handdetect/model.json' },
|
||||||
skeleton: { modelPath: 'file://models/handskeleton/model.json' },
|
skeleton: { modelPath: 'file://models/handskeleton/model.json' },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue