diff --git a/TODO.md b/TODO.md index 2c7e8401..951e5fa1 100644 --- a/TODO.md +++ b/TODO.md @@ -8,7 +8,6 @@ - Optimize BlazePose - Add BlazePose heatmaps -- Update NanoDet
diff --git a/demo/facematch/node-match-worker.js b/demo/facematch/node-match-worker.js index d0be27ba..37837ef0 100644 --- a/demo/facematch/node-match-worker.js +++ b/demo/facematch/node-match-worker.js @@ -11,20 +11,21 @@ let records = 0; const descLength = 1024; // descriptor length in bytes -function distance(descriptor1, index, options = { order: 2 }) { +function distance(descBuffer, index, options = { order: 2 }) { + const descriptor = new Float32Array(descBuffer); let sum = 0; - for (let i = 0; i < descriptor1.length; i++) { - const diff = (options.order === 2) ? (descriptor1[i] - view[index * descLength + i]) : (Math.abs(descriptor1[i] - view[index * descLength + i])); + for (let i = 0; i < descriptor.length; i++) { + const diff = (options.order === 2) ? (descriptor[i] - view[index * descLength + i]) : (Math.abs(descriptor[i] - view[index * descLength + i])); sum += (options.order === 2) ? (diff * diff) : (diff ** options.order); } return sum; } -function match(descriptor, options = { order: 2 }) { +function match(descBuffer, options = { order: 2 }) { let best = Number.MAX_SAFE_INTEGER; let index = -1; for (let i = 0; i < records; i++) { - const res = distance(descriptor, i, { order: options.order }); + const res = distance(descBuffer, i, { order: options.order }); if (res < best) { best = res; index = i; diff --git a/demo/facematch/node-match.js b/demo/facematch/node-match.js index 58245f6b..67ec685e 100644 --- a/demo/facematch/node-match.js +++ b/demo/facematch/node-match.js @@ -125,8 +125,12 @@ async function workersStart(numWorkers) { } const match = (descriptor) => { + // const arr = Float32Array.from(descriptor); + const buffer = new ArrayBuffer(options.descLength * 4); + const view = new Float32Array(buffer); + view.set(descriptor); const available = data.workers.filter((worker) => !!worker).length; // find number of available workers - if (available > 0) data.workers[data.requestID % available].postMessage({ descriptor, request: data.requestID }); // round robin to first available worker + if (available > 0) data.workers[data.requestID % available].postMessage({ descriptor: buffer, request: data.requestID }, [buffer]); // round robin to first available worker else log.error('no available workers'); };