mirror of https://github.com/vladmandic/human
optimize centernet
parent
788e3827a9
commit
4c9cd78012
|
@ -9,8 +9,10 @@
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
### **release 2.5.2** 2021/11/15 mandic00@live.com
|
### **HEAD -> main** 2021/11/16 mandic00@live.com
|
||||||
|
|
||||||
|
- add extra face rotation prior to mesh
|
||||||
|
- release 2.5.2
|
||||||
- improve error handling
|
- improve error handling
|
||||||
|
|
||||||
### **2.5.2** 2021/11/14 mandic00@live.com
|
### **2.5.2** 2021/11/14 mandic00@live.com
|
||||||
|
|
|
@ -44,12 +44,12 @@ async function main() {
|
||||||
const inputImage = await canvas.loadImage(input); // load image using canvas library
|
const inputImage = await canvas.loadImage(input); // load image using canvas library
|
||||||
log.info('Loaded image', input, inputImage.width, inputImage.height);
|
log.info('Loaded image', input, inputImage.width, inputImage.height);
|
||||||
const inputCanvas = new canvas.Canvas(inputImage.width, inputImage.height); // create canvas
|
const inputCanvas = new canvas.Canvas(inputImage.width, inputImage.height); // create canvas
|
||||||
const ctx = inputCanvas.getContext('2d');
|
const inputCtx = inputCanvas.getContext('2d');
|
||||||
ctx.drawImage(inputImage, 0, 0); // draw input image onto canvas
|
inputCtx.drawImage(inputImage, 0, 0); // draw input image onto canvas
|
||||||
|
const imageData = inputCtx.getImageData(0, 0, inputCanvas.width, inputCanvas.height);
|
||||||
|
|
||||||
// run detection
|
// run detection
|
||||||
const result = await human.detect(inputCanvas);
|
const result = await human.detect(imageData);
|
||||||
|
|
||||||
// run segmentation
|
// run segmentation
|
||||||
// const seg = await human.segmentation(inputCanvas);
|
// const seg = await human.segmentation(inputCanvas);
|
||||||
// log.data('Segmentation:', { data: seg.data.length, alpha: typeof seg.alpha, canvas: typeof seg.canvas });
|
// log.data('Segmentation:', { data: seg.data.length, alpha: typeof seg.alpha, canvas: typeof seg.canvas });
|
||||||
|
@ -65,11 +65,14 @@ async function main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw detected results onto canvas and save it to a file
|
// draw detected results onto canvas and save it to a file
|
||||||
human.draw.all(inputCanvas, result); // use human build-in method to draw results as overlays on canvas
|
const outputCanvas = new canvas.Canvas(inputImage.width, inputImage.height); // create canvas
|
||||||
|
const outputCtx = outputCanvas.getContext('2d');
|
||||||
|
outputCtx.drawImage(result.canvas || inputImage, 0, 0); // draw input image onto canvas
|
||||||
|
human.draw.all(outputCanvas, result); // use human build-in method to draw results as overlays on canvas
|
||||||
const outFile = fs.createWriteStream(output); // write canvas to new image file
|
const outFile = fs.createWriteStream(output); // write canvas to new image file
|
||||||
outFile.on('finish', () => log.state('Output image:', output, inputCanvas.width, inputCanvas.height));
|
outFile.on('finish', () => log.state('Output image:', output, outputCanvas.width, outputCanvas.height));
|
||||||
outFile.on('error', (err) => log.error('Output error:', output, err));
|
outFile.on('error', (err) => log.error('Output error:', output, err));
|
||||||
const stream = inputCanvas.createJPEGStream({ quality: 0.5, progressive: true, chromaSubsampling: true });
|
const stream = outputCanvas.createJPEGStream({ quality: 0.5, progressive: true, chromaSubsampling: true });
|
||||||
stream.pipe(outFile);
|
stream.pipe(outFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -983,9 +983,9 @@ async function histogramEqualization(inputImage) {
|
||||||
const range = [tfjs_esm_exports.sub(max4[0], min2[0]), tfjs_esm_exports.sub(max4[1], min2[1]), tfjs_esm_exports.sub(max4[2], min2[2])];
|
const range = [tfjs_esm_exports.sub(max4[0], min2[0]), tfjs_esm_exports.sub(max4[1], min2[1]), tfjs_esm_exports.sub(max4[2], min2[2])];
|
||||||
const fact = [tfjs_esm_exports.div(maxValue, range[0]), tfjs_esm_exports.div(maxValue, range[1]), tfjs_esm_exports.div(maxValue, range[2])];
|
const fact = [tfjs_esm_exports.div(maxValue, range[0]), tfjs_esm_exports.div(maxValue, range[1]), tfjs_esm_exports.div(maxValue, range[2])];
|
||||||
const enh = [tfjs_esm_exports.mul(sub9[0], fact[0]), tfjs_esm_exports.mul(sub9[1], fact[1]), tfjs_esm_exports.mul(sub9[2], fact[2])];
|
const enh = [tfjs_esm_exports.mul(sub9[0], fact[0]), tfjs_esm_exports.mul(sub9[1], fact[1]), tfjs_esm_exports.mul(sub9[2], fact[2])];
|
||||||
const rgb3 = tfjs_esm_exports.stack([enh[0], enh[1], enh[2]], 2);
|
const rgb2 = tfjs_esm_exports.stack([enh[0], enh[1], enh[2]], 2);
|
||||||
const reshape8 = tfjs_esm_exports.reshape(rgb3, [1, squeeze9.shape[0], squeeze9.shape[1], 3]);
|
const reshape8 = tfjs_esm_exports.reshape(rgb2, [1, squeeze9.shape[0], squeeze9.shape[1], 3]);
|
||||||
tfjs_esm_exports.dispose([...channels, ...min2, ...max4, ...sub9, ...range, ...fact, ...enh, rgb3, squeeze9]);
|
tfjs_esm_exports.dispose([...channels, ...min2, ...max4, ...sub9, ...range, ...fact, ...enh, rgb2, squeeze9]);
|
||||||
return reshape8;
|
return reshape8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1048,9 +1048,9 @@ async function process2(input, config3, getTensor = true) {
|
||||||
if (input.shape[2] === 3) {
|
if (input.shape[2] === 3) {
|
||||||
tensor3 = tfjs_esm_exports.expandDims(input, 0);
|
tensor3 = tfjs_esm_exports.expandDims(input, 0);
|
||||||
} else if (input.shape[2] === 4) {
|
} else if (input.shape[2] === 4) {
|
||||||
const rgb3 = tfjs_esm_exports.slice3d(input, [0, 0, 0], [-1, -1, 3]);
|
const rgb2 = tfjs_esm_exports.slice3d(input, [0, 0, 0], [-1, -1, 3]);
|
||||||
tensor3 = tfjs_esm_exports.expandDims(rgb3, 0);
|
tensor3 = tfjs_esm_exports.expandDims(rgb2, 0);
|
||||||
tfjs_esm_exports.dispose(rgb3);
|
tfjs_esm_exports.dispose(rgb2);
|
||||||
}
|
}
|
||||||
} else if (input.shape.length === 4) {
|
} else if (input.shape.length === 4) {
|
||||||
if (input.shape[3] === 3) {
|
if (input.shape[3] === 3) {
|
||||||
|
@ -1199,9 +1199,9 @@ async function process2(input, config3, getTensor = true) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (depth === 4) {
|
if (depth === 4) {
|
||||||
const rgb3 = tfjs_esm_exports.slice3d(pixels, [0, 0, 0], [-1, -1, 3]);
|
const rgb2 = tfjs_esm_exports.slice3d(pixels, [0, 0, 0], [-1, -1, 3]);
|
||||||
tfjs_esm_exports.dispose(pixels);
|
tfjs_esm_exports.dispose(pixels);
|
||||||
pixels = rgb3;
|
pixels = rgb2;
|
||||||
}
|
}
|
||||||
if (!pixels)
|
if (!pixels)
|
||||||
throw new Error("input error: cannot create tensor");
|
throw new Error("input error: cannot create tensor");
|
||||||
|
@ -1439,12 +1439,22 @@ async function predict(image29, config3, idx, count2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/tfjs/constants.ts
|
// src/tfjs/constants.ts
|
||||||
var tf255 = tfjs_esm_exports.scalar(255, "float32");
|
var constants = {
|
||||||
var tf1 = tfjs_esm_exports.scalar(1, "float32");
|
tf255: 255,
|
||||||
var tf22 = tfjs_esm_exports.scalar(2, "float32");
|
tf1: 1,
|
||||||
var tf05 = tfjs_esm_exports.scalar(0.5, "float32");
|
tf2: 2,
|
||||||
var tf127 = tfjs_esm_exports.scalar(127.5, "float32");
|
tf05: 0.5,
|
||||||
var rgb = tfjs_esm_exports.tensor1d([0.2989, 0.587, 0.114], "float32");
|
tf127: 127.5,
|
||||||
|
rgb: [0.2989, 0.587, 0.114]
|
||||||
|
};
|
||||||
|
function init() {
|
||||||
|
constants.tf255 = tfjs_esm_exports.scalar(255, "float32");
|
||||||
|
constants.tf1 = tfjs_esm_exports.scalar(1, "float32");
|
||||||
|
constants.tf2 = tfjs_esm_exports.scalar(2, "float32");
|
||||||
|
constants.tf05 = tfjs_esm_exports.scalar(0.5, "float32");
|
||||||
|
constants.tf127 = tfjs_esm_exports.scalar(127.5, "float32");
|
||||||
|
constants.rgb = tfjs_esm_exports.tensor1d([0.2989, 0.587, 0.114], "float32");
|
||||||
|
}
|
||||||
|
|
||||||
// src/gear/ssrnet-age.ts
|
// src/gear/ssrnet-age.ts
|
||||||
var model2;
|
var model2;
|
||||||
|
@ -1483,7 +1493,7 @@ async function predict2(image29, config3, idx, count2) {
|
||||||
return;
|
return;
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = tfjs_esm_exports.image.resizeBilinear(image29, [model2.inputs[0].shape[2], model2.inputs[0].shape[1]], false);
|
t.resize = tfjs_esm_exports.image.resizeBilinear(image29, [model2.inputs[0].shape[2], model2.inputs[0].shape[1]], false);
|
||||||
t.enhance = tfjs_esm_exports.mul(t.resize, tf255);
|
t.enhance = tfjs_esm_exports.mul(t.resize, constants.tf255);
|
||||||
const obj = { age: 0 };
|
const obj = { age: 0 };
|
||||||
if (config3.face["ssrnet"].enabled)
|
if (config3.face["ssrnet"].enabled)
|
||||||
t.age = model2.execute(t.enhance);
|
t.age = model2.execute(t.enhance);
|
||||||
|
@ -1505,7 +1515,7 @@ var last4 = [];
|
||||||
var lastCount3 = 0;
|
var lastCount3 = 0;
|
||||||
var lastTime3 = 0;
|
var lastTime3 = 0;
|
||||||
var skipped3 = Number.MAX_SAFE_INTEGER;
|
var skipped3 = Number.MAX_SAFE_INTEGER;
|
||||||
var rgb2 = [0.2989, 0.587, 0.114];
|
var rgb = [0.2989, 0.587, 0.114];
|
||||||
async function load3(config3) {
|
async function load3(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model3 = null;
|
model3 = null;
|
||||||
|
@ -1537,11 +1547,11 @@ async function predict3(image29, config3, idx, count2) {
|
||||||
t.resize = tfjs_esm_exports.image.resizeBilinear(image29, [model3.inputs[0].shape[2], model3.inputs[0].shape[1]], false);
|
t.resize = tfjs_esm_exports.image.resizeBilinear(image29, [model3.inputs[0].shape[2], model3.inputs[0].shape[1]], false);
|
||||||
t.enhance = tfjs_esm_exports.tidy(() => {
|
t.enhance = tfjs_esm_exports.tidy(() => {
|
||||||
const [red, green, blue] = tfjs_esm_exports.split(t.resize, 3, 3);
|
const [red, green, blue] = tfjs_esm_exports.split(t.resize, 3, 3);
|
||||||
const redNorm = tfjs_esm_exports.mul(red, rgb2[0]);
|
const redNorm = tfjs_esm_exports.mul(red, rgb[0]);
|
||||||
const greenNorm = tfjs_esm_exports.mul(green, rgb2[1]);
|
const greenNorm = tfjs_esm_exports.mul(green, rgb[1]);
|
||||||
const blueNorm = tfjs_esm_exports.mul(blue, rgb2[2]);
|
const blueNorm = tfjs_esm_exports.mul(blue, rgb[2]);
|
||||||
const grayscale = tfjs_esm_exports.addN([redNorm, greenNorm, blueNorm]);
|
const grayscale = tfjs_esm_exports.addN([redNorm, greenNorm, blueNorm]);
|
||||||
const normalize = tfjs_esm_exports.mul(tfjs_esm_exports.sub(grayscale, tf05), 2);
|
const normalize = tfjs_esm_exports.mul(tfjs_esm_exports.sub(grayscale, constants.tf05), 2);
|
||||||
return normalize;
|
return normalize;
|
||||||
});
|
});
|
||||||
const obj = { gender: "", genderScore: 0 };
|
const obj = { gender: "", genderScore: 0 };
|
||||||
|
@ -4908,7 +4918,7 @@ var cutBoxFromImageAndResize = (box4, image29, cropSize) => {
|
||||||
const h = image29.shape[1];
|
const h = image29.shape[1];
|
||||||
const w = image29.shape[2];
|
const w = image29.shape[2];
|
||||||
const crop2 = tfjs_esm_exports.image.cropAndResize(image29, [[box4.startPoint[1] / h, box4.startPoint[0] / w, box4.endPoint[1] / h, box4.endPoint[0] / w]], [0], cropSize);
|
const crop2 = tfjs_esm_exports.image.cropAndResize(image29, [[box4.startPoint[1] / h, box4.startPoint[0] / w, box4.endPoint[1] / h, box4.endPoint[0] / w]], [0], cropSize);
|
||||||
const norm = tfjs_esm_exports.div(crop2, tf255);
|
const norm = tfjs_esm_exports.div(crop2, constants.tf255);
|
||||||
tfjs_esm_exports.dispose(crop2);
|
tfjs_esm_exports.dispose(crop2);
|
||||||
return norm;
|
return norm;
|
||||||
};
|
};
|
||||||
|
@ -5063,7 +5073,7 @@ function decodeBounds(boxOutputs) {
|
||||||
t.boxSizes = tfjs_esm_exports.slice(boxOutputs, [0, 3], [-1, 2]);
|
t.boxSizes = tfjs_esm_exports.slice(boxOutputs, [0, 3], [-1, 2]);
|
||||||
t.boxSizesNormalized = tfjs_esm_exports.div(t.boxSizes, inputSizeT);
|
t.boxSizesNormalized = tfjs_esm_exports.div(t.boxSizes, inputSizeT);
|
||||||
t.centersNormalized = tfjs_esm_exports.div(t.centers, inputSizeT);
|
t.centersNormalized = tfjs_esm_exports.div(t.centers, inputSizeT);
|
||||||
t.halfBoxSize = tfjs_esm_exports.div(t.boxSizesNormalized, tf22);
|
t.halfBoxSize = tfjs_esm_exports.div(t.boxSizesNormalized, constants.tf2);
|
||||||
t.starts = tfjs_esm_exports.sub(t.centersNormalized, t.halfBoxSize);
|
t.starts = tfjs_esm_exports.sub(t.centersNormalized, t.halfBoxSize);
|
||||||
t.ends = tfjs_esm_exports.add(t.centersNormalized, t.halfBoxSize);
|
t.ends = tfjs_esm_exports.add(t.centersNormalized, t.halfBoxSize);
|
||||||
t.startNormalized = tfjs_esm_exports.mul(t.starts, inputSizeT);
|
t.startNormalized = tfjs_esm_exports.mul(t.starts, inputSizeT);
|
||||||
|
@ -5078,8 +5088,8 @@ async function getBoxes(inputImage, config3) {
|
||||||
return { boxes: [] };
|
return { boxes: [] };
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resized = tfjs_esm_exports.image.resizeBilinear(inputImage, [inputSize, inputSize]);
|
t.resized = tfjs_esm_exports.image.resizeBilinear(inputImage, [inputSize, inputSize]);
|
||||||
t.div = tfjs_esm_exports.div(t.resized, tf127);
|
t.div = tfjs_esm_exports.div(t.resized, constants.tf127);
|
||||||
t.normalized = tfjs_esm_exports.sub(t.div, tf05);
|
t.normalized = tfjs_esm_exports.sub(t.div, constants.tf05);
|
||||||
const res = model5 == null ? void 0 : model5.execute(t.normalized);
|
const res = model5 == null ? void 0 : model5.execute(t.normalized);
|
||||||
if (Array.isArray(res)) {
|
if (Array.isArray(res)) {
|
||||||
const sorted = res.sort((a, b) => a.size - b.size);
|
const sorted = res.sort((a, b) => a.size - b.size);
|
||||||
|
@ -5247,7 +5257,7 @@ async function prepareImage(input) {
|
||||||
];
|
];
|
||||||
t.pad = tfjs_esm_exports.pad(input, padding);
|
t.pad = tfjs_esm_exports.pad(input, padding);
|
||||||
t.resize = tfjs_esm_exports.image.resizeBilinear(t.pad, [inputSize2[1][0], inputSize2[1][1]]);
|
t.resize = tfjs_esm_exports.image.resizeBilinear(t.pad, [inputSize2[1][0], inputSize2[1][1]]);
|
||||||
const final = tfjs_esm_exports.div(t.resize, tf255);
|
const final = tfjs_esm_exports.div(t.resize, constants.tf255);
|
||||||
Object.keys(t).forEach((tensor3) => tfjs_esm_exports.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tfjs_esm_exports.dispose(t[tensor3]));
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
|
@ -5428,26 +5438,20 @@ async function load6(config3) {
|
||||||
async function process3(res, outputShape, config3) {
|
async function process3(res, outputShape, config3) {
|
||||||
if (!res)
|
if (!res)
|
||||||
return [];
|
return [];
|
||||||
|
const t = {};
|
||||||
const results = [];
|
const results = [];
|
||||||
const detections = await res.array();
|
const detections = await res.array();
|
||||||
const squeezeT = tfjs_esm_exports.squeeze(res);
|
t.squeeze = tfjs_esm_exports.squeeze(res);
|
||||||
tfjs_esm_exports.dispose(res);
|
const arr = tfjs_esm_exports.split(t.squeeze, 6, 1);
|
||||||
const arr = tfjs_esm_exports.split(squeezeT, 6, 1);
|
t.stack = tfjs_esm_exports.stack([arr[1], arr[0], arr[3], arr[2]], 1);
|
||||||
tfjs_esm_exports.dispose(squeezeT);
|
t.boxes = tfjs_esm_exports.squeeze(t.stack);
|
||||||
const stackT = tfjs_esm_exports.stack([arr[1], arr[0], arr[3], arr[2]], 1);
|
t.scores = tfjs_esm_exports.squeeze(arr[4]);
|
||||||
const boxesT = tfjs_esm_exports.squeeze(stackT);
|
t.classes = tfjs_esm_exports.squeeze(arr[5]);
|
||||||
tfjs_esm_exports.dispose(stackT);
|
tfjs_esm_exports.dispose([res, ...arr]);
|
||||||
const scoresT = tfjs_esm_exports.squeeze(arr[4]);
|
t.nms = await tfjs_esm_exports.image.nonMaxSuppressionAsync(t.boxes, t.scores, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
||||||
const classesT = tfjs_esm_exports.squeeze(arr[5]);
|
const nms = await t.nms.data();
|
||||||
arr.forEach((t) => tfjs_esm_exports.dispose(t));
|
|
||||||
const nmsT = await tfjs_esm_exports.image.nonMaxSuppressionAsync(boxesT, scoresT, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
|
||||||
tfjs_esm_exports.dispose(boxesT);
|
|
||||||
tfjs_esm_exports.dispose(scoresT);
|
|
||||||
tfjs_esm_exports.dispose(classesT);
|
|
||||||
const nms = await nmsT.data();
|
|
||||||
tfjs_esm_exports.dispose(nmsT);
|
|
||||||
let i = 0;
|
let i = 0;
|
||||||
for (const id of nms) {
|
for (const id of Array.from(nms)) {
|
||||||
const score = Math.trunc(100 * detections[0][id][4]) / 100;
|
const score = Math.trunc(100 * detections[0][id][4]) / 100;
|
||||||
const classVal = detections[0][id][5];
|
const classVal = detections[0][id][5];
|
||||||
const label = labels[classVal].label;
|
const label = labels[classVal].label;
|
||||||
|
@ -5469,6 +5473,7 @@ async function process3(res, outputShape, config3) {
|
||||||
];
|
];
|
||||||
results.push({ id: i++, score, class: classVal, label, box: box4, boxRaw });
|
results.push({ id: i++, score, class: classVal, label, box: box4, boxRaw });
|
||||||
}
|
}
|
||||||
|
Object.keys(t).forEach((tensor3) => tfjs_esm_exports.dispose(t[tensor3]));
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
async function predict6(input, config3) {
|
async function predict6(input, config3) {
|
||||||
|
@ -5573,8 +5578,8 @@ async function predict7(image29, config3) {
|
||||||
if (!(model7 == null ? void 0 : model7.inputs[0].shape))
|
if (!(model7 == null ? void 0 : model7.inputs[0].shape))
|
||||||
return null;
|
return null;
|
||||||
const resize = tfjs_esm_exports.image.resizeBilinear(image29, [model7.inputs[0].shape[2], model7.inputs[0].shape[1]], false);
|
const resize = tfjs_esm_exports.image.resizeBilinear(image29, [model7.inputs[0].shape[2], model7.inputs[0].shape[1]], false);
|
||||||
const enhance3 = tfjs_esm_exports.mul(resize, tf22);
|
const enhance3 = tfjs_esm_exports.mul(resize, constants.tf2);
|
||||||
const norm = tfjs_esm_exports.sub(enhance3, tf1);
|
const norm = tfjs_esm_exports.sub(enhance3, constants.tf1);
|
||||||
return norm;
|
return norm;
|
||||||
});
|
});
|
||||||
let resT;
|
let resT;
|
||||||
|
@ -5677,10 +5682,10 @@ async function predict8(image29, config3, idx, count2) {
|
||||||
const t = {};
|
const t = {};
|
||||||
const inputSize8 = (model8 == null ? void 0 : model8.inputs[0].shape) ? model8.inputs[0].shape[2] : 0;
|
const inputSize8 = (model8 == null ? void 0 : model8.inputs[0].shape) ? model8.inputs[0].shape[2] : 0;
|
||||||
t.resize = tfjs_esm_exports.image.resizeBilinear(image29, [inputSize8, inputSize8], false);
|
t.resize = tfjs_esm_exports.image.resizeBilinear(image29, [inputSize8, inputSize8], false);
|
||||||
t.channels = tfjs_esm_exports.mul(t.resize, rgb);
|
t.channels = tfjs_esm_exports.mul(t.resize, constants.rgb);
|
||||||
t.grayscale = tfjs_esm_exports.sum(t.channels, 3, true);
|
t.grayscale = tfjs_esm_exports.sum(t.channels, 3, true);
|
||||||
t.grayscaleSub = tfjs_esm_exports.sub(t.grayscale, tf05);
|
t.grayscaleSub = tfjs_esm_exports.sub(t.grayscale, constants.tf05);
|
||||||
t.grayscaleMul = tfjs_esm_exports.mul(t.grayscaleSub, tf22);
|
t.grayscaleMul = tfjs_esm_exports.mul(t.grayscaleSub, constants.tf2);
|
||||||
t.emotion = model8 == null ? void 0 : model8.execute(t.grayscaleMul);
|
t.emotion = model8 == null ? void 0 : model8.execute(t.grayscaleMul);
|
||||||
lastTime8 = now();
|
lastTime8 = now();
|
||||||
const data = await t.emotion.data();
|
const data = await t.emotion.data();
|
||||||
|
@ -6019,7 +6024,7 @@ function enhance2(input) {
|
||||||
if (!(model12 == null ? void 0 : model12.inputs[0].shape))
|
if (!(model12 == null ? void 0 : model12.inputs[0].shape))
|
||||||
return tensor3;
|
return tensor3;
|
||||||
const crop2 = tfjs_esm_exports.image.resizeBilinear(tensor3, [model12.inputs[0].shape[2], model12.inputs[0].shape[1]], false);
|
const crop2 = tfjs_esm_exports.image.resizeBilinear(tensor3, [model12.inputs[0].shape[2], model12.inputs[0].shape[1]], false);
|
||||||
const norm = tfjs_esm_exports.mul(crop2, tf255);
|
const norm = tfjs_esm_exports.mul(crop2, constants.tf255);
|
||||||
tfjs_esm_exports.dispose(crop2);
|
tfjs_esm_exports.dispose(crop2);
|
||||||
return norm;
|
return norm;
|
||||||
}
|
}
|
||||||
|
@ -9174,8 +9179,8 @@ var HandDetector = class {
|
||||||
async predict(input, config3) {
|
async predict(input, config3) {
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = tfjs_esm_exports.image.resizeBilinear(input, [this.inputSize, this.inputSize]);
|
t.resize = tfjs_esm_exports.image.resizeBilinear(input, [this.inputSize, this.inputSize]);
|
||||||
t.div = tfjs_esm_exports.div(t.resize, tf127);
|
t.div = tfjs_esm_exports.div(t.resize, constants.tf127);
|
||||||
t.image = tfjs_esm_exports.sub(t.div, tf1);
|
t.image = tfjs_esm_exports.sub(t.div, constants.tf1);
|
||||||
t.batched = this.model.execute(t.image);
|
t.batched = this.model.execute(t.image);
|
||||||
t.predictions = tfjs_esm_exports.squeeze(t.batched);
|
t.predictions = tfjs_esm_exports.squeeze(t.batched);
|
||||||
t.slice = tfjs_esm_exports.slice(t.predictions, [0, 0], [-1, 1]);
|
t.slice = tfjs_esm_exports.slice(t.predictions, [0, 0], [-1, 1]);
|
||||||
|
@ -9305,7 +9310,7 @@ var HandPipeline = class {
|
||||||
const rotationMatrix = buildRotationMatrix2(-angle, palmCenter);
|
const rotationMatrix = buildRotationMatrix2(-angle, palmCenter);
|
||||||
const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;
|
const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;
|
||||||
const croppedInput = cutBoxFromImageAndResize2(newBox, rotatedImage, [this.inputSize, this.inputSize]);
|
const croppedInput = cutBoxFromImageAndResize2(newBox, rotatedImage, [this.inputSize, this.inputSize]);
|
||||||
const handImage = tfjs_esm_exports.div(croppedInput, tf255);
|
const handImage = tfjs_esm_exports.div(croppedInput, constants.tf255);
|
||||||
tfjs_esm_exports.dispose(croppedInput);
|
tfjs_esm_exports.dispose(croppedInput);
|
||||||
tfjs_esm_exports.dispose(rotatedImage);
|
tfjs_esm_exports.dispose(rotatedImage);
|
||||||
const [confidenceT, keypoints] = this.handPoseModel.execute(handImage);
|
const [confidenceT, keypoints] = this.handPoseModel.execute(handImage);
|
||||||
|
@ -10012,7 +10017,7 @@ async function detectFingers(input, h, config3) {
|
||||||
if (input && models2[1] && config3.hand.landmarks && h.score > (config3.hand.minConfidence || 0)) {
|
if (input && models2[1] && config3.hand.landmarks && h.score > (config3.hand.minConfidence || 0)) {
|
||||||
const t = {};
|
const t = {};
|
||||||
t.crop = tfjs_esm_exports.image.cropAndResize(input, [h.boxCrop], [0], [inputSize6[1][0], inputSize6[1][1]], "bilinear");
|
t.crop = tfjs_esm_exports.image.cropAndResize(input, [h.boxCrop], [0], [inputSize6[1][0], inputSize6[1][1]], "bilinear");
|
||||||
t.div = tfjs_esm_exports.div(t.crop, tf255);
|
t.div = tfjs_esm_exports.div(t.crop, constants.tf255);
|
||||||
[t.score, t.keypoints] = models2[1].execute(t.div, ["Identity_1", "Identity"]);
|
[t.score, t.keypoints] = models2[1].execute(t.div, ["Identity_1", "Identity"]);
|
||||||
const rawScore = (await t.score.data())[0];
|
const rawScore = (await t.score.data())[0];
|
||||||
const score = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
const score = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||||
|
@ -10504,7 +10509,7 @@ async function predict16(image29, config3) {
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
const outputSize2 = [image29.shape[2], image29.shape[1]];
|
const outputSize2 = [image29.shape[2], image29.shape[1]];
|
||||||
const resize = tfjs_esm_exports.image.resizeBilinear(image29, [model15.inputSize, model15.inputSize], false);
|
const resize = tfjs_esm_exports.image.resizeBilinear(image29, [model15.inputSize, model15.inputSize], false);
|
||||||
const norm = tfjs_esm_exports.div(resize, tf255);
|
const norm = tfjs_esm_exports.div(resize, constants.tf255);
|
||||||
const transpose = norm.transpose([0, 3, 1, 2]);
|
const transpose = norm.transpose([0, 3, 1, 2]);
|
||||||
tfjs_esm_exports.dispose(norm);
|
tfjs_esm_exports.dispose(norm);
|
||||||
tfjs_esm_exports.dispose(resize);
|
tfjs_esm_exports.dispose(resize);
|
||||||
|
@ -10888,7 +10893,7 @@ async function process5(input, background, config3) {
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = tfjs_esm_exports.image.resizeBilinear(inputImage.tensor, [model17.inputs[0].shape ? model17.inputs[0].shape[1] : 0, model17.inputs[0].shape ? model17.inputs[0].shape[2] : 0], false);
|
t.resize = tfjs_esm_exports.image.resizeBilinear(inputImage.tensor, [model17.inputs[0].shape ? model17.inputs[0].shape[1] : 0, model17.inputs[0].shape ? model17.inputs[0].shape[2] : 0], false);
|
||||||
tfjs_esm_exports.dispose(inputImage.tensor);
|
tfjs_esm_exports.dispose(inputImage.tensor);
|
||||||
t.norm = tfjs_esm_exports.div(t.resize, tf255);
|
t.norm = tfjs_esm_exports.div(t.resize, constants.tf255);
|
||||||
t.res = model17.execute(t.norm);
|
t.res = model17.execute(t.norm);
|
||||||
t.squeeze = tfjs_esm_exports.squeeze(t.res, 0);
|
t.squeeze = tfjs_esm_exports.squeeze(t.res, 0);
|
||||||
if (t.squeeze.shape[2] === 2) {
|
if (t.squeeze.shape[2] === 2) {
|
||||||
|
@ -11257,6 +11262,7 @@ async function check(instance, force = false) {
|
||||||
try {
|
try {
|
||||||
await tfjs_esm_exports.setBackend(instance.config.backend);
|
await tfjs_esm_exports.setBackend(instance.config.backend);
|
||||||
await tfjs_esm_exports.ready();
|
await tfjs_esm_exports.ready();
|
||||||
|
init();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot set backend:", instance.config.backend, err);
|
log("error: cannot set backend:", instance.config.backend, err);
|
||||||
return false;
|
return false;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1837,7 +1837,7 @@ var require_xorshift7 = __commonJS({
|
||||||
me.i = i + 1 & 7;
|
me.i = i + 1 & 7;
|
||||||
return v;
|
return v;
|
||||||
};
|
};
|
||||||
function init2(me2, seed2) {
|
function init22(me2, seed2) {
|
||||||
var j, w, X = [];
|
var j, w, X = [];
|
||||||
if (seed2 === (seed2 | 0)) {
|
if (seed2 === (seed2 | 0)) {
|
||||||
w = X[0] = seed2;
|
w = X[0] = seed2;
|
||||||
|
@ -1861,7 +1861,7 @@ var require_xorshift7 = __commonJS({
|
||||||
me2.next();
|
me2.next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
init2(me, seed);
|
init22(me, seed);
|
||||||
}
|
}
|
||||||
function copy2(f, t) {
|
function copy2(f, t) {
|
||||||
t.x = f.x.slice();
|
t.x = f.x.slice();
|
||||||
|
@ -1921,7 +1921,7 @@ var require_xor4096 = __commonJS({
|
||||||
me.i = i;
|
me.i = i;
|
||||||
return v + (w ^ w >>> 16) | 0;
|
return v + (w ^ w >>> 16) | 0;
|
||||||
};
|
};
|
||||||
function init2(me2, seed2) {
|
function init22(me2, seed2) {
|
||||||
var t, v, i, j, w, X = [], limit = 128;
|
var t, v, i, j, w, X = [], limit = 128;
|
||||||
if (seed2 === (seed2 | 0)) {
|
if (seed2 === (seed2 | 0)) {
|
||||||
v = seed2;
|
v = seed2;
|
||||||
|
@ -1963,7 +1963,7 @@ var require_xor4096 = __commonJS({
|
||||||
me2.X = X;
|
me2.X = X;
|
||||||
me2.i = i;
|
me2.i = i;
|
||||||
}
|
}
|
||||||
init2(me, seed);
|
init22(me, seed);
|
||||||
}
|
}
|
||||||
function copy2(f, t) {
|
function copy2(f, t) {
|
||||||
t.i = f.i;
|
t.i = f.i;
|
||||||
|
@ -6185,12 +6185,12 @@ function getGlobalMap() {
|
||||||
}
|
}
|
||||||
return ns._tfGlobals;
|
return ns._tfGlobals;
|
||||||
}
|
}
|
||||||
function getGlobal(key, init2) {
|
function getGlobal(key, init22) {
|
||||||
const globalMap = getGlobalMap();
|
const globalMap = getGlobalMap();
|
||||||
if (globalMap.has(key)) {
|
if (globalMap.has(key)) {
|
||||||
return globalMap.get(key);
|
return globalMap.get(key);
|
||||||
} else {
|
} else {
|
||||||
const singleton = init2();
|
const singleton = init22();
|
||||||
globalMap.set(key, singleton);
|
globalMap.set(key, singleton);
|
||||||
return globalMap.get(key);
|
return globalMap.get(key);
|
||||||
}
|
}
|
||||||
|
@ -9083,8 +9083,8 @@ async function moveModel(sourceURL, destURL) {
|
||||||
return cloneModelInternal(sourceURL, destURL, deleteSource);
|
return cloneModelInternal(sourceURL, destURL, deleteSource);
|
||||||
}
|
}
|
||||||
var PlatformBrowser = class {
|
var PlatformBrowser = class {
|
||||||
fetch(path, init2) {
|
fetch(path, init22) {
|
||||||
return fetch(path, init2);
|
return fetch(path, init22);
|
||||||
}
|
}
|
||||||
now() {
|
now() {
|
||||||
return performance.now();
|
return performance.now();
|
||||||
|
@ -9517,18 +9517,18 @@ var HTTPRequest = class {
|
||||||
if (modelArtifacts.modelTopology instanceof ArrayBuffer) {
|
if (modelArtifacts.modelTopology instanceof ArrayBuffer) {
|
||||||
throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");
|
throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");
|
||||||
}
|
}
|
||||||
const init2 = Object.assign({ method: this.DEFAULT_METHOD }, this.requestInit);
|
const init22 = Object.assign({ method: this.DEFAULT_METHOD }, this.requestInit);
|
||||||
init2.body = new FormData();
|
init22.body = new FormData();
|
||||||
const weightsManifest = [{
|
const weightsManifest = [{
|
||||||
paths: ["./model.weights.bin"],
|
paths: ["./model.weights.bin"],
|
||||||
weights: modelArtifacts.weightSpecs
|
weights: modelArtifacts.weightSpecs
|
||||||
}];
|
}];
|
||||||
const modelTopologyAndWeightManifest = getModelJSONForModelArtifacts(modelArtifacts, weightsManifest);
|
const modelTopologyAndWeightManifest = getModelJSONForModelArtifacts(modelArtifacts, weightsManifest);
|
||||||
init2.body.append("model.json", new Blob([JSON.stringify(modelTopologyAndWeightManifest)], { type: JSON_TYPE }), "model.json");
|
init22.body.append("model.json", new Blob([JSON.stringify(modelTopologyAndWeightManifest)], { type: JSON_TYPE }), "model.json");
|
||||||
if (modelArtifacts.weightData != null) {
|
if (modelArtifacts.weightData != null) {
|
||||||
init2.body.append("model.weights.bin", new Blob([modelArtifacts.weightData], { type: OCTET_STREAM_MIME_TYPE }), "model.weights.bin");
|
init22.body.append("model.weights.bin", new Blob([modelArtifacts.weightData], { type: OCTET_STREAM_MIME_TYPE }), "model.weights.bin");
|
||||||
}
|
}
|
||||||
const response = await this.fetch(this.path, init2);
|
const response = await this.fetch(this.path, init22);
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
return {
|
return {
|
||||||
modelArtifactsInfo: getModelArtifactsInfoForJSON(modelArtifacts),
|
modelArtifactsInfo: getModelArtifactsInfoForJSON(modelArtifacts),
|
||||||
|
@ -24804,13 +24804,13 @@ var DepthwiseConv2D = class extends BaseConv {
|
||||||
};
|
};
|
||||||
DepthwiseConv2D.className = "DepthwiseConv2D";
|
DepthwiseConv2D.className = "DepthwiseConv2D";
|
||||||
serialization_exports.registerClass(DepthwiseConv2D);
|
serialization_exports.registerClass(DepthwiseConv2D);
|
||||||
function standardizeArgs(inputs, initialState, constants14, numConstants) {
|
function standardizeArgs(inputs, initialState, constants3, numConstants) {
|
||||||
if (Array.isArray(inputs)) {
|
if (Array.isArray(inputs)) {
|
||||||
if (initialState != null || constants14 != null) {
|
if (initialState != null || constants3 != null) {
|
||||||
throw new ValueError("When inputs is an array, neither initialState or constants should be provided");
|
throw new ValueError("When inputs is an array, neither initialState or constants should be provided");
|
||||||
}
|
}
|
||||||
if (numConstants != null) {
|
if (numConstants != null) {
|
||||||
constants14 = inputs.slice(inputs.length - numConstants, inputs.length);
|
constants3 = inputs.slice(inputs.length - numConstants, inputs.length);
|
||||||
inputs = inputs.slice(0, inputs.length - numConstants);
|
inputs = inputs.slice(0, inputs.length - numConstants);
|
||||||
}
|
}
|
||||||
if (inputs.length > 1) {
|
if (inputs.length > 1) {
|
||||||
|
@ -24826,10 +24826,10 @@ function standardizeArgs(inputs, initialState, constants14, numConstants) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
initialState = toListOrNull(initialState);
|
initialState = toListOrNull(initialState);
|
||||||
constants14 = toListOrNull(constants14);
|
constants3 = toListOrNull(constants3);
|
||||||
return { inputs, initialState, constants: constants14 };
|
return { inputs, initialState, constants: constants3 };
|
||||||
}
|
}
|
||||||
function rnn(stepFunction, inputs, initialStates, goBackwards = false, mask3, constants14, unroll = false, needPerStepOutputs = false) {
|
function rnn(stepFunction, inputs, initialStates, goBackwards = false, mask3, constants3, unroll = false, needPerStepOutputs = false) {
|
||||||
return tidy(() => {
|
return tidy(() => {
|
||||||
const ndim = inputs.shape.length;
|
const ndim = inputs.shape.length;
|
||||||
if (ndim < 3) {
|
if (ndim < 3) {
|
||||||
|
@ -24837,7 +24837,7 @@ function rnn(stepFunction, inputs, initialStates, goBackwards = false, mask3, co
|
||||||
}
|
}
|
||||||
const axes = [1, 0].concat(range2(2, ndim));
|
const axes = [1, 0].concat(range2(2, ndim));
|
||||||
inputs = transpose(inputs, axes);
|
inputs = transpose(inputs, axes);
|
||||||
if (constants14 != null) {
|
if (constants3 != null) {
|
||||||
throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");
|
throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");
|
||||||
}
|
}
|
||||||
if (unroll) {
|
if (unroll) {
|
||||||
|
@ -25077,14 +25077,14 @@ var _RNN = class extends Layer {
|
||||||
}
|
}
|
||||||
apply(inputs, kwargs) {
|
apply(inputs, kwargs) {
|
||||||
let initialState = kwargs == null ? null : kwargs["initialState"];
|
let initialState = kwargs == null ? null : kwargs["initialState"];
|
||||||
let constants14 = kwargs == null ? null : kwargs["constants"];
|
let constants3 = kwargs == null ? null : kwargs["constants"];
|
||||||
if (kwargs == null) {
|
if (kwargs == null) {
|
||||||
kwargs = {};
|
kwargs = {};
|
||||||
}
|
}
|
||||||
const standardized = standardizeArgs(inputs, initialState, constants14, this.numConstants);
|
const standardized = standardizeArgs(inputs, initialState, constants3, this.numConstants);
|
||||||
inputs = standardized.inputs;
|
inputs = standardized.inputs;
|
||||||
initialState = standardized.initialState;
|
initialState = standardized.initialState;
|
||||||
constants14 = standardized.constants;
|
constants3 = standardized.constants;
|
||||||
let additionalInputs = [];
|
let additionalInputs = [];
|
||||||
let additionalSpecs = [];
|
let additionalSpecs = [];
|
||||||
if (initialState != null) {
|
if (initialState != null) {
|
||||||
|
@ -25096,10 +25096,10 @@ var _RNN = class extends Layer {
|
||||||
}
|
}
|
||||||
additionalSpecs = additionalSpecs.concat(this.stateSpec);
|
additionalSpecs = additionalSpecs.concat(this.stateSpec);
|
||||||
}
|
}
|
||||||
if (constants14 != null) {
|
if (constants3 != null) {
|
||||||
kwargs["constants"] = constants14;
|
kwargs["constants"] = constants3;
|
||||||
additionalInputs = additionalInputs.concat(constants14);
|
additionalInputs = additionalInputs.concat(constants3);
|
||||||
this.numConstants = constants14.length;
|
this.numConstants = constants3.length;
|
||||||
}
|
}
|
||||||
const isTensor = additionalInputs[0] instanceof SymbolicTensor;
|
const isTensor = additionalInputs[0] instanceof SymbolicTensor;
|
||||||
if (isTensor) {
|
if (isTensor) {
|
||||||
|
@ -25996,13 +25996,13 @@ var ConvLSTM2DCell = class extends LSTMCell {
|
||||||
if (this.useBias) {
|
if (this.useBias) {
|
||||||
let biasInitializer;
|
let biasInitializer;
|
||||||
if (this.unitForgetBias) {
|
if (this.unitForgetBias) {
|
||||||
const init2 = this.biasInitializer;
|
const init22 = this.biasInitializer;
|
||||||
const filters = this.filters;
|
const filters = this.filters;
|
||||||
biasInitializer = new (_a = class extends Initializer {
|
biasInitializer = new (_a = class extends Initializer {
|
||||||
apply(shape, dtype) {
|
apply(shape, dtype) {
|
||||||
const biasI = init2.apply([filters]);
|
const biasI = init22.apply([filters]);
|
||||||
const biasF = ones2([filters]);
|
const biasF = ones2([filters]);
|
||||||
const biasCAndO = init2.apply([filters * 2]);
|
const biasCAndO = init22.apply([filters * 2]);
|
||||||
return concatenate([biasI, biasF, biasCAndO]);
|
return concatenate([biasI, biasF, biasCAndO]);
|
||||||
}
|
}
|
||||||
}, _a.className = "CustomInit", _a)();
|
}, _a.className = "CustomInit", _a)();
|
||||||
|
@ -28198,19 +28198,19 @@ var Bidirectional = class extends Wrapper {
|
||||||
}
|
}
|
||||||
apply(inputs, kwargs) {
|
apply(inputs, kwargs) {
|
||||||
let initialState = kwargs == null ? null : kwargs["initialState"];
|
let initialState = kwargs == null ? null : kwargs["initialState"];
|
||||||
let constants14 = kwargs == null ? null : kwargs["constants"];
|
let constants3 = kwargs == null ? null : kwargs["constants"];
|
||||||
if (kwargs == null) {
|
if (kwargs == null) {
|
||||||
kwargs = {};
|
kwargs = {};
|
||||||
}
|
}
|
||||||
const standardized = standardizeArgs(inputs, initialState, constants14, this.numConstants);
|
const standardized = standardizeArgs(inputs, initialState, constants3, this.numConstants);
|
||||||
inputs = standardized.inputs;
|
inputs = standardized.inputs;
|
||||||
initialState = standardized.initialState;
|
initialState = standardized.initialState;
|
||||||
constants14 = standardized.constants;
|
constants3 = standardized.constants;
|
||||||
if (Array.isArray(inputs)) {
|
if (Array.isArray(inputs)) {
|
||||||
initialState = inputs.slice(1);
|
initialState = inputs.slice(1);
|
||||||
inputs = inputs[0];
|
inputs = inputs[0];
|
||||||
}
|
}
|
||||||
if ((initialState == null || initialState.length === 0) && constants14 == null) {
|
if ((initialState == null || initialState.length === 0) && constants3 == null) {
|
||||||
return super.apply(inputs, kwargs);
|
return super.apply(inputs, kwargs);
|
||||||
}
|
}
|
||||||
const additionalInputs = [];
|
const additionalInputs = [];
|
||||||
|
@ -28227,7 +28227,7 @@ var Bidirectional = class extends Wrapper {
|
||||||
this.backwardLayer.stateSpec = stateSpecs.slice(numStates / 2);
|
this.backwardLayer.stateSpec = stateSpecs.slice(numStates / 2);
|
||||||
additionalSpecs.push(...stateSpecs);
|
additionalSpecs.push(...stateSpecs);
|
||||||
}
|
}
|
||||||
if (constants14 != null) {
|
if (constants3 != null) {
|
||||||
throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");
|
throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");
|
||||||
}
|
}
|
||||||
const isSymbolicTensor = additionalInputs[0] instanceof SymbolicTensor;
|
const isSymbolicTensor = additionalInputs[0] instanceof SymbolicTensor;
|
||||||
|
@ -39449,7 +39449,7 @@ async function urlChunkIterator(url, options3 = {}, fetchFunc) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var getRequestInitFromRequest = (request) => {
|
var getRequestInitFromRequest = (request) => {
|
||||||
const init2 = {
|
const init22 = {
|
||||||
method: request.method,
|
method: request.method,
|
||||||
headers: request.headers,
|
headers: request.headers,
|
||||||
body: request.body,
|
body: request.body,
|
||||||
|
@ -39460,7 +39460,7 @@ var getRequestInitFromRequest = (request) => {
|
||||||
referrer: request.referrer,
|
referrer: request.referrer,
|
||||||
integrity: request.integrity
|
integrity: request.integrity
|
||||||
};
|
};
|
||||||
return init2;
|
return init22;
|
||||||
};
|
};
|
||||||
function isLocalPath(source) {
|
function isLocalPath(source) {
|
||||||
return typeof source === "string" && source.substr(0, 7) === "file://";
|
return typeof source === "string" && source.substr(0, 7) === "file://";
|
||||||
|
@ -71309,9 +71309,9 @@ async function histogramEqualization(inputImage) {
|
||||||
const range7 = [sub(max7[0], min7[0]), sub(max7[1], min7[1]), sub(max7[2], min7[2])];
|
const range7 = [sub(max7[0], min7[0]), sub(max7[1], min7[1]), sub(max7[2], min7[2])];
|
||||||
const fact = [div(maxValue, range7[0]), div(maxValue, range7[1]), div(maxValue, range7[2])];
|
const fact = [div(maxValue, range7[0]), div(maxValue, range7[1]), div(maxValue, range7[2])];
|
||||||
const enh = [mul(sub5[0], fact[0]), mul(sub5[1], fact[1]), mul(sub5[2], fact[2])];
|
const enh = [mul(sub5[0], fact[0]), mul(sub5[1], fact[1]), mul(sub5[2], fact[2])];
|
||||||
const rgb3 = stack([enh[0], enh[1], enh[2]], 2);
|
const rgb2 = stack([enh[0], enh[1], enh[2]], 2);
|
||||||
const reshape7 = reshape(rgb3, [1, squeeze2.shape[0], squeeze2.shape[1], 3]);
|
const reshape7 = reshape(rgb2, [1, squeeze2.shape[0], squeeze2.shape[1], 3]);
|
||||||
dispose([...channels, ...min7, ...max7, ...sub5, ...range7, ...fact, ...enh, rgb3, squeeze2]);
|
dispose([...channels, ...min7, ...max7, ...sub5, ...range7, ...fact, ...enh, rgb2, squeeze2]);
|
||||||
return reshape7;
|
return reshape7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71374,9 +71374,9 @@ async function process2(input2, config3, getTensor2 = true) {
|
||||||
if (input2.shape[2] === 3) {
|
if (input2.shape[2] === 3) {
|
||||||
tensor2 = expandDims(input2, 0);
|
tensor2 = expandDims(input2, 0);
|
||||||
} else if (input2.shape[2] === 4) {
|
} else if (input2.shape[2] === 4) {
|
||||||
const rgb3 = slice3d(input2, [0, 0, 0], [-1, -1, 3]);
|
const rgb2 = slice3d(input2, [0, 0, 0], [-1, -1, 3]);
|
||||||
tensor2 = expandDims(rgb3, 0);
|
tensor2 = expandDims(rgb2, 0);
|
||||||
dispose(rgb3);
|
dispose(rgb2);
|
||||||
}
|
}
|
||||||
} else if (input2.shape.length === 4) {
|
} else if (input2.shape.length === 4) {
|
||||||
if (input2.shape[3] === 3) {
|
if (input2.shape[3] === 3) {
|
||||||
|
@ -71525,9 +71525,9 @@ async function process2(input2, config3, getTensor2 = true) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (depth === 4) {
|
if (depth === 4) {
|
||||||
const rgb3 = slice3d(pixels, [0, 0, 0], [-1, -1, 3]);
|
const rgb2 = slice3d(pixels, [0, 0, 0], [-1, -1, 3]);
|
||||||
dispose(pixels);
|
dispose(pixels);
|
||||||
pixels = rgb3;
|
pixels = rgb2;
|
||||||
}
|
}
|
||||||
if (!pixels)
|
if (!pixels)
|
||||||
throw new Error("input error: cannot create tensor");
|
throw new Error("input error: cannot create tensor");
|
||||||
|
@ -71765,12 +71765,22 @@ async function predict(image7, config3, idx, count3) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/tfjs/constants.ts
|
// src/tfjs/constants.ts
|
||||||
var tf255 = scalar(255, "float32");
|
var constants = {
|
||||||
var tf1 = scalar(1, "float32");
|
tf255: 255,
|
||||||
var tf22 = scalar(2, "float32");
|
tf1: 1,
|
||||||
var tf05 = scalar(0.5, "float32");
|
tf2: 2,
|
||||||
var tf127 = scalar(127.5, "float32");
|
tf05: 0.5,
|
||||||
var rgb = tensor1d([0.2989, 0.587, 0.114], "float32");
|
tf127: 127.5,
|
||||||
|
rgb: [0.2989, 0.587, 0.114]
|
||||||
|
};
|
||||||
|
function init2() {
|
||||||
|
constants.tf255 = scalar(255, "float32");
|
||||||
|
constants.tf1 = scalar(1, "float32");
|
||||||
|
constants.tf2 = scalar(2, "float32");
|
||||||
|
constants.tf05 = scalar(0.5, "float32");
|
||||||
|
constants.tf127 = scalar(127.5, "float32");
|
||||||
|
constants.rgb = tensor1d([0.2989, 0.587, 0.114], "float32");
|
||||||
|
}
|
||||||
|
|
||||||
// src/gear/ssrnet-age.ts
|
// src/gear/ssrnet-age.ts
|
||||||
var model3;
|
var model3;
|
||||||
|
@ -71809,7 +71819,7 @@ async function predict2(image7, config3, idx, count3) {
|
||||||
return;
|
return;
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = image.resizeBilinear(image7, [model3.inputs[0].shape[2], model3.inputs[0].shape[1]], false);
|
t.resize = image.resizeBilinear(image7, [model3.inputs[0].shape[2], model3.inputs[0].shape[1]], false);
|
||||||
t.enhance = mul(t.resize, tf255);
|
t.enhance = mul(t.resize, constants.tf255);
|
||||||
const obj = { age: 0 };
|
const obj = { age: 0 };
|
||||||
if (config3.face["ssrnet"].enabled)
|
if (config3.face["ssrnet"].enabled)
|
||||||
t.age = model3.execute(t.enhance);
|
t.age = model3.execute(t.enhance);
|
||||||
|
@ -71831,7 +71841,7 @@ var last4 = [];
|
||||||
var lastCount3 = 0;
|
var lastCount3 = 0;
|
||||||
var lastTime3 = 0;
|
var lastTime3 = 0;
|
||||||
var skipped3 = Number.MAX_SAFE_INTEGER;
|
var skipped3 = Number.MAX_SAFE_INTEGER;
|
||||||
var rgb2 = [0.2989, 0.587, 0.114];
|
var rgb = [0.2989, 0.587, 0.114];
|
||||||
async function load3(config3) {
|
async function load3(config3) {
|
||||||
if (env2.initial)
|
if (env2.initial)
|
||||||
model4 = null;
|
model4 = null;
|
||||||
|
@ -71863,11 +71873,11 @@ async function predict3(image7, config3, idx, count3) {
|
||||||
t.resize = image.resizeBilinear(image7, [model4.inputs[0].shape[2], model4.inputs[0].shape[1]], false);
|
t.resize = image.resizeBilinear(image7, [model4.inputs[0].shape[2], model4.inputs[0].shape[1]], false);
|
||||||
t.enhance = tidy(() => {
|
t.enhance = tidy(() => {
|
||||||
const [red, green, blue] = split(t.resize, 3, 3);
|
const [red, green, blue] = split(t.resize, 3, 3);
|
||||||
const redNorm = mul(red, rgb2[0]);
|
const redNorm = mul(red, rgb[0]);
|
||||||
const greenNorm = mul(green, rgb2[1]);
|
const greenNorm = mul(green, rgb[1]);
|
||||||
const blueNorm = mul(blue, rgb2[2]);
|
const blueNorm = mul(blue, rgb[2]);
|
||||||
const grayscale = addN([redNorm, greenNorm, blueNorm]);
|
const grayscale = addN([redNorm, greenNorm, blueNorm]);
|
||||||
const normalize = mul(sub(grayscale, tf05), 2);
|
const normalize = mul(sub(grayscale, constants.tf05), 2);
|
||||||
return normalize;
|
return normalize;
|
||||||
});
|
});
|
||||||
const obj = { gender: "", genderScore: 0 };
|
const obj = { gender: "", genderScore: 0 };
|
||||||
|
@ -75234,7 +75244,7 @@ var cutBoxFromImageAndResize = (box4, image7, cropSize) => {
|
||||||
const h = image7.shape[1];
|
const h = image7.shape[1];
|
||||||
const w = image7.shape[2];
|
const w = image7.shape[2];
|
||||||
const crop2 = image.cropAndResize(image7, [[box4.startPoint[1] / h, box4.startPoint[0] / w, box4.endPoint[1] / h, box4.endPoint[0] / w]], [0], cropSize);
|
const crop2 = image.cropAndResize(image7, [[box4.startPoint[1] / h, box4.startPoint[0] / w, box4.endPoint[1] / h, box4.endPoint[0] / w]], [0], cropSize);
|
||||||
const norm2 = div(crop2, tf255);
|
const norm2 = div(crop2, constants.tf255);
|
||||||
dispose(crop2);
|
dispose(crop2);
|
||||||
return norm2;
|
return norm2;
|
||||||
};
|
};
|
||||||
|
@ -75389,7 +75399,7 @@ function decodeBounds(boxOutputs) {
|
||||||
t.boxSizes = slice(boxOutputs, [0, 3], [-1, 2]);
|
t.boxSizes = slice(boxOutputs, [0, 3], [-1, 2]);
|
||||||
t.boxSizesNormalized = div(t.boxSizes, inputSizeT);
|
t.boxSizesNormalized = div(t.boxSizes, inputSizeT);
|
||||||
t.centersNormalized = div(t.centers, inputSizeT);
|
t.centersNormalized = div(t.centers, inputSizeT);
|
||||||
t.halfBoxSize = div(t.boxSizesNormalized, tf22);
|
t.halfBoxSize = div(t.boxSizesNormalized, constants.tf2);
|
||||||
t.starts = sub(t.centersNormalized, t.halfBoxSize);
|
t.starts = sub(t.centersNormalized, t.halfBoxSize);
|
||||||
t.ends = add2(t.centersNormalized, t.halfBoxSize);
|
t.ends = add2(t.centersNormalized, t.halfBoxSize);
|
||||||
t.startNormalized = mul(t.starts, inputSizeT);
|
t.startNormalized = mul(t.starts, inputSizeT);
|
||||||
|
@ -75404,8 +75414,8 @@ async function getBoxes(inputImage, config3) {
|
||||||
return { boxes: [] };
|
return { boxes: [] };
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resized = image.resizeBilinear(inputImage, [inputSize, inputSize]);
|
t.resized = image.resizeBilinear(inputImage, [inputSize, inputSize]);
|
||||||
t.div = div(t.resized, tf127);
|
t.div = div(t.resized, constants.tf127);
|
||||||
t.normalized = sub(t.div, tf05);
|
t.normalized = sub(t.div, constants.tf05);
|
||||||
const res = model6 == null ? void 0 : model6.execute(t.normalized);
|
const res = model6 == null ? void 0 : model6.execute(t.normalized);
|
||||||
if (Array.isArray(res)) {
|
if (Array.isArray(res)) {
|
||||||
const sorted = res.sort((a, b) => a.size - b.size);
|
const sorted = res.sort((a, b) => a.size - b.size);
|
||||||
|
@ -75573,7 +75583,7 @@ async function prepareImage(input2) {
|
||||||
];
|
];
|
||||||
t.pad = pad(input2, padding);
|
t.pad = pad(input2, padding);
|
||||||
t.resize = image.resizeBilinear(t.pad, [inputSize2[1][0], inputSize2[1][1]]);
|
t.resize = image.resizeBilinear(t.pad, [inputSize2[1][0], inputSize2[1][1]]);
|
||||||
const final = div(t.resize, tf255);
|
const final = div(t.resize, constants.tf255);
|
||||||
Object.keys(t).forEach((tensor2) => dispose(t[tensor2]));
|
Object.keys(t).forEach((tensor2) => dispose(t[tensor2]));
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
|
@ -75754,26 +75764,20 @@ async function load6(config3) {
|
||||||
async function process3(res, outputShape, config3) {
|
async function process3(res, outputShape, config3) {
|
||||||
if (!res)
|
if (!res)
|
||||||
return [];
|
return [];
|
||||||
|
const t = {};
|
||||||
const results = [];
|
const results = [];
|
||||||
const detections = await res.array();
|
const detections = await res.array();
|
||||||
const squeezeT = squeeze(res);
|
t.squeeze = squeeze(res);
|
||||||
dispose(res);
|
const arr = split(t.squeeze, 6, 1);
|
||||||
const arr = split(squeezeT, 6, 1);
|
t.stack = stack([arr[1], arr[0], arr[3], arr[2]], 1);
|
||||||
dispose(squeezeT);
|
t.boxes = squeeze(t.stack);
|
||||||
const stackT = stack([arr[1], arr[0], arr[3], arr[2]], 1);
|
t.scores = squeeze(arr[4]);
|
||||||
const boxesT = squeeze(stackT);
|
t.classes = squeeze(arr[5]);
|
||||||
dispose(stackT);
|
dispose([res, ...arr]);
|
||||||
const scoresT = squeeze(arr[4]);
|
t.nms = await image.nonMaxSuppressionAsync(t.boxes, t.scores, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
||||||
const classesT = squeeze(arr[5]);
|
const nms = await t.nms.data();
|
||||||
arr.forEach((t) => dispose(t));
|
|
||||||
const nmsT = await image.nonMaxSuppressionAsync(boxesT, scoresT, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
|
||||||
dispose(boxesT);
|
|
||||||
dispose(scoresT);
|
|
||||||
dispose(classesT);
|
|
||||||
const nms = await nmsT.data();
|
|
||||||
dispose(nmsT);
|
|
||||||
let i = 0;
|
let i = 0;
|
||||||
for (const id of nms) {
|
for (const id of Array.from(nms)) {
|
||||||
const score = Math.trunc(100 * detections[0][id][4]) / 100;
|
const score = Math.trunc(100 * detections[0][id][4]) / 100;
|
||||||
const classVal = detections[0][id][5];
|
const classVal = detections[0][id][5];
|
||||||
const label = labels[classVal].label;
|
const label = labels[classVal].label;
|
||||||
|
@ -75795,6 +75799,7 @@ async function process3(res, outputShape, config3) {
|
||||||
];
|
];
|
||||||
results.push({ id: i++, score, class: classVal, label, box: box4, boxRaw });
|
results.push({ id: i++, score, class: classVal, label, box: box4, boxRaw });
|
||||||
}
|
}
|
||||||
|
Object.keys(t).forEach((tensor2) => dispose(t[tensor2]));
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
async function predict6(input2, config3) {
|
async function predict6(input2, config3) {
|
||||||
|
@ -75899,8 +75904,8 @@ async function predict7(image7, config3) {
|
||||||
if (!(model8 == null ? void 0 : model8.inputs[0].shape))
|
if (!(model8 == null ? void 0 : model8.inputs[0].shape))
|
||||||
return null;
|
return null;
|
||||||
const resize = image.resizeBilinear(image7, [model8.inputs[0].shape[2], model8.inputs[0].shape[1]], false);
|
const resize = image.resizeBilinear(image7, [model8.inputs[0].shape[2], model8.inputs[0].shape[1]], false);
|
||||||
const enhance3 = mul(resize, tf22);
|
const enhance3 = mul(resize, constants.tf2);
|
||||||
const norm2 = sub(enhance3, tf1);
|
const norm2 = sub(enhance3, constants.tf1);
|
||||||
return norm2;
|
return norm2;
|
||||||
});
|
});
|
||||||
let resT;
|
let resT;
|
||||||
|
@ -76003,10 +76008,10 @@ async function predict8(image7, config3, idx, count3) {
|
||||||
const t = {};
|
const t = {};
|
||||||
const inputSize8 = (model9 == null ? void 0 : model9.inputs[0].shape) ? model9.inputs[0].shape[2] : 0;
|
const inputSize8 = (model9 == null ? void 0 : model9.inputs[0].shape) ? model9.inputs[0].shape[2] : 0;
|
||||||
t.resize = image.resizeBilinear(image7, [inputSize8, inputSize8], false);
|
t.resize = image.resizeBilinear(image7, [inputSize8, inputSize8], false);
|
||||||
t.channels = mul(t.resize, rgb);
|
t.channels = mul(t.resize, constants.rgb);
|
||||||
t.grayscale = sum2(t.channels, 3, true);
|
t.grayscale = sum2(t.channels, 3, true);
|
||||||
t.grayscaleSub = sub(t.grayscale, tf05);
|
t.grayscaleSub = sub(t.grayscale, constants.tf05);
|
||||||
t.grayscaleMul = mul(t.grayscaleSub, tf22);
|
t.grayscaleMul = mul(t.grayscaleSub, constants.tf2);
|
||||||
t.emotion = model9 == null ? void 0 : model9.execute(t.grayscaleMul);
|
t.emotion = model9 == null ? void 0 : model9.execute(t.grayscaleMul);
|
||||||
lastTime8 = now();
|
lastTime8 = now();
|
||||||
const data = await t.emotion.data();
|
const data = await t.emotion.data();
|
||||||
|
@ -76345,7 +76350,7 @@ function enhance2(input2) {
|
||||||
if (!(model13 == null ? void 0 : model13.inputs[0].shape))
|
if (!(model13 == null ? void 0 : model13.inputs[0].shape))
|
||||||
return tensor2;
|
return tensor2;
|
||||||
const crop2 = image.resizeBilinear(tensor2, [model13.inputs[0].shape[2], model13.inputs[0].shape[1]], false);
|
const crop2 = image.resizeBilinear(tensor2, [model13.inputs[0].shape[2], model13.inputs[0].shape[1]], false);
|
||||||
const norm2 = mul(crop2, tf255);
|
const norm2 = mul(crop2, constants.tf255);
|
||||||
dispose(crop2);
|
dispose(crop2);
|
||||||
return norm2;
|
return norm2;
|
||||||
}
|
}
|
||||||
|
@ -79500,8 +79505,8 @@ var HandDetector = class {
|
||||||
async predict(input2, config3) {
|
async predict(input2, config3) {
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = image.resizeBilinear(input2, [this.inputSize, this.inputSize]);
|
t.resize = image.resizeBilinear(input2, [this.inputSize, this.inputSize]);
|
||||||
t.div = div(t.resize, tf127);
|
t.div = div(t.resize, constants.tf127);
|
||||||
t.image = sub(t.div, tf1);
|
t.image = sub(t.div, constants.tf1);
|
||||||
t.batched = this.model.execute(t.image);
|
t.batched = this.model.execute(t.image);
|
||||||
t.predictions = squeeze(t.batched);
|
t.predictions = squeeze(t.batched);
|
||||||
t.slice = slice(t.predictions, [0, 0], [-1, 1]);
|
t.slice = slice(t.predictions, [0, 0], [-1, 1]);
|
||||||
|
@ -79631,7 +79636,7 @@ var HandPipeline = class {
|
||||||
const rotationMatrix = buildRotationMatrix2(-angle, palmCenter);
|
const rotationMatrix = buildRotationMatrix2(-angle, palmCenter);
|
||||||
const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;
|
const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;
|
||||||
const croppedInput = cutBoxFromImageAndResize2(newBox, rotatedImage, [this.inputSize, this.inputSize]);
|
const croppedInput = cutBoxFromImageAndResize2(newBox, rotatedImage, [this.inputSize, this.inputSize]);
|
||||||
const handImage = div(croppedInput, tf255);
|
const handImage = div(croppedInput, constants.tf255);
|
||||||
dispose(croppedInput);
|
dispose(croppedInput);
|
||||||
dispose(rotatedImage);
|
dispose(rotatedImage);
|
||||||
const [confidenceT, keypoints] = this.handPoseModel.execute(handImage);
|
const [confidenceT, keypoints] = this.handPoseModel.execute(handImage);
|
||||||
|
@ -80338,7 +80343,7 @@ async function detectFingers(input2, h, config3) {
|
||||||
if (input2 && models2[1] && config3.hand.landmarks && h.score > (config3.hand.minConfidence || 0)) {
|
if (input2 && models2[1] && config3.hand.landmarks && h.score > (config3.hand.minConfidence || 0)) {
|
||||||
const t = {};
|
const t = {};
|
||||||
t.crop = image.cropAndResize(input2, [h.boxCrop], [0], [inputSize6[1][0], inputSize6[1][1]], "bilinear");
|
t.crop = image.cropAndResize(input2, [h.boxCrop], [0], [inputSize6[1][0], inputSize6[1][1]], "bilinear");
|
||||||
t.div = div(t.crop, tf255);
|
t.div = div(t.crop, constants.tf255);
|
||||||
[t.score, t.keypoints] = models2[1].execute(t.div, ["Identity_1", "Identity"]);
|
[t.score, t.keypoints] = models2[1].execute(t.div, ["Identity_1", "Identity"]);
|
||||||
const rawScore = (await t.score.data())[0];
|
const rawScore = (await t.score.data())[0];
|
||||||
const score = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
const score = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||||
|
@ -80830,7 +80835,7 @@ async function predict16(image7, config3) {
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
const outputSize2 = [image7.shape[2], image7.shape[1]];
|
const outputSize2 = [image7.shape[2], image7.shape[1]];
|
||||||
const resize = image.resizeBilinear(image7, [model16.inputSize, model16.inputSize], false);
|
const resize = image.resizeBilinear(image7, [model16.inputSize, model16.inputSize], false);
|
||||||
const norm2 = div(resize, tf255);
|
const norm2 = div(resize, constants.tf255);
|
||||||
const transpose6 = norm2.transpose([0, 3, 1, 2]);
|
const transpose6 = norm2.transpose([0, 3, 1, 2]);
|
||||||
dispose(norm2);
|
dispose(norm2);
|
||||||
dispose(resize);
|
dispose(resize);
|
||||||
|
@ -81214,7 +81219,7 @@ async function process5(input2, background, config3) {
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = image.resizeBilinear(inputImage.tensor, [model18.inputs[0].shape ? model18.inputs[0].shape[1] : 0, model18.inputs[0].shape ? model18.inputs[0].shape[2] : 0], false);
|
t.resize = image.resizeBilinear(inputImage.tensor, [model18.inputs[0].shape ? model18.inputs[0].shape[1] : 0, model18.inputs[0].shape ? model18.inputs[0].shape[2] : 0], false);
|
||||||
dispose(inputImage.tensor);
|
dispose(inputImage.tensor);
|
||||||
t.norm = div(t.resize, tf255);
|
t.norm = div(t.resize, constants.tf255);
|
||||||
t.res = model18.execute(t.norm);
|
t.res = model18.execute(t.norm);
|
||||||
t.squeeze = squeeze(t.res, 0);
|
t.squeeze = squeeze(t.res, 0);
|
||||||
if (t.squeeze.shape[2] === 2) {
|
if (t.squeeze.shape[2] === 2) {
|
||||||
|
@ -81583,6 +81588,7 @@ async function check(instance, force = false) {
|
||||||
try {
|
try {
|
||||||
await setBackend(instance.config.backend);
|
await setBackend(instance.config.backend);
|
||||||
await ready();
|
await ready();
|
||||||
|
init2();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot set backend:", instance.config.backend, err);
|
log("error: cannot set backend:", instance.config.backend, err);
|
||||||
return false;
|
return false;
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -993,9 +993,9 @@ async function histogramEqualization(inputImage) {
|
||||||
const range = [tf.sub(max4[0], min2[0]), tf.sub(max4[1], min2[1]), tf.sub(max4[2], min2[2])];
|
const range = [tf.sub(max4[0], min2[0]), tf.sub(max4[1], min2[1]), tf.sub(max4[2], min2[2])];
|
||||||
const fact = [tf.div(maxValue, range[0]), tf.div(maxValue, range[1]), tf.div(maxValue, range[2])];
|
const fact = [tf.div(maxValue, range[0]), tf.div(maxValue, range[1]), tf.div(maxValue, range[2])];
|
||||||
const enh = [tf.mul(sub9[0], fact[0]), tf.mul(sub9[1], fact[1]), tf.mul(sub9[2], fact[2])];
|
const enh = [tf.mul(sub9[0], fact[0]), tf.mul(sub9[1], fact[1]), tf.mul(sub9[2], fact[2])];
|
||||||
const rgb3 = tf.stack([enh[0], enh[1], enh[2]], 2);
|
const rgb2 = tf.stack([enh[0], enh[1], enh[2]], 2);
|
||||||
const reshape8 = tf.reshape(rgb3, [1, squeeze9.shape[0], squeeze9.shape[1], 3]);
|
const reshape8 = tf.reshape(rgb2, [1, squeeze9.shape[0], squeeze9.shape[1], 3]);
|
||||||
tf.dispose([...channels, ...min2, ...max4, ...sub9, ...range, ...fact, ...enh, rgb3, squeeze9]);
|
tf.dispose([...channels, ...min2, ...max4, ...sub9, ...range, ...fact, ...enh, rgb2, squeeze9]);
|
||||||
return reshape8;
|
return reshape8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1058,9 +1058,9 @@ async function process2(input, config3, getTensor = true) {
|
||||||
if (input.shape[2] === 3) {
|
if (input.shape[2] === 3) {
|
||||||
tensor3 = tf2.expandDims(input, 0);
|
tensor3 = tf2.expandDims(input, 0);
|
||||||
} else if (input.shape[2] === 4) {
|
} else if (input.shape[2] === 4) {
|
||||||
const rgb3 = tf2.slice3d(input, [0, 0, 0], [-1, -1, 3]);
|
const rgb2 = tf2.slice3d(input, [0, 0, 0], [-1, -1, 3]);
|
||||||
tensor3 = tf2.expandDims(rgb3, 0);
|
tensor3 = tf2.expandDims(rgb2, 0);
|
||||||
tf2.dispose(rgb3);
|
tf2.dispose(rgb2);
|
||||||
}
|
}
|
||||||
} else if (input.shape.length === 4) {
|
} else if (input.shape.length === 4) {
|
||||||
if (input.shape[3] === 3) {
|
if (input.shape[3] === 3) {
|
||||||
|
@ -1209,9 +1209,9 @@ async function process2(input, config3, getTensor = true) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (depth === 4) {
|
if (depth === 4) {
|
||||||
const rgb3 = tf2.slice3d(pixels, [0, 0, 0], [-1, -1, 3]);
|
const rgb2 = tf2.slice3d(pixels, [0, 0, 0], [-1, -1, 3]);
|
||||||
tf2.dispose(pixels);
|
tf2.dispose(pixels);
|
||||||
pixels = rgb3;
|
pixels = rgb2;
|
||||||
}
|
}
|
||||||
if (!pixels)
|
if (!pixels)
|
||||||
throw new Error("input error: cannot create tensor");
|
throw new Error("input error: cannot create tensor");
|
||||||
|
@ -1381,13 +1381,13 @@ var Env = class {
|
||||||
var env = new Env();
|
var env = new Env();
|
||||||
|
|
||||||
// src/human.ts
|
// src/human.ts
|
||||||
var tf36 = __toModule(require_tfjs_esm());
|
var tf35 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// package.json
|
// package.json
|
||||||
var version = "2.5.2";
|
var version = "2.5.2";
|
||||||
|
|
||||||
// src/tfjs/humangl.ts
|
// src/tfjs/humangl.ts
|
||||||
var tf31 = __toModule(require_tfjs_esm());
|
var tf30 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/gear/gear.ts
|
// src/gear/gear.ts
|
||||||
var tf4 = __toModule(require_tfjs_esm());
|
var tf4 = __toModule(require_tfjs_esm());
|
||||||
|
@ -1460,12 +1460,22 @@ var tf6 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/tfjs/constants.ts
|
// src/tfjs/constants.ts
|
||||||
var tf5 = __toModule(require_tfjs_esm());
|
var tf5 = __toModule(require_tfjs_esm());
|
||||||
var tf255 = tf5.scalar(255, "float32");
|
var constants = {
|
||||||
var tf1 = tf5.scalar(1, "float32");
|
tf255: 255,
|
||||||
var tf22 = tf5.scalar(2, "float32");
|
tf1: 1,
|
||||||
var tf05 = tf5.scalar(0.5, "float32");
|
tf2: 2,
|
||||||
var tf127 = tf5.scalar(127.5, "float32");
|
tf05: 0.5,
|
||||||
var rgb = tf5.tensor1d([0.2989, 0.587, 0.114], "float32");
|
tf127: 127.5,
|
||||||
|
rgb: [0.2989, 0.587, 0.114]
|
||||||
|
};
|
||||||
|
function init() {
|
||||||
|
constants.tf255 = tf5.scalar(255, "float32");
|
||||||
|
constants.tf1 = tf5.scalar(1, "float32");
|
||||||
|
constants.tf2 = tf5.scalar(2, "float32");
|
||||||
|
constants.tf05 = tf5.scalar(0.5, "float32");
|
||||||
|
constants.tf127 = tf5.scalar(127.5, "float32");
|
||||||
|
constants.rgb = tf5.tensor1d([0.2989, 0.587, 0.114], "float32");
|
||||||
|
}
|
||||||
|
|
||||||
// src/gear/ssrnet-age.ts
|
// src/gear/ssrnet-age.ts
|
||||||
var model2;
|
var model2;
|
||||||
|
@ -1504,7 +1514,7 @@ async function predict2(image29, config3, idx, count2) {
|
||||||
return;
|
return;
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = tf6.image.resizeBilinear(image29, [model2.inputs[0].shape[2], model2.inputs[0].shape[1]], false);
|
t.resize = tf6.image.resizeBilinear(image29, [model2.inputs[0].shape[2], model2.inputs[0].shape[1]], false);
|
||||||
t.enhance = tf6.mul(t.resize, tf255);
|
t.enhance = tf6.mul(t.resize, constants.tf255);
|
||||||
const obj = { age: 0 };
|
const obj = { age: 0 };
|
||||||
if (config3.face["ssrnet"].enabled)
|
if (config3.face["ssrnet"].enabled)
|
||||||
t.age = model2.execute(t.enhance);
|
t.age = model2.execute(t.enhance);
|
||||||
|
@ -1527,7 +1537,7 @@ var last4 = [];
|
||||||
var lastCount3 = 0;
|
var lastCount3 = 0;
|
||||||
var lastTime3 = 0;
|
var lastTime3 = 0;
|
||||||
var skipped3 = Number.MAX_SAFE_INTEGER;
|
var skipped3 = Number.MAX_SAFE_INTEGER;
|
||||||
var rgb2 = [0.2989, 0.587, 0.114];
|
var rgb = [0.2989, 0.587, 0.114];
|
||||||
async function load3(config3) {
|
async function load3(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model3 = null;
|
model3 = null;
|
||||||
|
@ -1559,11 +1569,11 @@ async function predict3(image29, config3, idx, count2) {
|
||||||
t.resize = tf7.image.resizeBilinear(image29, [model3.inputs[0].shape[2], model3.inputs[0].shape[1]], false);
|
t.resize = tf7.image.resizeBilinear(image29, [model3.inputs[0].shape[2], model3.inputs[0].shape[1]], false);
|
||||||
t.enhance = tf7.tidy(() => {
|
t.enhance = tf7.tidy(() => {
|
||||||
const [red, green, blue] = tf7.split(t.resize, 3, 3);
|
const [red, green, blue] = tf7.split(t.resize, 3, 3);
|
||||||
const redNorm = tf7.mul(red, rgb2[0]);
|
const redNorm = tf7.mul(red, rgb[0]);
|
||||||
const greenNorm = tf7.mul(green, rgb2[1]);
|
const greenNorm = tf7.mul(green, rgb[1]);
|
||||||
const blueNorm = tf7.mul(blue, rgb2[2]);
|
const blueNorm = tf7.mul(blue, rgb[2]);
|
||||||
const grayscale = tf7.addN([redNorm, greenNorm, blueNorm]);
|
const grayscale = tf7.addN([redNorm, greenNorm, blueNorm]);
|
||||||
const normalize = tf7.mul(tf7.sub(grayscale, tf05), 2);
|
const normalize = tf7.mul(tf7.sub(grayscale, constants.tf05), 2);
|
||||||
return normalize;
|
return normalize;
|
||||||
});
|
});
|
||||||
const obj = { gender: "", genderScore: 0 };
|
const obj = { gender: "", genderScore: 0 };
|
||||||
|
@ -4937,7 +4947,7 @@ var cutBoxFromImageAndResize = (box4, image29, cropSize) => {
|
||||||
const h = image29.shape[1];
|
const h = image29.shape[1];
|
||||||
const w = image29.shape[2];
|
const w = image29.shape[2];
|
||||||
const crop2 = tf9.image.cropAndResize(image29, [[box4.startPoint[1] / h, box4.startPoint[0] / w, box4.endPoint[1] / h, box4.endPoint[0] / w]], [0], cropSize);
|
const crop2 = tf9.image.cropAndResize(image29, [[box4.startPoint[1] / h, box4.startPoint[0] / w, box4.endPoint[1] / h, box4.endPoint[0] / w]], [0], cropSize);
|
||||||
const norm = tf9.div(crop2, tf255);
|
const norm = tf9.div(crop2, constants.tf255);
|
||||||
tf9.dispose(crop2);
|
tf9.dispose(crop2);
|
||||||
return norm;
|
return norm;
|
||||||
};
|
};
|
||||||
|
@ -5092,7 +5102,7 @@ function decodeBounds(boxOutputs) {
|
||||||
t.boxSizes = tf10.slice(boxOutputs, [0, 3], [-1, 2]);
|
t.boxSizes = tf10.slice(boxOutputs, [0, 3], [-1, 2]);
|
||||||
t.boxSizesNormalized = tf10.div(t.boxSizes, inputSizeT);
|
t.boxSizesNormalized = tf10.div(t.boxSizes, inputSizeT);
|
||||||
t.centersNormalized = tf10.div(t.centers, inputSizeT);
|
t.centersNormalized = tf10.div(t.centers, inputSizeT);
|
||||||
t.halfBoxSize = tf10.div(t.boxSizesNormalized, tf22);
|
t.halfBoxSize = tf10.div(t.boxSizesNormalized, constants.tf2);
|
||||||
t.starts = tf10.sub(t.centersNormalized, t.halfBoxSize);
|
t.starts = tf10.sub(t.centersNormalized, t.halfBoxSize);
|
||||||
t.ends = tf10.add(t.centersNormalized, t.halfBoxSize);
|
t.ends = tf10.add(t.centersNormalized, t.halfBoxSize);
|
||||||
t.startNormalized = tf10.mul(t.starts, inputSizeT);
|
t.startNormalized = tf10.mul(t.starts, inputSizeT);
|
||||||
|
@ -5107,8 +5117,8 @@ async function getBoxes(inputImage, config3) {
|
||||||
return { boxes: [] };
|
return { boxes: [] };
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resized = tf10.image.resizeBilinear(inputImage, [inputSize, inputSize]);
|
t.resized = tf10.image.resizeBilinear(inputImage, [inputSize, inputSize]);
|
||||||
t.div = tf10.div(t.resized, tf127);
|
t.div = tf10.div(t.resized, constants.tf127);
|
||||||
t.normalized = tf10.sub(t.div, tf05);
|
t.normalized = tf10.sub(t.div, constants.tf05);
|
||||||
const res = model5 == null ? void 0 : model5.execute(t.normalized);
|
const res = model5 == null ? void 0 : model5.execute(t.normalized);
|
||||||
if (Array.isArray(res)) {
|
if (Array.isArray(res)) {
|
||||||
const sorted = res.sort((a, b) => a.size - b.size);
|
const sorted = res.sort((a, b) => a.size - b.size);
|
||||||
|
@ -5279,7 +5289,7 @@ async function prepareImage(input) {
|
||||||
];
|
];
|
||||||
t.pad = tf11.pad(input, padding);
|
t.pad = tf11.pad(input, padding);
|
||||||
t.resize = tf11.image.resizeBilinear(t.pad, [inputSize2[1][0], inputSize2[1][1]]);
|
t.resize = tf11.image.resizeBilinear(t.pad, [inputSize2[1][0], inputSize2[1][1]]);
|
||||||
const final = tf11.div(t.resize, tf255);
|
const final = tf11.div(t.resize, constants.tf255);
|
||||||
Object.keys(t).forEach((tensor3) => tf11.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf11.dispose(t[tensor3]));
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
|
@ -5463,26 +5473,20 @@ async function load6(config3) {
|
||||||
async function process3(res, outputShape, config3) {
|
async function process3(res, outputShape, config3) {
|
||||||
if (!res)
|
if (!res)
|
||||||
return [];
|
return [];
|
||||||
|
const t = {};
|
||||||
const results = [];
|
const results = [];
|
||||||
const detections = await res.array();
|
const detections = await res.array();
|
||||||
const squeezeT = tf12.squeeze(res);
|
t.squeeze = tf12.squeeze(res);
|
||||||
tf12.dispose(res);
|
const arr = tf12.split(t.squeeze, 6, 1);
|
||||||
const arr = tf12.split(squeezeT, 6, 1);
|
t.stack = tf12.stack([arr[1], arr[0], arr[3], arr[2]], 1);
|
||||||
tf12.dispose(squeezeT);
|
t.boxes = tf12.squeeze(t.stack);
|
||||||
const stackT = tf12.stack([arr[1], arr[0], arr[3], arr[2]], 1);
|
t.scores = tf12.squeeze(arr[4]);
|
||||||
const boxesT = tf12.squeeze(stackT);
|
t.classes = tf12.squeeze(arr[5]);
|
||||||
tf12.dispose(stackT);
|
tf12.dispose([res, ...arr]);
|
||||||
const scoresT = tf12.squeeze(arr[4]);
|
t.nms = await tf12.image.nonMaxSuppressionAsync(t.boxes, t.scores, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
||||||
const classesT = tf12.squeeze(arr[5]);
|
const nms = await t.nms.data();
|
||||||
arr.forEach((t) => tf12.dispose(t));
|
|
||||||
const nmsT = await tf12.image.nonMaxSuppressionAsync(boxesT, scoresT, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
|
||||||
tf12.dispose(boxesT);
|
|
||||||
tf12.dispose(scoresT);
|
|
||||||
tf12.dispose(classesT);
|
|
||||||
const nms = await nmsT.data();
|
|
||||||
tf12.dispose(nmsT);
|
|
||||||
let i = 0;
|
let i = 0;
|
||||||
for (const id of nms) {
|
for (const id of Array.from(nms)) {
|
||||||
const score = Math.trunc(100 * detections[0][id][4]) / 100;
|
const score = Math.trunc(100 * detections[0][id][4]) / 100;
|
||||||
const classVal = detections[0][id][5];
|
const classVal = detections[0][id][5];
|
||||||
const label = labels[classVal].label;
|
const label = labels[classVal].label;
|
||||||
|
@ -5504,6 +5508,7 @@ async function process3(res, outputShape, config3) {
|
||||||
];
|
];
|
||||||
results.push({ id: i++, score, class: classVal, label, box: box4, boxRaw });
|
results.push({ id: i++, score, class: classVal, label, box: box4, boxRaw });
|
||||||
}
|
}
|
||||||
|
Object.keys(t).forEach((tensor3) => tf12.dispose(t[tensor3]));
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
async function predict6(input, config3) {
|
async function predict6(input, config3) {
|
||||||
|
@ -5611,8 +5616,8 @@ async function predict7(image29, config3) {
|
||||||
if (!(model7 == null ? void 0 : model7.inputs[0].shape))
|
if (!(model7 == null ? void 0 : model7.inputs[0].shape))
|
||||||
return null;
|
return null;
|
||||||
const resize = tf13.image.resizeBilinear(image29, [model7.inputs[0].shape[2], model7.inputs[0].shape[1]], false);
|
const resize = tf13.image.resizeBilinear(image29, [model7.inputs[0].shape[2], model7.inputs[0].shape[1]], false);
|
||||||
const enhance3 = tf13.mul(resize, tf22);
|
const enhance3 = tf13.mul(resize, constants.tf2);
|
||||||
const norm = tf13.sub(enhance3, tf1);
|
const norm = tf13.sub(enhance3, constants.tf1);
|
||||||
return norm;
|
return norm;
|
||||||
});
|
});
|
||||||
let resT;
|
let resT;
|
||||||
|
@ -5716,10 +5721,10 @@ async function predict8(image29, config3, idx, count2) {
|
||||||
const t = {};
|
const t = {};
|
||||||
const inputSize8 = (model8 == null ? void 0 : model8.inputs[0].shape) ? model8.inputs[0].shape[2] : 0;
|
const inputSize8 = (model8 == null ? void 0 : model8.inputs[0].shape) ? model8.inputs[0].shape[2] : 0;
|
||||||
t.resize = tf14.image.resizeBilinear(image29, [inputSize8, inputSize8], false);
|
t.resize = tf14.image.resizeBilinear(image29, [inputSize8, inputSize8], false);
|
||||||
t.channels = tf14.mul(t.resize, rgb);
|
t.channels = tf14.mul(t.resize, constants.rgb);
|
||||||
t.grayscale = tf14.sum(t.channels, 3, true);
|
t.grayscale = tf14.sum(t.channels, 3, true);
|
||||||
t.grayscaleSub = tf14.sub(t.grayscale, tf05);
|
t.grayscaleSub = tf14.sub(t.grayscale, constants.tf05);
|
||||||
t.grayscaleMul = tf14.mul(t.grayscaleSub, tf22);
|
t.grayscaleMul = tf14.mul(t.grayscaleSub, constants.tf2);
|
||||||
t.emotion = model8 == null ? void 0 : model8.execute(t.grayscaleMul);
|
t.emotion = model8 == null ? void 0 : model8.execute(t.grayscaleMul);
|
||||||
lastTime8 = now();
|
lastTime8 = now();
|
||||||
const data = await t.emotion.data();
|
const data = await t.emotion.data();
|
||||||
|
@ -6064,7 +6069,7 @@ function enhance2(input) {
|
||||||
if (!(model12 == null ? void 0 : model12.inputs[0].shape))
|
if (!(model12 == null ? void 0 : model12.inputs[0].shape))
|
||||||
return tensor3;
|
return tensor3;
|
||||||
const crop2 = tf18.image.resizeBilinear(tensor3, [model12.inputs[0].shape[2], model12.inputs[0].shape[1]], false);
|
const crop2 = tf18.image.resizeBilinear(tensor3, [model12.inputs[0].shape[2], model12.inputs[0].shape[1]], false);
|
||||||
const norm = tf18.mul(crop2, tf255);
|
const norm = tf18.mul(crop2, constants.tf255);
|
||||||
tf18.dispose(crop2);
|
tf18.dispose(crop2);
|
||||||
return norm;
|
return norm;
|
||||||
}
|
}
|
||||||
|
@ -6117,7 +6122,7 @@ async function predict11(image29, config3, idx, count2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/hand/handpose.ts
|
// src/hand/handpose.ts
|
||||||
var tf23 = __toModule(require_tfjs_esm());
|
var tf22 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/hand/handposedetector.ts
|
// src/hand/handposedetector.ts
|
||||||
var tf20 = __toModule(require_tfjs_esm());
|
var tf20 = __toModule(require_tfjs_esm());
|
||||||
|
@ -9226,8 +9231,8 @@ var HandDetector = class {
|
||||||
async predict(input, config3) {
|
async predict(input, config3) {
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = tf20.image.resizeBilinear(input, [this.inputSize, this.inputSize]);
|
t.resize = tf20.image.resizeBilinear(input, [this.inputSize, this.inputSize]);
|
||||||
t.div = tf20.div(t.resize, tf127);
|
t.div = tf20.div(t.resize, constants.tf127);
|
||||||
t.image = tf20.sub(t.div, tf1);
|
t.image = tf20.sub(t.div, constants.tf1);
|
||||||
t.batched = this.model.execute(t.image);
|
t.batched = this.model.execute(t.image);
|
||||||
t.predictions = tf20.squeeze(t.batched);
|
t.predictions = tf20.squeeze(t.batched);
|
||||||
t.slice = tf20.slice(t.predictions, [0, 0], [-1, 1]);
|
t.slice = tf20.slice(t.predictions, [0, 0], [-1, 1]);
|
||||||
|
@ -9358,7 +9363,7 @@ var HandPipeline = class {
|
||||||
const rotationMatrix = buildRotationMatrix2(-angle, palmCenter);
|
const rotationMatrix = buildRotationMatrix2(-angle, palmCenter);
|
||||||
const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;
|
const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;
|
||||||
const croppedInput = cutBoxFromImageAndResize2(newBox, rotatedImage, [this.inputSize, this.inputSize]);
|
const croppedInput = cutBoxFromImageAndResize2(newBox, rotatedImage, [this.inputSize, this.inputSize]);
|
||||||
const handImage = tf21.div(croppedInput, tf255);
|
const handImage = tf21.div(croppedInput, constants.tf255);
|
||||||
tf21.dispose(croppedInput);
|
tf21.dispose(croppedInput);
|
||||||
tf21.dispose(rotatedImage);
|
tf21.dispose(rotatedImage);
|
||||||
const [confidenceT, keypoints] = this.handPoseModel.execute(handImage);
|
const [confidenceT, keypoints] = this.handPoseModel.execute(handImage);
|
||||||
|
@ -9888,8 +9893,8 @@ async function load13(config3) {
|
||||||
}
|
}
|
||||||
if (!handDetectorModel || !handPoseModel) {
|
if (!handDetectorModel || !handPoseModel) {
|
||||||
[handDetectorModel, handPoseModel] = await Promise.all([
|
[handDetectorModel, handPoseModel] = await Promise.all([
|
||||||
config3.hand.enabled ? tf23.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""), { fromTFHub: (((_b = config3.hand.detector) == null ? void 0 : _b.modelPath) || "").includes("tfhub.dev") }) : null,
|
config3.hand.enabled ? tf22.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""), { fromTFHub: (((_b = config3.hand.detector) == null ? void 0 : _b.modelPath) || "").includes("tfhub.dev") }) : null,
|
||||||
config3.hand.landmarks ? tf23.loadGraphModel(join(config3.modelBasePath, ((_c = config3.hand.skeleton) == null ? void 0 : _c.modelPath) || ""), { fromTFHub: (((_d = config3.hand.skeleton) == null ? void 0 : _d.modelPath) || "").includes("tfhub.dev") }) : null
|
config3.hand.landmarks ? tf22.loadGraphModel(join(config3.modelBasePath, ((_c = config3.hand.skeleton) == null ? void 0 : _c.modelPath) || ""), { fromTFHub: (((_d = config3.hand.skeleton) == null ? void 0 : _d.modelPath) || "").includes("tfhub.dev") }) : null
|
||||||
]);
|
]);
|
||||||
if (config3.hand.enabled) {
|
if (config3.hand.enabled) {
|
||||||
if (!handDetectorModel || !handDetectorModel["modelUrl"])
|
if (!handDetectorModel || !handDetectorModel["modelUrl"])
|
||||||
|
@ -9947,7 +9952,7 @@ function crop(box4) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/hand/handtrack.ts
|
// src/hand/handtrack.ts
|
||||||
var tf24 = __toModule(require_tfjs_esm());
|
var tf23 = __toModule(require_tfjs_esm());
|
||||||
var models2 = [null, null];
|
var models2 = [null, null];
|
||||||
var modelOutputNodes = ["StatefulPartitionedCall/Postprocessor/Slice", "StatefulPartitionedCall/Postprocessor/ExpandDims_1"];
|
var modelOutputNodes = ["StatefulPartitionedCall/Postprocessor/Slice", "StatefulPartitionedCall/Postprocessor/ExpandDims_1"];
|
||||||
var inputSize6 = [[0, 0], [0, 0]];
|
var inputSize6 = [[0, 0], [0, 0]];
|
||||||
|
@ -9977,7 +9982,7 @@ async function loadDetect2(config3) {
|
||||||
models2[0] = null;
|
models2[0] = null;
|
||||||
if (!models2[0]) {
|
if (!models2[0]) {
|
||||||
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
||||||
models2[0] = await tf24.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""));
|
models2[0] = await tf23.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""));
|
||||||
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
||||||
inputSize6[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize6[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize6[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize6[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
|
@ -9994,7 +9999,7 @@ async function loadSkeleton(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
models2[1] = null;
|
models2[1] = null;
|
||||||
if (!models2[1]) {
|
if (!models2[1]) {
|
||||||
models2[1] = await tf24.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath) || ""));
|
models2[1] = await tf23.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath) || ""));
|
||||||
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
||||||
inputSize6[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize6[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize6[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize6[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
|
@ -10014,27 +10019,27 @@ async function detectHands(input, config3) {
|
||||||
const ratio = (input.shape[2] || 1) / (input.shape[1] || 1);
|
const ratio = (input.shape[2] || 1) / (input.shape[1] || 1);
|
||||||
const height = Math.min(Math.round((input.shape[1] || 0) / 8) * 8, maxDetectorResolution);
|
const height = Math.min(Math.round((input.shape[1] || 0) / 8) * 8, maxDetectorResolution);
|
||||||
const width = Math.round(height * ratio / 8) * 8;
|
const width = Math.round(height * ratio / 8) * 8;
|
||||||
t.resize = tf24.image.resizeBilinear(input, [height, width]);
|
t.resize = tf23.image.resizeBilinear(input, [height, width]);
|
||||||
t.cast = tf24.cast(t.resize, "int32");
|
t.cast = tf23.cast(t.resize, "int32");
|
||||||
[t.rawScores, t.rawBoxes] = await models2[0].executeAsync(t.cast, modelOutputNodes);
|
[t.rawScores, t.rawBoxes] = await models2[0].executeAsync(t.cast, modelOutputNodes);
|
||||||
t.boxes = tf24.squeeze(t.rawBoxes, [0, 2]);
|
t.boxes = tf23.squeeze(t.rawBoxes, [0, 2]);
|
||||||
t.scores = tf24.squeeze(t.rawScores, [0]);
|
t.scores = tf23.squeeze(t.rawScores, [0]);
|
||||||
const classScores = tf24.unstack(t.scores, 1);
|
const classScores = tf23.unstack(t.scores, 1);
|
||||||
tf24.dispose(classScores[faceIndex]);
|
tf23.dispose(classScores[faceIndex]);
|
||||||
classScores.splice(faceIndex, 1);
|
classScores.splice(faceIndex, 1);
|
||||||
t.filtered = tf24.stack(classScores, 1);
|
t.filtered = tf23.stack(classScores, 1);
|
||||||
tf24.dispose(classScores);
|
tf23.dispose(classScores);
|
||||||
t.max = tf24.max(t.filtered, 1);
|
t.max = tf23.max(t.filtered, 1);
|
||||||
t.argmax = tf24.argMax(t.filtered, 1);
|
t.argmax = tf23.argMax(t.filtered, 1);
|
||||||
let id = 0;
|
let id = 0;
|
||||||
t.nms = await tf24.image.nonMaxSuppressionAsync(t.boxes, t.max, config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
t.nms = await tf23.image.nonMaxSuppressionAsync(t.boxes, t.max, config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
||||||
const nms = await t.nms.data();
|
const nms = await t.nms.data();
|
||||||
const scores = await t.max.data();
|
const scores = await t.max.data();
|
||||||
const classNum = await t.argmax.data();
|
const classNum = await t.argmax.data();
|
||||||
for (const nmsIndex of Array.from(nms)) {
|
for (const nmsIndex of Array.from(nms)) {
|
||||||
const boxSlice = tf24.slice(t.boxes, nmsIndex, 1);
|
const boxSlice = tf23.slice(t.boxes, nmsIndex, 1);
|
||||||
const boxYX = await boxSlice.data();
|
const boxYX = await boxSlice.data();
|
||||||
tf24.dispose(boxSlice);
|
tf23.dispose(boxSlice);
|
||||||
const boxData = [boxYX[1], boxYX[0], boxYX[3] - boxYX[1], boxYX[2] - boxYX[0]];
|
const boxData = [boxYX[1], boxYX[0], boxYX[3] - boxYX[1], boxYX[2] - boxYX[0]];
|
||||||
const boxRaw = scale(boxData, detectorExpandFact);
|
const boxRaw = scale(boxData, detectorExpandFact);
|
||||||
const boxCrop = crop(boxRaw);
|
const boxCrop = crop(boxRaw);
|
||||||
|
@ -10044,7 +10049,7 @@ async function detectHands(input, config3) {
|
||||||
const hand3 = { id: id++, score, box: boxFull, boxRaw, boxCrop, label };
|
const hand3 = { id: id++, score, box: boxFull, boxRaw, boxCrop, label };
|
||||||
hands.push(hand3);
|
hands.push(hand3);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf24.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf23.dispose(t[tensor3]));
|
||||||
hands.sort((a, b) => b.score - a.score);
|
hands.sort((a, b) => b.score - a.score);
|
||||||
if (hands.length > (config3.hand.maxDetected || 1))
|
if (hands.length > (config3.hand.maxDetected || 1))
|
||||||
hands.length = config3.hand.maxDetected || 1;
|
hands.length = config3.hand.maxDetected || 1;
|
||||||
|
@ -10065,14 +10070,14 @@ async function detectFingers(input, h, config3) {
|
||||||
};
|
};
|
||||||
if (input && models2[1] && config3.hand.landmarks && h.score > (config3.hand.minConfidence || 0)) {
|
if (input && models2[1] && config3.hand.landmarks && h.score > (config3.hand.minConfidence || 0)) {
|
||||||
const t = {};
|
const t = {};
|
||||||
t.crop = tf24.image.cropAndResize(input, [h.boxCrop], [0], [inputSize6[1][0], inputSize6[1][1]], "bilinear");
|
t.crop = tf23.image.cropAndResize(input, [h.boxCrop], [0], [inputSize6[1][0], inputSize6[1][1]], "bilinear");
|
||||||
t.div = tf24.div(t.crop, tf255);
|
t.div = tf23.div(t.crop, constants.tf255);
|
||||||
[t.score, t.keypoints] = models2[1].execute(t.div, ["Identity_1", "Identity"]);
|
[t.score, t.keypoints] = models2[1].execute(t.div, ["Identity_1", "Identity"]);
|
||||||
const rawScore = (await t.score.data())[0];
|
const rawScore = (await t.score.data())[0];
|
||||||
const score = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
const score = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||||
if (score >= (config3.hand.minConfidence || 0)) {
|
if (score >= (config3.hand.minConfidence || 0)) {
|
||||||
hand3.fingerScore = score;
|
hand3.fingerScore = score;
|
||||||
t.reshaped = tf24.reshape(t.keypoints, [-1, 3]);
|
t.reshaped = tf23.reshape(t.keypoints, [-1, 3]);
|
||||||
const coordsData = await t.reshaped.array();
|
const coordsData = await t.reshaped.array();
|
||||||
const coordsRaw = coordsData.map((kpt4) => [kpt4[0] / inputSize6[1][1], kpt4[1] / inputSize6[1][0], kpt4[2] || 0]);
|
const coordsRaw = coordsData.map((kpt4) => [kpt4[0] / inputSize6[1][1], kpt4[1] / inputSize6[1][0], kpt4[2] || 0]);
|
||||||
const coordsNorm = coordsRaw.map((kpt4) => [kpt4[0] * h.boxRaw[2], kpt4[1] * h.boxRaw[3], kpt4[2] || 0]);
|
const coordsNorm = coordsRaw.map((kpt4) => [kpt4[0] * h.boxRaw[2], kpt4[1] * h.boxRaw[3], kpt4[2] || 0]);
|
||||||
|
@ -10086,7 +10091,7 @@ async function detectFingers(input, h, config3) {
|
||||||
hand3.annotations[key] = fingerMap[key].map((index2) => hand3.landmarks && hand3.keypoints[index2] ? hand3.keypoints[index2] : null);
|
hand3.annotations[key] = fingerMap[key].map((index2) => hand3.landmarks && hand3.keypoints[index2] ? hand3.keypoints[index2] : null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf24.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf23.dispose(t[tensor3]));
|
||||||
}
|
}
|
||||||
return hand3;
|
return hand3;
|
||||||
}
|
}
|
||||||
|
@ -10137,7 +10142,7 @@ async function predict13(input, config3) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/face/liveness.ts
|
// src/face/liveness.ts
|
||||||
var tf25 = __toModule(require_tfjs_esm());
|
var tf24 = __toModule(require_tfjs_esm());
|
||||||
var model13;
|
var model13;
|
||||||
var cached2 = [];
|
var cached2 = [];
|
||||||
var skipped13 = Number.MAX_SAFE_INTEGER;
|
var skipped13 = Number.MAX_SAFE_INTEGER;
|
||||||
|
@ -10148,7 +10153,7 @@ async function load14(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model13 = null;
|
model13 = null;
|
||||||
if (!model13) {
|
if (!model13) {
|
||||||
model13 = await tf25.loadGraphModel(join(config3.modelBasePath, ((_a = config3.face.liveness) == null ? void 0 : _a.modelPath) || ""));
|
model13 = await tf24.loadGraphModel(join(config3.modelBasePath, ((_a = config3.face.liveness) == null ? void 0 : _a.modelPath) || ""));
|
||||||
if (!model13 || !model13["modelUrl"])
|
if (!model13 || !model13["modelUrl"])
|
||||||
log("load model failed:", (_b = config3.face.liveness) == null ? void 0 : _b.modelPath);
|
log("load model failed:", (_b = config3.face.liveness) == null ? void 0 : _b.modelPath);
|
||||||
else if (config3.debug)
|
else if (config3.debug)
|
||||||
|
@ -10169,19 +10174,19 @@ async function predict14(image29, config3, idx, count2) {
|
||||||
}
|
}
|
||||||
skipped13 = 0;
|
skipped13 = 0;
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
const resize = tf25.image.resizeBilinear(image29, [(model13 == null ? void 0 : model13.inputs[0].shape) ? model13.inputs[0].shape[2] : 0, (model13 == null ? void 0 : model13.inputs[0].shape) ? model13.inputs[0].shape[1] : 0], false);
|
const resize = tf24.image.resizeBilinear(image29, [(model13 == null ? void 0 : model13.inputs[0].shape) ? model13.inputs[0].shape[2] : 0, (model13 == null ? void 0 : model13.inputs[0].shape) ? model13.inputs[0].shape[1] : 0], false);
|
||||||
const res = model13 == null ? void 0 : model13.execute(resize);
|
const res = model13 == null ? void 0 : model13.execute(resize);
|
||||||
const num = (await res.data())[0];
|
const num = (await res.data())[0];
|
||||||
cached2[idx] = Math.round(100 * num) / 100;
|
cached2[idx] = Math.round(100 * num) / 100;
|
||||||
lastCount8 = count2;
|
lastCount8 = count2;
|
||||||
lastTime14 = now();
|
lastTime14 = now();
|
||||||
tf25.dispose([resize, res]);
|
tf24.dispose([resize, res]);
|
||||||
resolve(cached2[idx]);
|
resolve(cached2[idx]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/body/movenet.ts
|
// src/body/movenet.ts
|
||||||
var tf27 = __toModule(require_tfjs_esm());
|
var tf26 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/body/movenetcoords.ts
|
// src/body/movenetcoords.ts
|
||||||
var movenetcoords_exports = {};
|
var movenetcoords_exports = {};
|
||||||
|
@ -10241,7 +10246,7 @@ var connected3 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// src/body/movenetfix.ts
|
// src/body/movenetfix.ts
|
||||||
var tf26 = __toModule(require_tfjs_esm());
|
var tf25 = __toModule(require_tfjs_esm());
|
||||||
var maxJitter = 5e-3;
|
var maxJitter = 5e-3;
|
||||||
var cache4 = {
|
var cache4 = {
|
||||||
keypoints: [],
|
keypoints: [],
|
||||||
|
@ -10315,10 +10320,10 @@ function padInput(input, inputSize8) {
|
||||||
[input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0, input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0],
|
[input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0, input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0],
|
||||||
[0, 0]
|
[0, 0]
|
||||||
];
|
];
|
||||||
t.pad = tf26.pad(input, cache4.padding);
|
t.pad = tf25.pad(input, cache4.padding);
|
||||||
t.resize = tf26.image.resizeBilinear(t.pad, [inputSize8, inputSize8]);
|
t.resize = tf25.image.resizeBilinear(t.pad, [inputSize8, inputSize8]);
|
||||||
const final = tf26.cast(t.resize, "int32");
|
const final = tf25.cast(t.resize, "int32");
|
||||||
Object.keys(t).forEach((tensor3) => tf26.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf25.dispose(t[tensor3]));
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
function rescaleBody(body4, outputSize2) {
|
function rescaleBody(body4, outputSize2) {
|
||||||
|
@ -10353,7 +10358,7 @@ async function load15(config3) {
|
||||||
model14 = null;
|
model14 = null;
|
||||||
if (!model14) {
|
if (!model14) {
|
||||||
fakeOps(["size"], config3);
|
fakeOps(["size"], config3);
|
||||||
model14 = await tf27.loadGraphModel(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model14 = await tf26.loadGraphModel(join(config3.modelBasePath, config3.body.modelPath || ""));
|
||||||
if (!model14 || !model14["modelUrl"])
|
if (!model14 || !model14["modelUrl"])
|
||||||
log("load model failed:", config3.body.modelPath);
|
log("load model failed:", config3.body.modelPath);
|
||||||
else if (config3.debug)
|
else if (config3.debug)
|
||||||
|
@ -10465,13 +10470,13 @@ async function predict15(input, config3) {
|
||||||
rescaleBody(body4, [input.shape[2] || 1, input.shape[1] || 1]);
|
rescaleBody(body4, [input.shape[2] || 1, input.shape[1] || 1]);
|
||||||
jitter(body4.keypoints);
|
jitter(body4.keypoints);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf27.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf26.dispose(t[tensor3]));
|
||||||
resolve(cache5.bodies);
|
resolve(cache5.bodies);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/object/nanodet.ts
|
// src/object/nanodet.ts
|
||||||
var tf28 = __toModule(require_tfjs_esm());
|
var tf27 = __toModule(require_tfjs_esm());
|
||||||
var model15;
|
var model15;
|
||||||
var last9 = [];
|
var last9 = [];
|
||||||
var lastTime15 = 0;
|
var lastTime15 = 0;
|
||||||
|
@ -10479,7 +10484,7 @@ var skipped15 = Number.MAX_SAFE_INTEGER;
|
||||||
var scaleBox = 2.5;
|
var scaleBox = 2.5;
|
||||||
async function load16(config3) {
|
async function load16(config3) {
|
||||||
if (!model15 || env.initial) {
|
if (!model15 || env.initial) {
|
||||||
model15 = await tf28.loadGraphModel(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model15 = await tf27.loadGraphModel(join(config3.modelBasePath, config3.object.modelPath || ""));
|
||||||
const inputs = Object.values(model15.modelSignature["inputs"]);
|
const inputs = Object.values(model15.modelSignature["inputs"]);
|
||||||
model15.inputSize = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : null;
|
model15.inputSize = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : null;
|
||||||
if (!model15 || !model15.modelUrl)
|
if (!model15 || !model15.modelUrl)
|
||||||
|
@ -10494,7 +10499,7 @@ async function process4(res, inputSize8, outputShape, config3) {
|
||||||
let id = 0;
|
let id = 0;
|
||||||
let results = [];
|
let results = [];
|
||||||
for (const strideSize of [1, 2, 4]) {
|
for (const strideSize of [1, 2, 4]) {
|
||||||
tf28.tidy(async () => {
|
tf27.tidy(async () => {
|
||||||
var _a, _b;
|
var _a, _b;
|
||||||
const baseSize = strideSize * 13;
|
const baseSize = strideSize * 13;
|
||||||
const scoresT = (_a = res.find((a) => a.shape[1] === baseSize ** 2 && a.shape[2] === labels.length)) == null ? void 0 : _a.squeeze();
|
const scoresT = (_a = res.find((a) => a.shape[1] === baseSize ** 2 && a.shape[2] === labels.length)) == null ? void 0 : _a.squeeze();
|
||||||
|
@ -10539,14 +10544,14 @@ async function process4(res, inputSize8, outputShape, config3) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
res.forEach((t) => tf28.dispose(t));
|
res.forEach((t) => tf27.dispose(t));
|
||||||
const nmsBoxes = results.map((a) => [a.boxRaw[1], a.boxRaw[0], a.boxRaw[3], a.boxRaw[2]]);
|
const nmsBoxes = results.map((a) => [a.boxRaw[1], a.boxRaw[0], a.boxRaw[3], a.boxRaw[2]]);
|
||||||
const nmsScores = results.map((a) => a.score);
|
const nmsScores = results.map((a) => a.score);
|
||||||
let nmsIdx = [];
|
let nmsIdx = [];
|
||||||
if (nmsBoxes && nmsBoxes.length > 0) {
|
if (nmsBoxes && nmsBoxes.length > 0) {
|
||||||
const nms = await tf28.image.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
const nms = await tf27.image.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
||||||
nmsIdx = await nms.data();
|
nmsIdx = await nms.data();
|
||||||
tf28.dispose(nms);
|
tf27.dispose(nms);
|
||||||
}
|
}
|
||||||
results = results.filter((_val, idx) => nmsIdx.includes(idx)).sort((a, b) => b.score - a.score);
|
results = results.filter((_val, idx) => nmsIdx.includes(idx)).sort((a, b) => b.score - a.score);
|
||||||
return results;
|
return results;
|
||||||
|
@ -10563,16 +10568,16 @@ async function predict16(image29, config3) {
|
||||||
return last9;
|
return last9;
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
const outputSize2 = [image29.shape[2], image29.shape[1]];
|
const outputSize2 = [image29.shape[2], image29.shape[1]];
|
||||||
const resize = tf28.image.resizeBilinear(image29, [model15.inputSize, model15.inputSize], false);
|
const resize = tf27.image.resizeBilinear(image29, [model15.inputSize, model15.inputSize], false);
|
||||||
const norm = tf28.div(resize, tf255);
|
const norm = tf27.div(resize, constants.tf255);
|
||||||
const transpose = norm.transpose([0, 3, 1, 2]);
|
const transpose = norm.transpose([0, 3, 1, 2]);
|
||||||
tf28.dispose(norm);
|
tf27.dispose(norm);
|
||||||
tf28.dispose(resize);
|
tf27.dispose(resize);
|
||||||
let objectT;
|
let objectT;
|
||||||
if (config3.object.enabled)
|
if (config3.object.enabled)
|
||||||
objectT = model15.execute(transpose);
|
objectT = model15.execute(transpose);
|
||||||
lastTime15 = now();
|
lastTime15 = now();
|
||||||
tf28.dispose(transpose);
|
tf27.dispose(transpose);
|
||||||
const obj = await process4(objectT, model15.inputSize, outputSize2, config3);
|
const obj = await process4(objectT, model15.inputSize, outputSize2, config3);
|
||||||
last9 = obj;
|
last9 = obj;
|
||||||
resolve(obj);
|
resolve(obj);
|
||||||
|
@ -10580,7 +10585,7 @@ async function predict16(image29, config3) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/body/posenet.ts
|
// src/body/posenet.ts
|
||||||
var tf29 = __toModule(require_tfjs_esm());
|
var tf28 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/body/posenetutils.ts
|
// src/body/posenetutils.ts
|
||||||
var partNames = [
|
var partNames = [
|
||||||
|
@ -10891,19 +10896,19 @@ function decode(offsets, scores, displacementsFwd, displacementsBwd, maxDetected
|
||||||
return poses;
|
return poses;
|
||||||
}
|
}
|
||||||
async function predict17(input, config3) {
|
async function predict17(input, config3) {
|
||||||
const res = tf29.tidy(() => {
|
const res = tf28.tidy(() => {
|
||||||
if (!model16.inputs[0].shape)
|
if (!model16.inputs[0].shape)
|
||||||
return [];
|
return [];
|
||||||
const resized = tf29.image.resizeBilinear(input, [model16.inputs[0].shape[2], model16.inputs[0].shape[1]]);
|
const resized = tf28.image.resizeBilinear(input, [model16.inputs[0].shape[2], model16.inputs[0].shape[1]]);
|
||||||
const normalized = tf29.sub(tf29.div(tf29.cast(resized, "float32"), 127.5), 1);
|
const normalized = tf28.sub(tf28.div(tf28.cast(resized, "float32"), 127.5), 1);
|
||||||
const results = model16.execute(normalized, poseNetOutputs);
|
const results = model16.execute(normalized, poseNetOutputs);
|
||||||
const results3d = results.map((y) => tf29.squeeze(y, [0]));
|
const results3d = results.map((y) => tf28.squeeze(y, [0]));
|
||||||
results3d[1] = results3d[1].sigmoid();
|
results3d[1] = results3d[1].sigmoid();
|
||||||
return results3d;
|
return results3d;
|
||||||
});
|
});
|
||||||
const buffers = await Promise.all(res.map((tensor3) => tensor3.buffer()));
|
const buffers = await Promise.all(res.map((tensor3) => tensor3.buffer()));
|
||||||
for (const t of res)
|
for (const t of res)
|
||||||
tf29.dispose(t);
|
tf28.dispose(t);
|
||||||
const decoded = await decode(buffers[0], buffers[1], buffers[2], buffers[3], config3.body.maxDetected, config3.body.minConfidence);
|
const decoded = await decode(buffers[0], buffers[1], buffers[2], buffers[3], config3.body.maxDetected, config3.body.minConfidence);
|
||||||
if (!model16.inputs[0].shape)
|
if (!model16.inputs[0].shape)
|
||||||
return [];
|
return [];
|
||||||
|
@ -10912,7 +10917,7 @@ async function predict17(input, config3) {
|
||||||
}
|
}
|
||||||
async function load17(config3) {
|
async function load17(config3) {
|
||||||
if (!model16 || env.initial) {
|
if (!model16 || env.initial) {
|
||||||
model16 = await tf29.loadGraphModel(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model16 = await tf28.loadGraphModel(join(config3.modelBasePath, config3.body.modelPath || ""));
|
||||||
if (!model16 || !model16["modelUrl"])
|
if (!model16 || !model16["modelUrl"])
|
||||||
log("load model failed:", config3.body.modelPath);
|
log("load model failed:", config3.body.modelPath);
|
||||||
else if (config3.debug)
|
else if (config3.debug)
|
||||||
|
@ -10923,12 +10928,12 @@ async function load17(config3) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/segmentation/segmentation.ts
|
// src/segmentation/segmentation.ts
|
||||||
var tf30 = __toModule(require_tfjs_esm());
|
var tf29 = __toModule(require_tfjs_esm());
|
||||||
var model17;
|
var model17;
|
||||||
var busy = false;
|
var busy = false;
|
||||||
async function load18(config3) {
|
async function load18(config3) {
|
||||||
if (!model17 || env.initial) {
|
if (!model17 || env.initial) {
|
||||||
model17 = await tf30.loadGraphModel(join(config3.modelBasePath, config3.segmentation.modelPath || ""));
|
model17 = await tf29.loadGraphModel(join(config3.modelBasePath, config3.segmentation.modelPath || ""));
|
||||||
if (!model17 || !model17["modelUrl"])
|
if (!model17 || !model17["modelUrl"])
|
||||||
log("load model failed:", config3.segmentation.modelPath);
|
log("load model failed:", config3.segmentation.modelPath);
|
||||||
else if (config3.debug)
|
else if (config3.debug)
|
||||||
|
@ -10950,30 +10955,30 @@ async function process5(input, background, config3) {
|
||||||
if (!inputImage.tensor)
|
if (!inputImage.tensor)
|
||||||
return { data: [], canvas: null, alpha: null };
|
return { data: [], canvas: null, alpha: null };
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = tf30.image.resizeBilinear(inputImage.tensor, [model17.inputs[0].shape ? model17.inputs[0].shape[1] : 0, model17.inputs[0].shape ? model17.inputs[0].shape[2] : 0], false);
|
t.resize = tf29.image.resizeBilinear(inputImage.tensor, [model17.inputs[0].shape ? model17.inputs[0].shape[1] : 0, model17.inputs[0].shape ? model17.inputs[0].shape[2] : 0], false);
|
||||||
tf30.dispose(inputImage.tensor);
|
tf29.dispose(inputImage.tensor);
|
||||||
t.norm = tf30.div(t.resize, tf255);
|
t.norm = tf29.div(t.resize, constants.tf255);
|
||||||
t.res = model17.execute(t.norm);
|
t.res = model17.execute(t.norm);
|
||||||
t.squeeze = tf30.squeeze(t.res, 0);
|
t.squeeze = tf29.squeeze(t.res, 0);
|
||||||
if (t.squeeze.shape[2] === 2) {
|
if (t.squeeze.shape[2] === 2) {
|
||||||
t.softmax = tf30.softmax(t.squeeze);
|
t.softmax = tf29.softmax(t.squeeze);
|
||||||
[t.bg, t.fg] = tf30.unstack(t.softmax, 2);
|
[t.bg, t.fg] = tf29.unstack(t.softmax, 2);
|
||||||
t.expand = tf30.expandDims(t.fg, 2);
|
t.expand = tf29.expandDims(t.fg, 2);
|
||||||
t.pad = tf30.expandDims(t.expand, 0);
|
t.pad = tf29.expandDims(t.expand, 0);
|
||||||
t.crop = tf30.image.cropAndResize(t.pad, [[0, 0, 0.5, 0.5]], [0], [width, height]);
|
t.crop = tf29.image.cropAndResize(t.pad, [[0, 0, 0.5, 0.5]], [0], [width, height]);
|
||||||
t.data = tf30.squeeze(t.crop, 0);
|
t.data = tf29.squeeze(t.crop, 0);
|
||||||
} else {
|
} else {
|
||||||
t.data = tf30.image.resizeBilinear(t.squeeze, [height, width]);
|
t.data = tf29.image.resizeBilinear(t.squeeze, [height, width]);
|
||||||
}
|
}
|
||||||
const data = Array.from(await t.data.data());
|
const data = Array.from(await t.data.data());
|
||||||
if (env.node && !env.Canvas && typeof ImageData === "undefined") {
|
if (env.node && !env.Canvas && typeof ImageData === "undefined") {
|
||||||
if (config3.debug)
|
if (config3.debug)
|
||||||
log("canvas support missing");
|
log("canvas support missing");
|
||||||
Object.keys(t).forEach((tensor3) => tf30.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf29.dispose(t[tensor3]));
|
||||||
return { data, canvas: null, alpha: null };
|
return { data, canvas: null, alpha: null };
|
||||||
}
|
}
|
||||||
const alphaCanvas = canvas(width, height);
|
const alphaCanvas = canvas(width, height);
|
||||||
await tf30.browser.toPixels(t.data, alphaCanvas);
|
await tf29.browser.toPixels(t.data, alphaCanvas);
|
||||||
const alphaCtx = alphaCanvas.getContext("2d");
|
const alphaCtx = alphaCanvas.getContext("2d");
|
||||||
if (config3.segmentation.blur && config3.segmentation.blur > 0)
|
if (config3.segmentation.blur && config3.segmentation.blur > 0)
|
||||||
alphaCtx.filter = `blur(${config3.segmentation.blur}px)`;
|
alphaCtx.filter = `blur(${config3.segmentation.blur}px)`;
|
||||||
|
@ -10996,12 +11001,12 @@ async function process5(input, background, config3) {
|
||||||
if (background && compositeCanvas) {
|
if (background && compositeCanvas) {
|
||||||
mergedCanvas = canvas(width, height);
|
mergedCanvas = canvas(width, height);
|
||||||
const bgImage = await process2(background, config3);
|
const bgImage = await process2(background, config3);
|
||||||
tf30.dispose(bgImage.tensor);
|
tf29.dispose(bgImage.tensor);
|
||||||
const ctxMerge = mergedCanvas.getContext("2d");
|
const ctxMerge = mergedCanvas.getContext("2d");
|
||||||
ctxMerge.drawImage(bgImage.canvas, 0, 0, mergedCanvas.width, mergedCanvas.height);
|
ctxMerge.drawImage(bgImage.canvas, 0, 0, mergedCanvas.width, mergedCanvas.height);
|
||||||
ctxMerge.drawImage(compositeCanvas, 0, 0);
|
ctxMerge.drawImage(compositeCanvas, 0, 0);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf30.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf29.dispose(t[tensor3]));
|
||||||
busy = false;
|
busy = false;
|
||||||
return { data, canvas: compositeCanvas, alpha: alphaCanvas };
|
return { data, canvas: compositeCanvas, alpha: alphaCanvas };
|
||||||
}
|
}
|
||||||
|
@ -11163,11 +11168,11 @@ async function register(instance) {
|
||||||
var _a;
|
var _a;
|
||||||
if (instance.config.backend !== "humangl")
|
if (instance.config.backend !== "humangl")
|
||||||
return;
|
return;
|
||||||
if (config2.name in tf31.engine().registry && (!config2.gl || !config2.gl.getParameter(config2.gl.VERSION))) {
|
if (config2.name in tf30.engine().registry && (!config2.gl || !config2.gl.getParameter(config2.gl.VERSION))) {
|
||||||
log("error: humangl backend invalid context");
|
log("error: humangl backend invalid context");
|
||||||
reset(instance);
|
reset(instance);
|
||||||
}
|
}
|
||||||
if (!tf31.findBackend(config2.name)) {
|
if (!tf30.findBackend(config2.name)) {
|
||||||
try {
|
try {
|
||||||
config2.canvas = await canvas(100, 100);
|
config2.canvas = await canvas(100, 100);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
@ -11201,29 +11206,29 @@ async function register(instance) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
tf31.setWebGLContext(2, config2.gl);
|
tf30.setWebGLContext(2, config2.gl);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot set WebGL context:", err);
|
log("error: cannot set WebGL context:", err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const ctx = new tf31.GPGPUContext(config2.gl);
|
const ctx = new tf30.GPGPUContext(config2.gl);
|
||||||
tf31.registerBackend(config2.name, () => new tf31.MathBackendWebGL(ctx), config2.priority);
|
tf30.registerBackend(config2.name, () => new tf30.MathBackendWebGL(ctx), config2.priority);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot register WebGL backend:", err);
|
log("error: cannot register WebGL backend:", err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const kernels = tf31.getKernelsForBackend("webgl");
|
const kernels = tf30.getKernelsForBackend("webgl");
|
||||||
kernels.forEach((kernelConfig) => {
|
kernels.forEach((kernelConfig) => {
|
||||||
const newKernelConfig = { ...kernelConfig, backendName: config2.name };
|
const newKernelConfig = { ...kernelConfig, backendName: config2.name };
|
||||||
tf31.registerKernel(newKernelConfig);
|
tf30.registerKernel(newKernelConfig);
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot update WebGL backend registration:", err);
|
log("error: cannot update WebGL backend registration:", err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const current = tf31.backend().getGPGPUContext ? tf31.backend().getGPGPUContext().gl : null;
|
const current = tf30.backend().getGPGPUContext ? tf30.backend().getGPGPUContext().gl : null;
|
||||||
if (current) {
|
if (current) {
|
||||||
log(`humangl webgl version:${current.getParameter(current.VERSION)} renderer:${current.getParameter(current.RENDERER)}`);
|
log(`humangl webgl version:${current.getParameter(current.VERSION)} renderer:${current.getParameter(current.RENDERER)}`);
|
||||||
} else {
|
} else {
|
||||||
|
@ -11231,7 +11236,7 @@ async function register(instance) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
tf31.ENV.set("WEBGL_VERSION", 2);
|
tf30.ENV.set("WEBGL_VERSION", 2);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot set WebGL backend flags:", err);
|
log("error: cannot set WebGL backend flags:", err);
|
||||||
return;
|
return;
|
||||||
|
@ -11242,30 +11247,30 @@ async function register(instance) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/tfjs/backend.ts
|
// src/tfjs/backend.ts
|
||||||
var tf32 = __toModule(require_tfjs_esm());
|
var tf31 = __toModule(require_tfjs_esm());
|
||||||
function registerCustomOps() {
|
function registerCustomOps() {
|
||||||
if (!env.kernels.includes("mod")) {
|
if (!env.kernels.includes("mod")) {
|
||||||
const kernelMod = {
|
const kernelMod = {
|
||||||
kernelName: "Mod",
|
kernelName: "Mod",
|
||||||
backendName: tf32.getBackend(),
|
backendName: tf31.getBackend(),
|
||||||
kernelFunc: (op) => tf32.tidy(() => tf32.sub(op.inputs.a, tf32.mul(tf32.div(op.inputs.a, op.inputs.b), op.inputs.b)))
|
kernelFunc: (op) => tf31.tidy(() => tf31.sub(op.inputs.a, tf31.mul(tf31.div(op.inputs.a, op.inputs.b), op.inputs.b)))
|
||||||
};
|
};
|
||||||
tf32.registerKernel(kernelMod);
|
tf31.registerKernel(kernelMod);
|
||||||
env.kernels.push("mod");
|
env.kernels.push("mod");
|
||||||
}
|
}
|
||||||
if (!env.kernels.includes("floormod")) {
|
if (!env.kernels.includes("floormod")) {
|
||||||
const kernelMod = {
|
const kernelMod = {
|
||||||
kernelName: "FloorMod",
|
kernelName: "FloorMod",
|
||||||
backendName: tf32.getBackend(),
|
backendName: tf31.getBackend(),
|
||||||
kernelFunc: (op) => tf32.tidy(() => tf32.floorDiv(op.inputs.a / op.inputs.b) * op.inputs.b + tf32.mod(op.inputs.a, op.inputs.b))
|
kernelFunc: (op) => tf31.tidy(() => tf31.floorDiv(op.inputs.a / op.inputs.b) * op.inputs.b + tf31.mod(op.inputs.a, op.inputs.b))
|
||||||
};
|
};
|
||||||
tf32.registerKernel(kernelMod);
|
tf31.registerKernel(kernelMod);
|
||||||
env.kernels.push("floormod");
|
env.kernels.push("floormod");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function check(instance, force = false) {
|
async function check(instance, force = false) {
|
||||||
instance.state = "backend";
|
instance.state = "backend";
|
||||||
if (force || env.initial || instance.config.backend && instance.config.backend.length > 0 && tf32.getBackend() !== instance.config.backend) {
|
if (force || env.initial || instance.config.backend && instance.config.backend.length > 0 && tf31.getBackend() !== instance.config.backend) {
|
||||||
const timeStamp = now();
|
const timeStamp = now();
|
||||||
if (instance.config.backend && instance.config.backend.length > 0) {
|
if (instance.config.backend && instance.config.backend.length > 0) {
|
||||||
if (typeof window === "undefined" && typeof WorkerGlobalScope !== "undefined" && instance.config.debug) {
|
if (typeof window === "undefined" && typeof WorkerGlobalScope !== "undefined" && instance.config.debug) {
|
||||||
|
@ -11294,7 +11299,7 @@ async function check(instance, force = false) {
|
||||||
}
|
}
|
||||||
if (instance.config.backend === "humangl")
|
if (instance.config.backend === "humangl")
|
||||||
await register(instance);
|
await register(instance);
|
||||||
const available = Object.keys(tf32.engine().registryFactory);
|
const available = Object.keys(tf31.engine().registryFactory);
|
||||||
if (instance.config.debug)
|
if (instance.config.debug)
|
||||||
log("available backends:", available);
|
log("available backends:", available);
|
||||||
if (!available.includes(instance.config.backend)) {
|
if (!available.includes(instance.config.backend)) {
|
||||||
|
@ -11308,46 +11313,47 @@ async function check(instance, force = false) {
|
||||||
if (instance.config.backend === "wasm") {
|
if (instance.config.backend === "wasm") {
|
||||||
if (instance.config.debug)
|
if (instance.config.debug)
|
||||||
log("wasm path:", instance.config.wasmPath);
|
log("wasm path:", instance.config.wasmPath);
|
||||||
if (typeof (tf32 == null ? void 0 : tf32.setWasmPaths) !== "undefined")
|
if (typeof (tf31 == null ? void 0 : tf31.setWasmPaths) !== "undefined")
|
||||||
await tf32.setWasmPaths(instance.config.wasmPath);
|
await tf31.setWasmPaths(instance.config.wasmPath);
|
||||||
else
|
else
|
||||||
throw new Error("backend error: attempting to use wasm backend but wasm path is not set");
|
throw new Error("backend error: attempting to use wasm backend but wasm path is not set");
|
||||||
const simd = await tf32.env().getAsync("WASM_HAS_SIMD_SUPPORT");
|
const simd = await tf31.env().getAsync("WASM_HAS_SIMD_SUPPORT");
|
||||||
const mt = await tf32.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");
|
const mt = await tf31.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");
|
||||||
if (instance.config.debug)
|
if (instance.config.debug)
|
||||||
log(`wasm execution: ${simd ? "SIMD" : "no SIMD"} ${mt ? "multithreaded" : "singlethreaded"}`);
|
log(`wasm execution: ${simd ? "SIMD" : "no SIMD"} ${mt ? "multithreaded" : "singlethreaded"}`);
|
||||||
if (instance.config.debug && !simd)
|
if (instance.config.debug && !simd)
|
||||||
log("warning: wasm simd support is not enabled");
|
log("warning: wasm simd support is not enabled");
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
await tf32.setBackend(instance.config.backend);
|
await tf31.setBackend(instance.config.backend);
|
||||||
await tf32.ready();
|
await tf31.ready();
|
||||||
|
init();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot set backend:", instance.config.backend, err);
|
log("error: cannot set backend:", instance.config.backend, err);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tf32.getBackend() === "humangl") {
|
if (tf31.getBackend() === "humangl") {
|
||||||
tf32.ENV.set("CHECK_COMPUTATION_FOR_ERRORS", false);
|
tf31.ENV.set("CHECK_COMPUTATION_FOR_ERRORS", false);
|
||||||
tf32.ENV.set("WEBGL_CPU_FORWARD", true);
|
tf31.ENV.set("WEBGL_CPU_FORWARD", true);
|
||||||
tf32.ENV.set("WEBGL_USE_SHAPES_UNIFORMS", true);
|
tf31.ENV.set("WEBGL_USE_SHAPES_UNIFORMS", true);
|
||||||
tf32.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD", 256);
|
tf31.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD", 256);
|
||||||
if (typeof instance.config["deallocate"] !== "undefined" && instance.config["deallocate"]) {
|
if (typeof instance.config["deallocate"] !== "undefined" && instance.config["deallocate"]) {
|
||||||
log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:", true);
|
log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:", true);
|
||||||
tf32.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD", 0);
|
tf31.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD", 0);
|
||||||
}
|
}
|
||||||
if (tf32.backend().getGPGPUContext) {
|
if (tf31.backend().getGPGPUContext) {
|
||||||
const gl = await tf32.backend().getGPGPUContext().gl;
|
const gl = await tf31.backend().getGPGPUContext().gl;
|
||||||
if (instance.config.debug)
|
if (instance.config.debug)
|
||||||
log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);
|
log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tf32.getBackend() === "webgpu") {
|
if (tf31.getBackend() === "webgpu") {
|
||||||
}
|
}
|
||||||
tf32.enableProdMode();
|
tf31.enableProdMode();
|
||||||
await tf32.ready();
|
await tf31.ready();
|
||||||
instance.performance.initBackend = Math.trunc(now() - timeStamp);
|
instance.performance.initBackend = Math.trunc(now() - timeStamp);
|
||||||
instance.config.backend = tf32.getBackend();
|
instance.config.backend = tf31.getBackend();
|
||||||
await env.updateBackend();
|
await env.updateBackend();
|
||||||
registerCustomOps();
|
registerCustomOps();
|
||||||
}
|
}
|
||||||
|
@ -11363,9 +11369,9 @@ function fakeOps(kernelNames, config3) {
|
||||||
log("kernelFunc", kernelName, config3.backend);
|
log("kernelFunc", kernelName, config3.backend);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
tf32.registerKernel(kernelConfig);
|
tf31.registerKernel(kernelConfig);
|
||||||
}
|
}
|
||||||
env.kernels = tf32.getKernelsForBackend(tf32.getBackend()).map((kernel) => kernel.kernelName.toLowerCase());
|
env.kernels = tf31.getKernelsForBackend(tf31.getBackend()).map((kernel) => kernel.kernelName.toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/util/draw.ts
|
// src/util/draw.ts
|
||||||
|
@ -11849,10 +11855,10 @@ async function all(inCanvas2, result, drawOptions) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/face/face.ts
|
// src/face/face.ts
|
||||||
var tf34 = __toModule(require_tfjs_esm());
|
var tf33 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/face/mask.ts
|
// src/face/mask.ts
|
||||||
var tf33 = __toModule(require_tfjs_esm());
|
var tf32 = __toModule(require_tfjs_esm());
|
||||||
var expandFact = 0.1;
|
var expandFact = 0.1;
|
||||||
var alpha = 0.5;
|
var alpha = 0.5;
|
||||||
function insidePoly(x, y, polygon) {
|
function insidePoly(x, y, polygon) {
|
||||||
|
@ -11888,7 +11894,7 @@ async function mask(face5) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const output = buffer.toTensor();
|
const output = buffer.toTensor();
|
||||||
tf33.dispose(buffer);
|
tf32.dispose(buffer);
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12027,79 +12033,79 @@ var detectFace = async (instance, input) => {
|
||||||
}
|
}
|
||||||
if ((_a = instance.config.face.detector) == null ? void 0 : _a.mask) {
|
if ((_a = instance.config.face.detector) == null ? void 0 : _a.mask) {
|
||||||
const masked = await mask(faces[i]);
|
const masked = await mask(faces[i]);
|
||||||
tf34.dispose(faces[i].tensor);
|
tf33.dispose(faces[i].tensor);
|
||||||
faces[i].tensor = masked;
|
faces[i].tensor = masked;
|
||||||
}
|
}
|
||||||
const rotation = faces[i].mesh && faces[i].mesh.length > 200 ? calculateFaceAngle(faces[i], [input.shape[2], input.shape[1]]) : null;
|
const rotation = faces[i].mesh && faces[i].mesh.length > 200 ? calculateFaceAngle(faces[i], [input.shape[2], input.shape[1]]) : null;
|
||||||
instance.analyze("Start Emotion:");
|
instance.analyze("Start Emotion:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
emotionRes = ((_b = instance.config.face.emotion) == null ? void 0 : _b.enabled) ? predict8(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
emotionRes = ((_b = instance.config.face.emotion) == null ? void 0 : _b.enabled) ? predict8(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:emotion";
|
instance.state = "run:emotion";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
emotionRes = ((_c = instance.config.face.emotion) == null ? void 0 : _c.enabled) ? await predict8(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
emotionRes = ((_c = instance.config.face.emotion) == null ? void 0 : _c.enabled) ? await predict8(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
instance.performance.emotion = env.perfadd ? (instance.performance.emotion || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
instance.performance.emotion = env.perfadd ? (instance.performance.emotion || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End Emotion:");
|
instance.analyze("End Emotion:");
|
||||||
instance.analyze("Start AntiSpoof:");
|
instance.analyze("Start AntiSpoof:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
antispoofRes = ((_d = instance.config.face.antispoof) == null ? void 0 : _d.enabled) ? predict4(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
antispoofRes = ((_d = instance.config.face.antispoof) == null ? void 0 : _d.enabled) ? predict4(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:antispoof";
|
instance.state = "run:antispoof";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
antispoofRes = ((_e = instance.config.face.antispoof) == null ? void 0 : _e.enabled) ? await predict4(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
antispoofRes = ((_e = instance.config.face.antispoof) == null ? void 0 : _e.enabled) ? await predict4(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
instance.performance.antispoof = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
instance.performance.antispoof = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End AntiSpoof:");
|
instance.analyze("End AntiSpoof:");
|
||||||
instance.analyze("Start Liveness:");
|
instance.analyze("Start Liveness:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
livenessRes = ((_f = instance.config.face.liveness) == null ? void 0 : _f.enabled) ? predict14(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
livenessRes = ((_f = instance.config.face.liveness) == null ? void 0 : _f.enabled) ? predict14(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:liveness";
|
instance.state = "run:liveness";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
livenessRes = ((_g = instance.config.face.liveness) == null ? void 0 : _g.enabled) ? await predict14(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
livenessRes = ((_g = instance.config.face.liveness) == null ? void 0 : _g.enabled) ? await predict14(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
instance.performance.liveness = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
instance.performance.liveness = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End Liveness:");
|
instance.analyze("End Liveness:");
|
||||||
instance.analyze("Start GEAR:");
|
instance.analyze("Start GEAR:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
gearRes = ((_h = instance.config.face["gear"]) == null ? void 0 : _h.enabled) ? predict(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
gearRes = ((_h = instance.config.face["gear"]) == null ? void 0 : _h.enabled) ? predict(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:gear";
|
instance.state = "run:gear";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
gearRes = ((_i = instance.config.face["gear"]) == null ? void 0 : _i.enabled) ? await predict(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
gearRes = ((_i = instance.config.face["gear"]) == null ? void 0 : _i.enabled) ? await predict(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
instance.performance.gear = Math.trunc(now() - timeStamp);
|
instance.performance.gear = Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End GEAR:");
|
instance.analyze("End GEAR:");
|
||||||
instance.analyze("Start SSRNet:");
|
instance.analyze("Start SSRNet:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
ageRes = ((_j = instance.config.face["ssrnet"]) == null ? void 0 : _j.enabled) ? predict2(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
ageRes = ((_j = instance.config.face["ssrnet"]) == null ? void 0 : _j.enabled) ? predict2(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
genderRes = ((_k = instance.config.face["ssrnet"]) == null ? void 0 : _k.enabled) ? predict3(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
genderRes = ((_k = instance.config.face["ssrnet"]) == null ? void 0 : _k.enabled) ? predict3(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:ssrnet";
|
instance.state = "run:ssrnet";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
ageRes = ((_l = instance.config.face["ssrnet"]) == null ? void 0 : _l.enabled) ? await predict2(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
ageRes = ((_l = instance.config.face["ssrnet"]) == null ? void 0 : _l.enabled) ? await predict2(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
genderRes = ((_m = instance.config.face["ssrnet"]) == null ? void 0 : _m.enabled) ? await predict3(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
genderRes = ((_m = instance.config.face["ssrnet"]) == null ? void 0 : _m.enabled) ? await predict3(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
instance.performance.ssrnet = Math.trunc(now() - timeStamp);
|
instance.performance.ssrnet = Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End SSRNet:");
|
instance.analyze("End SSRNet:");
|
||||||
instance.analyze("Start MobileFaceNet:");
|
instance.analyze("Start MobileFaceNet:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
mobilefacenetRes = ((_n = instance.config.face["mobilefacenet"]) == null ? void 0 : _n.enabled) ? predict9(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
mobilefacenetRes = ((_n = instance.config.face["mobilefacenet"]) == null ? void 0 : _n.enabled) ? predict9(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:mobilefacenet";
|
instance.state = "run:mobilefacenet";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
mobilefacenetRes = ((_o = instance.config.face["mobilefacenet"]) == null ? void 0 : _o.enabled) ? await predict9(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
mobilefacenetRes = ((_o = instance.config.face["mobilefacenet"]) == null ? void 0 : _o.enabled) ? await predict9(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
instance.performance.mobilefacenet = Math.trunc(now() - timeStamp);
|
instance.performance.mobilefacenet = Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End MobileFaceNet:");
|
instance.analyze("End MobileFaceNet:");
|
||||||
instance.analyze("Start Description:");
|
instance.analyze("Start Description:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
descRes = ((_p = instance.config.face.description) == null ? void 0 : _p.enabled) ? predict11(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
descRes = ((_p = instance.config.face.description) == null ? void 0 : _p.enabled) ? predict11(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:description";
|
instance.state = "run:description";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
descRes = ((_q = instance.config.face.description) == null ? void 0 : _q.enabled) ? await predict11(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
descRes = ((_q = instance.config.face.description) == null ? void 0 : _q.enabled) ? await predict11(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
instance.performance.description = env.perfadd ? (instance.performance.description || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
instance.performance.description = env.perfadd ? (instance.performance.description || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End Description:");
|
instance.analyze("End Description:");
|
||||||
|
@ -12118,8 +12124,8 @@ var detectFace = async (instance, input) => {
|
||||||
delete faces[i].annotations.rightEyeIris;
|
delete faces[i].annotations.rightEyeIris;
|
||||||
}
|
}
|
||||||
const irisSize = faces[i].annotations && faces[i].annotations.leftEyeIris && faces[i].annotations.leftEyeIris[0] && faces[i].annotations.rightEyeIris && faces[i].annotations.rightEyeIris[0] && faces[i].annotations.leftEyeIris.length > 0 && faces[i].annotations.rightEyeIris.length > 0 && faces[i].annotations.leftEyeIris[0] !== null && faces[i].annotations.rightEyeIris[0] !== null ? Math.max(Math.abs(faces[i].annotations.leftEyeIris[3][0] - faces[i].annotations.leftEyeIris[1][0]), Math.abs(faces[i].annotations.rightEyeIris[4][1] - faces[i].annotations.rightEyeIris[2][1])) / input.shape[2] : 0;
|
const irisSize = faces[i].annotations && faces[i].annotations.leftEyeIris && faces[i].annotations.leftEyeIris[0] && faces[i].annotations.rightEyeIris && faces[i].annotations.rightEyeIris[0] && faces[i].annotations.leftEyeIris.length > 0 && faces[i].annotations.rightEyeIris.length > 0 && faces[i].annotations.leftEyeIris[0] !== null && faces[i].annotations.rightEyeIris[0] !== null ? Math.max(Math.abs(faces[i].annotations.leftEyeIris[3][0] - faces[i].annotations.leftEyeIris[1][0]), Math.abs(faces[i].annotations.rightEyeIris[4][1] - faces[i].annotations.rightEyeIris[2][1])) / input.shape[2] : 0;
|
||||||
const tensor3 = ((_z = instance.config.face.detector) == null ? void 0 : _z.return) ? tf34.squeeze(faces[i].tensor) : null;
|
const tensor3 = ((_z = instance.config.face.detector) == null ? void 0 : _z.return) ? tf33.squeeze(faces[i].tensor) : null;
|
||||||
tf34.dispose(faces[i].tensor);
|
tf33.dispose(faces[i].tensor);
|
||||||
if (faces[i].tensor)
|
if (faces[i].tensor)
|
||||||
delete faces[i].tensor;
|
delete faces[i].tensor;
|
||||||
const res = {
|
const res = {
|
||||||
|
@ -13233,7 +13239,7 @@ lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/
|
||||||
2Q==`;
|
2Q==`;
|
||||||
|
|
||||||
// src/warmup.ts
|
// src/warmup.ts
|
||||||
var tf35 = __toModule(require_tfjs_esm());
|
var tf34 = __toModule(require_tfjs_esm());
|
||||||
async function warmupBitmap(instance) {
|
async function warmupBitmap(instance) {
|
||||||
const b64toBlob = (base64, type = "application/octet-stream") => fetch(`data:${type};base64,${base64}`).then((res2) => res2.blob());
|
const b64toBlob = (base64, type = "application/octet-stream") => fetch(`data:${type};base64,${base64}`).then((res2) => res2.blob());
|
||||||
let blob;
|
let blob;
|
||||||
|
@ -13305,8 +13311,8 @@ async function warmupNode(instance) {
|
||||||
if (!img)
|
if (!img)
|
||||||
return null;
|
return null;
|
||||||
let res;
|
let res;
|
||||||
if (typeof tf35["node"] !== "undefined") {
|
if (typeof tf34["node"] !== "undefined") {
|
||||||
const data = tf35["node"].decodeJpeg(img);
|
const data = tf34["node"].decodeJpeg(img);
|
||||||
const expanded = data.expandDims(0);
|
const expanded = data.expandDims(0);
|
||||||
instance.tf.dispose(data);
|
instance.tf.dispose(data);
|
||||||
res = await instance.detect(expanded, instance.config);
|
res = await instance.detect(expanded, instance.config);
|
||||||
|
@ -13376,7 +13382,7 @@ var Human = class {
|
||||||
return null;
|
return null;
|
||||||
if (!input)
|
if (!input)
|
||||||
return "input is not defined";
|
return "input is not defined";
|
||||||
if (this.env.node && !(input instanceof tf36.Tensor))
|
if (this.env.node && !(input instanceof tf35.Tensor))
|
||||||
return "input must be a tensor";
|
return "input must be a tensor";
|
||||||
try {
|
try {
|
||||||
this.tf.getBackend();
|
this.tf.getBackend();
|
||||||
|
@ -13394,7 +13400,7 @@ var Human = class {
|
||||||
(_a = this.events) == null ? void 0 : _a.dispatchEvent(new Event(event));
|
(_a = this.events) == null ? void 0 : _a.dispatchEvent(new Event(event));
|
||||||
});
|
});
|
||||||
this.env = env;
|
this.env = env;
|
||||||
config.wasmPath = tf36.version_core.includes("-") ? "https://vladmandic.github.io/tfjs/dist/" : `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${tf36.version_core}/dist/`;
|
config.wasmPath = tf35.version_core.includes("-") ? "https://vladmandic.github.io/tfjs/dist/" : `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${tf35.version_core}/dist/`;
|
||||||
config.modelBasePath = env.browser ? "../models/" : "file://models/";
|
config.modelBasePath = env.browser ? "../models/" : "file://models/";
|
||||||
config.backend = env.browser ? "humangl" : "tensorflow";
|
config.backend = env.browser ? "humangl" : "tensorflow";
|
||||||
this.version = version;
|
this.version = version;
|
||||||
|
@ -13403,7 +13409,7 @@ var Human = class {
|
||||||
Object.seal(this.config);
|
Object.seal(this.config);
|
||||||
if (userConfig)
|
if (userConfig)
|
||||||
this.config = mergeDeep(this.config, userConfig);
|
this.config = mergeDeep(this.config, userConfig);
|
||||||
this.tf = tf36;
|
this.tf = tf35;
|
||||||
this.state = "idle";
|
this.state = "idle";
|
||||||
__privateSet(this, _numTensors, 0);
|
__privateSet(this, _numTensors, 0);
|
||||||
__privateSet(this, _analyzeMemoryLeaks, false);
|
__privateSet(this, _analyzeMemoryLeaks, false);
|
||||||
|
@ -13469,7 +13475,7 @@ var Human = class {
|
||||||
log(`tfjs version: ${this.tf.version_core}`);
|
log(`tfjs version: ${this.tf.version_core}`);
|
||||||
if (!await check(this))
|
if (!await check(this))
|
||||||
log("error: backend check failed");
|
log("error: backend check failed");
|
||||||
await tf36.ready();
|
await tf35.ready();
|
||||||
if (this.env.browser) {
|
if (this.env.browser) {
|
||||||
if (this.config.debug)
|
if (this.config.debug)
|
||||||
log("configuration:", this.config);
|
log("configuration:", this.config);
|
||||||
|
@ -13671,7 +13677,7 @@ var Human = class {
|
||||||
return join2(faceRes, bodyRes, handRes, gestureRes, shape);
|
return join2(faceRes, bodyRes, handRes, gestureRes, shape);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
tf36.dispose(img.tensor);
|
tf35.dispose(img.tensor);
|
||||||
this.emit("detect");
|
this.emit("detect");
|
||||||
this.state = "idle";
|
this.state = "idle";
|
||||||
resolve(this.result);
|
resolve(this.result);
|
||||||
|
|
|
@ -994,9 +994,9 @@ async function histogramEqualization(inputImage) {
|
||||||
const range = [tf.sub(max4[0], min2[0]), tf.sub(max4[1], min2[1]), tf.sub(max4[2], min2[2])];
|
const range = [tf.sub(max4[0], min2[0]), tf.sub(max4[1], min2[1]), tf.sub(max4[2], min2[2])];
|
||||||
const fact = [tf.div(maxValue, range[0]), tf.div(maxValue, range[1]), tf.div(maxValue, range[2])];
|
const fact = [tf.div(maxValue, range[0]), tf.div(maxValue, range[1]), tf.div(maxValue, range[2])];
|
||||||
const enh = [tf.mul(sub9[0], fact[0]), tf.mul(sub9[1], fact[1]), tf.mul(sub9[2], fact[2])];
|
const enh = [tf.mul(sub9[0], fact[0]), tf.mul(sub9[1], fact[1]), tf.mul(sub9[2], fact[2])];
|
||||||
const rgb3 = tf.stack([enh[0], enh[1], enh[2]], 2);
|
const rgb2 = tf.stack([enh[0], enh[1], enh[2]], 2);
|
||||||
const reshape8 = tf.reshape(rgb3, [1, squeeze9.shape[0], squeeze9.shape[1], 3]);
|
const reshape8 = tf.reshape(rgb2, [1, squeeze9.shape[0], squeeze9.shape[1], 3]);
|
||||||
tf.dispose([...channels, ...min2, ...max4, ...sub9, ...range, ...fact, ...enh, rgb3, squeeze9]);
|
tf.dispose([...channels, ...min2, ...max4, ...sub9, ...range, ...fact, ...enh, rgb2, squeeze9]);
|
||||||
return reshape8;
|
return reshape8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1059,9 +1059,9 @@ async function process2(input, config3, getTensor = true) {
|
||||||
if (input.shape[2] === 3) {
|
if (input.shape[2] === 3) {
|
||||||
tensor3 = tf2.expandDims(input, 0);
|
tensor3 = tf2.expandDims(input, 0);
|
||||||
} else if (input.shape[2] === 4) {
|
} else if (input.shape[2] === 4) {
|
||||||
const rgb3 = tf2.slice3d(input, [0, 0, 0], [-1, -1, 3]);
|
const rgb2 = tf2.slice3d(input, [0, 0, 0], [-1, -1, 3]);
|
||||||
tensor3 = tf2.expandDims(rgb3, 0);
|
tensor3 = tf2.expandDims(rgb2, 0);
|
||||||
tf2.dispose(rgb3);
|
tf2.dispose(rgb2);
|
||||||
}
|
}
|
||||||
} else if (input.shape.length === 4) {
|
} else if (input.shape.length === 4) {
|
||||||
if (input.shape[3] === 3) {
|
if (input.shape[3] === 3) {
|
||||||
|
@ -1210,9 +1210,9 @@ async function process2(input, config3, getTensor = true) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (depth === 4) {
|
if (depth === 4) {
|
||||||
const rgb3 = tf2.slice3d(pixels, [0, 0, 0], [-1, -1, 3]);
|
const rgb2 = tf2.slice3d(pixels, [0, 0, 0], [-1, -1, 3]);
|
||||||
tf2.dispose(pixels);
|
tf2.dispose(pixels);
|
||||||
pixels = rgb3;
|
pixels = rgb2;
|
||||||
}
|
}
|
||||||
if (!pixels)
|
if (!pixels)
|
||||||
throw new Error("input error: cannot create tensor");
|
throw new Error("input error: cannot create tensor");
|
||||||
|
@ -1382,13 +1382,13 @@ var Env = class {
|
||||||
var env = new Env();
|
var env = new Env();
|
||||||
|
|
||||||
// src/human.ts
|
// src/human.ts
|
||||||
var tf36 = __toModule(require_tfjs_esm());
|
var tf35 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// package.json
|
// package.json
|
||||||
var version = "2.5.2";
|
var version = "2.5.2";
|
||||||
|
|
||||||
// src/tfjs/humangl.ts
|
// src/tfjs/humangl.ts
|
||||||
var tf31 = __toModule(require_tfjs_esm());
|
var tf30 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/gear/gear.ts
|
// src/gear/gear.ts
|
||||||
var tf4 = __toModule(require_tfjs_esm());
|
var tf4 = __toModule(require_tfjs_esm());
|
||||||
|
@ -1461,12 +1461,22 @@ var tf6 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/tfjs/constants.ts
|
// src/tfjs/constants.ts
|
||||||
var tf5 = __toModule(require_tfjs_esm());
|
var tf5 = __toModule(require_tfjs_esm());
|
||||||
var tf255 = tf5.scalar(255, "float32");
|
var constants = {
|
||||||
var tf1 = tf5.scalar(1, "float32");
|
tf255: 255,
|
||||||
var tf22 = tf5.scalar(2, "float32");
|
tf1: 1,
|
||||||
var tf05 = tf5.scalar(0.5, "float32");
|
tf2: 2,
|
||||||
var tf127 = tf5.scalar(127.5, "float32");
|
tf05: 0.5,
|
||||||
var rgb = tf5.tensor1d([0.2989, 0.587, 0.114], "float32");
|
tf127: 127.5,
|
||||||
|
rgb: [0.2989, 0.587, 0.114]
|
||||||
|
};
|
||||||
|
function init() {
|
||||||
|
constants.tf255 = tf5.scalar(255, "float32");
|
||||||
|
constants.tf1 = tf5.scalar(1, "float32");
|
||||||
|
constants.tf2 = tf5.scalar(2, "float32");
|
||||||
|
constants.tf05 = tf5.scalar(0.5, "float32");
|
||||||
|
constants.tf127 = tf5.scalar(127.5, "float32");
|
||||||
|
constants.rgb = tf5.tensor1d([0.2989, 0.587, 0.114], "float32");
|
||||||
|
}
|
||||||
|
|
||||||
// src/gear/ssrnet-age.ts
|
// src/gear/ssrnet-age.ts
|
||||||
var model2;
|
var model2;
|
||||||
|
@ -1505,7 +1515,7 @@ async function predict2(image29, config3, idx, count2) {
|
||||||
return;
|
return;
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = tf6.image.resizeBilinear(image29, [model2.inputs[0].shape[2], model2.inputs[0].shape[1]], false);
|
t.resize = tf6.image.resizeBilinear(image29, [model2.inputs[0].shape[2], model2.inputs[0].shape[1]], false);
|
||||||
t.enhance = tf6.mul(t.resize, tf255);
|
t.enhance = tf6.mul(t.resize, constants.tf255);
|
||||||
const obj = { age: 0 };
|
const obj = { age: 0 };
|
||||||
if (config3.face["ssrnet"].enabled)
|
if (config3.face["ssrnet"].enabled)
|
||||||
t.age = model2.execute(t.enhance);
|
t.age = model2.execute(t.enhance);
|
||||||
|
@ -1528,7 +1538,7 @@ var last4 = [];
|
||||||
var lastCount3 = 0;
|
var lastCount3 = 0;
|
||||||
var lastTime3 = 0;
|
var lastTime3 = 0;
|
||||||
var skipped3 = Number.MAX_SAFE_INTEGER;
|
var skipped3 = Number.MAX_SAFE_INTEGER;
|
||||||
var rgb2 = [0.2989, 0.587, 0.114];
|
var rgb = [0.2989, 0.587, 0.114];
|
||||||
async function load3(config3) {
|
async function load3(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model3 = null;
|
model3 = null;
|
||||||
|
@ -1560,11 +1570,11 @@ async function predict3(image29, config3, idx, count2) {
|
||||||
t.resize = tf7.image.resizeBilinear(image29, [model3.inputs[0].shape[2], model3.inputs[0].shape[1]], false);
|
t.resize = tf7.image.resizeBilinear(image29, [model3.inputs[0].shape[2], model3.inputs[0].shape[1]], false);
|
||||||
t.enhance = tf7.tidy(() => {
|
t.enhance = tf7.tidy(() => {
|
||||||
const [red, green, blue] = tf7.split(t.resize, 3, 3);
|
const [red, green, blue] = tf7.split(t.resize, 3, 3);
|
||||||
const redNorm = tf7.mul(red, rgb2[0]);
|
const redNorm = tf7.mul(red, rgb[0]);
|
||||||
const greenNorm = tf7.mul(green, rgb2[1]);
|
const greenNorm = tf7.mul(green, rgb[1]);
|
||||||
const blueNorm = tf7.mul(blue, rgb2[2]);
|
const blueNorm = tf7.mul(blue, rgb[2]);
|
||||||
const grayscale = tf7.addN([redNorm, greenNorm, blueNorm]);
|
const grayscale = tf7.addN([redNorm, greenNorm, blueNorm]);
|
||||||
const normalize = tf7.mul(tf7.sub(grayscale, tf05), 2);
|
const normalize = tf7.mul(tf7.sub(grayscale, constants.tf05), 2);
|
||||||
return normalize;
|
return normalize;
|
||||||
});
|
});
|
||||||
const obj = { gender: "", genderScore: 0 };
|
const obj = { gender: "", genderScore: 0 };
|
||||||
|
@ -4938,7 +4948,7 @@ var cutBoxFromImageAndResize = (box4, image29, cropSize) => {
|
||||||
const h = image29.shape[1];
|
const h = image29.shape[1];
|
||||||
const w = image29.shape[2];
|
const w = image29.shape[2];
|
||||||
const crop2 = tf9.image.cropAndResize(image29, [[box4.startPoint[1] / h, box4.startPoint[0] / w, box4.endPoint[1] / h, box4.endPoint[0] / w]], [0], cropSize);
|
const crop2 = tf9.image.cropAndResize(image29, [[box4.startPoint[1] / h, box4.startPoint[0] / w, box4.endPoint[1] / h, box4.endPoint[0] / w]], [0], cropSize);
|
||||||
const norm = tf9.div(crop2, tf255);
|
const norm = tf9.div(crop2, constants.tf255);
|
||||||
tf9.dispose(crop2);
|
tf9.dispose(crop2);
|
||||||
return norm;
|
return norm;
|
||||||
};
|
};
|
||||||
|
@ -5093,7 +5103,7 @@ function decodeBounds(boxOutputs) {
|
||||||
t.boxSizes = tf10.slice(boxOutputs, [0, 3], [-1, 2]);
|
t.boxSizes = tf10.slice(boxOutputs, [0, 3], [-1, 2]);
|
||||||
t.boxSizesNormalized = tf10.div(t.boxSizes, inputSizeT);
|
t.boxSizesNormalized = tf10.div(t.boxSizes, inputSizeT);
|
||||||
t.centersNormalized = tf10.div(t.centers, inputSizeT);
|
t.centersNormalized = tf10.div(t.centers, inputSizeT);
|
||||||
t.halfBoxSize = tf10.div(t.boxSizesNormalized, tf22);
|
t.halfBoxSize = tf10.div(t.boxSizesNormalized, constants.tf2);
|
||||||
t.starts = tf10.sub(t.centersNormalized, t.halfBoxSize);
|
t.starts = tf10.sub(t.centersNormalized, t.halfBoxSize);
|
||||||
t.ends = tf10.add(t.centersNormalized, t.halfBoxSize);
|
t.ends = tf10.add(t.centersNormalized, t.halfBoxSize);
|
||||||
t.startNormalized = tf10.mul(t.starts, inputSizeT);
|
t.startNormalized = tf10.mul(t.starts, inputSizeT);
|
||||||
|
@ -5108,8 +5118,8 @@ async function getBoxes(inputImage, config3) {
|
||||||
return { boxes: [] };
|
return { boxes: [] };
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resized = tf10.image.resizeBilinear(inputImage, [inputSize, inputSize]);
|
t.resized = tf10.image.resizeBilinear(inputImage, [inputSize, inputSize]);
|
||||||
t.div = tf10.div(t.resized, tf127);
|
t.div = tf10.div(t.resized, constants.tf127);
|
||||||
t.normalized = tf10.sub(t.div, tf05);
|
t.normalized = tf10.sub(t.div, constants.tf05);
|
||||||
const res = model5 == null ? void 0 : model5.execute(t.normalized);
|
const res = model5 == null ? void 0 : model5.execute(t.normalized);
|
||||||
if (Array.isArray(res)) {
|
if (Array.isArray(res)) {
|
||||||
const sorted = res.sort((a, b) => a.size - b.size);
|
const sorted = res.sort((a, b) => a.size - b.size);
|
||||||
|
@ -5280,7 +5290,7 @@ async function prepareImage(input) {
|
||||||
];
|
];
|
||||||
t.pad = tf11.pad(input, padding);
|
t.pad = tf11.pad(input, padding);
|
||||||
t.resize = tf11.image.resizeBilinear(t.pad, [inputSize2[1][0], inputSize2[1][1]]);
|
t.resize = tf11.image.resizeBilinear(t.pad, [inputSize2[1][0], inputSize2[1][1]]);
|
||||||
const final = tf11.div(t.resize, tf255);
|
const final = tf11.div(t.resize, constants.tf255);
|
||||||
Object.keys(t).forEach((tensor3) => tf11.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf11.dispose(t[tensor3]));
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
|
@ -5464,26 +5474,20 @@ async function load6(config3) {
|
||||||
async function process3(res, outputShape, config3) {
|
async function process3(res, outputShape, config3) {
|
||||||
if (!res)
|
if (!res)
|
||||||
return [];
|
return [];
|
||||||
|
const t = {};
|
||||||
const results = [];
|
const results = [];
|
||||||
const detections = await res.array();
|
const detections = await res.array();
|
||||||
const squeezeT = tf12.squeeze(res);
|
t.squeeze = tf12.squeeze(res);
|
||||||
tf12.dispose(res);
|
const arr = tf12.split(t.squeeze, 6, 1);
|
||||||
const arr = tf12.split(squeezeT, 6, 1);
|
t.stack = tf12.stack([arr[1], arr[0], arr[3], arr[2]], 1);
|
||||||
tf12.dispose(squeezeT);
|
t.boxes = tf12.squeeze(t.stack);
|
||||||
const stackT = tf12.stack([arr[1], arr[0], arr[3], arr[2]], 1);
|
t.scores = tf12.squeeze(arr[4]);
|
||||||
const boxesT = tf12.squeeze(stackT);
|
t.classes = tf12.squeeze(arr[5]);
|
||||||
tf12.dispose(stackT);
|
tf12.dispose([res, ...arr]);
|
||||||
const scoresT = tf12.squeeze(arr[4]);
|
t.nms = await tf12.image.nonMaxSuppressionAsync(t.boxes, t.scores, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
||||||
const classesT = tf12.squeeze(arr[5]);
|
const nms = await t.nms.data();
|
||||||
arr.forEach((t) => tf12.dispose(t));
|
|
||||||
const nmsT = await tf12.image.nonMaxSuppressionAsync(boxesT, scoresT, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
|
||||||
tf12.dispose(boxesT);
|
|
||||||
tf12.dispose(scoresT);
|
|
||||||
tf12.dispose(classesT);
|
|
||||||
const nms = await nmsT.data();
|
|
||||||
tf12.dispose(nmsT);
|
|
||||||
let i = 0;
|
let i = 0;
|
||||||
for (const id of nms) {
|
for (const id of Array.from(nms)) {
|
||||||
const score = Math.trunc(100 * detections[0][id][4]) / 100;
|
const score = Math.trunc(100 * detections[0][id][4]) / 100;
|
||||||
const classVal = detections[0][id][5];
|
const classVal = detections[0][id][5];
|
||||||
const label = labels[classVal].label;
|
const label = labels[classVal].label;
|
||||||
|
@ -5505,6 +5509,7 @@ async function process3(res, outputShape, config3) {
|
||||||
];
|
];
|
||||||
results.push({ id: i++, score, class: classVal, label, box: box4, boxRaw });
|
results.push({ id: i++, score, class: classVal, label, box: box4, boxRaw });
|
||||||
}
|
}
|
||||||
|
Object.keys(t).forEach((tensor3) => tf12.dispose(t[tensor3]));
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
async function predict6(input, config3) {
|
async function predict6(input, config3) {
|
||||||
|
@ -5612,8 +5617,8 @@ async function predict7(image29, config3) {
|
||||||
if (!(model7 == null ? void 0 : model7.inputs[0].shape))
|
if (!(model7 == null ? void 0 : model7.inputs[0].shape))
|
||||||
return null;
|
return null;
|
||||||
const resize = tf13.image.resizeBilinear(image29, [model7.inputs[0].shape[2], model7.inputs[0].shape[1]], false);
|
const resize = tf13.image.resizeBilinear(image29, [model7.inputs[0].shape[2], model7.inputs[0].shape[1]], false);
|
||||||
const enhance3 = tf13.mul(resize, tf22);
|
const enhance3 = tf13.mul(resize, constants.tf2);
|
||||||
const norm = tf13.sub(enhance3, tf1);
|
const norm = tf13.sub(enhance3, constants.tf1);
|
||||||
return norm;
|
return norm;
|
||||||
});
|
});
|
||||||
let resT;
|
let resT;
|
||||||
|
@ -5717,10 +5722,10 @@ async function predict8(image29, config3, idx, count2) {
|
||||||
const t = {};
|
const t = {};
|
||||||
const inputSize8 = (model8 == null ? void 0 : model8.inputs[0].shape) ? model8.inputs[0].shape[2] : 0;
|
const inputSize8 = (model8 == null ? void 0 : model8.inputs[0].shape) ? model8.inputs[0].shape[2] : 0;
|
||||||
t.resize = tf14.image.resizeBilinear(image29, [inputSize8, inputSize8], false);
|
t.resize = tf14.image.resizeBilinear(image29, [inputSize8, inputSize8], false);
|
||||||
t.channels = tf14.mul(t.resize, rgb);
|
t.channels = tf14.mul(t.resize, constants.rgb);
|
||||||
t.grayscale = tf14.sum(t.channels, 3, true);
|
t.grayscale = tf14.sum(t.channels, 3, true);
|
||||||
t.grayscaleSub = tf14.sub(t.grayscale, tf05);
|
t.grayscaleSub = tf14.sub(t.grayscale, constants.tf05);
|
||||||
t.grayscaleMul = tf14.mul(t.grayscaleSub, tf22);
|
t.grayscaleMul = tf14.mul(t.grayscaleSub, constants.tf2);
|
||||||
t.emotion = model8 == null ? void 0 : model8.execute(t.grayscaleMul);
|
t.emotion = model8 == null ? void 0 : model8.execute(t.grayscaleMul);
|
||||||
lastTime8 = now();
|
lastTime8 = now();
|
||||||
const data = await t.emotion.data();
|
const data = await t.emotion.data();
|
||||||
|
@ -6065,7 +6070,7 @@ function enhance2(input) {
|
||||||
if (!(model12 == null ? void 0 : model12.inputs[0].shape))
|
if (!(model12 == null ? void 0 : model12.inputs[0].shape))
|
||||||
return tensor3;
|
return tensor3;
|
||||||
const crop2 = tf18.image.resizeBilinear(tensor3, [model12.inputs[0].shape[2], model12.inputs[0].shape[1]], false);
|
const crop2 = tf18.image.resizeBilinear(tensor3, [model12.inputs[0].shape[2], model12.inputs[0].shape[1]], false);
|
||||||
const norm = tf18.mul(crop2, tf255);
|
const norm = tf18.mul(crop2, constants.tf255);
|
||||||
tf18.dispose(crop2);
|
tf18.dispose(crop2);
|
||||||
return norm;
|
return norm;
|
||||||
}
|
}
|
||||||
|
@ -6118,7 +6123,7 @@ async function predict11(image29, config3, idx, count2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/hand/handpose.ts
|
// src/hand/handpose.ts
|
||||||
var tf23 = __toModule(require_tfjs_esm());
|
var tf22 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/hand/handposedetector.ts
|
// src/hand/handposedetector.ts
|
||||||
var tf20 = __toModule(require_tfjs_esm());
|
var tf20 = __toModule(require_tfjs_esm());
|
||||||
|
@ -9227,8 +9232,8 @@ var HandDetector = class {
|
||||||
async predict(input, config3) {
|
async predict(input, config3) {
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = tf20.image.resizeBilinear(input, [this.inputSize, this.inputSize]);
|
t.resize = tf20.image.resizeBilinear(input, [this.inputSize, this.inputSize]);
|
||||||
t.div = tf20.div(t.resize, tf127);
|
t.div = tf20.div(t.resize, constants.tf127);
|
||||||
t.image = tf20.sub(t.div, tf1);
|
t.image = tf20.sub(t.div, constants.tf1);
|
||||||
t.batched = this.model.execute(t.image);
|
t.batched = this.model.execute(t.image);
|
||||||
t.predictions = tf20.squeeze(t.batched);
|
t.predictions = tf20.squeeze(t.batched);
|
||||||
t.slice = tf20.slice(t.predictions, [0, 0], [-1, 1]);
|
t.slice = tf20.slice(t.predictions, [0, 0], [-1, 1]);
|
||||||
|
@ -9359,7 +9364,7 @@ var HandPipeline = class {
|
||||||
const rotationMatrix = buildRotationMatrix2(-angle, palmCenter);
|
const rotationMatrix = buildRotationMatrix2(-angle, palmCenter);
|
||||||
const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;
|
const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;
|
||||||
const croppedInput = cutBoxFromImageAndResize2(newBox, rotatedImage, [this.inputSize, this.inputSize]);
|
const croppedInput = cutBoxFromImageAndResize2(newBox, rotatedImage, [this.inputSize, this.inputSize]);
|
||||||
const handImage = tf21.div(croppedInput, tf255);
|
const handImage = tf21.div(croppedInput, constants.tf255);
|
||||||
tf21.dispose(croppedInput);
|
tf21.dispose(croppedInput);
|
||||||
tf21.dispose(rotatedImage);
|
tf21.dispose(rotatedImage);
|
||||||
const [confidenceT, keypoints] = this.handPoseModel.execute(handImage);
|
const [confidenceT, keypoints] = this.handPoseModel.execute(handImage);
|
||||||
|
@ -9889,8 +9894,8 @@ async function load13(config3) {
|
||||||
}
|
}
|
||||||
if (!handDetectorModel || !handPoseModel) {
|
if (!handDetectorModel || !handPoseModel) {
|
||||||
[handDetectorModel, handPoseModel] = await Promise.all([
|
[handDetectorModel, handPoseModel] = await Promise.all([
|
||||||
config3.hand.enabled ? tf23.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""), { fromTFHub: (((_b = config3.hand.detector) == null ? void 0 : _b.modelPath) || "").includes("tfhub.dev") }) : null,
|
config3.hand.enabled ? tf22.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""), { fromTFHub: (((_b = config3.hand.detector) == null ? void 0 : _b.modelPath) || "").includes("tfhub.dev") }) : null,
|
||||||
config3.hand.landmarks ? tf23.loadGraphModel(join(config3.modelBasePath, ((_c = config3.hand.skeleton) == null ? void 0 : _c.modelPath) || ""), { fromTFHub: (((_d = config3.hand.skeleton) == null ? void 0 : _d.modelPath) || "").includes("tfhub.dev") }) : null
|
config3.hand.landmarks ? tf22.loadGraphModel(join(config3.modelBasePath, ((_c = config3.hand.skeleton) == null ? void 0 : _c.modelPath) || ""), { fromTFHub: (((_d = config3.hand.skeleton) == null ? void 0 : _d.modelPath) || "").includes("tfhub.dev") }) : null
|
||||||
]);
|
]);
|
||||||
if (config3.hand.enabled) {
|
if (config3.hand.enabled) {
|
||||||
if (!handDetectorModel || !handDetectorModel["modelUrl"])
|
if (!handDetectorModel || !handDetectorModel["modelUrl"])
|
||||||
|
@ -9948,7 +9953,7 @@ function crop(box4) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/hand/handtrack.ts
|
// src/hand/handtrack.ts
|
||||||
var tf24 = __toModule(require_tfjs_esm());
|
var tf23 = __toModule(require_tfjs_esm());
|
||||||
var models2 = [null, null];
|
var models2 = [null, null];
|
||||||
var modelOutputNodes = ["StatefulPartitionedCall/Postprocessor/Slice", "StatefulPartitionedCall/Postprocessor/ExpandDims_1"];
|
var modelOutputNodes = ["StatefulPartitionedCall/Postprocessor/Slice", "StatefulPartitionedCall/Postprocessor/ExpandDims_1"];
|
||||||
var inputSize6 = [[0, 0], [0, 0]];
|
var inputSize6 = [[0, 0], [0, 0]];
|
||||||
|
@ -9978,7 +9983,7 @@ async function loadDetect2(config3) {
|
||||||
models2[0] = null;
|
models2[0] = null;
|
||||||
if (!models2[0]) {
|
if (!models2[0]) {
|
||||||
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
||||||
models2[0] = await tf24.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""));
|
models2[0] = await tf23.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""));
|
||||||
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
||||||
inputSize6[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize6[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize6[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize6[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
|
@ -9995,7 +10000,7 @@ async function loadSkeleton(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
models2[1] = null;
|
models2[1] = null;
|
||||||
if (!models2[1]) {
|
if (!models2[1]) {
|
||||||
models2[1] = await tf24.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath) || ""));
|
models2[1] = await tf23.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath) || ""));
|
||||||
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
||||||
inputSize6[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize6[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize6[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize6[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
|
@ -10015,27 +10020,27 @@ async function detectHands(input, config3) {
|
||||||
const ratio = (input.shape[2] || 1) / (input.shape[1] || 1);
|
const ratio = (input.shape[2] || 1) / (input.shape[1] || 1);
|
||||||
const height = Math.min(Math.round((input.shape[1] || 0) / 8) * 8, maxDetectorResolution);
|
const height = Math.min(Math.round((input.shape[1] || 0) / 8) * 8, maxDetectorResolution);
|
||||||
const width = Math.round(height * ratio / 8) * 8;
|
const width = Math.round(height * ratio / 8) * 8;
|
||||||
t.resize = tf24.image.resizeBilinear(input, [height, width]);
|
t.resize = tf23.image.resizeBilinear(input, [height, width]);
|
||||||
t.cast = tf24.cast(t.resize, "int32");
|
t.cast = tf23.cast(t.resize, "int32");
|
||||||
[t.rawScores, t.rawBoxes] = await models2[0].executeAsync(t.cast, modelOutputNodes);
|
[t.rawScores, t.rawBoxes] = await models2[0].executeAsync(t.cast, modelOutputNodes);
|
||||||
t.boxes = tf24.squeeze(t.rawBoxes, [0, 2]);
|
t.boxes = tf23.squeeze(t.rawBoxes, [0, 2]);
|
||||||
t.scores = tf24.squeeze(t.rawScores, [0]);
|
t.scores = tf23.squeeze(t.rawScores, [0]);
|
||||||
const classScores = tf24.unstack(t.scores, 1);
|
const classScores = tf23.unstack(t.scores, 1);
|
||||||
tf24.dispose(classScores[faceIndex]);
|
tf23.dispose(classScores[faceIndex]);
|
||||||
classScores.splice(faceIndex, 1);
|
classScores.splice(faceIndex, 1);
|
||||||
t.filtered = tf24.stack(classScores, 1);
|
t.filtered = tf23.stack(classScores, 1);
|
||||||
tf24.dispose(classScores);
|
tf23.dispose(classScores);
|
||||||
t.max = tf24.max(t.filtered, 1);
|
t.max = tf23.max(t.filtered, 1);
|
||||||
t.argmax = tf24.argMax(t.filtered, 1);
|
t.argmax = tf23.argMax(t.filtered, 1);
|
||||||
let id = 0;
|
let id = 0;
|
||||||
t.nms = await tf24.image.nonMaxSuppressionAsync(t.boxes, t.max, config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
t.nms = await tf23.image.nonMaxSuppressionAsync(t.boxes, t.max, config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
||||||
const nms = await t.nms.data();
|
const nms = await t.nms.data();
|
||||||
const scores = await t.max.data();
|
const scores = await t.max.data();
|
||||||
const classNum = await t.argmax.data();
|
const classNum = await t.argmax.data();
|
||||||
for (const nmsIndex of Array.from(nms)) {
|
for (const nmsIndex of Array.from(nms)) {
|
||||||
const boxSlice = tf24.slice(t.boxes, nmsIndex, 1);
|
const boxSlice = tf23.slice(t.boxes, nmsIndex, 1);
|
||||||
const boxYX = await boxSlice.data();
|
const boxYX = await boxSlice.data();
|
||||||
tf24.dispose(boxSlice);
|
tf23.dispose(boxSlice);
|
||||||
const boxData = [boxYX[1], boxYX[0], boxYX[3] - boxYX[1], boxYX[2] - boxYX[0]];
|
const boxData = [boxYX[1], boxYX[0], boxYX[3] - boxYX[1], boxYX[2] - boxYX[0]];
|
||||||
const boxRaw = scale(boxData, detectorExpandFact);
|
const boxRaw = scale(boxData, detectorExpandFact);
|
||||||
const boxCrop = crop(boxRaw);
|
const boxCrop = crop(boxRaw);
|
||||||
|
@ -10045,7 +10050,7 @@ async function detectHands(input, config3) {
|
||||||
const hand3 = { id: id++, score, box: boxFull, boxRaw, boxCrop, label };
|
const hand3 = { id: id++, score, box: boxFull, boxRaw, boxCrop, label };
|
||||||
hands.push(hand3);
|
hands.push(hand3);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf24.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf23.dispose(t[tensor3]));
|
||||||
hands.sort((a, b) => b.score - a.score);
|
hands.sort((a, b) => b.score - a.score);
|
||||||
if (hands.length > (config3.hand.maxDetected || 1))
|
if (hands.length > (config3.hand.maxDetected || 1))
|
||||||
hands.length = config3.hand.maxDetected || 1;
|
hands.length = config3.hand.maxDetected || 1;
|
||||||
|
@ -10066,14 +10071,14 @@ async function detectFingers(input, h, config3) {
|
||||||
};
|
};
|
||||||
if (input && models2[1] && config3.hand.landmarks && h.score > (config3.hand.minConfidence || 0)) {
|
if (input && models2[1] && config3.hand.landmarks && h.score > (config3.hand.minConfidence || 0)) {
|
||||||
const t = {};
|
const t = {};
|
||||||
t.crop = tf24.image.cropAndResize(input, [h.boxCrop], [0], [inputSize6[1][0], inputSize6[1][1]], "bilinear");
|
t.crop = tf23.image.cropAndResize(input, [h.boxCrop], [0], [inputSize6[1][0], inputSize6[1][1]], "bilinear");
|
||||||
t.div = tf24.div(t.crop, tf255);
|
t.div = tf23.div(t.crop, constants.tf255);
|
||||||
[t.score, t.keypoints] = models2[1].execute(t.div, ["Identity_1", "Identity"]);
|
[t.score, t.keypoints] = models2[1].execute(t.div, ["Identity_1", "Identity"]);
|
||||||
const rawScore = (await t.score.data())[0];
|
const rawScore = (await t.score.data())[0];
|
||||||
const score = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
const score = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||||
if (score >= (config3.hand.minConfidence || 0)) {
|
if (score >= (config3.hand.minConfidence || 0)) {
|
||||||
hand3.fingerScore = score;
|
hand3.fingerScore = score;
|
||||||
t.reshaped = tf24.reshape(t.keypoints, [-1, 3]);
|
t.reshaped = tf23.reshape(t.keypoints, [-1, 3]);
|
||||||
const coordsData = await t.reshaped.array();
|
const coordsData = await t.reshaped.array();
|
||||||
const coordsRaw = coordsData.map((kpt4) => [kpt4[0] / inputSize6[1][1], kpt4[1] / inputSize6[1][0], kpt4[2] || 0]);
|
const coordsRaw = coordsData.map((kpt4) => [kpt4[0] / inputSize6[1][1], kpt4[1] / inputSize6[1][0], kpt4[2] || 0]);
|
||||||
const coordsNorm = coordsRaw.map((kpt4) => [kpt4[0] * h.boxRaw[2], kpt4[1] * h.boxRaw[3], kpt4[2] || 0]);
|
const coordsNorm = coordsRaw.map((kpt4) => [kpt4[0] * h.boxRaw[2], kpt4[1] * h.boxRaw[3], kpt4[2] || 0]);
|
||||||
|
@ -10087,7 +10092,7 @@ async function detectFingers(input, h, config3) {
|
||||||
hand3.annotations[key] = fingerMap[key].map((index2) => hand3.landmarks && hand3.keypoints[index2] ? hand3.keypoints[index2] : null);
|
hand3.annotations[key] = fingerMap[key].map((index2) => hand3.landmarks && hand3.keypoints[index2] ? hand3.keypoints[index2] : null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf24.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf23.dispose(t[tensor3]));
|
||||||
}
|
}
|
||||||
return hand3;
|
return hand3;
|
||||||
}
|
}
|
||||||
|
@ -10138,7 +10143,7 @@ async function predict13(input, config3) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/face/liveness.ts
|
// src/face/liveness.ts
|
||||||
var tf25 = __toModule(require_tfjs_esm());
|
var tf24 = __toModule(require_tfjs_esm());
|
||||||
var model13;
|
var model13;
|
||||||
var cached2 = [];
|
var cached2 = [];
|
||||||
var skipped13 = Number.MAX_SAFE_INTEGER;
|
var skipped13 = Number.MAX_SAFE_INTEGER;
|
||||||
|
@ -10149,7 +10154,7 @@ async function load14(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model13 = null;
|
model13 = null;
|
||||||
if (!model13) {
|
if (!model13) {
|
||||||
model13 = await tf25.loadGraphModel(join(config3.modelBasePath, ((_a = config3.face.liveness) == null ? void 0 : _a.modelPath) || ""));
|
model13 = await tf24.loadGraphModel(join(config3.modelBasePath, ((_a = config3.face.liveness) == null ? void 0 : _a.modelPath) || ""));
|
||||||
if (!model13 || !model13["modelUrl"])
|
if (!model13 || !model13["modelUrl"])
|
||||||
log("load model failed:", (_b = config3.face.liveness) == null ? void 0 : _b.modelPath);
|
log("load model failed:", (_b = config3.face.liveness) == null ? void 0 : _b.modelPath);
|
||||||
else if (config3.debug)
|
else if (config3.debug)
|
||||||
|
@ -10170,19 +10175,19 @@ async function predict14(image29, config3, idx, count2) {
|
||||||
}
|
}
|
||||||
skipped13 = 0;
|
skipped13 = 0;
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
const resize = tf25.image.resizeBilinear(image29, [(model13 == null ? void 0 : model13.inputs[0].shape) ? model13.inputs[0].shape[2] : 0, (model13 == null ? void 0 : model13.inputs[0].shape) ? model13.inputs[0].shape[1] : 0], false);
|
const resize = tf24.image.resizeBilinear(image29, [(model13 == null ? void 0 : model13.inputs[0].shape) ? model13.inputs[0].shape[2] : 0, (model13 == null ? void 0 : model13.inputs[0].shape) ? model13.inputs[0].shape[1] : 0], false);
|
||||||
const res = model13 == null ? void 0 : model13.execute(resize);
|
const res = model13 == null ? void 0 : model13.execute(resize);
|
||||||
const num = (await res.data())[0];
|
const num = (await res.data())[0];
|
||||||
cached2[idx] = Math.round(100 * num) / 100;
|
cached2[idx] = Math.round(100 * num) / 100;
|
||||||
lastCount8 = count2;
|
lastCount8 = count2;
|
||||||
lastTime14 = now();
|
lastTime14 = now();
|
||||||
tf25.dispose([resize, res]);
|
tf24.dispose([resize, res]);
|
||||||
resolve(cached2[idx]);
|
resolve(cached2[idx]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/body/movenet.ts
|
// src/body/movenet.ts
|
||||||
var tf27 = __toModule(require_tfjs_esm());
|
var tf26 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/body/movenetcoords.ts
|
// src/body/movenetcoords.ts
|
||||||
var movenetcoords_exports = {};
|
var movenetcoords_exports = {};
|
||||||
|
@ -10242,7 +10247,7 @@ var connected3 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// src/body/movenetfix.ts
|
// src/body/movenetfix.ts
|
||||||
var tf26 = __toModule(require_tfjs_esm());
|
var tf25 = __toModule(require_tfjs_esm());
|
||||||
var maxJitter = 5e-3;
|
var maxJitter = 5e-3;
|
||||||
var cache4 = {
|
var cache4 = {
|
||||||
keypoints: [],
|
keypoints: [],
|
||||||
|
@ -10316,10 +10321,10 @@ function padInput(input, inputSize8) {
|
||||||
[input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0, input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0],
|
[input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0, input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0],
|
||||||
[0, 0]
|
[0, 0]
|
||||||
];
|
];
|
||||||
t.pad = tf26.pad(input, cache4.padding);
|
t.pad = tf25.pad(input, cache4.padding);
|
||||||
t.resize = tf26.image.resizeBilinear(t.pad, [inputSize8, inputSize8]);
|
t.resize = tf25.image.resizeBilinear(t.pad, [inputSize8, inputSize8]);
|
||||||
const final = tf26.cast(t.resize, "int32");
|
const final = tf25.cast(t.resize, "int32");
|
||||||
Object.keys(t).forEach((tensor3) => tf26.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf25.dispose(t[tensor3]));
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
function rescaleBody(body4, outputSize2) {
|
function rescaleBody(body4, outputSize2) {
|
||||||
|
@ -10354,7 +10359,7 @@ async function load15(config3) {
|
||||||
model14 = null;
|
model14 = null;
|
||||||
if (!model14) {
|
if (!model14) {
|
||||||
fakeOps(["size"], config3);
|
fakeOps(["size"], config3);
|
||||||
model14 = await tf27.loadGraphModel(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model14 = await tf26.loadGraphModel(join(config3.modelBasePath, config3.body.modelPath || ""));
|
||||||
if (!model14 || !model14["modelUrl"])
|
if (!model14 || !model14["modelUrl"])
|
||||||
log("load model failed:", config3.body.modelPath);
|
log("load model failed:", config3.body.modelPath);
|
||||||
else if (config3.debug)
|
else if (config3.debug)
|
||||||
|
@ -10466,13 +10471,13 @@ async function predict15(input, config3) {
|
||||||
rescaleBody(body4, [input.shape[2] || 1, input.shape[1] || 1]);
|
rescaleBody(body4, [input.shape[2] || 1, input.shape[1] || 1]);
|
||||||
jitter(body4.keypoints);
|
jitter(body4.keypoints);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf27.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf26.dispose(t[tensor3]));
|
||||||
resolve(cache5.bodies);
|
resolve(cache5.bodies);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/object/nanodet.ts
|
// src/object/nanodet.ts
|
||||||
var tf28 = __toModule(require_tfjs_esm());
|
var tf27 = __toModule(require_tfjs_esm());
|
||||||
var model15;
|
var model15;
|
||||||
var last9 = [];
|
var last9 = [];
|
||||||
var lastTime15 = 0;
|
var lastTime15 = 0;
|
||||||
|
@ -10480,7 +10485,7 @@ var skipped15 = Number.MAX_SAFE_INTEGER;
|
||||||
var scaleBox = 2.5;
|
var scaleBox = 2.5;
|
||||||
async function load16(config3) {
|
async function load16(config3) {
|
||||||
if (!model15 || env.initial) {
|
if (!model15 || env.initial) {
|
||||||
model15 = await tf28.loadGraphModel(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model15 = await tf27.loadGraphModel(join(config3.modelBasePath, config3.object.modelPath || ""));
|
||||||
const inputs = Object.values(model15.modelSignature["inputs"]);
|
const inputs = Object.values(model15.modelSignature["inputs"]);
|
||||||
model15.inputSize = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : null;
|
model15.inputSize = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : null;
|
||||||
if (!model15 || !model15.modelUrl)
|
if (!model15 || !model15.modelUrl)
|
||||||
|
@ -10495,7 +10500,7 @@ async function process4(res, inputSize8, outputShape, config3) {
|
||||||
let id = 0;
|
let id = 0;
|
||||||
let results = [];
|
let results = [];
|
||||||
for (const strideSize of [1, 2, 4]) {
|
for (const strideSize of [1, 2, 4]) {
|
||||||
tf28.tidy(async () => {
|
tf27.tidy(async () => {
|
||||||
var _a, _b;
|
var _a, _b;
|
||||||
const baseSize = strideSize * 13;
|
const baseSize = strideSize * 13;
|
||||||
const scoresT = (_a = res.find((a) => a.shape[1] === baseSize ** 2 && a.shape[2] === labels.length)) == null ? void 0 : _a.squeeze();
|
const scoresT = (_a = res.find((a) => a.shape[1] === baseSize ** 2 && a.shape[2] === labels.length)) == null ? void 0 : _a.squeeze();
|
||||||
|
@ -10540,14 +10545,14 @@ async function process4(res, inputSize8, outputShape, config3) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
res.forEach((t) => tf28.dispose(t));
|
res.forEach((t) => tf27.dispose(t));
|
||||||
const nmsBoxes = results.map((a) => [a.boxRaw[1], a.boxRaw[0], a.boxRaw[3], a.boxRaw[2]]);
|
const nmsBoxes = results.map((a) => [a.boxRaw[1], a.boxRaw[0], a.boxRaw[3], a.boxRaw[2]]);
|
||||||
const nmsScores = results.map((a) => a.score);
|
const nmsScores = results.map((a) => a.score);
|
||||||
let nmsIdx = [];
|
let nmsIdx = [];
|
||||||
if (nmsBoxes && nmsBoxes.length > 0) {
|
if (nmsBoxes && nmsBoxes.length > 0) {
|
||||||
const nms = await tf28.image.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
const nms = await tf27.image.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
||||||
nmsIdx = await nms.data();
|
nmsIdx = await nms.data();
|
||||||
tf28.dispose(nms);
|
tf27.dispose(nms);
|
||||||
}
|
}
|
||||||
results = results.filter((_val, idx) => nmsIdx.includes(idx)).sort((a, b) => b.score - a.score);
|
results = results.filter((_val, idx) => nmsIdx.includes(idx)).sort((a, b) => b.score - a.score);
|
||||||
return results;
|
return results;
|
||||||
|
@ -10564,16 +10569,16 @@ async function predict16(image29, config3) {
|
||||||
return last9;
|
return last9;
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
const outputSize2 = [image29.shape[2], image29.shape[1]];
|
const outputSize2 = [image29.shape[2], image29.shape[1]];
|
||||||
const resize = tf28.image.resizeBilinear(image29, [model15.inputSize, model15.inputSize], false);
|
const resize = tf27.image.resizeBilinear(image29, [model15.inputSize, model15.inputSize], false);
|
||||||
const norm = tf28.div(resize, tf255);
|
const norm = tf27.div(resize, constants.tf255);
|
||||||
const transpose = norm.transpose([0, 3, 1, 2]);
|
const transpose = norm.transpose([0, 3, 1, 2]);
|
||||||
tf28.dispose(norm);
|
tf27.dispose(norm);
|
||||||
tf28.dispose(resize);
|
tf27.dispose(resize);
|
||||||
let objectT;
|
let objectT;
|
||||||
if (config3.object.enabled)
|
if (config3.object.enabled)
|
||||||
objectT = model15.execute(transpose);
|
objectT = model15.execute(transpose);
|
||||||
lastTime15 = now();
|
lastTime15 = now();
|
||||||
tf28.dispose(transpose);
|
tf27.dispose(transpose);
|
||||||
const obj = await process4(objectT, model15.inputSize, outputSize2, config3);
|
const obj = await process4(objectT, model15.inputSize, outputSize2, config3);
|
||||||
last9 = obj;
|
last9 = obj;
|
||||||
resolve(obj);
|
resolve(obj);
|
||||||
|
@ -10581,7 +10586,7 @@ async function predict16(image29, config3) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/body/posenet.ts
|
// src/body/posenet.ts
|
||||||
var tf29 = __toModule(require_tfjs_esm());
|
var tf28 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/body/posenetutils.ts
|
// src/body/posenetutils.ts
|
||||||
var partNames = [
|
var partNames = [
|
||||||
|
@ -10892,19 +10897,19 @@ function decode(offsets, scores, displacementsFwd, displacementsBwd, maxDetected
|
||||||
return poses;
|
return poses;
|
||||||
}
|
}
|
||||||
async function predict17(input, config3) {
|
async function predict17(input, config3) {
|
||||||
const res = tf29.tidy(() => {
|
const res = tf28.tidy(() => {
|
||||||
if (!model16.inputs[0].shape)
|
if (!model16.inputs[0].shape)
|
||||||
return [];
|
return [];
|
||||||
const resized = tf29.image.resizeBilinear(input, [model16.inputs[0].shape[2], model16.inputs[0].shape[1]]);
|
const resized = tf28.image.resizeBilinear(input, [model16.inputs[0].shape[2], model16.inputs[0].shape[1]]);
|
||||||
const normalized = tf29.sub(tf29.div(tf29.cast(resized, "float32"), 127.5), 1);
|
const normalized = tf28.sub(tf28.div(tf28.cast(resized, "float32"), 127.5), 1);
|
||||||
const results = model16.execute(normalized, poseNetOutputs);
|
const results = model16.execute(normalized, poseNetOutputs);
|
||||||
const results3d = results.map((y) => tf29.squeeze(y, [0]));
|
const results3d = results.map((y) => tf28.squeeze(y, [0]));
|
||||||
results3d[1] = results3d[1].sigmoid();
|
results3d[1] = results3d[1].sigmoid();
|
||||||
return results3d;
|
return results3d;
|
||||||
});
|
});
|
||||||
const buffers = await Promise.all(res.map((tensor3) => tensor3.buffer()));
|
const buffers = await Promise.all(res.map((tensor3) => tensor3.buffer()));
|
||||||
for (const t of res)
|
for (const t of res)
|
||||||
tf29.dispose(t);
|
tf28.dispose(t);
|
||||||
const decoded = await decode(buffers[0], buffers[1], buffers[2], buffers[3], config3.body.maxDetected, config3.body.minConfidence);
|
const decoded = await decode(buffers[0], buffers[1], buffers[2], buffers[3], config3.body.maxDetected, config3.body.minConfidence);
|
||||||
if (!model16.inputs[0].shape)
|
if (!model16.inputs[0].shape)
|
||||||
return [];
|
return [];
|
||||||
|
@ -10913,7 +10918,7 @@ async function predict17(input, config3) {
|
||||||
}
|
}
|
||||||
async function load17(config3) {
|
async function load17(config3) {
|
||||||
if (!model16 || env.initial) {
|
if (!model16 || env.initial) {
|
||||||
model16 = await tf29.loadGraphModel(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model16 = await tf28.loadGraphModel(join(config3.modelBasePath, config3.body.modelPath || ""));
|
||||||
if (!model16 || !model16["modelUrl"])
|
if (!model16 || !model16["modelUrl"])
|
||||||
log("load model failed:", config3.body.modelPath);
|
log("load model failed:", config3.body.modelPath);
|
||||||
else if (config3.debug)
|
else if (config3.debug)
|
||||||
|
@ -10924,12 +10929,12 @@ async function load17(config3) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/segmentation/segmentation.ts
|
// src/segmentation/segmentation.ts
|
||||||
var tf30 = __toModule(require_tfjs_esm());
|
var tf29 = __toModule(require_tfjs_esm());
|
||||||
var model17;
|
var model17;
|
||||||
var busy = false;
|
var busy = false;
|
||||||
async function load18(config3) {
|
async function load18(config3) {
|
||||||
if (!model17 || env.initial) {
|
if (!model17 || env.initial) {
|
||||||
model17 = await tf30.loadGraphModel(join(config3.modelBasePath, config3.segmentation.modelPath || ""));
|
model17 = await tf29.loadGraphModel(join(config3.modelBasePath, config3.segmentation.modelPath || ""));
|
||||||
if (!model17 || !model17["modelUrl"])
|
if (!model17 || !model17["modelUrl"])
|
||||||
log("load model failed:", config3.segmentation.modelPath);
|
log("load model failed:", config3.segmentation.modelPath);
|
||||||
else if (config3.debug)
|
else if (config3.debug)
|
||||||
|
@ -10951,30 +10956,30 @@ async function process5(input, background, config3) {
|
||||||
if (!inputImage.tensor)
|
if (!inputImage.tensor)
|
||||||
return { data: [], canvas: null, alpha: null };
|
return { data: [], canvas: null, alpha: null };
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = tf30.image.resizeBilinear(inputImage.tensor, [model17.inputs[0].shape ? model17.inputs[0].shape[1] : 0, model17.inputs[0].shape ? model17.inputs[0].shape[2] : 0], false);
|
t.resize = tf29.image.resizeBilinear(inputImage.tensor, [model17.inputs[0].shape ? model17.inputs[0].shape[1] : 0, model17.inputs[0].shape ? model17.inputs[0].shape[2] : 0], false);
|
||||||
tf30.dispose(inputImage.tensor);
|
tf29.dispose(inputImage.tensor);
|
||||||
t.norm = tf30.div(t.resize, tf255);
|
t.norm = tf29.div(t.resize, constants.tf255);
|
||||||
t.res = model17.execute(t.norm);
|
t.res = model17.execute(t.norm);
|
||||||
t.squeeze = tf30.squeeze(t.res, 0);
|
t.squeeze = tf29.squeeze(t.res, 0);
|
||||||
if (t.squeeze.shape[2] === 2) {
|
if (t.squeeze.shape[2] === 2) {
|
||||||
t.softmax = tf30.softmax(t.squeeze);
|
t.softmax = tf29.softmax(t.squeeze);
|
||||||
[t.bg, t.fg] = tf30.unstack(t.softmax, 2);
|
[t.bg, t.fg] = tf29.unstack(t.softmax, 2);
|
||||||
t.expand = tf30.expandDims(t.fg, 2);
|
t.expand = tf29.expandDims(t.fg, 2);
|
||||||
t.pad = tf30.expandDims(t.expand, 0);
|
t.pad = tf29.expandDims(t.expand, 0);
|
||||||
t.crop = tf30.image.cropAndResize(t.pad, [[0, 0, 0.5, 0.5]], [0], [width, height]);
|
t.crop = tf29.image.cropAndResize(t.pad, [[0, 0, 0.5, 0.5]], [0], [width, height]);
|
||||||
t.data = tf30.squeeze(t.crop, 0);
|
t.data = tf29.squeeze(t.crop, 0);
|
||||||
} else {
|
} else {
|
||||||
t.data = tf30.image.resizeBilinear(t.squeeze, [height, width]);
|
t.data = tf29.image.resizeBilinear(t.squeeze, [height, width]);
|
||||||
}
|
}
|
||||||
const data = Array.from(await t.data.data());
|
const data = Array.from(await t.data.data());
|
||||||
if (env.node && !env.Canvas && typeof ImageData === "undefined") {
|
if (env.node && !env.Canvas && typeof ImageData === "undefined") {
|
||||||
if (config3.debug)
|
if (config3.debug)
|
||||||
log("canvas support missing");
|
log("canvas support missing");
|
||||||
Object.keys(t).forEach((tensor3) => tf30.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf29.dispose(t[tensor3]));
|
||||||
return { data, canvas: null, alpha: null };
|
return { data, canvas: null, alpha: null };
|
||||||
}
|
}
|
||||||
const alphaCanvas = canvas(width, height);
|
const alphaCanvas = canvas(width, height);
|
||||||
await tf30.browser.toPixels(t.data, alphaCanvas);
|
await tf29.browser.toPixels(t.data, alphaCanvas);
|
||||||
const alphaCtx = alphaCanvas.getContext("2d");
|
const alphaCtx = alphaCanvas.getContext("2d");
|
||||||
if (config3.segmentation.blur && config3.segmentation.blur > 0)
|
if (config3.segmentation.blur && config3.segmentation.blur > 0)
|
||||||
alphaCtx.filter = `blur(${config3.segmentation.blur}px)`;
|
alphaCtx.filter = `blur(${config3.segmentation.blur}px)`;
|
||||||
|
@ -10997,12 +11002,12 @@ async function process5(input, background, config3) {
|
||||||
if (background && compositeCanvas) {
|
if (background && compositeCanvas) {
|
||||||
mergedCanvas = canvas(width, height);
|
mergedCanvas = canvas(width, height);
|
||||||
const bgImage = await process2(background, config3);
|
const bgImage = await process2(background, config3);
|
||||||
tf30.dispose(bgImage.tensor);
|
tf29.dispose(bgImage.tensor);
|
||||||
const ctxMerge = mergedCanvas.getContext("2d");
|
const ctxMerge = mergedCanvas.getContext("2d");
|
||||||
ctxMerge.drawImage(bgImage.canvas, 0, 0, mergedCanvas.width, mergedCanvas.height);
|
ctxMerge.drawImage(bgImage.canvas, 0, 0, mergedCanvas.width, mergedCanvas.height);
|
||||||
ctxMerge.drawImage(compositeCanvas, 0, 0);
|
ctxMerge.drawImage(compositeCanvas, 0, 0);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf30.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf29.dispose(t[tensor3]));
|
||||||
busy = false;
|
busy = false;
|
||||||
return { data, canvas: compositeCanvas, alpha: alphaCanvas };
|
return { data, canvas: compositeCanvas, alpha: alphaCanvas };
|
||||||
}
|
}
|
||||||
|
@ -11164,11 +11169,11 @@ async function register(instance) {
|
||||||
var _a;
|
var _a;
|
||||||
if (instance.config.backend !== "humangl")
|
if (instance.config.backend !== "humangl")
|
||||||
return;
|
return;
|
||||||
if (config2.name in tf31.engine().registry && (!config2.gl || !config2.gl.getParameter(config2.gl.VERSION))) {
|
if (config2.name in tf30.engine().registry && (!config2.gl || !config2.gl.getParameter(config2.gl.VERSION))) {
|
||||||
log("error: humangl backend invalid context");
|
log("error: humangl backend invalid context");
|
||||||
reset(instance);
|
reset(instance);
|
||||||
}
|
}
|
||||||
if (!tf31.findBackend(config2.name)) {
|
if (!tf30.findBackend(config2.name)) {
|
||||||
try {
|
try {
|
||||||
config2.canvas = await canvas(100, 100);
|
config2.canvas = await canvas(100, 100);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
@ -11202,29 +11207,29 @@ async function register(instance) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
tf31.setWebGLContext(2, config2.gl);
|
tf30.setWebGLContext(2, config2.gl);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot set WebGL context:", err);
|
log("error: cannot set WebGL context:", err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const ctx = new tf31.GPGPUContext(config2.gl);
|
const ctx = new tf30.GPGPUContext(config2.gl);
|
||||||
tf31.registerBackend(config2.name, () => new tf31.MathBackendWebGL(ctx), config2.priority);
|
tf30.registerBackend(config2.name, () => new tf30.MathBackendWebGL(ctx), config2.priority);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot register WebGL backend:", err);
|
log("error: cannot register WebGL backend:", err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const kernels = tf31.getKernelsForBackend("webgl");
|
const kernels = tf30.getKernelsForBackend("webgl");
|
||||||
kernels.forEach((kernelConfig) => {
|
kernels.forEach((kernelConfig) => {
|
||||||
const newKernelConfig = { ...kernelConfig, backendName: config2.name };
|
const newKernelConfig = { ...kernelConfig, backendName: config2.name };
|
||||||
tf31.registerKernel(newKernelConfig);
|
tf30.registerKernel(newKernelConfig);
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot update WebGL backend registration:", err);
|
log("error: cannot update WebGL backend registration:", err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const current = tf31.backend().getGPGPUContext ? tf31.backend().getGPGPUContext().gl : null;
|
const current = tf30.backend().getGPGPUContext ? tf30.backend().getGPGPUContext().gl : null;
|
||||||
if (current) {
|
if (current) {
|
||||||
log(`humangl webgl version:${current.getParameter(current.VERSION)} renderer:${current.getParameter(current.RENDERER)}`);
|
log(`humangl webgl version:${current.getParameter(current.VERSION)} renderer:${current.getParameter(current.RENDERER)}`);
|
||||||
} else {
|
} else {
|
||||||
|
@ -11232,7 +11237,7 @@ async function register(instance) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
tf31.ENV.set("WEBGL_VERSION", 2);
|
tf30.ENV.set("WEBGL_VERSION", 2);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot set WebGL backend flags:", err);
|
log("error: cannot set WebGL backend flags:", err);
|
||||||
return;
|
return;
|
||||||
|
@ -11243,30 +11248,30 @@ async function register(instance) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/tfjs/backend.ts
|
// src/tfjs/backend.ts
|
||||||
var tf32 = __toModule(require_tfjs_esm());
|
var tf31 = __toModule(require_tfjs_esm());
|
||||||
function registerCustomOps() {
|
function registerCustomOps() {
|
||||||
if (!env.kernels.includes("mod")) {
|
if (!env.kernels.includes("mod")) {
|
||||||
const kernelMod = {
|
const kernelMod = {
|
||||||
kernelName: "Mod",
|
kernelName: "Mod",
|
||||||
backendName: tf32.getBackend(),
|
backendName: tf31.getBackend(),
|
||||||
kernelFunc: (op) => tf32.tidy(() => tf32.sub(op.inputs.a, tf32.mul(tf32.div(op.inputs.a, op.inputs.b), op.inputs.b)))
|
kernelFunc: (op) => tf31.tidy(() => tf31.sub(op.inputs.a, tf31.mul(tf31.div(op.inputs.a, op.inputs.b), op.inputs.b)))
|
||||||
};
|
};
|
||||||
tf32.registerKernel(kernelMod);
|
tf31.registerKernel(kernelMod);
|
||||||
env.kernels.push("mod");
|
env.kernels.push("mod");
|
||||||
}
|
}
|
||||||
if (!env.kernels.includes("floormod")) {
|
if (!env.kernels.includes("floormod")) {
|
||||||
const kernelMod = {
|
const kernelMod = {
|
||||||
kernelName: "FloorMod",
|
kernelName: "FloorMod",
|
||||||
backendName: tf32.getBackend(),
|
backendName: tf31.getBackend(),
|
||||||
kernelFunc: (op) => tf32.tidy(() => tf32.floorDiv(op.inputs.a / op.inputs.b) * op.inputs.b + tf32.mod(op.inputs.a, op.inputs.b))
|
kernelFunc: (op) => tf31.tidy(() => tf31.floorDiv(op.inputs.a / op.inputs.b) * op.inputs.b + tf31.mod(op.inputs.a, op.inputs.b))
|
||||||
};
|
};
|
||||||
tf32.registerKernel(kernelMod);
|
tf31.registerKernel(kernelMod);
|
||||||
env.kernels.push("floormod");
|
env.kernels.push("floormod");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function check(instance, force = false) {
|
async function check(instance, force = false) {
|
||||||
instance.state = "backend";
|
instance.state = "backend";
|
||||||
if (force || env.initial || instance.config.backend && instance.config.backend.length > 0 && tf32.getBackend() !== instance.config.backend) {
|
if (force || env.initial || instance.config.backend && instance.config.backend.length > 0 && tf31.getBackend() !== instance.config.backend) {
|
||||||
const timeStamp = now();
|
const timeStamp = now();
|
||||||
if (instance.config.backend && instance.config.backend.length > 0) {
|
if (instance.config.backend && instance.config.backend.length > 0) {
|
||||||
if (typeof window === "undefined" && typeof WorkerGlobalScope !== "undefined" && instance.config.debug) {
|
if (typeof window === "undefined" && typeof WorkerGlobalScope !== "undefined" && instance.config.debug) {
|
||||||
|
@ -11295,7 +11300,7 @@ async function check(instance, force = false) {
|
||||||
}
|
}
|
||||||
if (instance.config.backend === "humangl")
|
if (instance.config.backend === "humangl")
|
||||||
await register(instance);
|
await register(instance);
|
||||||
const available = Object.keys(tf32.engine().registryFactory);
|
const available = Object.keys(tf31.engine().registryFactory);
|
||||||
if (instance.config.debug)
|
if (instance.config.debug)
|
||||||
log("available backends:", available);
|
log("available backends:", available);
|
||||||
if (!available.includes(instance.config.backend)) {
|
if (!available.includes(instance.config.backend)) {
|
||||||
|
@ -11309,46 +11314,47 @@ async function check(instance, force = false) {
|
||||||
if (instance.config.backend === "wasm") {
|
if (instance.config.backend === "wasm") {
|
||||||
if (instance.config.debug)
|
if (instance.config.debug)
|
||||||
log("wasm path:", instance.config.wasmPath);
|
log("wasm path:", instance.config.wasmPath);
|
||||||
if (typeof (tf32 == null ? void 0 : tf32.setWasmPaths) !== "undefined")
|
if (typeof (tf31 == null ? void 0 : tf31.setWasmPaths) !== "undefined")
|
||||||
await tf32.setWasmPaths(instance.config.wasmPath);
|
await tf31.setWasmPaths(instance.config.wasmPath);
|
||||||
else
|
else
|
||||||
throw new Error("backend error: attempting to use wasm backend but wasm path is not set");
|
throw new Error("backend error: attempting to use wasm backend but wasm path is not set");
|
||||||
const simd = await tf32.env().getAsync("WASM_HAS_SIMD_SUPPORT");
|
const simd = await tf31.env().getAsync("WASM_HAS_SIMD_SUPPORT");
|
||||||
const mt = await tf32.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");
|
const mt = await tf31.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");
|
||||||
if (instance.config.debug)
|
if (instance.config.debug)
|
||||||
log(`wasm execution: ${simd ? "SIMD" : "no SIMD"} ${mt ? "multithreaded" : "singlethreaded"}`);
|
log(`wasm execution: ${simd ? "SIMD" : "no SIMD"} ${mt ? "multithreaded" : "singlethreaded"}`);
|
||||||
if (instance.config.debug && !simd)
|
if (instance.config.debug && !simd)
|
||||||
log("warning: wasm simd support is not enabled");
|
log("warning: wasm simd support is not enabled");
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
await tf32.setBackend(instance.config.backend);
|
await tf31.setBackend(instance.config.backend);
|
||||||
await tf32.ready();
|
await tf31.ready();
|
||||||
|
init();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot set backend:", instance.config.backend, err);
|
log("error: cannot set backend:", instance.config.backend, err);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tf32.getBackend() === "humangl") {
|
if (tf31.getBackend() === "humangl") {
|
||||||
tf32.ENV.set("CHECK_COMPUTATION_FOR_ERRORS", false);
|
tf31.ENV.set("CHECK_COMPUTATION_FOR_ERRORS", false);
|
||||||
tf32.ENV.set("WEBGL_CPU_FORWARD", true);
|
tf31.ENV.set("WEBGL_CPU_FORWARD", true);
|
||||||
tf32.ENV.set("WEBGL_USE_SHAPES_UNIFORMS", true);
|
tf31.ENV.set("WEBGL_USE_SHAPES_UNIFORMS", true);
|
||||||
tf32.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD", 256);
|
tf31.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD", 256);
|
||||||
if (typeof instance.config["deallocate"] !== "undefined" && instance.config["deallocate"]) {
|
if (typeof instance.config["deallocate"] !== "undefined" && instance.config["deallocate"]) {
|
||||||
log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:", true);
|
log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:", true);
|
||||||
tf32.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD", 0);
|
tf31.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD", 0);
|
||||||
}
|
}
|
||||||
if (tf32.backend().getGPGPUContext) {
|
if (tf31.backend().getGPGPUContext) {
|
||||||
const gl = await tf32.backend().getGPGPUContext().gl;
|
const gl = await tf31.backend().getGPGPUContext().gl;
|
||||||
if (instance.config.debug)
|
if (instance.config.debug)
|
||||||
log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);
|
log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tf32.getBackend() === "webgpu") {
|
if (tf31.getBackend() === "webgpu") {
|
||||||
}
|
}
|
||||||
tf32.enableProdMode();
|
tf31.enableProdMode();
|
||||||
await tf32.ready();
|
await tf31.ready();
|
||||||
instance.performance.initBackend = Math.trunc(now() - timeStamp);
|
instance.performance.initBackend = Math.trunc(now() - timeStamp);
|
||||||
instance.config.backend = tf32.getBackend();
|
instance.config.backend = tf31.getBackend();
|
||||||
await env.updateBackend();
|
await env.updateBackend();
|
||||||
registerCustomOps();
|
registerCustomOps();
|
||||||
}
|
}
|
||||||
|
@ -11364,9 +11370,9 @@ function fakeOps(kernelNames, config3) {
|
||||||
log("kernelFunc", kernelName, config3.backend);
|
log("kernelFunc", kernelName, config3.backend);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
tf32.registerKernel(kernelConfig);
|
tf31.registerKernel(kernelConfig);
|
||||||
}
|
}
|
||||||
env.kernels = tf32.getKernelsForBackend(tf32.getBackend()).map((kernel) => kernel.kernelName.toLowerCase());
|
env.kernels = tf31.getKernelsForBackend(tf31.getBackend()).map((kernel) => kernel.kernelName.toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/util/draw.ts
|
// src/util/draw.ts
|
||||||
|
@ -11850,10 +11856,10 @@ async function all(inCanvas2, result, drawOptions) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/face/face.ts
|
// src/face/face.ts
|
||||||
var tf34 = __toModule(require_tfjs_esm());
|
var tf33 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/face/mask.ts
|
// src/face/mask.ts
|
||||||
var tf33 = __toModule(require_tfjs_esm());
|
var tf32 = __toModule(require_tfjs_esm());
|
||||||
var expandFact = 0.1;
|
var expandFact = 0.1;
|
||||||
var alpha = 0.5;
|
var alpha = 0.5;
|
||||||
function insidePoly(x, y, polygon) {
|
function insidePoly(x, y, polygon) {
|
||||||
|
@ -11889,7 +11895,7 @@ async function mask(face5) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const output = buffer.toTensor();
|
const output = buffer.toTensor();
|
||||||
tf33.dispose(buffer);
|
tf32.dispose(buffer);
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12028,79 +12034,79 @@ var detectFace = async (instance, input) => {
|
||||||
}
|
}
|
||||||
if ((_a = instance.config.face.detector) == null ? void 0 : _a.mask) {
|
if ((_a = instance.config.face.detector) == null ? void 0 : _a.mask) {
|
||||||
const masked = await mask(faces[i]);
|
const masked = await mask(faces[i]);
|
||||||
tf34.dispose(faces[i].tensor);
|
tf33.dispose(faces[i].tensor);
|
||||||
faces[i].tensor = masked;
|
faces[i].tensor = masked;
|
||||||
}
|
}
|
||||||
const rotation = faces[i].mesh && faces[i].mesh.length > 200 ? calculateFaceAngle(faces[i], [input.shape[2], input.shape[1]]) : null;
|
const rotation = faces[i].mesh && faces[i].mesh.length > 200 ? calculateFaceAngle(faces[i], [input.shape[2], input.shape[1]]) : null;
|
||||||
instance.analyze("Start Emotion:");
|
instance.analyze("Start Emotion:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
emotionRes = ((_b = instance.config.face.emotion) == null ? void 0 : _b.enabled) ? predict8(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
emotionRes = ((_b = instance.config.face.emotion) == null ? void 0 : _b.enabled) ? predict8(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:emotion";
|
instance.state = "run:emotion";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
emotionRes = ((_c = instance.config.face.emotion) == null ? void 0 : _c.enabled) ? await predict8(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
emotionRes = ((_c = instance.config.face.emotion) == null ? void 0 : _c.enabled) ? await predict8(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
instance.performance.emotion = env.perfadd ? (instance.performance.emotion || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
instance.performance.emotion = env.perfadd ? (instance.performance.emotion || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End Emotion:");
|
instance.analyze("End Emotion:");
|
||||||
instance.analyze("Start AntiSpoof:");
|
instance.analyze("Start AntiSpoof:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
antispoofRes = ((_d = instance.config.face.antispoof) == null ? void 0 : _d.enabled) ? predict4(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
antispoofRes = ((_d = instance.config.face.antispoof) == null ? void 0 : _d.enabled) ? predict4(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:antispoof";
|
instance.state = "run:antispoof";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
antispoofRes = ((_e = instance.config.face.antispoof) == null ? void 0 : _e.enabled) ? await predict4(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
antispoofRes = ((_e = instance.config.face.antispoof) == null ? void 0 : _e.enabled) ? await predict4(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
instance.performance.antispoof = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
instance.performance.antispoof = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End AntiSpoof:");
|
instance.analyze("End AntiSpoof:");
|
||||||
instance.analyze("Start Liveness:");
|
instance.analyze("Start Liveness:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
livenessRes = ((_f = instance.config.face.liveness) == null ? void 0 : _f.enabled) ? predict14(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
livenessRes = ((_f = instance.config.face.liveness) == null ? void 0 : _f.enabled) ? predict14(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:liveness";
|
instance.state = "run:liveness";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
livenessRes = ((_g = instance.config.face.liveness) == null ? void 0 : _g.enabled) ? await predict14(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
livenessRes = ((_g = instance.config.face.liveness) == null ? void 0 : _g.enabled) ? await predict14(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
instance.performance.liveness = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
instance.performance.liveness = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End Liveness:");
|
instance.analyze("End Liveness:");
|
||||||
instance.analyze("Start GEAR:");
|
instance.analyze("Start GEAR:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
gearRes = ((_h = instance.config.face["gear"]) == null ? void 0 : _h.enabled) ? predict(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
gearRes = ((_h = instance.config.face["gear"]) == null ? void 0 : _h.enabled) ? predict(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:gear";
|
instance.state = "run:gear";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
gearRes = ((_i = instance.config.face["gear"]) == null ? void 0 : _i.enabled) ? await predict(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
gearRes = ((_i = instance.config.face["gear"]) == null ? void 0 : _i.enabled) ? await predict(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
instance.performance.gear = Math.trunc(now() - timeStamp);
|
instance.performance.gear = Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End GEAR:");
|
instance.analyze("End GEAR:");
|
||||||
instance.analyze("Start SSRNet:");
|
instance.analyze("Start SSRNet:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
ageRes = ((_j = instance.config.face["ssrnet"]) == null ? void 0 : _j.enabled) ? predict2(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
ageRes = ((_j = instance.config.face["ssrnet"]) == null ? void 0 : _j.enabled) ? predict2(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
genderRes = ((_k = instance.config.face["ssrnet"]) == null ? void 0 : _k.enabled) ? predict3(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
genderRes = ((_k = instance.config.face["ssrnet"]) == null ? void 0 : _k.enabled) ? predict3(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:ssrnet";
|
instance.state = "run:ssrnet";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
ageRes = ((_l = instance.config.face["ssrnet"]) == null ? void 0 : _l.enabled) ? await predict2(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
ageRes = ((_l = instance.config.face["ssrnet"]) == null ? void 0 : _l.enabled) ? await predict2(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
genderRes = ((_m = instance.config.face["ssrnet"]) == null ? void 0 : _m.enabled) ? await predict3(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
genderRes = ((_m = instance.config.face["ssrnet"]) == null ? void 0 : _m.enabled) ? await predict3(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
instance.performance.ssrnet = Math.trunc(now() - timeStamp);
|
instance.performance.ssrnet = Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End SSRNet:");
|
instance.analyze("End SSRNet:");
|
||||||
instance.analyze("Start MobileFaceNet:");
|
instance.analyze("Start MobileFaceNet:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
mobilefacenetRes = ((_n = instance.config.face["mobilefacenet"]) == null ? void 0 : _n.enabled) ? predict9(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
mobilefacenetRes = ((_n = instance.config.face["mobilefacenet"]) == null ? void 0 : _n.enabled) ? predict9(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:mobilefacenet";
|
instance.state = "run:mobilefacenet";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
mobilefacenetRes = ((_o = instance.config.face["mobilefacenet"]) == null ? void 0 : _o.enabled) ? await predict9(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
mobilefacenetRes = ((_o = instance.config.face["mobilefacenet"]) == null ? void 0 : _o.enabled) ? await predict9(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
instance.performance.mobilefacenet = Math.trunc(now() - timeStamp);
|
instance.performance.mobilefacenet = Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End MobileFaceNet:");
|
instance.analyze("End MobileFaceNet:");
|
||||||
instance.analyze("Start Description:");
|
instance.analyze("Start Description:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
descRes = ((_p = instance.config.face.description) == null ? void 0 : _p.enabled) ? predict11(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
descRes = ((_p = instance.config.face.description) == null ? void 0 : _p.enabled) ? predict11(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:description";
|
instance.state = "run:description";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
descRes = ((_q = instance.config.face.description) == null ? void 0 : _q.enabled) ? await predict11(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
descRes = ((_q = instance.config.face.description) == null ? void 0 : _q.enabled) ? await predict11(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
instance.performance.description = env.perfadd ? (instance.performance.description || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
instance.performance.description = env.perfadd ? (instance.performance.description || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End Description:");
|
instance.analyze("End Description:");
|
||||||
|
@ -12119,8 +12125,8 @@ var detectFace = async (instance, input) => {
|
||||||
delete faces[i].annotations.rightEyeIris;
|
delete faces[i].annotations.rightEyeIris;
|
||||||
}
|
}
|
||||||
const irisSize = faces[i].annotations && faces[i].annotations.leftEyeIris && faces[i].annotations.leftEyeIris[0] && faces[i].annotations.rightEyeIris && faces[i].annotations.rightEyeIris[0] && faces[i].annotations.leftEyeIris.length > 0 && faces[i].annotations.rightEyeIris.length > 0 && faces[i].annotations.leftEyeIris[0] !== null && faces[i].annotations.rightEyeIris[0] !== null ? Math.max(Math.abs(faces[i].annotations.leftEyeIris[3][0] - faces[i].annotations.leftEyeIris[1][0]), Math.abs(faces[i].annotations.rightEyeIris[4][1] - faces[i].annotations.rightEyeIris[2][1])) / input.shape[2] : 0;
|
const irisSize = faces[i].annotations && faces[i].annotations.leftEyeIris && faces[i].annotations.leftEyeIris[0] && faces[i].annotations.rightEyeIris && faces[i].annotations.rightEyeIris[0] && faces[i].annotations.leftEyeIris.length > 0 && faces[i].annotations.rightEyeIris.length > 0 && faces[i].annotations.leftEyeIris[0] !== null && faces[i].annotations.rightEyeIris[0] !== null ? Math.max(Math.abs(faces[i].annotations.leftEyeIris[3][0] - faces[i].annotations.leftEyeIris[1][0]), Math.abs(faces[i].annotations.rightEyeIris[4][1] - faces[i].annotations.rightEyeIris[2][1])) / input.shape[2] : 0;
|
||||||
const tensor3 = ((_z = instance.config.face.detector) == null ? void 0 : _z.return) ? tf34.squeeze(faces[i].tensor) : null;
|
const tensor3 = ((_z = instance.config.face.detector) == null ? void 0 : _z.return) ? tf33.squeeze(faces[i].tensor) : null;
|
||||||
tf34.dispose(faces[i].tensor);
|
tf33.dispose(faces[i].tensor);
|
||||||
if (faces[i].tensor)
|
if (faces[i].tensor)
|
||||||
delete faces[i].tensor;
|
delete faces[i].tensor;
|
||||||
const res = {
|
const res = {
|
||||||
|
@ -13234,7 +13240,7 @@ lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/
|
||||||
2Q==`;
|
2Q==`;
|
||||||
|
|
||||||
// src/warmup.ts
|
// src/warmup.ts
|
||||||
var tf35 = __toModule(require_tfjs_esm());
|
var tf34 = __toModule(require_tfjs_esm());
|
||||||
async function warmupBitmap(instance) {
|
async function warmupBitmap(instance) {
|
||||||
const b64toBlob = (base64, type = "application/octet-stream") => fetch(`data:${type};base64,${base64}`).then((res2) => res2.blob());
|
const b64toBlob = (base64, type = "application/octet-stream") => fetch(`data:${type};base64,${base64}`).then((res2) => res2.blob());
|
||||||
let blob;
|
let blob;
|
||||||
|
@ -13306,8 +13312,8 @@ async function warmupNode(instance) {
|
||||||
if (!img)
|
if (!img)
|
||||||
return null;
|
return null;
|
||||||
let res;
|
let res;
|
||||||
if (typeof tf35["node"] !== "undefined") {
|
if (typeof tf34["node"] !== "undefined") {
|
||||||
const data = tf35["node"].decodeJpeg(img);
|
const data = tf34["node"].decodeJpeg(img);
|
||||||
const expanded = data.expandDims(0);
|
const expanded = data.expandDims(0);
|
||||||
instance.tf.dispose(data);
|
instance.tf.dispose(data);
|
||||||
res = await instance.detect(expanded, instance.config);
|
res = await instance.detect(expanded, instance.config);
|
||||||
|
@ -13377,7 +13383,7 @@ var Human = class {
|
||||||
return null;
|
return null;
|
||||||
if (!input)
|
if (!input)
|
||||||
return "input is not defined";
|
return "input is not defined";
|
||||||
if (this.env.node && !(input instanceof tf36.Tensor))
|
if (this.env.node && !(input instanceof tf35.Tensor))
|
||||||
return "input must be a tensor";
|
return "input must be a tensor";
|
||||||
try {
|
try {
|
||||||
this.tf.getBackend();
|
this.tf.getBackend();
|
||||||
|
@ -13395,7 +13401,7 @@ var Human = class {
|
||||||
(_a = this.events) == null ? void 0 : _a.dispatchEvent(new Event(event));
|
(_a = this.events) == null ? void 0 : _a.dispatchEvent(new Event(event));
|
||||||
});
|
});
|
||||||
this.env = env;
|
this.env = env;
|
||||||
config.wasmPath = tf36.version_core.includes("-") ? "https://vladmandic.github.io/tfjs/dist/" : `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${tf36.version_core}/dist/`;
|
config.wasmPath = tf35.version_core.includes("-") ? "https://vladmandic.github.io/tfjs/dist/" : `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${tf35.version_core}/dist/`;
|
||||||
config.modelBasePath = env.browser ? "../models/" : "file://models/";
|
config.modelBasePath = env.browser ? "../models/" : "file://models/";
|
||||||
config.backend = env.browser ? "humangl" : "tensorflow";
|
config.backend = env.browser ? "humangl" : "tensorflow";
|
||||||
this.version = version;
|
this.version = version;
|
||||||
|
@ -13404,7 +13410,7 @@ var Human = class {
|
||||||
Object.seal(this.config);
|
Object.seal(this.config);
|
||||||
if (userConfig)
|
if (userConfig)
|
||||||
this.config = mergeDeep(this.config, userConfig);
|
this.config = mergeDeep(this.config, userConfig);
|
||||||
this.tf = tf36;
|
this.tf = tf35;
|
||||||
this.state = "idle";
|
this.state = "idle";
|
||||||
__privateSet(this, _numTensors, 0);
|
__privateSet(this, _numTensors, 0);
|
||||||
__privateSet(this, _analyzeMemoryLeaks, false);
|
__privateSet(this, _analyzeMemoryLeaks, false);
|
||||||
|
@ -13470,7 +13476,7 @@ var Human = class {
|
||||||
log(`tfjs version: ${this.tf.version_core}`);
|
log(`tfjs version: ${this.tf.version_core}`);
|
||||||
if (!await check(this))
|
if (!await check(this))
|
||||||
log("error: backend check failed");
|
log("error: backend check failed");
|
||||||
await tf36.ready();
|
await tf35.ready();
|
||||||
if (this.env.browser) {
|
if (this.env.browser) {
|
||||||
if (this.config.debug)
|
if (this.config.debug)
|
||||||
log("configuration:", this.config);
|
log("configuration:", this.config);
|
||||||
|
@ -13672,7 +13678,7 @@ var Human = class {
|
||||||
return join2(faceRes, bodyRes, handRes, gestureRes, shape);
|
return join2(faceRes, bodyRes, handRes, gestureRes, shape);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
tf36.dispose(img.tensor);
|
tf35.dispose(img.tensor);
|
||||||
this.emit("detect");
|
this.emit("detect");
|
||||||
this.state = "idle";
|
this.state = "idle";
|
||||||
resolve(this.result);
|
resolve(this.result);
|
||||||
|
|
|
@ -993,9 +993,9 @@ async function histogramEqualization(inputImage) {
|
||||||
const range = [tf.sub(max4[0], min2[0]), tf.sub(max4[1], min2[1]), tf.sub(max4[2], min2[2])];
|
const range = [tf.sub(max4[0], min2[0]), tf.sub(max4[1], min2[1]), tf.sub(max4[2], min2[2])];
|
||||||
const fact = [tf.div(maxValue, range[0]), tf.div(maxValue, range[1]), tf.div(maxValue, range[2])];
|
const fact = [tf.div(maxValue, range[0]), tf.div(maxValue, range[1]), tf.div(maxValue, range[2])];
|
||||||
const enh = [tf.mul(sub9[0], fact[0]), tf.mul(sub9[1], fact[1]), tf.mul(sub9[2], fact[2])];
|
const enh = [tf.mul(sub9[0], fact[0]), tf.mul(sub9[1], fact[1]), tf.mul(sub9[2], fact[2])];
|
||||||
const rgb3 = tf.stack([enh[0], enh[1], enh[2]], 2);
|
const rgb2 = tf.stack([enh[0], enh[1], enh[2]], 2);
|
||||||
const reshape8 = tf.reshape(rgb3, [1, squeeze9.shape[0], squeeze9.shape[1], 3]);
|
const reshape8 = tf.reshape(rgb2, [1, squeeze9.shape[0], squeeze9.shape[1], 3]);
|
||||||
tf.dispose([...channels, ...min2, ...max4, ...sub9, ...range, ...fact, ...enh, rgb3, squeeze9]);
|
tf.dispose([...channels, ...min2, ...max4, ...sub9, ...range, ...fact, ...enh, rgb2, squeeze9]);
|
||||||
return reshape8;
|
return reshape8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1058,9 +1058,9 @@ async function process2(input, config3, getTensor = true) {
|
||||||
if (input.shape[2] === 3) {
|
if (input.shape[2] === 3) {
|
||||||
tensor3 = tf2.expandDims(input, 0);
|
tensor3 = tf2.expandDims(input, 0);
|
||||||
} else if (input.shape[2] === 4) {
|
} else if (input.shape[2] === 4) {
|
||||||
const rgb3 = tf2.slice3d(input, [0, 0, 0], [-1, -1, 3]);
|
const rgb2 = tf2.slice3d(input, [0, 0, 0], [-1, -1, 3]);
|
||||||
tensor3 = tf2.expandDims(rgb3, 0);
|
tensor3 = tf2.expandDims(rgb2, 0);
|
||||||
tf2.dispose(rgb3);
|
tf2.dispose(rgb2);
|
||||||
}
|
}
|
||||||
} else if (input.shape.length === 4) {
|
} else if (input.shape.length === 4) {
|
||||||
if (input.shape[3] === 3) {
|
if (input.shape[3] === 3) {
|
||||||
|
@ -1209,9 +1209,9 @@ async function process2(input, config3, getTensor = true) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (depth === 4) {
|
if (depth === 4) {
|
||||||
const rgb3 = tf2.slice3d(pixels, [0, 0, 0], [-1, -1, 3]);
|
const rgb2 = tf2.slice3d(pixels, [0, 0, 0], [-1, -1, 3]);
|
||||||
tf2.dispose(pixels);
|
tf2.dispose(pixels);
|
||||||
pixels = rgb3;
|
pixels = rgb2;
|
||||||
}
|
}
|
||||||
if (!pixels)
|
if (!pixels)
|
||||||
throw new Error("input error: cannot create tensor");
|
throw new Error("input error: cannot create tensor");
|
||||||
|
@ -1381,13 +1381,13 @@ var Env = class {
|
||||||
var env = new Env();
|
var env = new Env();
|
||||||
|
|
||||||
// src/human.ts
|
// src/human.ts
|
||||||
var tf36 = __toModule(require_tfjs_esm());
|
var tf35 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// package.json
|
// package.json
|
||||||
var version = "2.5.2";
|
var version = "2.5.2";
|
||||||
|
|
||||||
// src/tfjs/humangl.ts
|
// src/tfjs/humangl.ts
|
||||||
var tf31 = __toModule(require_tfjs_esm());
|
var tf30 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/gear/gear.ts
|
// src/gear/gear.ts
|
||||||
var tf4 = __toModule(require_tfjs_esm());
|
var tf4 = __toModule(require_tfjs_esm());
|
||||||
|
@ -1460,12 +1460,22 @@ var tf6 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/tfjs/constants.ts
|
// src/tfjs/constants.ts
|
||||||
var tf5 = __toModule(require_tfjs_esm());
|
var tf5 = __toModule(require_tfjs_esm());
|
||||||
var tf255 = tf5.scalar(255, "float32");
|
var constants = {
|
||||||
var tf1 = tf5.scalar(1, "float32");
|
tf255: 255,
|
||||||
var tf22 = tf5.scalar(2, "float32");
|
tf1: 1,
|
||||||
var tf05 = tf5.scalar(0.5, "float32");
|
tf2: 2,
|
||||||
var tf127 = tf5.scalar(127.5, "float32");
|
tf05: 0.5,
|
||||||
var rgb = tf5.tensor1d([0.2989, 0.587, 0.114], "float32");
|
tf127: 127.5,
|
||||||
|
rgb: [0.2989, 0.587, 0.114]
|
||||||
|
};
|
||||||
|
function init() {
|
||||||
|
constants.tf255 = tf5.scalar(255, "float32");
|
||||||
|
constants.tf1 = tf5.scalar(1, "float32");
|
||||||
|
constants.tf2 = tf5.scalar(2, "float32");
|
||||||
|
constants.tf05 = tf5.scalar(0.5, "float32");
|
||||||
|
constants.tf127 = tf5.scalar(127.5, "float32");
|
||||||
|
constants.rgb = tf5.tensor1d([0.2989, 0.587, 0.114], "float32");
|
||||||
|
}
|
||||||
|
|
||||||
// src/gear/ssrnet-age.ts
|
// src/gear/ssrnet-age.ts
|
||||||
var model2;
|
var model2;
|
||||||
|
@ -1504,7 +1514,7 @@ async function predict2(image29, config3, idx, count2) {
|
||||||
return;
|
return;
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = tf6.image.resizeBilinear(image29, [model2.inputs[0].shape[2], model2.inputs[0].shape[1]], false);
|
t.resize = tf6.image.resizeBilinear(image29, [model2.inputs[0].shape[2], model2.inputs[0].shape[1]], false);
|
||||||
t.enhance = tf6.mul(t.resize, tf255);
|
t.enhance = tf6.mul(t.resize, constants.tf255);
|
||||||
const obj = { age: 0 };
|
const obj = { age: 0 };
|
||||||
if (config3.face["ssrnet"].enabled)
|
if (config3.face["ssrnet"].enabled)
|
||||||
t.age = model2.execute(t.enhance);
|
t.age = model2.execute(t.enhance);
|
||||||
|
@ -1527,7 +1537,7 @@ var last4 = [];
|
||||||
var lastCount3 = 0;
|
var lastCount3 = 0;
|
||||||
var lastTime3 = 0;
|
var lastTime3 = 0;
|
||||||
var skipped3 = Number.MAX_SAFE_INTEGER;
|
var skipped3 = Number.MAX_SAFE_INTEGER;
|
||||||
var rgb2 = [0.2989, 0.587, 0.114];
|
var rgb = [0.2989, 0.587, 0.114];
|
||||||
async function load3(config3) {
|
async function load3(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model3 = null;
|
model3 = null;
|
||||||
|
@ -1559,11 +1569,11 @@ async function predict3(image29, config3, idx, count2) {
|
||||||
t.resize = tf7.image.resizeBilinear(image29, [model3.inputs[0].shape[2], model3.inputs[0].shape[1]], false);
|
t.resize = tf7.image.resizeBilinear(image29, [model3.inputs[0].shape[2], model3.inputs[0].shape[1]], false);
|
||||||
t.enhance = tf7.tidy(() => {
|
t.enhance = tf7.tidy(() => {
|
||||||
const [red, green, blue] = tf7.split(t.resize, 3, 3);
|
const [red, green, blue] = tf7.split(t.resize, 3, 3);
|
||||||
const redNorm = tf7.mul(red, rgb2[0]);
|
const redNorm = tf7.mul(red, rgb[0]);
|
||||||
const greenNorm = tf7.mul(green, rgb2[1]);
|
const greenNorm = tf7.mul(green, rgb[1]);
|
||||||
const blueNorm = tf7.mul(blue, rgb2[2]);
|
const blueNorm = tf7.mul(blue, rgb[2]);
|
||||||
const grayscale = tf7.addN([redNorm, greenNorm, blueNorm]);
|
const grayscale = tf7.addN([redNorm, greenNorm, blueNorm]);
|
||||||
const normalize = tf7.mul(tf7.sub(grayscale, tf05), 2);
|
const normalize = tf7.mul(tf7.sub(grayscale, constants.tf05), 2);
|
||||||
return normalize;
|
return normalize;
|
||||||
});
|
});
|
||||||
const obj = { gender: "", genderScore: 0 };
|
const obj = { gender: "", genderScore: 0 };
|
||||||
|
@ -4937,7 +4947,7 @@ var cutBoxFromImageAndResize = (box4, image29, cropSize) => {
|
||||||
const h = image29.shape[1];
|
const h = image29.shape[1];
|
||||||
const w = image29.shape[2];
|
const w = image29.shape[2];
|
||||||
const crop2 = tf9.image.cropAndResize(image29, [[box4.startPoint[1] / h, box4.startPoint[0] / w, box4.endPoint[1] / h, box4.endPoint[0] / w]], [0], cropSize);
|
const crop2 = tf9.image.cropAndResize(image29, [[box4.startPoint[1] / h, box4.startPoint[0] / w, box4.endPoint[1] / h, box4.endPoint[0] / w]], [0], cropSize);
|
||||||
const norm = tf9.div(crop2, tf255);
|
const norm = tf9.div(crop2, constants.tf255);
|
||||||
tf9.dispose(crop2);
|
tf9.dispose(crop2);
|
||||||
return norm;
|
return norm;
|
||||||
};
|
};
|
||||||
|
@ -5092,7 +5102,7 @@ function decodeBounds(boxOutputs) {
|
||||||
t.boxSizes = tf10.slice(boxOutputs, [0, 3], [-1, 2]);
|
t.boxSizes = tf10.slice(boxOutputs, [0, 3], [-1, 2]);
|
||||||
t.boxSizesNormalized = tf10.div(t.boxSizes, inputSizeT);
|
t.boxSizesNormalized = tf10.div(t.boxSizes, inputSizeT);
|
||||||
t.centersNormalized = tf10.div(t.centers, inputSizeT);
|
t.centersNormalized = tf10.div(t.centers, inputSizeT);
|
||||||
t.halfBoxSize = tf10.div(t.boxSizesNormalized, tf22);
|
t.halfBoxSize = tf10.div(t.boxSizesNormalized, constants.tf2);
|
||||||
t.starts = tf10.sub(t.centersNormalized, t.halfBoxSize);
|
t.starts = tf10.sub(t.centersNormalized, t.halfBoxSize);
|
||||||
t.ends = tf10.add(t.centersNormalized, t.halfBoxSize);
|
t.ends = tf10.add(t.centersNormalized, t.halfBoxSize);
|
||||||
t.startNormalized = tf10.mul(t.starts, inputSizeT);
|
t.startNormalized = tf10.mul(t.starts, inputSizeT);
|
||||||
|
@ -5107,8 +5117,8 @@ async function getBoxes(inputImage, config3) {
|
||||||
return { boxes: [] };
|
return { boxes: [] };
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resized = tf10.image.resizeBilinear(inputImage, [inputSize, inputSize]);
|
t.resized = tf10.image.resizeBilinear(inputImage, [inputSize, inputSize]);
|
||||||
t.div = tf10.div(t.resized, tf127);
|
t.div = tf10.div(t.resized, constants.tf127);
|
||||||
t.normalized = tf10.sub(t.div, tf05);
|
t.normalized = tf10.sub(t.div, constants.tf05);
|
||||||
const res = model5 == null ? void 0 : model5.execute(t.normalized);
|
const res = model5 == null ? void 0 : model5.execute(t.normalized);
|
||||||
if (Array.isArray(res)) {
|
if (Array.isArray(res)) {
|
||||||
const sorted = res.sort((a, b) => a.size - b.size);
|
const sorted = res.sort((a, b) => a.size - b.size);
|
||||||
|
@ -5279,7 +5289,7 @@ async function prepareImage(input) {
|
||||||
];
|
];
|
||||||
t.pad = tf11.pad(input, padding);
|
t.pad = tf11.pad(input, padding);
|
||||||
t.resize = tf11.image.resizeBilinear(t.pad, [inputSize2[1][0], inputSize2[1][1]]);
|
t.resize = tf11.image.resizeBilinear(t.pad, [inputSize2[1][0], inputSize2[1][1]]);
|
||||||
const final = tf11.div(t.resize, tf255);
|
const final = tf11.div(t.resize, constants.tf255);
|
||||||
Object.keys(t).forEach((tensor3) => tf11.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf11.dispose(t[tensor3]));
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
|
@ -5463,26 +5473,20 @@ async function load6(config3) {
|
||||||
async function process3(res, outputShape, config3) {
|
async function process3(res, outputShape, config3) {
|
||||||
if (!res)
|
if (!res)
|
||||||
return [];
|
return [];
|
||||||
|
const t = {};
|
||||||
const results = [];
|
const results = [];
|
||||||
const detections = await res.array();
|
const detections = await res.array();
|
||||||
const squeezeT = tf12.squeeze(res);
|
t.squeeze = tf12.squeeze(res);
|
||||||
tf12.dispose(res);
|
const arr = tf12.split(t.squeeze, 6, 1);
|
||||||
const arr = tf12.split(squeezeT, 6, 1);
|
t.stack = tf12.stack([arr[1], arr[0], arr[3], arr[2]], 1);
|
||||||
tf12.dispose(squeezeT);
|
t.boxes = tf12.squeeze(t.stack);
|
||||||
const stackT = tf12.stack([arr[1], arr[0], arr[3], arr[2]], 1);
|
t.scores = tf12.squeeze(arr[4]);
|
||||||
const boxesT = tf12.squeeze(stackT);
|
t.classes = tf12.squeeze(arr[5]);
|
||||||
tf12.dispose(stackT);
|
tf12.dispose([res, ...arr]);
|
||||||
const scoresT = tf12.squeeze(arr[4]);
|
t.nms = await tf12.image.nonMaxSuppressionAsync(t.boxes, t.scores, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
||||||
const classesT = tf12.squeeze(arr[5]);
|
const nms = await t.nms.data();
|
||||||
arr.forEach((t) => tf12.dispose(t));
|
|
||||||
const nmsT = await tf12.image.nonMaxSuppressionAsync(boxesT, scoresT, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
|
||||||
tf12.dispose(boxesT);
|
|
||||||
tf12.dispose(scoresT);
|
|
||||||
tf12.dispose(classesT);
|
|
||||||
const nms = await nmsT.data();
|
|
||||||
tf12.dispose(nmsT);
|
|
||||||
let i = 0;
|
let i = 0;
|
||||||
for (const id of nms) {
|
for (const id of Array.from(nms)) {
|
||||||
const score = Math.trunc(100 * detections[0][id][4]) / 100;
|
const score = Math.trunc(100 * detections[0][id][4]) / 100;
|
||||||
const classVal = detections[0][id][5];
|
const classVal = detections[0][id][5];
|
||||||
const label = labels[classVal].label;
|
const label = labels[classVal].label;
|
||||||
|
@ -5504,6 +5508,7 @@ async function process3(res, outputShape, config3) {
|
||||||
];
|
];
|
||||||
results.push({ id: i++, score, class: classVal, label, box: box4, boxRaw });
|
results.push({ id: i++, score, class: classVal, label, box: box4, boxRaw });
|
||||||
}
|
}
|
||||||
|
Object.keys(t).forEach((tensor3) => tf12.dispose(t[tensor3]));
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
async function predict6(input, config3) {
|
async function predict6(input, config3) {
|
||||||
|
@ -5611,8 +5616,8 @@ async function predict7(image29, config3) {
|
||||||
if (!(model7 == null ? void 0 : model7.inputs[0].shape))
|
if (!(model7 == null ? void 0 : model7.inputs[0].shape))
|
||||||
return null;
|
return null;
|
||||||
const resize = tf13.image.resizeBilinear(image29, [model7.inputs[0].shape[2], model7.inputs[0].shape[1]], false);
|
const resize = tf13.image.resizeBilinear(image29, [model7.inputs[0].shape[2], model7.inputs[0].shape[1]], false);
|
||||||
const enhance3 = tf13.mul(resize, tf22);
|
const enhance3 = tf13.mul(resize, constants.tf2);
|
||||||
const norm = tf13.sub(enhance3, tf1);
|
const norm = tf13.sub(enhance3, constants.tf1);
|
||||||
return norm;
|
return norm;
|
||||||
});
|
});
|
||||||
let resT;
|
let resT;
|
||||||
|
@ -5716,10 +5721,10 @@ async function predict8(image29, config3, idx, count2) {
|
||||||
const t = {};
|
const t = {};
|
||||||
const inputSize8 = (model8 == null ? void 0 : model8.inputs[0].shape) ? model8.inputs[0].shape[2] : 0;
|
const inputSize8 = (model8 == null ? void 0 : model8.inputs[0].shape) ? model8.inputs[0].shape[2] : 0;
|
||||||
t.resize = tf14.image.resizeBilinear(image29, [inputSize8, inputSize8], false);
|
t.resize = tf14.image.resizeBilinear(image29, [inputSize8, inputSize8], false);
|
||||||
t.channels = tf14.mul(t.resize, rgb);
|
t.channels = tf14.mul(t.resize, constants.rgb);
|
||||||
t.grayscale = tf14.sum(t.channels, 3, true);
|
t.grayscale = tf14.sum(t.channels, 3, true);
|
||||||
t.grayscaleSub = tf14.sub(t.grayscale, tf05);
|
t.grayscaleSub = tf14.sub(t.grayscale, constants.tf05);
|
||||||
t.grayscaleMul = tf14.mul(t.grayscaleSub, tf22);
|
t.grayscaleMul = tf14.mul(t.grayscaleSub, constants.tf2);
|
||||||
t.emotion = model8 == null ? void 0 : model8.execute(t.grayscaleMul);
|
t.emotion = model8 == null ? void 0 : model8.execute(t.grayscaleMul);
|
||||||
lastTime8 = now();
|
lastTime8 = now();
|
||||||
const data = await t.emotion.data();
|
const data = await t.emotion.data();
|
||||||
|
@ -6064,7 +6069,7 @@ function enhance2(input) {
|
||||||
if (!(model12 == null ? void 0 : model12.inputs[0].shape))
|
if (!(model12 == null ? void 0 : model12.inputs[0].shape))
|
||||||
return tensor3;
|
return tensor3;
|
||||||
const crop2 = tf18.image.resizeBilinear(tensor3, [model12.inputs[0].shape[2], model12.inputs[0].shape[1]], false);
|
const crop2 = tf18.image.resizeBilinear(tensor3, [model12.inputs[0].shape[2], model12.inputs[0].shape[1]], false);
|
||||||
const norm = tf18.mul(crop2, tf255);
|
const norm = tf18.mul(crop2, constants.tf255);
|
||||||
tf18.dispose(crop2);
|
tf18.dispose(crop2);
|
||||||
return norm;
|
return norm;
|
||||||
}
|
}
|
||||||
|
@ -6117,7 +6122,7 @@ async function predict11(image29, config3, idx, count2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/hand/handpose.ts
|
// src/hand/handpose.ts
|
||||||
var tf23 = __toModule(require_tfjs_esm());
|
var tf22 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/hand/handposedetector.ts
|
// src/hand/handposedetector.ts
|
||||||
var tf20 = __toModule(require_tfjs_esm());
|
var tf20 = __toModule(require_tfjs_esm());
|
||||||
|
@ -9226,8 +9231,8 @@ var HandDetector = class {
|
||||||
async predict(input, config3) {
|
async predict(input, config3) {
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = tf20.image.resizeBilinear(input, [this.inputSize, this.inputSize]);
|
t.resize = tf20.image.resizeBilinear(input, [this.inputSize, this.inputSize]);
|
||||||
t.div = tf20.div(t.resize, tf127);
|
t.div = tf20.div(t.resize, constants.tf127);
|
||||||
t.image = tf20.sub(t.div, tf1);
|
t.image = tf20.sub(t.div, constants.tf1);
|
||||||
t.batched = this.model.execute(t.image);
|
t.batched = this.model.execute(t.image);
|
||||||
t.predictions = tf20.squeeze(t.batched);
|
t.predictions = tf20.squeeze(t.batched);
|
||||||
t.slice = tf20.slice(t.predictions, [0, 0], [-1, 1]);
|
t.slice = tf20.slice(t.predictions, [0, 0], [-1, 1]);
|
||||||
|
@ -9358,7 +9363,7 @@ var HandPipeline = class {
|
||||||
const rotationMatrix = buildRotationMatrix2(-angle, palmCenter);
|
const rotationMatrix = buildRotationMatrix2(-angle, palmCenter);
|
||||||
const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;
|
const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;
|
||||||
const croppedInput = cutBoxFromImageAndResize2(newBox, rotatedImage, [this.inputSize, this.inputSize]);
|
const croppedInput = cutBoxFromImageAndResize2(newBox, rotatedImage, [this.inputSize, this.inputSize]);
|
||||||
const handImage = tf21.div(croppedInput, tf255);
|
const handImage = tf21.div(croppedInput, constants.tf255);
|
||||||
tf21.dispose(croppedInput);
|
tf21.dispose(croppedInput);
|
||||||
tf21.dispose(rotatedImage);
|
tf21.dispose(rotatedImage);
|
||||||
const [confidenceT, keypoints] = this.handPoseModel.execute(handImage);
|
const [confidenceT, keypoints] = this.handPoseModel.execute(handImage);
|
||||||
|
@ -9888,8 +9893,8 @@ async function load13(config3) {
|
||||||
}
|
}
|
||||||
if (!handDetectorModel || !handPoseModel) {
|
if (!handDetectorModel || !handPoseModel) {
|
||||||
[handDetectorModel, handPoseModel] = await Promise.all([
|
[handDetectorModel, handPoseModel] = await Promise.all([
|
||||||
config3.hand.enabled ? tf23.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""), { fromTFHub: (((_b = config3.hand.detector) == null ? void 0 : _b.modelPath) || "").includes("tfhub.dev") }) : null,
|
config3.hand.enabled ? tf22.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""), { fromTFHub: (((_b = config3.hand.detector) == null ? void 0 : _b.modelPath) || "").includes("tfhub.dev") }) : null,
|
||||||
config3.hand.landmarks ? tf23.loadGraphModel(join(config3.modelBasePath, ((_c = config3.hand.skeleton) == null ? void 0 : _c.modelPath) || ""), { fromTFHub: (((_d = config3.hand.skeleton) == null ? void 0 : _d.modelPath) || "").includes("tfhub.dev") }) : null
|
config3.hand.landmarks ? tf22.loadGraphModel(join(config3.modelBasePath, ((_c = config3.hand.skeleton) == null ? void 0 : _c.modelPath) || ""), { fromTFHub: (((_d = config3.hand.skeleton) == null ? void 0 : _d.modelPath) || "").includes("tfhub.dev") }) : null
|
||||||
]);
|
]);
|
||||||
if (config3.hand.enabled) {
|
if (config3.hand.enabled) {
|
||||||
if (!handDetectorModel || !handDetectorModel["modelUrl"])
|
if (!handDetectorModel || !handDetectorModel["modelUrl"])
|
||||||
|
@ -9947,7 +9952,7 @@ function crop(box4) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/hand/handtrack.ts
|
// src/hand/handtrack.ts
|
||||||
var tf24 = __toModule(require_tfjs_esm());
|
var tf23 = __toModule(require_tfjs_esm());
|
||||||
var models2 = [null, null];
|
var models2 = [null, null];
|
||||||
var modelOutputNodes = ["StatefulPartitionedCall/Postprocessor/Slice", "StatefulPartitionedCall/Postprocessor/ExpandDims_1"];
|
var modelOutputNodes = ["StatefulPartitionedCall/Postprocessor/Slice", "StatefulPartitionedCall/Postprocessor/ExpandDims_1"];
|
||||||
var inputSize6 = [[0, 0], [0, 0]];
|
var inputSize6 = [[0, 0], [0, 0]];
|
||||||
|
@ -9977,7 +9982,7 @@ async function loadDetect2(config3) {
|
||||||
models2[0] = null;
|
models2[0] = null;
|
||||||
if (!models2[0]) {
|
if (!models2[0]) {
|
||||||
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
fakeOps(["tensorlistreserve", "enter", "tensorlistfromtensor", "merge", "loopcond", "switch", "exit", "tensorliststack", "nextiteration", "tensorlistsetitem", "tensorlistgetitem", "reciprocal", "shape", "split", "where"], config3);
|
||||||
models2[0] = await tf24.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""));
|
models2[0] = await tf23.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.detector) == null ? void 0 : _a.modelPath) || ""));
|
||||||
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
const inputs = Object.values(models2[0].modelSignature["inputs"]);
|
||||||
inputSize6[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize6[0][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize6[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize6[0][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
|
@ -9994,7 +9999,7 @@ async function loadSkeleton(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
models2[1] = null;
|
models2[1] = null;
|
||||||
if (!models2[1]) {
|
if (!models2[1]) {
|
||||||
models2[1] = await tf24.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath) || ""));
|
models2[1] = await tf23.loadGraphModel(join(config3.modelBasePath, ((_a = config3.hand.skeleton) == null ? void 0 : _a.modelPath) || ""));
|
||||||
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
const inputs = Object.values(models2[1].modelSignature["inputs"]);
|
||||||
inputSize6[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
inputSize6[1][0] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[1].size) : 0;
|
||||||
inputSize6[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
inputSize6[1][1] = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : 0;
|
||||||
|
@ -10014,27 +10019,27 @@ async function detectHands(input, config3) {
|
||||||
const ratio = (input.shape[2] || 1) / (input.shape[1] || 1);
|
const ratio = (input.shape[2] || 1) / (input.shape[1] || 1);
|
||||||
const height = Math.min(Math.round((input.shape[1] || 0) / 8) * 8, maxDetectorResolution);
|
const height = Math.min(Math.round((input.shape[1] || 0) / 8) * 8, maxDetectorResolution);
|
||||||
const width = Math.round(height * ratio / 8) * 8;
|
const width = Math.round(height * ratio / 8) * 8;
|
||||||
t.resize = tf24.image.resizeBilinear(input, [height, width]);
|
t.resize = tf23.image.resizeBilinear(input, [height, width]);
|
||||||
t.cast = tf24.cast(t.resize, "int32");
|
t.cast = tf23.cast(t.resize, "int32");
|
||||||
[t.rawScores, t.rawBoxes] = await models2[0].executeAsync(t.cast, modelOutputNodes);
|
[t.rawScores, t.rawBoxes] = await models2[0].executeAsync(t.cast, modelOutputNodes);
|
||||||
t.boxes = tf24.squeeze(t.rawBoxes, [0, 2]);
|
t.boxes = tf23.squeeze(t.rawBoxes, [0, 2]);
|
||||||
t.scores = tf24.squeeze(t.rawScores, [0]);
|
t.scores = tf23.squeeze(t.rawScores, [0]);
|
||||||
const classScores = tf24.unstack(t.scores, 1);
|
const classScores = tf23.unstack(t.scores, 1);
|
||||||
tf24.dispose(classScores[faceIndex]);
|
tf23.dispose(classScores[faceIndex]);
|
||||||
classScores.splice(faceIndex, 1);
|
classScores.splice(faceIndex, 1);
|
||||||
t.filtered = tf24.stack(classScores, 1);
|
t.filtered = tf23.stack(classScores, 1);
|
||||||
tf24.dispose(classScores);
|
tf23.dispose(classScores);
|
||||||
t.max = tf24.max(t.filtered, 1);
|
t.max = tf23.max(t.filtered, 1);
|
||||||
t.argmax = tf24.argMax(t.filtered, 1);
|
t.argmax = tf23.argMax(t.filtered, 1);
|
||||||
let id = 0;
|
let id = 0;
|
||||||
t.nms = await tf24.image.nonMaxSuppressionAsync(t.boxes, t.max, config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
t.nms = await tf23.image.nonMaxSuppressionAsync(t.boxes, t.max, config3.hand.maxDetected, config3.hand.iouThreshold, config3.hand.minConfidence);
|
||||||
const nms = await t.nms.data();
|
const nms = await t.nms.data();
|
||||||
const scores = await t.max.data();
|
const scores = await t.max.data();
|
||||||
const classNum = await t.argmax.data();
|
const classNum = await t.argmax.data();
|
||||||
for (const nmsIndex of Array.from(nms)) {
|
for (const nmsIndex of Array.from(nms)) {
|
||||||
const boxSlice = tf24.slice(t.boxes, nmsIndex, 1);
|
const boxSlice = tf23.slice(t.boxes, nmsIndex, 1);
|
||||||
const boxYX = await boxSlice.data();
|
const boxYX = await boxSlice.data();
|
||||||
tf24.dispose(boxSlice);
|
tf23.dispose(boxSlice);
|
||||||
const boxData = [boxYX[1], boxYX[0], boxYX[3] - boxYX[1], boxYX[2] - boxYX[0]];
|
const boxData = [boxYX[1], boxYX[0], boxYX[3] - boxYX[1], boxYX[2] - boxYX[0]];
|
||||||
const boxRaw = scale(boxData, detectorExpandFact);
|
const boxRaw = scale(boxData, detectorExpandFact);
|
||||||
const boxCrop = crop(boxRaw);
|
const boxCrop = crop(boxRaw);
|
||||||
|
@ -10044,7 +10049,7 @@ async function detectHands(input, config3) {
|
||||||
const hand3 = { id: id++, score, box: boxFull, boxRaw, boxCrop, label };
|
const hand3 = { id: id++, score, box: boxFull, boxRaw, boxCrop, label };
|
||||||
hands.push(hand3);
|
hands.push(hand3);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf24.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf23.dispose(t[tensor3]));
|
||||||
hands.sort((a, b) => b.score - a.score);
|
hands.sort((a, b) => b.score - a.score);
|
||||||
if (hands.length > (config3.hand.maxDetected || 1))
|
if (hands.length > (config3.hand.maxDetected || 1))
|
||||||
hands.length = config3.hand.maxDetected || 1;
|
hands.length = config3.hand.maxDetected || 1;
|
||||||
|
@ -10065,14 +10070,14 @@ async function detectFingers(input, h, config3) {
|
||||||
};
|
};
|
||||||
if (input && models2[1] && config3.hand.landmarks && h.score > (config3.hand.minConfidence || 0)) {
|
if (input && models2[1] && config3.hand.landmarks && h.score > (config3.hand.minConfidence || 0)) {
|
||||||
const t = {};
|
const t = {};
|
||||||
t.crop = tf24.image.cropAndResize(input, [h.boxCrop], [0], [inputSize6[1][0], inputSize6[1][1]], "bilinear");
|
t.crop = tf23.image.cropAndResize(input, [h.boxCrop], [0], [inputSize6[1][0], inputSize6[1][1]], "bilinear");
|
||||||
t.div = tf24.div(t.crop, tf255);
|
t.div = tf23.div(t.crop, constants.tf255);
|
||||||
[t.score, t.keypoints] = models2[1].execute(t.div, ["Identity_1", "Identity"]);
|
[t.score, t.keypoints] = models2[1].execute(t.div, ["Identity_1", "Identity"]);
|
||||||
const rawScore = (await t.score.data())[0];
|
const rawScore = (await t.score.data())[0];
|
||||||
const score = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
const score = (100 - Math.trunc(100 / (1 + Math.exp(rawScore)))) / 100;
|
||||||
if (score >= (config3.hand.minConfidence || 0)) {
|
if (score >= (config3.hand.minConfidence || 0)) {
|
||||||
hand3.fingerScore = score;
|
hand3.fingerScore = score;
|
||||||
t.reshaped = tf24.reshape(t.keypoints, [-1, 3]);
|
t.reshaped = tf23.reshape(t.keypoints, [-1, 3]);
|
||||||
const coordsData = await t.reshaped.array();
|
const coordsData = await t.reshaped.array();
|
||||||
const coordsRaw = coordsData.map((kpt4) => [kpt4[0] / inputSize6[1][1], kpt4[1] / inputSize6[1][0], kpt4[2] || 0]);
|
const coordsRaw = coordsData.map((kpt4) => [kpt4[0] / inputSize6[1][1], kpt4[1] / inputSize6[1][0], kpt4[2] || 0]);
|
||||||
const coordsNorm = coordsRaw.map((kpt4) => [kpt4[0] * h.boxRaw[2], kpt4[1] * h.boxRaw[3], kpt4[2] || 0]);
|
const coordsNorm = coordsRaw.map((kpt4) => [kpt4[0] * h.boxRaw[2], kpt4[1] * h.boxRaw[3], kpt4[2] || 0]);
|
||||||
|
@ -10086,7 +10091,7 @@ async function detectFingers(input, h, config3) {
|
||||||
hand3.annotations[key] = fingerMap[key].map((index2) => hand3.landmarks && hand3.keypoints[index2] ? hand3.keypoints[index2] : null);
|
hand3.annotations[key] = fingerMap[key].map((index2) => hand3.landmarks && hand3.keypoints[index2] ? hand3.keypoints[index2] : null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf24.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf23.dispose(t[tensor3]));
|
||||||
}
|
}
|
||||||
return hand3;
|
return hand3;
|
||||||
}
|
}
|
||||||
|
@ -10137,7 +10142,7 @@ async function predict13(input, config3) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/face/liveness.ts
|
// src/face/liveness.ts
|
||||||
var tf25 = __toModule(require_tfjs_esm());
|
var tf24 = __toModule(require_tfjs_esm());
|
||||||
var model13;
|
var model13;
|
||||||
var cached2 = [];
|
var cached2 = [];
|
||||||
var skipped13 = Number.MAX_SAFE_INTEGER;
|
var skipped13 = Number.MAX_SAFE_INTEGER;
|
||||||
|
@ -10148,7 +10153,7 @@ async function load14(config3) {
|
||||||
if (env.initial)
|
if (env.initial)
|
||||||
model13 = null;
|
model13 = null;
|
||||||
if (!model13) {
|
if (!model13) {
|
||||||
model13 = await tf25.loadGraphModel(join(config3.modelBasePath, ((_a = config3.face.liveness) == null ? void 0 : _a.modelPath) || ""));
|
model13 = await tf24.loadGraphModel(join(config3.modelBasePath, ((_a = config3.face.liveness) == null ? void 0 : _a.modelPath) || ""));
|
||||||
if (!model13 || !model13["modelUrl"])
|
if (!model13 || !model13["modelUrl"])
|
||||||
log("load model failed:", (_b = config3.face.liveness) == null ? void 0 : _b.modelPath);
|
log("load model failed:", (_b = config3.face.liveness) == null ? void 0 : _b.modelPath);
|
||||||
else if (config3.debug)
|
else if (config3.debug)
|
||||||
|
@ -10169,19 +10174,19 @@ async function predict14(image29, config3, idx, count2) {
|
||||||
}
|
}
|
||||||
skipped13 = 0;
|
skipped13 = 0;
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
const resize = tf25.image.resizeBilinear(image29, [(model13 == null ? void 0 : model13.inputs[0].shape) ? model13.inputs[0].shape[2] : 0, (model13 == null ? void 0 : model13.inputs[0].shape) ? model13.inputs[0].shape[1] : 0], false);
|
const resize = tf24.image.resizeBilinear(image29, [(model13 == null ? void 0 : model13.inputs[0].shape) ? model13.inputs[0].shape[2] : 0, (model13 == null ? void 0 : model13.inputs[0].shape) ? model13.inputs[0].shape[1] : 0], false);
|
||||||
const res = model13 == null ? void 0 : model13.execute(resize);
|
const res = model13 == null ? void 0 : model13.execute(resize);
|
||||||
const num = (await res.data())[0];
|
const num = (await res.data())[0];
|
||||||
cached2[idx] = Math.round(100 * num) / 100;
|
cached2[idx] = Math.round(100 * num) / 100;
|
||||||
lastCount8 = count2;
|
lastCount8 = count2;
|
||||||
lastTime14 = now();
|
lastTime14 = now();
|
||||||
tf25.dispose([resize, res]);
|
tf24.dispose([resize, res]);
|
||||||
resolve(cached2[idx]);
|
resolve(cached2[idx]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/body/movenet.ts
|
// src/body/movenet.ts
|
||||||
var tf27 = __toModule(require_tfjs_esm());
|
var tf26 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/body/movenetcoords.ts
|
// src/body/movenetcoords.ts
|
||||||
var movenetcoords_exports = {};
|
var movenetcoords_exports = {};
|
||||||
|
@ -10241,7 +10246,7 @@ var connected3 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// src/body/movenetfix.ts
|
// src/body/movenetfix.ts
|
||||||
var tf26 = __toModule(require_tfjs_esm());
|
var tf25 = __toModule(require_tfjs_esm());
|
||||||
var maxJitter = 5e-3;
|
var maxJitter = 5e-3;
|
||||||
var cache4 = {
|
var cache4 = {
|
||||||
keypoints: [],
|
keypoints: [],
|
||||||
|
@ -10315,10 +10320,10 @@ function padInput(input, inputSize8) {
|
||||||
[input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0, input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0],
|
[input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0, input.shape[1] > input.shape[2] ? Math.trunc((input.shape[1] - input.shape[2]) / 2) : 0],
|
||||||
[0, 0]
|
[0, 0]
|
||||||
];
|
];
|
||||||
t.pad = tf26.pad(input, cache4.padding);
|
t.pad = tf25.pad(input, cache4.padding);
|
||||||
t.resize = tf26.image.resizeBilinear(t.pad, [inputSize8, inputSize8]);
|
t.resize = tf25.image.resizeBilinear(t.pad, [inputSize8, inputSize8]);
|
||||||
const final = tf26.cast(t.resize, "int32");
|
const final = tf25.cast(t.resize, "int32");
|
||||||
Object.keys(t).forEach((tensor3) => tf26.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf25.dispose(t[tensor3]));
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
function rescaleBody(body4, outputSize2) {
|
function rescaleBody(body4, outputSize2) {
|
||||||
|
@ -10353,7 +10358,7 @@ async function load15(config3) {
|
||||||
model14 = null;
|
model14 = null;
|
||||||
if (!model14) {
|
if (!model14) {
|
||||||
fakeOps(["size"], config3);
|
fakeOps(["size"], config3);
|
||||||
model14 = await tf27.loadGraphModel(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model14 = await tf26.loadGraphModel(join(config3.modelBasePath, config3.body.modelPath || ""));
|
||||||
if (!model14 || !model14["modelUrl"])
|
if (!model14 || !model14["modelUrl"])
|
||||||
log("load model failed:", config3.body.modelPath);
|
log("load model failed:", config3.body.modelPath);
|
||||||
else if (config3.debug)
|
else if (config3.debug)
|
||||||
|
@ -10465,13 +10470,13 @@ async function predict15(input, config3) {
|
||||||
rescaleBody(body4, [input.shape[2] || 1, input.shape[1] || 1]);
|
rescaleBody(body4, [input.shape[2] || 1, input.shape[1] || 1]);
|
||||||
jitter(body4.keypoints);
|
jitter(body4.keypoints);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf27.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf26.dispose(t[tensor3]));
|
||||||
resolve(cache5.bodies);
|
resolve(cache5.bodies);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/object/nanodet.ts
|
// src/object/nanodet.ts
|
||||||
var tf28 = __toModule(require_tfjs_esm());
|
var tf27 = __toModule(require_tfjs_esm());
|
||||||
var model15;
|
var model15;
|
||||||
var last9 = [];
|
var last9 = [];
|
||||||
var lastTime15 = 0;
|
var lastTime15 = 0;
|
||||||
|
@ -10479,7 +10484,7 @@ var skipped15 = Number.MAX_SAFE_INTEGER;
|
||||||
var scaleBox = 2.5;
|
var scaleBox = 2.5;
|
||||||
async function load16(config3) {
|
async function load16(config3) {
|
||||||
if (!model15 || env.initial) {
|
if (!model15 || env.initial) {
|
||||||
model15 = await tf28.loadGraphModel(join(config3.modelBasePath, config3.object.modelPath || ""));
|
model15 = await tf27.loadGraphModel(join(config3.modelBasePath, config3.object.modelPath || ""));
|
||||||
const inputs = Object.values(model15.modelSignature["inputs"]);
|
const inputs = Object.values(model15.modelSignature["inputs"]);
|
||||||
model15.inputSize = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : null;
|
model15.inputSize = Array.isArray(inputs) ? parseInt(inputs[0].tensorShape.dim[2].size) : null;
|
||||||
if (!model15 || !model15.modelUrl)
|
if (!model15 || !model15.modelUrl)
|
||||||
|
@ -10494,7 +10499,7 @@ async function process4(res, inputSize8, outputShape, config3) {
|
||||||
let id = 0;
|
let id = 0;
|
||||||
let results = [];
|
let results = [];
|
||||||
for (const strideSize of [1, 2, 4]) {
|
for (const strideSize of [1, 2, 4]) {
|
||||||
tf28.tidy(async () => {
|
tf27.tidy(async () => {
|
||||||
var _a, _b;
|
var _a, _b;
|
||||||
const baseSize = strideSize * 13;
|
const baseSize = strideSize * 13;
|
||||||
const scoresT = (_a = res.find((a) => a.shape[1] === baseSize ** 2 && a.shape[2] === labels.length)) == null ? void 0 : _a.squeeze();
|
const scoresT = (_a = res.find((a) => a.shape[1] === baseSize ** 2 && a.shape[2] === labels.length)) == null ? void 0 : _a.squeeze();
|
||||||
|
@ -10539,14 +10544,14 @@ async function process4(res, inputSize8, outputShape, config3) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
res.forEach((t) => tf28.dispose(t));
|
res.forEach((t) => tf27.dispose(t));
|
||||||
const nmsBoxes = results.map((a) => [a.boxRaw[1], a.boxRaw[0], a.boxRaw[3], a.boxRaw[2]]);
|
const nmsBoxes = results.map((a) => [a.boxRaw[1], a.boxRaw[0], a.boxRaw[3], a.boxRaw[2]]);
|
||||||
const nmsScores = results.map((a) => a.score);
|
const nmsScores = results.map((a) => a.score);
|
||||||
let nmsIdx = [];
|
let nmsIdx = [];
|
||||||
if (nmsBoxes && nmsBoxes.length > 0) {
|
if (nmsBoxes && nmsBoxes.length > 0) {
|
||||||
const nms = await tf28.image.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
const nms = await tf27.image.nonMaxSuppressionAsync(nmsBoxes, nmsScores, config3.object.maxDetected, config3.object.iouThreshold, config3.object.minConfidence);
|
||||||
nmsIdx = await nms.data();
|
nmsIdx = await nms.data();
|
||||||
tf28.dispose(nms);
|
tf27.dispose(nms);
|
||||||
}
|
}
|
||||||
results = results.filter((_val, idx) => nmsIdx.includes(idx)).sort((a, b) => b.score - a.score);
|
results = results.filter((_val, idx) => nmsIdx.includes(idx)).sort((a, b) => b.score - a.score);
|
||||||
return results;
|
return results;
|
||||||
|
@ -10563,16 +10568,16 @@ async function predict16(image29, config3) {
|
||||||
return last9;
|
return last9;
|
||||||
return new Promise(async (resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
const outputSize2 = [image29.shape[2], image29.shape[1]];
|
const outputSize2 = [image29.shape[2], image29.shape[1]];
|
||||||
const resize = tf28.image.resizeBilinear(image29, [model15.inputSize, model15.inputSize], false);
|
const resize = tf27.image.resizeBilinear(image29, [model15.inputSize, model15.inputSize], false);
|
||||||
const norm = tf28.div(resize, tf255);
|
const norm = tf27.div(resize, constants.tf255);
|
||||||
const transpose = norm.transpose([0, 3, 1, 2]);
|
const transpose = norm.transpose([0, 3, 1, 2]);
|
||||||
tf28.dispose(norm);
|
tf27.dispose(norm);
|
||||||
tf28.dispose(resize);
|
tf27.dispose(resize);
|
||||||
let objectT;
|
let objectT;
|
||||||
if (config3.object.enabled)
|
if (config3.object.enabled)
|
||||||
objectT = model15.execute(transpose);
|
objectT = model15.execute(transpose);
|
||||||
lastTime15 = now();
|
lastTime15 = now();
|
||||||
tf28.dispose(transpose);
|
tf27.dispose(transpose);
|
||||||
const obj = await process4(objectT, model15.inputSize, outputSize2, config3);
|
const obj = await process4(objectT, model15.inputSize, outputSize2, config3);
|
||||||
last9 = obj;
|
last9 = obj;
|
||||||
resolve(obj);
|
resolve(obj);
|
||||||
|
@ -10580,7 +10585,7 @@ async function predict16(image29, config3) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/body/posenet.ts
|
// src/body/posenet.ts
|
||||||
var tf29 = __toModule(require_tfjs_esm());
|
var tf28 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/body/posenetutils.ts
|
// src/body/posenetutils.ts
|
||||||
var partNames = [
|
var partNames = [
|
||||||
|
@ -10891,19 +10896,19 @@ function decode(offsets, scores, displacementsFwd, displacementsBwd, maxDetected
|
||||||
return poses;
|
return poses;
|
||||||
}
|
}
|
||||||
async function predict17(input, config3) {
|
async function predict17(input, config3) {
|
||||||
const res = tf29.tidy(() => {
|
const res = tf28.tidy(() => {
|
||||||
if (!model16.inputs[0].shape)
|
if (!model16.inputs[0].shape)
|
||||||
return [];
|
return [];
|
||||||
const resized = tf29.image.resizeBilinear(input, [model16.inputs[0].shape[2], model16.inputs[0].shape[1]]);
|
const resized = tf28.image.resizeBilinear(input, [model16.inputs[0].shape[2], model16.inputs[0].shape[1]]);
|
||||||
const normalized = tf29.sub(tf29.div(tf29.cast(resized, "float32"), 127.5), 1);
|
const normalized = tf28.sub(tf28.div(tf28.cast(resized, "float32"), 127.5), 1);
|
||||||
const results = model16.execute(normalized, poseNetOutputs);
|
const results = model16.execute(normalized, poseNetOutputs);
|
||||||
const results3d = results.map((y) => tf29.squeeze(y, [0]));
|
const results3d = results.map((y) => tf28.squeeze(y, [0]));
|
||||||
results3d[1] = results3d[1].sigmoid();
|
results3d[1] = results3d[1].sigmoid();
|
||||||
return results3d;
|
return results3d;
|
||||||
});
|
});
|
||||||
const buffers = await Promise.all(res.map((tensor3) => tensor3.buffer()));
|
const buffers = await Promise.all(res.map((tensor3) => tensor3.buffer()));
|
||||||
for (const t of res)
|
for (const t of res)
|
||||||
tf29.dispose(t);
|
tf28.dispose(t);
|
||||||
const decoded = await decode(buffers[0], buffers[1], buffers[2], buffers[3], config3.body.maxDetected, config3.body.minConfidence);
|
const decoded = await decode(buffers[0], buffers[1], buffers[2], buffers[3], config3.body.maxDetected, config3.body.minConfidence);
|
||||||
if (!model16.inputs[0].shape)
|
if (!model16.inputs[0].shape)
|
||||||
return [];
|
return [];
|
||||||
|
@ -10912,7 +10917,7 @@ async function predict17(input, config3) {
|
||||||
}
|
}
|
||||||
async function load17(config3) {
|
async function load17(config3) {
|
||||||
if (!model16 || env.initial) {
|
if (!model16 || env.initial) {
|
||||||
model16 = await tf29.loadGraphModel(join(config3.modelBasePath, config3.body.modelPath || ""));
|
model16 = await tf28.loadGraphModel(join(config3.modelBasePath, config3.body.modelPath || ""));
|
||||||
if (!model16 || !model16["modelUrl"])
|
if (!model16 || !model16["modelUrl"])
|
||||||
log("load model failed:", config3.body.modelPath);
|
log("load model failed:", config3.body.modelPath);
|
||||||
else if (config3.debug)
|
else if (config3.debug)
|
||||||
|
@ -10923,12 +10928,12 @@ async function load17(config3) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/segmentation/segmentation.ts
|
// src/segmentation/segmentation.ts
|
||||||
var tf30 = __toModule(require_tfjs_esm());
|
var tf29 = __toModule(require_tfjs_esm());
|
||||||
var model17;
|
var model17;
|
||||||
var busy = false;
|
var busy = false;
|
||||||
async function load18(config3) {
|
async function load18(config3) {
|
||||||
if (!model17 || env.initial) {
|
if (!model17 || env.initial) {
|
||||||
model17 = await tf30.loadGraphModel(join(config3.modelBasePath, config3.segmentation.modelPath || ""));
|
model17 = await tf29.loadGraphModel(join(config3.modelBasePath, config3.segmentation.modelPath || ""));
|
||||||
if (!model17 || !model17["modelUrl"])
|
if (!model17 || !model17["modelUrl"])
|
||||||
log("load model failed:", config3.segmentation.modelPath);
|
log("load model failed:", config3.segmentation.modelPath);
|
||||||
else if (config3.debug)
|
else if (config3.debug)
|
||||||
|
@ -10950,30 +10955,30 @@ async function process5(input, background, config3) {
|
||||||
if (!inputImage.tensor)
|
if (!inputImage.tensor)
|
||||||
return { data: [], canvas: null, alpha: null };
|
return { data: [], canvas: null, alpha: null };
|
||||||
const t = {};
|
const t = {};
|
||||||
t.resize = tf30.image.resizeBilinear(inputImage.tensor, [model17.inputs[0].shape ? model17.inputs[0].shape[1] : 0, model17.inputs[0].shape ? model17.inputs[0].shape[2] : 0], false);
|
t.resize = tf29.image.resizeBilinear(inputImage.tensor, [model17.inputs[0].shape ? model17.inputs[0].shape[1] : 0, model17.inputs[0].shape ? model17.inputs[0].shape[2] : 0], false);
|
||||||
tf30.dispose(inputImage.tensor);
|
tf29.dispose(inputImage.tensor);
|
||||||
t.norm = tf30.div(t.resize, tf255);
|
t.norm = tf29.div(t.resize, constants.tf255);
|
||||||
t.res = model17.execute(t.norm);
|
t.res = model17.execute(t.norm);
|
||||||
t.squeeze = tf30.squeeze(t.res, 0);
|
t.squeeze = tf29.squeeze(t.res, 0);
|
||||||
if (t.squeeze.shape[2] === 2) {
|
if (t.squeeze.shape[2] === 2) {
|
||||||
t.softmax = tf30.softmax(t.squeeze);
|
t.softmax = tf29.softmax(t.squeeze);
|
||||||
[t.bg, t.fg] = tf30.unstack(t.softmax, 2);
|
[t.bg, t.fg] = tf29.unstack(t.softmax, 2);
|
||||||
t.expand = tf30.expandDims(t.fg, 2);
|
t.expand = tf29.expandDims(t.fg, 2);
|
||||||
t.pad = tf30.expandDims(t.expand, 0);
|
t.pad = tf29.expandDims(t.expand, 0);
|
||||||
t.crop = tf30.image.cropAndResize(t.pad, [[0, 0, 0.5, 0.5]], [0], [width, height]);
|
t.crop = tf29.image.cropAndResize(t.pad, [[0, 0, 0.5, 0.5]], [0], [width, height]);
|
||||||
t.data = tf30.squeeze(t.crop, 0);
|
t.data = tf29.squeeze(t.crop, 0);
|
||||||
} else {
|
} else {
|
||||||
t.data = tf30.image.resizeBilinear(t.squeeze, [height, width]);
|
t.data = tf29.image.resizeBilinear(t.squeeze, [height, width]);
|
||||||
}
|
}
|
||||||
const data = Array.from(await t.data.data());
|
const data = Array.from(await t.data.data());
|
||||||
if (env.node && !env.Canvas && typeof ImageData === "undefined") {
|
if (env.node && !env.Canvas && typeof ImageData === "undefined") {
|
||||||
if (config3.debug)
|
if (config3.debug)
|
||||||
log("canvas support missing");
|
log("canvas support missing");
|
||||||
Object.keys(t).forEach((tensor3) => tf30.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf29.dispose(t[tensor3]));
|
||||||
return { data, canvas: null, alpha: null };
|
return { data, canvas: null, alpha: null };
|
||||||
}
|
}
|
||||||
const alphaCanvas = canvas(width, height);
|
const alphaCanvas = canvas(width, height);
|
||||||
await tf30.browser.toPixels(t.data, alphaCanvas);
|
await tf29.browser.toPixels(t.data, alphaCanvas);
|
||||||
const alphaCtx = alphaCanvas.getContext("2d");
|
const alphaCtx = alphaCanvas.getContext("2d");
|
||||||
if (config3.segmentation.blur && config3.segmentation.blur > 0)
|
if (config3.segmentation.blur && config3.segmentation.blur > 0)
|
||||||
alphaCtx.filter = `blur(${config3.segmentation.blur}px)`;
|
alphaCtx.filter = `blur(${config3.segmentation.blur}px)`;
|
||||||
|
@ -10996,12 +11001,12 @@ async function process5(input, background, config3) {
|
||||||
if (background && compositeCanvas) {
|
if (background && compositeCanvas) {
|
||||||
mergedCanvas = canvas(width, height);
|
mergedCanvas = canvas(width, height);
|
||||||
const bgImage = await process2(background, config3);
|
const bgImage = await process2(background, config3);
|
||||||
tf30.dispose(bgImage.tensor);
|
tf29.dispose(bgImage.tensor);
|
||||||
const ctxMerge = mergedCanvas.getContext("2d");
|
const ctxMerge = mergedCanvas.getContext("2d");
|
||||||
ctxMerge.drawImage(bgImage.canvas, 0, 0, mergedCanvas.width, mergedCanvas.height);
|
ctxMerge.drawImage(bgImage.canvas, 0, 0, mergedCanvas.width, mergedCanvas.height);
|
||||||
ctxMerge.drawImage(compositeCanvas, 0, 0);
|
ctxMerge.drawImage(compositeCanvas, 0, 0);
|
||||||
}
|
}
|
||||||
Object.keys(t).forEach((tensor3) => tf30.dispose(t[tensor3]));
|
Object.keys(t).forEach((tensor3) => tf29.dispose(t[tensor3]));
|
||||||
busy = false;
|
busy = false;
|
||||||
return { data, canvas: compositeCanvas, alpha: alphaCanvas };
|
return { data, canvas: compositeCanvas, alpha: alphaCanvas };
|
||||||
}
|
}
|
||||||
|
@ -11163,11 +11168,11 @@ async function register(instance) {
|
||||||
var _a;
|
var _a;
|
||||||
if (instance.config.backend !== "humangl")
|
if (instance.config.backend !== "humangl")
|
||||||
return;
|
return;
|
||||||
if (config2.name in tf31.engine().registry && (!config2.gl || !config2.gl.getParameter(config2.gl.VERSION))) {
|
if (config2.name in tf30.engine().registry && (!config2.gl || !config2.gl.getParameter(config2.gl.VERSION))) {
|
||||||
log("error: humangl backend invalid context");
|
log("error: humangl backend invalid context");
|
||||||
reset(instance);
|
reset(instance);
|
||||||
}
|
}
|
||||||
if (!tf31.findBackend(config2.name)) {
|
if (!tf30.findBackend(config2.name)) {
|
||||||
try {
|
try {
|
||||||
config2.canvas = await canvas(100, 100);
|
config2.canvas = await canvas(100, 100);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
@ -11201,29 +11206,29 @@ async function register(instance) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
tf31.setWebGLContext(2, config2.gl);
|
tf30.setWebGLContext(2, config2.gl);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot set WebGL context:", err);
|
log("error: cannot set WebGL context:", err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const ctx = new tf31.GPGPUContext(config2.gl);
|
const ctx = new tf30.GPGPUContext(config2.gl);
|
||||||
tf31.registerBackend(config2.name, () => new tf31.MathBackendWebGL(ctx), config2.priority);
|
tf30.registerBackend(config2.name, () => new tf30.MathBackendWebGL(ctx), config2.priority);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot register WebGL backend:", err);
|
log("error: cannot register WebGL backend:", err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const kernels = tf31.getKernelsForBackend("webgl");
|
const kernels = tf30.getKernelsForBackend("webgl");
|
||||||
kernels.forEach((kernelConfig) => {
|
kernels.forEach((kernelConfig) => {
|
||||||
const newKernelConfig = { ...kernelConfig, backendName: config2.name };
|
const newKernelConfig = { ...kernelConfig, backendName: config2.name };
|
||||||
tf31.registerKernel(newKernelConfig);
|
tf30.registerKernel(newKernelConfig);
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot update WebGL backend registration:", err);
|
log("error: cannot update WebGL backend registration:", err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const current = tf31.backend().getGPGPUContext ? tf31.backend().getGPGPUContext().gl : null;
|
const current = tf30.backend().getGPGPUContext ? tf30.backend().getGPGPUContext().gl : null;
|
||||||
if (current) {
|
if (current) {
|
||||||
log(`humangl webgl version:${current.getParameter(current.VERSION)} renderer:${current.getParameter(current.RENDERER)}`);
|
log(`humangl webgl version:${current.getParameter(current.VERSION)} renderer:${current.getParameter(current.RENDERER)}`);
|
||||||
} else {
|
} else {
|
||||||
|
@ -11231,7 +11236,7 @@ async function register(instance) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
tf31.ENV.set("WEBGL_VERSION", 2);
|
tf30.ENV.set("WEBGL_VERSION", 2);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot set WebGL backend flags:", err);
|
log("error: cannot set WebGL backend flags:", err);
|
||||||
return;
|
return;
|
||||||
|
@ -11242,30 +11247,30 @@ async function register(instance) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/tfjs/backend.ts
|
// src/tfjs/backend.ts
|
||||||
var tf32 = __toModule(require_tfjs_esm());
|
var tf31 = __toModule(require_tfjs_esm());
|
||||||
function registerCustomOps() {
|
function registerCustomOps() {
|
||||||
if (!env.kernels.includes("mod")) {
|
if (!env.kernels.includes("mod")) {
|
||||||
const kernelMod = {
|
const kernelMod = {
|
||||||
kernelName: "Mod",
|
kernelName: "Mod",
|
||||||
backendName: tf32.getBackend(),
|
backendName: tf31.getBackend(),
|
||||||
kernelFunc: (op) => tf32.tidy(() => tf32.sub(op.inputs.a, tf32.mul(tf32.div(op.inputs.a, op.inputs.b), op.inputs.b)))
|
kernelFunc: (op) => tf31.tidy(() => tf31.sub(op.inputs.a, tf31.mul(tf31.div(op.inputs.a, op.inputs.b), op.inputs.b)))
|
||||||
};
|
};
|
||||||
tf32.registerKernel(kernelMod);
|
tf31.registerKernel(kernelMod);
|
||||||
env.kernels.push("mod");
|
env.kernels.push("mod");
|
||||||
}
|
}
|
||||||
if (!env.kernels.includes("floormod")) {
|
if (!env.kernels.includes("floormod")) {
|
||||||
const kernelMod = {
|
const kernelMod = {
|
||||||
kernelName: "FloorMod",
|
kernelName: "FloorMod",
|
||||||
backendName: tf32.getBackend(),
|
backendName: tf31.getBackend(),
|
||||||
kernelFunc: (op) => tf32.tidy(() => tf32.floorDiv(op.inputs.a / op.inputs.b) * op.inputs.b + tf32.mod(op.inputs.a, op.inputs.b))
|
kernelFunc: (op) => tf31.tidy(() => tf31.floorDiv(op.inputs.a / op.inputs.b) * op.inputs.b + tf31.mod(op.inputs.a, op.inputs.b))
|
||||||
};
|
};
|
||||||
tf32.registerKernel(kernelMod);
|
tf31.registerKernel(kernelMod);
|
||||||
env.kernels.push("floormod");
|
env.kernels.push("floormod");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function check(instance, force = false) {
|
async function check(instance, force = false) {
|
||||||
instance.state = "backend";
|
instance.state = "backend";
|
||||||
if (force || env.initial || instance.config.backend && instance.config.backend.length > 0 && tf32.getBackend() !== instance.config.backend) {
|
if (force || env.initial || instance.config.backend && instance.config.backend.length > 0 && tf31.getBackend() !== instance.config.backend) {
|
||||||
const timeStamp = now();
|
const timeStamp = now();
|
||||||
if (instance.config.backend && instance.config.backend.length > 0) {
|
if (instance.config.backend && instance.config.backend.length > 0) {
|
||||||
if (typeof window === "undefined" && typeof WorkerGlobalScope !== "undefined" && instance.config.debug) {
|
if (typeof window === "undefined" && typeof WorkerGlobalScope !== "undefined" && instance.config.debug) {
|
||||||
|
@ -11294,7 +11299,7 @@ async function check(instance, force = false) {
|
||||||
}
|
}
|
||||||
if (instance.config.backend === "humangl")
|
if (instance.config.backend === "humangl")
|
||||||
await register(instance);
|
await register(instance);
|
||||||
const available = Object.keys(tf32.engine().registryFactory);
|
const available = Object.keys(tf31.engine().registryFactory);
|
||||||
if (instance.config.debug)
|
if (instance.config.debug)
|
||||||
log("available backends:", available);
|
log("available backends:", available);
|
||||||
if (!available.includes(instance.config.backend)) {
|
if (!available.includes(instance.config.backend)) {
|
||||||
|
@ -11308,46 +11313,47 @@ async function check(instance, force = false) {
|
||||||
if (instance.config.backend === "wasm") {
|
if (instance.config.backend === "wasm") {
|
||||||
if (instance.config.debug)
|
if (instance.config.debug)
|
||||||
log("wasm path:", instance.config.wasmPath);
|
log("wasm path:", instance.config.wasmPath);
|
||||||
if (typeof (tf32 == null ? void 0 : tf32.setWasmPaths) !== "undefined")
|
if (typeof (tf31 == null ? void 0 : tf31.setWasmPaths) !== "undefined")
|
||||||
await tf32.setWasmPaths(instance.config.wasmPath);
|
await tf31.setWasmPaths(instance.config.wasmPath);
|
||||||
else
|
else
|
||||||
throw new Error("backend error: attempting to use wasm backend but wasm path is not set");
|
throw new Error("backend error: attempting to use wasm backend but wasm path is not set");
|
||||||
const simd = await tf32.env().getAsync("WASM_HAS_SIMD_SUPPORT");
|
const simd = await tf31.env().getAsync("WASM_HAS_SIMD_SUPPORT");
|
||||||
const mt = await tf32.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");
|
const mt = await tf31.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");
|
||||||
if (instance.config.debug)
|
if (instance.config.debug)
|
||||||
log(`wasm execution: ${simd ? "SIMD" : "no SIMD"} ${mt ? "multithreaded" : "singlethreaded"}`);
|
log(`wasm execution: ${simd ? "SIMD" : "no SIMD"} ${mt ? "multithreaded" : "singlethreaded"}`);
|
||||||
if (instance.config.debug && !simd)
|
if (instance.config.debug && !simd)
|
||||||
log("warning: wasm simd support is not enabled");
|
log("warning: wasm simd support is not enabled");
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
await tf32.setBackend(instance.config.backend);
|
await tf31.setBackend(instance.config.backend);
|
||||||
await tf32.ready();
|
await tf31.ready();
|
||||||
|
init();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log("error: cannot set backend:", instance.config.backend, err);
|
log("error: cannot set backend:", instance.config.backend, err);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tf32.getBackend() === "humangl") {
|
if (tf31.getBackend() === "humangl") {
|
||||||
tf32.ENV.set("CHECK_COMPUTATION_FOR_ERRORS", false);
|
tf31.ENV.set("CHECK_COMPUTATION_FOR_ERRORS", false);
|
||||||
tf32.ENV.set("WEBGL_CPU_FORWARD", true);
|
tf31.ENV.set("WEBGL_CPU_FORWARD", true);
|
||||||
tf32.ENV.set("WEBGL_USE_SHAPES_UNIFORMS", true);
|
tf31.ENV.set("WEBGL_USE_SHAPES_UNIFORMS", true);
|
||||||
tf32.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD", 256);
|
tf31.ENV.set("CPU_HANDOFF_SIZE_THRESHOLD", 256);
|
||||||
if (typeof instance.config["deallocate"] !== "undefined" && instance.config["deallocate"]) {
|
if (typeof instance.config["deallocate"] !== "undefined" && instance.config["deallocate"]) {
|
||||||
log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:", true);
|
log("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:", true);
|
||||||
tf32.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD", 0);
|
tf31.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD", 0);
|
||||||
}
|
}
|
||||||
if (tf32.backend().getGPGPUContext) {
|
if (tf31.backend().getGPGPUContext) {
|
||||||
const gl = await tf32.backend().getGPGPUContext().gl;
|
const gl = await tf31.backend().getGPGPUContext().gl;
|
||||||
if (instance.config.debug)
|
if (instance.config.debug)
|
||||||
log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);
|
log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tf32.getBackend() === "webgpu") {
|
if (tf31.getBackend() === "webgpu") {
|
||||||
}
|
}
|
||||||
tf32.enableProdMode();
|
tf31.enableProdMode();
|
||||||
await tf32.ready();
|
await tf31.ready();
|
||||||
instance.performance.initBackend = Math.trunc(now() - timeStamp);
|
instance.performance.initBackend = Math.trunc(now() - timeStamp);
|
||||||
instance.config.backend = tf32.getBackend();
|
instance.config.backend = tf31.getBackend();
|
||||||
await env.updateBackend();
|
await env.updateBackend();
|
||||||
registerCustomOps();
|
registerCustomOps();
|
||||||
}
|
}
|
||||||
|
@ -11363,9 +11369,9 @@ function fakeOps(kernelNames, config3) {
|
||||||
log("kernelFunc", kernelName, config3.backend);
|
log("kernelFunc", kernelName, config3.backend);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
tf32.registerKernel(kernelConfig);
|
tf31.registerKernel(kernelConfig);
|
||||||
}
|
}
|
||||||
env.kernels = tf32.getKernelsForBackend(tf32.getBackend()).map((kernel) => kernel.kernelName.toLowerCase());
|
env.kernels = tf31.getKernelsForBackend(tf31.getBackend()).map((kernel) => kernel.kernelName.toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/util/draw.ts
|
// src/util/draw.ts
|
||||||
|
@ -11849,10 +11855,10 @@ async function all(inCanvas2, result, drawOptions) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/face/face.ts
|
// src/face/face.ts
|
||||||
var tf34 = __toModule(require_tfjs_esm());
|
var tf33 = __toModule(require_tfjs_esm());
|
||||||
|
|
||||||
// src/face/mask.ts
|
// src/face/mask.ts
|
||||||
var tf33 = __toModule(require_tfjs_esm());
|
var tf32 = __toModule(require_tfjs_esm());
|
||||||
var expandFact = 0.1;
|
var expandFact = 0.1;
|
||||||
var alpha = 0.5;
|
var alpha = 0.5;
|
||||||
function insidePoly(x, y, polygon) {
|
function insidePoly(x, y, polygon) {
|
||||||
|
@ -11888,7 +11894,7 @@ async function mask(face5) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const output = buffer.toTensor();
|
const output = buffer.toTensor();
|
||||||
tf33.dispose(buffer);
|
tf32.dispose(buffer);
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12027,79 +12033,79 @@ var detectFace = async (instance, input) => {
|
||||||
}
|
}
|
||||||
if ((_a = instance.config.face.detector) == null ? void 0 : _a.mask) {
|
if ((_a = instance.config.face.detector) == null ? void 0 : _a.mask) {
|
||||||
const masked = await mask(faces[i]);
|
const masked = await mask(faces[i]);
|
||||||
tf34.dispose(faces[i].tensor);
|
tf33.dispose(faces[i].tensor);
|
||||||
faces[i].tensor = masked;
|
faces[i].tensor = masked;
|
||||||
}
|
}
|
||||||
const rotation = faces[i].mesh && faces[i].mesh.length > 200 ? calculateFaceAngle(faces[i], [input.shape[2], input.shape[1]]) : null;
|
const rotation = faces[i].mesh && faces[i].mesh.length > 200 ? calculateFaceAngle(faces[i], [input.shape[2], input.shape[1]]) : null;
|
||||||
instance.analyze("Start Emotion:");
|
instance.analyze("Start Emotion:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
emotionRes = ((_b = instance.config.face.emotion) == null ? void 0 : _b.enabled) ? predict8(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
emotionRes = ((_b = instance.config.face.emotion) == null ? void 0 : _b.enabled) ? predict8(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:emotion";
|
instance.state = "run:emotion";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
emotionRes = ((_c = instance.config.face.emotion) == null ? void 0 : _c.enabled) ? await predict8(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
emotionRes = ((_c = instance.config.face.emotion) == null ? void 0 : _c.enabled) ? await predict8(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
instance.performance.emotion = env.perfadd ? (instance.performance.emotion || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
instance.performance.emotion = env.perfadd ? (instance.performance.emotion || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End Emotion:");
|
instance.analyze("End Emotion:");
|
||||||
instance.analyze("Start AntiSpoof:");
|
instance.analyze("Start AntiSpoof:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
antispoofRes = ((_d = instance.config.face.antispoof) == null ? void 0 : _d.enabled) ? predict4(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
antispoofRes = ((_d = instance.config.face.antispoof) == null ? void 0 : _d.enabled) ? predict4(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:antispoof";
|
instance.state = "run:antispoof";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
antispoofRes = ((_e = instance.config.face.antispoof) == null ? void 0 : _e.enabled) ? await predict4(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
antispoofRes = ((_e = instance.config.face.antispoof) == null ? void 0 : _e.enabled) ? await predict4(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
instance.performance.antispoof = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
instance.performance.antispoof = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End AntiSpoof:");
|
instance.analyze("End AntiSpoof:");
|
||||||
instance.analyze("Start Liveness:");
|
instance.analyze("Start Liveness:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
livenessRes = ((_f = instance.config.face.liveness) == null ? void 0 : _f.enabled) ? predict14(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
livenessRes = ((_f = instance.config.face.liveness) == null ? void 0 : _f.enabled) ? predict14(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:liveness";
|
instance.state = "run:liveness";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
livenessRes = ((_g = instance.config.face.liveness) == null ? void 0 : _g.enabled) ? await predict14(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
livenessRes = ((_g = instance.config.face.liveness) == null ? void 0 : _g.enabled) ? await predict14(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
instance.performance.liveness = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
instance.performance.liveness = env.perfadd ? (instance.performance.antispoof || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End Liveness:");
|
instance.analyze("End Liveness:");
|
||||||
instance.analyze("Start GEAR:");
|
instance.analyze("Start GEAR:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
gearRes = ((_h = instance.config.face["gear"]) == null ? void 0 : _h.enabled) ? predict(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
gearRes = ((_h = instance.config.face["gear"]) == null ? void 0 : _h.enabled) ? predict(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:gear";
|
instance.state = "run:gear";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
gearRes = ((_i = instance.config.face["gear"]) == null ? void 0 : _i.enabled) ? await predict(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
gearRes = ((_i = instance.config.face["gear"]) == null ? void 0 : _i.enabled) ? await predict(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
instance.performance.gear = Math.trunc(now() - timeStamp);
|
instance.performance.gear = Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End GEAR:");
|
instance.analyze("End GEAR:");
|
||||||
instance.analyze("Start SSRNet:");
|
instance.analyze("Start SSRNet:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
ageRes = ((_j = instance.config.face["ssrnet"]) == null ? void 0 : _j.enabled) ? predict2(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
ageRes = ((_j = instance.config.face["ssrnet"]) == null ? void 0 : _j.enabled) ? predict2(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
genderRes = ((_k = instance.config.face["ssrnet"]) == null ? void 0 : _k.enabled) ? predict3(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
genderRes = ((_k = instance.config.face["ssrnet"]) == null ? void 0 : _k.enabled) ? predict3(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:ssrnet";
|
instance.state = "run:ssrnet";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
ageRes = ((_l = instance.config.face["ssrnet"]) == null ? void 0 : _l.enabled) ? await predict2(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
ageRes = ((_l = instance.config.face["ssrnet"]) == null ? void 0 : _l.enabled) ? await predict2(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
genderRes = ((_m = instance.config.face["ssrnet"]) == null ? void 0 : _m.enabled) ? await predict3(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
genderRes = ((_m = instance.config.face["ssrnet"]) == null ? void 0 : _m.enabled) ? await predict3(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
instance.performance.ssrnet = Math.trunc(now() - timeStamp);
|
instance.performance.ssrnet = Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End SSRNet:");
|
instance.analyze("End SSRNet:");
|
||||||
instance.analyze("Start MobileFaceNet:");
|
instance.analyze("Start MobileFaceNet:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
mobilefacenetRes = ((_n = instance.config.face["mobilefacenet"]) == null ? void 0 : _n.enabled) ? predict9(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
mobilefacenetRes = ((_n = instance.config.face["mobilefacenet"]) == null ? void 0 : _n.enabled) ? predict9(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:mobilefacenet";
|
instance.state = "run:mobilefacenet";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
mobilefacenetRes = ((_o = instance.config.face["mobilefacenet"]) == null ? void 0 : _o.enabled) ? await predict9(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : {};
|
mobilefacenetRes = ((_o = instance.config.face["mobilefacenet"]) == null ? void 0 : _o.enabled) ? await predict9(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : {};
|
||||||
instance.performance.mobilefacenet = Math.trunc(now() - timeStamp);
|
instance.performance.mobilefacenet = Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End MobileFaceNet:");
|
instance.analyze("End MobileFaceNet:");
|
||||||
instance.analyze("Start Description:");
|
instance.analyze("Start Description:");
|
||||||
if (instance.config.async) {
|
if (instance.config.async) {
|
||||||
descRes = ((_p = instance.config.face.description) == null ? void 0 : _p.enabled) ? predict11(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
descRes = ((_p = instance.config.face.description) == null ? void 0 : _p.enabled) ? predict11(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
} else {
|
} else {
|
||||||
instance.state = "run:description";
|
instance.state = "run:description";
|
||||||
timeStamp = now();
|
timeStamp = now();
|
||||||
descRes = ((_q = instance.config.face.description) == null ? void 0 : _q.enabled) ? await predict11(faces[i].tensor || tf34.tensor([]), instance.config, i, faces.length) : null;
|
descRes = ((_q = instance.config.face.description) == null ? void 0 : _q.enabled) ? await predict11(faces[i].tensor || tf33.tensor([]), instance.config, i, faces.length) : null;
|
||||||
instance.performance.description = env.perfadd ? (instance.performance.description || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
instance.performance.description = env.perfadd ? (instance.performance.description || 0) + Math.trunc(now() - timeStamp) : Math.trunc(now() - timeStamp);
|
||||||
}
|
}
|
||||||
instance.analyze("End Description:");
|
instance.analyze("End Description:");
|
||||||
|
@ -12118,8 +12124,8 @@ var detectFace = async (instance, input) => {
|
||||||
delete faces[i].annotations.rightEyeIris;
|
delete faces[i].annotations.rightEyeIris;
|
||||||
}
|
}
|
||||||
const irisSize = faces[i].annotations && faces[i].annotations.leftEyeIris && faces[i].annotations.leftEyeIris[0] && faces[i].annotations.rightEyeIris && faces[i].annotations.rightEyeIris[0] && faces[i].annotations.leftEyeIris.length > 0 && faces[i].annotations.rightEyeIris.length > 0 && faces[i].annotations.leftEyeIris[0] !== null && faces[i].annotations.rightEyeIris[0] !== null ? Math.max(Math.abs(faces[i].annotations.leftEyeIris[3][0] - faces[i].annotations.leftEyeIris[1][0]), Math.abs(faces[i].annotations.rightEyeIris[4][1] - faces[i].annotations.rightEyeIris[2][1])) / input.shape[2] : 0;
|
const irisSize = faces[i].annotations && faces[i].annotations.leftEyeIris && faces[i].annotations.leftEyeIris[0] && faces[i].annotations.rightEyeIris && faces[i].annotations.rightEyeIris[0] && faces[i].annotations.leftEyeIris.length > 0 && faces[i].annotations.rightEyeIris.length > 0 && faces[i].annotations.leftEyeIris[0] !== null && faces[i].annotations.rightEyeIris[0] !== null ? Math.max(Math.abs(faces[i].annotations.leftEyeIris[3][0] - faces[i].annotations.leftEyeIris[1][0]), Math.abs(faces[i].annotations.rightEyeIris[4][1] - faces[i].annotations.rightEyeIris[2][1])) / input.shape[2] : 0;
|
||||||
const tensor3 = ((_z = instance.config.face.detector) == null ? void 0 : _z.return) ? tf34.squeeze(faces[i].tensor) : null;
|
const tensor3 = ((_z = instance.config.face.detector) == null ? void 0 : _z.return) ? tf33.squeeze(faces[i].tensor) : null;
|
||||||
tf34.dispose(faces[i].tensor);
|
tf33.dispose(faces[i].tensor);
|
||||||
if (faces[i].tensor)
|
if (faces[i].tensor)
|
||||||
delete faces[i].tensor;
|
delete faces[i].tensor;
|
||||||
const res = {
|
const res = {
|
||||||
|
@ -13233,7 +13239,7 @@ lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/
|
||||||
2Q==`;
|
2Q==`;
|
||||||
|
|
||||||
// src/warmup.ts
|
// src/warmup.ts
|
||||||
var tf35 = __toModule(require_tfjs_esm());
|
var tf34 = __toModule(require_tfjs_esm());
|
||||||
async function warmupBitmap(instance) {
|
async function warmupBitmap(instance) {
|
||||||
const b64toBlob = (base64, type = "application/octet-stream") => fetch(`data:${type};base64,${base64}`).then((res2) => res2.blob());
|
const b64toBlob = (base64, type = "application/octet-stream") => fetch(`data:${type};base64,${base64}`).then((res2) => res2.blob());
|
||||||
let blob;
|
let blob;
|
||||||
|
@ -13305,8 +13311,8 @@ async function warmupNode(instance) {
|
||||||
if (!img)
|
if (!img)
|
||||||
return null;
|
return null;
|
||||||
let res;
|
let res;
|
||||||
if (typeof tf35["node"] !== "undefined") {
|
if (typeof tf34["node"] !== "undefined") {
|
||||||
const data = tf35["node"].decodeJpeg(img);
|
const data = tf34["node"].decodeJpeg(img);
|
||||||
const expanded = data.expandDims(0);
|
const expanded = data.expandDims(0);
|
||||||
instance.tf.dispose(data);
|
instance.tf.dispose(data);
|
||||||
res = await instance.detect(expanded, instance.config);
|
res = await instance.detect(expanded, instance.config);
|
||||||
|
@ -13376,7 +13382,7 @@ var Human = class {
|
||||||
return null;
|
return null;
|
||||||
if (!input)
|
if (!input)
|
||||||
return "input is not defined";
|
return "input is not defined";
|
||||||
if (this.env.node && !(input instanceof tf36.Tensor))
|
if (this.env.node && !(input instanceof tf35.Tensor))
|
||||||
return "input must be a tensor";
|
return "input must be a tensor";
|
||||||
try {
|
try {
|
||||||
this.tf.getBackend();
|
this.tf.getBackend();
|
||||||
|
@ -13394,7 +13400,7 @@ var Human = class {
|
||||||
(_a = this.events) == null ? void 0 : _a.dispatchEvent(new Event(event));
|
(_a = this.events) == null ? void 0 : _a.dispatchEvent(new Event(event));
|
||||||
});
|
});
|
||||||
this.env = env;
|
this.env = env;
|
||||||
config.wasmPath = tf36.version_core.includes("-") ? "https://vladmandic.github.io/tfjs/dist/" : `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${tf36.version_core}/dist/`;
|
config.wasmPath = tf35.version_core.includes("-") ? "https://vladmandic.github.io/tfjs/dist/" : `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${tf35.version_core}/dist/`;
|
||||||
config.modelBasePath = env.browser ? "../models/" : "file://models/";
|
config.modelBasePath = env.browser ? "../models/" : "file://models/";
|
||||||
config.backend = env.browser ? "humangl" : "tensorflow";
|
config.backend = env.browser ? "humangl" : "tensorflow";
|
||||||
this.version = version;
|
this.version = version;
|
||||||
|
@ -13403,7 +13409,7 @@ var Human = class {
|
||||||
Object.seal(this.config);
|
Object.seal(this.config);
|
||||||
if (userConfig)
|
if (userConfig)
|
||||||
this.config = mergeDeep(this.config, userConfig);
|
this.config = mergeDeep(this.config, userConfig);
|
||||||
this.tf = tf36;
|
this.tf = tf35;
|
||||||
this.state = "idle";
|
this.state = "idle";
|
||||||
__privateSet(this, _numTensors, 0);
|
__privateSet(this, _numTensors, 0);
|
||||||
__privateSet(this, _analyzeMemoryLeaks, false);
|
__privateSet(this, _analyzeMemoryLeaks, false);
|
||||||
|
@ -13469,7 +13475,7 @@ var Human = class {
|
||||||
log(`tfjs version: ${this.tf.version_core}`);
|
log(`tfjs version: ${this.tf.version_core}`);
|
||||||
if (!await check(this))
|
if (!await check(this))
|
||||||
log("error: backend check failed");
|
log("error: backend check failed");
|
||||||
await tf36.ready();
|
await tf35.ready();
|
||||||
if (this.env.browser) {
|
if (this.env.browser) {
|
||||||
if (this.config.debug)
|
if (this.config.debug)
|
||||||
log("configuration:", this.config);
|
log("configuration:", this.config);
|
||||||
|
@ -13671,7 +13677,7 @@ var Human = class {
|
||||||
return join2(faceRes, bodyRes, handRes, gestureRes, shape);
|
return join2(faceRes, bodyRes, handRes, gestureRes, shape);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
tf36.dispose(img.tensor);
|
tf35.dispose(img.tensor);
|
||||||
this.emit("detect");
|
this.emit("detect");
|
||||||
this.state = "idle";
|
this.state = "idle";
|
||||||
resolve(this.result);
|
resolve(this.result);
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
import { log, join, now } from '../util/util';
|
import { log, join, now } from '../util/util';
|
||||||
import type { BodyKeypoint, BodyResult, Box, Point } from '../result';
|
import type { BodyKeypoint, BodyResult, Box, Point } from '../result';
|
||||||
import type { GraphModel, Tensor } from '../tfjs/types';
|
import type { GraphModel, Tensor } from '../tfjs/types';
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
import { log, join, now } from '../util/util';
|
import { log, join, now } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as coords from './efficientposecoords';
|
import * as coords from './efficientposecoords';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
import type { BodyResult, Point } from '../result';
|
import type { BodyResult, Point } from '../result';
|
||||||
import type { GraphModel, Tensor } from '../tfjs/types';
|
import type { GraphModel, Tensor } from '../tfjs/types';
|
||||||
import type { Config } from '../config';
|
import type { Config } from '../config';
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
import { log, join } from '../util/util';
|
import { log, join } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as util from './facemeshutil';
|
import * as util from './facemeshutil';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
import type { Config } from '../config';
|
import type { Config } from '../config';
|
||||||
import type { Tensor, GraphModel } from '../tfjs/types';
|
import type { Tensor, GraphModel } from '../tfjs/types';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as coords from './facemeshcoords';
|
import * as coords from './facemeshcoords';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
import type { Box, Point } from '../result';
|
import type { Box, Point } from '../result';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
import { log, join, now } from '../util/util';
|
import { log, join, now } from '../util/util';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
import type { Tensor, GraphModel } from '../tfjs/types';
|
import type { Tensor, GraphModel } from '../tfjs/types';
|
||||||
import type { Config } from '../config';
|
import type { Config } from '../config';
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import type { Config } from '../config';
|
||||||
import type { GraphModel, Tensor } from '../tfjs/types';
|
import type { GraphModel, Tensor } from '../tfjs/types';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
|
|
||||||
const annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];
|
const annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];
|
||||||
let model: GraphModel | null;
|
let model: GraphModel | null;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
import { log, join, now } from '../util/util';
|
import { log, join, now } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
import type { Config } from '../config';
|
import type { Config } from '../config';
|
||||||
import type { GraphModel, Tensor } from '../tfjs/types';
|
import type { GraphModel, Tensor } from '../tfjs/types';
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, join, now } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
import type { Config } from '../config';
|
import type { Config } from '../config';
|
||||||
import type { GraphModel, Tensor } from '../tfjs/types';
|
import type { GraphModel, Tensor } from '../tfjs/types';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as util from './handposeutil';
|
import * as util from './handposeutil';
|
||||||
import * as anchors from './handposeanchors';
|
import * as anchors from './handposeanchors';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
import type { Tensor, GraphModel } from '../tfjs/types';
|
import type { Tensor, GraphModel } from '../tfjs/types';
|
||||||
import type { Point } from '../result';
|
import type { Point } from '../result';
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as util from './handposeutil';
|
import * as util from './handposeutil';
|
||||||
import type * as detector from './handposedetector';
|
import type * as detector from './handposedetector';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
import type { Tensor, GraphModel } from '../tfjs/types';
|
import type { Tensor, GraphModel } from '../tfjs/types';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
import { now } from '../util/util';
|
import { now } from '../util/util';
|
||||||
|
|
|
@ -15,7 +15,7 @@ import type { Config } from '../config';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
import * as fingerPose from './fingerpose';
|
import * as fingerPose from './fingerpose';
|
||||||
import { fakeOps } from '../tfjs/backend';
|
import { fakeOps } from '../tfjs/backend';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
|
|
||||||
const models: [GraphModel | null, GraphModel | null] = [null, null];
|
const models: [GraphModel | null, GraphModel | null] = [null, null];
|
||||||
const modelOutputNodes = ['StatefulPartitionedCall/Postprocessor/Slice', 'StatefulPartitionedCall/Postprocessor/ExpandDims_1'];
|
const modelOutputNodes = ['StatefulPartitionedCall/Postprocessor/Slice', 'StatefulPartitionedCall/Postprocessor/ExpandDims_1'];
|
||||||
|
|
|
@ -33,26 +33,20 @@ export async function load(config: Config): Promise<GraphModel> {
|
||||||
|
|
||||||
async function process(res: Tensor | null, outputShape, config: Config) {
|
async function process(res: Tensor | null, outputShape, config: Config) {
|
||||||
if (!res) return [];
|
if (!res) return [];
|
||||||
|
const t: Record<string, Tensor> = {};
|
||||||
const results: Array<ObjectResult> = [];
|
const results: Array<ObjectResult> = [];
|
||||||
const detections = await res.array();
|
const detections = await res.array();
|
||||||
const squeezeT = tf.squeeze(res);
|
t.squeeze = tf.squeeze(res);
|
||||||
tf.dispose(res);
|
const arr = tf.split(t.squeeze, 6, 1) as Tensor[]; // x1, y1, x2, y2, score, class
|
||||||
const arr = tf.split(squeezeT, 6, 1); // x1, y1, x2, y2, score, class
|
t.stack = tf.stack([arr[1], arr[0], arr[3], arr[2]], 1); // reorder dims as tf.nms expects y, x
|
||||||
tf.dispose(squeezeT);
|
t.boxes = tf.squeeze(t.stack);
|
||||||
const stackT = tf.stack([arr[1], arr[0], arr[3], arr[2]], 1); // reorder dims as tf.nms expects y, x
|
t.scores = tf.squeeze(arr[4]);
|
||||||
const boxesT = tf.squeeze(stackT);
|
t.classes = tf.squeeze(arr[5]);
|
||||||
tf.dispose(stackT);
|
tf.dispose([res, ...arr]);
|
||||||
const scoresT = tf.squeeze(arr[4]);
|
t.nms = await tf.image.nonMaxSuppressionAsync(t.boxes, t.scores, config.object.maxDetected, config.object.iouThreshold, config.object.minConfidence);
|
||||||
const classesT = tf.squeeze(arr[5]);
|
const nms = await t.nms.data();
|
||||||
arr.forEach((t) => tf.dispose(t));
|
|
||||||
const nmsT = await tf.image.nonMaxSuppressionAsync(boxesT, scoresT, config.object.maxDetected, config.object.iouThreshold, config.object.minConfidence);
|
|
||||||
tf.dispose(boxesT);
|
|
||||||
tf.dispose(scoresT);
|
|
||||||
tf.dispose(classesT);
|
|
||||||
const nms = await nmsT.data();
|
|
||||||
tf.dispose(nmsT);
|
|
||||||
let i = 0;
|
let i = 0;
|
||||||
for (const id of nms) {
|
for (const id of Array.from(nms)) {
|
||||||
const score = Math.trunc(100 * detections[0][id][4]) / 100;
|
const score = Math.trunc(100 * detections[0][id][4]) / 100;
|
||||||
const classVal = detections[0][id][5];
|
const classVal = detections[0][id][5];
|
||||||
const label = labels[classVal].label;
|
const label = labels[classVal].label;
|
||||||
|
@ -74,6 +68,7 @@ async function process(res: Tensor | null, outputShape, config: Config) {
|
||||||
];
|
];
|
||||||
results.push({ id: i++, score, class: classVal, label, box, boxRaw });
|
results.push({ id: i++, score, class: classVal, label, box, boxRaw });
|
||||||
}
|
}
|
||||||
|
Object.keys(t).forEach((tensor) => tf.dispose(t[tensor]));
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
import { log, join, now } from '../util/util';
|
import { log, join, now } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
import { labels } from './labels';
|
import { labels } from './labels';
|
||||||
import type { ObjectResult, Box } from '../result';
|
import type { ObjectResult, Box } from '../result';
|
||||||
import type { GraphModel, Tensor } from '../tfjs/types';
|
import type { GraphModel, Tensor } from '../tfjs/types';
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
import { log, join } from '../util/util';
|
import { log, join } from '../util/util';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import * as image from '../image/image';
|
import * as image from '../image/image';
|
||||||
import * as constants from '../tfjs/constants';
|
import { constants } from '../tfjs/constants';
|
||||||
import type { GraphModel, Tensor } from '../tfjs/types';
|
import type { GraphModel, Tensor } from '../tfjs/types';
|
||||||
import type { Config } from '../config';
|
import type { Config } from '../config';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
|
|
|
@ -5,6 +5,7 @@ import { log, now } from '../util/util';
|
||||||
import { env } from '../util/env';
|
import { env } from '../util/env';
|
||||||
import * as humangl from './humangl';
|
import * as humangl from './humangl';
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
|
import * as constants from './constants';
|
||||||
|
|
||||||
function registerCustomOps() {
|
function registerCustomOps() {
|
||||||
if (!env.kernels.includes('mod')) {
|
if (!env.kernels.includes('mod')) {
|
||||||
|
@ -87,6 +88,7 @@ export async function check(instance: Human, force = false) {
|
||||||
try {
|
try {
|
||||||
await tf.setBackend(instance.config.backend);
|
await tf.setBackend(instance.config.backend);
|
||||||
await tf.ready();
|
await tf.ready();
|
||||||
|
constants.init();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log('error: cannot set backend:', instance.config.backend, err);
|
log('error: cannot set backend:', instance.config.backend, err);
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -1,9 +1,20 @@
|
||||||
import * as tf from '../../dist/tfjs.esm.js';
|
import * as tf from '../../dist/tfjs.esm.js';
|
||||||
import type { Tensor } from './types';
|
import type { Tensor } from './types';
|
||||||
|
|
||||||
export const tf255: Tensor = tf.scalar(255, 'float32');
|
export const constants: Record<string, Tensor | number | number[]> = {
|
||||||
export const tf1: Tensor = tf.scalar(1, 'float32');
|
tf255: 255,
|
||||||
export const tf2: Tensor = tf.scalar(2, 'float32');
|
tf1: 1,
|
||||||
export const tf05: Tensor = tf.scalar(0.5, 'float32');
|
tf2: 2,
|
||||||
export const tf127: Tensor = tf.scalar(127.5, 'float32');
|
tf05: 0.5,
|
||||||
export const rgb: Tensor = tf.tensor1d([0.2989, 0.5870, 0.1140], 'float32'); // factors for red/green/blue colors when converting to grayscale
|
tf127: 127.5,
|
||||||
|
rgb: [0.2989, 0.5870, 0.1140],
|
||||||
|
};
|
||||||
|
|
||||||
|
export function init() {
|
||||||
|
constants.tf255 = tf.scalar(255, 'float32');
|
||||||
|
constants.tf1 = tf.scalar(1, 'float32');
|
||||||
|
constants.tf2 = tf.scalar(2, 'float32');
|
||||||
|
constants.tf05 = tf.scalar(0.5, 'float32');
|
||||||
|
constants.tf127 = tf.scalar(127.5, 'float32');
|
||||||
|
constants.rgb = tf.tensor1d([0.2989, 0.5870, 0.1140], 'float32'); // factors for red/green/blue colors when converting to grayscale
|
||||||
|
}
|
||||||
|
|
820
test/build.log
820
test/build.log
|
@ -1,794 +1,26 @@
|
||||||
2021-11-16 12:51:36 [36mINFO: [39m @vladmandic/human version 2.5.2
|
2021-11-16 20:04:40 [36mINFO: [39m @vladmandic/human version 2.5.2
|
||||||
2021-11-16 12:51:36 [36mINFO: [39m User: vlado Platform: linux Arch: x64 Node: v17.0.1
|
2021-11-16 20:04:40 [36mINFO: [39m User: vlado Platform: linux Arch: x64 Node: v17.0.1
|
||||||
2021-11-16 12:51:36 [36mINFO: [39m Application: {"name":"@vladmandic/human","version":"2.5.2"}
|
2021-11-16 20:04:40 [36mINFO: [39m Application: {"name":"@vladmandic/human","version":"2.5.2"}
|
||||||
2021-11-16 12:51:36 [36mINFO: [39m Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
|
2021-11-16 20:04:40 [36mINFO: [39m Environment: {"profile":"production","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
|
||||||
2021-11-16 12:51:36 [36mINFO: [39m Toolchain: {"build":"0.6.4","esbuild":"0.13.13","typescript":"4.4.4","typedoc":"0.22.9","eslint":"8.2.0"}
|
2021-11-16 20:04:40 [36mINFO: [39m Toolchain: {"build":"0.6.4","esbuild":"0.13.13","typescript":"4.4.4","typedoc":"0.22.9","eslint":"8.2.0"}
|
||||||
2021-11-16 12:51:36 [36mINFO: [39m Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
|
2021-11-16 20:04:40 [36mINFO: [39m Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]}
|
||||||
2021-11-16 12:51:36 [35mSTATE:[39m Clean: {"locations":["dist/*","types/*","typedoc/*"]}
|
2021-11-16 20:04:40 [35mSTATE:[39m Clean: {"locations":["dist/*","types/*","typedoc/*"]}
|
||||||
2021-11-16 12:51:36 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
2021-11-16 20:04:40 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
||||||
2021-11-16 12:51:36 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":61,"inputBytes":545763,"outputBytes":462549}
|
2021-11-16 20:04:40 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546974,"outputBytes":462801}
|
||||||
2021-11-16 12:51:36 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
2021-11-16 20:04:40 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
||||||
2021-11-16 12:51:36 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":61,"inputBytes":545771,"outputBytes":462553}
|
2021-11-16 20:04:40 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546982,"outputBytes":462805}
|
||||||
2021-11-16 12:51:36 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
2021-11-16 20:04:40 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
||||||
2021-11-16 12:51:36 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":61,"inputBytes":545838,"outputBytes":462625}
|
2021-11-16 20:04:40 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":547049,"outputBytes":462877}
|
||||||
2021-11-16 12:51:36 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
2021-11-16 20:04:40 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
||||||
2021-11-16 12:51:36 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
2021-11-16 20:04:40 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
||||||
2021-11-16 12:51:37 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":61,"inputBytes":545400,"outputBytes":464789}
|
2021-11-16 20:04:41 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":546611,"outputBytes":464932}
|
||||||
2021-11-16 12:51:37 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
2021-11-16 20:04:41 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
||||||
2021-11-16 12:51:37 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":61,"inputBytes":3042268,"outputBytes":1623936}
|
2021-11-16 20:04:41 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3043479,"outputBytes":1624122}
|
||||||
2021-11-16 12:51:38 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":61,"inputBytes":3042268,"outputBytes":2967931}
|
2021-11-16 20:04:42 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3043479,"outputBytes":2968140}
|
||||||
2021-11-16 12:52:01 [35mSTATE:[39m Typings: {"input":"src/human.ts","output":"types","files":53}
|
2021-11-16 20:05:02 [35mSTATE:[39m Typings: {"input":"src/human.ts","output":"types","files":54}
|
||||||
2021-11-16 12:52:08 [35mSTATE:[39m TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":51,"generated":true}
|
2021-11-16 20:05:10 [35mSTATE:[39m TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":51,"generated":true}
|
||||||
2021-11-16 12:52:08 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
2021-11-16 20:05:10 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
||||||
2021-11-16 12:52:08 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
2021-11-16 20:05:10 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
||||||
2021-11-16 12:52:49 [35mSTATE:[39m Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":92,"errors":0,"warnings":0}
|
2021-11-16 20:05:50 [35mSTATE:[39m Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":93,"errors":0,"warnings":0}
|
||||||
2021-11-16 12:52:50 [35mSTATE:[39m ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
|
2021-11-16 20:05:50 [35mSTATE:[39m ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"}
|
||||||
2021-11-16 12:52:50 [36mINFO: [39m Done...
|
2021-11-16 20:05:50 [36mINFO: [39m Done...
|
||||||
2021-11-16 17:38:28 [36mINFO: [39m @vladmandic/human version 2.5.2
|
|
||||||
2021-11-16 17:38:28 [36mINFO: [39m User: vlado Platform: linux Arch: x64 Node: v17.0.1
|
|
||||||
2021-11-16 17:38:28 [36mINFO: [39m Application: {"name":"@vladmandic/human","version":"2.5.2"}
|
|
||||||
2021-11-16 17:38:28 [36mINFO: [39m Environment: {"profile":"development","config":".build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true}
|
|
||||||
2021-11-16 17:38:28 [36mINFO: [39m Toolchain: {"build":"0.6.4","esbuild":"0.13.13","typescript":"4.4.4","typedoc":"0.22.9","eslint":"8.2.0"}
|
|
||||||
2021-11-16 17:38:28 [36mINFO: [39m Build: {"profile":"development","steps":["serve","watch","compile"]}
|
|
||||||
2021-11-16 17:38:28 [35mSTATE:[39m WebServer: {"ssl":false,"port":10030,"root":"."}
|
|
||||||
2021-11-16 17:38:28 [35mSTATE:[39m WebServer: {"ssl":true,"port":10031,"root":".","sslKey":"node_modules/@vladmandic/build/cert/https.key","sslCrt":"node_modules/@vladmandic/build/cert/https.crt"}
|
|
||||||
2021-11-16 17:38:28 [35mSTATE:[39m Watch: {"locations":["src/**","README.md","src/**/*","tfjs/**/*","demo/**/*.ts"]}
|
|
||||||
2021-11-16 17:38:28 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:38:28 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":545971,"outputBytes":462761}
|
|
||||||
2021-11-16 17:38:28 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:38:28 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":545979,"outputBytes":462765}
|
|
||||||
2021-11-16 17:38:28 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:38:28 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546046,"outputBytes":462837}
|
|
||||||
2021-11-16 17:38:28 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:38:28 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:38:28 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545608,"outputBytes":464956}
|
|
||||||
2021-11-16 17:38:29 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:38:29 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042476,"outputBytes":1623976}
|
|
||||||
2021-11-16 17:38:30 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042476,"outputBytes":2968092}
|
|
||||||
2021-11-16 17:38:30 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:38:30 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:38:30 [36mINFO: [39m Listening...
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2968092,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815308,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:38:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:42:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/body/movenet.ts"}
|
|
||||||
2021-11-16 17:42:39 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:42:39 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":545806,"outputBytes":462597}
|
|
||||||
2021-11-16 17:42:39 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:42:39 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":545814,"outputBytes":462601}
|
|
||||||
2021-11-16 17:42:39 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:42:39 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":545881,"outputBytes":462673}
|
|
||||||
2021-11-16 17:42:39 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:42:39 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:42:39 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545443,"outputBytes":464792}
|
|
||||||
2021-11-16 17:42:40 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:42:40 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042311,"outputBytes":1623916}
|
|
||||||
2021-11-16 17:42:41 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042311,"outputBytes":2967926}
|
|
||||||
2021-11-16 17:42:41 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:42:41 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:42:53 [36mINFO: [39m Watch: {"event":"modify","input":"src/body/movenet.ts"}
|
|
||||||
2021-11-16 17:42:53 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:42:53 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":545820,"outputBytes":462611}
|
|
||||||
2021-11-16 17:42:53 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:42:53 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":545828,"outputBytes":462615}
|
|
||||||
2021-11-16 17:42:53 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:42:54 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":545895,"outputBytes":462687}
|
|
||||||
2021-11-16 17:42:54 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:42:54 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:42:54 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545457,"outputBytes":464806}
|
|
||||||
2021-11-16 17:42:54 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:42:54 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042325,"outputBytes":1623920}
|
|
||||||
2021-11-16 17:42:55 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042325,"outputBytes":2967942}
|
|
||||||
2021-11-16 17:42:55 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:42:55 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:43:14 [36mINFO: [39m Watch: {"event":"modify","input":"src/body/movenet.ts"}
|
|
||||||
2021-11-16 17:43:14 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:43:14 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":545685,"outputBytes":462477}
|
|
||||||
2021-11-16 17:43:14 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:43:14 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":545693,"outputBytes":462481}
|
|
||||||
2021-11-16 17:43:14 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:43:14 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":545760,"outputBytes":462553}
|
|
||||||
2021-11-16 17:43:14 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:43:14 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:43:14 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545322,"outputBytes":464672}
|
|
||||||
2021-11-16 17:43:15 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:43:15 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042190,"outputBytes":1623884}
|
|
||||||
2021-11-16 17:43:16 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042190,"outputBytes":2967808}
|
|
||||||
2021-11-16 17:43:16 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:43:16 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:45:03 [36mINFO: [39m Watch: {"event":"modify","input":"src/face/faceres.ts"}
|
|
||||||
2021-11-16 17:45:03 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:45:03 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":545745,"outputBytes":462477}
|
|
||||||
2021-11-16 17:45:03 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:45:03 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":545753,"outputBytes":462481}
|
|
||||||
2021-11-16 17:45:03 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:45:03 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":545820,"outputBytes":462553}
|
|
||||||
2021-11-16 17:45:03 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:45:03 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:45:03 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545382,"outputBytes":464674}
|
|
||||||
2021-11-16 17:45:04 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:45:04 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042250,"outputBytes":1623883}
|
|
||||||
2021-11-16 17:45:04 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042250,"outputBytes":2967810}
|
|
||||||
2021-11-16 17:45:04 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:45:04 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:47:41 [36mINFO: [39m Watch: {"event":"modify","input":"src/tfjs/constants.ts"}
|
|
||||||
2021-11-16 17:47:41 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:47:41 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":545850,"outputBytes":462553}
|
|
||||||
2021-11-16 17:47:41 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:47:41 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":545858,"outputBytes":462557}
|
|
||||||
2021-11-16 17:47:41 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:47:41 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":545925,"outputBytes":462629}
|
|
||||||
2021-11-16 17:47:41 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:47:41 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:47:41 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545487,"outputBytes":464774}
|
|
||||||
2021-11-16 17:47:41 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:47:42 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042355,"outputBytes":1623922}
|
|
||||||
2021-11-16 17:47:42 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042355,"outputBytes":2967876}
|
|
||||||
2021-11-16 17:47:42 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:47:42 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:48:24 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:48:24 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:48:25 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":545921,"outputBytes":462557}
|
|
||||||
2021-11-16 17:48:25 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:48:25 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":545929,"outputBytes":462561}
|
|
||||||
2021-11-16 17:48:25 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:48:25 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":545996,"outputBytes":462633}
|
|
||||||
2021-11-16 17:48:25 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:48:25 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:48:25 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545558,"outputBytes":464778}
|
|
||||||
2021-11-16 17:48:25 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:48:26 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042426,"outputBytes":1623925}
|
|
||||||
2021-11-16 17:48:26 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042426,"outputBytes":2967880}
|
|
||||||
2021-11-16 17:48:26 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:48:26 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2967880,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815106,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:30 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:31 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:31 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:31 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:31 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:31 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:31 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:31 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:31 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:48:31 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:35 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:50:35 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:50:35 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":545994,"outputBytes":462633}
|
|
||||||
2021-11-16 17:50:35 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:50:35 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546002,"outputBytes":462637}
|
|
||||||
2021-11-16 17:50:35 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:50:35 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546069,"outputBytes":462709}
|
|
||||||
2021-11-16 17:50:35 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:50:35 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:50:35 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545631,"outputBytes":464866}
|
|
||||||
2021-11-16 17:50:35 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:50:36 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042499,"outputBytes":1623975}
|
|
||||||
2021-11-16 17:50:36 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042499,"outputBytes":2967951}
|
|
||||||
2021-11-16 17:50:36 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:50:36 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:50:43 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:50:43 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:50:43 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546005,"outputBytes":462644}
|
|
||||||
2021-11-16 17:50:43 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:50:43 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546013,"outputBytes":462648}
|
|
||||||
2021-11-16 17:50:43 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:50:43 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546080,"outputBytes":462720}
|
|
||||||
2021-11-16 17:50:43 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:50:43 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:50:43 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545642,"outputBytes":464877}
|
|
||||||
2021-11-16 17:50:44 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:50:44 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042510,"outputBytes":1623985}
|
|
||||||
2021-11-16 17:50:45 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042510,"outputBytes":2967962}
|
|
||||||
2021-11-16 17:50:45 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:50:45 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:50:52 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:52 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:52 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:52 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2967962,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815269,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:50:53 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:51:30 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:51:30 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:51:30 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546033,"outputBytes":462674}
|
|
||||||
2021-11-16 17:51:30 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:51:30 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546041,"outputBytes":462678}
|
|
||||||
2021-11-16 17:51:30 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:51:30 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546108,"outputBytes":462750}
|
|
||||||
2021-11-16 17:51:30 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:51:30 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:51:30 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545670,"outputBytes":464919}
|
|
||||||
2021-11-16 17:51:31 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:51:31 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042538,"outputBytes":1623999}
|
|
||||||
2021-11-16 17:51:32 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042538,"outputBytes":2967988}
|
|
||||||
2021-11-16 17:51:32 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:51:32 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:51:48 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:51:48 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:51:48 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546033,"outputBytes":462674}
|
|
||||||
2021-11-16 17:51:48 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:51:48 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546041,"outputBytes":462678}
|
|
||||||
2021-11-16 17:51:48 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:51:48 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546108,"outputBytes":462750}
|
|
||||||
2021-11-16 17:51:48 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:51:48 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:51:48 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545670,"outputBytes":464919}
|
|
||||||
2021-11-16 17:51:48 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:51:49 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042538,"outputBytes":1623999}
|
|
||||||
2021-11-16 17:51:49 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042538,"outputBytes":2967988}
|
|
||||||
2021-11-16 17:51:49 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:51:49 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:51:54 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:51:54 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:51:54 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546044,"outputBytes":462685}
|
|
||||||
2021-11-16 17:51:54 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:51:54 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546052,"outputBytes":462689}
|
|
||||||
2021-11-16 17:51:54 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:51:54 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546119,"outputBytes":462761}
|
|
||||||
2021-11-16 17:51:54 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:51:54 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:51:54 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545681,"outputBytes":464930}
|
|
||||||
2021-11-16 17:51:55 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:51:55 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042549,"outputBytes":1624009}
|
|
||||||
2021-11-16 17:51:56 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042549,"outputBytes":2967999}
|
|
||||||
2021-11-16 17:51:56 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:51:56 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:52:05 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:05 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:05 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:05 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2967999,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815360,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:06 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:47 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:52:47 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:52:47 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546050,"outputBytes":462691}
|
|
||||||
2021-11-16 17:52:47 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:52:47 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546058,"outputBytes":462695}
|
|
||||||
2021-11-16 17:52:47 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:52:47 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546125,"outputBytes":462767}
|
|
||||||
2021-11-16 17:52:47 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:52:47 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:52:47 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545687,"outputBytes":464936}
|
|
||||||
2021-11-16 17:52:48 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:52:48 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042555,"outputBytes":1624012}
|
|
||||||
2021-11-16 17:52:48 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042555,"outputBytes":2968005}
|
|
||||||
2021-11-16 17:52:48 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:52:48 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:52:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2968005,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815371,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:52:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:11 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:53:11 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:53:11 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546061,"outputBytes":462630}
|
|
||||||
2021-11-16 17:53:11 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:53:11 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546069,"outputBytes":462634}
|
|
||||||
2021-11-16 17:53:11 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:53:11 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546136,"outputBytes":462706}
|
|
||||||
2021-11-16 17:53:11 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:53:11 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:53:11 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545698,"outputBytes":464863}
|
|
||||||
2021-11-16 17:53:11 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:53:12 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042566,"outputBytes":1623969}
|
|
||||||
2021-11-16 17:53:12 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042566,"outputBytes":2967949}
|
|
||||||
2021-11-16 17:53:12 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:53:12 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:53:16 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:16 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:16 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:16 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2967949,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815326,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:17 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:28 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:53:28 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:53:28 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546050,"outputBytes":462619}
|
|
||||||
2021-11-16 17:53:28 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:53:28 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546058,"outputBytes":462623}
|
|
||||||
2021-11-16 17:53:28 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:53:28 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546125,"outputBytes":462695}
|
|
||||||
2021-11-16 17:53:28 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:53:28 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:53:28 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545687,"outputBytes":464852}
|
|
||||||
2021-11-16 17:53:28 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:53:29 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042555,"outputBytes":1623959}
|
|
||||||
2021-11-16 17:53:30 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042555,"outputBytes":2967938}
|
|
||||||
2021-11-16 17:53:30 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:53:30 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:53:31 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:53:31 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:53:31 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546001,"outputBytes":462570}
|
|
||||||
2021-11-16 17:53:31 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:53:31 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546009,"outputBytes":462574}
|
|
||||||
2021-11-16 17:53:31 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:53:31 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546076,"outputBytes":462646}
|
|
||||||
2021-11-16 17:53:31 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:53:31 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:53:31 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545638,"outputBytes":464803}
|
|
||||||
2021-11-16 17:53:31 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:53:32 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042506,"outputBytes":1623918}
|
|
||||||
2021-11-16 17:53:32 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042506,"outputBytes":2967889}
|
|
||||||
2021-11-16 17:53:32 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:53:32 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2967889,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815209,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:53:45 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:43 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:57:43 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:57:43 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546069,"outputBytes":462710}
|
|
||||||
2021-11-16 17:57:43 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:57:43 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546077,"outputBytes":462714}
|
|
||||||
2021-11-16 17:57:43 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:57:43 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546144,"outputBytes":462786}
|
|
||||||
2021-11-16 17:57:43 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:57:43 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:57:43 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545706,"outputBytes":464955}
|
|
||||||
2021-11-16 17:57:44 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:57:44 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042574,"outputBytes":1624032}
|
|
||||||
2021-11-16 17:57:45 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042574,"outputBytes":2968024}
|
|
||||||
2021-11-16 17:57:45 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:57:45 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2968024,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815375,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:49 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:57:50 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 17:59:14 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:59:14 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:59:14 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546027,"outputBytes":462385}
|
|
||||||
2021-11-16 17:59:14 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:59:14 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546035,"outputBytes":462389}
|
|
||||||
2021-11-16 17:59:14 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:59:14 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546102,"outputBytes":462461}
|
|
||||||
2021-11-16 17:59:14 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:59:14 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:59:14 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545664,"outputBytes":464570}
|
|
||||||
2021-11-16 17:59:15 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:59:15 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042532,"outputBytes":1623811}
|
|
||||||
2021-11-16 17:59:16 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042532,"outputBytes":2967724}
|
|
||||||
2021-11-16 17:59:16 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:59:16 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:59:29 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 17:59:29 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:59:29 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":545905,"outputBytes":462353}
|
|
||||||
2021-11-16 17:59:29 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:59:29 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":545913,"outputBytes":462357}
|
|
||||||
2021-11-16 17:59:29 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:59:29 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":545980,"outputBytes":462429}
|
|
||||||
2021-11-16 17:59:29 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:59:29 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:59:29 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545542,"outputBytes":464538}
|
|
||||||
2021-11-16 17:59:30 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:59:30 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042410,"outputBytes":1623789}
|
|
||||||
2021-11-16 17:59:31 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042410,"outputBytes":2967692}
|
|
||||||
2021-11-16 17:59:31 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:59:31 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 17:59:56 [36mINFO: [39m Watch: {"event":"modify","input":"src/tfjs/constants.ts"}
|
|
||||||
2021-11-16 17:59:56 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 17:59:56 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546046,"outputBytes":462412}
|
|
||||||
2021-11-16 17:59:56 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 17:59:56 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546054,"outputBytes":462416}
|
|
||||||
2021-11-16 17:59:56 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 17:59:56 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546121,"outputBytes":462488}
|
|
||||||
2021-11-16 17:59:56 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 17:59:56 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 17:59:56 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545683,"outputBytes":464609}
|
|
||||||
2021-11-16 17:59:56 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 17:59:57 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042551,"outputBytes":1623825}
|
|
||||||
2021-11-16 17:59:57 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042551,"outputBytes":2967746}
|
|
||||||
2021-11-16 17:59:57 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 17:59:57 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 18:00:16 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/emotion.ts"}
|
|
||||||
2021-11-16 18:00:16 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 18:00:16 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546056,"outputBytes":462409}
|
|
||||||
2021-11-16 18:00:16 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 18:00:16 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546064,"outputBytes":462413}
|
|
||||||
2021-11-16 18:00:16 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 18:00:16 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546131,"outputBytes":462485}
|
|
||||||
2021-11-16 18:00:16 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 18:00:16 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 18:00:16 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545693,"outputBytes":464606}
|
|
||||||
2021-11-16 18:00:16 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 18:00:17 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042561,"outputBytes":1623825}
|
|
||||||
2021-11-16 18:00:17 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042561,"outputBytes":2967743}
|
|
||||||
2021-11-16 18:00:17 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 18:00:17 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 18:00:18 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:18 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:18 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:18 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2967743,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:18 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:18 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815089,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:19 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:21 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:21 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:21 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:21 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2967743,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:21 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:21 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815089,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:00:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:19 [36mINFO: [39m Watch: {"event":"modify","input":"src/tfjs/constants.ts"}
|
|
||||||
2021-11-16 18:01:19 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 18:01:19 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546058,"outputBytes":462411}
|
|
||||||
2021-11-16 18:01:19 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 18:01:19 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546066,"outputBytes":462415}
|
|
||||||
2021-11-16 18:01:19 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 18:01:19 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546133,"outputBytes":462487}
|
|
||||||
2021-11-16 18:01:19 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 18:01:19 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 18:01:19 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545695,"outputBytes":464608}
|
|
||||||
2021-11-16 18:01:19 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 18:01:20 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042563,"outputBytes":1623825}
|
|
||||||
2021-11-16 18:01:21 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042563,"outputBytes":2967745}
|
|
||||||
2021-11-16 18:01:21 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 18:01:21 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2967745,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815091,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:01:22 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:12:14 [36mINFO: [39m Watch: {"event":"modify","input":"src/tfjs/constants.ts"}
|
|
||||||
2021-11-16 18:12:14 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 18:12:14 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546116,"outputBytes":462454}
|
|
||||||
2021-11-16 18:12:14 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 18:12:14 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546124,"outputBytes":462458}
|
|
||||||
2021-11-16 18:12:14 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 18:12:14 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546191,"outputBytes":462530}
|
|
||||||
2021-11-16 18:12:14 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 18:12:14 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 18:12:14 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545753,"outputBytes":464663}
|
|
||||||
2021-11-16 18:12:15 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 18:12:15 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042621,"outputBytes":1623849}
|
|
||||||
2021-11-16 18:12:15 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042621,"outputBytes":2967783}
|
|
||||||
2021-11-16 18:12:15 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 18:12:15 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 18:16:56 [36mINFO: [39m Watch: {"event":"modify","input":"src/face/blazeface.ts"}
|
|
||||||
2021-11-16 18:16:56 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 18:16:56 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546393,"outputBytes":462611}
|
|
||||||
2021-11-16 18:16:56 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 18:16:56 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546401,"outputBytes":462615}
|
|
||||||
2021-11-16 18:16:56 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 18:16:56 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546468,"outputBytes":462687}
|
|
||||||
2021-11-16 18:16:56 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 18:16:56 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 18:16:56 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":546030,"outputBytes":464840}
|
|
||||||
2021-11-16 18:16:56 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 18:16:57 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042898,"outputBytes":1623903}
|
|
||||||
2021-11-16 18:16:57 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042898,"outputBytes":2967926}
|
|
||||||
2021-11-16 18:16:57 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 18:16:57 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 18:16:57 [36mINFO: [39m Watch: {"event":"modify","input":"src/face/facemesh.ts","skip":true}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2967926,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815553,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:27 [36mINFO: [39m Watch: {"event":"modify","input":"src/face/blazeface.ts"}
|
|
||||||
2021-11-16 18:17:27 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 18:17:27 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546331,"outputBytes":462558}
|
|
||||||
2021-11-16 18:17:27 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 18:17:27 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546339,"outputBytes":462562}
|
|
||||||
2021-11-16 18:17:27 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 18:17:27 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546406,"outputBytes":462634}
|
|
||||||
2021-11-16 18:17:27 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 18:17:27 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 18:17:27 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545968,"outputBytes":464787}
|
|
||||||
2021-11-16 18:17:28 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 18:17:28 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042836,"outputBytes":1623881}
|
|
||||||
2021-11-16 18:17:29 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042836,"outputBytes":2967873}
|
|
||||||
2021-11-16 18:17:29 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 18:17:29 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2967873,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815456,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:33 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:58 [36mINFO: [39m Watch: {"event":"modify","input":"src/face/blazeface.ts"}
|
|
||||||
2021-11-16 18:17:58 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 18:17:58 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546253,"outputBytes":462488}
|
|
||||||
2021-11-16 18:17:58 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 18:17:58 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546261,"outputBytes":462492}
|
|
||||||
2021-11-16 18:17:58 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 18:17:58 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546328,"outputBytes":462564}
|
|
||||||
2021-11-16 18:17:58 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 18:17:58 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 18:17:58 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545890,"outputBytes":464705}
|
|
||||||
2021-11-16 18:17:58 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 18:17:59 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042758,"outputBytes":1623858}
|
|
||||||
2021-11-16 18:17:59 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042758,"outputBytes":2967808}
|
|
||||||
2021-11-16 18:17:59 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 18:17:59 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 18:17:59 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:59 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:59 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:17:59 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2967808,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815339,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:18:00 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:19:02 [36mINFO: [39m Watch: {"event":"modify","input":"src/body/movenet.ts"}
|
|
||||||
2021-11-16 18:19:02 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 18:19:02 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546212,"outputBytes":462441}
|
|
||||||
2021-11-16 18:19:02 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 18:19:02 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546220,"outputBytes":462445}
|
|
||||||
2021-11-16 18:19:02 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 18:19:03 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546287,"outputBytes":462517}
|
|
||||||
2021-11-16 18:19:03 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 18:19:03 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 18:19:03 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545849,"outputBytes":464658}
|
|
||||||
2021-11-16 18:19:03 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 18:19:04 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042717,"outputBytes":1623840}
|
|
||||||
2021-11-16 18:19:04 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042717,"outputBytes":2967761}
|
|
||||||
2021-11-16 18:19:04 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 18:19:04 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 18:23:09 [36mINFO: [39m Watch: {"event":"modify","input":"src/tfjs/constants.ts"}
|
|
||||||
2021-11-16 18:23:09 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 18:23:09 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546264,"outputBytes":462477}
|
|
||||||
2021-11-16 18:23:09 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 18:23:09 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546272,"outputBytes":462481}
|
|
||||||
2021-11-16 18:23:09 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 18:23:09 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546339,"outputBytes":462553}
|
|
||||||
2021-11-16 18:23:09 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 18:23:09 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 18:23:09 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":545901,"outputBytes":464707}
|
|
||||||
2021-11-16 18:23:10 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 18:23:10 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3042769,"outputBytes":1623860}
|
|
||||||
2021-11-16 18:23:11 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3042769,"outputBytes":2967793}
|
|
||||||
2021-11-16 18:23:11 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 18:23:11 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 18:27:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/ssrnet-gender.ts"}
|
|
||||||
2021-11-16 18:27:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/gear/ssrnet-age.ts","skip":true}
|
|
||||||
2021-11-16 18:27:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/face/faceres.ts","skip":true}
|
|
||||||
2021-11-16 18:27:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/body/efficientpose.ts","skip":true}
|
|
||||||
2021-11-16 18:27:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/face/blazeface.ts","skip":true}
|
|
||||||
2021-11-16 18:27:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/hand/handposedetector.ts","skip":true}
|
|
||||||
2021-11-16 18:27:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/face/facemesh.ts","skip":true}
|
|
||||||
2021-11-16 18:27:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/face/facemeshutil.ts","skip":true}
|
|
||||||
2021-11-16 18:27:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/hand/handposepipeline.ts","skip":true}
|
|
||||||
2021-11-16 18:27:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/object/nanodet.ts","skip":true}
|
|
||||||
2021-11-16 18:27:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/segmentation/segmentation.ts","skip":true}
|
|
||||||
2021-11-16 18:27:39 [36mINFO: [39m Watch: {"event":"modify","input":"src/body/blazepose.ts","skip":true}
|
|
||||||
2021-11-16 18:27:39 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/cpu","format":"cjs","platform":"node","input":"tfjs/tf-node.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":102,"outputBytes":1275}
|
|
||||||
2021-11-16 18:27:39 [35mSTATE:[39m Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":62,"inputBytes":546837,"outputBytes":462529}
|
|
||||||
2021-11-16 18:27:39 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/gpu","format":"cjs","platform":"node","input":"tfjs/tf-node-gpu.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":110,"outputBytes":1283}
|
|
||||||
2021-11-16 18:27:39 [35mSTATE:[39m Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":62,"inputBytes":546845,"outputBytes":462533}
|
|
||||||
2021-11-16 18:27:39 [35mSTATE:[39m Compile: {"name":"tfjs/nodejs/wasm","format":"cjs","platform":"node","input":"tfjs/tf-node-wasm.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":149,"outputBytes":1350}
|
|
||||||
2021-11-16 18:27:39 [35mSTATE:[39m Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":62,"inputBytes":546912,"outputBytes":462605}
|
|
||||||
2021-11-16 18:27:39 [35mSTATE:[39m Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1652}
|
|
||||||
2021-11-16 18:27:39 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":2326,"outputBytes":912}
|
|
||||||
2021-11-16 18:27:39 [35mSTATE:[39m Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":62,"inputBytes":546474,"outputBytes":464732}
|
|
||||||
2021-11-16 18:27:40 [35mSTATE:[39m Compile: {"name":"tfjs/browser/esm/custom","format":"esm","platform":"browser","input":"tfjs/tf-custom.ts","output":"dist/tfjs.esm.js","files":1,"inputBytes":307,"outputBytes":2497780}
|
|
||||||
2021-11-16 18:27:40 [35mSTATE:[39m Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":62,"inputBytes":3043342,"outputBytes":1623856}
|
|
||||||
2021-11-16 18:27:40 [35mSTATE:[39m Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":62,"inputBytes":3043342,"outputBytes":2967838}
|
|
||||||
2021-11-16 18:27:40 [35mSTATE:[39m Compile: {"name":"demo/typescript","format":"esm","platform":"browser","input":"demo/typescript/index.ts","output":"demo/typescript/index.js","files":1,"inputBytes":5811,"outputBytes":3821}
|
|
||||||
2021-11-16 18:27:40 [35mSTATE:[39m Compile: {"name":"demo/faceid","format":"esm","platform":"browser","input":"demo/faceid/index.ts","output":"demo/faceid/index.js","files":2,"inputBytes":15166,"outputBytes":11786}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/html","size":1953,"url":"/demo/typescript/index.html","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":3821,"url":"/demo/typescript/index.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"font/woff2","size":181500,"url":"/assets/lato-light.woff2","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"text/javascript","size":2967838,"url":"/dist/human.esm.js","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":8281,"url":"/demo/typescript/index.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4815947,"url":"/dist/human.esm.js.map","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":161813,"url":"/models/movenet-lightning.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":79038,"url":"/models/blazeface.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":71432,"url":"/models/faceres.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":17980,"url":"/models/emotion.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":122025,"url":"/models/iris.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":89289,"url":"/models/facemesh.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":602812,"url":"/models/handtrack.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/json","size":82231,"url":"/models/handlandmark-full.json","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"image/x-icon","size":261950,"url":"/favicon.ico","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":4650216,"url":"/models/movenet-lightning.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":538928,"url":"/models/blazeface.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":820516,"url":"/models/emotion.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2599092,"url":"/models/iris.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2955780,"url":"/models/facemesh.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":5431368,"url":"/models/handlandmark-full.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":6978814,"url":"/models/faceres.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
2021-11-16 18:30:01 [32mDATA: [39m HTTP: {"method":"GET","ver":"1.1","status":200,"mime":"application/octet-stream","size":2964837,"url":"/models/handtrack.bin","remote":"::ffff:192.168.0.200"}
|
|
||||||
|
|
1352
test/test.log
1352
test/test.log
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,3 @@
|
||||||
|
import type { Tensor } from './types';
|
||||||
|
export declare const constants: Record<string, Tensor | number | number[]>;
|
||||||
|
export declare function init(): void;
|
Loading…
Reference in New Issue