From 96b09dae57762c526807865e6e9c3b313169e68b Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Tue, 19 Oct 2021 08:09:46 -0400 Subject: [PATCH] update --- CHANGELOG.md | 6 +- dist/human.esm-nobundle.js | 2 +- dist/human.esm.js | 2 +- dist/human.js | 2 +- dist/human.node-gpu.js | 2 +- dist/human.node-wasm.js | 2 +- dist/human.node.js | 2 +- test/build.log | 48 +- test/test.log | 1018 ++++++++--------- typedoc/classes/Human.html | 2 +- typedoc/classes/Models.html | 2 +- typedoc/index.html | 2 +- typedoc/interfaces/BodyConfig.html | 2 +- typedoc/interfaces/BodyResult.html | 2 +- typedoc/interfaces/Config.html | 2 +- typedoc/interfaces/DrawOptions.html | 2 +- typedoc/interfaces/FaceAntiSpoofConfig.html | 2 +- typedoc/interfaces/FaceConfig.html | 2 +- typedoc/interfaces/FaceDescriptionConfig.html | 2 +- typedoc/interfaces/FaceDetectorConfig.html | 2 +- typedoc/interfaces/FaceEmotionConfig.html | 2 +- typedoc/interfaces/FaceIrisConfig.html | 2 +- typedoc/interfaces/FaceMeshConfig.html | 2 +- typedoc/interfaces/FaceResult.html | 2 +- typedoc/interfaces/FilterConfig.html | 2 +- typedoc/interfaces/GestureConfig.html | 2 +- typedoc/interfaces/HandConfig.html | 2 +- typedoc/interfaces/HandResult.html | 2 +- typedoc/interfaces/ObjectConfig.html | 2 +- typedoc/interfaces/ObjectResult.html | 2 +- typedoc/interfaces/PersonResult.html | 2 +- typedoc/interfaces/Result.html | 2 +- typedoc/interfaces/SegmentationConfig.html | 2 +- 33 files changed, 568 insertions(+), 564 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4be4e0b..ba823814 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,12 @@ ## Changelog -### **HEAD -> main** 2021/10/15 mandic00@live.com +### **2.3.4** 2021/10/19 mandic00@live.com + +### **origin/main** 2021/10/19 mandic00@live.com + +- minor blazepose optimizations - compress samples - remove handdetect from default package - remove posenet from default package diff --git a/dist/human.esm-nobundle.js b/dist/human.esm-nobundle.js index 3a8ccb22..91e2b336 100644 --- a/dist/human.esm-nobundle.js +++ b/dist/human.esm-nobundle.js @@ -243,7 +243,7 @@ var version9 = { }; // package.json -var version10 = "2.3.3"; +var version10 = "2.3.4"; // src/image/imagefxshaders.ts var vertexIdentity = ` diff --git a/dist/human.esm.js b/dist/human.esm.js index e9ab39ec..9d585022 100644 --- a/dist/human.esm.js +++ b/dist/human.esm.js @@ -67732,7 +67732,7 @@ var version92 = { }; // package.json -var version6 = "2.3.3"; +var version6 = "2.3.4"; // src/image/imagefxshaders.ts var vertexIdentity = ` diff --git a/dist/human.js b/dist/human.js index 18f89da2..7f1958d2 100644 --- a/dist/human.js +++ b/dist/human.js @@ -6808,7 +6808,7 @@ return a / b;`,Dse=` } } } - `}getUserCode(){return this.makeFromPixelsSource()}setPipeline(e){this.pipeline=e}setUniform(e,t){if(!this.uniform){let n=e.createBuffer({size:t.length*4,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});this.uniform=n}!t||t.length===this.lastUniformData.length&&t.every((n,s)=>n===this.lastUniformData[s])||(e.queue.writeBuffer(this.uniform,0,new Uint32Array(t)),this.lastUniformData=t)}makeInputTexture(e,t,n){return(!this.inputTexture||this.lastPixelSize.width!==t||this.lastPixelSize.height!==n)&&(this.inputTexture&&this.inputTexture.destroy(),this.inputTexture=e.createTexture({size:[t,n],format:"rgba8unorm",usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.lastPixelSize.width=t,this.lastPixelSize.height=n),this.inputTexture}dispose(){this.disposed||(this.uniform&&this.uniform.destroy(),this.inputTexture&&this.inputTexture.destroy(),this.disposed=!0)}getLayout(e){return this.layout===null&&(this.layout=this.createTextureLayout(e)),this.layout}createTextureLayout(e){let t=[];t.push({binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}),t.push({binding:1,visibility:GPUShaderStage.COMPUTE,texture:{}}),t.push({binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{}});let n=e.createBindGroupLayout({entries:t}),s=e.createPipelineLayout({bindGroupLayouts:[n]});return{bindGroupLayout:n,pipelineLayout:s}}},u0e=class extends p6{constructor(){super(...arguments);this.layout=null,this.useImport=!0}getUserCode(){return this.makeFromPixelsSource()}getLayout(e){return this.layout===null&&(this.layout=this.createTextureImportLayout(e)),this.layout}createTextureImportLayout(e){let t=[];t.push({binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}),t.push({binding:1,visibility:GPUShaderStage.COMPUTE,externalTexture:{}}),t.push({binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{}});let n=e.createBindGroupLayout({entries:t}),s=e.createPipelineLayout({bindGroupLayouts:[n]});return{bindGroupLayout:n,pipelineLayout:s}}},c0e=Z().getNumber("WEBGPU_CPU_HANDOFF_SIZE_THRESHOLD"),n0=class extends Ul{constructor(e,t=!1){super();if(this.commandQueueOwnedIds=new WeakSet,this.tensorDisposalQueue=[],this.uniformDisposalQueue=[],this.disposed=!1,this.uploadWaitMs=0,this.downloadWaitMs=0,this.dispatchNumberInEncoder=0,!Px())throw new Error("WebGPU is not supported on this device");this.layoutCache={},this.pipelineCache={},this.device=e,this.queue=e.queue,this.currentCommandEncoder=null,this.currentComputePass=null,this.supportTimeQuery=t,this.bufferManager=new l0e(this.device),this.tensorMap=new Bc(this,ns()),this.supportTimeQuery&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:2})),Z().getBool("WEBGPU_USE_PROFILE_TOOL")&&(this.dummyCanvas=document.createElement("canvas"),this.dummyCanvas.width=1,this.dummyCanvas.height=1,this.dummyContext=this.dummyCanvas.getContext("webgpu"),this.dummyContext.configure({device:e,format:"bgra8unorm"}),document.body.appendChild(this.dummyCanvas))}nextDataId(){return n0.nextDataId++}floatPrecision(){return 32}defaultGpuBufferUsage(){return GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}flushDisposalQueue(){this.tensorDisposalQueue.forEach(e=>{this.maybeReleaseBuffer(e),this.tensorMap.delete(e)}),this.uniformDisposalQueue.forEach(e=>this.bufferManager.releaseBuffer(e.buffer,e.byteSize,e.usage)),this.tensorDisposalQueue=[],this.uniformDisposalQueue=[]}disposeData(e,t=!1){if(this.tensorMap.has(e)){let n=this.tensorMap.get(e);if(n.refCount--,!t&&n.refCount>0)return!1;if(this.commandQueueOwnedIds.has(e))return this.tensorDisposalQueue.push(e),!1;this.maybeReleaseBuffer(e);let{complexTensorInfos:s}=this.tensorMap.get(e);s!=null&&(this.disposeData(s.real.dataId,!0),this.disposeData(s.imag.dataId,!0)),this.tensorMap.delete(e)}return!0}memory(){return{numBytesInGPU:this.bufferManager.numBytesUsed,numBytesAllocatedInGPU:this.bufferManager.numBytesAllocated,unreliable:!1}}getBufferManager(){return this.bufferManager}acquireBuffer(e,t=this.defaultGpuBufferUsage()){return this.bufferManager.acquireBuffer(e,t)}maybeReleaseBuffer(e){let t=this.tensorMap.get(e);t!=null&&t.bufferInfo.buffer!=null&&(this.bufferManager.releaseBuffer(t.bufferInfo.buffer,t.bufferInfo.byteSize,t.bufferInfo.usage),t.bufferInfo.buffer=null)}refCount(e){return this.tensorMap.has(e)?this.tensorMap.get(e).refCount:0}incRef(e){let t=this.tensorMap.get(e);t.refCount++}decRef(e){if(this.tensorMap.has(e)){let t=this.tensorMap.get(e);t.refCount--}}write(e,t,n){if(n==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let s={id:this.nextDataId()},r=v.sizeFromShape(t)*_x(n);return n==="bool"&&e instanceof Uint8Array&&(e=Int32Array.from(e)),this.tensorMap.set(s,{dtype:n,values:e,bufferInfo:{byteSize:r,usage:this.defaultGpuBufferUsage()},refCount:1}),s}move(e,t,n,s,r){if(s==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let a=v.sizeFromShape(n)*_x(s);this.tensorMap.set(e,{dtype:s,values:t,bufferInfo:{byteSize:a,usage:this.defaultGpuBufferUsage()},refCount:r})}submitQueue(){this.ensureComputePassEnded(),this.queue.submit([this.currentCommandEncoder.finish()]),this.currentCommandEncoder=null,this.dispatchNumberInEncoder=0,this.commandQueueOwnedIds=new WeakSet,this.flushDisposalQueue()}getBuffer(e){return this.uploadToGPU(e),this.tensorMap.get(e).bufferInfo.buffer}getFromPixelsProgram(e){switch(e){case"copyExternal":return this.fromPixelProgram||(this.fromPixelProgram=new p6),this.fromPixelProgram;case"import":return this.fromPixelImportProgram||(this.fromPixelImportProgram=new u0e),this.fromPixelImportProgram;default:v.assert(!1,()=>"Unsupported fromPixels shape");return}}ensureCommandEncoderReady(){this.currentCommandEncoder||(this.currentCommandEncoder=this.device.createCommandEncoder())}ensureComputePassEnded(){this.currentComputePass&&(this.currentComputePass.endPass(),this.currentComputePass=null)}getComputePass(){return this.currentComputePass||(this.currentComputePass=this.currentCommandEncoder.beginComputePass()),this.currentComputePass}async getBufferData(e){if(e.values!=null)return e.values;let t=this.acquireBuffer(e.bufferInfo.byteSize,GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ);this.ensureCommandEncoderReady(),this.ensureComputePassEnded(),this.currentCommandEncoder.copyBufferToBuffer(e.bufferInfo.buffer,0,t,0,e.bufferInfo.byteSize),this.submitQueue(),await t.mapAsync(GPUMapMode.READ);let n=t.getMappedRange().slice(0);return t.unmap(),t!=null&&this.bufferManager.releaseBuffer(t,e.bufferInfo.byteSize,GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ),Z().getBool("WEBGPU_USE_PROFILE_TOOL")&&(v.assert(this.dummyContext!==void 0,()=>"Fail to get context for profiling tool"),this.dummyContext.getCurrentTexture()),n}convertAndCacheOnCPU(e,t){let n=this.tensorMap.get(e);return this.maybeReleaseBuffer(e),n.values=t,n.values}readSync(e){let t=this.tensorMap.get(e),{values:n}=t;if(n==null)throw new Error("WebGPU readSync is only available for CPU-resident tensors.");return n}async read(e){if(!this.tensorMap.has(e))throw new Error(`Tensor ${e} was not registered!`);let t=this.tensorMap.get(e),{values:n}=t;if(n!=null)return this.convertAndCacheOnCPU(e,n);let s;if(t.dtype==="complex64"){let r=await Promise.all([this.read(t.complexTensorInfos.real.dataId),this.read(t.complexTensorInfos.imag.dataId)]),a=r[0],o=r[1];s=E.mergeRealAndImagArrays(a,o)}else{let r=await this.getBufferData(t);s=FC(r,t.dtype)}return this.convertAndCacheOnCPU(e,s),s}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(s=>v.decodeString(s))}catch(s){throw new Error("Failed to decode encoded string bytes into utf-8")}return We(e.shape,e.dtype,n)}async time(e){let t=this.activeTimers,n=[],s=!1;this.programTimersStack==null?(this.programTimersStack=n,s=!0):this.activeTimers.push(n),this.activeTimers=n,e();let r=v.flatten(this.activeTimers.map(l=>l.query)).filter(l=>l!=null),a=v.flatten(this.activeTimers.map(l=>l.name)).filter(l=>l!=null);this.activeTimers=t,s&&(this.programTimersStack=null);let o={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null},i=await Promise.all(r);return o.kernelMs=v.sum(i),o.getExtraProfileInfo=()=>i.map((l,c)=>({name:a[c],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", "),this.uploadWaitMs=0,this.downloadWaitMs=0,o}getAndSavePipeline(e,t){return e in this.pipelineCache||(this.pipelineCache[e]=t()),this.pipelineCache[e]}makeTensorInfo(e,t,n){let s;if(t==="string"&&n!=null&&n.length>0&&v.isString(n[0])){let r=n.map(a=>v.encodeString(a));s=this.write(r,e,t)}else s=this.write(n,e,t);return{dataId:s,shape:e,dtype:t}}tensorToBinding(e){if(!e)return null;let t=this.tensorMap.get(e.dataId);return{offset:0,size:t.bufferInfo.byteSize,buffer:t.bufferInfo.buffer}}async getQueryTime(e){return this.supportTimeQuery?this.getTimeFromQuerySet(e):0}uploadToGPU(e){let t=this.tensorMap.get(e);t.bufferInfo.buffer==null&&(t.bufferInfo.buffer=this.acquireBuffer(t.bufferInfo.byteSize),t.values&&this.queue.writeBuffer(t.bufferInfo.buffer,0,t.values))}makeUniformsDataView(e){let t=this.acquireBuffer(e.byteLength,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);return this.queue.writeBuffer(t,0,e),{offset:0,size:e.byteLength,buffer:t}}arrayToDataView(e,t){let n=4,s=new DataView(new ArrayBuffer(t*n)),r=0;return e.forEach(a=>{let o=a.data;if(a.type!=="int32"&&a.type!=="float32"&&a.type!=="uint32")throw new Error(`${a.type} not supported!`);a.type==="int32"?o.forEach(i=>{s.setInt32(r*n,i,!0),r++}):a.type==="uint32"?o.forEach(i=>{s.setUint32(r*n,i,!0),r++}):o.forEach(i=>{s.setFloat32(r*n,i,!0),r++})}),s}computePadding(e){let t=0,n=0,s=0,r=[];return e.forEach((a,o)=>{a.data.length===0&&(a.data=[1]);let i;switch(a.data.length){case 0:i=1;break;case 1:i=1;break;case 2:i=2;break;case 3:i=4;break;case 4:i=4;break;default:v.assert(!1,()=>`Unsupported ${a.data.length}D shape`)}n=Math.ceil(t/i)*i-t;for(let l=0;l$.shape),l="int32";i.map($=>{o.push({type:l,data:$})});let c=v.computeStrides(r.shape);o.push({type:l,data:c}),e.size!=null&&o.push({type:l,data:[e.size]}),o.push({type:"uint32",data:e.dispatch}),s&&(o=[...o,...s]);let u=null,d=this.computePadding(o),p=d.byteLength;u=this.makeUniformsDataView(d);let h=t.map(($,F)=>{if($.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");return this.uploadToGPU($.dataId),{dtype:this.tensorMap.get($.dataId).dtype,shape:$.shape,name:e.variableNames[F]}});this.uploadToGPU(r.dataId);let f=h.map($=>$.dtype).concat(r.dtype),m=h.map($=>E.getBroadcastDims($.shape,r.shape)),g=h.map($=>v.arraysEqual($.shape,r.shape)).join("_"),y=m.map($=>$.join("_")).join(";"),A=s6(e,i,f,y,g),{bindGroupLayout:x,pipelineLayout:b}=this.getCachedOrCreateLayout(e.variableNames.length),w=this.getAndSavePipeline(A,()=>n6(this.device,e,b,h,r)),k=this.activeTimers!=null,S=Zhe(this.device,x,t.map($=>this.tensorToBinding($)),this.tensorToBinding(r),u);this.ensureCommandEncoderReady();let N=this.getComputePass();if(k&&this.supportTimeQuery&&N.writeTimestamp(this.querySet,0),N.setPipeline(w),N.setBindGroup(0,S),N.dispatch(e.dispatch[0],e.dispatch[1],e.dispatch[2]),k&&this.supportTimeQuery&&N.writeTimestamp(this.querySet,1),this.dispatchNumberInEncoder++,t.forEach($=>{this.commandQueueOwnedIds.add($.dataId)}),this.commandQueueOwnedIds.add(r.dataId),u){let $={byteSize:p,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM,buffer:u.buffer};this.uniformDisposalQueue.push($)}return Z().get("WEBGPU_DEFERRED_SUBMIT_BATCH_SIZE")<=this.dispatchNumberInEncoder&&this.submitQueue(),k&&this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(this.querySet)}),r}runFromPixelsProgram(e,t,n,s,r){let a=this.device.createBindGroup({layout:n.bindGroupLayout,entries:[{binding:0,resource:{buffer:t}},{binding:1,resource:s},{binding:2,resource:{buffer:e.uniform}}]});this.ensureCommandEncoderReady();let o=this.getComputePass(),i=this.activeTimers!=null;i&&this.supportTimeQuery&&o.writeTimestamp(this.querySet,0),o.setPipeline(e.pipeline),o.setBindGroup(0,a),o.dispatch(e.dispatch[0],e.dispatch[1],e.dispatch[2]),i&&this.supportTimeQuery&&o.writeTimestamp(this.querySet,1),this.commandQueueOwnedIds.add(r),this.submitQueue(),i&&this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(this.querySet)})}async getTimeFromQuerySet(e){let t=this.acquireBuffer(16,GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE),n=this.acquireBuffer(16,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST);this.ensureCommandEncoderReady(),this.ensureComputePassEnded(),this.currentCommandEncoder.resolveQuerySet(e,0,2,t,0),this.currentCommandEncoder.copyBufferToBuffer(t,0,n,0,16),this.submitQueue(),await n.mapAsync(GPUMapMode.READ);let s=new BigUint64Array(n.getMappedRange()),r=Number(s[1]-s[0]);return n.unmap(),this.bufferManager.releaseBuffer(n,16,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST),this.bufferManager.releaseBuffer(t,16,GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE),r/1e6}shouldExecuteOnCPU(e,t=c0e){return Z().getBool("WEBGPU_CPU_FORWARD")&&e.every(n=>this.tensorMap.get(n.dataId).bufferInfo.buffer==null&&v.sizeFromShape(n.shape)n0,webgpu_util:()=>PC});vu.isBrowser()&&Px()&&Xi("webgpu",async()=>{Z().set("CHECK_COMPUTATION_FOR_ERRORS",!1);let e={powerPreference:Z().get("WEBGPU_USE_LOW_POWER_GPU")?"low-power":"high-performance"},t=await navigator.gpu.requestAdapter(e),n={},s=t.features.has("timestamp-query");s?n={requiredFeatures:["timestamp-query"]}:console.warn("This device doesn't support timestamp-query extension. Start Chrome browser with flag --disable-dawn-features=disallow_unsafe_apis then try again. Or zero will shown for the kernel time when profiling mode isenabled. Using performance.now is not workable for webgpu sinceit doesn't support synchronously to read data from GPU.");let r=await t.requestDevice(n);return new n0(r,s)},3);var d0e="3.9.0",p0e="3.9.0",h0e="3.9.0",f0e="3.9.0",m0e="3.9.0",g0e="3.9.0",y0e="3.9.0",A0e="3.9.0",x0e={tfjs:d0e,"tfjs-core":p0e,"tfjs-data":h0e,"tfjs-layers":f0e,"tfjs-converter":m0e,"tfjs-backend-cpu":g0e,"tfjs-backend-webgl":y0e,"tfjs-backend-wasm":A0e};var Vx="2.3.3";var f6=` + `}getUserCode(){return this.makeFromPixelsSource()}setPipeline(e){this.pipeline=e}setUniform(e,t){if(!this.uniform){let n=e.createBuffer({size:t.length*4,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});this.uniform=n}!t||t.length===this.lastUniformData.length&&t.every((n,s)=>n===this.lastUniformData[s])||(e.queue.writeBuffer(this.uniform,0,new Uint32Array(t)),this.lastUniformData=t)}makeInputTexture(e,t,n){return(!this.inputTexture||this.lastPixelSize.width!==t||this.lastPixelSize.height!==n)&&(this.inputTexture&&this.inputTexture.destroy(),this.inputTexture=e.createTexture({size:[t,n],format:"rgba8unorm",usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.lastPixelSize.width=t,this.lastPixelSize.height=n),this.inputTexture}dispose(){this.disposed||(this.uniform&&this.uniform.destroy(),this.inputTexture&&this.inputTexture.destroy(),this.disposed=!0)}getLayout(e){return this.layout===null&&(this.layout=this.createTextureLayout(e)),this.layout}createTextureLayout(e){let t=[];t.push({binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}),t.push({binding:1,visibility:GPUShaderStage.COMPUTE,texture:{}}),t.push({binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{}});let n=e.createBindGroupLayout({entries:t}),s=e.createPipelineLayout({bindGroupLayouts:[n]});return{bindGroupLayout:n,pipelineLayout:s}}},u0e=class extends p6{constructor(){super(...arguments);this.layout=null,this.useImport=!0}getUserCode(){return this.makeFromPixelsSource()}getLayout(e){return this.layout===null&&(this.layout=this.createTextureImportLayout(e)),this.layout}createTextureImportLayout(e){let t=[];t.push({binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}),t.push({binding:1,visibility:GPUShaderStage.COMPUTE,externalTexture:{}}),t.push({binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{}});let n=e.createBindGroupLayout({entries:t}),s=e.createPipelineLayout({bindGroupLayouts:[n]});return{bindGroupLayout:n,pipelineLayout:s}}},c0e=Z().getNumber("WEBGPU_CPU_HANDOFF_SIZE_THRESHOLD"),n0=class extends Ul{constructor(e,t=!1){super();if(this.commandQueueOwnedIds=new WeakSet,this.tensorDisposalQueue=[],this.uniformDisposalQueue=[],this.disposed=!1,this.uploadWaitMs=0,this.downloadWaitMs=0,this.dispatchNumberInEncoder=0,!Px())throw new Error("WebGPU is not supported on this device");this.layoutCache={},this.pipelineCache={},this.device=e,this.queue=e.queue,this.currentCommandEncoder=null,this.currentComputePass=null,this.supportTimeQuery=t,this.bufferManager=new l0e(this.device),this.tensorMap=new Bc(this,ns()),this.supportTimeQuery&&(this.querySet=this.device.createQuerySet({type:"timestamp",count:2})),Z().getBool("WEBGPU_USE_PROFILE_TOOL")&&(this.dummyCanvas=document.createElement("canvas"),this.dummyCanvas.width=1,this.dummyCanvas.height=1,this.dummyContext=this.dummyCanvas.getContext("webgpu"),this.dummyContext.configure({device:e,format:"bgra8unorm"}),document.body.appendChild(this.dummyCanvas))}nextDataId(){return n0.nextDataId++}floatPrecision(){return 32}defaultGpuBufferUsage(){return GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC|GPUBufferUsage.COPY_DST}flushDisposalQueue(){this.tensorDisposalQueue.forEach(e=>{this.maybeReleaseBuffer(e),this.tensorMap.delete(e)}),this.uniformDisposalQueue.forEach(e=>this.bufferManager.releaseBuffer(e.buffer,e.byteSize,e.usage)),this.tensorDisposalQueue=[],this.uniformDisposalQueue=[]}disposeData(e,t=!1){if(this.tensorMap.has(e)){let n=this.tensorMap.get(e);if(n.refCount--,!t&&n.refCount>0)return!1;if(this.commandQueueOwnedIds.has(e))return this.tensorDisposalQueue.push(e),!1;this.maybeReleaseBuffer(e);let{complexTensorInfos:s}=this.tensorMap.get(e);s!=null&&(this.disposeData(s.real.dataId,!0),this.disposeData(s.imag.dataId,!0)),this.tensorMap.delete(e)}return!0}memory(){return{numBytesInGPU:this.bufferManager.numBytesUsed,numBytesAllocatedInGPU:this.bufferManager.numBytesAllocated,unreliable:!1}}getBufferManager(){return this.bufferManager}acquireBuffer(e,t=this.defaultGpuBufferUsage()){return this.bufferManager.acquireBuffer(e,t)}maybeReleaseBuffer(e){let t=this.tensorMap.get(e);t!=null&&t.bufferInfo.buffer!=null&&(this.bufferManager.releaseBuffer(t.bufferInfo.buffer,t.bufferInfo.byteSize,t.bufferInfo.usage),t.bufferInfo.buffer=null)}refCount(e){return this.tensorMap.has(e)?this.tensorMap.get(e).refCount:0}incRef(e){let t=this.tensorMap.get(e);t.refCount++}decRef(e){if(this.tensorMap.has(e)){let t=this.tensorMap.get(e);t.refCount--}}write(e,t,n){if(n==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let s={id:this.nextDataId()},r=v.sizeFromShape(t)*_x(n);return n==="bool"&&e instanceof Uint8Array&&(e=Int32Array.from(e)),this.tensorMap.set(s,{dtype:n,values:e,bufferInfo:{byteSize:r,usage:this.defaultGpuBufferUsage()},refCount:1}),s}move(e,t,n,s,r){if(s==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let a=v.sizeFromShape(n)*_x(s);this.tensorMap.set(e,{dtype:s,values:t,bufferInfo:{byteSize:a,usage:this.defaultGpuBufferUsage()},refCount:r})}submitQueue(){this.ensureComputePassEnded(),this.queue.submit([this.currentCommandEncoder.finish()]),this.currentCommandEncoder=null,this.dispatchNumberInEncoder=0,this.commandQueueOwnedIds=new WeakSet,this.flushDisposalQueue()}getBuffer(e){return this.uploadToGPU(e),this.tensorMap.get(e).bufferInfo.buffer}getFromPixelsProgram(e){switch(e){case"copyExternal":return this.fromPixelProgram||(this.fromPixelProgram=new p6),this.fromPixelProgram;case"import":return this.fromPixelImportProgram||(this.fromPixelImportProgram=new u0e),this.fromPixelImportProgram;default:v.assert(!1,()=>"Unsupported fromPixels shape");return}}ensureCommandEncoderReady(){this.currentCommandEncoder||(this.currentCommandEncoder=this.device.createCommandEncoder())}ensureComputePassEnded(){this.currentComputePass&&(this.currentComputePass.endPass(),this.currentComputePass=null)}getComputePass(){return this.currentComputePass||(this.currentComputePass=this.currentCommandEncoder.beginComputePass()),this.currentComputePass}async getBufferData(e){if(e.values!=null)return e.values;let t=this.acquireBuffer(e.bufferInfo.byteSize,GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ);this.ensureCommandEncoderReady(),this.ensureComputePassEnded(),this.currentCommandEncoder.copyBufferToBuffer(e.bufferInfo.buffer,0,t,0,e.bufferInfo.byteSize),this.submitQueue(),await t.mapAsync(GPUMapMode.READ);let n=t.getMappedRange().slice(0);return t.unmap(),t!=null&&this.bufferManager.releaseBuffer(t,e.bufferInfo.byteSize,GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ),Z().getBool("WEBGPU_USE_PROFILE_TOOL")&&(v.assert(this.dummyContext!==void 0,()=>"Fail to get context for profiling tool"),this.dummyContext.getCurrentTexture()),n}convertAndCacheOnCPU(e,t){let n=this.tensorMap.get(e);return this.maybeReleaseBuffer(e),n.values=t,n.values}readSync(e){let t=this.tensorMap.get(e),{values:n}=t;if(n==null)throw new Error("WebGPU readSync is only available for CPU-resident tensors.");return n}async read(e){if(!this.tensorMap.has(e))throw new Error(`Tensor ${e} was not registered!`);let t=this.tensorMap.get(e),{values:n}=t;if(n!=null)return this.convertAndCacheOnCPU(e,n);let s;if(t.dtype==="complex64"){let r=await Promise.all([this.read(t.complexTensorInfos.real.dataId),this.read(t.complexTensorInfos.imag.dataId)]),a=r[0],o=r[1];s=E.mergeRealAndImagArrays(a,o)}else{let r=await this.getBufferData(t);s=FC(r,t.dtype)}return this.convertAndCacheOnCPU(e,s),s}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(s=>v.decodeString(s))}catch(s){throw new Error("Failed to decode encoded string bytes into utf-8")}return We(e.shape,e.dtype,n)}async time(e){let t=this.activeTimers,n=[],s=!1;this.programTimersStack==null?(this.programTimersStack=n,s=!0):this.activeTimers.push(n),this.activeTimers=n,e();let r=v.flatten(this.activeTimers.map(l=>l.query)).filter(l=>l!=null),a=v.flatten(this.activeTimers.map(l=>l.name)).filter(l=>l!=null);this.activeTimers=t,s&&(this.programTimersStack=null);let o={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null},i=await Promise.all(r);return o.kernelMs=v.sum(i),o.getExtraProfileInfo=()=>i.map((l,c)=>({name:a[c],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", "),this.uploadWaitMs=0,this.downloadWaitMs=0,o}getAndSavePipeline(e,t){return e in this.pipelineCache||(this.pipelineCache[e]=t()),this.pipelineCache[e]}makeTensorInfo(e,t,n){let s;if(t==="string"&&n!=null&&n.length>0&&v.isString(n[0])){let r=n.map(a=>v.encodeString(a));s=this.write(r,e,t)}else s=this.write(n,e,t);return{dataId:s,shape:e,dtype:t}}tensorToBinding(e){if(!e)return null;let t=this.tensorMap.get(e.dataId);return{offset:0,size:t.bufferInfo.byteSize,buffer:t.bufferInfo.buffer}}async getQueryTime(e){return this.supportTimeQuery?this.getTimeFromQuerySet(e):0}uploadToGPU(e){let t=this.tensorMap.get(e);t.bufferInfo.buffer==null&&(t.bufferInfo.buffer=this.acquireBuffer(t.bufferInfo.byteSize),t.values&&this.queue.writeBuffer(t.bufferInfo.buffer,0,t.values))}makeUniformsDataView(e){let t=this.acquireBuffer(e.byteLength,GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM);return this.queue.writeBuffer(t,0,e),{offset:0,size:e.byteLength,buffer:t}}arrayToDataView(e,t){let n=4,s=new DataView(new ArrayBuffer(t*n)),r=0;return e.forEach(a=>{let o=a.data;if(a.type!=="int32"&&a.type!=="float32"&&a.type!=="uint32")throw new Error(`${a.type} not supported!`);a.type==="int32"?o.forEach(i=>{s.setInt32(r*n,i,!0),r++}):a.type==="uint32"?o.forEach(i=>{s.setUint32(r*n,i,!0),r++}):o.forEach(i=>{s.setFloat32(r*n,i,!0),r++})}),s}computePadding(e){let t=0,n=0,s=0,r=[];return e.forEach((a,o)=>{a.data.length===0&&(a.data=[1]);let i;switch(a.data.length){case 0:i=1;break;case 1:i=1;break;case 2:i=2;break;case 3:i=4;break;case 4:i=4;break;default:v.assert(!1,()=>`Unsupported ${a.data.length}D shape`)}n=Math.ceil(t/i)*i-t;for(let l=0;l$.shape),l="int32";i.map($=>{o.push({type:l,data:$})});let c=v.computeStrides(r.shape);o.push({type:l,data:c}),e.size!=null&&o.push({type:l,data:[e.size]}),o.push({type:"uint32",data:e.dispatch}),s&&(o=[...o,...s]);let u=null,d=this.computePadding(o),p=d.byteLength;u=this.makeUniformsDataView(d);let h=t.map(($,F)=>{if($.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");return this.uploadToGPU($.dataId),{dtype:this.tensorMap.get($.dataId).dtype,shape:$.shape,name:e.variableNames[F]}});this.uploadToGPU(r.dataId);let f=h.map($=>$.dtype).concat(r.dtype),m=h.map($=>E.getBroadcastDims($.shape,r.shape)),g=h.map($=>v.arraysEqual($.shape,r.shape)).join("_"),y=m.map($=>$.join("_")).join(";"),A=s6(e,i,f,y,g),{bindGroupLayout:x,pipelineLayout:b}=this.getCachedOrCreateLayout(e.variableNames.length),w=this.getAndSavePipeline(A,()=>n6(this.device,e,b,h,r)),k=this.activeTimers!=null,S=Zhe(this.device,x,t.map($=>this.tensorToBinding($)),this.tensorToBinding(r),u);this.ensureCommandEncoderReady();let N=this.getComputePass();if(k&&this.supportTimeQuery&&N.writeTimestamp(this.querySet,0),N.setPipeline(w),N.setBindGroup(0,S),N.dispatch(e.dispatch[0],e.dispatch[1],e.dispatch[2]),k&&this.supportTimeQuery&&N.writeTimestamp(this.querySet,1),this.dispatchNumberInEncoder++,t.forEach($=>{this.commandQueueOwnedIds.add($.dataId)}),this.commandQueueOwnedIds.add(r.dataId),u){let $={byteSize:p,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.UNIFORM,buffer:u.buffer};this.uniformDisposalQueue.push($)}return Z().get("WEBGPU_DEFERRED_SUBMIT_BATCH_SIZE")<=this.dispatchNumberInEncoder&&this.submitQueue(),k&&this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(this.querySet)}),r}runFromPixelsProgram(e,t,n,s,r){let a=this.device.createBindGroup({layout:n.bindGroupLayout,entries:[{binding:0,resource:{buffer:t}},{binding:1,resource:s},{binding:2,resource:{buffer:e.uniform}}]});this.ensureCommandEncoderReady();let o=this.getComputePass(),i=this.activeTimers!=null;i&&this.supportTimeQuery&&o.writeTimestamp(this.querySet,0),o.setPipeline(e.pipeline),o.setBindGroup(0,a),o.dispatch(e.dispatch[0],e.dispatch[1],e.dispatch[2]),i&&this.supportTimeQuery&&o.writeTimestamp(this.querySet,1),this.commandQueueOwnedIds.add(r),this.submitQueue(),i&&this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(this.querySet)})}async getTimeFromQuerySet(e){let t=this.acquireBuffer(16,GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE),n=this.acquireBuffer(16,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST);this.ensureCommandEncoderReady(),this.ensureComputePassEnded(),this.currentCommandEncoder.resolveQuerySet(e,0,2,t,0),this.currentCommandEncoder.copyBufferToBuffer(t,0,n,0,16),this.submitQueue(),await n.mapAsync(GPUMapMode.READ);let s=new BigUint64Array(n.getMappedRange()),r=Number(s[1]-s[0]);return n.unmap(),this.bufferManager.releaseBuffer(n,16,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST),this.bufferManager.releaseBuffer(t,16,GPUBufferUsage.COPY_SRC|GPUBufferUsage.QUERY_RESOLVE),r/1e6}shouldExecuteOnCPU(e,t=c0e){return Z().getBool("WEBGPU_CPU_FORWARD")&&e.every(n=>this.tensorMap.get(n.dataId).bufferInfo.buffer==null&&v.sizeFromShape(n.shape)n0,webgpu_util:()=>PC});vu.isBrowser()&&Px()&&Xi("webgpu",async()=>{Z().set("CHECK_COMPUTATION_FOR_ERRORS",!1);let e={powerPreference:Z().get("WEBGPU_USE_LOW_POWER_GPU")?"low-power":"high-performance"},t=await navigator.gpu.requestAdapter(e),n={},s=t.features.has("timestamp-query");s?n={requiredFeatures:["timestamp-query"]}:console.warn("This device doesn't support timestamp-query extension. Start Chrome browser with flag --disable-dawn-features=disallow_unsafe_apis then try again. Or zero will shown for the kernel time when profiling mode isenabled. Using performance.now is not workable for webgpu sinceit doesn't support synchronously to read data from GPU.");let r=await t.requestDevice(n);return new n0(r,s)},3);var d0e="3.9.0",p0e="3.9.0",h0e="3.9.0",f0e="3.9.0",m0e="3.9.0",g0e="3.9.0",y0e="3.9.0",A0e="3.9.0",x0e={tfjs:d0e,"tfjs-core":p0e,"tfjs-data":h0e,"tfjs-layers":f0e,"tfjs-converter":m0e,"tfjs-backend-cpu":g0e,"tfjs-backend-webgl":y0e,"tfjs-backend-wasm":A0e};var Vx="2.3.4";var f6=` precision highp float; attribute vec2 pos; attribute vec2 uv; diff --git a/dist/human.node-gpu.js b/dist/human.node-gpu.js index 10fc0e42..9a568833 100644 --- a/dist/human.node-gpu.js +++ b/dist/human.node-gpu.js @@ -257,7 +257,7 @@ var config = { var tf28 = __toModule(require_tfjs_esm()); // package.json -var version = "2.3.3"; +var version = "2.3.4"; // src/tfjs/humangl.ts var tf24 = __toModule(require_tfjs_esm()); diff --git a/dist/human.node-wasm.js b/dist/human.node-wasm.js index e8a66dfc..d16a8acf 100644 --- a/dist/human.node-wasm.js +++ b/dist/human.node-wasm.js @@ -258,7 +258,7 @@ var config = { var tf28 = __toModule(require_tfjs_esm()); // package.json -var version = "2.3.3"; +var version = "2.3.4"; // src/tfjs/humangl.ts var tf24 = __toModule(require_tfjs_esm()); diff --git a/dist/human.node.js b/dist/human.node.js index 8fb97572..dbedecaf 100644 --- a/dist/human.node.js +++ b/dist/human.node.js @@ -257,7 +257,7 @@ var config = { var tf28 = __toModule(require_tfjs_esm()); // package.json -var version = "2.3.3"; +var version = "2.3.4"; // src/tfjs/humangl.ts var tf24 = __toModule(require_tfjs_esm()); diff --git a/test/build.log b/test/build.log index fa2c2e79..fd8eda61 100644 --- a/test/build.log +++ b/test/build.log @@ -1,24 +1,24 @@ -2021-10-19 07:51:32 INFO:  @vladmandic/human version 2.3.3 -2021-10-19 07:51:32 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.10.0 -2021-10-19 07:51:32 INFO:  Application: {"name":"@vladmandic/human","version":"2.3.3"} -2021-10-19 07:51:32 INFO:  Environment: {"profile":"production","config":"build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} -2021-10-19 07:51:32 INFO:  Toolchain: {"build":"0.6.1","esbuild":"0.13.8","typescript":"4.4.4","typedoc":"0.22.6","eslint":"8.0.1"} -2021-10-19 07:51:32 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} -2021-10-19 07:51:32 STATE: Clean: {"locations":["dist/*","types/*","typedoc/*"]} -2021-10-19 07:51:32 STATE: 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-10-19 07:51:32 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":55,"inputBytes":523789,"outputBytes":434713} -2021-10-19 07:51:32 STATE: 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-10-19 07:51:32 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":55,"inputBytes":523797,"outputBytes":434717} -2021-10-19 07:51:32 STATE: 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-10-19 07:51:32 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":55,"inputBytes":523864,"outputBytes":434789} -2021-10-19 07:51:32 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1631} -2021-10-19 07:51:32 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":3085,"outputBytes":856} -2021-10-19 07:51:32 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":55,"inputBytes":523370,"outputBytes":436272} -2021-10-19 07:51:33 STATE: Compile: {"name":"tfjs/browser/esm/bundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":8,"inputBytes":3085,"outputBytes":2691961} -2021-10-19 07:51:34 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":55,"inputBytes":3214475,"outputBytes":1611302} -2021-10-19 07:51:34 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":55,"inputBytes":3214475,"outputBytes":2928137} -2021-10-19 07:51:53 STATE: Typings: {"input":"src/human.ts","output":"types","files":6} -2021-10-19 07:51:59 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":36,"generated":true} -2021-10-19 07:52:30 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":91,"errors":0,"warnings":0} -2021-10-19 07:52:31 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} -2021-10-19 07:52:31 INFO:  Done... +2021-10-19 08:05:23 INFO:  @vladmandic/human version 2.3.4 +2021-10-19 08:05:23 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.10.0 +2021-10-19 08:05:23 INFO:  Application: {"name":"@vladmandic/human","version":"2.3.4"} +2021-10-19 08:05:23 INFO:  Environment: {"profile":"production","config":"build.json","package":"package.json","tsconfig":true,"eslintrc":true,"git":true} +2021-10-19 08:05:23 INFO:  Toolchain: {"build":"0.6.1","esbuild":"0.13.8","typescript":"4.4.4","typedoc":"0.22.6","eslint":"8.0.1"} +2021-10-19 08:05:23 INFO:  Build: {"profile":"production","steps":["clean","compile","typings","typedoc","lint","changelog"]} +2021-10-19 08:05:23 STATE: Clean: {"locations":["dist/*","types/*","typedoc/*"]} +2021-10-19 08:05:23 STATE: 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-10-19 08:05:23 STATE: Compile: {"name":"human/nodejs/cpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node.js","files":55,"inputBytes":523789,"outputBytes":434713} +2021-10-19 08:05:23 STATE: 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-10-19 08:05:23 STATE: Compile: {"name":"human/nodejs/gpu","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-gpu.js","files":55,"inputBytes":523797,"outputBytes":434717} +2021-10-19 08:05:23 STATE: 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-10-19 08:05:23 STATE: Compile: {"name":"human/nodejs/wasm","format":"cjs","platform":"node","input":"src/human.ts","output":"dist/human.node-wasm.js","files":55,"inputBytes":523864,"outputBytes":434789} +2021-10-19 08:05:23 STATE: Compile: {"name":"tfjs/browser/version","format":"esm","platform":"browser","input":"tfjs/tf-version.ts","output":"dist/tfjs.version.js","files":1,"inputBytes":1063,"outputBytes":1631} +2021-10-19 08:05:23 STATE: Compile: {"name":"tfjs/browser/esm/nobundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":2,"inputBytes":3085,"outputBytes":856} +2021-10-19 08:05:23 STATE: Compile: {"name":"human/browser/esm/nobundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm-nobundle.js","files":55,"inputBytes":523370,"outputBytes":436272} +2021-10-19 08:05:24 STATE: Compile: {"name":"tfjs/browser/esm/bundle","format":"esm","platform":"browser","input":"tfjs/tf-browser.ts","output":"dist/tfjs.esm.js","files":8,"inputBytes":3085,"outputBytes":2691961} +2021-10-19 08:05:25 STATE: Compile: {"name":"human/browser/iife/bundle","format":"iife","platform":"browser","input":"src/human.ts","output":"dist/human.js","files":55,"inputBytes":3214475,"outputBytes":1611302} +2021-10-19 08:05:25 STATE: Compile: {"name":"human/browser/esm/bundle","format":"esm","platform":"browser","input":"src/human.ts","output":"dist/human.esm.js","files":55,"inputBytes":3214475,"outputBytes":2928137} +2021-10-19 08:05:44 STATE: Typings: {"input":"src/human.ts","output":"types","files":6} +2021-10-19 08:05:50 STATE: TypeDoc: {"input":"src/human.ts","output":"typedoc","objects":36,"generated":true} +2021-10-19 08:06:23 STATE: Lint: {"locations":["*.json","src/**/*.ts","test/**/*.js","demo/**/*.js"],"files":91,"errors":0,"warnings":0} +2021-10-19 08:06:23 STATE: ChangeLog: {"repository":"https://github.com/vladmandic/human","branch":"main","output":"CHANGELOG.md"} +2021-10-19 08:06:23 INFO:  Done... diff --git a/test/test.log b/test/test.log index 9a675b26..aa87d99c 100644 --- a/test/test.log +++ b/test/test.log @@ -1,509 +1,509 @@ -2021-10-19 07:55:50 INFO:  @vladmandic/human version 2.3.3 -2021-10-19 07:55:50 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.10.0 -2021-10-19 07:55:50 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"] -2021-10-19 07:55:50 INFO:  demos: ["../demo/nodejs/node.js","../demo/nodejs/node-canvas.js","../demo/nodejs/node-env.js","../demo/nodejs/node-event.js","../demo/nodejs/node-multiprocess.js"] -2021-10-19 07:55:50 INFO:  -2021-10-19 07:55:50 INFO:  test-node.js start -2021-10-19 07:55:51 STATE: test-node.js passed: configuration default validation [] -2021-10-19 07:55:51 STATE: test-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2021-10-19 07:55:52 STATE: test-node.js passed: models loaded 21 10 [{"name":"age","loaded":false},{"name":"agegenderrace","loaded":false},{"name":"blazeposedetect","loaded":false},{"name":"blazepose","loaded":false},{"name":"centernet","loaded":true},{"name":"efficientpose","loaded":false},{"name":"embedding","loaded":false},{"name":"emotion","loaded":true},{"name":"facedetect","loaded":true},{"name":"faceiris","loaded":true},{"name":"facemesh","loaded":true},{"name":"faceres","loaded":true},{"name":"gender","loaded":false},{"name":"handpose","loaded":false},{"name":"handskeleton","loaded":true},{"name":"handtrack","loaded":true},{"name":"movenet","loaded":true},{"name":"nanodet","loaded":false},{"name":"posenet","loaded":false},{"name":"segmentation","loaded":true},{"name":"antispoof","loaded":false}] -2021-10-19 07:55:52 STATE: test-node.js passed: create human -2021-10-19 07:55:52 INFO:  test-node.js human version: 2.3.3 -2021-10-19 07:55:52 INFO:  test-node.js platform: linux x64 agent: NodeJS v16.10.0 -2021-10-19 07:55:52 INFO:  test-node.js tfjs version: 3.9.0 -2021-10-19 07:55:52 STATE: test-node.js passed: set backend: tensorflow -2021-10-19 07:55:52 STATE: test-node.js tensors 1920 -2021-10-19 07:55:52 STATE: test-node.js passed: load models -2021-10-19 07:55:52 STATE: test-node.js result: defined models: 21 loaded models: 10 -2021-10-19 07:55:52 STATE: test-node.js passed: warmup: none default -2021-10-19 07:55:52 STATE: test-node.js passed: warmup none result match -2021-10-19 07:55:52 STATE: test-node.js event: image -2021-10-19 07:55:53 STATE: test-node.js event: detect -2021-10-19 07:55:53 STATE: test-node.js event: warmup -2021-10-19 07:55:53 STATE: test-node.js passed: warmup: face default -2021-10-19 07:55:53 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} -2021-10-19 07:55:53 DATA:  test-node.js result: performance: load: 379 total: 1419 -2021-10-19 07:55:53 STATE: test-node.js passed: warmup face result match -2021-10-19 07:55:53 STATE: test-node.js event: image -2021-10-19 07:55:54 STATE: test-node.js event: detect -2021-10-19 07:55:54 STATE: test-node.js event: warmup -2021-10-19 07:55:54 STATE: test-node.js passed: warmup: body default -2021-10-19 07:55:54 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:55:54 DATA:  test-node.js result: performance: load: 379 total: 1050 -2021-10-19 07:55:54 STATE: test-node.js passed: warmup body result match -2021-10-19 07:55:54 INFO:  test-node.js test default -2021-10-19 07:55:55 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:55:55 STATE: test-node.js event: image -2021-10-19 07:55:56 STATE: test-node.js event: detect -2021-10-19 07:55:56 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:55:56 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:55:56 DATA:  test-node.js result: performance: load: 379 total: 1017 -2021-10-19 07:55:56 STATE: test-node.js passed: default result face match -2021-10-19 07:55:56 INFO:  test-node.js test sync -2021-10-19 07:55:57 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:55:57 STATE: test-node.js event: image -2021-10-19 07:55:58 STATE: test-node.js event: detect -2021-10-19 07:55:58 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:55:58 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:55:58 DATA:  test-node.js result: performance: load: 379 total: 976 -2021-10-19 07:55:58 STATE: test-node.js passed: default sync -2021-10-19 07:55:58 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2021-10-19 07:55:58 STATE: test-node.js passed: image input null [1,256,256,3] -2021-10-19 07:55:58 STATE: test-node.js passed: invalid input {"error":"could not convert input to tensor"} -2021-10-19 07:55:58 INFO:  test-node.js test face similarity -2021-10-19 07:55:58 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2021-10-19 07:55:58 STATE: test-node.js event: image -2021-10-19 07:55:59 STATE: test-node.js event: detect -2021-10-19 07:55:59 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default -2021-10-19 07:55:59 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} -2021-10-19 07:55:59 DATA:  test-node.js result: performance: load: 379 total: 983 -2021-10-19 07:56:00 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:00 STATE: test-node.js event: image -2021-10-19 07:56:01 STATE: test-node.js event: detect -2021-10-19 07:56:01 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:01 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:01 DATA:  test-node.js result: performance: load: 379 total: 1087 -2021-10-19 07:56:01 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} -2021-10-19 07:56:01 STATE: test-node.js event: image -2021-10-19 07:56:02 STATE: test-node.js event: detect -2021-10-19 07:56:02 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:56:02 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} -2021-10-19 07:56:02 DATA:  test-node.js result: performance: load: 379 total: 909 -2021-10-19 07:56:02 STATE: test-node.js passed: face descriptor -2021-10-19 07:56:02 STATE: test-node.js passed: face similarity {"similarity":[1,0.9020035660133001,0.8971897628968076],"descriptors":[1024,1024,1024]} -2021-10-19 07:56:02 INFO:  test-node.js test face matching -2021-10-19 07:56:02 STATE: test-node.js passed: face database 57 -2021-10-19 07:56:02 STATE: test-node.js passed: face match {"first":{"index":4,"similarity":0.953739066390141}} {"second":{"index":4,"similarity":0.9028518469611467}} {"third":{"index":4,"similarity":0.9020967977212865}} -2021-10-19 07:56:02 INFO:  test-node.js test object -2021-10-19 07:56:03 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:03 STATE: test-node.js event: image -2021-10-19 07:56:04 STATE: test-node.js event: detect -2021-10-19 07:56:04 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:04 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:04 DATA:  test-node.js result: performance: load: 379 total: 952 -2021-10-19 07:56:04 STATE: test-node.js passed: object result match -2021-10-19 07:56:04 INFO:  test-node.js test sensitive -2021-10-19 07:56:05 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:05 STATE: test-node.js event: image -2021-10-19 07:56:06 STATE: test-node.js event: detect -2021-10-19 07:56:06 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:06 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 7 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:06 DATA:  test-node.js result: performance: load: 379 total: 1055 -2021-10-19 07:56:06 STATE: test-node.js passed: sensitive result match -2021-10-19 07:56:06 STATE: test-node.js passed: sensitive face result match -2021-10-19 07:56:06 STATE: test-node.js passed: sensitive face emotion result mismatch 4 -2021-10-19 07:56:06 STATE: test-node.js passed: sensitive body result match -2021-10-19 07:56:06 STATE: test-node.js passed: sensitive hand result match -2021-10-19 07:56:06 INFO:  test-node.js test detectors -2021-10-19 07:56:07 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:07 STATE: test-node.js event: image -2021-10-19 07:56:07 STATE: test-node.js event: detect -2021-10-19 07:56:07 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:07 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:07 DATA:  test-node.js result: performance: load: 379 total: 667 -2021-10-19 07:56:07 STATE: test-node.js passed: detector result face match -2021-10-19 07:56:07 STATE: test-node.js passed: detector result hand match -2021-10-19 07:56:08 STATE: test-node.js event: image -2021-10-19 07:56:08 STATE: test-node.js event: detect -2021-10-19 07:56:08 STATE: test-node.js passed: detect: random default -2021-10-19 07:56:08 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 person: 0 {} {} {"score":0.07,"keypoints":15} -2021-10-19 07:56:08 DATA:  test-node.js result: performance: load: 379 total: 656 -2021-10-19 07:56:08 INFO:  test-node.js test: first instance -2021-10-19 07:56:09 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} -2021-10-19 07:56:09 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:56:09 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2021-10-19 07:56:09 DATA:  test-node.js result: performance: load: 2 total: 677 -2021-10-19 07:56:09 INFO:  test-node.js test: second instance -2021-10-19 07:56:10 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} -2021-10-19 07:56:10 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:56:10 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2021-10-19 07:56:10 DATA:  test-node.js result: performance: load: 2 total: 644 -2021-10-19 07:56:10 INFO:  test-node.js test: concurrent -2021-10-19 07:56:10 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2021-10-19 07:56:10 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2021-10-19 07:56:11 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:12 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:12 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} -2021-10-19 07:56:13 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} -2021-10-19 07:56:13 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2021-10-19 07:56:14 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:14 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} -2021-10-19 07:56:14 STATE: test-node.js event: image -2021-10-19 07:56:14 STATE: test-node.js event: image -2021-10-19 07:56:14 STATE: test-node.js event: image -2021-10-19 07:56:20 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:56:20 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2021-10-19 07:56:20 DATA:  test-node.js result: performance: load: 1196 total: 6977 -2021-10-19 07:56:20 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:56:20 DATA:  test-node.js result: face: 2 body: 1 hand: 0 gesture: 1 object: 1 person: 2 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2021-10-19 07:56:20 DATA:  test-node.js result: performance: load: 1196 total: 6977 -2021-10-19 07:56:20 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default -2021-10-19 07:56:20 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2021-10-19 07:56:20 DATA:  test-node.js result: performance: load: 1196 total: 6979 -2021-10-19 07:56:20 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default -2021-10-19 07:56:20 DATA:  test-node.js result: face: 2 body: 1 hand: 1 gesture: 2 object: 1 person: 2 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2021-10-19 07:56:20 DATA:  test-node.js result: performance: load: 1196 total: 6979 -2021-10-19 07:56:20 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:20 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:20 DATA:  test-node.js result: performance: load: 1196 total: 6979 -2021-10-19 07:56:20 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:20 DATA:  test-node.js result: face: 2 body: 1 hand: 1 gesture: 1 object: 1 person: 2 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:20 DATA:  test-node.js result: performance: load: 1196 total: 6979 -2021-10-19 07:56:20 STATE: test-node.js event: detect -2021-10-19 07:56:20 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:56:20 DATA:  test-node.js result: face: 5 body: 1 hand: 0 gesture: 1 object: 1 person: 5 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2021-10-19 07:56:20 DATA:  test-node.js result: performance: load: 2485 total: 5783 -2021-10-19 07:56:20 STATE: test-node.js event: detect -2021-10-19 07:56:20 STATE: test-node.js event: detect -2021-10-19 07:56:20 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default -2021-10-19 07:56:20 DATA:  test-node.js result: face: 3 body: 1 hand: 1 gesture: 2 object: 1 person: 3 {"score":0.96} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2021-10-19 07:56:20 DATA:  test-node.js result: performance: load: 2485 total: 5783 -2021-10-19 07:56:20 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:20 DATA:  test-node.js result: face: 4 body: 1 hand: 1 gesture: 1 object: 1 person: 4 {"score":0.96} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:20 DATA:  test-node.js result: performance: load: 2485 total: 5783 -2021-10-19 07:56:20 STATE: test-node.js event: image -2021-10-19 07:56:21 STATE: test-node.js event: detect -2021-10-19 07:56:21 STATE: test-node.js passed: monkey patch -2021-10-19 07:56:21 STATE: test-node.js passed: segmentation [65536] -2021-10-19 07:56:21 STATE: test-node.js passeed: equal usage -2021-10-19 07:56:21 INFO:  test-node.js events: {"image":15,"detect":15,"warmup":2} -2021-10-19 07:56:21 INFO:  test-node.js tensors 1924 -2021-10-19 07:56:21 INFO:  test-node.js test complete: 29278 ms -2021-10-19 07:56:21 INFO:  -2021-10-19 07:56:21 INFO:  test-node-gpu.js start -2021-10-19 07:56:22 STATE: test-node-gpu.js passed: configuration default validation [] -2021-10-19 07:56:22 STATE: test-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2021-10-19 07:56:22 STATE: test-node-gpu.js passed: models loaded 21 10 [{"name":"age","loaded":false},{"name":"agegenderrace","loaded":false},{"name":"blazeposedetect","loaded":false},{"name":"blazepose","loaded":false},{"name":"centernet","loaded":true},{"name":"efficientpose","loaded":false},{"name":"embedding","loaded":false},{"name":"emotion","loaded":true},{"name":"facedetect","loaded":true},{"name":"faceiris","loaded":true},{"name":"facemesh","loaded":true},{"name":"faceres","loaded":true},{"name":"gender","loaded":false},{"name":"handpose","loaded":false},{"name":"handskeleton","loaded":true},{"name":"handtrack","loaded":true},{"name":"movenet","loaded":true},{"name":"nanodet","loaded":false},{"name":"posenet","loaded":false},{"name":"segmentation","loaded":true},{"name":"antispoof","loaded":false}] -2021-10-19 07:56:22 STATE: test-node-gpu.js passed: create human -2021-10-19 07:56:22 INFO:  test-node-gpu.js human version: 2.3.3 -2021-10-19 07:56:22 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v16.10.0 -2021-10-19 07:56:22 INFO:  test-node-gpu.js tfjs version: 3.9.0 -2021-10-19 07:56:22 STATE: test-node-gpu.js passed: set backend: tensorflow -2021-10-19 07:56:22 STATE: test-node-gpu.js tensors 1920 -2021-10-19 07:56:22 STATE: test-node-gpu.js passed: load models -2021-10-19 07:56:22 STATE: test-node-gpu.js result: defined models: 21 loaded models: 10 -2021-10-19 07:56:22 STATE: test-node-gpu.js passed: warmup: none default -2021-10-19 07:56:22 STATE: test-node-gpu.js passed: warmup none result match -2021-10-19 07:56:23 STATE: test-node-gpu.js event: image -2021-10-19 07:56:24 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:24 STATE: test-node-gpu.js event: warmup -2021-10-19 07:56:24 STATE: test-node-gpu.js passed: warmup: face default -2021-10-19 07:56:24 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} -2021-10-19 07:56:24 DATA:  test-node-gpu.js result: performance: load: 451 total: 1635 -2021-10-19 07:56:24 STATE: test-node-gpu.js passed: warmup face result match -2021-10-19 07:56:24 STATE: test-node-gpu.js event: image -2021-10-19 07:56:26 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:26 STATE: test-node-gpu.js event: warmup -2021-10-19 07:56:26 STATE: test-node-gpu.js passed: warmup: body default -2021-10-19 07:56:26 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:26 DATA:  test-node-gpu.js result: performance: load: 451 total: 1358 -2021-10-19 07:56:26 STATE: test-node-gpu.js passed: warmup body result match -2021-10-19 07:56:26 INFO:  test-node-gpu.js test default -2021-10-19 07:56:27 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:27 STATE: test-node-gpu.js event: image -2021-10-19 07:56:28 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:28 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:28 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:28 DATA:  test-node-gpu.js result: performance: load: 451 total: 1316 -2021-10-19 07:56:28 STATE: test-node-gpu.js passed: default result face match -2021-10-19 07:56:28 INFO:  test-node-gpu.js test sync -2021-10-19 07:56:29 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:29 STATE: test-node-gpu.js event: image -2021-10-19 07:56:30 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:30 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:30 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:30 DATA:  test-node-gpu.js result: performance: load: 451 total: 1499 -2021-10-19 07:56:30 STATE: test-node-gpu.js passed: default sync -2021-10-19 07:56:30 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2021-10-19 07:56:30 STATE: test-node-gpu.js passed: image input null [1,256,256,3] -2021-10-19 07:56:30 STATE: test-node-gpu.js passed: invalid input {"error":"could not convert input to tensor"} -2021-10-19 07:56:30 INFO:  test-node-gpu.js test face similarity -2021-10-19 07:56:31 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2021-10-19 07:56:31 STATE: test-node-gpu.js event: image -2021-10-19 07:56:32 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:32 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default -2021-10-19 07:56:32 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} -2021-10-19 07:56:32 DATA:  test-node-gpu.js result: performance: load: 451 total: 1664 -2021-10-19 07:56:33 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:33 STATE: test-node-gpu.js event: image -2021-10-19 07:56:35 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:35 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:35 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:35 DATA:  test-node-gpu.js result: performance: load: 451 total: 1484 -2021-10-19 07:56:35 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} -2021-10-19 07:56:35 STATE: test-node-gpu.js event: image -2021-10-19 07:56:37 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:37 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:56:37 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} -2021-10-19 07:56:37 DATA:  test-node-gpu.js result: performance: load: 451 total: 1404 -2021-10-19 07:56:37 STATE: test-node-gpu.js passed: face descriptor -2021-10-19 07:56:37 STATE: test-node-gpu.js passed: face similarity {"similarity":[1,0.9020035660133001,0.8971897628968076],"descriptors":[1024,1024,1024]} -2021-10-19 07:56:37 INFO:  test-node-gpu.js test face matching -2021-10-19 07:56:37 STATE: test-node-gpu.js passed: face database 57 -2021-10-19 07:56:37 STATE: test-node-gpu.js passed: face match {"first":{"index":4,"similarity":0.953739066390141}} {"second":{"index":4,"similarity":0.9028518469611467}} {"third":{"index":4,"similarity":0.9020967977212865}} -2021-10-19 07:56:37 INFO:  test-node-gpu.js test object -2021-10-19 07:56:38 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:38 STATE: test-node-gpu.js event: image -2021-10-19 07:56:39 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:39 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:39 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:39 DATA:  test-node-gpu.js result: performance: load: 451 total: 1352 -2021-10-19 07:56:39 STATE: test-node-gpu.js passed: object result match -2021-10-19 07:56:39 INFO:  test-node-gpu.js test sensitive -2021-10-19 07:56:40 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:40 STATE: test-node-gpu.js event: image -2021-10-19 07:56:42 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:42 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:42 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 7 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:42 DATA:  test-node-gpu.js result: performance: load: 451 total: 1551 -2021-10-19 07:56:42 STATE: test-node-gpu.js passed: sensitive result match -2021-10-19 07:56:42 STATE: test-node-gpu.js passed: sensitive face result match -2021-10-19 07:56:42 STATE: test-node-gpu.js passed: sensitive face emotion result mismatch 4 -2021-10-19 07:56:42 STATE: test-node-gpu.js passed: sensitive body result match -2021-10-19 07:56:42 STATE: test-node-gpu.js passed: sensitive hand result match -2021-10-19 07:56:42 INFO:  test-node-gpu.js test detectors -2021-10-19 07:56:43 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:43 STATE: test-node-gpu.js event: image -2021-10-19 07:56:44 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:44 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:44 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:44 DATA:  test-node-gpu.js result: performance: load: 451 total: 988 -2021-10-19 07:56:44 STATE: test-node-gpu.js passed: detector result face match -2021-10-19 07:56:44 STATE: test-node-gpu.js passed: detector result hand match -2021-10-19 07:56:44 STATE: test-node-gpu.js event: image -2021-10-19 07:56:45 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:45 STATE: test-node-gpu.js passed: detect: random default -2021-10-19 07:56:45 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 person: 0 {} {} {"score":0.06,"keypoints":15} -2021-10-19 07:56:45 DATA:  test-node-gpu.js result: performance: load: 451 total: 1039 -2021-10-19 07:56:45 INFO:  test-node-gpu.js test: first instance -2021-10-19 07:56:45 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} -2021-10-19 07:56:46 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:56:46 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2021-10-19 07:56:46 DATA:  test-node-gpu.js result: performance: load: 2 total: 955 -2021-10-19 07:56:46 INFO:  test-node-gpu.js test: second instance -2021-10-19 07:56:47 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} -2021-10-19 07:56:48 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:56:48 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2021-10-19 07:56:48 DATA:  test-node-gpu.js result: performance: load: 2 total: 859 -2021-10-19 07:56:48 INFO:  test-node-gpu.js test: concurrent -2021-10-19 07:56:48 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2021-10-19 07:56:48 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2021-10-19 07:56:49 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:50 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:50 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} -2021-10-19 07:56:50 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} -2021-10-19 07:56:50 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} -2021-10-19 07:56:51 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} -2021-10-19 07:56:52 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} -2021-10-19 07:56:52 STATE: test-node-gpu.js event: image -2021-10-19 07:56:52 STATE: test-node-gpu.js event: image -2021-10-19 07:56:52 STATE: test-node-gpu.js event: image -2021-10-19 07:56:58 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:56:58 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2021-10-19 07:56:58 DATA:  test-node-gpu.js result: performance: load: 1333 total: 8261 -2021-10-19 07:56:58 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:56:58 DATA:  test-node-gpu.js result: face: 2 body: 1 hand: 0 gesture: 1 object: 1 person: 2 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2021-10-19 07:56:58 DATA:  test-node-gpu.js result: performance: load: 1333 total: 8261 -2021-10-19 07:56:58 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default -2021-10-19 07:56:58 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: performance: load: 1333 total: 8266 -2021-10-19 07:56:59 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: face: 2 body: 1 hand: 1 gesture: 2 object: 1 person: 2 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: performance: load: 1333 total: 8266 -2021-10-19 07:56:59 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: performance: load: 1333 total: 8266 -2021-10-19 07:56:59 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: face: 2 body: 1 hand: 1 gesture: 1 object: 1 person: 2 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: performance: load: 1333 total: 8266 -2021-10-19 07:56:59 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:59 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: face: 5 body: 1 hand: 0 gesture: 1 object: 1 person: 5 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: performance: load: 2556 total: 6933 -2021-10-19 07:56:59 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:59 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:59 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: face: 3 body: 1 hand: 1 gesture: 2 object: 1 person: 3 {"score":0.96} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: performance: load: 2556 total: 6934 -2021-10-19 07:56:59 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: face: 4 body: 1 hand: 1 gesture: 1 object: 1 person: 4 {"score":0.96} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} -2021-10-19 07:56:59 DATA:  test-node-gpu.js result: performance: load: 2556 total: 6934 -2021-10-19 07:56:59 STATE: test-node-gpu.js event: image -2021-10-19 07:56:59 STATE: test-node-gpu.js event: detect -2021-10-19 07:56:59 STATE: test-node-gpu.js passed: monkey patch -2021-10-19 07:56:59 STATE: test-node-gpu.js passed: segmentation [65536] -2021-10-19 07:56:59 STATE: test-node-gpu.js passeed: equal usage -2021-10-19 07:56:59 INFO:  test-node-gpu.js events: {"image":15,"detect":15,"warmup":2} -2021-10-19 07:56:59 INFO:  test-node-gpu.js tensors 1924 -2021-10-19 07:56:59 INFO:  test-node-gpu.js test complete: 37235 ms -2021-10-19 07:56:59 INFO:  -2021-10-19 07:56:59 INFO:  test-node-wasm.js start -2021-10-19 07:57:00 STATE: test-node-wasm.js passed: model server: https://vladmandic.github.io/human/models/ -2021-10-19 07:57:00 STATE: test-node-wasm.js passed: configuration default validation [] -2021-10-19 07:57:00 STATE: test-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] -2021-10-19 07:57:01 STATE: test-node-wasm.js passed: models loaded 21 10 [{"name":"age","loaded":false},{"name":"agegenderrace","loaded":false},{"name":"blazeposedetect","loaded":false},{"name":"blazepose","loaded":false},{"name":"centernet","loaded":true},{"name":"efficientpose","loaded":false},{"name":"embedding","loaded":false},{"name":"emotion","loaded":true},{"name":"facedetect","loaded":true},{"name":"faceiris","loaded":true},{"name":"facemesh","loaded":true},{"name":"faceres","loaded":true},{"name":"gender","loaded":false},{"name":"handpose","loaded":false},{"name":"handskeleton","loaded":true},{"name":"handtrack","loaded":true},{"name":"movenet","loaded":true},{"name":"nanodet","loaded":false},{"name":"posenet","loaded":false},{"name":"segmentation","loaded":true},{"name":"antispoof","loaded":false}] -2021-10-19 07:57:01 STATE: test-node-wasm.js passed: create human -2021-10-19 07:57:01 INFO:  test-node-wasm.js human version: 2.3.3 -2021-10-19 07:57:01 INFO:  test-node-wasm.js platform: linux x64 agent: NodeJS v16.10.0 -2021-10-19 07:57:01 INFO:  test-node-wasm.js tfjs version: 3.9.0 -2021-10-19 07:57:01 STATE: test-node-wasm.js passed: set backend: wasm -2021-10-19 07:57:01 STATE: test-node-wasm.js tensors 1920 -2021-10-19 07:57:01 STATE: test-node-wasm.js passed: load models -2021-10-19 07:57:01 STATE: test-node-wasm.js result: defined models: 21 loaded models: 10 -2021-10-19 07:57:01 STATE: test-node-wasm.js passed: warmup: none default -2021-10-19 07:57:01 STATE: test-node-wasm.js passed: warmup none result match -2021-10-19 07:57:01 STATE: test-node-wasm.js event: image -2021-10-19 07:57:03 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:03 STATE: test-node-wasm.js event: warmup -2021-10-19 07:57:03 STATE: test-node-wasm.js passed: warmup: face default -2021-10-19 07:57:03 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":23.6,"gender":"female"} {} {"score":0.47,"keypoints":3} -2021-10-19 07:57:03 DATA:  test-node-wasm.js result: performance: load: 1286 total: 1217 -2021-10-19 07:57:03 ERROR: test-node-wasm.js failed: warmup face result mismatch 1 1 1 5 -2021-10-19 07:57:03 STATE: test-node-wasm.js event: image -2021-10-19 07:57:04 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:04 STATE: test-node-wasm.js event: warmup -2021-10-19 07:57:04 STATE: test-node-wasm.js passed: warmup: body default -2021-10-19 07:57:04 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17} -2021-10-19 07:57:04 DATA:  test-node-wasm.js result: performance: load: 1286 total: 847 -2021-10-19 07:57:04 STATE: test-node-wasm.js passed: warmup body result match -2021-10-19 07:57:04 INFO:  test-node-wasm.js test default -2021-10-19 07:57:05 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2021-10-19 07:57:05 STATE: test-node-wasm.js event: image -2021-10-19 07:57:06 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:06 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:57:06 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17} -2021-10-19 07:57:06 DATA:  test-node-wasm.js result: performance: load: 1286 total: 874 -2021-10-19 07:57:06 STATE: test-node-wasm.js passed: default result face match -2021-10-19 07:57:06 INFO:  test-node-wasm.js test sync -2021-10-19 07:57:08 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2021-10-19 07:57:08 STATE: test-node-wasm.js event: image -2021-10-19 07:57:09 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:09 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:57:09 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17} -2021-10-19 07:57:09 DATA:  test-node-wasm.js result: performance: load: 1286 total: 867 -2021-10-19 07:57:09 STATE: test-node-wasm.js passed: default sync -2021-10-19 07:57:09 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2021-10-19 07:57:09 STATE: test-node-wasm.js passed: image input null [1,256,256,3] -2021-10-19 07:57:09 STATE: test-node-wasm.js passed: invalid input {"error":"could not convert input to tensor"} -2021-10-19 07:57:09 INFO:  test-node-wasm.js test face similarity -2021-10-19 07:57:09 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2021-10-19 07:57:09 STATE: test-node-wasm.js event: image -2021-10-19 07:57:10 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:10 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default -2021-10-19 07:57:10 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":28.4,"gender":"female"} {} {"score":0.47,"keypoints":3} -2021-10-19 07:57:10 DATA:  test-node-wasm.js result: performance: load: 1286 total: 760 -2021-10-19 07:57:12 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2021-10-19 07:57:12 STATE: test-node-wasm.js event: image -2021-10-19 07:57:13 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:13 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:57:13 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17} -2021-10-19 07:57:13 DATA:  test-node-wasm.js result: performance: load: 1286 total: 871 -2021-10-19 07:57:13 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2021-10-19 07:57:13 STATE: test-node-wasm.js event: image -2021-10-19 07:57:14 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:14 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:57:14 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 0 person: 1 {"score":1,"age":29.5,"gender":"female"} {} {"score":0.75,"keypoints":7} -2021-10-19 07:57:14 DATA:  test-node-wasm.js result: performance: load: 1286 total: 666 -2021-10-19 07:57:14 STATE: test-node-wasm.js passed: face descriptor -2021-10-19 07:57:14 STATE: test-node-wasm.js passed: face similarity {"similarity":[1,0.9040641336882139,0.895983704095898],"descriptors":[1024,1024,1024]} -2021-10-19 07:57:14 INFO:  test-node-wasm.js test face matching -2021-10-19 07:57:14 STATE: test-node-wasm.js passed: face database 57 -2021-10-19 07:57:14 STATE: test-node-wasm.js passed: face match {"first":{"index":4,"similarity":0.9902354470817274}} {"second":{"index":4,"similarity":0.9045213429149392}} {"third":{"index":4,"similarity":0.8965257196777969}} -2021-10-19 07:57:14 INFO:  test-node-wasm.js test object -2021-10-19 07:57:16 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2021-10-19 07:57:16 STATE: test-node-wasm.js event: image -2021-10-19 07:57:16 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:16 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:57:16 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17} -2021-10-19 07:57:16 DATA:  test-node-wasm.js result: performance: load: 1286 total: 827 -2021-10-19 07:57:16 ERROR: test-node-wasm.js failed: object result mismatch 0 -2021-10-19 07:57:16 INFO:  test-node-wasm.js test sensitive -2021-10-19 07:57:18 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2021-10-19 07:57:18 STATE: test-node-wasm.js event: image -2021-10-19 07:57:19 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:19 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:57:19 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 7 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17} -2021-10-19 07:57:19 DATA:  test-node-wasm.js result: performance: load: 1286 total: 992 -2021-10-19 07:57:19 STATE: test-node-wasm.js passed: sensitive result match -2021-10-19 07:57:19 STATE: test-node-wasm.js passed: sensitive face result match -2021-10-19 07:57:19 ERROR: test-node-wasm.js failed: sensitive face emotion result mismatch 3 -2021-10-19 07:57:19 STATE: test-node-wasm.js passed: sensitive body result match -2021-10-19 07:57:19 STATE: test-node-wasm.js passed: sensitive hand result match -2021-10-19 07:57:19 INFO:  test-node-wasm.js test detectors -2021-10-19 07:57:21 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2021-10-19 07:57:21 STATE: test-node-wasm.js event: image -2021-10-19 07:57:21 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:21 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:57:21 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 0 person: 1 {"score":0.93} {} {"score":0.92,"keypoints":17} -2021-10-19 07:57:21 DATA:  test-node-wasm.js result: performance: load: 1286 total: 357 -2021-10-19 07:57:21 STATE: test-node-wasm.js passed: detector result face match -2021-10-19 07:57:21 STATE: test-node-wasm.js passed: detector result hand match -2021-10-19 07:57:22 STATE: test-node-wasm.js event: image -2021-10-19 07:57:22 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:22 STATE: test-node-wasm.js passed: detect: random default -2021-10-19 07:57:22 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 person: 0 {} {} {"score":0.07,"keypoints":15} -2021-10-19 07:57:22 DATA:  test-node-wasm.js result: performance: load: 1286 total: 328 -2021-10-19 07:57:22 INFO:  test-node-wasm.js test: first instance -2021-10-19 07:57:22 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2021-10-19 07:57:23 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:57:23 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 0 person: 1 {"score":0.96} {} {"score":0.75,"keypoints":16} -2021-10-19 07:57:23 DATA:  test-node-wasm.js result: performance: load: 2 total: 347 -2021-10-19 07:57:23 INFO:  test-node-wasm.js test: second instance -2021-10-19 07:57:23 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2021-10-19 07:57:24 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:57:24 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 0 person: 1 {"score":0.96} {} {"score":0.75,"keypoints":16} -2021-10-19 07:57:24 DATA:  test-node-wasm.js result: performance: load: 2 total: 330 -2021-10-19 07:57:24 INFO:  test-node-wasm.js test: concurrent -2021-10-19 07:57:24 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2021-10-19 07:57:24 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2021-10-19 07:57:26 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2021-10-19 07:57:27 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2021-10-19 07:57:28 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2021-10-19 07:57:28 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2021-10-19 07:57:28 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} -2021-10-19 07:57:30 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} -2021-10-19 07:57:31 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} -2021-10-19 07:57:31 STATE: test-node-wasm.js event: image -2021-10-19 07:57:31 STATE: test-node-wasm.js event: image -2021-10-19 07:57:31 STATE: test-node-wasm.js event: image -2021-10-19 07:57:34 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 0 person: 1 {"score":0.96} {} {"score":0.75,"keypoints":16} -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: performance: load: 2338 total: 5543 -2021-10-19 07:57:34 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: face: 2 body: 1 hand: 0 gesture: 1 object: 0 person: 2 {"score":0.96} {} {"score":0.75,"keypoints":16} -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: performance: load: 2338 total: 5543 -2021-10-19 07:57:34 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 0 person: 1 {"score":0.91} {} {"score":0.47,"keypoints":17} -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: performance: load: 2338 total: 5545 -2021-10-19 07:57:34 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: face: 2 body: 1 hand: 1 gesture: 2 object: 0 person: 2 {"score":0.91} {} {"score":0.47,"keypoints":17} -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: performance: load: 2338 total: 5545 -2021-10-19 07:57:34 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 0 person: 1 {"score":0.93} {} {"score":0.92,"keypoints":17} -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: performance: load: 2338 total: 5545 -2021-10-19 07:57:34 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: face: 2 body: 1 hand: 1 gesture: 1 object: 0 person: 2 {"score":0.93} {} {"score":0.92,"keypoints":17} -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: performance: load: 2338 total: 5545 -2021-10-19 07:57:34 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:34 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: face: 5 body: 1 hand: 0 gesture: 1 object: 0 person: 5 {"score":0.96} {} {"score":0.75,"keypoints":16} -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: performance: load: 4707 total: 3207 -2021-10-19 07:57:34 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:34 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:34 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: face: 3 body: 1 hand: 1 gesture: 2 object: 0 person: 3 {"score":0.96} {} {"score":0.47,"keypoints":17} -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: performance: load: 4707 total: 3207 -2021-10-19 07:57:34 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: face: 4 body: 1 hand: 1 gesture: 1 object: 0 person: 4 {"score":0.96} {} {"score":0.92,"keypoints":17} -2021-10-19 07:57:34 DATA:  test-node-wasm.js result: performance: load: 4707 total: 3207 -2021-10-19 07:57:34 STATE: test-node-wasm.js event: image -2021-10-19 07:57:34 STATE: test-node-wasm.js event: detect -2021-10-19 07:57:34 STATE: test-node-wasm.js passed: monkey patch -2021-10-19 07:57:34 STATE: test-node-wasm.js passed: segmentation [65536] -2021-10-19 07:57:34 STATE: test-node-wasm.js passeed: equal usage -2021-10-19 07:57:34 INFO:  test-node-wasm.js events: {"image":15,"detect":15,"warmup":2} -2021-10-19 07:57:34 INFO:  test-node-wasm.js tensors 1926 -2021-10-19 07:57:34 INFO:  test-node-wasm.js test complete: 34327 ms -2021-10-19 07:57:34 INFO:  -2021-10-19 07:57:34 INFO:  failed [{"test":"test-node-wasm.js","data":["error",["failed: warmup face result mismatch",1,1,1,5]]},{"test":"test-node-wasm.js","data":["error",["failed: object result mismatch",0]]},{"test":"test-node-wasm.js","data":["error",["failed: sensitive face emotion result mismatch",3]]}] -2021-10-19 07:57:34 INFO:  status: {"test-node.js":{"passed":70,"failed":0},"test-node-gpu.js":{"passed":70,"failed":0},"test-node-wasm.js":{"passed":68,"failed":3}} +2021-10-19 08:07:22 INFO:  @vladmandic/human version 2.3.4 +2021-10-19 08:07:22 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.10.0 +2021-10-19 08:07:22 INFO:  tests: ["test-node.js","test-node-gpu.js","test-node-wasm.js"] +2021-10-19 08:07:22 INFO:  demos: ["../demo/nodejs/node.js","../demo/nodejs/node-canvas.js","../demo/nodejs/node-env.js","../demo/nodejs/node-event.js","../demo/nodejs/node-multiprocess.js"] +2021-10-19 08:07:22 INFO:  +2021-10-19 08:07:22 INFO:  test-node.js start +2021-10-19 08:07:23 STATE: test-node.js passed: configuration default validation [] +2021-10-19 08:07:23 STATE: test-node.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2021-10-19 08:07:24 STATE: test-node.js passed: models loaded 21 10 [{"name":"age","loaded":false},{"name":"agegenderrace","loaded":false},{"name":"blazeposedetect","loaded":false},{"name":"blazepose","loaded":false},{"name":"centernet","loaded":true},{"name":"efficientpose","loaded":false},{"name":"embedding","loaded":false},{"name":"emotion","loaded":true},{"name":"facedetect","loaded":true},{"name":"faceiris","loaded":true},{"name":"facemesh","loaded":true},{"name":"faceres","loaded":true},{"name":"gender","loaded":false},{"name":"handpose","loaded":false},{"name":"handskeleton","loaded":true},{"name":"handtrack","loaded":true},{"name":"movenet","loaded":true},{"name":"nanodet","loaded":false},{"name":"posenet","loaded":false},{"name":"segmentation","loaded":true},{"name":"antispoof","loaded":false}] +2021-10-19 08:07:24 STATE: test-node.js passed: create human +2021-10-19 08:07:24 INFO:  test-node.js human version: 2.3.4 +2021-10-19 08:07:24 INFO:  test-node.js platform: linux x64 agent: NodeJS v16.10.0 +2021-10-19 08:07:24 INFO:  test-node.js tfjs version: 3.9.0 +2021-10-19 08:07:24 STATE: test-node.js passed: set backend: tensorflow +2021-10-19 08:07:24 STATE: test-node.js tensors 1920 +2021-10-19 08:07:24 STATE: test-node.js passed: load models +2021-10-19 08:07:24 STATE: test-node.js result: defined models: 21 loaded models: 10 +2021-10-19 08:07:24 STATE: test-node.js passed: warmup: none default +2021-10-19 08:07:24 STATE: test-node.js passed: warmup none result match +2021-10-19 08:07:24 STATE: test-node.js event: image +2021-10-19 08:07:25 STATE: test-node.js event: detect +2021-10-19 08:07:25 STATE: test-node.js event: warmup +2021-10-19 08:07:25 STATE: test-node.js passed: warmup: face default +2021-10-19 08:07:25 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} +2021-10-19 08:07:25 DATA:  test-node.js result: performance: load: 393 total: 1257 +2021-10-19 08:07:25 STATE: test-node.js passed: warmup face result match +2021-10-19 08:07:25 STATE: test-node.js event: image +2021-10-19 08:07:26 STATE: test-node.js event: detect +2021-10-19 08:07:26 STATE: test-node.js event: warmup +2021-10-19 08:07:26 STATE: test-node.js passed: warmup: body default +2021-10-19 08:07:26 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:07:26 DATA:  test-node.js result: performance: load: 393 total: 1067 +2021-10-19 08:07:26 STATE: test-node.js passed: warmup body result match +2021-10-19 08:07:26 INFO:  test-node.js test default +2021-10-19 08:07:27 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:07:27 STATE: test-node.js event: image +2021-10-19 08:07:28 STATE: test-node.js event: detect +2021-10-19 08:07:28 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:07:28 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:07:28 DATA:  test-node.js result: performance: load: 393 total: 1165 +2021-10-19 08:07:28 STATE: test-node.js passed: default result face match +2021-10-19 08:07:28 INFO:  test-node.js test sync +2021-10-19 08:07:29 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:07:29 STATE: test-node.js event: image +2021-10-19 08:07:30 STATE: test-node.js event: detect +2021-10-19 08:07:30 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:07:30 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:07:30 DATA:  test-node.js result: performance: load: 393 total: 1042 +2021-10-19 08:07:30 STATE: test-node.js passed: default sync +2021-10-19 08:07:30 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2021-10-19 08:07:30 STATE: test-node.js passed: image input null [1,256,256,3] +2021-10-19 08:07:30 STATE: test-node.js passed: invalid input {"error":"could not convert input to tensor"} +2021-10-19 08:07:30 INFO:  test-node.js test face similarity +2021-10-19 08:07:30 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2021-10-19 08:07:30 STATE: test-node.js event: image +2021-10-19 08:07:31 STATE: test-node.js event: detect +2021-10-19 08:07:31 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default +2021-10-19 08:07:31 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} +2021-10-19 08:07:31 DATA:  test-node.js result: performance: load: 393 total: 965 +2021-10-19 08:07:32 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:07:32 STATE: test-node.js event: image +2021-10-19 08:07:33 STATE: test-node.js event: detect +2021-10-19 08:07:33 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:07:33 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:07:33 DATA:  test-node.js result: performance: load: 393 total: 1046 +2021-10-19 08:07:33 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} +2021-10-19 08:07:33 STATE: test-node.js event: image +2021-10-19 08:07:34 STATE: test-node.js event: detect +2021-10-19 08:07:34 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:07:34 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} +2021-10-19 08:07:34 DATA:  test-node.js result: performance: load: 393 total: 898 +2021-10-19 08:07:34 STATE: test-node.js passed: face descriptor +2021-10-19 08:07:34 STATE: test-node.js passed: face similarity {"similarity":[1,0.9020035660133001,0.8971897628968076],"descriptors":[1024,1024,1024]} +2021-10-19 08:07:34 INFO:  test-node.js test face matching +2021-10-19 08:07:34 STATE: test-node.js passed: face database 57 +2021-10-19 08:07:34 STATE: test-node.js passed: face match {"first":{"index":4,"similarity":0.953739066390141}} {"second":{"index":4,"similarity":0.9028518469611467}} {"third":{"index":4,"similarity":0.9020967977212865}} +2021-10-19 08:07:34 INFO:  test-node.js test object +2021-10-19 08:07:35 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:07:35 STATE: test-node.js event: image +2021-10-19 08:07:36 STATE: test-node.js event: detect +2021-10-19 08:07:36 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:07:36 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:07:36 DATA:  test-node.js result: performance: load: 393 total: 1012 +2021-10-19 08:07:36 STATE: test-node.js passed: object result match +2021-10-19 08:07:36 INFO:  test-node.js test sensitive +2021-10-19 08:07:37 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:07:37 STATE: test-node.js event: image +2021-10-19 08:07:38 STATE: test-node.js event: detect +2021-10-19 08:07:38 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:07:38 DATA:  test-node.js result: face: 1 body: 1 hand: 2 gesture: 7 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:07:38 DATA:  test-node.js result: performance: load: 393 total: 1114 +2021-10-19 08:07:38 STATE: test-node.js passed: sensitive result match +2021-10-19 08:07:38 STATE: test-node.js passed: sensitive face result match +2021-10-19 08:07:38 STATE: test-node.js passed: sensitive face emotion result mismatch 4 +2021-10-19 08:07:38 STATE: test-node.js passed: sensitive body result match +2021-10-19 08:07:38 STATE: test-node.js passed: sensitive hand result match +2021-10-19 08:07:38 INFO:  test-node.js test detectors +2021-10-19 08:07:39 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:07:39 STATE: test-node.js event: image +2021-10-19 08:07:40 STATE: test-node.js event: detect +2021-10-19 08:07:40 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:07:40 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:07:40 DATA:  test-node.js result: performance: load: 393 total: 635 +2021-10-19 08:07:40 STATE: test-node.js passed: detector result face match +2021-10-19 08:07:40 STATE: test-node.js passed: detector result hand match +2021-10-19 08:07:40 STATE: test-node.js event: image +2021-10-19 08:07:40 STATE: test-node.js event: detect +2021-10-19 08:07:40 STATE: test-node.js passed: detect: random default +2021-10-19 08:07:40 DATA:  test-node.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 person: 0 {} {} {"score":0.06,"keypoints":15} +2021-10-19 08:07:40 DATA:  test-node.js result: performance: load: 393 total: 666 +2021-10-19 08:07:40 INFO:  test-node.js test: first instance +2021-10-19 08:07:41 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} +2021-10-19 08:07:41 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:07:41 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2021-10-19 08:07:41 DATA:  test-node.js result: performance: load: 2 total: 652 +2021-10-19 08:07:41 INFO:  test-node.js test: second instance +2021-10-19 08:07:42 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} +2021-10-19 08:07:42 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:07:42 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2021-10-19 08:07:42 DATA:  test-node.js result: performance: load: 2 total: 664 +2021-10-19 08:07:42 INFO:  test-node.js test: concurrent +2021-10-19 08:07:42 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2021-10-19 08:07:42 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2021-10-19 08:07:43 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:07:44 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:07:44 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} +2021-10-19 08:07:45 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} +2021-10-19 08:07:45 STATE: test-node.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2021-10-19 08:07:46 STATE: test-node.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:07:46 STATE: test-node.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} +2021-10-19 08:07:46 STATE: test-node.js event: image +2021-10-19 08:07:46 STATE: test-node.js event: image +2021-10-19 08:07:46 STATE: test-node.js event: image +2021-10-19 08:07:52 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:07:52 DATA:  test-node.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2021-10-19 08:07:52 DATA:  test-node.js result: performance: load: 1202 total: 6997 +2021-10-19 08:07:52 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:07:52 DATA:  test-node.js result: face: 2 body: 1 hand: 0 gesture: 1 object: 1 person: 2 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2021-10-19 08:07:52 DATA:  test-node.js result: performance: load: 1202 total: 6997 +2021-10-19 08:07:52 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default +2021-10-19 08:07:52 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2021-10-19 08:07:52 DATA:  test-node.js result: performance: load: 1202 total: 7000 +2021-10-19 08:07:52 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default +2021-10-19 08:07:52 DATA:  test-node.js result: face: 2 body: 1 hand: 1 gesture: 2 object: 1 person: 2 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2021-10-19 08:07:52 DATA:  test-node.js result: performance: load: 1202 total: 7000 +2021-10-19 08:07:52 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:07:52 DATA:  test-node.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:07:52 DATA:  test-node.js result: performance: load: 1202 total: 7000 +2021-10-19 08:07:52 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:07:52 DATA:  test-node.js result: face: 2 body: 1 hand: 1 gesture: 1 object: 1 person: 2 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:07:52 DATA:  test-node.js result: performance: load: 1202 total: 7000 +2021-10-19 08:07:52 STATE: test-node.js event: detect +2021-10-19 08:07:52 STATE: test-node.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:07:52 DATA:  test-node.js result: face: 5 body: 1 hand: 0 gesture: 1 object: 1 person: 5 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2021-10-19 08:07:52 DATA:  test-node.js result: performance: load: 2517 total: 5798 +2021-10-19 08:07:52 STATE: test-node.js event: detect +2021-10-19 08:07:52 STATE: test-node.js event: detect +2021-10-19 08:07:52 STATE: test-node.js passed: detect: samples/in/ai-face.jpg default +2021-10-19 08:07:52 DATA:  test-node.js result: face: 3 body: 1 hand: 1 gesture: 2 object: 1 person: 3 {"score":0.96} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2021-10-19 08:07:52 DATA:  test-node.js result: performance: load: 2517 total: 5799 +2021-10-19 08:07:52 STATE: test-node.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:07:52 DATA:  test-node.js result: face: 4 body: 1 hand: 1 gesture: 1 object: 1 person: 4 {"score":0.96} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:07:52 DATA:  test-node.js result: performance: load: 2517 total: 5799 +2021-10-19 08:07:52 STATE: test-node.js event: image +2021-10-19 08:07:52 STATE: test-node.js event: detect +2021-10-19 08:07:52 STATE: test-node.js passed: monkey patch +2021-10-19 08:07:53 STATE: test-node.js passed: segmentation [65536] +2021-10-19 08:07:53 STATE: test-node.js passeed: equal usage +2021-10-19 08:07:53 INFO:  test-node.js events: {"image":15,"detect":15,"warmup":2} +2021-10-19 08:07:53 INFO:  test-node.js tensors 1924 +2021-10-19 08:07:53 INFO:  test-node.js test complete: 29371 ms +2021-10-19 08:07:53 INFO:  +2021-10-19 08:07:53 INFO:  test-node-gpu.js start +2021-10-19 08:07:53 STATE: test-node-gpu.js passed: configuration default validation [] +2021-10-19 08:07:53 STATE: test-node-gpu.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2021-10-19 08:07:54 STATE: test-node-gpu.js passed: models loaded 21 10 [{"name":"age","loaded":false},{"name":"agegenderrace","loaded":false},{"name":"blazeposedetect","loaded":false},{"name":"blazepose","loaded":false},{"name":"centernet","loaded":true},{"name":"efficientpose","loaded":false},{"name":"embedding","loaded":false},{"name":"emotion","loaded":true},{"name":"facedetect","loaded":true},{"name":"faceiris","loaded":true},{"name":"facemesh","loaded":true},{"name":"faceres","loaded":true},{"name":"gender","loaded":false},{"name":"handpose","loaded":false},{"name":"handskeleton","loaded":true},{"name":"handtrack","loaded":true},{"name":"movenet","loaded":true},{"name":"nanodet","loaded":false},{"name":"posenet","loaded":false},{"name":"segmentation","loaded":true},{"name":"antispoof","loaded":false}] +2021-10-19 08:07:54 STATE: test-node-gpu.js passed: create human +2021-10-19 08:07:54 INFO:  test-node-gpu.js human version: 2.3.4 +2021-10-19 08:07:54 INFO:  test-node-gpu.js platform: linux x64 agent: NodeJS v16.10.0 +2021-10-19 08:07:54 INFO:  test-node-gpu.js tfjs version: 3.9.0 +2021-10-19 08:07:54 STATE: test-node-gpu.js passed: set backend: tensorflow +2021-10-19 08:07:54 STATE: test-node-gpu.js tensors 1920 +2021-10-19 08:07:54 STATE: test-node-gpu.js passed: load models +2021-10-19 08:07:54 STATE: test-node-gpu.js result: defined models: 21 loaded models: 10 +2021-10-19 08:07:54 STATE: test-node-gpu.js passed: warmup: none default +2021-10-19 08:07:54 STATE: test-node-gpu.js passed: warmup none result match +2021-10-19 08:07:54 STATE: test-node-gpu.js event: image +2021-10-19 08:07:55 STATE: test-node-gpu.js event: detect +2021-10-19 08:07:55 STATE: test-node-gpu.js event: warmup +2021-10-19 08:07:55 STATE: test-node-gpu.js passed: warmup: face default +2021-10-19 08:07:55 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 6 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.42,"keypoints":4} +2021-10-19 08:07:55 DATA:  test-node-gpu.js result: performance: load: 368 total: 1228 +2021-10-19 08:07:55 STATE: test-node-gpu.js passed: warmup face result match +2021-10-19 08:07:55 STATE: test-node-gpu.js event: image +2021-10-19 08:07:56 STATE: test-node-gpu.js event: detect +2021-10-19 08:07:56 STATE: test-node-gpu.js event: warmup +2021-10-19 08:07:56 STATE: test-node-gpu.js passed: warmup: body default +2021-10-19 08:07:56 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:07:56 DATA:  test-node-gpu.js result: performance: load: 368 total: 1089 +2021-10-19 08:07:56 STATE: test-node-gpu.js passed: warmup body result match +2021-10-19 08:07:56 INFO:  test-node-gpu.js test default +2021-10-19 08:07:57 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:07:57 STATE: test-node-gpu.js event: image +2021-10-19 08:07:58 STATE: test-node-gpu.js event: detect +2021-10-19 08:07:58 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:07:58 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:07:58 DATA:  test-node-gpu.js result: performance: load: 368 total: 1099 +2021-10-19 08:07:58 STATE: test-node-gpu.js passed: default result face match +2021-10-19 08:07:58 INFO:  test-node-gpu.js test sync +2021-10-19 08:07:59 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:07:59 STATE: test-node-gpu.js event: image +2021-10-19 08:08:00 STATE: test-node-gpu.js event: detect +2021-10-19 08:08:00 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:00 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:08:00 DATA:  test-node-gpu.js result: performance: load: 368 total: 1067 +2021-10-19 08:08:00 STATE: test-node-gpu.js passed: default sync +2021-10-19 08:08:00 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2021-10-19 08:08:00 STATE: test-node-gpu.js passed: image input null [1,256,256,3] +2021-10-19 08:08:00 STATE: test-node-gpu.js passed: invalid input {"error":"could not convert input to tensor"} +2021-10-19 08:08:00 INFO:  test-node-gpu.js test face similarity +2021-10-19 08:08:00 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2021-10-19 08:08:00 STATE: test-node-gpu.js event: image +2021-10-19 08:08:01 STATE: test-node-gpu.js event: detect +2021-10-19 08:08:01 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default +2021-10-19 08:08:01 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":23.6,"gender":"female"} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":3} +2021-10-19 08:08:01 DATA:  test-node-gpu.js result: performance: load: 368 total: 976 +2021-10-19 08:08:02 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:08:02 STATE: test-node-gpu.js event: image +2021-10-19 08:08:03 STATE: test-node-gpu.js event: detect +2021-10-19 08:08:03 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:03 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:08:03 DATA:  test-node-gpu.js result: performance: load: 368 total: 1063 +2021-10-19 08:08:03 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} +2021-10-19 08:08:03 STATE: test-node-gpu.js event: image +2021-10-19 08:08:04 STATE: test-node-gpu.js event: detect +2021-10-19 08:08:04 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:08:04 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 3 object: 1 person: 1 {"score":1,"age":29.5,"gender":"female"} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":7} +2021-10-19 08:08:04 DATA:  test-node-gpu.js result: performance: load: 368 total: 938 +2021-10-19 08:08:04 STATE: test-node-gpu.js passed: face descriptor +2021-10-19 08:08:04 STATE: test-node-gpu.js passed: face similarity {"similarity":[1,0.9020035660133001,0.8971897628968076],"descriptors":[1024,1024,1024]} +2021-10-19 08:08:04 INFO:  test-node-gpu.js test face matching +2021-10-19 08:08:04 STATE: test-node-gpu.js passed: face database 57 +2021-10-19 08:08:04 STATE: test-node-gpu.js passed: face match {"first":{"index":4,"similarity":0.953739066390141}} {"second":{"index":4,"similarity":0.9028518469611467}} {"third":{"index":4,"similarity":0.9020967977212865}} +2021-10-19 08:08:04 INFO:  test-node-gpu.js test object +2021-10-19 08:08:05 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:08:05 STATE: test-node-gpu.js event: image +2021-10-19 08:08:06 STATE: test-node-gpu.js event: detect +2021-10-19 08:08:06 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:06 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:08:06 DATA:  test-node-gpu.js result: performance: load: 368 total: 1006 +2021-10-19 08:08:06 STATE: test-node-gpu.js passed: object result match +2021-10-19 08:08:06 INFO:  test-node-gpu.js test sensitive +2021-10-19 08:08:07 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:08:07 STATE: test-node-gpu.js event: image +2021-10-19 08:08:08 STATE: test-node-gpu.js event: detect +2021-10-19 08:08:08 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:08 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 2 gesture: 7 object: 1 person: 1 {"score":1,"age":28.5,"gender":"female"} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:08:08 DATA:  test-node-gpu.js result: performance: load: 368 total: 1055 +2021-10-19 08:08:08 STATE: test-node-gpu.js passed: sensitive result match +2021-10-19 08:08:08 STATE: test-node-gpu.js passed: sensitive face result match +2021-10-19 08:08:08 STATE: test-node-gpu.js passed: sensitive face emotion result mismatch 4 +2021-10-19 08:08:08 STATE: test-node-gpu.js passed: sensitive body result match +2021-10-19 08:08:08 STATE: test-node-gpu.js passed: sensitive hand result match +2021-10-19 08:08:08 INFO:  test-node-gpu.js test detectors +2021-10-19 08:08:09 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:08:09 STATE: test-node-gpu.js event: image +2021-10-19 08:08:09 STATE: test-node-gpu.js event: detect +2021-10-19 08:08:09 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:09 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:08:09 DATA:  test-node-gpu.js result: performance: load: 368 total: 671 +2021-10-19 08:08:09 STATE: test-node-gpu.js passed: detector result face match +2021-10-19 08:08:09 STATE: test-node-gpu.js passed: detector result hand match +2021-10-19 08:08:10 STATE: test-node-gpu.js event: image +2021-10-19 08:08:10 STATE: test-node-gpu.js event: detect +2021-10-19 08:08:10 STATE: test-node-gpu.js passed: detect: random default +2021-10-19 08:08:10 DATA:  test-node-gpu.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 person: 0 {} {} {"score":0.07,"keypoints":15} +2021-10-19 08:08:10 DATA:  test-node-gpu.js result: performance: load: 368 total: 625 +2021-10-19 08:08:10 INFO:  test-node-gpu.js test: first instance +2021-10-19 08:08:11 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} +2021-10-19 08:08:11 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:08:11 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2021-10-19 08:08:11 DATA:  test-node-gpu.js result: performance: load: 2 total: 627 +2021-10-19 08:08:11 INFO:  test-node-gpu.js test: second instance +2021-10-19 08:08:11 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} +2021-10-19 08:08:12 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:08:12 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2021-10-19 08:08:12 DATA:  test-node-gpu.js result: performance: load: 2 total: 661 +2021-10-19 08:08:12 INFO:  test-node-gpu.js test: concurrent +2021-10-19 08:08:12 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2021-10-19 08:08:12 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2021-10-19 08:08:13 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:08:14 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:08:14 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} +2021-10-19 08:08:15 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} +2021-10-19 08:08:15 STATE: test-node-gpu.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34696120} +2021-10-19 08:08:16 STATE: test-node-gpu.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1004796864} +2021-10-19 08:08:16 STATE: test-node-gpu.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151289040} +2021-10-19 08:08:16 STATE: test-node-gpu.js event: image +2021-10-19 08:08:16 STATE: test-node-gpu.js event: image +2021-10-19 08:08:16 STATE: test-node-gpu.js event: image +2021-10-19 08:08:22 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 1 person: 1 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: performance: load: 1218 total: 7082 +2021-10-19 08:08:22 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: face: 2 body: 1 hand: 0 gesture: 1 object: 1 person: 2 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: performance: load: 1218 total: 7082 +2021-10-19 08:08:22 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 1 person: 1 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: performance: load: 1218 total: 7087 +2021-10-19 08:08:22 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: face: 2 body: 1 hand: 1 gesture: 2 object: 1 person: 2 {"score":0.91} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: performance: load: 1218 total: 7087 +2021-10-19 08:08:22 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 1 person: 1 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: performance: load: 1218 total: 7087 +2021-10-19 08:08:22 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: face: 2 body: 1 hand: 1 gesture: 1 object: 1 person: 2 {"score":0.93} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: performance: load: 1218 total: 7087 +2021-10-19 08:08:22 STATE: test-node-gpu.js event: detect +2021-10-19 08:08:22 STATE: test-node-gpu.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: face: 5 body: 1 hand: 0 gesture: 1 object: 1 person: 5 {"score":0.96} {"score":0.71,"class":"person"} {"score":0.75,"keypoints":16} +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: performance: load: 2494 total: 5870 +2021-10-19 08:08:22 STATE: test-node-gpu.js event: detect +2021-10-19 08:08:22 STATE: test-node-gpu.js event: detect +2021-10-19 08:08:22 STATE: test-node-gpu.js passed: detect: samples/in/ai-face.jpg default +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: face: 3 body: 1 hand: 1 gesture: 2 object: 1 person: 3 {"score":0.96} {"score":0.82,"class":"person"} {"score":0.47,"keypoints":17} +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: performance: load: 2494 total: 5870 +2021-10-19 08:08:22 STATE: test-node-gpu.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: face: 4 body: 1 hand: 1 gesture: 1 object: 1 person: 4 {"score":0.96} {"score":0.72,"class":"person"} {"score":0.92,"keypoints":17} +2021-10-19 08:08:22 DATA:  test-node-gpu.js result: performance: load: 2494 total: 5870 +2021-10-19 08:08:22 STATE: test-node-gpu.js event: image +2021-10-19 08:08:22 STATE: test-node-gpu.js event: detect +2021-10-19 08:08:22 STATE: test-node-gpu.js passed: monkey patch +2021-10-19 08:08:22 STATE: test-node-gpu.js passed: segmentation [65536] +2021-10-19 08:08:22 STATE: test-node-gpu.js passeed: equal usage +2021-10-19 08:08:22 INFO:  test-node-gpu.js events: {"image":15,"detect":15,"warmup":2} +2021-10-19 08:08:22 INFO:  test-node-gpu.js tensors 1924 +2021-10-19 08:08:22 INFO:  test-node-gpu.js test complete: 29148 ms +2021-10-19 08:08:23 INFO:  +2021-10-19 08:08:23 INFO:  test-node-wasm.js start +2021-10-19 08:08:23 STATE: test-node-wasm.js passed: model server: https://vladmandic.github.io/human/models/ +2021-10-19 08:08:23 STATE: test-node-wasm.js passed: configuration default validation [] +2021-10-19 08:08:23 STATE: test-node-wasm.js passed: configuration invalid validation [{"reason":"unknown property","where":"config.invalid = true"}] +2021-10-19 08:08:24 STATE: test-node-wasm.js passed: models loaded 21 10 [{"name":"age","loaded":false},{"name":"agegenderrace","loaded":false},{"name":"blazeposedetect","loaded":false},{"name":"blazepose","loaded":false},{"name":"centernet","loaded":true},{"name":"efficientpose","loaded":false},{"name":"embedding","loaded":false},{"name":"emotion","loaded":true},{"name":"facedetect","loaded":true},{"name":"faceiris","loaded":true},{"name":"facemesh","loaded":true},{"name":"faceres","loaded":true},{"name":"gender","loaded":false},{"name":"handpose","loaded":false},{"name":"handskeleton","loaded":true},{"name":"handtrack","loaded":true},{"name":"movenet","loaded":true},{"name":"nanodet","loaded":false},{"name":"posenet","loaded":false},{"name":"segmentation","loaded":true},{"name":"antispoof","loaded":false}] +2021-10-19 08:08:24 STATE: test-node-wasm.js passed: create human +2021-10-19 08:08:24 INFO:  test-node-wasm.js human version: 2.3.4 +2021-10-19 08:08:24 INFO:  test-node-wasm.js platform: linux x64 agent: NodeJS v16.10.0 +2021-10-19 08:08:24 INFO:  test-node-wasm.js tfjs version: 3.9.0 +2021-10-19 08:08:24 STATE: test-node-wasm.js passed: set backend: wasm +2021-10-19 08:08:24 STATE: test-node-wasm.js tensors 1920 +2021-10-19 08:08:24 STATE: test-node-wasm.js passed: load models +2021-10-19 08:08:24 STATE: test-node-wasm.js result: defined models: 21 loaded models: 10 +2021-10-19 08:08:24 STATE: test-node-wasm.js passed: warmup: none default +2021-10-19 08:08:24 STATE: test-node-wasm.js passed: warmup none result match +2021-10-19 08:08:24 STATE: test-node-wasm.js event: image +2021-10-19 08:08:25 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:25 STATE: test-node-wasm.js event: warmup +2021-10-19 08:08:25 STATE: test-node-wasm.js passed: warmup: face default +2021-10-19 08:08:25 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":23.6,"gender":"female"} {} {"score":0.47,"keypoints":3} +2021-10-19 08:08:25 DATA:  test-node-wasm.js result: performance: load: 1075 total: 1215 +2021-10-19 08:08:25 ERROR: test-node-wasm.js failed: warmup face result mismatch 1 1 1 5 +2021-10-19 08:08:26 STATE: test-node-wasm.js event: image +2021-10-19 08:08:27 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:27 STATE: test-node-wasm.js event: warmup +2021-10-19 08:08:27 STATE: test-node-wasm.js passed: warmup: body default +2021-10-19 08:08:27 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17} +2021-10-19 08:08:27 DATA:  test-node-wasm.js result: performance: load: 1075 total: 834 +2021-10-19 08:08:27 STATE: test-node-wasm.js passed: warmup body result match +2021-10-19 08:08:27 INFO:  test-node-wasm.js test default +2021-10-19 08:08:28 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2021-10-19 08:08:28 STATE: test-node-wasm.js event: image +2021-10-19 08:08:29 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:29 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:29 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17} +2021-10-19 08:08:29 DATA:  test-node-wasm.js result: performance: load: 1075 total: 899 +2021-10-19 08:08:29 STATE: test-node-wasm.js passed: default result face match +2021-10-19 08:08:29 INFO:  test-node-wasm.js test sync +2021-10-19 08:08:31 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2021-10-19 08:08:31 STATE: test-node-wasm.js event: image +2021-10-19 08:08:32 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:32 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:32 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17} +2021-10-19 08:08:32 DATA:  test-node-wasm.js result: performance: load: 1075 total: 877 +2021-10-19 08:08:32 STATE: test-node-wasm.js passed: default sync +2021-10-19 08:08:32 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2021-10-19 08:08:32 STATE: test-node-wasm.js passed: image input null [1,256,256,3] +2021-10-19 08:08:32 STATE: test-node-wasm.js passed: invalid input {"error":"could not convert input to tensor"} +2021-10-19 08:08:32 INFO:  test-node-wasm.js test face similarity +2021-10-19 08:08:32 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2021-10-19 08:08:32 STATE: test-node-wasm.js event: image +2021-10-19 08:08:33 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:33 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default +2021-10-19 08:08:33 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":28.4,"gender":"female"} {} {"score":0.47,"keypoints":3} +2021-10-19 08:08:33 DATA:  test-node-wasm.js result: performance: load: 1075 total: 754 +2021-10-19 08:08:35 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2021-10-19 08:08:35 STATE: test-node-wasm.js event: image +2021-10-19 08:08:36 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:36 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:36 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17} +2021-10-19 08:08:36 DATA:  test-node-wasm.js result: performance: load: 1075 total: 840 +2021-10-19 08:08:36 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2021-10-19 08:08:36 STATE: test-node-wasm.js event: image +2021-10-19 08:08:37 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:37 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:08:37 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 5 object: 0 person: 1 {"score":1,"age":29.5,"gender":"female"} {} {"score":0.75,"keypoints":7} +2021-10-19 08:08:37 DATA:  test-node-wasm.js result: performance: load: 1075 total: 677 +2021-10-19 08:08:37 STATE: test-node-wasm.js passed: face descriptor +2021-10-19 08:08:37 STATE: test-node-wasm.js passed: face similarity {"similarity":[1,0.9040641336882139,0.895983704095898],"descriptors":[1024,1024,1024]} +2021-10-19 08:08:37 INFO:  test-node-wasm.js test face matching +2021-10-19 08:08:37 STATE: test-node-wasm.js passed: face database 57 +2021-10-19 08:08:37 STATE: test-node-wasm.js passed: face match {"first":{"index":4,"similarity":0.9902354470817274}} {"second":{"index":4,"similarity":0.9045213429149392}} {"third":{"index":4,"similarity":0.8965257196777969}} +2021-10-19 08:08:37 INFO:  test-node-wasm.js test object +2021-10-19 08:08:39 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2021-10-19 08:08:39 STATE: test-node-wasm.js event: image +2021-10-19 08:08:39 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:39 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:39 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 5 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17} +2021-10-19 08:08:39 DATA:  test-node-wasm.js result: performance: load: 1075 total: 877 +2021-10-19 08:08:39 ERROR: test-node-wasm.js failed: object result mismatch 0 +2021-10-19 08:08:39 INFO:  test-node-wasm.js test sensitive +2021-10-19 08:08:41 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2021-10-19 08:08:41 STATE: test-node-wasm.js event: image +2021-10-19 08:08:42 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:42 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:42 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 2 gesture: 7 object: 0 person: 1 {"score":1,"age":28.5,"gender":"female"} {} {"score":0.92,"keypoints":17} +2021-10-19 08:08:42 DATA:  test-node-wasm.js result: performance: load: 1075 total: 1068 +2021-10-19 08:08:42 STATE: test-node-wasm.js passed: sensitive result match +2021-10-19 08:08:42 STATE: test-node-wasm.js passed: sensitive face result match +2021-10-19 08:08:42 ERROR: test-node-wasm.js failed: sensitive face emotion result mismatch 3 +2021-10-19 08:08:42 STATE: test-node-wasm.js passed: sensitive body result match +2021-10-19 08:08:42 STATE: test-node-wasm.js passed: sensitive hand result match +2021-10-19 08:08:42 INFO:  test-node-wasm.js test detectors +2021-10-19 08:08:44 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2021-10-19 08:08:44 STATE: test-node-wasm.js event: image +2021-10-19 08:08:44 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:44 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:44 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 0 person: 1 {"score":0.93} {} {"score":0.92,"keypoints":17} +2021-10-19 08:08:44 DATA:  test-node-wasm.js result: performance: load: 1075 total: 387 +2021-10-19 08:08:44 STATE: test-node-wasm.js passed: detector result face match +2021-10-19 08:08:44 STATE: test-node-wasm.js passed: detector result hand match +2021-10-19 08:08:45 STATE: test-node-wasm.js event: image +2021-10-19 08:08:45 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:45 STATE: test-node-wasm.js passed: detect: random default +2021-10-19 08:08:45 DATA:  test-node-wasm.js result: face: 0 body: 1 hand: 0 gesture: 1 object: 0 person: 0 {} {} {"score":0.08,"keypoints":15} +2021-10-19 08:08:45 DATA:  test-node-wasm.js result: performance: load: 1075 total: 328 +2021-10-19 08:08:45 INFO:  test-node-wasm.js test: first instance +2021-10-19 08:08:46 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2021-10-19 08:08:46 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:08:46 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 0 person: 1 {"score":0.96} {} {"score":0.75,"keypoints":16} +2021-10-19 08:08:46 DATA:  test-node-wasm.js result: performance: load: 2 total: 360 +2021-10-19 08:08:46 INFO:  test-node-wasm.js test: second instance +2021-10-19 08:08:47 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2021-10-19 08:08:47 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:08:47 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 0 person: 1 {"score":0.96} {} {"score":0.75,"keypoints":16} +2021-10-19 08:08:47 DATA:  test-node-wasm.js result: performance: load: 1 total: 376 +2021-10-19 08:08:47 INFO:  test-node-wasm.js test: concurrent +2021-10-19 08:08:47 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2021-10-19 08:08:47 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2021-10-19 08:08:49 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2021-10-19 08:08:50 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2021-10-19 08:08:51 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2021-10-19 08:08:52 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2021-10-19 08:08:52 STATE: test-node-wasm.js passed: load image: samples/in/ai-face.jpg [1,256,256,3] {"checksum":34697856} +2021-10-19 08:08:53 STATE: test-node-wasm.js passed: load image: samples/in/ai-body.jpg [1,1200,1200,3] {"checksum":1038921856} +2021-10-19 08:08:54 STATE: test-node-wasm.js passed: load image: samples/in/ai-upper.jpg [1,720,688,3] {"checksum":151155104} +2021-10-19 08:08:55 STATE: test-node-wasm.js event: image +2021-10-19 08:08:55 STATE: test-node-wasm.js event: image +2021-10-19 08:08:55 STATE: test-node-wasm.js event: image +2021-10-19 08:08:57 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 0 gesture: 1 object: 0 person: 1 {"score":0.96} {} {"score":0.75,"keypoints":16} +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: performance: load: 2363 total: 5562 +2021-10-19 08:08:57 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: face: 2 body: 1 hand: 0 gesture: 1 object: 0 person: 2 {"score":0.96} {} {"score":0.75,"keypoints":16} +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: performance: load: 2363 total: 5562 +2021-10-19 08:08:57 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 2 object: 0 person: 1 {"score":0.91} {} {"score":0.47,"keypoints":17} +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: performance: load: 2363 total: 5563 +2021-10-19 08:08:57 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: face: 2 body: 1 hand: 1 gesture: 2 object: 0 person: 2 {"score":0.91} {} {"score":0.47,"keypoints":17} +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: performance: load: 2363 total: 5563 +2021-10-19 08:08:57 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: face: 1 body: 1 hand: 1 gesture: 1 object: 0 person: 1 {"score":0.93} {} {"score":0.92,"keypoints":17} +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: performance: load: 2363 total: 5563 +2021-10-19 08:08:57 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: face: 2 body: 1 hand: 1 gesture: 1 object: 0 person: 2 {"score":0.93} {} {"score":0.92,"keypoints":17} +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: performance: load: 2363 total: 5563 +2021-10-19 08:08:57 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:57 STATE: test-node-wasm.js passed: detect: samples/in/ai-upper.jpg default +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: face: 5 body: 1 hand: 0 gesture: 1 object: 0 person: 5 {"score":0.96} {} {"score":0.75,"keypoints":16} +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: performance: load: 4757 total: 3200 +2021-10-19 08:08:57 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:57 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:57 STATE: test-node-wasm.js passed: detect: samples/in/ai-face.jpg default +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: face: 3 body: 1 hand: 1 gesture: 2 object: 0 person: 3 {"score":0.96} {} {"score":0.47,"keypoints":17} +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: performance: load: 4757 total: 3200 +2021-10-19 08:08:57 STATE: test-node-wasm.js passed: detect: samples/in/ai-body.jpg default +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: face: 4 body: 1 hand: 1 gesture: 1 object: 0 person: 4 {"score":0.96} {} {"score":0.92,"keypoints":17} +2021-10-19 08:08:57 DATA:  test-node-wasm.js result: performance: load: 4757 total: 3200 +2021-10-19 08:08:57 STATE: test-node-wasm.js event: image +2021-10-19 08:08:58 STATE: test-node-wasm.js event: detect +2021-10-19 08:08:58 STATE: test-node-wasm.js passed: monkey patch +2021-10-19 08:08:58 STATE: test-node-wasm.js passed: segmentation [65536] +2021-10-19 08:08:58 STATE: test-node-wasm.js passeed: equal usage +2021-10-19 08:08:58 INFO:  test-node-wasm.js events: {"image":15,"detect":15,"warmup":2} +2021-10-19 08:08:58 INFO:  test-node-wasm.js tensors 1926 +2021-10-19 08:08:58 INFO:  test-node-wasm.js test complete: 34509 ms +2021-10-19 08:08:58 INFO:  +2021-10-19 08:08:58 INFO:  failed [{"test":"test-node-wasm.js","data":["error",["failed: warmup face result mismatch",1,1,1,5]]},{"test":"test-node-wasm.js","data":["error",["failed: object result mismatch",0]]},{"test":"test-node-wasm.js","data":["error",["failed: sensitive face emotion result mismatch",3]]}] +2021-10-19 08:08:58 INFO:  status: {"test-node.js":{"passed":70,"failed":0},"test-node-gpu.js":{"passed":70,"failed":0},"test-node-wasm.js":{"passed":68,"failed":3}} diff --git a/typedoc/classes/Human.html b/typedoc/classes/Human.html index dc0c8da8..48ab330f 100644 --- a/typedoc/classes/Human.html +++ b/typedoc/classes/Human.html @@ -1,4 +1,4 @@ -Human | @vladmandic/human - v2.3.3
Options
All
  • Public
  • Public/Protected
  • All
Menu
+Human | @vladmandic/human - v2.3.4
Options
All
  • Public
  • Public/Protected
  • All
Menu

Human* library main class

All methods and properties are available only as members of Human class