diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f3bddec..5424fb62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # @vladmandic/human -Version: **1.1.6** +Version: **1.1.7** Description: **Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition** Author: **Vladimir Mandic ** @@ -9,8 +9,12 @@ Repository: **** ## Changelog -### **HEAD -> main** 2021/03/15 mandic00@live.com +### **HEAD -> main** 2021/03/16 mandic00@live.com + +### **1.1.7** 2021/03/16 mandic00@live.com + +- fix for seedrandom - custom typedoc ### **1.1.6** 2021/03/15 mandic00@live.com diff --git a/dist/demo-browser-index.js b/dist/demo-browser-index.js index 112bcebd..e90a03b1 100644 --- a/dist/demo-browser-index.js +++ b/dist/demo-browser-index.js @@ -4889,7 +4889,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var E2={};xr(E2,{author:()=>I4,browser:()=>v4,bugs:()=>N4,default:()=>kse,description:()=>x4,devDependencies:()=>M4,engines:()=>E4,homepage:()=>S4,keywords:()=>F4,license:()=>T4,main:()=>b4,module:()=>_4,name:()=>g4,repository:()=>C4,scripts:()=>R4,sideEffects:()=>w4,types:()=>k4,version:()=>C2});var g4="@vladmandic/human",C2="1.1.6",x4="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",w4=!1,b4="dist/human.node.js",_4="dist/human.esm.js",v4="dist/human.esm.js",k4="types/src/human.d.ts",I4="Vladimir Mandic ",N4={url:"https://github.com/vladmandic/human/issues"},S4="https://vladmandic.github.io/human/demo/index.html",T4="MIT",E4={node:">=12.0.0"},C4={type:"git",url:"git+https://github.com/vladmandic/human.git"},R4={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},F4=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],M4={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.35","@typescript-eslint/eslint-plugin":"^4.18.0","@typescript-eslint/parser":"^4.18.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2",seedrandom:"^3.0.5","simple-git":"^2.37.0",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},kse={name:g4,version:C2,description:x4,sideEffects:w4,main:b4,module:_4,browser:v4,types:k4,author:I4,bugs:N4,homepage:S4,license:T4,engines:E4,repository:C4,scripts:R4,keywords:F4,devDependencies:M4};var R2={};xr(R2,{all:()=>Nse,body:()=>z4,canvas:()=>Ise,drawOptions:()=>de,face:()=>O4,gesture:()=>D4,hand:()=>P4});var de={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function L0(e,t,n,r=null){e.fillStyle=de.useDepth&&r?`rgba(${127.5+2*(r||0)}, ${127.5-2*(r||0)}, 255, 0.3)`:de.color,e.beginPath(),e.arc(t,n,de.pointSize,0,2*Math.PI),e.fill()}function $4(e,t,n,r,a){if(e.beginPath(),de.useCurves){let s=(t+t+r)/2,i=(n+n+a)/2;e.ellipse(s,i,r/2,a/2,0,0,2*Math.PI)}else e.lineWidth=de.lineWidth,e.moveTo(t+de.roundRect,n),e.lineTo(t+r-de.roundRect,n),e.quadraticCurveTo(t+r,n,t+r,n+de.roundRect),e.lineTo(t+r,n+a-de.roundRect),e.quadraticCurveTo(t+r,n+a,t+r-de.roundRect,n+a),e.lineTo(t+de.roundRect,n+a),e.quadraticCurveTo(t,n+a,t,n+a-de.roundRect),e.lineTo(t,n+de.roundRect),e.quadraticCurveTo(t,n,t+de.roundRect,n),e.closePath();e.stroke()}function F2(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=de.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:de.color,e.fillStyle=de.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:de.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),de.fillPolygons&&(e.closePath(),e.fill())}}function W0(e,t=[]){if(!(t===void 0||t.length===0)){if(!de.useCurves||t.length<=2){F2(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&i[1].length>0){let o=s[1]>0?`#${s[1]}`:"",l=`${s[0]} ${o}: ${i[1]}`;de.shadowColor&&de.shadowColor!==""&&(n.fillStyle=de.shadowColor,n.fillText(l,8,2+r*de.lineHeight)),n.fillStyle=de.labelColor,n.fillText(l,6,0+r*de.lineHeight),r+=1}}}async function O4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let r of t){n.font=de.font,n.strokeStyle=de.color,n.fillStyle=de.color,de.drawBoxes&&$4(n,r.box[0],r.box[1],r.box[2],r.box[3]);let a=[];if(a.push(`face confidence: ${Math.trunc(100*r.confidence)}%`),r.genderConfidence&&a.push(`${r.gender||""} ${Math.trunc(100*r.genderConfidence)}% confident`),r.age&&a.push(`age: ${r.age||""}`),r.iris&&a.push(`iris distance: ${r.iris}`),r.emotion&&r.emotion.length>0){let s=r.emotion.map(i=>`${Math.trunc(100*i.score)}% ${i.emotion}`);a.push(s.join(" "))}r.angle&&r.angle.roll&&a.push(`roll: ${Math.trunc(100*r.angle.roll)/100} yaw:${Math.trunc(100*r.angle.yaw)/100} pitch:${Math.trunc(100*r.angle.pitch)/100}`),a.length===0&&a.push("face"),n.fillStyle=de.color;for(let s=a.length-1;s>=0;s--){let i=Math.max(r.box[0],0),o=s*de.lineHeight+r.box[1];de.shadowColor&&de.shadowColor!==""&&(n.fillStyle=de.shadowColor,n.fillText(a[s],i+5,o+16)),n.fillStyle=de.labelColor,n.fillText(a[s],i+4,o+15)}if(n.lineWidth=1,r.mesh){if(de.drawPoints)for(let s of r.mesh)L0(n,s[0],s[1],s[2]);if(de.drawPolygons){n.lineWidth=1;for(let s=0;sr.mesh[o]);F2(n,i)}if(r.annotations&&r.annotations.leftEyeIris){n.strokeStyle=de.useDepth?"rgba(255, 200, 255, 0.3)":de.color,n.beginPath();let s=Math.abs(r.annotations.leftEyeIris[3][0]-r.annotations.leftEyeIris[1][0])/2,i=Math.abs(r.annotations.leftEyeIris[4][1]-r.annotations.leftEyeIris[2][1])/2;n.ellipse(r.annotations.leftEyeIris[0][0],r.annotations.leftEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),de.fillPolygons&&(n.fillStyle=de.useDepth?"rgba(255, 255, 200, 0.3)":de.color,n.fill())}if(r.annotations&&r.annotations.rightEyeIris){n.strokeStyle=de.useDepth?"rgba(255, 200, 255, 0.3)":de.color,n.beginPath();let s=Math.abs(r.annotations.rightEyeIris[3][0]-r.annotations.rightEyeIris[1][0])/2,i=Math.abs(r.annotations.rightEyeIris[4][1]-r.annotations.rightEyeIris[2][1])/2;n.ellipse(r.annotations.rightEyeIris[0][0],r.annotations.rightEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),de.fillPolygons&&(n.fillStyle=de.useDepth?"rgba(255, 255, 200, 0.3)":de.color,n.fill())}}}}}var os=[];async function z4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let r=0;ri.part==="leftShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),s.length===5&&F2(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftKnee"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftAnkle"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHeel"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftFoot"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightKnee"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightAnkle"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHeel"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightFoot"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftElbow"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftWrist"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftPalm"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightElbow"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightWrist"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightPalm"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s)}}}}async function P4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=de.font;for(let r of t){if(de.drawBoxes&&(n.strokeStyle=de.color,n.fillStyle=de.color,$4(n,r.box[0],r.box[1],r.box[2],r.box[3]),de.shadowColor&&de.shadowColor!==""&&(n.fillStyle=de.shadowColor,n.fillText("hand",r.box[0]+3,1+r.box[1]+de.lineHeight,r.box[2])),n.fillStyle=de.labelColor,n.fillText("hand",r.box[0]+2,0+r.box[1]+de.lineHeight,r.box[2]),n.stroke()),de.drawPoints&&r.landmarks&&r.landmarks.length>0)for(let a of r.landmarks)n.fillStyle=de.useDepth?`rgba(${127.5+2*a[2]}, ${127.5-2*a[2]}, 255, 0.5)`:de.color,L0(n,a[0],a[1]);if(de.drawPolygons){let a=s=>{if(!!s)for(let i=0;i0?i-1:0][0],s[i>0?i-1:0][1]),n.lineTo(s[i][0],s[i][1]),n.stroke()};a(r.annotations.indexFinger),a(r.annotations.middleFinger),a(r.annotations.ringFinger),a(r.annotations.pinky),a(r.annotations.thumb)}}}}async function Ise(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function Nse(e,t){!t||!e||e instanceof HTMLCanvasElement&&(O4(e,t.face),z4(e,t.body),P4(e,t.hand),D4(e,t.gesture))}var mt=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Zc(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Zc(s,i):n[a]=i}),n),{})}var B0,Je,ru,Yc,Jc,Bi,qt,V0,Qc,U0,eh,H0,j0,G0,$2=class{constructor(t={}){B0.set(this,void 0);Je.set(this,void 0);ru.set(this,void 0);Yc.set(this,void 0);Jc.set(this,void 0);Bi.set(this,void 0);qt.set(this,(...t)=>{if(!Ne(this,Yc))return;let n=this.tf.engine().state.numTensors,r=Ne(this,ru);ia(this,ru,n);let a=n-r;a!==0&&Fe(...t,a)});V0.set(this,t=>{if(!Ne(this,Jc))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof Ge))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Qc.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=mt();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&Fe("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&Fe("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let r=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),a=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&Fe(`wasm execution: ${r?"SIMD":"no SIMD"} ${a?"multithreaded":"singlethreaded"}`),r||Fe("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&S6();try{await this.tf.setBackend(this.config.backend)}catch(r){Fe("error: cannot set backend:",this.config.backend,r)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(Fe("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let r=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&Fe(`gl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`)}await this.tf.ready(),Ne(this,Je).backend=Math.trunc(mt()-n)}});U0.set(this,t=>{if(!t||t.length<300)return{roll:null,yaw:null,pitch:null};let n=(s,i,o,l)=>Math.atan2(l-i,o-s),r=s=>Math.abs(s*180/Math.PI%360);return{roll:n(t[33][0],t[33][1],t[263][0],t[263][1]),yaw:n(t[33][0],t[33][2],t[263][0],t[263][2]),pitch:n(t[10][1],t[10][2],t[152][1],t[152][2])}});eh.set(this,async t=>{var u,c,h,d,p,f,m;let n,r,a,s,i,o=[];this.state="run:face",n=mt();let l=await((u=this.models.face)==null?void 0:u.estimateFaces(t,this.config));if(Ne(this,Je).face=Math.trunc(mt()-n),!l)return[];for(let A of l){if(Ne(this,qt).call(this,"Get Face"),!A.image||A.image.isDisposedInternal){Fe("Face object is disposed:",A.image);continue}let y=Ne(this,U0).call(this,A.mesh);Ne(this,qt).call(this,"Start Age:"),this.config.async?r=this.config.face.age.enabled?Bg(A.image,this.config):{}:(this.state="run:age",n=mt(),r=this.config.face.age.enabled?await Bg(A.image,this.config):{},Ne(this,Je).age=Math.trunc(mt()-n)),Ne(this,qt).call(this,"Start Gender:"),this.config.async?a=this.config.face.gender.enabled?qg(A.image,this.config):{}:(this.state="run:gender",n=mt(),a=this.config.face.gender.enabled?await qg(A.image,this.config):{},Ne(this,Je).gender=Math.trunc(mt()-n)),Ne(this,qt).call(this,"Start Emotion:"),this.config.async?s=this.config.face.emotion.enabled?Jg(A.image,this.config):{}:(this.state="run:emotion",n=mt(),s=this.config.face.emotion.enabled?await Jg(A.image,this.config):{},Ne(this,Je).emotion=Math.trunc(mt()-n)),Ne(this,qt).call(this,"End Emotion:"),Ne(this,qt).call(this,"Start Embedding:"),this.config.async?i=this.config.face.embedding.enabled?n2(A,this.config):[]:(this.state="run:embedding",n=mt(),i=this.config.face.embedding.enabled?await n2(A,this.config):[],Ne(this,Je).embedding=Math.trunc(mt()-n)),Ne(this,qt).call(this,"End Emotion:"),this.config.async&&([r,a,s,i]=await Promise.all([r,a,s,i])),Ne(this,qt).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((c=A==null?void 0:A.annotations)==null?void 0:c.leftEyeIris)&&((h=A==null?void 0:A.annotations)==null?void 0:h.rightEyeIris)&&(delete A.annotations.leftEyeIris,delete A.annotations.rightEyeIris);let g=((d=A.annotations)==null?void 0:d.leftEyeIris)&&((p=A.annotations)==null?void 0:p.rightEyeIris)?11.7*Math.max(Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0]),Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])):0;o.push({...A,age:r.age,gender:a.gender,genderConfidence:a.confidence,emotion:s,embedding:i,iris:g!==0?Math.trunc(g)/100:0,angle:y,tensor:this.config.face.detector.return?(f=A.image)==null?void 0:f.squeeze():null}),(m=A.image)==null||m.dispose(),Ne(this,qt).call(this,"End Face")}return Ne(this,qt).call(this,"End FaceMesh:"),this.config.async&&(Ne(this,Je).face&&delete Ne(this,Je).face,Ne(this,Je).age&&delete Ne(this,Je).age,Ne(this,Je).gender&&delete Ne(this,Je).gender,Ne(this,Je).emotion&&delete Ne(this,Je).emotion),o});H0.set(this,async()=>{let t=(a,s="application/octet-stream")=>fetch(`data:${s};base64,${a}`).then(i=>i.blob()),n,r;switch(this.config.warmup){case"face":n=await t(z0);break;case"full":n=await t(P0);break;default:n=null}if(n){let a=await createImageBitmap(n);r=await this.detect(a,this.config),a.close()}return r});j0.set(this,async()=>new Promise(t=>{let n,r=0;switch(this.config.warmup){case"face":r=256,n="data:image/jpeg;base64,"+z0;break;case"full":case"body":r=1200,n="data:image/jpeg;base64,"+P0;break;default:n=null}let a=new Image;a.onload=async()=>{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(r,r):document.createElement("canvas");s.width=a.naturalWidth,s.height=a.naturalHeight;let i=s.getContext("2d");i==null||i.drawImage(a,0,0);let o=await this.detect(s,this.config);t(o)},n?a.src=n:t(null)}));G0.set(this,async()=>{let t=i=>Buffer.from(i,"base64"),n=this.config.warmup==="face"?t(z0):t(P0),r=(void 0).decodeJpeg(n),a=r.expandDims(0);this.tf.dispose(r);let s=await this.detect(a,this.config);return this.tf.dispose(a),s});this.tf=Eh,this.draw=R2,ia(this,B0,E2),this.version=C2,this.config=Zc(gt,t),this.state="idle",ia(this,ru,0),ia(this,Yc,!1),ia(this,Jc,!1),ia(this,Bi,!0),ia(this,Je,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=n=>T2(n,this.config),this.classes={facemesh:M2,age:Lg,gender:Vg,emotion:Xg,body:this.config.body.modelPath.includes("posenet")?f2:I2,hand:b2},this.sysinfo=K2()}profileData(){return this.config.profile?Pg:{}}simmilarity(t,n){return this.config.face.embedding.enabled?e2(t,n):0}enhance(t){return t2(t)}match(t,n,r=0){return L6(t,n,r)}async load(t={}){this.state="load";let n=mt();t&&(this.config=Zc(this.config,t)),Ne(this,Bi)&&(this.config.debug&&Fe(`version: ${this.version}`),this.config.debug&&Fe(`tfjs version: ${this.tf.version_core}`),this.config.debug&&Fe("platform:",this.sysinfo.platform),this.config.debug&&Fe("agent:",this.sysinfo.agent),await Ne(this,Qc).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&Fe("configuration:",this.config),this.config.debug&&Fe("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?M2.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?Wg(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?Gg(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?Yg(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?Qg(this.config):null),this.models.handpose||(this.config.hand.enabled?k2(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?A2(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?N2(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await M2.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await Wg(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await Gg(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await Yg(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await Qg(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await k2(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await A2(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await N2(this.config))),Ne(this,Bi)&&(this.config.debug&&Fe("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ia(this,Bi,!1));let r=Math.trunc(mt()-n);r>(Ne(this,Je).load||0)&&(Ne(this,Je).load=r)}async detect(t,n={}){return new Promise(async r=>{var d,p,f,m;this.state="config";let a;this.config=Zc(this.config,n),this.state="check";let s=Ne(this,V0).call(this,t);s&&(Fe(s,t),r({error:s}));let i=mt();await Ne(this,Qc).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),Ne(this,qt).call(this,"Start Scope:"),a=mt();let o=T2(t,this.config);if(!o||!o.tensor){Fe("could not convert input to tensor"),r({error:"could not convert input to tensor"});return}Ne(this,Je).image=Math.trunc(mt()-a),Ne(this,qt).call(this,"Get Image:");let l,u,c;this.config.async?(c=this.config.face.enabled?Ne(this,eh).call(this,o.tensor):[],Ne(this,Je).face&&delete Ne(this,Je).face):(this.state="run:face",a=mt(),c=this.config.face.enabled?await Ne(this,eh).call(this,o.tensor):[],Ne(this,Je).face=Math.trunc(mt()-a)),Ne(this,qt).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?(d=this.models.posenet)==null?void 0:d.estimatePoses(o.tensor,this.config):[]:l=this.config.body.enabled?S2(o.tensor,this.config):[],Ne(this,Je).body&&delete Ne(this,Je).body):(this.state="run:body",a=mt(),this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?await((p=this.models.posenet)==null?void 0:p.estimatePoses(o.tensor,this.config)):[]:l=this.config.body.enabled?await S2(o.tensor,this.config):[],Ne(this,Je).body=Math.trunc(mt()-a)),Ne(this,qt).call(this,"End Body:"),Ne(this,qt).call(this,"Start Hand:"),this.config.async?(u=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(o.tensor,this.config):[],Ne(this,Je).hand&&delete Ne(this,Je).hand):(this.state="run:hand",a=mt(),u=this.config.hand.enabled?await((m=this.models.handpose)==null?void 0:m.estimateHands(o.tensor,this.config)):[],Ne(this,Je).hand=Math.trunc(mt()-a)),Ne(this,qt).call(this,"End Hand:"),this.config.async&&([c,l,u]=await Promise.all([c,l,u])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),Ne(this,qt).call(this,"End Scope:");let h=[];this.config.gesture.enabled&&(a=mt(),h=[...f4(c),...p4(l),...A4(u),...m4(c)],this.config.async?Ne(this,Je).gesture&&delete Ne(this,Je).gesture:Ne(this,Je).gesture=Math.trunc(mt()-a)),Ne(this,Je).total=Math.trunc(mt()-i),this.state="idle",r({face:c,body:l,hand:u,gesture:h,performance:Ne(this,Je),canvas:o.canvas})})}async warmup(t={}){let n=mt();t&&(this.config=Zc(this.config,t));let r=this.config.videoOptimized;this.config.videoOptimized=!1;let a;typeof createImageBitmap=="function"?a=await Ne(this,H0).call(this):typeof Image!="undefined"?a=await Ne(this,j0).call(this):a=await Ne(this,G0).call(this),this.config.videoOptimized=r;let s=mt();return this.config.debug&&Fe("Warmup",this.config.warmup,Math.round(s-n),"ms",a),a}};B0=new WeakMap,Je=new WeakMap,ru=new WeakMap,Yc=new WeakMap,Jc=new WeakMap,Bi=new WeakMap,qt=new WeakMap,V0=new WeakMap,Qc=new WeakMap,U0=new WeakMap,eh=new WeakMap,H0=new WeakMap,j0=new WeakMap,G0=new WeakMap;var th=0,L4=!1,kt={background:"darkslategray",hover:"lightgray",itemBackground:"black",itemColor:"white",buttonBackground:"lightblue",buttonHover:"lightgreen",checkboxOn:"lightgreen",checkboxOff:"lightcoral",rangeBackground:"lightblue",rangeLabel:"white",chartColor:"lightblue"};function Sse(){if(L4)return;let e=` +2Q==`;var E2={};xr(E2,{author:()=>I4,browser:()=>v4,bugs:()=>N4,default:()=>kse,description:()=>x4,devDependencies:()=>M4,engines:()=>E4,homepage:()=>S4,keywords:()=>F4,license:()=>T4,main:()=>b4,module:()=>_4,name:()=>g4,repository:()=>C4,scripts:()=>R4,sideEffects:()=>w4,types:()=>k4,version:()=>C2});var g4="@vladmandic/human",C2="1.1.7",x4="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",w4=!1,b4="dist/human.node.js",_4="dist/human.esm.js",v4="dist/human.esm.js",k4="types/src/human.d.ts",I4="Vladimir Mandic ",N4={url:"https://github.com/vladmandic/human/issues"},S4="https://vladmandic.github.io/human/demo/index.html",T4="MIT",E4={node:">=12.0.0"},C4={type:"git",url:"git+https://github.com/vladmandic/human.git"},R4={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},F4=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],M4={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.35","@typescript-eslint/eslint-plugin":"^4.18.0","@typescript-eslint/parser":"^4.18.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.3",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2",seedrandom:"^3.0.5","simple-git":"^2.37.0",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},kse={name:g4,version:C2,description:x4,sideEffects:w4,main:b4,module:_4,browser:v4,types:k4,author:I4,bugs:N4,homepage:S4,license:T4,engines:E4,repository:C4,scripts:R4,keywords:F4,devDependencies:M4};var R2={};xr(R2,{all:()=>Nse,body:()=>z4,canvas:()=>Ise,drawOptions:()=>de,face:()=>O4,gesture:()=>D4,hand:()=>P4});var de={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function L0(e,t,n,r=null){e.fillStyle=de.useDepth&&r?`rgba(${127.5+2*(r||0)}, ${127.5-2*(r||0)}, 255, 0.3)`:de.color,e.beginPath(),e.arc(t,n,de.pointSize,0,2*Math.PI),e.fill()}function $4(e,t,n,r,a){if(e.beginPath(),de.useCurves){let s=(t+t+r)/2,i=(n+n+a)/2;e.ellipse(s,i,r/2,a/2,0,0,2*Math.PI)}else e.lineWidth=de.lineWidth,e.moveTo(t+de.roundRect,n),e.lineTo(t+r-de.roundRect,n),e.quadraticCurveTo(t+r,n,t+r,n+de.roundRect),e.lineTo(t+r,n+a-de.roundRect),e.quadraticCurveTo(t+r,n+a,t+r-de.roundRect,n+a),e.lineTo(t+de.roundRect,n+a),e.quadraticCurveTo(t,n+a,t,n+a-de.roundRect),e.lineTo(t,n+de.roundRect),e.quadraticCurveTo(t,n,t+de.roundRect,n),e.closePath();e.stroke()}function F2(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=de.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:de.color,e.fillStyle=de.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:de.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),de.fillPolygons&&(e.closePath(),e.fill())}}function W0(e,t=[]){if(!(t===void 0||t.length===0)){if(!de.useCurves||t.length<=2){F2(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&i[1].length>0){let o=s[1]>0?`#${s[1]}`:"",l=`${s[0]} ${o}: ${i[1]}`;de.shadowColor&&de.shadowColor!==""&&(n.fillStyle=de.shadowColor,n.fillText(l,8,2+r*de.lineHeight)),n.fillStyle=de.labelColor,n.fillText(l,6,0+r*de.lineHeight),r+=1}}}async function O4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let r of t){n.font=de.font,n.strokeStyle=de.color,n.fillStyle=de.color,de.drawBoxes&&$4(n,r.box[0],r.box[1],r.box[2],r.box[3]);let a=[];if(a.push(`face confidence: ${Math.trunc(100*r.confidence)}%`),r.genderConfidence&&a.push(`${r.gender||""} ${Math.trunc(100*r.genderConfidence)}% confident`),r.age&&a.push(`age: ${r.age||""}`),r.iris&&a.push(`iris distance: ${r.iris}`),r.emotion&&r.emotion.length>0){let s=r.emotion.map(i=>`${Math.trunc(100*i.score)}% ${i.emotion}`);a.push(s.join(" "))}r.angle&&r.angle.roll&&a.push(`roll: ${Math.trunc(100*r.angle.roll)/100} yaw:${Math.trunc(100*r.angle.yaw)/100} pitch:${Math.trunc(100*r.angle.pitch)/100}`),a.length===0&&a.push("face"),n.fillStyle=de.color;for(let s=a.length-1;s>=0;s--){let i=Math.max(r.box[0],0),o=s*de.lineHeight+r.box[1];de.shadowColor&&de.shadowColor!==""&&(n.fillStyle=de.shadowColor,n.fillText(a[s],i+5,o+16)),n.fillStyle=de.labelColor,n.fillText(a[s],i+4,o+15)}if(n.lineWidth=1,r.mesh){if(de.drawPoints)for(let s of r.mesh)L0(n,s[0],s[1],s[2]);if(de.drawPolygons){n.lineWidth=1;for(let s=0;sr.mesh[o]);F2(n,i)}if(r.annotations&&r.annotations.leftEyeIris){n.strokeStyle=de.useDepth?"rgba(255, 200, 255, 0.3)":de.color,n.beginPath();let s=Math.abs(r.annotations.leftEyeIris[3][0]-r.annotations.leftEyeIris[1][0])/2,i=Math.abs(r.annotations.leftEyeIris[4][1]-r.annotations.leftEyeIris[2][1])/2;n.ellipse(r.annotations.leftEyeIris[0][0],r.annotations.leftEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),de.fillPolygons&&(n.fillStyle=de.useDepth?"rgba(255, 255, 200, 0.3)":de.color,n.fill())}if(r.annotations&&r.annotations.rightEyeIris){n.strokeStyle=de.useDepth?"rgba(255, 200, 255, 0.3)":de.color,n.beginPath();let s=Math.abs(r.annotations.rightEyeIris[3][0]-r.annotations.rightEyeIris[1][0])/2,i=Math.abs(r.annotations.rightEyeIris[4][1]-r.annotations.rightEyeIris[2][1])/2;n.ellipse(r.annotations.rightEyeIris[0][0],r.annotations.rightEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),de.fillPolygons&&(n.fillStyle=de.useDepth?"rgba(255, 255, 200, 0.3)":de.color,n.fill())}}}}}var os=[];async function z4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let r=0;ri.part==="leftShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),s.length===5&&F2(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftKnee"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftAnkle"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHeel"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftFoot"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightKnee"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightAnkle"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHeel"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightFoot"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftElbow"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftWrist"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftPalm"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightElbow"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightWrist"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightPalm"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s)}}}}async function P4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=de.font;for(let r of t){if(de.drawBoxes&&(n.strokeStyle=de.color,n.fillStyle=de.color,$4(n,r.box[0],r.box[1],r.box[2],r.box[3]),de.shadowColor&&de.shadowColor!==""&&(n.fillStyle=de.shadowColor,n.fillText("hand",r.box[0]+3,1+r.box[1]+de.lineHeight,r.box[2])),n.fillStyle=de.labelColor,n.fillText("hand",r.box[0]+2,0+r.box[1]+de.lineHeight,r.box[2]),n.stroke()),de.drawPoints&&r.landmarks&&r.landmarks.length>0)for(let a of r.landmarks)n.fillStyle=de.useDepth?`rgba(${127.5+2*a[2]}, ${127.5-2*a[2]}, 255, 0.5)`:de.color,L0(n,a[0],a[1]);if(de.drawPolygons){let a=s=>{if(!!s)for(let i=0;i0?i-1:0][0],s[i>0?i-1:0][1]),n.lineTo(s[i][0],s[i][1]),n.stroke()};a(r.annotations.indexFinger),a(r.annotations.middleFinger),a(r.annotations.ringFinger),a(r.annotations.pinky),a(r.annotations.thumb)}}}}async function Ise(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function Nse(e,t){!t||!e||e instanceof HTMLCanvasElement&&(O4(e,t.face),z4(e,t.body),P4(e,t.hand),D4(e,t.gesture))}var mt=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Zc(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Zc(s,i):n[a]=i}),n),{})}var B0,Je,ru,Yc,Jc,Bi,qt,V0,Qc,U0,eh,H0,j0,G0,$2=class{constructor(t={}){B0.set(this,void 0);Je.set(this,void 0);ru.set(this,void 0);Yc.set(this,void 0);Jc.set(this,void 0);Bi.set(this,void 0);qt.set(this,(...t)=>{if(!Ne(this,Yc))return;let n=this.tf.engine().state.numTensors,r=Ne(this,ru);ia(this,ru,n);let a=n-r;a!==0&&Fe(...t,a)});V0.set(this,t=>{if(!Ne(this,Jc))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof Ge))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Qc.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=mt();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&Fe("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&Fe("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let r=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),a=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&Fe(`wasm execution: ${r?"SIMD":"no SIMD"} ${a?"multithreaded":"singlethreaded"}`),r||Fe("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&S6();try{await this.tf.setBackend(this.config.backend)}catch(r){Fe("error: cannot set backend:",this.config.backend,r)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(Fe("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let r=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&Fe(`gl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`)}await this.tf.ready(),Ne(this,Je).backend=Math.trunc(mt()-n)}});U0.set(this,t=>{if(!t||t.length<300)return{roll:null,yaw:null,pitch:null};let n=(s,i,o,l)=>Math.atan2(l-i,o-s),r=s=>Math.abs(s*180/Math.PI%360);return{roll:n(t[33][0],t[33][1],t[263][0],t[263][1]),yaw:n(t[33][0],t[33][2],t[263][0],t[263][2]),pitch:n(t[10][1],t[10][2],t[152][1],t[152][2])}});eh.set(this,async t=>{var u,c,h,d,p,f,m;let n,r,a,s,i,o=[];this.state="run:face",n=mt();let l=await((u=this.models.face)==null?void 0:u.estimateFaces(t,this.config));if(Ne(this,Je).face=Math.trunc(mt()-n),!l)return[];for(let A of l){if(Ne(this,qt).call(this,"Get Face"),!A.image||A.image.isDisposedInternal){Fe("Face object is disposed:",A.image);continue}let y=Ne(this,U0).call(this,A.mesh);Ne(this,qt).call(this,"Start Age:"),this.config.async?r=this.config.face.age.enabled?Bg(A.image,this.config):{}:(this.state="run:age",n=mt(),r=this.config.face.age.enabled?await Bg(A.image,this.config):{},Ne(this,Je).age=Math.trunc(mt()-n)),Ne(this,qt).call(this,"Start Gender:"),this.config.async?a=this.config.face.gender.enabled?qg(A.image,this.config):{}:(this.state="run:gender",n=mt(),a=this.config.face.gender.enabled?await qg(A.image,this.config):{},Ne(this,Je).gender=Math.trunc(mt()-n)),Ne(this,qt).call(this,"Start Emotion:"),this.config.async?s=this.config.face.emotion.enabled?Jg(A.image,this.config):{}:(this.state="run:emotion",n=mt(),s=this.config.face.emotion.enabled?await Jg(A.image,this.config):{},Ne(this,Je).emotion=Math.trunc(mt()-n)),Ne(this,qt).call(this,"End Emotion:"),Ne(this,qt).call(this,"Start Embedding:"),this.config.async?i=this.config.face.embedding.enabled?n2(A,this.config):[]:(this.state="run:embedding",n=mt(),i=this.config.face.embedding.enabled?await n2(A,this.config):[],Ne(this,Je).embedding=Math.trunc(mt()-n)),Ne(this,qt).call(this,"End Emotion:"),this.config.async&&([r,a,s,i]=await Promise.all([r,a,s,i])),Ne(this,qt).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((c=A==null?void 0:A.annotations)==null?void 0:c.leftEyeIris)&&((h=A==null?void 0:A.annotations)==null?void 0:h.rightEyeIris)&&(delete A.annotations.leftEyeIris,delete A.annotations.rightEyeIris);let g=((d=A.annotations)==null?void 0:d.leftEyeIris)&&((p=A.annotations)==null?void 0:p.rightEyeIris)?11.7*Math.max(Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0]),Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])):0;o.push({...A,age:r.age,gender:a.gender,genderConfidence:a.confidence,emotion:s,embedding:i,iris:g!==0?Math.trunc(g)/100:0,angle:y,tensor:this.config.face.detector.return?(f=A.image)==null?void 0:f.squeeze():null}),(m=A.image)==null||m.dispose(),Ne(this,qt).call(this,"End Face")}return Ne(this,qt).call(this,"End FaceMesh:"),this.config.async&&(Ne(this,Je).face&&delete Ne(this,Je).face,Ne(this,Je).age&&delete Ne(this,Je).age,Ne(this,Je).gender&&delete Ne(this,Je).gender,Ne(this,Je).emotion&&delete Ne(this,Je).emotion),o});H0.set(this,async()=>{let t=(a,s="application/octet-stream")=>fetch(`data:${s};base64,${a}`).then(i=>i.blob()),n,r;switch(this.config.warmup){case"face":n=await t(z0);break;case"full":n=await t(P0);break;default:n=null}if(n){let a=await createImageBitmap(n);r=await this.detect(a,this.config),a.close()}return r});j0.set(this,async()=>new Promise(t=>{let n,r=0;switch(this.config.warmup){case"face":r=256,n="data:image/jpeg;base64,"+z0;break;case"full":case"body":r=1200,n="data:image/jpeg;base64,"+P0;break;default:n=null}let a=new Image;a.onload=async()=>{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(r,r):document.createElement("canvas");s.width=a.naturalWidth,s.height=a.naturalHeight;let i=s.getContext("2d");i==null||i.drawImage(a,0,0);let o=await this.detect(s,this.config);t(o)},n?a.src=n:t(null)}));G0.set(this,async()=>{let t=i=>Buffer.from(i,"base64"),n=this.config.warmup==="face"?t(z0):t(P0),r=(void 0).decodeJpeg(n),a=r.expandDims(0);this.tf.dispose(r);let s=await this.detect(a,this.config);return this.tf.dispose(a),s});this.tf=Eh,this.draw=R2,ia(this,B0,E2),this.version=C2,this.config=Zc(gt,t),this.state="idle",ia(this,ru,0),ia(this,Yc,!1),ia(this,Jc,!1),ia(this,Bi,!0),ia(this,Je,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=n=>T2(n,this.config),this.classes={facemesh:M2,age:Lg,gender:Vg,emotion:Xg,body:this.config.body.modelPath.includes("posenet")?f2:I2,hand:b2},this.sysinfo=K2()}profileData(){return this.config.profile?Pg:{}}simmilarity(t,n){return this.config.face.embedding.enabled?e2(t,n):0}enhance(t){return t2(t)}match(t,n,r=0){return L6(t,n,r)}async load(t={}){this.state="load";let n=mt();t&&(this.config=Zc(this.config,t)),Ne(this,Bi)&&(this.config.debug&&Fe(`version: ${this.version}`),this.config.debug&&Fe(`tfjs version: ${this.tf.version_core}`),this.config.debug&&Fe("platform:",this.sysinfo.platform),this.config.debug&&Fe("agent:",this.sysinfo.agent),await Ne(this,Qc).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&Fe("configuration:",this.config),this.config.debug&&Fe("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?M2.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?Wg(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?Gg(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?Yg(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?Qg(this.config):null),this.models.handpose||(this.config.hand.enabled?k2(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?A2(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?N2(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await M2.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await Wg(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await Gg(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await Yg(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await Qg(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await k2(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await A2(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await N2(this.config))),Ne(this,Bi)&&(this.config.debug&&Fe("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ia(this,Bi,!1));let r=Math.trunc(mt()-n);r>(Ne(this,Je).load||0)&&(Ne(this,Je).load=r)}async detect(t,n={}){return new Promise(async r=>{var d,p,f,m;this.state="config";let a;this.config=Zc(this.config,n),this.state="check";let s=Ne(this,V0).call(this,t);s&&(Fe(s,t),r({error:s}));let i=mt();await Ne(this,Qc).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),Ne(this,qt).call(this,"Start Scope:"),a=mt();let o=T2(t,this.config);if(!o||!o.tensor){Fe("could not convert input to tensor"),r({error:"could not convert input to tensor"});return}Ne(this,Je).image=Math.trunc(mt()-a),Ne(this,qt).call(this,"Get Image:");let l,u,c;this.config.async?(c=this.config.face.enabled?Ne(this,eh).call(this,o.tensor):[],Ne(this,Je).face&&delete Ne(this,Je).face):(this.state="run:face",a=mt(),c=this.config.face.enabled?await Ne(this,eh).call(this,o.tensor):[],Ne(this,Je).face=Math.trunc(mt()-a)),Ne(this,qt).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?(d=this.models.posenet)==null?void 0:d.estimatePoses(o.tensor,this.config):[]:l=this.config.body.enabled?S2(o.tensor,this.config):[],Ne(this,Je).body&&delete Ne(this,Je).body):(this.state="run:body",a=mt(),this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?await((p=this.models.posenet)==null?void 0:p.estimatePoses(o.tensor,this.config)):[]:l=this.config.body.enabled?await S2(o.tensor,this.config):[],Ne(this,Je).body=Math.trunc(mt()-a)),Ne(this,qt).call(this,"End Body:"),Ne(this,qt).call(this,"Start Hand:"),this.config.async?(u=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(o.tensor,this.config):[],Ne(this,Je).hand&&delete Ne(this,Je).hand):(this.state="run:hand",a=mt(),u=this.config.hand.enabled?await((m=this.models.handpose)==null?void 0:m.estimateHands(o.tensor,this.config)):[],Ne(this,Je).hand=Math.trunc(mt()-a)),Ne(this,qt).call(this,"End Hand:"),this.config.async&&([c,l,u]=await Promise.all([c,l,u])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),Ne(this,qt).call(this,"End Scope:");let h=[];this.config.gesture.enabled&&(a=mt(),h=[...f4(c),...p4(l),...A4(u),...m4(c)],this.config.async?Ne(this,Je).gesture&&delete Ne(this,Je).gesture:Ne(this,Je).gesture=Math.trunc(mt()-a)),Ne(this,Je).total=Math.trunc(mt()-i),this.state="idle",r({face:c,body:l,hand:u,gesture:h,performance:Ne(this,Je),canvas:o.canvas})})}async warmup(t={}){let n=mt();t&&(this.config=Zc(this.config,t));let r=this.config.videoOptimized;this.config.videoOptimized=!1;let a;typeof createImageBitmap=="function"?a=await Ne(this,H0).call(this):typeof Image!="undefined"?a=await Ne(this,j0).call(this):a=await Ne(this,G0).call(this),this.config.videoOptimized=r;let s=mt();return this.config.debug&&Fe("Warmup",this.config.warmup,Math.round(s-n),"ms",a),a}};B0=new WeakMap,Je=new WeakMap,ru=new WeakMap,Yc=new WeakMap,Jc=new WeakMap,Bi=new WeakMap,qt=new WeakMap,V0=new WeakMap,Qc=new WeakMap,U0=new WeakMap,eh=new WeakMap,H0=new WeakMap,j0=new WeakMap,G0=new WeakMap;var th=0,L4=!1,kt={background:"darkslategray",hover:"lightgray",itemBackground:"black",itemColor:"white",buttonBackground:"lightblue",buttonHover:"lightgreen",checkboxOn:"lightgreen",checkboxOff:"lightcoral",rangeBackground:"lightblue",rangeLabel:"white",chartColor:"lightblue"};function Sse(){if(L4)return;let e=` :root { --rounded: 0.1rem; } .menu { position: absolute; top: 0rem; right: 0; width: max-content; padding: 0 0.2rem 0 0.2rem; line-height: 1.8rem; z-index: 10; box-shadow: 0 0 8px dimgrey; background: ${kt.background}; border-radius: var(--rounded); border-color: black; border-style: solid; border-width: thin; } diff --git a/dist/human.esm-nobundle.js b/dist/human.esm-nobundle.js index 3e048b2a..4473c9cf 100644 --- a/dist/human.esm-nobundle.js +++ b/dist/human.esm-nobundle.js @@ -731,5 +731,5 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var A0={};U(A0,{author:()=>mt,browser:()=>dt,bugs:()=>ut,default:()=>In,description:()=>yt,devDependencies:()=>zt,engines:()=>gt,homepage:()=>pt,keywords:()=>vt,license:()=>bt,main:()=>wt,module:()=>lt,name:()=>xt,repository:()=>Tt,scripts:()=>Pt,sideEffects:()=>at,types:()=>ft,version:()=>c0});var xt="@vladmandic/human",c0="1.1.6",yt="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",at=!1,wt="dist/human.node.js",lt="dist/human.esm.js",dt="dist/human.esm.js",ft="types/src/human.d.ts",mt="Vladimir Mandic ",ut={url:"https://github.com/vladmandic/human/issues"},pt="https://vladmandic.github.io/human/demo/index.html",bt="MIT",gt={node:">=12.0.0"},Tt={type:"git",url:"git+https://github.com/vladmandic/human.git"},Pt={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},vt=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],zt={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.35","@typescript-eslint/eslint-plugin":"^4.18.0","@typescript-eslint/parser":"^4.18.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2",seedrandom:"^3.0.5","simple-git":"^2.37.0",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},In={name:xt,version:c0,description:yt,sideEffects:at,main:wt,module:lt,browser:dt,types:ft,author:mt,bugs:ut,homepage:pt,license:bt,engines:gt,repository:Tt,scripts:Pt,keywords:vt,devDependencies:zt};var _0={};U(_0,{all:()=>Vn,body:()=>St,canvas:()=>Zn,drawOptions:()=>d,face:()=>Rt,gesture:()=>Et,hand:()=>Nt});var d={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function Ue(n,e,t,A=null){n.fillStyle=d.useDepth&&A?`rgba(${127.5+2*(A||0)}, ${127.5-2*(A||0)}, 255, 0.3)`:d.color,n.beginPath(),n.arc(e,t,d.pointSize,0,2*Math.PI),n.fill()}function Mt(n,e,t,A,r){if(n.beginPath(),d.useCurves){let c=(e+e+A)/2,_=(t+t+r)/2;n.ellipse(c,_,A/2,r/2,0,0,2*Math.PI)}else n.lineWidth=d.lineWidth,n.moveTo(e+d.roundRect,t),n.lineTo(e+A-d.roundRect,t),n.quadraticCurveTo(e+A,t,e+A,t+d.roundRect),n.lineTo(e+A,t+r-d.roundRect),n.quadraticCurveTo(e+A,t+r,e+A-d.roundRect,t+r),n.lineTo(e+d.roundRect,t+r),n.quadraticCurveTo(e,t+r,e,t+r-d.roundRect),n.lineTo(e,t+d.roundRect),n.quadraticCurveTo(e,t,e+d.roundRect,t),n.closePath();n.stroke()}function h0(n,e=[]){if(!(e===void 0||e.length===0)){n.beginPath(),n.moveTo(e[0][0],e[0][1]);for(let t of e)n.strokeStyle=d.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:d.color,n.fillStyle=d.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:d.color,n.lineTo(t[0],parseInt(t[1]));n.stroke(),d.fillPolygons&&(n.closePath(),n.fill())}}function De(n,e=[]){if(!(e===void 0||e.length===0)){if(!d.useCurves||e.length<=2){h0(n,e);return}n.moveTo(e[0][0],e[0][1]);for(let t=0;t1&&_[1].length>0){let h=c[1]>0?`#${c[1]}`:"",o=`${c[0]} ${h}: ${_[1]}`;d.shadowColor&&d.shadowColor!==""&&(t.fillStyle=d.shadowColor,t.fillText(o,8,2+A*d.lineHeight)),t.fillStyle=d.labelColor,t.fillText(o,6,0+A*d.lineHeight),A+=1}}}async function Rt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t)for(let A of e){t.font=d.font,t.strokeStyle=d.color,t.fillStyle=d.color,d.drawBoxes&&Mt(t,A.box[0],A.box[1],A.box[2],A.box[3]);let r=[];if(r.push(`face confidence: ${Math.trunc(100*A.confidence)}%`),A.genderConfidence&&r.push(`${A.gender||""} ${Math.trunc(100*A.genderConfidence)}% confident`),A.age&&r.push(`age: ${A.age||""}`),A.iris&&r.push(`iris distance: ${A.iris}`),A.emotion&&A.emotion.length>0){let c=A.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(c.join(" "))}A.angle&&A.angle.roll&&r.push(`roll: ${Math.trunc(100*A.angle.roll)/100} yaw:${Math.trunc(100*A.angle.yaw)/100} pitch:${Math.trunc(100*A.angle.pitch)/100}`),r.length===0&&r.push("face"),t.fillStyle=d.color;for(let c=r.length-1;c>=0;c--){let _=Math.max(A.box[0],0),h=c*d.lineHeight+A.box[1];d.shadowColor&&d.shadowColor!==""&&(t.fillStyle=d.shadowColor,t.fillText(r[c],_+5,h+16)),t.fillStyle=d.labelColor,t.fillText(r[c],_+4,h+15)}if(t.lineWidth=1,A.mesh){if(d.drawPoints)for(let c of A.mesh)Ue(t,c[0],c[1],c[2]);if(d.drawPolygons){t.lineWidth=1;for(let c=0;cA.mesh[h]);h0(t,_)}if(A.annotations&&A.annotations.leftEyeIris){t.strokeStyle=d.useDepth?"rgba(255, 200, 255, 0.3)":d.color,t.beginPath();let c=Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0])/2,_=Math.abs(A.annotations.leftEyeIris[4][1]-A.annotations.leftEyeIris[2][1])/2;t.ellipse(A.annotations.leftEyeIris[0][0],A.annotations.leftEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),d.fillPolygons&&(t.fillStyle=d.useDepth?"rgba(255, 255, 200, 0.3)":d.color,t.fill())}if(A.annotations&&A.annotations.rightEyeIris){t.strokeStyle=d.useDepth?"rgba(255, 200, 255, 0.3)":d.color,t.beginPath();let c=Math.abs(A.annotations.rightEyeIris[3][0]-A.annotations.rightEyeIris[1][0])/2,_=Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])/2;t.ellipse(A.annotations.rightEyeIris[0][0],A.annotations.rightEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),d.fillPolygons&&(t.fillStyle=d.useDepth?"rgba(255, 255, 200, 0.3)":d.color,t.fill())}}}}}var ie=[];async function St(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round";for(let A=0;A_.part==="leftShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),c.length===5&&h0(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c)}}}}async function Nt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round",t.font=d.font;for(let A of e){if(d.drawBoxes&&(t.strokeStyle=d.color,t.fillStyle=d.color,Mt(t,A.box[0],A.box[1],A.box[2],A.box[3]),d.shadowColor&&d.shadowColor!==""&&(t.fillStyle=d.shadowColor,t.fillText("hand",A.box[0]+3,1+A.box[1]+d.lineHeight,A.box[2])),t.fillStyle=d.labelColor,t.fillText("hand",A.box[0]+2,0+A.box[1]+d.lineHeight,A.box[2]),t.stroke()),d.drawPoints&&A.landmarks&&A.landmarks.length>0)for(let r of A.landmarks)t.fillStyle=d.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:d.color,Ue(t,r[0],r[1]);if(d.drawPolygons){let r=c=>{if(!!c)for(let _=0;_0?_-1:0][0],c[_>0?_-1:0][1]),t.lineTo(c[_][0],c[_][1]),t.stroke()};r(A.annotations.indexFinger),r(A.annotations.middleFinger),r(A.annotations.ringFinger),r(A.annotations.pinky),r(A.annotations.thumb)}}}}async function Zn(n,e){if(!n||!e||!(n instanceof HTMLCanvasElement)||!(e instanceof HTMLCanvasElement))return;let t=n.getContext("2d");t==null||t.drawImage(n,0,0)}async function Vn(n,e){!e||!n||n instanceof HTMLCanvasElement&&(Rt(n,e.face),St(n,e.body),Nt(n,e.hand),Et(n,e.gesture))}var E=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function be(...n){let e=t=>t&&typeof t=="object";return n.reduce((t,A)=>(Object.keys(A||{}).forEach(r=>{let c=t[r],_=A[r];Array.isArray(c)&&Array.isArray(_)?t[r]=c.concat(..._):e(c)&&e(_)?t[r]=be(c,_):t[r]=_}),t),{})}var Ge,z,me,ge,Te,ae,k,Qe,Pe,$e,ve,e1,t1,n1,jt=class{constructor(e={}){Ge.set(this,void 0);z.set(this,void 0);me.set(this,void 0);ge.set(this,void 0);Te.set(this,void 0);ae.set(this,void 0);k.set(this,(...e)=>{if(!u(this,ge))return;let t=this.tf.engine().state.numTensors,A=u(this,me);ne(this,me,t);let r=t-A;r!==0&&T(...e,r)});Qe.set(this,e=>{if(!u(this,Te))return null;if(!e)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(e instanceof o0.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(t){return"backend not loaded"}return null});Pe.set(this,async(e=!1)=>{if(this.config.backend&&this.config.backend!==""&&e||this.tf.getBackend()!==this.config.backend){let t=E();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&T("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&T("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let A=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&T(`wasm execution: ${A?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),A||T("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&d0();try{await this.tf.setBackend(this.config.backend)}catch(A){T("error: cannot set backend:",this.config.backend,A)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(T("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let A=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&T(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}await this.tf.ready(),u(this,z).backend=Math.trunc(E()-t)}});$e.set(this,e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(c,_,h,o)=>Math.atan2(o-_,h-c),A=c=>Math.abs(c*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}});ve.set(this,async e=>{var i,a,s,l,m,f,x;let t,A,r,c,_,h=[];this.state="run:face",t=E();let o=await((i=this.models.face)==null?void 0:i.estimateFaces(e,this.config));if(u(this,z).face=Math.trunc(E()-t),!o)return[];for(let g of o){if(u(this,k).call(this,"Get Face"),!g.image||g.image.isDisposedInternal){T("Face object is disposed:",g.image);continue}let Z=u(this,$e).call(this,g.mesh);u(this,k).call(this,"Start Age:"),this.config.async?A=this.config.face.age.enabled?l1(g.image,this.config):{}:(this.state="run:age",t=E(),A=this.config.face.age.enabled?await l1(g.image,this.config):{},u(this,z).age=Math.trunc(E()-t)),u(this,k).call(this,"Start Gender:"),this.config.async?r=this.config.face.gender.enabled?b1(g.image,this.config):{}:(this.state="run:gender",t=E(),r=this.config.face.gender.enabled?await b1(g.image,this.config):{},u(this,z).gender=Math.trunc(E()-t)),u(this,k).call(this,"Start Emotion:"),this.config.async?c=this.config.face.emotion.enabled?z1(g.image,this.config):{}:(this.state="run:emotion",t=E(),c=this.config.face.emotion.enabled?await z1(g.image,this.config):{},u(this,z).emotion=Math.trunc(E()-t)),u(this,k).call(this,"End Emotion:"),u(this,k).call(this,"Start Embedding:"),this.config.async?_=this.config.face.embedding.enabled?S1(g,this.config):[]:(this.state="run:embedding",t=E(),_=this.config.face.embedding.enabled?await S1(g,this.config):[],u(this,z).embedding=Math.trunc(E()-t)),u(this,k).call(this,"End Emotion:"),this.config.async&&([A,r,c,_]=await Promise.all([A,r,c,_])),u(this,k).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((a=g==null?void 0:g.annotations)==null?void 0:a.leftEyeIris)&&((s=g==null?void 0:g.annotations)==null?void 0:s.rightEyeIris)&&(delete g.annotations.leftEyeIris,delete g.annotations.rightEyeIris);let V=((l=g.annotations)==null?void 0:l.leftEyeIris)&&((m=g.annotations)==null?void 0:m.rightEyeIris)?11.7*Math.max(Math.abs(g.annotations.leftEyeIris[3][0]-g.annotations.leftEyeIris[1][0]),Math.abs(g.annotations.rightEyeIris[4][1]-g.annotations.rightEyeIris[2][1])):0;h.push({...g,age:A.age,gender:r.gender,genderConfidence:r.confidence,emotion:c,embedding:_,iris:V!==0?Math.trunc(V)/100:0,angle:Z,tensor:this.config.face.detector.return?(f=g.image)==null?void 0:f.squeeze():null}),(x=g.image)==null||x.dispose(),u(this,k).call(this,"End Face")}return u(this,k).call(this,"End FaceMesh:"),this.config.async&&(u(this,z).face&&delete u(this,z).face,u(this,z).age&&delete u(this,z).age,u(this,z).gender&&delete u(this,z).gender,u(this,z).emotion&&delete u(this,z).emotion),h});e1.set(this,async()=>{let e=(r,c="application/octet-stream")=>fetch(`data:${c};base64,${r}`).then(_=>_.blob()),t,A;switch(this.config.warmup){case"face":t=await e(Je);break;case"full":t=await e(Ke);break;default:t=null}if(t){let r=await createImageBitmap(t);A=await this.detect(r,this.config),r.close()}return A});t1.set(this,async()=>new Promise(e=>{let t,A=0;switch(this.config.warmup){case"face":A=256,t="data:image/jpeg;base64,"+Je;break;case"full":case"body":A=1200,t="data:image/jpeg;base64,"+Ke;break;default:t=null}let r=new Image;r.onload=async()=>{let c=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(A,A):document.createElement("canvas");c.width=r.naturalWidth,c.height=r.naturalHeight;let _=c.getContext("2d");_==null||_.drawImage(r,0,0);let h=await this.detect(c,this.config);e(h)},t?r.src=t:e(null)}));n1.set(this,async()=>{let e=_=>Buffer.from(_,"base64"),t=this.config.warmup==="face"?e(Je):e(Ke),A=o0.node.decodeJpeg(t),r=A.expandDims(0);this.tf.dispose(A);let c=await this.detect(r,this.config);return this.tf.dispose(r),c});this.tf=o0,this.draw=_0,ne(this,Ge,A0),this.version=c0,this.config=be(S,e),this.state="idle",ne(this,me,0),ne(this,ge,!1),ne(this,Te,!1),ne(this,ae,!0),ne(this,z,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=t=>r0(t,this.config),this.classes={facemesh:s0,age:a1,gender:d1,emotion:g1,body:this.config.body.modelPath.includes("posenet")?F1:e0,hand:U1},this.sysinfo=l0()}profileData(){return this.config.profile?y1:{}}simmilarity(e,t){return this.config.face.embedding.enabled?E1(e,t):0}enhance(e){return R1(e)}match(e,t,A=0){return R0(e,t,A)}async load(e={}){this.state="load";let t=E();e&&(this.config=be(this.config,e)),u(this,ae)&&(this.config.debug&&T(`version: ${this.version}`),this.config.debug&&T(`tfjs version: ${this.tf.version_core}`),this.config.debug&&T("platform:",this.sysinfo.platform),this.config.debug&&T("agent:",this.sysinfo.agent),await u(this,Pe).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&T("configuration:",this.config),this.config.debug&&T("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?s0.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?w1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?p1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?v1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?M1(this.config):null),this.models.handpose||(this.config.hand.enabled?$1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?Y1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?t0(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await s0.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await w1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await p1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await v1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await M1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await $1(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await Y1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await t0(this.config))),u(this,ae)&&(this.config.debug&&T("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ne(this,ae,!1));let A=Math.trunc(E()-t);A>(u(this,z).load||0)&&(u(this,z).load=A)}async detect(e,t={}){return new Promise(async A=>{var l,m,f,x;this.state="config";let r;this.config=be(this.config,t),this.state="check";let c=u(this,Qe).call(this,e);c&&(T(c,e),A({error:c}));let _=E();await u(this,Pe).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),u(this,k).call(this,"Start Scope:"),r=E();let h=r0(e,this.config);if(!h||!h.tensor){T("could not convert input to tensor"),A({error:"could not convert input to tensor"});return}u(this,z).image=Math.trunc(E()-r),u(this,k).call(this,"Get Image:");let o,i,a;this.config.async?(a=this.config.face.enabled?u(this,ve).call(this,h.tensor):[],u(this,z).face&&delete u(this,z).face):(this.state="run:face",r=E(),a=this.config.face.enabled?await u(this,ve).call(this,h.tensor):[],u(this,z).face=Math.trunc(E()-r)),u(this,k).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?(l=this.models.posenet)==null?void 0:l.estimatePoses(h.tensor,this.config):[]:o=this.config.body.enabled?n0(h.tensor,this.config):[],u(this,z).body&&delete u(this,z).body):(this.state="run:body",r=E(),this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?await((m=this.models.posenet)==null?void 0:m.estimatePoses(h.tensor,this.config)):[]:o=this.config.body.enabled?await n0(h.tensor,this.config):[],u(this,z).body=Math.trunc(E()-r)),u(this,k).call(this,"End Body:"),u(this,k).call(this,"Start Hand:"),this.config.async?(i=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(h.tensor,this.config):[],u(this,z).hand&&delete u(this,z).hand):(this.state="run:hand",r=E(),i=this.config.hand.enabled?await((x=this.models.handpose)==null?void 0:x.estimateHands(h.tensor,this.config)):[],u(this,z).hand=Math.trunc(E()-r)),u(this,k).call(this,"End Hand:"),this.config.async&&([a,o,i]=await Promise.all([a,o,i])),h.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),u(this,k).call(this,"End Scope:");let s=[];this.config.gesture.enabled&&(r=E(),s=[...ht(a),..._t(o),...st(i),...ot(a)],this.config.async?u(this,z).gesture&&delete u(this,z).gesture:u(this,z).gesture=Math.trunc(E()-r)),u(this,z).total=Math.trunc(E()-_),this.state="idle",A({face:a,body:o,hand:i,gesture:s,performance:u(this,z),canvas:h.canvas})})}async warmup(e={}){let t=E();e&&(this.config=be(this.config,e));let A=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await u(this,e1).call(this):typeof Image!="undefined"?r=await u(this,t1).call(this):r=await u(this,n1).call(this),this.config.videoOptimized=A;let c=E();return this.config.debug&&T("Warmup",this.config.warmup,Math.round(c-t),"ms",r),r}};Ge=new WeakMap,z=new WeakMap,me=new WeakMap,ge=new WeakMap,Te=new WeakMap,ae=new WeakMap,k=new WeakMap,Qe=new WeakMap,Pe=new WeakMap,$e=new WeakMap,ve=new WeakMap,e1=new WeakMap,t1=new WeakMap,n1=new WeakMap;export{jt as Human,jt as default}; +2Q==`;var A0={};U(A0,{author:()=>mt,browser:()=>dt,bugs:()=>ut,default:()=>In,description:()=>yt,devDependencies:()=>zt,engines:()=>gt,homepage:()=>pt,keywords:()=>vt,license:()=>bt,main:()=>wt,module:()=>lt,name:()=>xt,repository:()=>Tt,scripts:()=>Pt,sideEffects:()=>at,types:()=>ft,version:()=>c0});var xt="@vladmandic/human",c0="1.1.7",yt="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",at=!1,wt="dist/human.node.js",lt="dist/human.esm.js",dt="dist/human.esm.js",ft="types/src/human.d.ts",mt="Vladimir Mandic ",ut={url:"https://github.com/vladmandic/human/issues"},pt="https://vladmandic.github.io/human/demo/index.html",bt="MIT",gt={node:">=12.0.0"},Tt={type:"git",url:"git+https://github.com/vladmandic/human.git"},Pt={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},vt=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],zt={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.35","@typescript-eslint/eslint-plugin":"^4.18.0","@typescript-eslint/parser":"^4.18.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.3",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2",seedrandom:"^3.0.5","simple-git":"^2.37.0",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},In={name:xt,version:c0,description:yt,sideEffects:at,main:wt,module:lt,browser:dt,types:ft,author:mt,bugs:ut,homepage:pt,license:bt,engines:gt,repository:Tt,scripts:Pt,keywords:vt,devDependencies:zt};var _0={};U(_0,{all:()=>Vn,body:()=>St,canvas:()=>Zn,drawOptions:()=>d,face:()=>Rt,gesture:()=>Et,hand:()=>Nt});var d={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function Ue(n,e,t,A=null){n.fillStyle=d.useDepth&&A?`rgba(${127.5+2*(A||0)}, ${127.5-2*(A||0)}, 255, 0.3)`:d.color,n.beginPath(),n.arc(e,t,d.pointSize,0,2*Math.PI),n.fill()}function Mt(n,e,t,A,r){if(n.beginPath(),d.useCurves){let c=(e+e+A)/2,_=(t+t+r)/2;n.ellipse(c,_,A/2,r/2,0,0,2*Math.PI)}else n.lineWidth=d.lineWidth,n.moveTo(e+d.roundRect,t),n.lineTo(e+A-d.roundRect,t),n.quadraticCurveTo(e+A,t,e+A,t+d.roundRect),n.lineTo(e+A,t+r-d.roundRect),n.quadraticCurveTo(e+A,t+r,e+A-d.roundRect,t+r),n.lineTo(e+d.roundRect,t+r),n.quadraticCurveTo(e,t+r,e,t+r-d.roundRect),n.lineTo(e,t+d.roundRect),n.quadraticCurveTo(e,t,e+d.roundRect,t),n.closePath();n.stroke()}function h0(n,e=[]){if(!(e===void 0||e.length===0)){n.beginPath(),n.moveTo(e[0][0],e[0][1]);for(let t of e)n.strokeStyle=d.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:d.color,n.fillStyle=d.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:d.color,n.lineTo(t[0],parseInt(t[1]));n.stroke(),d.fillPolygons&&(n.closePath(),n.fill())}}function De(n,e=[]){if(!(e===void 0||e.length===0)){if(!d.useCurves||e.length<=2){h0(n,e);return}n.moveTo(e[0][0],e[0][1]);for(let t=0;t1&&_[1].length>0){let h=c[1]>0?`#${c[1]}`:"",o=`${c[0]} ${h}: ${_[1]}`;d.shadowColor&&d.shadowColor!==""&&(t.fillStyle=d.shadowColor,t.fillText(o,8,2+A*d.lineHeight)),t.fillStyle=d.labelColor,t.fillText(o,6,0+A*d.lineHeight),A+=1}}}async function Rt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t)for(let A of e){t.font=d.font,t.strokeStyle=d.color,t.fillStyle=d.color,d.drawBoxes&&Mt(t,A.box[0],A.box[1],A.box[2],A.box[3]);let r=[];if(r.push(`face confidence: ${Math.trunc(100*A.confidence)}%`),A.genderConfidence&&r.push(`${A.gender||""} ${Math.trunc(100*A.genderConfidence)}% confident`),A.age&&r.push(`age: ${A.age||""}`),A.iris&&r.push(`iris distance: ${A.iris}`),A.emotion&&A.emotion.length>0){let c=A.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(c.join(" "))}A.angle&&A.angle.roll&&r.push(`roll: ${Math.trunc(100*A.angle.roll)/100} yaw:${Math.trunc(100*A.angle.yaw)/100} pitch:${Math.trunc(100*A.angle.pitch)/100}`),r.length===0&&r.push("face"),t.fillStyle=d.color;for(let c=r.length-1;c>=0;c--){let _=Math.max(A.box[0],0),h=c*d.lineHeight+A.box[1];d.shadowColor&&d.shadowColor!==""&&(t.fillStyle=d.shadowColor,t.fillText(r[c],_+5,h+16)),t.fillStyle=d.labelColor,t.fillText(r[c],_+4,h+15)}if(t.lineWidth=1,A.mesh){if(d.drawPoints)for(let c of A.mesh)Ue(t,c[0],c[1],c[2]);if(d.drawPolygons){t.lineWidth=1;for(let c=0;cA.mesh[h]);h0(t,_)}if(A.annotations&&A.annotations.leftEyeIris){t.strokeStyle=d.useDepth?"rgba(255, 200, 255, 0.3)":d.color,t.beginPath();let c=Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0])/2,_=Math.abs(A.annotations.leftEyeIris[4][1]-A.annotations.leftEyeIris[2][1])/2;t.ellipse(A.annotations.leftEyeIris[0][0],A.annotations.leftEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),d.fillPolygons&&(t.fillStyle=d.useDepth?"rgba(255, 255, 200, 0.3)":d.color,t.fill())}if(A.annotations&&A.annotations.rightEyeIris){t.strokeStyle=d.useDepth?"rgba(255, 200, 255, 0.3)":d.color,t.beginPath();let c=Math.abs(A.annotations.rightEyeIris[3][0]-A.annotations.rightEyeIris[1][0])/2,_=Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])/2;t.ellipse(A.annotations.rightEyeIris[0][0],A.annotations.rightEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),d.fillPolygons&&(t.fillStyle=d.useDepth?"rgba(255, 255, 200, 0.3)":d.color,t.fill())}}}}}var ie=[];async function St(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round";for(let A=0;A_.part==="leftShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),c.length===5&&h0(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c)}}}}async function Nt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round",t.font=d.font;for(let A of e){if(d.drawBoxes&&(t.strokeStyle=d.color,t.fillStyle=d.color,Mt(t,A.box[0],A.box[1],A.box[2],A.box[3]),d.shadowColor&&d.shadowColor!==""&&(t.fillStyle=d.shadowColor,t.fillText("hand",A.box[0]+3,1+A.box[1]+d.lineHeight,A.box[2])),t.fillStyle=d.labelColor,t.fillText("hand",A.box[0]+2,0+A.box[1]+d.lineHeight,A.box[2]),t.stroke()),d.drawPoints&&A.landmarks&&A.landmarks.length>0)for(let r of A.landmarks)t.fillStyle=d.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:d.color,Ue(t,r[0],r[1]);if(d.drawPolygons){let r=c=>{if(!!c)for(let _=0;_0?_-1:0][0],c[_>0?_-1:0][1]),t.lineTo(c[_][0],c[_][1]),t.stroke()};r(A.annotations.indexFinger),r(A.annotations.middleFinger),r(A.annotations.ringFinger),r(A.annotations.pinky),r(A.annotations.thumb)}}}}async function Zn(n,e){if(!n||!e||!(n instanceof HTMLCanvasElement)||!(e instanceof HTMLCanvasElement))return;let t=n.getContext("2d");t==null||t.drawImage(n,0,0)}async function Vn(n,e){!e||!n||n instanceof HTMLCanvasElement&&(Rt(n,e.face),St(n,e.body),Nt(n,e.hand),Et(n,e.gesture))}var E=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function be(...n){let e=t=>t&&typeof t=="object";return n.reduce((t,A)=>(Object.keys(A||{}).forEach(r=>{let c=t[r],_=A[r];Array.isArray(c)&&Array.isArray(_)?t[r]=c.concat(..._):e(c)&&e(_)?t[r]=be(c,_):t[r]=_}),t),{})}var Ge,z,me,ge,Te,ae,k,Qe,Pe,$e,ve,e1,t1,n1,jt=class{constructor(e={}){Ge.set(this,void 0);z.set(this,void 0);me.set(this,void 0);ge.set(this,void 0);Te.set(this,void 0);ae.set(this,void 0);k.set(this,(...e)=>{if(!u(this,ge))return;let t=this.tf.engine().state.numTensors,A=u(this,me);ne(this,me,t);let r=t-A;r!==0&&T(...e,r)});Qe.set(this,e=>{if(!u(this,Te))return null;if(!e)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(e instanceof o0.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(t){return"backend not loaded"}return null});Pe.set(this,async(e=!1)=>{if(this.config.backend&&this.config.backend!==""&&e||this.tf.getBackend()!==this.config.backend){let t=E();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&T("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&T("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let A=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&T(`wasm execution: ${A?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),A||T("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&d0();try{await this.tf.setBackend(this.config.backend)}catch(A){T("error: cannot set backend:",this.config.backend,A)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(T("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let A=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&T(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}await this.tf.ready(),u(this,z).backend=Math.trunc(E()-t)}});$e.set(this,e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(c,_,h,o)=>Math.atan2(o-_,h-c),A=c=>Math.abs(c*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}});ve.set(this,async e=>{var i,a,s,l,m,f,x;let t,A,r,c,_,h=[];this.state="run:face",t=E();let o=await((i=this.models.face)==null?void 0:i.estimateFaces(e,this.config));if(u(this,z).face=Math.trunc(E()-t),!o)return[];for(let g of o){if(u(this,k).call(this,"Get Face"),!g.image||g.image.isDisposedInternal){T("Face object is disposed:",g.image);continue}let Z=u(this,$e).call(this,g.mesh);u(this,k).call(this,"Start Age:"),this.config.async?A=this.config.face.age.enabled?l1(g.image,this.config):{}:(this.state="run:age",t=E(),A=this.config.face.age.enabled?await l1(g.image,this.config):{},u(this,z).age=Math.trunc(E()-t)),u(this,k).call(this,"Start Gender:"),this.config.async?r=this.config.face.gender.enabled?b1(g.image,this.config):{}:(this.state="run:gender",t=E(),r=this.config.face.gender.enabled?await b1(g.image,this.config):{},u(this,z).gender=Math.trunc(E()-t)),u(this,k).call(this,"Start Emotion:"),this.config.async?c=this.config.face.emotion.enabled?z1(g.image,this.config):{}:(this.state="run:emotion",t=E(),c=this.config.face.emotion.enabled?await z1(g.image,this.config):{},u(this,z).emotion=Math.trunc(E()-t)),u(this,k).call(this,"End Emotion:"),u(this,k).call(this,"Start Embedding:"),this.config.async?_=this.config.face.embedding.enabled?S1(g,this.config):[]:(this.state="run:embedding",t=E(),_=this.config.face.embedding.enabled?await S1(g,this.config):[],u(this,z).embedding=Math.trunc(E()-t)),u(this,k).call(this,"End Emotion:"),this.config.async&&([A,r,c,_]=await Promise.all([A,r,c,_])),u(this,k).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((a=g==null?void 0:g.annotations)==null?void 0:a.leftEyeIris)&&((s=g==null?void 0:g.annotations)==null?void 0:s.rightEyeIris)&&(delete g.annotations.leftEyeIris,delete g.annotations.rightEyeIris);let V=((l=g.annotations)==null?void 0:l.leftEyeIris)&&((m=g.annotations)==null?void 0:m.rightEyeIris)?11.7*Math.max(Math.abs(g.annotations.leftEyeIris[3][0]-g.annotations.leftEyeIris[1][0]),Math.abs(g.annotations.rightEyeIris[4][1]-g.annotations.rightEyeIris[2][1])):0;h.push({...g,age:A.age,gender:r.gender,genderConfidence:r.confidence,emotion:c,embedding:_,iris:V!==0?Math.trunc(V)/100:0,angle:Z,tensor:this.config.face.detector.return?(f=g.image)==null?void 0:f.squeeze():null}),(x=g.image)==null||x.dispose(),u(this,k).call(this,"End Face")}return u(this,k).call(this,"End FaceMesh:"),this.config.async&&(u(this,z).face&&delete u(this,z).face,u(this,z).age&&delete u(this,z).age,u(this,z).gender&&delete u(this,z).gender,u(this,z).emotion&&delete u(this,z).emotion),h});e1.set(this,async()=>{let e=(r,c="application/octet-stream")=>fetch(`data:${c};base64,${r}`).then(_=>_.blob()),t,A;switch(this.config.warmup){case"face":t=await e(Je);break;case"full":t=await e(Ke);break;default:t=null}if(t){let r=await createImageBitmap(t);A=await this.detect(r,this.config),r.close()}return A});t1.set(this,async()=>new Promise(e=>{let t,A=0;switch(this.config.warmup){case"face":A=256,t="data:image/jpeg;base64,"+Je;break;case"full":case"body":A=1200,t="data:image/jpeg;base64,"+Ke;break;default:t=null}let r=new Image;r.onload=async()=>{let c=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(A,A):document.createElement("canvas");c.width=r.naturalWidth,c.height=r.naturalHeight;let _=c.getContext("2d");_==null||_.drawImage(r,0,0);let h=await this.detect(c,this.config);e(h)},t?r.src=t:e(null)}));n1.set(this,async()=>{let e=_=>Buffer.from(_,"base64"),t=this.config.warmup==="face"?e(Je):e(Ke),A=o0.node.decodeJpeg(t),r=A.expandDims(0);this.tf.dispose(A);let c=await this.detect(r,this.config);return this.tf.dispose(r),c});this.tf=o0,this.draw=_0,ne(this,Ge,A0),this.version=c0,this.config=be(S,e),this.state="idle",ne(this,me,0),ne(this,ge,!1),ne(this,Te,!1),ne(this,ae,!0),ne(this,z,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=t=>r0(t,this.config),this.classes={facemesh:s0,age:a1,gender:d1,emotion:g1,body:this.config.body.modelPath.includes("posenet")?F1:e0,hand:U1},this.sysinfo=l0()}profileData(){return this.config.profile?y1:{}}simmilarity(e,t){return this.config.face.embedding.enabled?E1(e,t):0}enhance(e){return R1(e)}match(e,t,A=0){return R0(e,t,A)}async load(e={}){this.state="load";let t=E();e&&(this.config=be(this.config,e)),u(this,ae)&&(this.config.debug&&T(`version: ${this.version}`),this.config.debug&&T(`tfjs version: ${this.tf.version_core}`),this.config.debug&&T("platform:",this.sysinfo.platform),this.config.debug&&T("agent:",this.sysinfo.agent),await u(this,Pe).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&T("configuration:",this.config),this.config.debug&&T("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?s0.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?w1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?p1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?v1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?M1(this.config):null),this.models.handpose||(this.config.hand.enabled?$1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?Y1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?t0(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await s0.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await w1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await p1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await v1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await M1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await $1(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await Y1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await t0(this.config))),u(this,ae)&&(this.config.debug&&T("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ne(this,ae,!1));let A=Math.trunc(E()-t);A>(u(this,z).load||0)&&(u(this,z).load=A)}async detect(e,t={}){return new Promise(async A=>{var l,m,f,x;this.state="config";let r;this.config=be(this.config,t),this.state="check";let c=u(this,Qe).call(this,e);c&&(T(c,e),A({error:c}));let _=E();await u(this,Pe).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),u(this,k).call(this,"Start Scope:"),r=E();let h=r0(e,this.config);if(!h||!h.tensor){T("could not convert input to tensor"),A({error:"could not convert input to tensor"});return}u(this,z).image=Math.trunc(E()-r),u(this,k).call(this,"Get Image:");let o,i,a;this.config.async?(a=this.config.face.enabled?u(this,ve).call(this,h.tensor):[],u(this,z).face&&delete u(this,z).face):(this.state="run:face",r=E(),a=this.config.face.enabled?await u(this,ve).call(this,h.tensor):[],u(this,z).face=Math.trunc(E()-r)),u(this,k).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?(l=this.models.posenet)==null?void 0:l.estimatePoses(h.tensor,this.config):[]:o=this.config.body.enabled?n0(h.tensor,this.config):[],u(this,z).body&&delete u(this,z).body):(this.state="run:body",r=E(),this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?await((m=this.models.posenet)==null?void 0:m.estimatePoses(h.tensor,this.config)):[]:o=this.config.body.enabled?await n0(h.tensor,this.config):[],u(this,z).body=Math.trunc(E()-r)),u(this,k).call(this,"End Body:"),u(this,k).call(this,"Start Hand:"),this.config.async?(i=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(h.tensor,this.config):[],u(this,z).hand&&delete u(this,z).hand):(this.state="run:hand",r=E(),i=this.config.hand.enabled?await((x=this.models.handpose)==null?void 0:x.estimateHands(h.tensor,this.config)):[],u(this,z).hand=Math.trunc(E()-r)),u(this,k).call(this,"End Hand:"),this.config.async&&([a,o,i]=await Promise.all([a,o,i])),h.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),u(this,k).call(this,"End Scope:");let s=[];this.config.gesture.enabled&&(r=E(),s=[...ht(a),..._t(o),...st(i),...ot(a)],this.config.async?u(this,z).gesture&&delete u(this,z).gesture:u(this,z).gesture=Math.trunc(E()-r)),u(this,z).total=Math.trunc(E()-_),this.state="idle",A({face:a,body:o,hand:i,gesture:s,performance:u(this,z),canvas:h.canvas})})}async warmup(e={}){let t=E();e&&(this.config=be(this.config,e));let A=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await u(this,e1).call(this):typeof Image!="undefined"?r=await u(this,t1).call(this):r=await u(this,n1).call(this),this.config.videoOptimized=A;let c=E();return this.config.debug&&T("Warmup",this.config.warmup,Math.round(c-t),"ms",r),r}};Ge=new WeakMap,z=new WeakMap,me=new WeakMap,ge=new WeakMap,Te=new WeakMap,ae=new WeakMap,k=new WeakMap,Qe=new WeakMap,Pe=new WeakMap,$e=new WeakMap,ve=new WeakMap,e1=new WeakMap,t1=new WeakMap,n1=new WeakMap;export{jt as Human,jt as default}; //# sourceMappingURL=human.esm-nobundle.js.map diff --git a/dist/human.esm.js b/dist/human.esm.js index 226e1851..7bfaaf98 100644 --- a/dist/human.esm.js +++ b/dist/human.esm.js @@ -4889,7 +4889,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var pg={};pr(pg,{author:()=>l4,browser:()=>i4,bugs:()=>u4,default:()=>tse,description:()=>n4,devDependencies:()=>A4,engines:()=>d4,homepage:()=>c4,keywords:()=>m4,license:()=>h4,main:()=>a4,module:()=>s4,name:()=>t4,repository:()=>p4,scripts:()=>f4,sideEffects:()=>r4,types:()=>o4,version:()=>fg});var t4="@vladmandic/human",fg="1.1.6",n4="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",r4=!1,a4="dist/human.node.js",s4="dist/human.esm.js",i4="dist/human.esm.js",o4="types/src/human.d.ts",l4="Vladimir Mandic ",u4={url:"https://github.com/vladmandic/human/issues"},c4="https://vladmandic.github.io/human/demo/index.html",h4="MIT",d4={node:">=12.0.0"},p4={type:"git",url:"git+https://github.com/vladmandic/human.git"},f4={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},m4=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],A4={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.35","@typescript-eslint/eslint-plugin":"^4.18.0","@typescript-eslint/parser":"^4.18.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2",seedrandom:"^3.0.5","simple-git":"^2.37.0",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},tse={name:t4,version:fg,description:n4,sideEffects:r4,main:a4,module:s4,browser:i4,types:o4,author:l4,bugs:u4,homepage:c4,license:h4,engines:d4,repository:p4,scripts:f4,keywords:m4,devDependencies:A4};var mg={};pr(mg,{all:()=>rse,body:()=>w4,canvas:()=>nse,drawOptions:()=>ce,face:()=>x4,gesture:()=>g4,hand:()=>_4});var ce={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function S0(e,t,n,r=null){e.fillStyle=ce.useDepth&&r?`rgba(${127.5+2*(r||0)}, ${127.5-2*(r||0)}, 255, 0.3)`:ce.color,e.beginPath(),e.arc(t,n,ce.pointSize,0,2*Math.PI),e.fill()}function y4(e,t,n,r,a){if(e.beginPath(),ce.useCurves){let s=(t+t+r)/2,i=(n+n+a)/2;e.ellipse(s,i,r/2,a/2,0,0,2*Math.PI)}else e.lineWidth=ce.lineWidth,e.moveTo(t+ce.roundRect,n),e.lineTo(t+r-ce.roundRect,n),e.quadraticCurveTo(t+r,n,t+r,n+ce.roundRect),e.lineTo(t+r,n+a-ce.roundRect),e.quadraticCurveTo(t+r,n+a,t+r-ce.roundRect,n+a),e.lineTo(t+ce.roundRect,n+a),e.quadraticCurveTo(t,n+a,t,n+a-ce.roundRect),e.lineTo(t,n+ce.roundRect),e.quadraticCurveTo(t,n,t+ce.roundRect,n),e.closePath();e.stroke()}function Ag(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.fillStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),ce.fillPolygons&&(e.closePath(),e.fill())}}function T0(e,t=[]){if(!(t===void 0||t.length===0)){if(!ce.useCurves||t.length<=2){Ag(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&i[1].length>0){let o=s[1]>0?`#${s[1]}`:"",l=`${s[0]} ${o}: ${i[1]}`;ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(l,8,2+r*ce.lineHeight)),n.fillStyle=ce.labelColor,n.fillText(l,6,0+r*ce.lineHeight),r+=1}}}async function x4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let r of t){n.font=ce.font,n.strokeStyle=ce.color,n.fillStyle=ce.color,ce.drawBoxes&&y4(n,r.box[0],r.box[1],r.box[2],r.box[3]);let a=[];if(a.push(`face confidence: ${Math.trunc(100*r.confidence)}%`),r.genderConfidence&&a.push(`${r.gender||""} ${Math.trunc(100*r.genderConfidence)}% confident`),r.age&&a.push(`age: ${r.age||""}`),r.iris&&a.push(`iris distance: ${r.iris}`),r.emotion&&r.emotion.length>0){let s=r.emotion.map(i=>`${Math.trunc(100*i.score)}% ${i.emotion}`);a.push(s.join(" "))}r.angle&&r.angle.roll&&a.push(`roll: ${Math.trunc(100*r.angle.roll)/100} yaw:${Math.trunc(100*r.angle.yaw)/100} pitch:${Math.trunc(100*r.angle.pitch)/100}`),a.length===0&&a.push("face"),n.fillStyle=ce.color;for(let s=a.length-1;s>=0;s--){let i=Math.max(r.box[0],0),o=s*ce.lineHeight+r.box[1];ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(a[s],i+5,o+16)),n.fillStyle=ce.labelColor,n.fillText(a[s],i+4,o+15)}if(n.lineWidth=1,r.mesh){if(ce.drawPoints)for(let s of r.mesh)S0(n,s[0],s[1],s[2]);if(ce.drawPolygons){n.lineWidth=1;for(let s=0;sr.mesh[o]);Ag(n,i)}if(r.annotations&&r.annotations.leftEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.leftEyeIris[3][0]-r.annotations.leftEyeIris[1][0])/2,i=Math.abs(r.annotations.leftEyeIris[4][1]-r.annotations.leftEyeIris[2][1])/2;n.ellipse(r.annotations.leftEyeIris[0][0],r.annotations.leftEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}if(r.annotations&&r.annotations.rightEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.rightEyeIris[3][0]-r.annotations.rightEyeIris[1][0])/2,i=Math.abs(r.annotations.rightEyeIris[4][1]-r.annotations.rightEyeIris[2][1])/2;n.ellipse(r.annotations.rightEyeIris[0][0],r.annotations.rightEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}}}}}var ts=[];async function w4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let r=0;ri.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),s.length===5&&Ag(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s)}}}}async function _4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=ce.font;for(let r of t){if(ce.drawBoxes&&(n.strokeStyle=ce.color,n.fillStyle=ce.color,y4(n,r.box[0],r.box[1],r.box[2],r.box[3]),ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText("hand",r.box[0]+3,1+r.box[1]+ce.lineHeight,r.box[2])),n.fillStyle=ce.labelColor,n.fillText("hand",r.box[0]+2,0+r.box[1]+ce.lineHeight,r.box[2]),n.stroke()),ce.drawPoints&&r.landmarks&&r.landmarks.length>0)for(let a of r.landmarks)n.fillStyle=ce.useDepth?`rgba(${127.5+2*a[2]}, ${127.5-2*a[2]}, 255, 0.5)`:ce.color,S0(n,a[0],a[1]);if(ce.drawPolygons){let a=s=>{if(!!s)for(let i=0;i0?i-1:0][0],s[i>0?i-1:0][1]),n.lineTo(s[i][0],s[i][1]),n.stroke()};a(r.annotations.indexFinger),a(r.annotations.middleFinger),a(r.annotations.ringFinger),a(r.annotations.pinky),a(r.annotations.thumb)}}}}async function nse(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function rse(e,t){!t||!e||e instanceof HTMLCanvasElement&&(x4(e,t.face),w4(e,t.body),_4(e,t.hand),g4(e,t.gesture))}var dt=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Bc(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Bc(s,i):n[a]=i}),n),{})}var C0,Ke,Xl,Vc,Uc,$i,Ut,E0,Hc,R0,jc,F0,M0,$0,b4=class{constructor(t={}){C0.set(this,void 0);Ke.set(this,void 0);Xl.set(this,void 0);Vc.set(this,void 0);Uc.set(this,void 0);$i.set(this,void 0);Ut.set(this,(...t)=>{if(!ve(this,Vc))return;let n=this.tf.engine().state.numTensors,r=ve(this,Xl);ea(this,Xl,n);let a=n-r;a!==0&&Ce(...t,a)});E0.set(this,t=>{if(!ve(this,Uc))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof Ue))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Hc.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=dt();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&Ce("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&Ce("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let r=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),a=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&Ce(`wasm execution: ${r?"SIMD":"no SIMD"} ${a?"multithreaded":"singlethreaded"}`),r||Ce("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&c6();try{await this.tf.setBackend(this.config.backend)}catch(r){Ce("error: cannot set backend:",this.config.backend,r)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(Ce("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let r=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&Ce(`gl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`)}await this.tf.ready(),ve(this,Ke).backend=Math.trunc(dt()-n)}});R0.set(this,t=>{if(!t||t.length<300)return{roll:null,yaw:null,pitch:null};let n=(s,i,o,l)=>Math.atan2(l-i,o-s),r=s=>Math.abs(s*180/Math.PI%360);return{roll:n(t[33][0],t[33][1],t[263][0],t[263][1]),yaw:n(t[33][0],t[33][2],t[263][0],t[263][2]),pitch:n(t[10][1],t[10][2],t[152][1],t[152][2])}});jc.set(this,async t=>{var u,c,h,d,p,f,m;let n,r,a,s,i,o=[];this.state="run:face",n=dt();let l=await((u=this.models.face)==null?void 0:u.estimateFaces(t,this.config));if(ve(this,Ke).face=Math.trunc(dt()-n),!l)return[];for(let A of l){if(ve(this,Ut).call(this,"Get Face"),!A.image||A.image.isDisposedInternal){Ce("Face object is disposed:",A.image);continue}let y=ve(this,R0).call(this,A.mesh);ve(this,Ut).call(this,"Start Age:"),this.config.async?r=this.config.face.age.enabled?N2(A.image,this.config):{}:(this.state="run:age",n=dt(),r=this.config.face.age.enabled?await N2(A.image,this.config):{},ve(this,Ke).age=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Gender:"),this.config.async?a=this.config.face.gender.enabled?R2(A.image,this.config):{}:(this.state="run:gender",n=dt(),a=this.config.face.gender.enabled?await R2(A.image,this.config):{},ve(this,Ke).gender=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Emotion:"),this.config.async?s=this.config.face.emotion.enabled?O2(A.image,this.config):{}:(this.state="run:emotion",n=dt(),s=this.config.face.emotion.enabled?await O2(A.image,this.config):{},ve(this,Ke).emotion=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),ve(this,Ut).call(this,"Start Embedding:"),this.config.async?i=this.config.face.embedding.enabled?W2(A,this.config):[]:(this.state="run:embedding",n=dt(),i=this.config.face.embedding.enabled?await W2(A,this.config):[],ve(this,Ke).embedding=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),this.config.async&&([r,a,s,i]=await Promise.all([r,a,s,i])),ve(this,Ut).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((c=A==null?void 0:A.annotations)==null?void 0:c.leftEyeIris)&&((h=A==null?void 0:A.annotations)==null?void 0:h.rightEyeIris)&&(delete A.annotations.leftEyeIris,delete A.annotations.rightEyeIris);let g=((d=A.annotations)==null?void 0:d.leftEyeIris)&&((p=A.annotations)==null?void 0:p.rightEyeIris)?11.7*Math.max(Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0]),Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])):0;o.push({...A,age:r.age,gender:a.gender,genderConfidence:a.confidence,emotion:s,embedding:i,iris:g!==0?Math.trunc(g)/100:0,angle:y,tensor:this.config.face.detector.return?(f=A.image)==null?void 0:f.squeeze():null}),(m=A.image)==null||m.dispose(),ve(this,Ut).call(this,"End Face")}return ve(this,Ut).call(this,"End FaceMesh:"),this.config.async&&(ve(this,Ke).face&&delete ve(this,Ke).face,ve(this,Ke).age&&delete ve(this,Ke).age,ve(this,Ke).gender&&delete ve(this,Ke).gender,ve(this,Ke).emotion&&delete ve(this,Ke).emotion),o});F0.set(this,async()=>{let t=(a,s="application/octet-stream")=>fetch(`data:${s};base64,${a}`).then(i=>i.blob()),n,r;switch(this.config.warmup){case"face":n=await t(N0);break;case"full":n=await t(I0);break;default:n=null}if(n){let a=await createImageBitmap(n);r=await this.detect(a,this.config),a.close()}return r});M0.set(this,async()=>new Promise(t=>{let n,r=0;switch(this.config.warmup){case"face":r=256,n="data:image/jpeg;base64,"+N0;break;case"full":case"body":r=1200,n="data:image/jpeg;base64,"+I0;break;default:n=null}let a=new Image;a.onload=async()=>{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(r,r):document.createElement("canvas");s.width=a.naturalWidth,s.height=a.naturalHeight;let i=s.getContext("2d");i==null||i.drawImage(a,0,0);let o=await this.detect(s,this.config);t(o)},n?a.src=n:t(null)}));$0.set(this,async()=>{let t=i=>Buffer.from(i,"base64"),n=this.config.warmup==="face"?t(N0):t(I0),r=(void 0).decodeJpeg(n),a=r.expandDims(0);this.tf.dispose(r);let s=await this.detect(a,this.config);return this.tf.dispose(a),s});this.tf=yh,this.draw=mg,ea(this,C0,pg),this.version=fg,this.config=Bc(mt,t),this.state="idle",ea(this,Xl,0),ea(this,Vc,!1),ea(this,Uc,!1),ea(this,$i,!0),ea(this,Ke,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=n=>dg(n,this.config),this.classes={facemesh:yg,age:v2,gender:I2,emotion:F2,body:this.config.body.modelPath.includes("posenet")?J2:ug,hand:sg},this.sysinfo=Fg()}profileData(){return this.config.profile?b2:{}}simmilarity(t,n){return this.config.face.embedding.enabled?P2(t,n):0}enhance(t){return L2(t)}match(t,n,r=0){return b6(t,n,r)}async load(t={}){this.state="load";let n=dt();t&&(this.config=Bc(this.config,t)),ve(this,$i)&&(this.config.debug&&Ce(`version: ${this.version}`),this.config.debug&&Ce(`tfjs version: ${this.tf.version_core}`),this.config.debug&&Ce("platform:",this.sysinfo.platform),this.config.debug&&Ce("agent:",this.sysinfo.agent),await ve(this,Hc).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&Ce("configuration:",this.config),this.config.debug&&Ce("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?yg.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?k2(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?E2(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?D2(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?z2(this.config):null),this.models.handpose||(this.config.hand.enabled?lg(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?eg(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?cg(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await yg.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await k2(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await E2(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await D2(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await z2(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await lg(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await eg(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await cg(this.config))),ve(this,$i)&&(this.config.debug&&Ce("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ea(this,$i,!1));let r=Math.trunc(dt()-n);r>(ve(this,Ke).load||0)&&(ve(this,Ke).load=r)}async detect(t,n={}){return new Promise(async r=>{var d,p,f,m;this.state="config";let a;this.config=Bc(this.config,n),this.state="check";let s=ve(this,E0).call(this,t);s&&(Ce(s,t),r({error:s}));let i=dt();await ve(this,Hc).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),ve(this,Ut).call(this,"Start Scope:"),a=dt();let o=dg(t,this.config);if(!o||!o.tensor){Ce("could not convert input to tensor"),r({error:"could not convert input to tensor"});return}ve(this,Ke).image=Math.trunc(dt()-a),ve(this,Ut).call(this,"Get Image:");let l,u,c;this.config.async?(c=this.config.face.enabled?ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face&&delete ve(this,Ke).face):(this.state="run:face",a=dt(),c=this.config.face.enabled?await ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face=Math.trunc(dt()-a)),ve(this,Ut).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?(d=this.models.posenet)==null?void 0:d.estimatePoses(o.tensor,this.config):[]:l=this.config.body.enabled?hg(o.tensor,this.config):[],ve(this,Ke).body&&delete ve(this,Ke).body):(this.state="run:body",a=dt(),this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?await((p=this.models.posenet)==null?void 0:p.estimatePoses(o.tensor,this.config)):[]:l=this.config.body.enabled?await hg(o.tensor,this.config):[],ve(this,Ke).body=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Body:"),ve(this,Ut).call(this,"Start Hand:"),this.config.async?(u=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(o.tensor,this.config):[],ve(this,Ke).hand&&delete ve(this,Ke).hand):(this.state="run:hand",a=dt(),u=this.config.hand.enabled?await((m=this.models.handpose)==null?void 0:m.estimateHands(o.tensor,this.config)):[],ve(this,Ke).hand=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Hand:"),this.config.async&&([c,l,u]=await Promise.all([c,l,u])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),ve(this,Ut).call(this,"End Scope:");let h=[];this.config.gesture.enabled&&(a=dt(),h=[...Y6(c),...Z6(l),...Q6(u),...J6(c)],this.config.async?ve(this,Ke).gesture&&delete ve(this,Ke).gesture:ve(this,Ke).gesture=Math.trunc(dt()-a)),ve(this,Ke).total=Math.trunc(dt()-i),this.state="idle",r({face:c,body:l,hand:u,gesture:h,performance:ve(this,Ke),canvas:o.canvas})})}async warmup(t={}){let n=dt();t&&(this.config=Bc(this.config,t));let r=this.config.videoOptimized;this.config.videoOptimized=!1;let a;typeof createImageBitmap=="function"?a=await ve(this,F0).call(this):typeof Image!="undefined"?a=await ve(this,M0).call(this):a=await ve(this,$0).call(this),this.config.videoOptimized=r;let s=dt();return this.config.debug&&Ce("Warmup",this.config.warmup,Math.round(s-n),"ms",a),a}};C0=new WeakMap,Ke=new WeakMap,Xl=new WeakMap,Vc=new WeakMap,Uc=new WeakMap,$i=new WeakMap,Ut=new WeakMap,E0=new WeakMap,Hc=new WeakMap,R0=new WeakMap,jc=new WeakMap,F0=new WeakMap,M0=new WeakMap,$0=new WeakMap;export{b4 as Human,b4 as default}; +2Q==`;var pg={};pr(pg,{author:()=>l4,browser:()=>i4,bugs:()=>u4,default:()=>tse,description:()=>n4,devDependencies:()=>A4,engines:()=>d4,homepage:()=>c4,keywords:()=>m4,license:()=>h4,main:()=>a4,module:()=>s4,name:()=>t4,repository:()=>p4,scripts:()=>f4,sideEffects:()=>r4,types:()=>o4,version:()=>fg});var t4="@vladmandic/human",fg="1.1.7",n4="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",r4=!1,a4="dist/human.node.js",s4="dist/human.esm.js",i4="dist/human.esm.js",o4="types/src/human.d.ts",l4="Vladimir Mandic ",u4={url:"https://github.com/vladmandic/human/issues"},c4="https://vladmandic.github.io/human/demo/index.html",h4="MIT",d4={node:">=12.0.0"},p4={type:"git",url:"git+https://github.com/vladmandic/human.git"},f4={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},m4=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],A4={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.35","@typescript-eslint/eslint-plugin":"^4.18.0","@typescript-eslint/parser":"^4.18.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.3",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2",seedrandom:"^3.0.5","simple-git":"^2.37.0",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},tse={name:t4,version:fg,description:n4,sideEffects:r4,main:a4,module:s4,browser:i4,types:o4,author:l4,bugs:u4,homepage:c4,license:h4,engines:d4,repository:p4,scripts:f4,keywords:m4,devDependencies:A4};var mg={};pr(mg,{all:()=>rse,body:()=>w4,canvas:()=>nse,drawOptions:()=>ce,face:()=>x4,gesture:()=>g4,hand:()=>_4});var ce={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function S0(e,t,n,r=null){e.fillStyle=ce.useDepth&&r?`rgba(${127.5+2*(r||0)}, ${127.5-2*(r||0)}, 255, 0.3)`:ce.color,e.beginPath(),e.arc(t,n,ce.pointSize,0,2*Math.PI),e.fill()}function y4(e,t,n,r,a){if(e.beginPath(),ce.useCurves){let s=(t+t+r)/2,i=(n+n+a)/2;e.ellipse(s,i,r/2,a/2,0,0,2*Math.PI)}else e.lineWidth=ce.lineWidth,e.moveTo(t+ce.roundRect,n),e.lineTo(t+r-ce.roundRect,n),e.quadraticCurveTo(t+r,n,t+r,n+ce.roundRect),e.lineTo(t+r,n+a-ce.roundRect),e.quadraticCurveTo(t+r,n+a,t+r-ce.roundRect,n+a),e.lineTo(t+ce.roundRect,n+a),e.quadraticCurveTo(t,n+a,t,n+a-ce.roundRect),e.lineTo(t,n+ce.roundRect),e.quadraticCurveTo(t,n,t+ce.roundRect,n),e.closePath();e.stroke()}function Ag(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.fillStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),ce.fillPolygons&&(e.closePath(),e.fill())}}function T0(e,t=[]){if(!(t===void 0||t.length===0)){if(!ce.useCurves||t.length<=2){Ag(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&i[1].length>0){let o=s[1]>0?`#${s[1]}`:"",l=`${s[0]} ${o}: ${i[1]}`;ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(l,8,2+r*ce.lineHeight)),n.fillStyle=ce.labelColor,n.fillText(l,6,0+r*ce.lineHeight),r+=1}}}async function x4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let r of t){n.font=ce.font,n.strokeStyle=ce.color,n.fillStyle=ce.color,ce.drawBoxes&&y4(n,r.box[0],r.box[1],r.box[2],r.box[3]);let a=[];if(a.push(`face confidence: ${Math.trunc(100*r.confidence)}%`),r.genderConfidence&&a.push(`${r.gender||""} ${Math.trunc(100*r.genderConfidence)}% confident`),r.age&&a.push(`age: ${r.age||""}`),r.iris&&a.push(`iris distance: ${r.iris}`),r.emotion&&r.emotion.length>0){let s=r.emotion.map(i=>`${Math.trunc(100*i.score)}% ${i.emotion}`);a.push(s.join(" "))}r.angle&&r.angle.roll&&a.push(`roll: ${Math.trunc(100*r.angle.roll)/100} yaw:${Math.trunc(100*r.angle.yaw)/100} pitch:${Math.trunc(100*r.angle.pitch)/100}`),a.length===0&&a.push("face"),n.fillStyle=ce.color;for(let s=a.length-1;s>=0;s--){let i=Math.max(r.box[0],0),o=s*ce.lineHeight+r.box[1];ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(a[s],i+5,o+16)),n.fillStyle=ce.labelColor,n.fillText(a[s],i+4,o+15)}if(n.lineWidth=1,r.mesh){if(ce.drawPoints)for(let s of r.mesh)S0(n,s[0],s[1],s[2]);if(ce.drawPolygons){n.lineWidth=1;for(let s=0;sr.mesh[o]);Ag(n,i)}if(r.annotations&&r.annotations.leftEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.leftEyeIris[3][0]-r.annotations.leftEyeIris[1][0])/2,i=Math.abs(r.annotations.leftEyeIris[4][1]-r.annotations.leftEyeIris[2][1])/2;n.ellipse(r.annotations.leftEyeIris[0][0],r.annotations.leftEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}if(r.annotations&&r.annotations.rightEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.rightEyeIris[3][0]-r.annotations.rightEyeIris[1][0])/2,i=Math.abs(r.annotations.rightEyeIris[4][1]-r.annotations.rightEyeIris[2][1])/2;n.ellipse(r.annotations.rightEyeIris[0][0],r.annotations.rightEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}}}}}var ts=[];async function w4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let r=0;ri.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),s.length===5&&Ag(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s)}}}}async function _4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=ce.font;for(let r of t){if(ce.drawBoxes&&(n.strokeStyle=ce.color,n.fillStyle=ce.color,y4(n,r.box[0],r.box[1],r.box[2],r.box[3]),ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText("hand",r.box[0]+3,1+r.box[1]+ce.lineHeight,r.box[2])),n.fillStyle=ce.labelColor,n.fillText("hand",r.box[0]+2,0+r.box[1]+ce.lineHeight,r.box[2]),n.stroke()),ce.drawPoints&&r.landmarks&&r.landmarks.length>0)for(let a of r.landmarks)n.fillStyle=ce.useDepth?`rgba(${127.5+2*a[2]}, ${127.5-2*a[2]}, 255, 0.5)`:ce.color,S0(n,a[0],a[1]);if(ce.drawPolygons){let a=s=>{if(!!s)for(let i=0;i0?i-1:0][0],s[i>0?i-1:0][1]),n.lineTo(s[i][0],s[i][1]),n.stroke()};a(r.annotations.indexFinger),a(r.annotations.middleFinger),a(r.annotations.ringFinger),a(r.annotations.pinky),a(r.annotations.thumb)}}}}async function nse(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function rse(e,t){!t||!e||e instanceof HTMLCanvasElement&&(x4(e,t.face),w4(e,t.body),_4(e,t.hand),g4(e,t.gesture))}var dt=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Bc(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Bc(s,i):n[a]=i}),n),{})}var C0,Ke,Xl,Vc,Uc,$i,Ut,E0,Hc,R0,jc,F0,M0,$0,b4=class{constructor(t={}){C0.set(this,void 0);Ke.set(this,void 0);Xl.set(this,void 0);Vc.set(this,void 0);Uc.set(this,void 0);$i.set(this,void 0);Ut.set(this,(...t)=>{if(!ve(this,Vc))return;let n=this.tf.engine().state.numTensors,r=ve(this,Xl);ea(this,Xl,n);let a=n-r;a!==0&&Ce(...t,a)});E0.set(this,t=>{if(!ve(this,Uc))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof Ue))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Hc.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=dt();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&Ce("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&Ce("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let r=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),a=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&Ce(`wasm execution: ${r?"SIMD":"no SIMD"} ${a?"multithreaded":"singlethreaded"}`),r||Ce("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&c6();try{await this.tf.setBackend(this.config.backend)}catch(r){Ce("error: cannot set backend:",this.config.backend,r)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(Ce("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let r=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&Ce(`gl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`)}await this.tf.ready(),ve(this,Ke).backend=Math.trunc(dt()-n)}});R0.set(this,t=>{if(!t||t.length<300)return{roll:null,yaw:null,pitch:null};let n=(s,i,o,l)=>Math.atan2(l-i,o-s),r=s=>Math.abs(s*180/Math.PI%360);return{roll:n(t[33][0],t[33][1],t[263][0],t[263][1]),yaw:n(t[33][0],t[33][2],t[263][0],t[263][2]),pitch:n(t[10][1],t[10][2],t[152][1],t[152][2])}});jc.set(this,async t=>{var u,c,h,d,p,f,m;let n,r,a,s,i,o=[];this.state="run:face",n=dt();let l=await((u=this.models.face)==null?void 0:u.estimateFaces(t,this.config));if(ve(this,Ke).face=Math.trunc(dt()-n),!l)return[];for(let A of l){if(ve(this,Ut).call(this,"Get Face"),!A.image||A.image.isDisposedInternal){Ce("Face object is disposed:",A.image);continue}let y=ve(this,R0).call(this,A.mesh);ve(this,Ut).call(this,"Start Age:"),this.config.async?r=this.config.face.age.enabled?N2(A.image,this.config):{}:(this.state="run:age",n=dt(),r=this.config.face.age.enabled?await N2(A.image,this.config):{},ve(this,Ke).age=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Gender:"),this.config.async?a=this.config.face.gender.enabled?R2(A.image,this.config):{}:(this.state="run:gender",n=dt(),a=this.config.face.gender.enabled?await R2(A.image,this.config):{},ve(this,Ke).gender=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Emotion:"),this.config.async?s=this.config.face.emotion.enabled?O2(A.image,this.config):{}:(this.state="run:emotion",n=dt(),s=this.config.face.emotion.enabled?await O2(A.image,this.config):{},ve(this,Ke).emotion=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),ve(this,Ut).call(this,"Start Embedding:"),this.config.async?i=this.config.face.embedding.enabled?W2(A,this.config):[]:(this.state="run:embedding",n=dt(),i=this.config.face.embedding.enabled?await W2(A,this.config):[],ve(this,Ke).embedding=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),this.config.async&&([r,a,s,i]=await Promise.all([r,a,s,i])),ve(this,Ut).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((c=A==null?void 0:A.annotations)==null?void 0:c.leftEyeIris)&&((h=A==null?void 0:A.annotations)==null?void 0:h.rightEyeIris)&&(delete A.annotations.leftEyeIris,delete A.annotations.rightEyeIris);let g=((d=A.annotations)==null?void 0:d.leftEyeIris)&&((p=A.annotations)==null?void 0:p.rightEyeIris)?11.7*Math.max(Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0]),Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])):0;o.push({...A,age:r.age,gender:a.gender,genderConfidence:a.confidence,emotion:s,embedding:i,iris:g!==0?Math.trunc(g)/100:0,angle:y,tensor:this.config.face.detector.return?(f=A.image)==null?void 0:f.squeeze():null}),(m=A.image)==null||m.dispose(),ve(this,Ut).call(this,"End Face")}return ve(this,Ut).call(this,"End FaceMesh:"),this.config.async&&(ve(this,Ke).face&&delete ve(this,Ke).face,ve(this,Ke).age&&delete ve(this,Ke).age,ve(this,Ke).gender&&delete ve(this,Ke).gender,ve(this,Ke).emotion&&delete ve(this,Ke).emotion),o});F0.set(this,async()=>{let t=(a,s="application/octet-stream")=>fetch(`data:${s};base64,${a}`).then(i=>i.blob()),n,r;switch(this.config.warmup){case"face":n=await t(N0);break;case"full":n=await t(I0);break;default:n=null}if(n){let a=await createImageBitmap(n);r=await this.detect(a,this.config),a.close()}return r});M0.set(this,async()=>new Promise(t=>{let n,r=0;switch(this.config.warmup){case"face":r=256,n="data:image/jpeg;base64,"+N0;break;case"full":case"body":r=1200,n="data:image/jpeg;base64,"+I0;break;default:n=null}let a=new Image;a.onload=async()=>{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(r,r):document.createElement("canvas");s.width=a.naturalWidth,s.height=a.naturalHeight;let i=s.getContext("2d");i==null||i.drawImage(a,0,0);let o=await this.detect(s,this.config);t(o)},n?a.src=n:t(null)}));$0.set(this,async()=>{let t=i=>Buffer.from(i,"base64"),n=this.config.warmup==="face"?t(N0):t(I0),r=(void 0).decodeJpeg(n),a=r.expandDims(0);this.tf.dispose(r);let s=await this.detect(a,this.config);return this.tf.dispose(a),s});this.tf=yh,this.draw=mg,ea(this,C0,pg),this.version=fg,this.config=Bc(mt,t),this.state="idle",ea(this,Xl,0),ea(this,Vc,!1),ea(this,Uc,!1),ea(this,$i,!0),ea(this,Ke,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=n=>dg(n,this.config),this.classes={facemesh:yg,age:v2,gender:I2,emotion:F2,body:this.config.body.modelPath.includes("posenet")?J2:ug,hand:sg},this.sysinfo=Fg()}profileData(){return this.config.profile?b2:{}}simmilarity(t,n){return this.config.face.embedding.enabled?P2(t,n):0}enhance(t){return L2(t)}match(t,n,r=0){return b6(t,n,r)}async load(t={}){this.state="load";let n=dt();t&&(this.config=Bc(this.config,t)),ve(this,$i)&&(this.config.debug&&Ce(`version: ${this.version}`),this.config.debug&&Ce(`tfjs version: ${this.tf.version_core}`),this.config.debug&&Ce("platform:",this.sysinfo.platform),this.config.debug&&Ce("agent:",this.sysinfo.agent),await ve(this,Hc).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&Ce("configuration:",this.config),this.config.debug&&Ce("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?yg.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?k2(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?E2(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?D2(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?z2(this.config):null),this.models.handpose||(this.config.hand.enabled?lg(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?eg(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?cg(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await yg.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await k2(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await E2(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await D2(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await z2(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await lg(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await eg(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await cg(this.config))),ve(this,$i)&&(this.config.debug&&Ce("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ea(this,$i,!1));let r=Math.trunc(dt()-n);r>(ve(this,Ke).load||0)&&(ve(this,Ke).load=r)}async detect(t,n={}){return new Promise(async r=>{var d,p,f,m;this.state="config";let a;this.config=Bc(this.config,n),this.state="check";let s=ve(this,E0).call(this,t);s&&(Ce(s,t),r({error:s}));let i=dt();await ve(this,Hc).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),ve(this,Ut).call(this,"Start Scope:"),a=dt();let o=dg(t,this.config);if(!o||!o.tensor){Ce("could not convert input to tensor"),r({error:"could not convert input to tensor"});return}ve(this,Ke).image=Math.trunc(dt()-a),ve(this,Ut).call(this,"Get Image:");let l,u,c;this.config.async?(c=this.config.face.enabled?ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face&&delete ve(this,Ke).face):(this.state="run:face",a=dt(),c=this.config.face.enabled?await ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face=Math.trunc(dt()-a)),ve(this,Ut).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?(d=this.models.posenet)==null?void 0:d.estimatePoses(o.tensor,this.config):[]:l=this.config.body.enabled?hg(o.tensor,this.config):[],ve(this,Ke).body&&delete ve(this,Ke).body):(this.state="run:body",a=dt(),this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?await((p=this.models.posenet)==null?void 0:p.estimatePoses(o.tensor,this.config)):[]:l=this.config.body.enabled?await hg(o.tensor,this.config):[],ve(this,Ke).body=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Body:"),ve(this,Ut).call(this,"Start Hand:"),this.config.async?(u=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(o.tensor,this.config):[],ve(this,Ke).hand&&delete ve(this,Ke).hand):(this.state="run:hand",a=dt(),u=this.config.hand.enabled?await((m=this.models.handpose)==null?void 0:m.estimateHands(o.tensor,this.config)):[],ve(this,Ke).hand=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Hand:"),this.config.async&&([c,l,u]=await Promise.all([c,l,u])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),ve(this,Ut).call(this,"End Scope:");let h=[];this.config.gesture.enabled&&(a=dt(),h=[...Y6(c),...Z6(l),...Q6(u),...J6(c)],this.config.async?ve(this,Ke).gesture&&delete ve(this,Ke).gesture:ve(this,Ke).gesture=Math.trunc(dt()-a)),ve(this,Ke).total=Math.trunc(dt()-i),this.state="idle",r({face:c,body:l,hand:u,gesture:h,performance:ve(this,Ke),canvas:o.canvas})})}async warmup(t={}){let n=dt();t&&(this.config=Bc(this.config,t));let r=this.config.videoOptimized;this.config.videoOptimized=!1;let a;typeof createImageBitmap=="function"?a=await ve(this,F0).call(this):typeof Image!="undefined"?a=await ve(this,M0).call(this):a=await ve(this,$0).call(this),this.config.videoOptimized=r;let s=dt();return this.config.debug&&Ce("Warmup",this.config.warmup,Math.round(s-n),"ms",a),a}};C0=new WeakMap,Ke=new WeakMap,Xl=new WeakMap,Vc=new WeakMap,Uc=new WeakMap,$i=new WeakMap,Ut=new WeakMap,E0=new WeakMap,Hc=new WeakMap,R0=new WeakMap,jc=new WeakMap,F0=new WeakMap,M0=new WeakMap,$0=new WeakMap;export{b4 as Human,b4 as default}; /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/human.js b/dist/human.js index 55fc963c..544ef80d 100644 --- a/dist/human.js +++ b/dist/human.js @@ -4889,7 +4889,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var pg={};er(pg,{author:()=>u4,browser:()=>o4,bugs:()=>c4,default:()=>tse,description:()=>r4,devDependencies:()=>y4,engines:()=>p4,homepage:()=>h4,keywords:()=>A4,license:()=>d4,main:()=>s4,module:()=>i4,name:()=>n4,repository:()=>f4,scripts:()=>m4,sideEffects:()=>a4,types:()=>l4,version:()=>fg});var n4="@vladmandic/human",fg="1.1.6",r4="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",a4=!1,s4="dist/human.node.js",i4="dist/human.esm.js",o4="dist/human.esm.js",l4="types/src/human.d.ts",u4="Vladimir Mandic ",c4={url:"https://github.com/vladmandic/human/issues"},h4="https://vladmandic.github.io/human/demo/index.html",d4="MIT",p4={node:">=12.0.0"},f4={type:"git",url:"git+https://github.com/vladmandic/human.git"},m4={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},A4=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],y4={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.35","@typescript-eslint/eslint-plugin":"^4.18.0","@typescript-eslint/parser":"^4.18.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2",seedrandom:"^3.0.5","simple-git":"^2.37.0",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},tse={name:n4,version:fg,description:r4,sideEffects:a4,main:s4,module:i4,browser:o4,types:l4,author:u4,bugs:c4,homepage:h4,license:d4,engines:p4,repository:f4,scripts:m4,keywords:A4,devDependencies:y4};var mg={};er(mg,{all:()=>rse,body:()=>_4,canvas:()=>nse,drawOptions:()=>ce,face:()=>w4,gesture:()=>x4,hand:()=>b4});var ce={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function S0(e,t,n,r=null){e.fillStyle=ce.useDepth&&r?`rgba(${127.5+2*(r||0)}, ${127.5-2*(r||0)}, 255, 0.3)`:ce.color,e.beginPath(),e.arc(t,n,ce.pointSize,0,2*Math.PI),e.fill()}function g4(e,t,n,r,a){if(e.beginPath(),ce.useCurves){let s=(t+t+r)/2,i=(n+n+a)/2;e.ellipse(s,i,r/2,a/2,0,0,2*Math.PI)}else e.lineWidth=ce.lineWidth,e.moveTo(t+ce.roundRect,n),e.lineTo(t+r-ce.roundRect,n),e.quadraticCurveTo(t+r,n,t+r,n+ce.roundRect),e.lineTo(t+r,n+a-ce.roundRect),e.quadraticCurveTo(t+r,n+a,t+r-ce.roundRect,n+a),e.lineTo(t+ce.roundRect,n+a),e.quadraticCurveTo(t,n+a,t,n+a-ce.roundRect),e.lineTo(t,n+ce.roundRect),e.quadraticCurveTo(t,n,t+ce.roundRect,n),e.closePath();e.stroke()}function Ag(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.fillStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),ce.fillPolygons&&(e.closePath(),e.fill())}}function T0(e,t=[]){if(!(t===void 0||t.length===0)){if(!ce.useCurves||t.length<=2){Ag(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&i[1].length>0){let o=s[1]>0?`#${s[1]}`:"",l=`${s[0]} ${o}: ${i[1]}`;ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(l,8,2+r*ce.lineHeight)),n.fillStyle=ce.labelColor,n.fillText(l,6,0+r*ce.lineHeight),r+=1}}}async function w4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let r of t){n.font=ce.font,n.strokeStyle=ce.color,n.fillStyle=ce.color,ce.drawBoxes&&g4(n,r.box[0],r.box[1],r.box[2],r.box[3]);let a=[];if(a.push(`face confidence: ${Math.trunc(100*r.confidence)}%`),r.genderConfidence&&a.push(`${r.gender||""} ${Math.trunc(100*r.genderConfidence)}% confident`),r.age&&a.push(`age: ${r.age||""}`),r.iris&&a.push(`iris distance: ${r.iris}`),r.emotion&&r.emotion.length>0){let s=r.emotion.map(i=>`${Math.trunc(100*i.score)}% ${i.emotion}`);a.push(s.join(" "))}r.angle&&r.angle.roll&&a.push(`roll: ${Math.trunc(100*r.angle.roll)/100} yaw:${Math.trunc(100*r.angle.yaw)/100} pitch:${Math.trunc(100*r.angle.pitch)/100}`),a.length===0&&a.push("face"),n.fillStyle=ce.color;for(let s=a.length-1;s>=0;s--){let i=Math.max(r.box[0],0),o=s*ce.lineHeight+r.box[1];ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(a[s],i+5,o+16)),n.fillStyle=ce.labelColor,n.fillText(a[s],i+4,o+15)}if(n.lineWidth=1,r.mesh){if(ce.drawPoints)for(let s of r.mesh)S0(n,s[0],s[1],s[2]);if(ce.drawPolygons){n.lineWidth=1;for(let s=0;sr.mesh[o]);Ag(n,i)}if(r.annotations&&r.annotations.leftEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.leftEyeIris[3][0]-r.annotations.leftEyeIris[1][0])/2,i=Math.abs(r.annotations.leftEyeIris[4][1]-r.annotations.leftEyeIris[2][1])/2;n.ellipse(r.annotations.leftEyeIris[0][0],r.annotations.leftEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}if(r.annotations&&r.annotations.rightEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.rightEyeIris[3][0]-r.annotations.rightEyeIris[1][0])/2,i=Math.abs(r.annotations.rightEyeIris[4][1]-r.annotations.rightEyeIris[2][1])/2;n.ellipse(r.annotations.rightEyeIris[0][0],r.annotations.rightEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}}}}}var ts=[];async function _4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let r=0;ri.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),s.length===5&&Ag(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s)}}}}async function b4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=ce.font;for(let r of t){if(ce.drawBoxes&&(n.strokeStyle=ce.color,n.fillStyle=ce.color,g4(n,r.box[0],r.box[1],r.box[2],r.box[3]),ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText("hand",r.box[0]+3,1+r.box[1]+ce.lineHeight,r.box[2])),n.fillStyle=ce.labelColor,n.fillText("hand",r.box[0]+2,0+r.box[1]+ce.lineHeight,r.box[2]),n.stroke()),ce.drawPoints&&r.landmarks&&r.landmarks.length>0)for(let a of r.landmarks)n.fillStyle=ce.useDepth?`rgba(${127.5+2*a[2]}, ${127.5-2*a[2]}, 255, 0.5)`:ce.color,S0(n,a[0],a[1]);if(ce.drawPolygons){let a=s=>{if(!!s)for(let i=0;i0?i-1:0][0],s[i>0?i-1:0][1]),n.lineTo(s[i][0],s[i][1]),n.stroke()};a(r.annotations.indexFinger),a(r.annotations.middleFinger),a(r.annotations.ringFinger),a(r.annotations.pinky),a(r.annotations.thumb)}}}}async function nse(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function rse(e,t){!t||!e||e instanceof HTMLCanvasElement&&(w4(e,t.face),_4(e,t.body),b4(e,t.hand),x4(e,t.gesture))}var dt=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Bc(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Bc(s,i):n[a]=i}),n),{})}var C0,Ke,Xl,Vc,Uc,$i,Ut,E0,Hc,R0,jc,F0,M0,$0,gg=class{constructor(t={}){C0.set(this,void 0);Ke.set(this,void 0);Xl.set(this,void 0);Vc.set(this,void 0);Uc.set(this,void 0);$i.set(this,void 0);Ut.set(this,(...t)=>{if(!ve(this,Vc))return;let n=this.tf.engine().state.numTensors,r=ve(this,Xl);ea(this,Xl,n);let a=n-r;a!==0&&Ce(...t,a)});E0.set(this,t=>{if(!ve(this,Uc))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof Ue))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Hc.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=dt();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&Ce("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&Ce("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let r=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),a=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&Ce(`wasm execution: ${r?"SIMD":"no SIMD"} ${a?"multithreaded":"singlethreaded"}`),r||Ce("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&h6();try{await this.tf.setBackend(this.config.backend)}catch(r){Ce("error: cannot set backend:",this.config.backend,r)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(Ce("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let r=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&Ce(`gl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`)}await this.tf.ready(),ve(this,Ke).backend=Math.trunc(dt()-n)}});R0.set(this,t=>{if(!t||t.length<300)return{roll:null,yaw:null,pitch:null};let n=(s,i,o,l)=>Math.atan2(l-i,o-s),r=s=>Math.abs(s*180/Math.PI%360);return{roll:n(t[33][0],t[33][1],t[263][0],t[263][1]),yaw:n(t[33][0],t[33][2],t[263][0],t[263][2]),pitch:n(t[10][1],t[10][2],t[152][1],t[152][2])}});jc.set(this,async t=>{var u,c,h,d,p,f,m;let n,r,a,s,i,o=[];this.state="run:face",n=dt();let l=await((u=this.models.face)==null?void 0:u.estimateFaces(t,this.config));if(ve(this,Ke).face=Math.trunc(dt()-n),!l)return[];for(let A of l){if(ve(this,Ut).call(this,"Get Face"),!A.image||A.image.isDisposedInternal){Ce("Face object is disposed:",A.image);continue}let y=ve(this,R0).call(this,A.mesh);ve(this,Ut).call(this,"Start Age:"),this.config.async?r=this.config.face.age.enabled?N2(A.image,this.config):{}:(this.state="run:age",n=dt(),r=this.config.face.age.enabled?await N2(A.image,this.config):{},ve(this,Ke).age=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Gender:"),this.config.async?a=this.config.face.gender.enabled?R2(A.image,this.config):{}:(this.state="run:gender",n=dt(),a=this.config.face.gender.enabled?await R2(A.image,this.config):{},ve(this,Ke).gender=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Emotion:"),this.config.async?s=this.config.face.emotion.enabled?O2(A.image,this.config):{}:(this.state="run:emotion",n=dt(),s=this.config.face.emotion.enabled?await O2(A.image,this.config):{},ve(this,Ke).emotion=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),ve(this,Ut).call(this,"Start Embedding:"),this.config.async?i=this.config.face.embedding.enabled?W2(A,this.config):[]:(this.state="run:embedding",n=dt(),i=this.config.face.embedding.enabled?await W2(A,this.config):[],ve(this,Ke).embedding=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),this.config.async&&([r,a,s,i]=await Promise.all([r,a,s,i])),ve(this,Ut).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((c=A==null?void 0:A.annotations)==null?void 0:c.leftEyeIris)&&((h=A==null?void 0:A.annotations)==null?void 0:h.rightEyeIris)&&(delete A.annotations.leftEyeIris,delete A.annotations.rightEyeIris);let g=((d=A.annotations)==null?void 0:d.leftEyeIris)&&((p=A.annotations)==null?void 0:p.rightEyeIris)?11.7*Math.max(Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0]),Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])):0;o.push({...A,age:r.age,gender:a.gender,genderConfidence:a.confidence,emotion:s,embedding:i,iris:g!==0?Math.trunc(g)/100:0,angle:y,tensor:this.config.face.detector.return?(f=A.image)==null?void 0:f.squeeze():null}),(m=A.image)==null||m.dispose(),ve(this,Ut).call(this,"End Face")}return ve(this,Ut).call(this,"End FaceMesh:"),this.config.async&&(ve(this,Ke).face&&delete ve(this,Ke).face,ve(this,Ke).age&&delete ve(this,Ke).age,ve(this,Ke).gender&&delete ve(this,Ke).gender,ve(this,Ke).emotion&&delete ve(this,Ke).emotion),o});F0.set(this,async()=>{let t=(a,s="application/octet-stream")=>fetch(`data:${s};base64,${a}`).then(i=>i.blob()),n,r;switch(this.config.warmup){case"face":n=await t(N0);break;case"full":n=await t(I0);break;default:n=null}if(n){let a=await createImageBitmap(n);r=await this.detect(a,this.config),a.close()}return r});M0.set(this,async()=>new Promise(t=>{let n,r=0;switch(this.config.warmup){case"face":r=256,n="data:image/jpeg;base64,"+N0;break;case"full":case"body":r=1200,n="data:image/jpeg;base64,"+I0;break;default:n=null}let a=new Image;a.onload=async()=>{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(r,r):document.createElement("canvas");s.width=a.naturalWidth,s.height=a.naturalHeight;let i=s.getContext("2d");i==null||i.drawImage(a,0,0);let o=await this.detect(s,this.config);t(o)},n?a.src=n:t(null)}));$0.set(this,async()=>{let t=i=>Buffer.from(i,"base64"),n=this.config.warmup==="face"?t(N0):t(I0),r=(void 0).decodeJpeg(n),a=r.expandDims(0);this.tf.dispose(r);let s=await this.detect(a,this.config);return this.tf.dispose(a),s});this.tf=yh,this.draw=mg,ea(this,C0,pg),this.version=fg,this.config=Bc(mt,t),this.state="idle",ea(this,Xl,0),ea(this,Vc,!1),ea(this,Uc,!1),ea(this,$i,!0),ea(this,Ke,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=n=>dg(n,this.config),this.classes={facemesh:yg,age:v2,gender:I2,emotion:F2,body:this.config.body.modelPath.includes("posenet")?J2:ug,hand:sg},this.sysinfo=Mg()}profileData(){return this.config.profile?b2:{}}simmilarity(t,n){return this.config.face.embedding.enabled?P2(t,n):0}enhance(t){return L2(t)}match(t,n,r=0){return v6(t,n,r)}async load(t={}){this.state="load";let n=dt();t&&(this.config=Bc(this.config,t)),ve(this,$i)&&(this.config.debug&&Ce(`version: ${this.version}`),this.config.debug&&Ce(`tfjs version: ${this.tf.version_core}`),this.config.debug&&Ce("platform:",this.sysinfo.platform),this.config.debug&&Ce("agent:",this.sysinfo.agent),await ve(this,Hc).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&Ce("configuration:",this.config),this.config.debug&&Ce("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?yg.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?k2(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?E2(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?D2(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?z2(this.config):null),this.models.handpose||(this.config.hand.enabled?lg(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?eg(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?cg(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await yg.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await k2(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await E2(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await D2(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await z2(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await lg(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await eg(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await cg(this.config))),ve(this,$i)&&(this.config.debug&&Ce("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ea(this,$i,!1));let r=Math.trunc(dt()-n);r>(ve(this,Ke).load||0)&&(ve(this,Ke).load=r)}async detect(t,n={}){return new Promise(async r=>{var d,p,f,m;this.state="config";let a;this.config=Bc(this.config,n),this.state="check";let s=ve(this,E0).call(this,t);s&&(Ce(s,t),r({error:s}));let i=dt();await ve(this,Hc).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),ve(this,Ut).call(this,"Start Scope:"),a=dt();let o=dg(t,this.config);if(!o||!o.tensor){Ce("could not convert input to tensor"),r({error:"could not convert input to tensor"});return}ve(this,Ke).image=Math.trunc(dt()-a),ve(this,Ut).call(this,"Get Image:");let l,u,c;this.config.async?(c=this.config.face.enabled?ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face&&delete ve(this,Ke).face):(this.state="run:face",a=dt(),c=this.config.face.enabled?await ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face=Math.trunc(dt()-a)),ve(this,Ut).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?(d=this.models.posenet)==null?void 0:d.estimatePoses(o.tensor,this.config):[]:l=this.config.body.enabled?hg(o.tensor,this.config):[],ve(this,Ke).body&&delete ve(this,Ke).body):(this.state="run:body",a=dt(),this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?await((p=this.models.posenet)==null?void 0:p.estimatePoses(o.tensor,this.config)):[]:l=this.config.body.enabled?await hg(o.tensor,this.config):[],ve(this,Ke).body=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Body:"),ve(this,Ut).call(this,"Start Hand:"),this.config.async?(u=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(o.tensor,this.config):[],ve(this,Ke).hand&&delete ve(this,Ke).hand):(this.state="run:hand",a=dt(),u=this.config.hand.enabled?await((m=this.models.handpose)==null?void 0:m.estimateHands(o.tensor,this.config)):[],ve(this,Ke).hand=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Hand:"),this.config.async&&([c,l,u]=await Promise.all([c,l,u])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),ve(this,Ut).call(this,"End Scope:");let h=[];this.config.gesture.enabled&&(a=dt(),h=[...J6(c),...Y6(l),...e4(u),...Q6(c)],this.config.async?ve(this,Ke).gesture&&delete ve(this,Ke).gesture:ve(this,Ke).gesture=Math.trunc(dt()-a)),ve(this,Ke).total=Math.trunc(dt()-i),this.state="idle",r({face:c,body:l,hand:u,gesture:h,performance:ve(this,Ke),canvas:o.canvas})})}async warmup(t={}){let n=dt();t&&(this.config=Bc(this.config,t));let r=this.config.videoOptimized;this.config.videoOptimized=!1;let a;typeof createImageBitmap=="function"?a=await ve(this,F0).call(this):typeof Image!="undefined"?a=await ve(this,M0).call(this):a=await ve(this,$0).call(this),this.config.videoOptimized=r;let s=dt();return this.config.debug&&Ce("Warmup",this.config.warmup,Math.round(s-n),"ms",a),a}};C0=new WeakMap,Ke=new WeakMap,Xl=new WeakMap,Vc=new WeakMap,Uc=new WeakMap,$i=new WeakMap,Ut=new WeakMap,E0=new WeakMap,Hc=new WeakMap,R0=new WeakMap,jc=new WeakMap,F0=new WeakMap,M0=new WeakMap,$0=new WeakMap;return ase;})(); +2Q==`;var pg={};er(pg,{author:()=>u4,browser:()=>o4,bugs:()=>c4,default:()=>tse,description:()=>r4,devDependencies:()=>y4,engines:()=>p4,homepage:()=>h4,keywords:()=>A4,license:()=>d4,main:()=>s4,module:()=>i4,name:()=>n4,repository:()=>f4,scripts:()=>m4,sideEffects:()=>a4,types:()=>l4,version:()=>fg});var n4="@vladmandic/human",fg="1.1.7",r4="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",a4=!1,s4="dist/human.node.js",i4="dist/human.esm.js",o4="dist/human.esm.js",l4="types/src/human.d.ts",u4="Vladimir Mandic ",c4={url:"https://github.com/vladmandic/human/issues"},h4="https://vladmandic.github.io/human/demo/index.html",d4="MIT",p4={node:">=12.0.0"},f4={type:"git",url:"git+https://github.com/vladmandic/human.git"},m4={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},A4=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],y4={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.35","@typescript-eslint/eslint-plugin":"^4.18.0","@typescript-eslint/parser":"^4.18.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.3",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2",seedrandom:"^3.0.5","simple-git":"^2.37.0",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},tse={name:n4,version:fg,description:r4,sideEffects:a4,main:s4,module:i4,browser:o4,types:l4,author:u4,bugs:c4,homepage:h4,license:d4,engines:p4,repository:f4,scripts:m4,keywords:A4,devDependencies:y4};var mg={};er(mg,{all:()=>rse,body:()=>_4,canvas:()=>nse,drawOptions:()=>ce,face:()=>w4,gesture:()=>x4,hand:()=>b4});var ce={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function S0(e,t,n,r=null){e.fillStyle=ce.useDepth&&r?`rgba(${127.5+2*(r||0)}, ${127.5-2*(r||0)}, 255, 0.3)`:ce.color,e.beginPath(),e.arc(t,n,ce.pointSize,0,2*Math.PI),e.fill()}function g4(e,t,n,r,a){if(e.beginPath(),ce.useCurves){let s=(t+t+r)/2,i=(n+n+a)/2;e.ellipse(s,i,r/2,a/2,0,0,2*Math.PI)}else e.lineWidth=ce.lineWidth,e.moveTo(t+ce.roundRect,n),e.lineTo(t+r-ce.roundRect,n),e.quadraticCurveTo(t+r,n,t+r,n+ce.roundRect),e.lineTo(t+r,n+a-ce.roundRect),e.quadraticCurveTo(t+r,n+a,t+r-ce.roundRect,n+a),e.lineTo(t+ce.roundRect,n+a),e.quadraticCurveTo(t,n+a,t,n+a-ce.roundRect),e.lineTo(t,n+ce.roundRect),e.quadraticCurveTo(t,n,t+ce.roundRect,n),e.closePath();e.stroke()}function Ag(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.fillStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),ce.fillPolygons&&(e.closePath(),e.fill())}}function T0(e,t=[]){if(!(t===void 0||t.length===0)){if(!ce.useCurves||t.length<=2){Ag(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&i[1].length>0){let o=s[1]>0?`#${s[1]}`:"",l=`${s[0]} ${o}: ${i[1]}`;ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(l,8,2+r*ce.lineHeight)),n.fillStyle=ce.labelColor,n.fillText(l,6,0+r*ce.lineHeight),r+=1}}}async function w4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let r of t){n.font=ce.font,n.strokeStyle=ce.color,n.fillStyle=ce.color,ce.drawBoxes&&g4(n,r.box[0],r.box[1],r.box[2],r.box[3]);let a=[];if(a.push(`face confidence: ${Math.trunc(100*r.confidence)}%`),r.genderConfidence&&a.push(`${r.gender||""} ${Math.trunc(100*r.genderConfidence)}% confident`),r.age&&a.push(`age: ${r.age||""}`),r.iris&&a.push(`iris distance: ${r.iris}`),r.emotion&&r.emotion.length>0){let s=r.emotion.map(i=>`${Math.trunc(100*i.score)}% ${i.emotion}`);a.push(s.join(" "))}r.angle&&r.angle.roll&&a.push(`roll: ${Math.trunc(100*r.angle.roll)/100} yaw:${Math.trunc(100*r.angle.yaw)/100} pitch:${Math.trunc(100*r.angle.pitch)/100}`),a.length===0&&a.push("face"),n.fillStyle=ce.color;for(let s=a.length-1;s>=0;s--){let i=Math.max(r.box[0],0),o=s*ce.lineHeight+r.box[1];ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(a[s],i+5,o+16)),n.fillStyle=ce.labelColor,n.fillText(a[s],i+4,o+15)}if(n.lineWidth=1,r.mesh){if(ce.drawPoints)for(let s of r.mesh)S0(n,s[0],s[1],s[2]);if(ce.drawPolygons){n.lineWidth=1;for(let s=0;sr.mesh[o]);Ag(n,i)}if(r.annotations&&r.annotations.leftEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.leftEyeIris[3][0]-r.annotations.leftEyeIris[1][0])/2,i=Math.abs(r.annotations.leftEyeIris[4][1]-r.annotations.leftEyeIris[2][1])/2;n.ellipse(r.annotations.leftEyeIris[0][0],r.annotations.leftEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}if(r.annotations&&r.annotations.rightEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.rightEyeIris[3][0]-r.annotations.rightEyeIris[1][0])/2,i=Math.abs(r.annotations.rightEyeIris[4][1]-r.annotations.rightEyeIris[2][1])/2;n.ellipse(r.annotations.rightEyeIris[0][0],r.annotations.rightEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}}}}}var ts=[];async function _4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let r=0;ri.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),s.length===5&&Ag(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s)}}}}async function b4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=ce.font;for(let r of t){if(ce.drawBoxes&&(n.strokeStyle=ce.color,n.fillStyle=ce.color,g4(n,r.box[0],r.box[1],r.box[2],r.box[3]),ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText("hand",r.box[0]+3,1+r.box[1]+ce.lineHeight,r.box[2])),n.fillStyle=ce.labelColor,n.fillText("hand",r.box[0]+2,0+r.box[1]+ce.lineHeight,r.box[2]),n.stroke()),ce.drawPoints&&r.landmarks&&r.landmarks.length>0)for(let a of r.landmarks)n.fillStyle=ce.useDepth?`rgba(${127.5+2*a[2]}, ${127.5-2*a[2]}, 255, 0.5)`:ce.color,S0(n,a[0],a[1]);if(ce.drawPolygons){let a=s=>{if(!!s)for(let i=0;i0?i-1:0][0],s[i>0?i-1:0][1]),n.lineTo(s[i][0],s[i][1]),n.stroke()};a(r.annotations.indexFinger),a(r.annotations.middleFinger),a(r.annotations.ringFinger),a(r.annotations.pinky),a(r.annotations.thumb)}}}}async function nse(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function rse(e,t){!t||!e||e instanceof HTMLCanvasElement&&(w4(e,t.face),_4(e,t.body),b4(e,t.hand),x4(e,t.gesture))}var dt=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Bc(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Bc(s,i):n[a]=i}),n),{})}var C0,Ke,Xl,Vc,Uc,$i,Ut,E0,Hc,R0,jc,F0,M0,$0,gg=class{constructor(t={}){C0.set(this,void 0);Ke.set(this,void 0);Xl.set(this,void 0);Vc.set(this,void 0);Uc.set(this,void 0);$i.set(this,void 0);Ut.set(this,(...t)=>{if(!ve(this,Vc))return;let n=this.tf.engine().state.numTensors,r=ve(this,Xl);ea(this,Xl,n);let a=n-r;a!==0&&Ce(...t,a)});E0.set(this,t=>{if(!ve(this,Uc))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof Ue))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Hc.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=dt();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&Ce("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&Ce("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let r=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),a=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&Ce(`wasm execution: ${r?"SIMD":"no SIMD"} ${a?"multithreaded":"singlethreaded"}`),r||Ce("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&h6();try{await this.tf.setBackend(this.config.backend)}catch(r){Ce("error: cannot set backend:",this.config.backend,r)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(Ce("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let r=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&Ce(`gl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`)}await this.tf.ready(),ve(this,Ke).backend=Math.trunc(dt()-n)}});R0.set(this,t=>{if(!t||t.length<300)return{roll:null,yaw:null,pitch:null};let n=(s,i,o,l)=>Math.atan2(l-i,o-s),r=s=>Math.abs(s*180/Math.PI%360);return{roll:n(t[33][0],t[33][1],t[263][0],t[263][1]),yaw:n(t[33][0],t[33][2],t[263][0],t[263][2]),pitch:n(t[10][1],t[10][2],t[152][1],t[152][2])}});jc.set(this,async t=>{var u,c,h,d,p,f,m;let n,r,a,s,i,o=[];this.state="run:face",n=dt();let l=await((u=this.models.face)==null?void 0:u.estimateFaces(t,this.config));if(ve(this,Ke).face=Math.trunc(dt()-n),!l)return[];for(let A of l){if(ve(this,Ut).call(this,"Get Face"),!A.image||A.image.isDisposedInternal){Ce("Face object is disposed:",A.image);continue}let y=ve(this,R0).call(this,A.mesh);ve(this,Ut).call(this,"Start Age:"),this.config.async?r=this.config.face.age.enabled?N2(A.image,this.config):{}:(this.state="run:age",n=dt(),r=this.config.face.age.enabled?await N2(A.image,this.config):{},ve(this,Ke).age=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Gender:"),this.config.async?a=this.config.face.gender.enabled?R2(A.image,this.config):{}:(this.state="run:gender",n=dt(),a=this.config.face.gender.enabled?await R2(A.image,this.config):{},ve(this,Ke).gender=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Emotion:"),this.config.async?s=this.config.face.emotion.enabled?O2(A.image,this.config):{}:(this.state="run:emotion",n=dt(),s=this.config.face.emotion.enabled?await O2(A.image,this.config):{},ve(this,Ke).emotion=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),ve(this,Ut).call(this,"Start Embedding:"),this.config.async?i=this.config.face.embedding.enabled?W2(A,this.config):[]:(this.state="run:embedding",n=dt(),i=this.config.face.embedding.enabled?await W2(A,this.config):[],ve(this,Ke).embedding=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),this.config.async&&([r,a,s,i]=await Promise.all([r,a,s,i])),ve(this,Ut).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((c=A==null?void 0:A.annotations)==null?void 0:c.leftEyeIris)&&((h=A==null?void 0:A.annotations)==null?void 0:h.rightEyeIris)&&(delete A.annotations.leftEyeIris,delete A.annotations.rightEyeIris);let g=((d=A.annotations)==null?void 0:d.leftEyeIris)&&((p=A.annotations)==null?void 0:p.rightEyeIris)?11.7*Math.max(Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0]),Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])):0;o.push({...A,age:r.age,gender:a.gender,genderConfidence:a.confidence,emotion:s,embedding:i,iris:g!==0?Math.trunc(g)/100:0,angle:y,tensor:this.config.face.detector.return?(f=A.image)==null?void 0:f.squeeze():null}),(m=A.image)==null||m.dispose(),ve(this,Ut).call(this,"End Face")}return ve(this,Ut).call(this,"End FaceMesh:"),this.config.async&&(ve(this,Ke).face&&delete ve(this,Ke).face,ve(this,Ke).age&&delete ve(this,Ke).age,ve(this,Ke).gender&&delete ve(this,Ke).gender,ve(this,Ke).emotion&&delete ve(this,Ke).emotion),o});F0.set(this,async()=>{let t=(a,s="application/octet-stream")=>fetch(`data:${s};base64,${a}`).then(i=>i.blob()),n,r;switch(this.config.warmup){case"face":n=await t(N0);break;case"full":n=await t(I0);break;default:n=null}if(n){let a=await createImageBitmap(n);r=await this.detect(a,this.config),a.close()}return r});M0.set(this,async()=>new Promise(t=>{let n,r=0;switch(this.config.warmup){case"face":r=256,n="data:image/jpeg;base64,"+N0;break;case"full":case"body":r=1200,n="data:image/jpeg;base64,"+I0;break;default:n=null}let a=new Image;a.onload=async()=>{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(r,r):document.createElement("canvas");s.width=a.naturalWidth,s.height=a.naturalHeight;let i=s.getContext("2d");i==null||i.drawImage(a,0,0);let o=await this.detect(s,this.config);t(o)},n?a.src=n:t(null)}));$0.set(this,async()=>{let t=i=>Buffer.from(i,"base64"),n=this.config.warmup==="face"?t(N0):t(I0),r=(void 0).decodeJpeg(n),a=r.expandDims(0);this.tf.dispose(r);let s=await this.detect(a,this.config);return this.tf.dispose(a),s});this.tf=yh,this.draw=mg,ea(this,C0,pg),this.version=fg,this.config=Bc(mt,t),this.state="idle",ea(this,Xl,0),ea(this,Vc,!1),ea(this,Uc,!1),ea(this,$i,!0),ea(this,Ke,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=n=>dg(n,this.config),this.classes={facemesh:yg,age:v2,gender:I2,emotion:F2,body:this.config.body.modelPath.includes("posenet")?J2:ug,hand:sg},this.sysinfo=Mg()}profileData(){return this.config.profile?b2:{}}simmilarity(t,n){return this.config.face.embedding.enabled?P2(t,n):0}enhance(t){return L2(t)}match(t,n,r=0){return v6(t,n,r)}async load(t={}){this.state="load";let n=dt();t&&(this.config=Bc(this.config,t)),ve(this,$i)&&(this.config.debug&&Ce(`version: ${this.version}`),this.config.debug&&Ce(`tfjs version: ${this.tf.version_core}`),this.config.debug&&Ce("platform:",this.sysinfo.platform),this.config.debug&&Ce("agent:",this.sysinfo.agent),await ve(this,Hc).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&Ce("configuration:",this.config),this.config.debug&&Ce("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?yg.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?k2(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?E2(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?D2(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?z2(this.config):null),this.models.handpose||(this.config.hand.enabled?lg(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?eg(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?cg(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await yg.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await k2(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await E2(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await D2(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await z2(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await lg(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await eg(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await cg(this.config))),ve(this,$i)&&(this.config.debug&&Ce("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ea(this,$i,!1));let r=Math.trunc(dt()-n);r>(ve(this,Ke).load||0)&&(ve(this,Ke).load=r)}async detect(t,n={}){return new Promise(async r=>{var d,p,f,m;this.state="config";let a;this.config=Bc(this.config,n),this.state="check";let s=ve(this,E0).call(this,t);s&&(Ce(s,t),r({error:s}));let i=dt();await ve(this,Hc).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),ve(this,Ut).call(this,"Start Scope:"),a=dt();let o=dg(t,this.config);if(!o||!o.tensor){Ce("could not convert input to tensor"),r({error:"could not convert input to tensor"});return}ve(this,Ke).image=Math.trunc(dt()-a),ve(this,Ut).call(this,"Get Image:");let l,u,c;this.config.async?(c=this.config.face.enabled?ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face&&delete ve(this,Ke).face):(this.state="run:face",a=dt(),c=this.config.face.enabled?await ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face=Math.trunc(dt()-a)),ve(this,Ut).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?(d=this.models.posenet)==null?void 0:d.estimatePoses(o.tensor,this.config):[]:l=this.config.body.enabled?hg(o.tensor,this.config):[],ve(this,Ke).body&&delete ve(this,Ke).body):(this.state="run:body",a=dt(),this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?await((p=this.models.posenet)==null?void 0:p.estimatePoses(o.tensor,this.config)):[]:l=this.config.body.enabled?await hg(o.tensor,this.config):[],ve(this,Ke).body=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Body:"),ve(this,Ut).call(this,"Start Hand:"),this.config.async?(u=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(o.tensor,this.config):[],ve(this,Ke).hand&&delete ve(this,Ke).hand):(this.state="run:hand",a=dt(),u=this.config.hand.enabled?await((m=this.models.handpose)==null?void 0:m.estimateHands(o.tensor,this.config)):[],ve(this,Ke).hand=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Hand:"),this.config.async&&([c,l,u]=await Promise.all([c,l,u])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),ve(this,Ut).call(this,"End Scope:");let h=[];this.config.gesture.enabled&&(a=dt(),h=[...J6(c),...Y6(l),...e4(u),...Q6(c)],this.config.async?ve(this,Ke).gesture&&delete ve(this,Ke).gesture:ve(this,Ke).gesture=Math.trunc(dt()-a)),ve(this,Ke).total=Math.trunc(dt()-i),this.state="idle",r({face:c,body:l,hand:u,gesture:h,performance:ve(this,Ke),canvas:o.canvas})})}async warmup(t={}){let n=dt();t&&(this.config=Bc(this.config,t));let r=this.config.videoOptimized;this.config.videoOptimized=!1;let a;typeof createImageBitmap=="function"?a=await ve(this,F0).call(this):typeof Image!="undefined"?a=await ve(this,M0).call(this):a=await ve(this,$0).call(this),this.config.videoOptimized=r;let s=dt();return this.config.debug&&Ce("Warmup",this.config.warmup,Math.round(s-n),"ms",a),a}};C0=new WeakMap,Ke=new WeakMap,Xl=new WeakMap,Vc=new WeakMap,Uc=new WeakMap,$i=new WeakMap,Ut=new WeakMap,E0=new WeakMap,Hc=new WeakMap,R0=new WeakMap,jc=new WeakMap,F0=new WeakMap,M0=new WeakMap,$0=new WeakMap;return ase;})(); /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/human.node-gpu.js b/dist/human.node-gpu.js index e4026d7f..c26613cb 100644 --- a/dist/human.node-gpu.js +++ b/dist/human.node-gpu.js @@ -731,5 +731,5 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var c0={};U(c0,{author:()=>gt,browser:()=>pt,bugs:()=>Tt,default:()=>kn,description:()=>dt,devDependencies:()=>St,engines:()=>zt,homepage:()=>Pt,keywords:()=>Rt,license:()=>vt,main:()=>mt,module:()=>ut,name:()=>lt,repository:()=>Mt,scripts:()=>Et,sideEffects:()=>ft,types:()=>bt,version:()=>_0});var lt="@vladmandic/human",_0="1.1.6",dt="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",ft=!1,mt="dist/human.node.js",ut="dist/human.esm.js",pt="dist/human.esm.js",bt="types/src/human.d.ts",gt="Vladimir Mandic ",Tt={url:"https://github.com/vladmandic/human/issues"},Pt="https://vladmandic.github.io/human/demo/index.html",vt="MIT",zt={node:">=12.0.0"},Mt={type:"git",url:"git+https://github.com/vladmandic/human.git"},Et={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},Rt=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],St={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.35","@typescript-eslint/eslint-plugin":"^4.18.0","@typescript-eslint/parser":"^4.18.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2",seedrandom:"^3.0.5","simple-git":"^2.37.0",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},kn={name:lt,version:_0,description:dt,sideEffects:ft,main:mt,module:ut,browser:pt,types:bt,author:gt,bugs:Tt,homepage:Pt,license:vt,engines:zt,repository:Mt,scripts:Et,keywords:Rt,devDependencies:St};var h0={};U(h0,{all:()=>Zn,body:()=>Ot,canvas:()=>In,drawOptions:()=>l,face:()=>jt,gesture:()=>Wt,hand:()=>kt});var l={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function Ke(n,e,t,A=null){n.fillStyle=l.useDepth&&A?`rgba(${127.5+2*(A||0)}, ${127.5-2*(A||0)}, 255, 0.3)`:l.color,n.beginPath(),n.arc(e,t,l.pointSize,0,2*Math.PI),n.fill()}function Nt(n,e,t,A,r){if(n.beginPath(),l.useCurves){let c=(e+e+A)/2,_=(t+t+r)/2;n.ellipse(c,_,A/2,r/2,0,0,2*Math.PI)}else n.lineWidth=l.lineWidth,n.moveTo(e+l.roundRect,t),n.lineTo(e+A-l.roundRect,t),n.quadraticCurveTo(e+A,t,e+A,t+l.roundRect),n.lineTo(e+A,t+r-l.roundRect),n.quadraticCurveTo(e+A,t+r,e+A-l.roundRect,t+r),n.lineTo(e+l.roundRect,t+r),n.quadraticCurveTo(e,t+r,e,t+r-l.roundRect),n.lineTo(e,t+l.roundRect),n.quadraticCurveTo(e,t,e+l.roundRect,t),n.closePath();n.stroke()}function o0(n,e=[]){if(!(e===void 0||e.length===0)){n.beginPath(),n.moveTo(e[0][0],e[0][1]);for(let t of e)n.strokeStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.fillStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.lineTo(t[0],parseInt(t[1]));n.stroke(),l.fillPolygons&&(n.closePath(),n.fill())}}function Ue(n,e=[]){if(!(e===void 0||e.length===0)){if(!l.useCurves||e.length<=2){o0(n,e);return}n.moveTo(e[0][0],e[0][1]);for(let t=0;t1&&_[1].length>0){let h=c[1]>0?`#${c[1]}`:"",o=`${c[0]} ${h}: ${_[1]}`;l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(o,8,2+A*l.lineHeight)),t.fillStyle=l.labelColor,t.fillText(o,6,0+A*l.lineHeight),A+=1}}}async function jt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t)for(let A of e){t.font=l.font,t.strokeStyle=l.color,t.fillStyle=l.color,l.drawBoxes&&Nt(t,A.box[0],A.box[1],A.box[2],A.box[3]);let r=[];if(r.push(`face confidence: ${Math.trunc(100*A.confidence)}%`),A.genderConfidence&&r.push(`${A.gender||""} ${Math.trunc(100*A.genderConfidence)}% confident`),A.age&&r.push(`age: ${A.age||""}`),A.iris&&r.push(`iris distance: ${A.iris}`),A.emotion&&A.emotion.length>0){let c=A.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(c.join(" "))}A.angle&&A.angle.roll&&r.push(`roll: ${Math.trunc(100*A.angle.roll)/100} yaw:${Math.trunc(100*A.angle.yaw)/100} pitch:${Math.trunc(100*A.angle.pitch)/100}`),r.length===0&&r.push("face"),t.fillStyle=l.color;for(let c=r.length-1;c>=0;c--){let _=Math.max(A.box[0],0),h=c*l.lineHeight+A.box[1];l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(r[c],_+5,h+16)),t.fillStyle=l.labelColor,t.fillText(r[c],_+4,h+15)}if(t.lineWidth=1,A.mesh){if(l.drawPoints)for(let c of A.mesh)Ke(t,c[0],c[1],c[2]);if(l.drawPolygons){t.lineWidth=1;for(let c=0;cA.mesh[h]);o0(t,_)}if(A.annotations&&A.annotations.leftEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0])/2,_=Math.abs(A.annotations.leftEyeIris[4][1]-A.annotations.leftEyeIris[2][1])/2;t.ellipse(A.annotations.leftEyeIris[0][0],A.annotations.leftEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}if(A.annotations&&A.annotations.rightEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.rightEyeIris[3][0]-A.annotations.rightEyeIris[1][0])/2,_=Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])/2;t.ellipse(A.annotations.rightEyeIris[0][0],A.annotations.rightEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}}}}}var ie=[];async function Ot(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round";for(let A=0;A_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),c.length===5&&o0(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c)}}}}async function kt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round",t.font=l.font;for(let A of e){if(l.drawBoxes&&(t.strokeStyle=l.color,t.fillStyle=l.color,Nt(t,A.box[0],A.box[1],A.box[2],A.box[3]),l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText("hand",A.box[0]+3,1+A.box[1]+l.lineHeight,A.box[2])),t.fillStyle=l.labelColor,t.fillText("hand",A.box[0]+2,0+A.box[1]+l.lineHeight,A.box[2]),t.stroke()),l.drawPoints&&A.landmarks&&A.landmarks.length>0)for(let r of A.landmarks)t.fillStyle=l.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:l.color,Ke(t,r[0],r[1]);if(l.drawPolygons){let r=c=>{if(!!c)for(let _=0;_0?_-1:0][0],c[_>0?_-1:0][1]),t.lineTo(c[_][0],c[_][1]),t.stroke()};r(A.annotations.indexFinger),r(A.annotations.middleFinger),r(A.annotations.ringFinger),r(A.annotations.pinky),r(A.annotations.thumb)}}}}async function In(n,e){if(!n||!e||!(n instanceof HTMLCanvasElement)||!(e instanceof HTMLCanvasElement))return;let t=n.getContext("2d");t==null||t.drawImage(n,0,0)}async function Zn(n,e){!e||!n||n instanceof HTMLCanvasElement&&(jt(n,e.face),Ot(n,e.body),kt(n,e.hand),Wt(n,e.gesture))}var M=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function be(...n){let e=t=>t&&typeof t=="object";return n.reduce((t,A)=>(Object.keys(A||{}).forEach(r=>{let c=t[r],_=A[r];Array.isArray(c)&&Array.isArray(_)?t[r]=c.concat(..._):e(c)&&e(_)?t[r]=be(c,_):t[r]=_}),t),{})}var De,v,me,ge,Te,ae,k,Ge,Pe,Qe,ve,$e,e1,t1,x0=class{constructor(e={}){De.set(this,void 0);v.set(this,void 0);me.set(this,void 0);ge.set(this,void 0);Te.set(this,void 0);ae.set(this,void 0);k.set(this,(...e)=>{if(!m(this,ge))return;let t=this.tf.engine().state.numTensors,A=m(this,me);ne(this,me,t);let r=t-A;r!==0&&g(...e,r)});Ge.set(this,e=>{if(!m(this,Te))return null;if(!e)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(e instanceof s0.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(t){return"backend not loaded"}return null});Pe.set(this,async(e=!1)=>{if(this.config.backend&&this.config.backend!==""&&e||this.tf.getBackend()!==this.config.backend){let t=M();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&g("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&g("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let A=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&g(`wasm execution: ${A?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),A||g("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&p0();try{await this.tf.setBackend(this.config.backend)}catch(A){g("error: cannot set backend:",this.config.backend,A)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(g("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let A=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&g(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}await this.tf.ready(),m(this,v).backend=Math.trunc(M()-t)}});Qe.set(this,e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(c,_,h,o)=>Math.atan2(o-_,h-c),A=c=>Math.abs(c*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}});ve.set(this,async e=>{var i,y,s,w,f,d,x;let t,A,r,c,_,h=[];this.state="run:face",t=M();let o=await((i=this.models.face)==null?void 0:i.estimateFaces(e,this.config));if(m(this,v).face=Math.trunc(M()-t),!o)return[];for(let b of o){if(m(this,k).call(this,"Get Face"),!b.image||b.image.isDisposedInternal){g("Face object is disposed:",b.image);continue}let Z=m(this,Qe).call(this,b.mesh);m(this,k).call(this,"Start Age:"),this.config.async?A=this.config.face.age.enabled?d1(b.image,this.config):{}:(this.state="run:age",t=M(),A=this.config.face.age.enabled?await d1(b.image,this.config):{},m(this,v).age=Math.trunc(M()-t)),m(this,k).call(this,"Start Gender:"),this.config.async?r=this.config.face.gender.enabled?g1(b.image,this.config):{}:(this.state="run:gender",t=M(),r=this.config.face.gender.enabled?await g1(b.image,this.config):{},m(this,v).gender=Math.trunc(M()-t)),m(this,k).call(this,"Start Emotion:"),this.config.async?c=this.config.face.emotion.enabled?M1(b.image,this.config):{}:(this.state="run:emotion",t=M(),c=this.config.face.emotion.enabled?await M1(b.image,this.config):{},m(this,v).emotion=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),m(this,k).call(this,"Start Embedding:"),this.config.async?_=this.config.face.embedding.enabled?N1(b,this.config):[]:(this.state="run:embedding",t=M(),_=this.config.face.embedding.enabled?await N1(b,this.config):[],m(this,v).embedding=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),this.config.async&&([A,r,c,_]=await Promise.all([A,r,c,_])),m(this,k).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((y=b==null?void 0:b.annotations)==null?void 0:y.leftEyeIris)&&((s=b==null?void 0:b.annotations)==null?void 0:s.rightEyeIris)&&(delete b.annotations.leftEyeIris,delete b.annotations.rightEyeIris);let V=((w=b.annotations)==null?void 0:w.leftEyeIris)&&((f=b.annotations)==null?void 0:f.rightEyeIris)?11.7*Math.max(Math.abs(b.annotations.leftEyeIris[3][0]-b.annotations.leftEyeIris[1][0]),Math.abs(b.annotations.rightEyeIris[4][1]-b.annotations.rightEyeIris[2][1])):0;h.push({...b,age:A.age,gender:r.gender,genderConfidence:r.confidence,emotion:c,embedding:_,iris:V!==0?Math.trunc(V)/100:0,angle:Z,tensor:this.config.face.detector.return?(d=b.image)==null?void 0:d.squeeze():null}),(x=b.image)==null||x.dispose(),m(this,k).call(this,"End Face")}return m(this,k).call(this,"End FaceMesh:"),this.config.async&&(m(this,v).face&&delete m(this,v).face,m(this,v).age&&delete m(this,v).age,m(this,v).gender&&delete m(this,v).gender,m(this,v).emotion&&delete m(this,v).emotion),h});$e.set(this,async()=>{let e=(r,c="application/octet-stream")=>fetch(`data:${c};base64,${r}`).then(_=>_.blob()),t,A;switch(this.config.warmup){case"face":t=await e(Ce);break;case"full":t=await e(Je);break;default:t=null}if(t){let r=await createImageBitmap(t);A=await this.detect(r,this.config),r.close()}return A});e1.set(this,async()=>new Promise(e=>{let t,A=0;switch(this.config.warmup){case"face":A=256,t="data:image/jpeg;base64,"+Ce;break;case"full":case"body":A=1200,t="data:image/jpeg;base64,"+Je;break;default:t=null}let r=new Image;r.onload=async()=>{let c=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(A,A):document.createElement("canvas");c.width=r.naturalWidth,c.height=r.naturalHeight;let _=c.getContext("2d");_==null||_.drawImage(r,0,0);let h=await this.detect(c,this.config);e(h)},t?r.src=t:e(null)}));t1.set(this,async()=>{let e=_=>Buffer.from(_,"base64"),t=this.config.warmup==="face"?e(Ce):e(Je),A=s0.node.decodeJpeg(t),r=A.expandDims(0);this.tf.dispose(A);let c=await this.detect(r,this.config);return this.tf.dispose(r),c});this.tf=s0,this.draw=h0,ne(this,De,c0),this.version=_0,this.config=be(R,e),this.state="idle",ne(this,me,0),ne(this,ge,!1),ne(this,Te,!1),ne(this,ae,!0),ne(this,v,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=t=>A0(t,this.config),this.classes={facemesh:i0,age:w1,gender:f1,emotion:T1,body:this.config.body.modelPath.includes("posenet")?q1:t0,hand:D1},this.sysinfo=f0()}profileData(){return this.config.profile?a1:{}}simmilarity(e,t){return this.config.face.embedding.enabled?R1(e,t):0}enhance(e){return S1(e)}match(e,t,A=0){return j0(e,t,A)}async load(e={}){this.state="load";let t=M();e&&(this.config=be(this.config,e)),m(this,ae)&&(this.config.debug&&g(`version: ${this.version}`),this.config.debug&&g(`tfjs version: ${this.tf.version_core}`),this.config.debug&&g("platform:",this.sysinfo.platform),this.config.debug&&g("agent:",this.sysinfo.agent),await m(this,Pe).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&g("configuration:",this.config),this.config.debug&&g("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?i0.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?l1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?b1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?z1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?E1(this.config):null),this.models.handpose||(this.config.hand.enabled?e0(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?B1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?n0(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await i0.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await l1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await b1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await z1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await E1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await e0(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await B1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await n0(this.config))),m(this,ae)&&(this.config.debug&&g("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ne(this,ae,!1));let A=Math.trunc(M()-t);A>(m(this,v).load||0)&&(m(this,v).load=A)}async detect(e,t={}){return new Promise(async A=>{var w,f,d,x;this.state="config";let r;this.config=be(this.config,t),this.state="check";let c=m(this,Ge).call(this,e);c&&(g(c,e),A({error:c}));let _=M();await m(this,Pe).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),m(this,k).call(this,"Start Scope:"),r=M();let h=A0(e,this.config);if(!h||!h.tensor){g("could not convert input to tensor"),A({error:"could not convert input to tensor"});return}m(this,v).image=Math.trunc(M()-r),m(this,k).call(this,"Get Image:");let o,i,y;this.config.async?(y=this.config.face.enabled?m(this,ve).call(this,h.tensor):[],m(this,v).face&&delete m(this,v).face):(this.state="run:face",r=M(),y=this.config.face.enabled?await m(this,ve).call(this,h.tensor):[],m(this,v).face=Math.trunc(M()-r)),m(this,k).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?(w=this.models.posenet)==null?void 0:w.estimatePoses(h.tensor,this.config):[]:o=this.config.body.enabled?r0(h.tensor,this.config):[],m(this,v).body&&delete m(this,v).body):(this.state="run:body",r=M(),this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?await((f=this.models.posenet)==null?void 0:f.estimatePoses(h.tensor,this.config)):[]:o=this.config.body.enabled?await r0(h.tensor,this.config):[],m(this,v).body=Math.trunc(M()-r)),m(this,k).call(this,"End Body:"),m(this,k).call(this,"Start Hand:"),this.config.async?(i=this.config.hand.enabled?(d=this.models.handpose)==null?void 0:d.estimateHands(h.tensor,this.config):[],m(this,v).hand&&delete m(this,v).hand):(this.state="run:hand",r=M(),i=this.config.hand.enabled?await((x=this.models.handpose)==null?void 0:x.estimateHands(h.tensor,this.config)):[],m(this,v).hand=Math.trunc(M()-r)),m(this,k).call(this,"End Hand:"),this.config.async&&([y,o,i]=await Promise.all([y,o,i])),h.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),m(this,k).call(this,"End Scope:");let s=[];this.config.gesture.enabled&&(r=M(),s=[...xt(y),...it(o),...at(i),...yt(y)],this.config.async?m(this,v).gesture&&delete m(this,v).gesture:m(this,v).gesture=Math.trunc(M()-r)),m(this,v).total=Math.trunc(M()-_),this.state="idle",A({face:y,body:o,hand:i,gesture:s,performance:m(this,v),canvas:h.canvas})})}async warmup(e={}){let t=M();e&&(this.config=be(this.config,e));let A=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await m(this,$e).call(this):typeof Image!="undefined"?r=await m(this,e1).call(this):r=await m(this,t1).call(this),this.config.videoOptimized=A;let c=M();return this.config.debug&&g("Warmup",this.config.warmup,Math.round(c-t),"ms",r),r}};De=new WeakMap,v=new WeakMap,me=new WeakMap,ge=new WeakMap,Te=new WeakMap,ae=new WeakMap,k=new WeakMap,Ge=new WeakMap,Pe=new WeakMap,Qe=new WeakMap,ve=new WeakMap,$e=new WeakMap,e1=new WeakMap,t1=new WeakMap;0&&(module.exports={Human}); +2Q==`;var c0={};U(c0,{author:()=>gt,browser:()=>pt,bugs:()=>Tt,default:()=>kn,description:()=>dt,devDependencies:()=>St,engines:()=>zt,homepage:()=>Pt,keywords:()=>Rt,license:()=>vt,main:()=>mt,module:()=>ut,name:()=>lt,repository:()=>Mt,scripts:()=>Et,sideEffects:()=>ft,types:()=>bt,version:()=>_0});var lt="@vladmandic/human",_0="1.1.7",dt="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",ft=!1,mt="dist/human.node.js",ut="dist/human.esm.js",pt="dist/human.esm.js",bt="types/src/human.d.ts",gt="Vladimir Mandic ",Tt={url:"https://github.com/vladmandic/human/issues"},Pt="https://vladmandic.github.io/human/demo/index.html",vt="MIT",zt={node:">=12.0.0"},Mt={type:"git",url:"git+https://github.com/vladmandic/human.git"},Et={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},Rt=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],St={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.35","@typescript-eslint/eslint-plugin":"^4.18.0","@typescript-eslint/parser":"^4.18.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.3",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2",seedrandom:"^3.0.5","simple-git":"^2.37.0",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},kn={name:lt,version:_0,description:dt,sideEffects:ft,main:mt,module:ut,browser:pt,types:bt,author:gt,bugs:Tt,homepage:Pt,license:vt,engines:zt,repository:Mt,scripts:Et,keywords:Rt,devDependencies:St};var h0={};U(h0,{all:()=>Zn,body:()=>Ot,canvas:()=>In,drawOptions:()=>l,face:()=>jt,gesture:()=>Wt,hand:()=>kt});var l={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function Ke(n,e,t,A=null){n.fillStyle=l.useDepth&&A?`rgba(${127.5+2*(A||0)}, ${127.5-2*(A||0)}, 255, 0.3)`:l.color,n.beginPath(),n.arc(e,t,l.pointSize,0,2*Math.PI),n.fill()}function Nt(n,e,t,A,r){if(n.beginPath(),l.useCurves){let c=(e+e+A)/2,_=(t+t+r)/2;n.ellipse(c,_,A/2,r/2,0,0,2*Math.PI)}else n.lineWidth=l.lineWidth,n.moveTo(e+l.roundRect,t),n.lineTo(e+A-l.roundRect,t),n.quadraticCurveTo(e+A,t,e+A,t+l.roundRect),n.lineTo(e+A,t+r-l.roundRect),n.quadraticCurveTo(e+A,t+r,e+A-l.roundRect,t+r),n.lineTo(e+l.roundRect,t+r),n.quadraticCurveTo(e,t+r,e,t+r-l.roundRect),n.lineTo(e,t+l.roundRect),n.quadraticCurveTo(e,t,e+l.roundRect,t),n.closePath();n.stroke()}function o0(n,e=[]){if(!(e===void 0||e.length===0)){n.beginPath(),n.moveTo(e[0][0],e[0][1]);for(let t of e)n.strokeStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.fillStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.lineTo(t[0],parseInt(t[1]));n.stroke(),l.fillPolygons&&(n.closePath(),n.fill())}}function Ue(n,e=[]){if(!(e===void 0||e.length===0)){if(!l.useCurves||e.length<=2){o0(n,e);return}n.moveTo(e[0][0],e[0][1]);for(let t=0;t1&&_[1].length>0){let h=c[1]>0?`#${c[1]}`:"",o=`${c[0]} ${h}: ${_[1]}`;l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(o,8,2+A*l.lineHeight)),t.fillStyle=l.labelColor,t.fillText(o,6,0+A*l.lineHeight),A+=1}}}async function jt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t)for(let A of e){t.font=l.font,t.strokeStyle=l.color,t.fillStyle=l.color,l.drawBoxes&&Nt(t,A.box[0],A.box[1],A.box[2],A.box[3]);let r=[];if(r.push(`face confidence: ${Math.trunc(100*A.confidence)}%`),A.genderConfidence&&r.push(`${A.gender||""} ${Math.trunc(100*A.genderConfidence)}% confident`),A.age&&r.push(`age: ${A.age||""}`),A.iris&&r.push(`iris distance: ${A.iris}`),A.emotion&&A.emotion.length>0){let c=A.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(c.join(" "))}A.angle&&A.angle.roll&&r.push(`roll: ${Math.trunc(100*A.angle.roll)/100} yaw:${Math.trunc(100*A.angle.yaw)/100} pitch:${Math.trunc(100*A.angle.pitch)/100}`),r.length===0&&r.push("face"),t.fillStyle=l.color;for(let c=r.length-1;c>=0;c--){let _=Math.max(A.box[0],0),h=c*l.lineHeight+A.box[1];l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(r[c],_+5,h+16)),t.fillStyle=l.labelColor,t.fillText(r[c],_+4,h+15)}if(t.lineWidth=1,A.mesh){if(l.drawPoints)for(let c of A.mesh)Ke(t,c[0],c[1],c[2]);if(l.drawPolygons){t.lineWidth=1;for(let c=0;cA.mesh[h]);o0(t,_)}if(A.annotations&&A.annotations.leftEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0])/2,_=Math.abs(A.annotations.leftEyeIris[4][1]-A.annotations.leftEyeIris[2][1])/2;t.ellipse(A.annotations.leftEyeIris[0][0],A.annotations.leftEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}if(A.annotations&&A.annotations.rightEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.rightEyeIris[3][0]-A.annotations.rightEyeIris[1][0])/2,_=Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])/2;t.ellipse(A.annotations.rightEyeIris[0][0],A.annotations.rightEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}}}}}var ie=[];async function Ot(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round";for(let A=0;A_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),c.length===5&&o0(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c)}}}}async function kt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round",t.font=l.font;for(let A of e){if(l.drawBoxes&&(t.strokeStyle=l.color,t.fillStyle=l.color,Nt(t,A.box[0],A.box[1],A.box[2],A.box[3]),l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText("hand",A.box[0]+3,1+A.box[1]+l.lineHeight,A.box[2])),t.fillStyle=l.labelColor,t.fillText("hand",A.box[0]+2,0+A.box[1]+l.lineHeight,A.box[2]),t.stroke()),l.drawPoints&&A.landmarks&&A.landmarks.length>0)for(let r of A.landmarks)t.fillStyle=l.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:l.color,Ke(t,r[0],r[1]);if(l.drawPolygons){let r=c=>{if(!!c)for(let _=0;_0?_-1:0][0],c[_>0?_-1:0][1]),t.lineTo(c[_][0],c[_][1]),t.stroke()};r(A.annotations.indexFinger),r(A.annotations.middleFinger),r(A.annotations.ringFinger),r(A.annotations.pinky),r(A.annotations.thumb)}}}}async function In(n,e){if(!n||!e||!(n instanceof HTMLCanvasElement)||!(e instanceof HTMLCanvasElement))return;let t=n.getContext("2d");t==null||t.drawImage(n,0,0)}async function Zn(n,e){!e||!n||n instanceof HTMLCanvasElement&&(jt(n,e.face),Ot(n,e.body),kt(n,e.hand),Wt(n,e.gesture))}var M=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function be(...n){let e=t=>t&&typeof t=="object";return n.reduce((t,A)=>(Object.keys(A||{}).forEach(r=>{let c=t[r],_=A[r];Array.isArray(c)&&Array.isArray(_)?t[r]=c.concat(..._):e(c)&&e(_)?t[r]=be(c,_):t[r]=_}),t),{})}var De,v,me,ge,Te,ae,k,Ge,Pe,Qe,ve,$e,e1,t1,x0=class{constructor(e={}){De.set(this,void 0);v.set(this,void 0);me.set(this,void 0);ge.set(this,void 0);Te.set(this,void 0);ae.set(this,void 0);k.set(this,(...e)=>{if(!m(this,ge))return;let t=this.tf.engine().state.numTensors,A=m(this,me);ne(this,me,t);let r=t-A;r!==0&&g(...e,r)});Ge.set(this,e=>{if(!m(this,Te))return null;if(!e)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(e instanceof s0.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(t){return"backend not loaded"}return null});Pe.set(this,async(e=!1)=>{if(this.config.backend&&this.config.backend!==""&&e||this.tf.getBackend()!==this.config.backend){let t=M();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&g("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&g("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let A=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&g(`wasm execution: ${A?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),A||g("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&p0();try{await this.tf.setBackend(this.config.backend)}catch(A){g("error: cannot set backend:",this.config.backend,A)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(g("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let A=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&g(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}await this.tf.ready(),m(this,v).backend=Math.trunc(M()-t)}});Qe.set(this,e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(c,_,h,o)=>Math.atan2(o-_,h-c),A=c=>Math.abs(c*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}});ve.set(this,async e=>{var i,y,s,w,f,d,x;let t,A,r,c,_,h=[];this.state="run:face",t=M();let o=await((i=this.models.face)==null?void 0:i.estimateFaces(e,this.config));if(m(this,v).face=Math.trunc(M()-t),!o)return[];for(let b of o){if(m(this,k).call(this,"Get Face"),!b.image||b.image.isDisposedInternal){g("Face object is disposed:",b.image);continue}let Z=m(this,Qe).call(this,b.mesh);m(this,k).call(this,"Start Age:"),this.config.async?A=this.config.face.age.enabled?d1(b.image,this.config):{}:(this.state="run:age",t=M(),A=this.config.face.age.enabled?await d1(b.image,this.config):{},m(this,v).age=Math.trunc(M()-t)),m(this,k).call(this,"Start Gender:"),this.config.async?r=this.config.face.gender.enabled?g1(b.image,this.config):{}:(this.state="run:gender",t=M(),r=this.config.face.gender.enabled?await g1(b.image,this.config):{},m(this,v).gender=Math.trunc(M()-t)),m(this,k).call(this,"Start Emotion:"),this.config.async?c=this.config.face.emotion.enabled?M1(b.image,this.config):{}:(this.state="run:emotion",t=M(),c=this.config.face.emotion.enabled?await M1(b.image,this.config):{},m(this,v).emotion=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),m(this,k).call(this,"Start Embedding:"),this.config.async?_=this.config.face.embedding.enabled?N1(b,this.config):[]:(this.state="run:embedding",t=M(),_=this.config.face.embedding.enabled?await N1(b,this.config):[],m(this,v).embedding=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),this.config.async&&([A,r,c,_]=await Promise.all([A,r,c,_])),m(this,k).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((y=b==null?void 0:b.annotations)==null?void 0:y.leftEyeIris)&&((s=b==null?void 0:b.annotations)==null?void 0:s.rightEyeIris)&&(delete b.annotations.leftEyeIris,delete b.annotations.rightEyeIris);let V=((w=b.annotations)==null?void 0:w.leftEyeIris)&&((f=b.annotations)==null?void 0:f.rightEyeIris)?11.7*Math.max(Math.abs(b.annotations.leftEyeIris[3][0]-b.annotations.leftEyeIris[1][0]),Math.abs(b.annotations.rightEyeIris[4][1]-b.annotations.rightEyeIris[2][1])):0;h.push({...b,age:A.age,gender:r.gender,genderConfidence:r.confidence,emotion:c,embedding:_,iris:V!==0?Math.trunc(V)/100:0,angle:Z,tensor:this.config.face.detector.return?(d=b.image)==null?void 0:d.squeeze():null}),(x=b.image)==null||x.dispose(),m(this,k).call(this,"End Face")}return m(this,k).call(this,"End FaceMesh:"),this.config.async&&(m(this,v).face&&delete m(this,v).face,m(this,v).age&&delete m(this,v).age,m(this,v).gender&&delete m(this,v).gender,m(this,v).emotion&&delete m(this,v).emotion),h});$e.set(this,async()=>{let e=(r,c="application/octet-stream")=>fetch(`data:${c};base64,${r}`).then(_=>_.blob()),t,A;switch(this.config.warmup){case"face":t=await e(Ce);break;case"full":t=await e(Je);break;default:t=null}if(t){let r=await createImageBitmap(t);A=await this.detect(r,this.config),r.close()}return A});e1.set(this,async()=>new Promise(e=>{let t,A=0;switch(this.config.warmup){case"face":A=256,t="data:image/jpeg;base64,"+Ce;break;case"full":case"body":A=1200,t="data:image/jpeg;base64,"+Je;break;default:t=null}let r=new Image;r.onload=async()=>{let c=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(A,A):document.createElement("canvas");c.width=r.naturalWidth,c.height=r.naturalHeight;let _=c.getContext("2d");_==null||_.drawImage(r,0,0);let h=await this.detect(c,this.config);e(h)},t?r.src=t:e(null)}));t1.set(this,async()=>{let e=_=>Buffer.from(_,"base64"),t=this.config.warmup==="face"?e(Ce):e(Je),A=s0.node.decodeJpeg(t),r=A.expandDims(0);this.tf.dispose(A);let c=await this.detect(r,this.config);return this.tf.dispose(r),c});this.tf=s0,this.draw=h0,ne(this,De,c0),this.version=_0,this.config=be(R,e),this.state="idle",ne(this,me,0),ne(this,ge,!1),ne(this,Te,!1),ne(this,ae,!0),ne(this,v,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=t=>A0(t,this.config),this.classes={facemesh:i0,age:w1,gender:f1,emotion:T1,body:this.config.body.modelPath.includes("posenet")?q1:t0,hand:D1},this.sysinfo=f0()}profileData(){return this.config.profile?a1:{}}simmilarity(e,t){return this.config.face.embedding.enabled?R1(e,t):0}enhance(e){return S1(e)}match(e,t,A=0){return j0(e,t,A)}async load(e={}){this.state="load";let t=M();e&&(this.config=be(this.config,e)),m(this,ae)&&(this.config.debug&&g(`version: ${this.version}`),this.config.debug&&g(`tfjs version: ${this.tf.version_core}`),this.config.debug&&g("platform:",this.sysinfo.platform),this.config.debug&&g("agent:",this.sysinfo.agent),await m(this,Pe).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&g("configuration:",this.config),this.config.debug&&g("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?i0.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?l1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?b1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?z1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?E1(this.config):null),this.models.handpose||(this.config.hand.enabled?e0(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?B1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?n0(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await i0.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await l1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await b1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await z1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await E1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await e0(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await B1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await n0(this.config))),m(this,ae)&&(this.config.debug&&g("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ne(this,ae,!1));let A=Math.trunc(M()-t);A>(m(this,v).load||0)&&(m(this,v).load=A)}async detect(e,t={}){return new Promise(async A=>{var w,f,d,x;this.state="config";let r;this.config=be(this.config,t),this.state="check";let c=m(this,Ge).call(this,e);c&&(g(c,e),A({error:c}));let _=M();await m(this,Pe).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),m(this,k).call(this,"Start Scope:"),r=M();let h=A0(e,this.config);if(!h||!h.tensor){g("could not convert input to tensor"),A({error:"could not convert input to tensor"});return}m(this,v).image=Math.trunc(M()-r),m(this,k).call(this,"Get Image:");let o,i,y;this.config.async?(y=this.config.face.enabled?m(this,ve).call(this,h.tensor):[],m(this,v).face&&delete m(this,v).face):(this.state="run:face",r=M(),y=this.config.face.enabled?await m(this,ve).call(this,h.tensor):[],m(this,v).face=Math.trunc(M()-r)),m(this,k).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?(w=this.models.posenet)==null?void 0:w.estimatePoses(h.tensor,this.config):[]:o=this.config.body.enabled?r0(h.tensor,this.config):[],m(this,v).body&&delete m(this,v).body):(this.state="run:body",r=M(),this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?await((f=this.models.posenet)==null?void 0:f.estimatePoses(h.tensor,this.config)):[]:o=this.config.body.enabled?await r0(h.tensor,this.config):[],m(this,v).body=Math.trunc(M()-r)),m(this,k).call(this,"End Body:"),m(this,k).call(this,"Start Hand:"),this.config.async?(i=this.config.hand.enabled?(d=this.models.handpose)==null?void 0:d.estimateHands(h.tensor,this.config):[],m(this,v).hand&&delete m(this,v).hand):(this.state="run:hand",r=M(),i=this.config.hand.enabled?await((x=this.models.handpose)==null?void 0:x.estimateHands(h.tensor,this.config)):[],m(this,v).hand=Math.trunc(M()-r)),m(this,k).call(this,"End Hand:"),this.config.async&&([y,o,i]=await Promise.all([y,o,i])),h.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),m(this,k).call(this,"End Scope:");let s=[];this.config.gesture.enabled&&(r=M(),s=[...xt(y),...it(o),...at(i),...yt(y)],this.config.async?m(this,v).gesture&&delete m(this,v).gesture:m(this,v).gesture=Math.trunc(M()-r)),m(this,v).total=Math.trunc(M()-_),this.state="idle",A({face:y,body:o,hand:i,gesture:s,performance:m(this,v),canvas:h.canvas})})}async warmup(e={}){let t=M();e&&(this.config=be(this.config,e));let A=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await m(this,$e).call(this):typeof Image!="undefined"?r=await m(this,e1).call(this):r=await m(this,t1).call(this),this.config.videoOptimized=A;let c=M();return this.config.debug&&g("Warmup",this.config.warmup,Math.round(c-t),"ms",r),r}};De=new WeakMap,v=new WeakMap,me=new WeakMap,ge=new WeakMap,Te=new WeakMap,ae=new WeakMap,k=new WeakMap,Ge=new WeakMap,Pe=new WeakMap,Qe=new WeakMap,ve=new WeakMap,$e=new WeakMap,e1=new WeakMap,t1=new WeakMap;0&&(module.exports={Human}); //# sourceMappingURL=human.node-gpu.js.map diff --git a/dist/human.node.js b/dist/human.node.js index 1830c695..cc4851e3 100644 --- a/dist/human.node.js +++ b/dist/human.node.js @@ -731,5 +731,5 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var c0={};U(c0,{author:()=>gt,browser:()=>pt,bugs:()=>Tt,default:()=>kn,description:()=>dt,devDependencies:()=>St,engines:()=>zt,homepage:()=>Pt,keywords:()=>Rt,license:()=>vt,main:()=>mt,module:()=>ut,name:()=>lt,repository:()=>Mt,scripts:()=>Et,sideEffects:()=>ft,types:()=>bt,version:()=>_0});var lt="@vladmandic/human",_0="1.1.6",dt="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",ft=!1,mt="dist/human.node.js",ut="dist/human.esm.js",pt="dist/human.esm.js",bt="types/src/human.d.ts",gt="Vladimir Mandic ",Tt={url:"https://github.com/vladmandic/human/issues"},Pt="https://vladmandic.github.io/human/demo/index.html",vt="MIT",zt={node:">=12.0.0"},Mt={type:"git",url:"git+https://github.com/vladmandic/human.git"},Et={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},Rt=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],St={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.35","@typescript-eslint/eslint-plugin":"^4.18.0","@typescript-eslint/parser":"^4.18.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2",seedrandom:"^3.0.5","simple-git":"^2.37.0",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},kn={name:lt,version:_0,description:dt,sideEffects:ft,main:mt,module:ut,browser:pt,types:bt,author:gt,bugs:Tt,homepage:Pt,license:vt,engines:zt,repository:Mt,scripts:Et,keywords:Rt,devDependencies:St};var h0={};U(h0,{all:()=>Zn,body:()=>Ot,canvas:()=>In,drawOptions:()=>l,face:()=>jt,gesture:()=>Wt,hand:()=>kt});var l={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function Ke(n,e,t,A=null){n.fillStyle=l.useDepth&&A?`rgba(${127.5+2*(A||0)}, ${127.5-2*(A||0)}, 255, 0.3)`:l.color,n.beginPath(),n.arc(e,t,l.pointSize,0,2*Math.PI),n.fill()}function Nt(n,e,t,A,r){if(n.beginPath(),l.useCurves){let c=(e+e+A)/2,_=(t+t+r)/2;n.ellipse(c,_,A/2,r/2,0,0,2*Math.PI)}else n.lineWidth=l.lineWidth,n.moveTo(e+l.roundRect,t),n.lineTo(e+A-l.roundRect,t),n.quadraticCurveTo(e+A,t,e+A,t+l.roundRect),n.lineTo(e+A,t+r-l.roundRect),n.quadraticCurveTo(e+A,t+r,e+A-l.roundRect,t+r),n.lineTo(e+l.roundRect,t+r),n.quadraticCurveTo(e,t+r,e,t+r-l.roundRect),n.lineTo(e,t+l.roundRect),n.quadraticCurveTo(e,t,e+l.roundRect,t),n.closePath();n.stroke()}function o0(n,e=[]){if(!(e===void 0||e.length===0)){n.beginPath(),n.moveTo(e[0][0],e[0][1]);for(let t of e)n.strokeStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.fillStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.lineTo(t[0],parseInt(t[1]));n.stroke(),l.fillPolygons&&(n.closePath(),n.fill())}}function Ue(n,e=[]){if(!(e===void 0||e.length===0)){if(!l.useCurves||e.length<=2){o0(n,e);return}n.moveTo(e[0][0],e[0][1]);for(let t=0;t1&&_[1].length>0){let h=c[1]>0?`#${c[1]}`:"",o=`${c[0]} ${h}: ${_[1]}`;l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(o,8,2+A*l.lineHeight)),t.fillStyle=l.labelColor,t.fillText(o,6,0+A*l.lineHeight),A+=1}}}async function jt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t)for(let A of e){t.font=l.font,t.strokeStyle=l.color,t.fillStyle=l.color,l.drawBoxes&&Nt(t,A.box[0],A.box[1],A.box[2],A.box[3]);let r=[];if(r.push(`face confidence: ${Math.trunc(100*A.confidence)}%`),A.genderConfidence&&r.push(`${A.gender||""} ${Math.trunc(100*A.genderConfidence)}% confident`),A.age&&r.push(`age: ${A.age||""}`),A.iris&&r.push(`iris distance: ${A.iris}`),A.emotion&&A.emotion.length>0){let c=A.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(c.join(" "))}A.angle&&A.angle.roll&&r.push(`roll: ${Math.trunc(100*A.angle.roll)/100} yaw:${Math.trunc(100*A.angle.yaw)/100} pitch:${Math.trunc(100*A.angle.pitch)/100}`),r.length===0&&r.push("face"),t.fillStyle=l.color;for(let c=r.length-1;c>=0;c--){let _=Math.max(A.box[0],0),h=c*l.lineHeight+A.box[1];l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(r[c],_+5,h+16)),t.fillStyle=l.labelColor,t.fillText(r[c],_+4,h+15)}if(t.lineWidth=1,A.mesh){if(l.drawPoints)for(let c of A.mesh)Ke(t,c[0],c[1],c[2]);if(l.drawPolygons){t.lineWidth=1;for(let c=0;cA.mesh[h]);o0(t,_)}if(A.annotations&&A.annotations.leftEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0])/2,_=Math.abs(A.annotations.leftEyeIris[4][1]-A.annotations.leftEyeIris[2][1])/2;t.ellipse(A.annotations.leftEyeIris[0][0],A.annotations.leftEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}if(A.annotations&&A.annotations.rightEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.rightEyeIris[3][0]-A.annotations.rightEyeIris[1][0])/2,_=Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])/2;t.ellipse(A.annotations.rightEyeIris[0][0],A.annotations.rightEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}}}}}var ie=[];async function Ot(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round";for(let A=0;A_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),c.length===5&&o0(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c)}}}}async function kt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round",t.font=l.font;for(let A of e){if(l.drawBoxes&&(t.strokeStyle=l.color,t.fillStyle=l.color,Nt(t,A.box[0],A.box[1],A.box[2],A.box[3]),l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText("hand",A.box[0]+3,1+A.box[1]+l.lineHeight,A.box[2])),t.fillStyle=l.labelColor,t.fillText("hand",A.box[0]+2,0+A.box[1]+l.lineHeight,A.box[2]),t.stroke()),l.drawPoints&&A.landmarks&&A.landmarks.length>0)for(let r of A.landmarks)t.fillStyle=l.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:l.color,Ke(t,r[0],r[1]);if(l.drawPolygons){let r=c=>{if(!!c)for(let _=0;_0?_-1:0][0],c[_>0?_-1:0][1]),t.lineTo(c[_][0],c[_][1]),t.stroke()};r(A.annotations.indexFinger),r(A.annotations.middleFinger),r(A.annotations.ringFinger),r(A.annotations.pinky),r(A.annotations.thumb)}}}}async function In(n,e){if(!n||!e||!(n instanceof HTMLCanvasElement)||!(e instanceof HTMLCanvasElement))return;let t=n.getContext("2d");t==null||t.drawImage(n,0,0)}async function Zn(n,e){!e||!n||n instanceof HTMLCanvasElement&&(jt(n,e.face),Ot(n,e.body),kt(n,e.hand),Wt(n,e.gesture))}var M=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function be(...n){let e=t=>t&&typeof t=="object";return n.reduce((t,A)=>(Object.keys(A||{}).forEach(r=>{let c=t[r],_=A[r];Array.isArray(c)&&Array.isArray(_)?t[r]=c.concat(..._):e(c)&&e(_)?t[r]=be(c,_):t[r]=_}),t),{})}var De,v,me,ge,Te,ae,k,Ge,Pe,Qe,ve,$e,e1,t1,x0=class{constructor(e={}){De.set(this,void 0);v.set(this,void 0);me.set(this,void 0);ge.set(this,void 0);Te.set(this,void 0);ae.set(this,void 0);k.set(this,(...e)=>{if(!m(this,ge))return;let t=this.tf.engine().state.numTensors,A=m(this,me);ne(this,me,t);let r=t-A;r!==0&&g(...e,r)});Ge.set(this,e=>{if(!m(this,Te))return null;if(!e)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(e instanceof s0.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(t){return"backend not loaded"}return null});Pe.set(this,async(e=!1)=>{if(this.config.backend&&this.config.backend!==""&&e||this.tf.getBackend()!==this.config.backend){let t=M();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&g("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&g("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let A=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&g(`wasm execution: ${A?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),A||g("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&p0();try{await this.tf.setBackend(this.config.backend)}catch(A){g("error: cannot set backend:",this.config.backend,A)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(g("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let A=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&g(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}await this.tf.ready(),m(this,v).backend=Math.trunc(M()-t)}});Qe.set(this,e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(c,_,h,o)=>Math.atan2(o-_,h-c),A=c=>Math.abs(c*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}});ve.set(this,async e=>{var i,y,s,w,f,d,x;let t,A,r,c,_,h=[];this.state="run:face",t=M();let o=await((i=this.models.face)==null?void 0:i.estimateFaces(e,this.config));if(m(this,v).face=Math.trunc(M()-t),!o)return[];for(let b of o){if(m(this,k).call(this,"Get Face"),!b.image||b.image.isDisposedInternal){g("Face object is disposed:",b.image);continue}let Z=m(this,Qe).call(this,b.mesh);m(this,k).call(this,"Start Age:"),this.config.async?A=this.config.face.age.enabled?d1(b.image,this.config):{}:(this.state="run:age",t=M(),A=this.config.face.age.enabled?await d1(b.image,this.config):{},m(this,v).age=Math.trunc(M()-t)),m(this,k).call(this,"Start Gender:"),this.config.async?r=this.config.face.gender.enabled?g1(b.image,this.config):{}:(this.state="run:gender",t=M(),r=this.config.face.gender.enabled?await g1(b.image,this.config):{},m(this,v).gender=Math.trunc(M()-t)),m(this,k).call(this,"Start Emotion:"),this.config.async?c=this.config.face.emotion.enabled?M1(b.image,this.config):{}:(this.state="run:emotion",t=M(),c=this.config.face.emotion.enabled?await M1(b.image,this.config):{},m(this,v).emotion=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),m(this,k).call(this,"Start Embedding:"),this.config.async?_=this.config.face.embedding.enabled?N1(b,this.config):[]:(this.state="run:embedding",t=M(),_=this.config.face.embedding.enabled?await N1(b,this.config):[],m(this,v).embedding=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),this.config.async&&([A,r,c,_]=await Promise.all([A,r,c,_])),m(this,k).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((y=b==null?void 0:b.annotations)==null?void 0:y.leftEyeIris)&&((s=b==null?void 0:b.annotations)==null?void 0:s.rightEyeIris)&&(delete b.annotations.leftEyeIris,delete b.annotations.rightEyeIris);let V=((w=b.annotations)==null?void 0:w.leftEyeIris)&&((f=b.annotations)==null?void 0:f.rightEyeIris)?11.7*Math.max(Math.abs(b.annotations.leftEyeIris[3][0]-b.annotations.leftEyeIris[1][0]),Math.abs(b.annotations.rightEyeIris[4][1]-b.annotations.rightEyeIris[2][1])):0;h.push({...b,age:A.age,gender:r.gender,genderConfidence:r.confidence,emotion:c,embedding:_,iris:V!==0?Math.trunc(V)/100:0,angle:Z,tensor:this.config.face.detector.return?(d=b.image)==null?void 0:d.squeeze():null}),(x=b.image)==null||x.dispose(),m(this,k).call(this,"End Face")}return m(this,k).call(this,"End FaceMesh:"),this.config.async&&(m(this,v).face&&delete m(this,v).face,m(this,v).age&&delete m(this,v).age,m(this,v).gender&&delete m(this,v).gender,m(this,v).emotion&&delete m(this,v).emotion),h});$e.set(this,async()=>{let e=(r,c="application/octet-stream")=>fetch(`data:${c};base64,${r}`).then(_=>_.blob()),t,A;switch(this.config.warmup){case"face":t=await e(Ce);break;case"full":t=await e(Je);break;default:t=null}if(t){let r=await createImageBitmap(t);A=await this.detect(r,this.config),r.close()}return A});e1.set(this,async()=>new Promise(e=>{let t,A=0;switch(this.config.warmup){case"face":A=256,t="data:image/jpeg;base64,"+Ce;break;case"full":case"body":A=1200,t="data:image/jpeg;base64,"+Je;break;default:t=null}let r=new Image;r.onload=async()=>{let c=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(A,A):document.createElement("canvas");c.width=r.naturalWidth,c.height=r.naturalHeight;let _=c.getContext("2d");_==null||_.drawImage(r,0,0);let h=await this.detect(c,this.config);e(h)},t?r.src=t:e(null)}));t1.set(this,async()=>{let e=_=>Buffer.from(_,"base64"),t=this.config.warmup==="face"?e(Ce):e(Je),A=s0.node.decodeJpeg(t),r=A.expandDims(0);this.tf.dispose(A);let c=await this.detect(r,this.config);return this.tf.dispose(r),c});this.tf=s0,this.draw=h0,ne(this,De,c0),this.version=_0,this.config=be(R,e),this.state="idle",ne(this,me,0),ne(this,ge,!1),ne(this,Te,!1),ne(this,ae,!0),ne(this,v,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=t=>A0(t,this.config),this.classes={facemesh:i0,age:w1,gender:f1,emotion:T1,body:this.config.body.modelPath.includes("posenet")?q1:t0,hand:D1},this.sysinfo=f0()}profileData(){return this.config.profile?a1:{}}simmilarity(e,t){return this.config.face.embedding.enabled?R1(e,t):0}enhance(e){return S1(e)}match(e,t,A=0){return j0(e,t,A)}async load(e={}){this.state="load";let t=M();e&&(this.config=be(this.config,e)),m(this,ae)&&(this.config.debug&&g(`version: ${this.version}`),this.config.debug&&g(`tfjs version: ${this.tf.version_core}`),this.config.debug&&g("platform:",this.sysinfo.platform),this.config.debug&&g("agent:",this.sysinfo.agent),await m(this,Pe).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&g("configuration:",this.config),this.config.debug&&g("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?i0.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?l1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?b1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?z1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?E1(this.config):null),this.models.handpose||(this.config.hand.enabled?e0(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?B1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?n0(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await i0.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await l1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await b1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await z1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await E1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await e0(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await B1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await n0(this.config))),m(this,ae)&&(this.config.debug&&g("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ne(this,ae,!1));let A=Math.trunc(M()-t);A>(m(this,v).load||0)&&(m(this,v).load=A)}async detect(e,t={}){return new Promise(async A=>{var w,f,d,x;this.state="config";let r;this.config=be(this.config,t),this.state="check";let c=m(this,Ge).call(this,e);c&&(g(c,e),A({error:c}));let _=M();await m(this,Pe).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),m(this,k).call(this,"Start Scope:"),r=M();let h=A0(e,this.config);if(!h||!h.tensor){g("could not convert input to tensor"),A({error:"could not convert input to tensor"});return}m(this,v).image=Math.trunc(M()-r),m(this,k).call(this,"Get Image:");let o,i,y;this.config.async?(y=this.config.face.enabled?m(this,ve).call(this,h.tensor):[],m(this,v).face&&delete m(this,v).face):(this.state="run:face",r=M(),y=this.config.face.enabled?await m(this,ve).call(this,h.tensor):[],m(this,v).face=Math.trunc(M()-r)),m(this,k).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?(w=this.models.posenet)==null?void 0:w.estimatePoses(h.tensor,this.config):[]:o=this.config.body.enabled?r0(h.tensor,this.config):[],m(this,v).body&&delete m(this,v).body):(this.state="run:body",r=M(),this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?await((f=this.models.posenet)==null?void 0:f.estimatePoses(h.tensor,this.config)):[]:o=this.config.body.enabled?await r0(h.tensor,this.config):[],m(this,v).body=Math.trunc(M()-r)),m(this,k).call(this,"End Body:"),m(this,k).call(this,"Start Hand:"),this.config.async?(i=this.config.hand.enabled?(d=this.models.handpose)==null?void 0:d.estimateHands(h.tensor,this.config):[],m(this,v).hand&&delete m(this,v).hand):(this.state="run:hand",r=M(),i=this.config.hand.enabled?await((x=this.models.handpose)==null?void 0:x.estimateHands(h.tensor,this.config)):[],m(this,v).hand=Math.trunc(M()-r)),m(this,k).call(this,"End Hand:"),this.config.async&&([y,o,i]=await Promise.all([y,o,i])),h.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),m(this,k).call(this,"End Scope:");let s=[];this.config.gesture.enabled&&(r=M(),s=[...xt(y),...it(o),...at(i),...yt(y)],this.config.async?m(this,v).gesture&&delete m(this,v).gesture:m(this,v).gesture=Math.trunc(M()-r)),m(this,v).total=Math.trunc(M()-_),this.state="idle",A({face:y,body:o,hand:i,gesture:s,performance:m(this,v),canvas:h.canvas})})}async warmup(e={}){let t=M();e&&(this.config=be(this.config,e));let A=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await m(this,$e).call(this):typeof Image!="undefined"?r=await m(this,e1).call(this):r=await m(this,t1).call(this),this.config.videoOptimized=A;let c=M();return this.config.debug&&g("Warmup",this.config.warmup,Math.round(c-t),"ms",r),r}};De=new WeakMap,v=new WeakMap,me=new WeakMap,ge=new WeakMap,Te=new WeakMap,ae=new WeakMap,k=new WeakMap,Ge=new WeakMap,Pe=new WeakMap,Qe=new WeakMap,ve=new WeakMap,$e=new WeakMap,e1=new WeakMap,t1=new WeakMap;0&&(module.exports={Human}); +2Q==`;var c0={};U(c0,{author:()=>gt,browser:()=>pt,bugs:()=>Tt,default:()=>kn,description:()=>dt,devDependencies:()=>St,engines:()=>zt,homepage:()=>Pt,keywords:()=>Rt,license:()=>vt,main:()=>mt,module:()=>ut,name:()=>lt,repository:()=>Mt,scripts:()=>Et,sideEffects:()=>ft,types:()=>bt,version:()=>_0});var lt="@vladmandic/human",_0="1.1.7",dt="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",ft=!1,mt="dist/human.node.js",ut="dist/human.esm.js",pt="dist/human.esm.js",bt="types/src/human.d.ts",gt="Vladimir Mandic ",Tt={url:"https://github.com/vladmandic/human/issues"},Pt="https://vladmandic.github.io/human/demo/index.html",vt="MIT",zt={node:">=12.0.0"},Mt={type:"git",url:"git+https://github.com/vladmandic/human.git"},Et={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},Rt=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],St={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.35","@typescript-eslint/eslint-plugin":"^4.18.0","@typescript-eslint/parser":"^4.18.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.3",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2",seedrandom:"^3.0.5","simple-git":"^2.37.0",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},kn={name:lt,version:_0,description:dt,sideEffects:ft,main:mt,module:ut,browser:pt,types:bt,author:gt,bugs:Tt,homepage:Pt,license:vt,engines:zt,repository:Mt,scripts:Et,keywords:Rt,devDependencies:St};var h0={};U(h0,{all:()=>Zn,body:()=>Ot,canvas:()=>In,drawOptions:()=>l,face:()=>jt,gesture:()=>Wt,hand:()=>kt});var l={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function Ke(n,e,t,A=null){n.fillStyle=l.useDepth&&A?`rgba(${127.5+2*(A||0)}, ${127.5-2*(A||0)}, 255, 0.3)`:l.color,n.beginPath(),n.arc(e,t,l.pointSize,0,2*Math.PI),n.fill()}function Nt(n,e,t,A,r){if(n.beginPath(),l.useCurves){let c=(e+e+A)/2,_=(t+t+r)/2;n.ellipse(c,_,A/2,r/2,0,0,2*Math.PI)}else n.lineWidth=l.lineWidth,n.moveTo(e+l.roundRect,t),n.lineTo(e+A-l.roundRect,t),n.quadraticCurveTo(e+A,t,e+A,t+l.roundRect),n.lineTo(e+A,t+r-l.roundRect),n.quadraticCurveTo(e+A,t+r,e+A-l.roundRect,t+r),n.lineTo(e+l.roundRect,t+r),n.quadraticCurveTo(e,t+r,e,t+r-l.roundRect),n.lineTo(e,t+l.roundRect),n.quadraticCurveTo(e,t,e+l.roundRect,t),n.closePath();n.stroke()}function o0(n,e=[]){if(!(e===void 0||e.length===0)){n.beginPath(),n.moveTo(e[0][0],e[0][1]);for(let t of e)n.strokeStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.fillStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.lineTo(t[0],parseInt(t[1]));n.stroke(),l.fillPolygons&&(n.closePath(),n.fill())}}function Ue(n,e=[]){if(!(e===void 0||e.length===0)){if(!l.useCurves||e.length<=2){o0(n,e);return}n.moveTo(e[0][0],e[0][1]);for(let t=0;t1&&_[1].length>0){let h=c[1]>0?`#${c[1]}`:"",o=`${c[0]} ${h}: ${_[1]}`;l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(o,8,2+A*l.lineHeight)),t.fillStyle=l.labelColor,t.fillText(o,6,0+A*l.lineHeight),A+=1}}}async function jt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t)for(let A of e){t.font=l.font,t.strokeStyle=l.color,t.fillStyle=l.color,l.drawBoxes&&Nt(t,A.box[0],A.box[1],A.box[2],A.box[3]);let r=[];if(r.push(`face confidence: ${Math.trunc(100*A.confidence)}%`),A.genderConfidence&&r.push(`${A.gender||""} ${Math.trunc(100*A.genderConfidence)}% confident`),A.age&&r.push(`age: ${A.age||""}`),A.iris&&r.push(`iris distance: ${A.iris}`),A.emotion&&A.emotion.length>0){let c=A.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(c.join(" "))}A.angle&&A.angle.roll&&r.push(`roll: ${Math.trunc(100*A.angle.roll)/100} yaw:${Math.trunc(100*A.angle.yaw)/100} pitch:${Math.trunc(100*A.angle.pitch)/100}`),r.length===0&&r.push("face"),t.fillStyle=l.color;for(let c=r.length-1;c>=0;c--){let _=Math.max(A.box[0],0),h=c*l.lineHeight+A.box[1];l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(r[c],_+5,h+16)),t.fillStyle=l.labelColor,t.fillText(r[c],_+4,h+15)}if(t.lineWidth=1,A.mesh){if(l.drawPoints)for(let c of A.mesh)Ke(t,c[0],c[1],c[2]);if(l.drawPolygons){t.lineWidth=1;for(let c=0;cA.mesh[h]);o0(t,_)}if(A.annotations&&A.annotations.leftEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0])/2,_=Math.abs(A.annotations.leftEyeIris[4][1]-A.annotations.leftEyeIris[2][1])/2;t.ellipse(A.annotations.leftEyeIris[0][0],A.annotations.leftEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}if(A.annotations&&A.annotations.rightEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.rightEyeIris[3][0]-A.annotations.rightEyeIris[1][0])/2,_=Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])/2;t.ellipse(A.annotations.rightEyeIris[0][0],A.annotations.rightEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}}}}}var ie=[];async function Ot(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round";for(let A=0;A_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),c.length===5&&o0(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c)}}}}async function kt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round",t.font=l.font;for(let A of e){if(l.drawBoxes&&(t.strokeStyle=l.color,t.fillStyle=l.color,Nt(t,A.box[0],A.box[1],A.box[2],A.box[3]),l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText("hand",A.box[0]+3,1+A.box[1]+l.lineHeight,A.box[2])),t.fillStyle=l.labelColor,t.fillText("hand",A.box[0]+2,0+A.box[1]+l.lineHeight,A.box[2]),t.stroke()),l.drawPoints&&A.landmarks&&A.landmarks.length>0)for(let r of A.landmarks)t.fillStyle=l.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:l.color,Ke(t,r[0],r[1]);if(l.drawPolygons){let r=c=>{if(!!c)for(let _=0;_0?_-1:0][0],c[_>0?_-1:0][1]),t.lineTo(c[_][0],c[_][1]),t.stroke()};r(A.annotations.indexFinger),r(A.annotations.middleFinger),r(A.annotations.ringFinger),r(A.annotations.pinky),r(A.annotations.thumb)}}}}async function In(n,e){if(!n||!e||!(n instanceof HTMLCanvasElement)||!(e instanceof HTMLCanvasElement))return;let t=n.getContext("2d");t==null||t.drawImage(n,0,0)}async function Zn(n,e){!e||!n||n instanceof HTMLCanvasElement&&(jt(n,e.face),Ot(n,e.body),kt(n,e.hand),Wt(n,e.gesture))}var M=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function be(...n){let e=t=>t&&typeof t=="object";return n.reduce((t,A)=>(Object.keys(A||{}).forEach(r=>{let c=t[r],_=A[r];Array.isArray(c)&&Array.isArray(_)?t[r]=c.concat(..._):e(c)&&e(_)?t[r]=be(c,_):t[r]=_}),t),{})}var De,v,me,ge,Te,ae,k,Ge,Pe,Qe,ve,$e,e1,t1,x0=class{constructor(e={}){De.set(this,void 0);v.set(this,void 0);me.set(this,void 0);ge.set(this,void 0);Te.set(this,void 0);ae.set(this,void 0);k.set(this,(...e)=>{if(!m(this,ge))return;let t=this.tf.engine().state.numTensors,A=m(this,me);ne(this,me,t);let r=t-A;r!==0&&g(...e,r)});Ge.set(this,e=>{if(!m(this,Te))return null;if(!e)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(e instanceof s0.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(t){return"backend not loaded"}return null});Pe.set(this,async(e=!1)=>{if(this.config.backend&&this.config.backend!==""&&e||this.tf.getBackend()!==this.config.backend){let t=M();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&g("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&g("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let A=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&g(`wasm execution: ${A?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),A||g("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&p0();try{await this.tf.setBackend(this.config.backend)}catch(A){g("error: cannot set backend:",this.config.backend,A)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(g("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let A=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&g(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}await this.tf.ready(),m(this,v).backend=Math.trunc(M()-t)}});Qe.set(this,e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(c,_,h,o)=>Math.atan2(o-_,h-c),A=c=>Math.abs(c*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}});ve.set(this,async e=>{var i,y,s,w,f,d,x;let t,A,r,c,_,h=[];this.state="run:face",t=M();let o=await((i=this.models.face)==null?void 0:i.estimateFaces(e,this.config));if(m(this,v).face=Math.trunc(M()-t),!o)return[];for(let b of o){if(m(this,k).call(this,"Get Face"),!b.image||b.image.isDisposedInternal){g("Face object is disposed:",b.image);continue}let Z=m(this,Qe).call(this,b.mesh);m(this,k).call(this,"Start Age:"),this.config.async?A=this.config.face.age.enabled?d1(b.image,this.config):{}:(this.state="run:age",t=M(),A=this.config.face.age.enabled?await d1(b.image,this.config):{},m(this,v).age=Math.trunc(M()-t)),m(this,k).call(this,"Start Gender:"),this.config.async?r=this.config.face.gender.enabled?g1(b.image,this.config):{}:(this.state="run:gender",t=M(),r=this.config.face.gender.enabled?await g1(b.image,this.config):{},m(this,v).gender=Math.trunc(M()-t)),m(this,k).call(this,"Start Emotion:"),this.config.async?c=this.config.face.emotion.enabled?M1(b.image,this.config):{}:(this.state="run:emotion",t=M(),c=this.config.face.emotion.enabled?await M1(b.image,this.config):{},m(this,v).emotion=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),m(this,k).call(this,"Start Embedding:"),this.config.async?_=this.config.face.embedding.enabled?N1(b,this.config):[]:(this.state="run:embedding",t=M(),_=this.config.face.embedding.enabled?await N1(b,this.config):[],m(this,v).embedding=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),this.config.async&&([A,r,c,_]=await Promise.all([A,r,c,_])),m(this,k).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((y=b==null?void 0:b.annotations)==null?void 0:y.leftEyeIris)&&((s=b==null?void 0:b.annotations)==null?void 0:s.rightEyeIris)&&(delete b.annotations.leftEyeIris,delete b.annotations.rightEyeIris);let V=((w=b.annotations)==null?void 0:w.leftEyeIris)&&((f=b.annotations)==null?void 0:f.rightEyeIris)?11.7*Math.max(Math.abs(b.annotations.leftEyeIris[3][0]-b.annotations.leftEyeIris[1][0]),Math.abs(b.annotations.rightEyeIris[4][1]-b.annotations.rightEyeIris[2][1])):0;h.push({...b,age:A.age,gender:r.gender,genderConfidence:r.confidence,emotion:c,embedding:_,iris:V!==0?Math.trunc(V)/100:0,angle:Z,tensor:this.config.face.detector.return?(d=b.image)==null?void 0:d.squeeze():null}),(x=b.image)==null||x.dispose(),m(this,k).call(this,"End Face")}return m(this,k).call(this,"End FaceMesh:"),this.config.async&&(m(this,v).face&&delete m(this,v).face,m(this,v).age&&delete m(this,v).age,m(this,v).gender&&delete m(this,v).gender,m(this,v).emotion&&delete m(this,v).emotion),h});$e.set(this,async()=>{let e=(r,c="application/octet-stream")=>fetch(`data:${c};base64,${r}`).then(_=>_.blob()),t,A;switch(this.config.warmup){case"face":t=await e(Ce);break;case"full":t=await e(Je);break;default:t=null}if(t){let r=await createImageBitmap(t);A=await this.detect(r,this.config),r.close()}return A});e1.set(this,async()=>new Promise(e=>{let t,A=0;switch(this.config.warmup){case"face":A=256,t="data:image/jpeg;base64,"+Ce;break;case"full":case"body":A=1200,t="data:image/jpeg;base64,"+Je;break;default:t=null}let r=new Image;r.onload=async()=>{let c=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(A,A):document.createElement("canvas");c.width=r.naturalWidth,c.height=r.naturalHeight;let _=c.getContext("2d");_==null||_.drawImage(r,0,0);let h=await this.detect(c,this.config);e(h)},t?r.src=t:e(null)}));t1.set(this,async()=>{let e=_=>Buffer.from(_,"base64"),t=this.config.warmup==="face"?e(Ce):e(Je),A=s0.node.decodeJpeg(t),r=A.expandDims(0);this.tf.dispose(A);let c=await this.detect(r,this.config);return this.tf.dispose(r),c});this.tf=s0,this.draw=h0,ne(this,De,c0),this.version=_0,this.config=be(R,e),this.state="idle",ne(this,me,0),ne(this,ge,!1),ne(this,Te,!1),ne(this,ae,!0),ne(this,v,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=t=>A0(t,this.config),this.classes={facemesh:i0,age:w1,gender:f1,emotion:T1,body:this.config.body.modelPath.includes("posenet")?q1:t0,hand:D1},this.sysinfo=f0()}profileData(){return this.config.profile?a1:{}}simmilarity(e,t){return this.config.face.embedding.enabled?R1(e,t):0}enhance(e){return S1(e)}match(e,t,A=0){return j0(e,t,A)}async load(e={}){this.state="load";let t=M();e&&(this.config=be(this.config,e)),m(this,ae)&&(this.config.debug&&g(`version: ${this.version}`),this.config.debug&&g(`tfjs version: ${this.tf.version_core}`),this.config.debug&&g("platform:",this.sysinfo.platform),this.config.debug&&g("agent:",this.sysinfo.agent),await m(this,Pe).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&g("configuration:",this.config),this.config.debug&&g("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?i0.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?l1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?b1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?z1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?E1(this.config):null),this.models.handpose||(this.config.hand.enabled?e0(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?B1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?n0(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await i0.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await l1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await b1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await z1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await E1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await e0(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await B1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await n0(this.config))),m(this,ae)&&(this.config.debug&&g("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ne(this,ae,!1));let A=Math.trunc(M()-t);A>(m(this,v).load||0)&&(m(this,v).load=A)}async detect(e,t={}){return new Promise(async A=>{var w,f,d,x;this.state="config";let r;this.config=be(this.config,t),this.state="check";let c=m(this,Ge).call(this,e);c&&(g(c,e),A({error:c}));let _=M();await m(this,Pe).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),m(this,k).call(this,"Start Scope:"),r=M();let h=A0(e,this.config);if(!h||!h.tensor){g("could not convert input to tensor"),A({error:"could not convert input to tensor"});return}m(this,v).image=Math.trunc(M()-r),m(this,k).call(this,"Get Image:");let o,i,y;this.config.async?(y=this.config.face.enabled?m(this,ve).call(this,h.tensor):[],m(this,v).face&&delete m(this,v).face):(this.state="run:face",r=M(),y=this.config.face.enabled?await m(this,ve).call(this,h.tensor):[],m(this,v).face=Math.trunc(M()-r)),m(this,k).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?(w=this.models.posenet)==null?void 0:w.estimatePoses(h.tensor,this.config):[]:o=this.config.body.enabled?r0(h.tensor,this.config):[],m(this,v).body&&delete m(this,v).body):(this.state="run:body",r=M(),this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?await((f=this.models.posenet)==null?void 0:f.estimatePoses(h.tensor,this.config)):[]:o=this.config.body.enabled?await r0(h.tensor,this.config):[],m(this,v).body=Math.trunc(M()-r)),m(this,k).call(this,"End Body:"),m(this,k).call(this,"Start Hand:"),this.config.async?(i=this.config.hand.enabled?(d=this.models.handpose)==null?void 0:d.estimateHands(h.tensor,this.config):[],m(this,v).hand&&delete m(this,v).hand):(this.state="run:hand",r=M(),i=this.config.hand.enabled?await((x=this.models.handpose)==null?void 0:x.estimateHands(h.tensor,this.config)):[],m(this,v).hand=Math.trunc(M()-r)),m(this,k).call(this,"End Hand:"),this.config.async&&([y,o,i]=await Promise.all([y,o,i])),h.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),m(this,k).call(this,"End Scope:");let s=[];this.config.gesture.enabled&&(r=M(),s=[...xt(y),...it(o),...at(i),...yt(y)],this.config.async?m(this,v).gesture&&delete m(this,v).gesture:m(this,v).gesture=Math.trunc(M()-r)),m(this,v).total=Math.trunc(M()-_),this.state="idle",A({face:y,body:o,hand:i,gesture:s,performance:m(this,v),canvas:h.canvas})})}async warmup(e={}){let t=M();e&&(this.config=be(this.config,e));let A=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await m(this,$e).call(this):typeof Image!="undefined"?r=await m(this,e1).call(this):r=await m(this,t1).call(this),this.config.videoOptimized=A;let c=M();return this.config.debug&&g("Warmup",this.config.warmup,Math.round(c-t),"ms",r),r}};De=new WeakMap,v=new WeakMap,me=new WeakMap,ge=new WeakMap,Te=new WeakMap,ae=new WeakMap,k=new WeakMap,Ge=new WeakMap,Pe=new WeakMap,Qe=new WeakMap,ve=new WeakMap,$e=new WeakMap,e1=new WeakMap,t1=new WeakMap;0&&(module.exports={Human}); //# sourceMappingURL=human.node.js.map diff --git a/models/age.json b/models/age.json index d1d20a7c..874873cc 100644 --- a/models/age.json +++ b/models/age.json @@ -1,6 +1,6 @@ { "format": "graph-model", - "generatedBy": "2.3.1", + "generatedBy": "https://github.com/shamangary/SSR-Net", "convertedBy": "https://github.com/vladmandic", "userDefinedMetadata": { diff --git a/models/blazeface-back.json b/models/blazeface-back.json index 32e065f9..d1b84b8e 100644 --- a/models/blazeface-back.json +++ b/models/blazeface-back.json @@ -1,6 +1,6 @@ { "format": "graph-model", - "generatedBy": "2.3.0", + "generatedBy": "https://github.com/google/mediapipe", "convertedBy": "https://github.com/vladmandic", "userDefinedMetadata": { diff --git a/models/blazeface-front.json b/models/blazeface-front.json index 43f5aa43..ba1e75ae 100644 --- a/models/blazeface-front.json +++ b/models/blazeface-front.json @@ -1,6 +1,6 @@ { "format": "graph-model", - "generatedBy": "2.3.0", + "generatedBy": "https://github.com/google/mediapipe", "convertedBy": "https://github.com/vladmandic", "userDefinedMetadata": { diff --git a/models/blazepose.json b/models/blazepose.json index 3b074573..96450ab1 100644 --- a/models/blazepose.json +++ b/models/blazepose.json @@ -1,6 +1,6 @@ { "format": "graph-model", - "generatedBy": "2.4.1", + "generatedBy": "https://github.com/google/mediapipe", "convertedBy": "https://github.com/vladmandic", "signature": { diff --git a/models/emotion.json b/models/emotion.json index 90498aa6..0e4fd0c6 100644 --- a/models/emotion.json +++ b/models/emotion.json @@ -1,6 +1,6 @@ { "format": "graph-model", - "generatedBy": "2.3.1", + "generatedBy": "https://github.com/oarriaga/face_classification", "convertedBy": "https://github.com/vladmandic", "userDefinedMetadata": { diff --git a/models/facemesh.json b/models/facemesh.json index 049c2c0b..50671441 100644 --- a/models/facemesh.json +++ b/models/facemesh.json @@ -1,6 +1,6 @@ { "format": "graph-model", - "generatedBy": "1.15.0", + "generatedBy": "https://github.com/google/mediapipe", "convertedBy": "https://github.com/vladmandic", "userDefinedMetadata": { diff --git a/models/gender.json b/models/gender.json index 6a936592..77b1f0a0 100644 --- a/models/gender.json +++ b/models/gender.json @@ -1,6 +1,6 @@ { "format": "graph-model", - "generatedBy": "2.3.1", + "generatedBy": "https://github.com/oarriaga/face_classification", "convertedBy": "https://github.com/vladmandic", "userDefinedMetadata": { diff --git a/models/handdetect.json b/models/handdetect.json index 48c3b5ae..05590878 100644 --- a/models/handdetect.json +++ b/models/handdetect.json @@ -1,6 +1,6 @@ { "format": "graph-model", - "generatedBy": "1.15.0", + "generatedBy": "https://github.com/google/mediapipe", "convertedBy": "https://github.com/vladmandic", "userDefinedMetadata": { diff --git a/models/handskeleton.json b/models/handskeleton.json index b15082c4..36a2c0e8 100644 --- a/models/handskeleton.json +++ b/models/handskeleton.json @@ -1,6 +1,6 @@ { "format": "graph-model", - "generatedBy": "1.15.0", + "generatedBy": "https://github.com/google/mediapipe", "convertedBy": "https://github.com/vladmandic", "userDefinedMetadata": { diff --git a/models/iris.json b/models/iris.json index 4cb8cf9a..87d61962 100644 --- a/models/iris.json +++ b/models/iris.json @@ -1,6 +1,6 @@ { "format": "graph-model", - "generatedBy": "2.4.0", + "generatedBy": "https://github.com/google/mediapipe", "convertedBy": "https://github.com/vladmandic", "userDefinedMetadata": { diff --git a/models/mobileface.json b/models/mobileface.json index 16dde7f9..c518acbe 100644 --- a/models/mobileface.json +++ b/models/mobileface.json @@ -1,6 +1,6 @@ { "format": "graph-model", - "generatedBy": "2.4.1", + "generatedBy": "https://github.com/becauseofAI/MobileFace", "convertedBy": "https://github.com/vladmandic", "signature": { diff --git a/models/nanodet.bin b/models/nanodet.bin new file mode 100644 index 00000000..2642818d Binary files /dev/null and b/models/nanodet.bin differ diff --git a/models/nanodet.json b/models/nanodet.json new file mode 100644 index 00000000..7c8a4333 --- /dev/null +++ b/models/nanodet.json @@ -0,0 +1,1087 @@ +{ + "format": "graph-model", + "generatedBy": "https://github.com/RangiLyu/nanodet", + "convertedBy": "https://github.com/vladmandic", + "signature": + { + "inputs": + { + "input_1:0": {"name":"input_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"3"},{"size":"416"},{"size":"416"}]}} + }, + "outputs": + { + "Identity_1:0": {"name":"Identity_1:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"676"},{"size":"80"}]}}, + "Identity_2:0": {"name":"Identity_2:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"169"},{"size":"80"}]}}, + "Identity_3:0": {"name":"Identity_3:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"2704"},{"size":"32"}]}}, + "Identity_5:0": {"name":"Identity_5:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"169"},{"size":"32"}]}}, + "Identity:0": {"name":"Identity:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"2704"},{"size":"80"}]}}, + "Identity_4:0": {"name":"Identity_4:0","dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"676"},{"size":"32"}]}} + } + }, + "modelTopology": + { + "node": + [ + {"name":"PartitionedCall/Where_32","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_40","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_32","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_32","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_301/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"3"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_34","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_42","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_34","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_34","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_318/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"3"}]}}}}}, + {"name":"unknown_135","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"3"}]}}}}}, + {"name":"PartitionedCall/Where_36","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_44","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_36","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_36","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_335/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"3"}]}}}}}, + {"name":"PartitionedCall/Const_104","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_185/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Reshape_19","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"96"},{"size":"1"}]}}}}}, + {"name":"unknown_126","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_186/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/transpose_188/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/split_39","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"96"},{"size":"96"}]}}}}}, + {"name":"unknown_128","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}}}}, + {"name":"PartitionedCall/transpose_189/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_106","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_191/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Reshape_20","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"96"},{"size":"1"}]}}}}}, + {"name":"unknown_130","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_192/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_194/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/split_40","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"96"},{"size":"96"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_132","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}}}}, + {"name":"PartitionedCall/transpose_195/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/transpose_197/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_41","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"96"},{"size":"112"}]}}}}}, + {"name":"unknown_134","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"112"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_198/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_109","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_297/split_dim","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_33","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_41","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_33","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_33","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_304/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"3"}]}}}}}, + {"name":"PartitionedCall/Const_112","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_200/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_21","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"96"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_138","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}}}}, + {"name":"PartitionedCall/transpose_201/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/transpose_203/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/split_42","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"96"},{"size":"96"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_140","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_204/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_114","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_206/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Reshape_22","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"96"},{"size":"1"}]}}}}}, + {"name":"unknown_142","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_207/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/transpose_209/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_43","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"96"},{"size":"96"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_144","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}}}}, + {"name":"PartitionedCall/transpose_210/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/transpose_212/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/split_44","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"96"},{"size":"112"}]}}}}}, + {"name":"unknown_146","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"112"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_213/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_117","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_314/split_dim","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_35","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_43","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_35","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_35","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_321/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"3"}]}}}}}, + {"name":"PartitionedCall/transpose_175/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/transpose_168/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/split_36","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"96"}]}}}}}, + {"name":"unknown_116","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_169/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_171/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_37","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"232"},{"size":"96"}]}}}}}, + {"name":"unknown_118","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}}}}, + {"name":"PartitionedCall/transpose_172/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_76","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_126/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_14","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"232"},{"size":"1"}]}}}}}, + {"name":"unknown_86","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/split_27","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"232"},{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_88","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_130/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Const_27","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_48/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_5","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"116"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_32","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/split_10","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}}}}, + {"name":"unknown_34","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_52/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_4/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_2","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_6/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Reshape","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"24"},{"size":"1"}]}}}}}, + {"name":"unknown_2","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"24"}]}}}}}, + {"name":"PartitionedCall/split_1","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"24"},{"size":"58"}]}}}}}, + {"name":"unknown_4","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}}}}, + {"name":"PartitionedCall/transpose_10/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Const","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_1/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"3"},{"size":"24"}]}}}}}, + {"name":"unknown_0","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"24"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_2/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/PadV2/paddings","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/PadV2/constant_values","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{}}}}}, + {"name":"PartitionedCall/transpose_3/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_2","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"24"},{"size":"58"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_6","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}}}}, + {"name":"PartitionedCall/transpose_13/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_5","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_15/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_1","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"58"},{"size":"1"}]}}}}}, + {"name":"unknown_8","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}}}}, + {"name":"PartitionedCall/split_3","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"58"},{"size":"58"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_10","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}}}}, + {"name":"PartitionedCall/transpose_19/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_11/axis","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/Where","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_14/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_1","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_1","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_1","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_1","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/Const_9","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_17/split_dim","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/transpose_21/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_4","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"58"},{"size":"58"}]}}}}}, + {"name":"unknown_14","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_22/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_11","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_24/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Reshape_2","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"58"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_16","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/split_5","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"58"},{"size":"58"}]}}}}}, + {"name":"unknown_18","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_28/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_23/axis","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/Where_2","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_2","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_2","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_2","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_26/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_3","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_3","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_3","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_3","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Const_15","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_29/split_dim","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/transpose_30/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_6","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"58"},{"size":"58"}]}}}}}, + {"name":"unknown_20","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_31/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Const_17","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_33/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Reshape_3","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"58"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_22","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}}}}, + {"name":"PartitionedCall/split_7","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"58"},{"size":"58"}]}}}}}, + {"name":"unknown_24","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}}}}, + {"name":"PartitionedCall/transpose_37/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_35/axis","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/Where_4","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_4","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_4","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_4","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_38/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}}}}, + {"name":"PartitionedCall/Where_5","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_5","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_5","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_5","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/Const_21","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_41/split_dim","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/transpose_39/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/split_8","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"58"},{"size":"58"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_26","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}}}}, + {"name":"PartitionedCall/transpose_40/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_23","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_42/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Reshape_4","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"58"},{"size":"1"}]}}}}}, + {"name":"unknown_28","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/split_9","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"58"},{"size":"58"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_30","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"58"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_46/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_47/axis","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"unknown_11","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"5"}]}}}}}, + {"name":"PartitionedCall/Where_6","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_6","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_6","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_6","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_50/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"unknown_12","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Where_7","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_7","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_7","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_7","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/transpose_54/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/split_11","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}}}}, + {"name":"unknown_36","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/transpose_55/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Const_30","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_57/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_6","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"116"},{"size":"1"}]}}}}}, + {"name":"unknown_38","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/split_12","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_40","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_61/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_61/axis","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/Where_8","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_8","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_8","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_8","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_64/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}}}}, + {"name":"PartitionedCall/Where_9","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_9","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_9","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_9","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Const_34","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_67/split_dim","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/transpose_63/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/split_13","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}}}}, + {"name":"unknown_44","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/transpose_64/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Const_36","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_66/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_7","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"116"},{"size":"1"}]}}}}}, + {"name":"unknown_46","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/split_14","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_48","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_70/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_73/axis","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_10","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_10","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_10","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_10","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_76/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_11","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_11","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_11","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_11","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Const_40","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_79/split_dim","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/transpose_72/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_15","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_50","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_73/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Const_42","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_75/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Reshape_8","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"116"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_52","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/split_16","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_54","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/transpose_79/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_85/axis","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_12","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_12","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_12","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_12","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_88/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}}}}, + {"name":"PartitionedCall/Where_13","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_13","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_13","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_13","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Const_46","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_91/split_dim","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/transpose_81/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_17","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}}}}, + {"name":"unknown_56","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_82/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_48","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_84/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_9","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"116"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_58","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/split_18","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}}}}, + {"name":"unknown_60","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/transpose_88/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_97/axis","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_14","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_14","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_14","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_14","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_100/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}}}}, + {"name":"PartitionedCall/Where_15","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_15","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_15","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_15","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Const_52","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_103/split_dim","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_90/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_19","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_62","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_91/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_54","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_93/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_10","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"116"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_64","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/split_20","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}}}}, + {"name":"unknown_66","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/transpose_97/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_109/axis","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/Where_16","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_16","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_16","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_16","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_112/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_17","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_17","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_17","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_17","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/Const_58","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_115/split_dim","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/transpose_99/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_21","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_68","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_100/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_60","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_102/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Reshape_11","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"116"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_70","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/split_22","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_72","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/transpose_106/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_121/axis","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_18","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_18","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_18","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_18","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_124/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}}}}, + {"name":"PartitionedCall/Where_19","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_19","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_19","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_19","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/Const_64","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_127/split_dim","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_108/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_23","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_74","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/transpose_109/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_66","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_111/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_12","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"116"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_76","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/split_24","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}}}}, + {"name":"unknown_78","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}}}}, + {"name":"PartitionedCall/transpose_115/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_133/axis","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_20","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_20","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_20","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_20","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_136/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}}}}, + {"name":"PartitionedCall/Where_21","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_21","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_21","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_21","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Const_70","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_139/split_dim","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_117/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_25","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_80","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_118/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_72","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_120/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Reshape_13","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"116"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_82","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/split_26","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"116"},{"size":"116"}]}}}}}, + {"name":"unknown_84","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"116"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_124/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_145/axis","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"unknown_41","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"5"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Where_22","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_22","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_22","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_22","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_148/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}}}}, + {"name":"unknown_42","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Where_23","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_23","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_23","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_23","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/transpose_132/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_28","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"232"},{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_90","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_133/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Const_79","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_135/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_15","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"232"},{"size":"1"}]}}}}}, + {"name":"unknown_92","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}}}}, + {"name":"PartitionedCall/split_29","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"232"},{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_94","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}}}}, + {"name":"PartitionedCall/transpose_139/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_159/axis","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/Where_24","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_24","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_24","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_24","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_162/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}}}}, + {"name":"PartitionedCall/Where_25","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_25","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_25","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_25","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Const_83","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_165/split_dim","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/transpose_141/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/split_30","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"232"},{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_98","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_142/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Const_85","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_144/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Reshape_16","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"232"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_100","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}}}}, + {"name":"PartitionedCall/split_31","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"232"},{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_102","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}}}}, + {"name":"PartitionedCall/transpose_148/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_171/axis","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_26","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_26","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_26","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_26","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_174/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_27","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_27","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_27","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_27","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Const_89","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_177/split_dim","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_150/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_32","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"232"},{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_104","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}}}}, + {"name":"PartitionedCall/transpose_151/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Const_91","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_153/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_17","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"232"},{"size":"1"}]}}}}}, + {"name":"unknown_106","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}}}}, + {"name":"PartitionedCall/split_33","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"232"},{"size":"232"}]}}}}}, + {"name":"unknown_108","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_157/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_183/axis","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"PartitionedCall/Where_28","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_28","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_28","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}}}}, + {"name":"PartitionedCall/zeros_28","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_186/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Where_29","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Cast_29","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_29","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_29","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Const_95","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_189/split_dim","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_159/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_34","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"232"},{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_110","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}}}}, + {"name":"PartitionedCall/transpose_160/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_97","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_162/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_18","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"232"},{"size":"1"}]}}}}}, + {"name":"unknown_112","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/split_35","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"232"},{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_114","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"232"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_166/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_195/axis","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"unknown_95","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"5"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Where_30","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_30","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_30","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_30","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_198/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"5"}]}}}}}, + {"name":"unknown_96","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Where_31","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_31","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/GatherV2_31","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_31","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/transpose_174/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_38","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"464"},{"size":"96"}]}}}}}, + {"name":"unknown_120","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}}}}, + {"name":"PartitionedCall/Cast_33","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_177/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/transpose_178/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Cast_35","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_179/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_180/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Cast_37","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_181/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_182/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Cast_39","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}}, + {"name":"PartitionedCall/transpose_183/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/Const_120","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_215/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_23","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"96"},{"size":"1"}]}}}}}, + {"name":"unknown_148","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}}}}, + {"name":"PartitionedCall/transpose_216/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_218/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_45","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"96"},{"size":"96"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_150","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_219/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Const_122","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"},{"size":"2"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_221/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Reshape_24","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"3"},{"size":"3"},{"size":"96"},{"size":"1"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_152","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}}}}, + {"name":"PartitionedCall/transpose_222/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/transpose_224/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/split_46","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"96"},{"size":"96"}]}}},"dtype":{"type":"DT_FLOAT"}}}, + {"name":"unknown_154","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"96"}]}}}}}, + {"name":"PartitionedCall/transpose_225/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/transpose_227/perm","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}}}}, + {"name":"PartitionedCall/split_47","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"1"},{"size":"1"},{"size":"96"},{"size":"112"}]}}}}}, + {"name":"unknown_156","op":"Const","attr":{"dtype":{"type":"DT_FLOAT"},"value":{"tensor":{"dtype":"DT_FLOAT","tensorShape":{"dim":[{"size":"112"}]}}}}}, + {"name":"PartitionedCall/transpose_228/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"4"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Const_125","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"2"}]}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_331/split_dim","op":"Const","attr":{"dtype":{"type":"DT_INT32"},"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{}}}}}, + {"name":"unknown_136","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"3"}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Where_37","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{},{"size":"1"}]}}}}}, + {"name":"PartitionedCall/Cast_45","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{"size":"1"}]}}}}}, + {"name":"PartitionedCall/GatherV2_37","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{"dim":[{}]}}},"dtype":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/zeros_37","op":"Const","attr":{"dtype":{"type":"DT_INT64"},"value":{"tensor":{"dtype":"DT_INT64","tensorShape":{}}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_338/perm","op":"Const","attr":{"value":{"tensor":{"dtype":"DT_INT32","tensorShape":{"dim":[{"size":"3"}]}}},"dtype":{"type":"DT_INT32"}}}, + {"name":"input_1","op":"Placeholder","attr":{"dtype":{"type":"DT_FLOAT"},"shape":{"shape":{"dim":[{"size":"1"},{"size":"3"},{"size":"416"},{"size":"416"}]}}}}, + {"name":"PartitionedCall/SparseToDense_32","op":"SparseToDense","input":["PartitionedCall/Where_32","PartitionedCall/Cast_40","PartitionedCall/GatherV2_32","PartitionedCall/zeros_32"],"attr":{"T":{"type":"DT_INT64"},"Tindices":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_34","op":"SparseToDense","input":["PartitionedCall/Where_34","PartitionedCall/Cast_42","PartitionedCall/GatherV2_34","PartitionedCall/zeros_34"],"attr":{"T":{"type":"DT_INT64"},"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_36","op":"SparseToDense","input":["PartitionedCall/Where_36","PartitionedCall/Cast_44","PartitionedCall/GatherV2_36","PartitionedCall/zeros_36"],"attr":{"T":{"type":"DT_INT64"},"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_33","op":"SparseToDense","input":["PartitionedCall/Where_33","PartitionedCall/Cast_41","PartitionedCall/GatherV2_33","PartitionedCall/zeros_33"],"attr":{"Tindices":{"type":"DT_INT64"},"validate_indices":{"b":true},"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_35","op":"SparseToDense","input":["PartitionedCall/Where_35","PartitionedCall/Cast_43","PartitionedCall/GatherV2_35","PartitionedCall/zeros_35"],"attr":{"T":{"type":"DT_INT64"},"Tindices":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense","op":"SparseToDense","input":["PartitionedCall/Where","PartitionedCall/Cast","PartitionedCall/GatherV2","PartitionedCall/zeros"],"attr":{"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_1","op":"SparseToDense","input":["PartitionedCall/Where_1","PartitionedCall/Cast_1","PartitionedCall/GatherV2_1","PartitionedCall/zeros_1"],"attr":{"Tindices":{"type":"DT_INT64"},"validate_indices":{"b":true},"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_2","op":"SparseToDense","input":["PartitionedCall/Where_2","PartitionedCall/Cast_2","PartitionedCall/GatherV2_2","PartitionedCall/zeros_2"],"attr":{"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_3","op":"SparseToDense","input":["PartitionedCall/Where_3","PartitionedCall/Cast_3","PartitionedCall/GatherV2_3","PartitionedCall/zeros_3"],"attr":{"T":{"type":"DT_INT64"},"Tindices":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_4","op":"SparseToDense","input":["PartitionedCall/Where_4","PartitionedCall/Cast_4","PartitionedCall/GatherV2_4","PartitionedCall/zeros_4"],"attr":{"validate_indices":{"b":true},"T":{"type":"DT_INT64"},"Tindices":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_5","op":"SparseToDense","input":["PartitionedCall/Where_5","PartitionedCall/Cast_5","PartitionedCall/GatherV2_5","PartitionedCall/zeros_5"],"attr":{"T":{"type":"DT_INT64"},"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_6","op":"SparseToDense","input":["PartitionedCall/Where_6","PartitionedCall/Cast_6","PartitionedCall/GatherV2_6","PartitionedCall/zeros_6"],"attr":{"T":{"type":"DT_INT64"},"Tindices":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_7","op":"SparseToDense","input":["PartitionedCall/Where_7","PartitionedCall/Cast_7","PartitionedCall/GatherV2_7","PartitionedCall/zeros_7"],"attr":{"T":{"type":"DT_INT64"},"Tindices":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_8","op":"SparseToDense","input":["PartitionedCall/Where_8","PartitionedCall/Cast_8","PartitionedCall/GatherV2_8","PartitionedCall/zeros_8"],"attr":{"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_9","op":"SparseToDense","input":["PartitionedCall/Where_9","PartitionedCall/Cast_9","PartitionedCall/GatherV2_9","PartitionedCall/zeros_9"],"attr":{"T":{"type":"DT_INT64"},"Tindices":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_10","op":"SparseToDense","input":["PartitionedCall/Where_10","PartitionedCall/Cast_10","PartitionedCall/GatherV2_10","PartitionedCall/zeros_10"],"attr":{"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_11","op":"SparseToDense","input":["PartitionedCall/Where_11","PartitionedCall/Cast_11","PartitionedCall/GatherV2_11","PartitionedCall/zeros_11"],"attr":{"T":{"type":"DT_INT64"},"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_12","op":"SparseToDense","input":["PartitionedCall/Where_12","PartitionedCall/Cast_12","PartitionedCall/GatherV2_12","PartitionedCall/zeros_12"],"attr":{"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_13","op":"SparseToDense","input":["PartitionedCall/Where_13","PartitionedCall/Cast_13","PartitionedCall/GatherV2_13","PartitionedCall/zeros_13"],"attr":{"Tindices":{"type":"DT_INT64"},"validate_indices":{"b":true},"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_14","op":"SparseToDense","input":["PartitionedCall/Where_14","PartitionedCall/Cast_14","PartitionedCall/GatherV2_14","PartitionedCall/zeros_14"],"attr":{"validate_indices":{"b":true},"T":{"type":"DT_INT64"},"Tindices":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_15","op":"SparseToDense","input":["PartitionedCall/Where_15","PartitionedCall/Cast_15","PartitionedCall/GatherV2_15","PartitionedCall/zeros_15"],"attr":{"T":{"type":"DT_INT64"},"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_16","op":"SparseToDense","input":["PartitionedCall/Where_16","PartitionedCall/Cast_16","PartitionedCall/GatherV2_16","PartitionedCall/zeros_16"],"attr":{"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_17","op":"SparseToDense","input":["PartitionedCall/Where_17","PartitionedCall/Cast_17","PartitionedCall/GatherV2_17","PartitionedCall/zeros_17"],"attr":{"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_18","op":"SparseToDense","input":["PartitionedCall/Where_18","PartitionedCall/Cast_18","PartitionedCall/GatherV2_18","PartitionedCall/zeros_18"],"attr":{"T":{"type":"DT_INT64"},"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_19","op":"SparseToDense","input":["PartitionedCall/Where_19","PartitionedCall/Cast_19","PartitionedCall/GatherV2_19","PartitionedCall/zeros_19"],"attr":{"T":{"type":"DT_INT64"},"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_20","op":"SparseToDense","input":["PartitionedCall/Where_20","PartitionedCall/Cast_20","PartitionedCall/GatherV2_20","PartitionedCall/zeros_20"],"attr":{"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_21","op":"SparseToDense","input":["PartitionedCall/Where_21","PartitionedCall/Cast_21","PartitionedCall/GatherV2_21","PartitionedCall/zeros_21"],"attr":{"Tindices":{"type":"DT_INT64"},"validate_indices":{"b":true},"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_22","op":"SparseToDense","input":["PartitionedCall/Where_22","PartitionedCall/Cast_22","PartitionedCall/GatherV2_22","PartitionedCall/zeros_22"],"attr":{"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_23","op":"SparseToDense","input":["PartitionedCall/Where_23","PartitionedCall/Cast_23","PartitionedCall/GatherV2_23","PartitionedCall/zeros_23"],"attr":{"Tindices":{"type":"DT_INT64"},"validate_indices":{"b":true},"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_24","op":"SparseToDense","input":["PartitionedCall/Where_24","PartitionedCall/Cast_24","PartitionedCall/GatherV2_24","PartitionedCall/zeros_24"],"attr":{"T":{"type":"DT_INT64"},"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_25","op":"SparseToDense","input":["PartitionedCall/Where_25","PartitionedCall/Cast_25","PartitionedCall/GatherV2_25","PartitionedCall/zeros_25"],"attr":{"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_26","op":"SparseToDense","input":["PartitionedCall/Where_26","PartitionedCall/Cast_26","PartitionedCall/GatherV2_26","PartitionedCall/zeros_26"],"attr":{"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_27","op":"SparseToDense","input":["PartitionedCall/Where_27","PartitionedCall/Cast_27","PartitionedCall/GatherV2_27","PartitionedCall/zeros_27"],"attr":{"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_28","op":"SparseToDense","input":["PartitionedCall/Where_28","PartitionedCall/Cast_28","PartitionedCall/GatherV2_28","PartitionedCall/zeros_28"],"attr":{"T":{"type":"DT_INT64"},"validate_indices":{"b":true},"Tindices":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/SparseToDense_29","op":"SparseToDense","input":["PartitionedCall/Where_29","PartitionedCall/Cast_29","PartitionedCall/GatherV2_29","PartitionedCall/zeros_29"],"attr":{"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_30","op":"SparseToDense","input":["PartitionedCall/Where_30","PartitionedCall/Cast_30","PartitionedCall/GatherV2_30","PartitionedCall/zeros_30"],"attr":{"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_31","op":"SparseToDense","input":["PartitionedCall/Where_31","PartitionedCall/Cast_31","PartitionedCall/GatherV2_31","PartitionedCall/zeros_31"],"attr":{"Tindices":{"type":"DT_INT64"},"T":{"type":"DT_INT64"},"validate_indices":{"b":true}}}, + {"name":"PartitionedCall/SparseToDense_37","op":"SparseToDense","input":["PartitionedCall/Where_37","PartitionedCall/Cast_45","PartitionedCall/GatherV2_37","PartitionedCall/zeros_37"],"attr":{"Tindices":{"type":"DT_INT64"},"validate_indices":{"b":true},"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/Pad","op":"Pad","input":["input_1","PartitionedCall/Const"],"attr":{"T":{"type":"DT_FLOAT"},"Tpaddings":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/add_95","op":"AddV2","input":["unknown_135","PartitionedCall/SparseToDense_32"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_102","op":"AddV2","input":["unknown_135","PartitionedCall/SparseToDense_34"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_109","op":"AddV2","input":["unknown_135","PartitionedCall/SparseToDense_36"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_96","op":"AddV2","input":["unknown_136","PartitionedCall/SparseToDense_33"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_103","op":"AddV2","input":["unknown_136","PartitionedCall/SparseToDense_35"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_6","op":"AddV2","input":["unknown_11","PartitionedCall/SparseToDense"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_7","op":"AddV2","input":["unknown_12","PartitionedCall/SparseToDense_1"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_11","op":"AddV2","input":["unknown_11","PartitionedCall/SparseToDense_2"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_12","op":"AddV2","input":["unknown_12","PartitionedCall/SparseToDense_3"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_16","op":"AddV2","input":["unknown_11","PartitionedCall/SparseToDense_4"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_17","op":"AddV2","input":["unknown_12","PartitionedCall/SparseToDense_5"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_21","op":"AddV2","input":["unknown_11","PartitionedCall/SparseToDense_6"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_22","op":"AddV2","input":["unknown_12","PartitionedCall/SparseToDense_7"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_28","op":"AddV2","input":["unknown_41","PartitionedCall/SparseToDense_8"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_29","op":"AddV2","input":["unknown_42","PartitionedCall/SparseToDense_9"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_33","op":"AddV2","input":["unknown_41","PartitionedCall/SparseToDense_10"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_34","op":"AddV2","input":["unknown_42","PartitionedCall/SparseToDense_11"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_38","op":"AddV2","input":["unknown_41","PartitionedCall/SparseToDense_12"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_39","op":"AddV2","input":["unknown_42","PartitionedCall/SparseToDense_13"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_43","op":"AddV2","input":["unknown_41","PartitionedCall/SparseToDense_14"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_44","op":"AddV2","input":["unknown_42","PartitionedCall/SparseToDense_15"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_48","op":"AddV2","input":["unknown_41","PartitionedCall/SparseToDense_16"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_49","op":"AddV2","input":["unknown_42","PartitionedCall/SparseToDense_17"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_53","op":"AddV2","input":["unknown_41","PartitionedCall/SparseToDense_18"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_54","op":"AddV2","input":["unknown_42","PartitionedCall/SparseToDense_19"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_58","op":"AddV2","input":["unknown_41","PartitionedCall/SparseToDense_20"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_59","op":"AddV2","input":["unknown_42","PartitionedCall/SparseToDense_21"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_63","op":"AddV2","input":["unknown_41","PartitionedCall/SparseToDense_22"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_64","op":"AddV2","input":["unknown_42","PartitionedCall/SparseToDense_23"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_70","op":"AddV2","input":["unknown_95","PartitionedCall/SparseToDense_24"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_71","op":"AddV2","input":["unknown_96","PartitionedCall/SparseToDense_25"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_75","op":"AddV2","input":["unknown_95","PartitionedCall/SparseToDense_26"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_76","op":"AddV2","input":["unknown_96","PartitionedCall/SparseToDense_27"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_80","op":"AddV2","input":["unknown_95","PartitionedCall/SparseToDense_28"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_81","op":"AddV2","input":["unknown_96","PartitionedCall/SparseToDense_29"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_85","op":"AddV2","input":["unknown_95","PartitionedCall/SparseToDense_30"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_86","op":"AddV2","input":["unknown_96","PartitionedCall/SparseToDense_31"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/add_110","op":"AddV2","input":["unknown_136","PartitionedCall/SparseToDense_37"],"attr":{"T":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/transpose_1","op":"Transpose","input":["PartitionedCall/Pad","PartitionedCall/transpose_1/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution","op":"Conv2D","input":["PartitionedCall/transpose_1","PartitionedCall/split"],"device":"/device:CPU:0","attr":{"use_cudnn_on_gpu":{"b":true},"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","2","2","1"]}}}}, + {"name":"PartitionedCall/Add","op":"Add","input":["PartitionedCall/convolution","unknown_0"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_2","op":"Transpose","input":["PartitionedCall/Add","PartitionedCall/transpose_2/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_1","op":"LeakyRelu","input":["PartitionedCall/transpose_2"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/PadV2","op":"PadV2","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_1","PartitionedCall/PadV2/paddings","PartitionedCall/PadV2/constant_values"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_3","op":"Transpose","input":["PartitionedCall/PadV2","PartitionedCall/transpose_3/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/MaxPool2d","op":"MaxPool","input":["PartitionedCall/transpose_3"],"attr":{"padding":{"s":"VkFMSUQ="},"ksize":{"list":{"i":["1","3","3","1"]}},"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","2","2","1"]}},"explicit_paddings":{"list":{}}}}, + {"name":"PartitionedCall/transpose_4","op":"Transpose","input":["PartitionedCall/MaxPool2d","PartitionedCall/transpose_4/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_2","op":"Conv2D","input":["PartitionedCall/MaxPool2d","PartitionedCall/split_2"],"device":"/device:CPU:0","attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="}}}, + {"name":"PartitionedCall/Pad_1","op":"Pad","input":["PartitionedCall/transpose_4","PartitionedCall/Const_2"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_3","op":"Add","input":["PartitionedCall/convolution_2","unknown_6"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_6","op":"Transpose","input":["PartitionedCall/Pad_1","PartitionedCall/transpose_6/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_13","op":"Transpose","input":["PartitionedCall/Add_3","PartitionedCall/transpose_13/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/depthwise","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_6","PartitionedCall/Reshape"],"attr":{"strides":{"list":{"i":["1","2","2","1"]}},"padding":{"s":"VkFMSUQ="},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_7","op":"LeakyRelu","input":["PartitionedCall/transpose_13"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_1","op":"Add","input":["PartitionedCall/depthwise","unknown_2"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_2","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_7","PartitionedCall/Const_5"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_1","op":"Conv2D","input":["PartitionedCall/Add_1","PartitionedCall/split_1"],"device":"/device:CPU:0","attr":{"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"dilations":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true}}}, + {"name":"PartitionedCall/transpose_15","op":"Transpose","input":["PartitionedCall/Pad_2","PartitionedCall/transpose_15/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Add_2","op":"Add","input":["PartitionedCall/convolution_1","unknown_4"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_1","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_15","PartitionedCall/Reshape_1"],"attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","2","2","1"]}},"data_format":{"s":"TkhXQw=="},"explicit_paddings":{"list":{}}}}, + {"name":"PartitionedCall/transpose_10","op":"Transpose","input":["PartitionedCall/Add_2","PartitionedCall/transpose_10/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Add_4","op":"Add","input":["PartitionedCall/depthwise_1","unknown_8"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_5","op":"LeakyRelu","input":["PartitionedCall/transpose_10"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_3","op":"Conv2D","input":["PartitionedCall/Add_4","PartitionedCall/split_3"],"device":"/device:CPU:0","attr":{"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true},"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="},"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="}}}, + {"name":"PartitionedCall/Add_5","op":"Add","input":["PartitionedCall/convolution_3","unknown_10"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_19","op":"Transpose","input":["PartitionedCall/Add_5","PartitionedCall/transpose_19/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_10","op":"LeakyRelu","input":["PartitionedCall/transpose_19"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_11","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_5","PartitionedCall/onnx_tf_prefix_LeakyRelu_10","PartitionedCall/onnx_tf_prefix_Concat_11/axis"],"attr":{"N":{"i":"2"},"T":{"type":"DT_FLOAT"},"Tidx":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_13","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_11","PartitionedCall/add_6"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_14","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_13","PartitionedCall/onnx_tf_prefix_Transpose_14/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_16","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_14","PartitionedCall/add_7"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_17","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_16","PartitionedCall/Const_9","PartitionedCall/onnx_tf_prefix_Split_17/split_dim"],"attr":{"Tlen":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"},"num_split":{"i":"2"}}}, + {"name":"PartitionedCall/transpose_21","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_17:1","PartitionedCall/transpose_21/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/convolution_4","op":"Conv2D","input":["PartitionedCall/transpose_21","PartitionedCall/split_4"],"device":"/device:CPU:0","attr":{"strides":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"explicit_paddings":{"list":{}},"use_cudnn_on_gpu":{"b":true}}}, + {"name":"PartitionedCall/Add_8","op":"Add","input":["PartitionedCall/convolution_4","unknown_14"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_22","op":"Transpose","input":["PartitionedCall/Add_8","PartitionedCall/transpose_22/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_19","op":"LeakyRelu","input":["PartitionedCall/transpose_22"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/Pad_3","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_19","PartitionedCall/Const_11"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_24","op":"Transpose","input":["PartitionedCall/Pad_3","PartitionedCall/transpose_24/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/depthwise_2","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_24","PartitionedCall/Reshape_2"],"attr":{"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"explicit_paddings":{"list":{}}}}, + {"name":"PartitionedCall/Add_9","op":"Add","input":["PartitionedCall/depthwise_2","unknown_16"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_5","op":"Conv2D","input":["PartitionedCall/Add_9","PartitionedCall/split_5"],"device":"/device:CPU:0","attr":{"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}},"strides":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"use_cudnn_on_gpu":{"b":true},"padding":{"s":"VkFMSUQ="}}}, + {"name":"PartitionedCall/Add_10","op":"Add","input":["PartitionedCall/convolution_5","unknown_18"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_28","op":"Transpose","input":["PartitionedCall/Add_10","PartitionedCall/transpose_28/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_22","op":"LeakyRelu","input":["PartitionedCall/transpose_28"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_23","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_17","PartitionedCall/onnx_tf_prefix_LeakyRelu_22","PartitionedCall/onnx_tf_prefix_Concat_23/axis"],"attr":{"Tidx":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"},"N":{"i":"2"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_25","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_23","PartitionedCall/add_11"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_26","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_25","PartitionedCall/onnx_tf_prefix_Transpose_26/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_28","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_26","PartitionedCall/add_12"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_29","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_28","PartitionedCall/Const_15","PartitionedCall/onnx_tf_prefix_Split_29/split_dim"],"attr":{"Tlen":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"},"num_split":{"i":"2"}}}, + {"name":"PartitionedCall/transpose_30","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_29:1","PartitionedCall/transpose_30/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_6","op":"Conv2D","input":["PartitionedCall/transpose_30","PartitionedCall/split_6"],"device":"/device:CPU:0","attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"padding":{"s":"VkFMSUQ="},"use_cudnn_on_gpu":{"b":true},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_13","op":"Add","input":["PartitionedCall/convolution_6","unknown_20"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_31","op":"Transpose","input":["PartitionedCall/Add_13","PartitionedCall/transpose_31/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_31","op":"LeakyRelu","input":["PartitionedCall/transpose_31"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_4","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_31","PartitionedCall/Const_17"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_33","op":"Transpose","input":["PartitionedCall/Pad_4","PartitionedCall/transpose_33/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_3","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_33","PartitionedCall/Reshape_3"],"attr":{"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="}}}, + {"name":"PartitionedCall/Add_14","op":"Add","input":["PartitionedCall/depthwise_3","unknown_22"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_7","op":"Conv2D","input":["PartitionedCall/Add_14","PartitionedCall/split_7"],"device":"/device:CPU:0","attr":{"padding":{"s":"VkFMSUQ="},"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_15","op":"Add","input":["PartitionedCall/convolution_7","unknown_24"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_37","op":"Transpose","input":["PartitionedCall/Add_15","PartitionedCall/transpose_37/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_34","op":"LeakyRelu","input":["PartitionedCall/transpose_37"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_35","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_29","PartitionedCall/onnx_tf_prefix_LeakyRelu_34","PartitionedCall/onnx_tf_prefix_Concat_35/axis"],"attr":{"N":{"i":"2"},"T":{"type":"DT_FLOAT"},"Tidx":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_37","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_35","PartitionedCall/add_16"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_38","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_37","PartitionedCall/onnx_tf_prefix_Transpose_38/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_40","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_38","PartitionedCall/add_17"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_41","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_40","PartitionedCall/Const_21","PartitionedCall/onnx_tf_prefix_Split_41/split_dim"],"attr":{"T":{"type":"DT_FLOAT"},"Tlen":{"type":"DT_INT32"},"num_split":{"i":"2"}}}, + {"name":"PartitionedCall/transpose_39","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_41:1","PartitionedCall/transpose_39/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_8","op":"Conv2D","input":["PartitionedCall/transpose_39","PartitionedCall/split_8"],"device":"/device:CPU:0","attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"use_cudnn_on_gpu":{"b":true},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_18","op":"Add","input":["PartitionedCall/convolution_8","unknown_26"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_40","op":"Transpose","input":["PartitionedCall/Add_18","PartitionedCall/transpose_40/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_43","op":"LeakyRelu","input":["PartitionedCall/transpose_40"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_5","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_43","PartitionedCall/Const_23"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_42","op":"Transpose","input":["PartitionedCall/Pad_5","PartitionedCall/transpose_42/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/depthwise_4","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_42","PartitionedCall/Reshape_4"],"attr":{"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","1","1","1"]}},"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}}}}, + {"name":"PartitionedCall/Add_19","op":"Add","input":["PartitionedCall/depthwise_4","unknown_28"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_9","op":"Conv2D","input":["PartitionedCall/Add_19","PartitionedCall/split_9"],"device":"/device:CPU:0","attr":{"strides":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true}}}, + {"name":"PartitionedCall/Add_20","op":"Add","input":["PartitionedCall/convolution_9","unknown_30"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_46","op":"Transpose","input":["PartitionedCall/Add_20","PartitionedCall/transpose_46/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_46","op":"LeakyRelu","input":["PartitionedCall/transpose_46"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_47","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_41","PartitionedCall/onnx_tf_prefix_LeakyRelu_46","PartitionedCall/onnx_tf_prefix_Concat_47/axis"],"attr":{"Tidx":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"},"N":{"i":"2"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_49","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_47","PartitionedCall/add_21"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_50","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_49","PartitionedCall/onnx_tf_prefix_Transpose_50/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_52","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_50","PartitionedCall/add_22"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_168","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_52","PartitionedCall/transpose_168/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Pad_6","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_Reshape_52","PartitionedCall/Const_27"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_54","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_52","PartitionedCall/transpose_54/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/convolution_36","op":"Conv2D","input":["PartitionedCall/transpose_168","PartitionedCall/split_36"],"device":"/device:CPU:0","attr":{"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"use_cudnn_on_gpu":{"b":true},"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/transpose_48","op":"Transpose","input":["PartitionedCall/Pad_6","PartitionedCall/transpose_48/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/convolution_11","op":"Conv2D","input":["PartitionedCall/transpose_54","PartitionedCall/split_11"],"device":"/device:CPU:0","attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_87","op":"Add","input":["PartitionedCall/convolution_36","unknown_116"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_5","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_48","PartitionedCall/Reshape_5"],"attr":{"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","2","2","1"]}},"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="},"padding":{"s":"VkFMSUQ="},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_25","op":"Add","input":["PartitionedCall/convolution_11","unknown_36"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_169","op":"Transpose","input":["PartitionedCall/Add_87","PartitionedCall/transpose_169/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_23","op":"Add","input":["PartitionedCall/depthwise_5","unknown_32"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_55","op":"Transpose","input":["PartitionedCall/Add_25","PartitionedCall/transpose_55/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/convolution_10","op":"Conv2D","input":["PartitionedCall/Add_23","PartitionedCall/split_10"],"device":"/device:CPU:0","attr":{"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"use_cudnn_on_gpu":{"b":true},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_57","op":"LeakyRelu","input":["PartitionedCall/transpose_55"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/Add_24","op":"Add","input":["PartitionedCall/convolution_10","unknown_34"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_7","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_57","PartitionedCall/Const_30"],"attr":{"T":{"type":"DT_FLOAT"},"Tpaddings":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_52","op":"Transpose","input":["PartitionedCall/Add_24","PartitionedCall/transpose_52/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_57","op":"Transpose","input":["PartitionedCall/Pad_7","PartitionedCall/transpose_57/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_55","op":"LeakyRelu","input":["PartitionedCall/transpose_52"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_6","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_57","PartitionedCall/Reshape_6"],"attr":{"strides":{"list":{"i":["1","2","2","1"]}},"dilations":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="},"data_format":{"s":"TkhXQw=="},"explicit_paddings":{"list":{}}}}, + {"name":"PartitionedCall/Add_26","op":"Add","input":["PartitionedCall/depthwise_6","unknown_38"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_12","op":"Conv2D","input":["PartitionedCall/Add_26","PartitionedCall/split_12"],"device":"/device:CPU:0","attr":{"padding":{"s":"VkFMSUQ="},"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true},"strides":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="}}}, + {"name":"PartitionedCall/Add_27","op":"Add","input":["PartitionedCall/convolution_12","unknown_40"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_61","op":"Transpose","input":["PartitionedCall/Add_27","PartitionedCall/transpose_61/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_60","op":"LeakyRelu","input":["PartitionedCall/transpose_61"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_61","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_55","PartitionedCall/onnx_tf_prefix_LeakyRelu_60","PartitionedCall/onnx_tf_prefix_Concat_61/axis"],"attr":{"N":{"i":"2"},"T":{"type":"DT_FLOAT"},"Tidx":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_63","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_61","PartitionedCall/add_28"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_64","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_63","PartitionedCall/onnx_tf_prefix_Transpose_64/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_66","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_64","PartitionedCall/add_29"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_67","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_66","PartitionedCall/Const_34","PartitionedCall/onnx_tf_prefix_Split_67/split_dim"],"attr":{"Tlen":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"},"num_split":{"i":"2"}}}, + {"name":"PartitionedCall/transpose_63","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_67:1","PartitionedCall/transpose_63/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_13","op":"Conv2D","input":["PartitionedCall/transpose_63","PartitionedCall/split_13"],"device":"/device:CPU:0","attr":{"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"T":{"type":"DT_FLOAT"},"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"strides":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_30","op":"Add","input":["PartitionedCall/convolution_13","unknown_44"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_64","op":"Transpose","input":["PartitionedCall/Add_30","PartitionedCall/transpose_64/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_69","op":"LeakyRelu","input":["PartitionedCall/transpose_64"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/Pad_8","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_69","PartitionedCall/Const_36"],"attr":{"T":{"type":"DT_FLOAT"},"Tpaddings":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_66","op":"Transpose","input":["PartitionedCall/Pad_8","PartitionedCall/transpose_66/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_7","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_66","PartitionedCall/Reshape_7"],"attr":{"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"strides":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_31","op":"Add","input":["PartitionedCall/depthwise_7","unknown_46"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_14","op":"Conv2D","input":["PartitionedCall/Add_31","PartitionedCall/split_14"],"device":"/device:CPU:0","attr":{"padding":{"s":"VkFMSUQ="},"use_cudnn_on_gpu":{"b":true},"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}},"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_32","op":"Add","input":["PartitionedCall/convolution_14","unknown_48"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_70","op":"Transpose","input":["PartitionedCall/Add_32","PartitionedCall/transpose_70/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_72","op":"LeakyRelu","input":["PartitionedCall/transpose_70"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_73","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_67","PartitionedCall/onnx_tf_prefix_LeakyRelu_72","PartitionedCall/onnx_tf_prefix_Concat_73/axis"],"attr":{"N":{"i":"2"},"T":{"type":"DT_FLOAT"},"Tidx":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_75","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_73","PartitionedCall/add_33"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_76","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_75","PartitionedCall/onnx_tf_prefix_Transpose_76/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_78","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_76","PartitionedCall/add_34"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_79","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_78","PartitionedCall/Const_40","PartitionedCall/onnx_tf_prefix_Split_79/split_dim"],"attr":{"T":{"type":"DT_FLOAT"},"Tlen":{"type":"DT_INT32"},"num_split":{"i":"2"}}}, + {"name":"PartitionedCall/transpose_72","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_79:1","PartitionedCall/transpose_72/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_15","op":"Conv2D","input":["PartitionedCall/transpose_72","PartitionedCall/split_15"],"device":"/device:CPU:0","attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"use_cudnn_on_gpu":{"b":true},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_35","op":"Add","input":["PartitionedCall/convolution_15","unknown_50"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_73","op":"Transpose","input":["PartitionedCall/Add_35","PartitionedCall/transpose_73/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_81","op":"LeakyRelu","input":["PartitionedCall/transpose_73"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_9","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_81","PartitionedCall/Const_42"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_75","op":"Transpose","input":["PartitionedCall/Pad_9","PartitionedCall/transpose_75/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_8","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_75","PartitionedCall/Reshape_8"],"attr":{"strides":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="}}}, + {"name":"PartitionedCall/Add_36","op":"Add","input":["PartitionedCall/depthwise_8","unknown_52"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_16","op":"Conv2D","input":["PartitionedCall/Add_36","PartitionedCall/split_16"],"device":"/device:CPU:0","attr":{"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"use_cudnn_on_gpu":{"b":true}}}, + {"name":"PartitionedCall/Add_37","op":"Add","input":["PartitionedCall/convolution_16","unknown_54"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_79","op":"Transpose","input":["PartitionedCall/Add_37","PartitionedCall/transpose_79/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_84","op":"LeakyRelu","input":["PartitionedCall/transpose_79"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_85","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_79","PartitionedCall/onnx_tf_prefix_LeakyRelu_84","PartitionedCall/onnx_tf_prefix_Concat_85/axis"],"attr":{"T":{"type":"DT_FLOAT"},"Tidx":{"type":"DT_INT32"},"N":{"i":"2"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_87","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_85","PartitionedCall/add_38"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_88","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_87","PartitionedCall/onnx_tf_prefix_Transpose_88/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_90","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_88","PartitionedCall/add_39"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_91","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_90","PartitionedCall/Const_46","PartitionedCall/onnx_tf_prefix_Split_91/split_dim"],"attr":{"num_split":{"i":"2"},"Tlen":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_81","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_91:1","PartitionedCall/transpose_81/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_17","op":"Conv2D","input":["PartitionedCall/transpose_81","PartitionedCall/split_17"],"device":"/device:CPU:0","attr":{"use_cudnn_on_gpu":{"b":true},"padding":{"s":"VkFMSUQ="},"dilations":{"list":{"i":["1","1","1","1"]}},"strides":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="}}}, + {"name":"PartitionedCall/Add_40","op":"Add","input":["PartitionedCall/convolution_17","unknown_56"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_82","op":"Transpose","input":["PartitionedCall/Add_40","PartitionedCall/transpose_82/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_93","op":"LeakyRelu","input":["PartitionedCall/transpose_82"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_10","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_93","PartitionedCall/Const_48"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_84","op":"Transpose","input":["PartitionedCall/Pad_10","PartitionedCall/transpose_84/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_9","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_84","PartitionedCall/Reshape_9"],"attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="}}}, + {"name":"PartitionedCall/Add_41","op":"Add","input":["PartitionedCall/depthwise_9","unknown_58"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_18","op":"Conv2D","input":["PartitionedCall/Add_41","PartitionedCall/split_18"],"device":"/device:CPU:0","attr":{"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="},"use_cudnn_on_gpu":{"b":true},"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}}}}, + {"name":"PartitionedCall/Add_42","op":"Add","input":["PartitionedCall/convolution_18","unknown_60"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_88","op":"Transpose","input":["PartitionedCall/Add_42","PartitionedCall/transpose_88/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_96","op":"LeakyRelu","input":["PartitionedCall/transpose_88"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_97","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_91","PartitionedCall/onnx_tf_prefix_LeakyRelu_96","PartitionedCall/onnx_tf_prefix_Concat_97/axis"],"attr":{"Tidx":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"},"N":{"i":"2"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_99","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_97","PartitionedCall/add_43"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_100","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_99","PartitionedCall/onnx_tf_prefix_Transpose_100/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_102","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_100","PartitionedCall/add_44"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_103","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_102","PartitionedCall/Const_52","PartitionedCall/onnx_tf_prefix_Split_103/split_dim"],"attr":{"T":{"type":"DT_FLOAT"},"Tlen":{"type":"DT_INT32"},"num_split":{"i":"2"}}}, + {"name":"PartitionedCall/transpose_90","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_103:1","PartitionedCall/transpose_90/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_19","op":"Conv2D","input":["PartitionedCall/transpose_90","PartitionedCall/split_19"],"device":"/device:CPU:0","attr":{"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true},"strides":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_45","op":"Add","input":["PartitionedCall/convolution_19","unknown_62"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_91","op":"Transpose","input":["PartitionedCall/Add_45","PartitionedCall/transpose_91/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_105","op":"LeakyRelu","input":["PartitionedCall/transpose_91"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/Pad_11","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_105","PartitionedCall/Const_54"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_93","op":"Transpose","input":["PartitionedCall/Pad_11","PartitionedCall/transpose_93/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_10","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_93","PartitionedCall/Reshape_10"],"attr":{"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_46","op":"Add","input":["PartitionedCall/depthwise_10","unknown_64"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_20","op":"Conv2D","input":["PartitionedCall/Add_46","PartitionedCall/split_20"],"device":"/device:CPU:0","attr":{"padding":{"s":"VkFMSUQ="},"data_format":{"s":"TkhXQw=="},"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true}}}, + {"name":"PartitionedCall/Add_47","op":"Add","input":["PartitionedCall/convolution_20","unknown_66"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_97","op":"Transpose","input":["PartitionedCall/Add_47","PartitionedCall/transpose_97/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_108","op":"LeakyRelu","input":["PartitionedCall/transpose_97"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_109","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_103","PartitionedCall/onnx_tf_prefix_LeakyRelu_108","PartitionedCall/onnx_tf_prefix_Concat_109/axis"],"attr":{"N":{"i":"2"},"Tidx":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_111","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_109","PartitionedCall/add_48"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_112","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_111","PartitionedCall/onnx_tf_prefix_Transpose_112/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_114","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_112","PartitionedCall/add_49"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_115","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_114","PartitionedCall/Const_58","PartitionedCall/onnx_tf_prefix_Split_115/split_dim"],"attr":{"T":{"type":"DT_FLOAT"},"Tlen":{"type":"DT_INT32"},"num_split":{"i":"2"}}}, + {"name":"PartitionedCall/transpose_99","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_115:1","PartitionedCall/transpose_99/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_21","op":"Conv2D","input":["PartitionedCall/transpose_99","PartitionedCall/split_21"],"device":"/device:CPU:0","attr":{"strides":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}}}}, + {"name":"PartitionedCall/Add_50","op":"Add","input":["PartitionedCall/convolution_21","unknown_68"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_100","op":"Transpose","input":["PartitionedCall/Add_50","PartitionedCall/transpose_100/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_117","op":"LeakyRelu","input":["PartitionedCall/transpose_100"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_12","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_117","PartitionedCall/Const_60"],"attr":{"T":{"type":"DT_FLOAT"},"Tpaddings":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_102","op":"Transpose","input":["PartitionedCall/Pad_12","PartitionedCall/transpose_102/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/depthwise_11","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_102","PartitionedCall/Reshape_11"],"attr":{"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="}}}, + {"name":"PartitionedCall/Add_51","op":"Add","input":["PartitionedCall/depthwise_11","unknown_70"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_22","op":"Conv2D","input":["PartitionedCall/Add_51","PartitionedCall/split_22"],"device":"/device:CPU:0","attr":{"T":{"type":"DT_FLOAT"},"use_cudnn_on_gpu":{"b":true},"padding":{"s":"VkFMSUQ="},"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="}}}, + {"name":"PartitionedCall/Add_52","op":"Add","input":["PartitionedCall/convolution_22","unknown_72"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_106","op":"Transpose","input":["PartitionedCall/Add_52","PartitionedCall/transpose_106/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_120","op":"LeakyRelu","input":["PartitionedCall/transpose_106"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_121","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_115","PartitionedCall/onnx_tf_prefix_LeakyRelu_120","PartitionedCall/onnx_tf_prefix_Concat_121/axis"],"attr":{"Tidx":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"},"N":{"i":"2"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_123","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_121","PartitionedCall/add_53"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_124","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_123","PartitionedCall/onnx_tf_prefix_Transpose_124/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_126","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_124","PartitionedCall/add_54"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_127","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_126","PartitionedCall/Const_64","PartitionedCall/onnx_tf_prefix_Split_127/split_dim"],"attr":{"Tlen":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"},"num_split":{"i":"2"}}}, + {"name":"PartitionedCall/transpose_108","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_127:1","PartitionedCall/transpose_108/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/convolution_23","op":"Conv2D","input":["PartitionedCall/transpose_108","PartitionedCall/split_23"],"device":"/device:CPU:0","attr":{"use_cudnn_on_gpu":{"b":true},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="},"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_55","op":"Add","input":["PartitionedCall/convolution_23","unknown_74"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_109","op":"Transpose","input":["PartitionedCall/Add_55","PartitionedCall/transpose_109/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_129","op":"LeakyRelu","input":["PartitionedCall/transpose_109"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/Pad_13","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_129","PartitionedCall/Const_66"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_111","op":"Transpose","input":["PartitionedCall/Pad_13","PartitionedCall/transpose_111/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/depthwise_12","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_111","PartitionedCall/Reshape_12"],"attr":{"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","1","1","1"]}},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_56","op":"Add","input":["PartitionedCall/depthwise_12","unknown_76"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_24","op":"Conv2D","input":["PartitionedCall/Add_56","PartitionedCall/split_24"],"device":"/device:CPU:0","attr":{"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"use_cudnn_on_gpu":{"b":true}}}, + {"name":"PartitionedCall/Add_57","op":"Add","input":["PartitionedCall/convolution_24","unknown_78"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_115","op":"Transpose","input":["PartitionedCall/Add_57","PartitionedCall/transpose_115/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_132","op":"LeakyRelu","input":["PartitionedCall/transpose_115"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_133","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_127","PartitionedCall/onnx_tf_prefix_LeakyRelu_132","PartitionedCall/onnx_tf_prefix_Concat_133/axis"],"attr":{"T":{"type":"DT_FLOAT"},"Tidx":{"type":"DT_INT32"},"N":{"i":"2"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_135","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_133","PartitionedCall/add_58"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_136","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_135","PartitionedCall/onnx_tf_prefix_Transpose_136/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_138","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_136","PartitionedCall/add_59"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_139","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_138","PartitionedCall/Const_70","PartitionedCall/onnx_tf_prefix_Split_139/split_dim"],"attr":{"Tlen":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"},"num_split":{"i":"2"}}}, + {"name":"PartitionedCall/transpose_117","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_139:1","PartitionedCall/transpose_117/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/convolution_25","op":"Conv2D","input":["PartitionedCall/transpose_117","PartitionedCall/split_25"],"device":"/device:CPU:0","attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="},"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="}}}, + {"name":"PartitionedCall/Add_60","op":"Add","input":["PartitionedCall/convolution_25","unknown_80"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_118","op":"Transpose","input":["PartitionedCall/Add_60","PartitionedCall/transpose_118/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_141","op":"LeakyRelu","input":["PartitionedCall/transpose_118"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/Pad_14","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_141","PartitionedCall/Const_72"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_120","op":"Transpose","input":["PartitionedCall/Pad_14","PartitionedCall/transpose_120/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_13","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_120","PartitionedCall/Reshape_13"],"attr":{"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}},"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"explicit_paddings":{"list":{}}}}, + {"name":"PartitionedCall/Add_61","op":"Add","input":["PartitionedCall/depthwise_13","unknown_82"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_26","op":"Conv2D","input":["PartitionedCall/Add_61","PartitionedCall/split_26"],"device":"/device:CPU:0","attr":{"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}}}}, + {"name":"PartitionedCall/Add_62","op":"Add","input":["PartitionedCall/convolution_26","unknown_84"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_124","op":"Transpose","input":["PartitionedCall/Add_62","PartitionedCall/transpose_124/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_144","op":"LeakyRelu","input":["PartitionedCall/transpose_124"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_145","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_139","PartitionedCall/onnx_tf_prefix_LeakyRelu_144","PartitionedCall/onnx_tf_prefix_Concat_145/axis"],"attr":{"Tidx":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"},"N":{"i":"2"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_147","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_145","PartitionedCall/add_63"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_148","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_147","PartitionedCall/onnx_tf_prefix_Transpose_148/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_150","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_148","PartitionedCall/add_64"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/transpose_171","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_150","PartitionedCall/transpose_171/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_15","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_Reshape_150","PartitionedCall/Const_76"],"attr":{"T":{"type":"DT_FLOAT"},"Tpaddings":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_132","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_150","PartitionedCall/transpose_132/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/convolution_37","op":"Conv2D","input":["PartitionedCall/transpose_171","PartitionedCall/split_37"],"device":"/device:CPU:0","attr":{"strides":{"list":{"i":["1","1","1","1"]}},"dilations":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_126","op":"Transpose","input":["PartitionedCall/Pad_15","PartitionedCall/transpose_126/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_28","op":"Conv2D","input":["PartitionedCall/transpose_132","PartitionedCall/split_28"],"device":"/device:CPU:0","attr":{"T":{"type":"DT_FLOAT"},"use_cudnn_on_gpu":{"b":true},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_88","op":"Add","input":["PartitionedCall/convolution_37","unknown_118"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_14","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_126","PartitionedCall/Reshape_14"],"attr":{"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","2","2","1"]}},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_67","op":"Add","input":["PartitionedCall/convolution_28","unknown_90"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_172","op":"Transpose","input":["PartitionedCall/Add_88","PartitionedCall/transpose_172/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_65","op":"Add","input":["PartitionedCall/depthwise_14","unknown_86"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_133","op":"Transpose","input":["PartitionedCall/Add_67","PartitionedCall/transpose_133/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/convolution_27","op":"Conv2D","input":["PartitionedCall/Add_65","PartitionedCall/split_27"],"device":"/device:CPU:0","attr":{"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true},"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_155","op":"LeakyRelu","input":["PartitionedCall/transpose_133"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/Add_66","op":"Add","input":["PartitionedCall/convolution_27","unknown_88"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_16","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_155","PartitionedCall/Const_79"],"attr":{"T":{"type":"DT_FLOAT"},"Tpaddings":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_130","op":"Transpose","input":["PartitionedCall/Add_66","PartitionedCall/transpose_130/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_135","op":"Transpose","input":["PartitionedCall/Pad_16","PartitionedCall/transpose_135/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_153","op":"LeakyRelu","input":["PartitionedCall/transpose_130"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/depthwise_15","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_135","PartitionedCall/Reshape_15"],"attr":{"strides":{"list":{"i":["1","2","2","1"]}},"dilations":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"data_format":{"s":"TkhXQw=="}}}, + {"name":"PartitionedCall/Add_68","op":"Add","input":["PartitionedCall/depthwise_15","unknown_92"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_29","op":"Conv2D","input":["PartitionedCall/Add_68","PartitionedCall/split_29"],"device":"/device:CPU:0","attr":{"strides":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"use_cudnn_on_gpu":{"b":true}}}, + {"name":"PartitionedCall/Add_69","op":"Add","input":["PartitionedCall/convolution_29","unknown_94"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_139","op":"Transpose","input":["PartitionedCall/Add_69","PartitionedCall/transpose_139/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_158","op":"LeakyRelu","input":["PartitionedCall/transpose_139"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_159","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_153","PartitionedCall/onnx_tf_prefix_LeakyRelu_158","PartitionedCall/onnx_tf_prefix_Concat_159/axis"],"attr":{"T":{"type":"DT_FLOAT"},"N":{"i":"2"},"Tidx":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_161","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_159","PartitionedCall/add_70"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_162","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_161","PartitionedCall/onnx_tf_prefix_Transpose_162/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_164","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_162","PartitionedCall/add_71"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_165","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_164","PartitionedCall/Const_83","PartitionedCall/onnx_tf_prefix_Split_165/split_dim"],"attr":{"T":{"type":"DT_FLOAT"},"Tlen":{"type":"DT_INT32"},"num_split":{"i":"2"}}}, + {"name":"PartitionedCall/transpose_141","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_165:1","PartitionedCall/transpose_141/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_30","op":"Conv2D","input":["PartitionedCall/transpose_141","PartitionedCall/split_30"],"device":"/device:CPU:0","attr":{"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"use_cudnn_on_gpu":{"b":true},"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_72","op":"Add","input":["PartitionedCall/convolution_30","unknown_98"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_142","op":"Transpose","input":["PartitionedCall/Add_72","PartitionedCall/transpose_142/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_167","op":"LeakyRelu","input":["PartitionedCall/transpose_142"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/Pad_17","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_167","PartitionedCall/Const_85"],"attr":{"T":{"type":"DT_FLOAT"},"Tpaddings":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_144","op":"Transpose","input":["PartitionedCall/Pad_17","PartitionedCall/transpose_144/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/depthwise_16","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_144","PartitionedCall/Reshape_16"],"attr":{"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="},"padding":{"s":"VkFMSUQ="}}}, + {"name":"PartitionedCall/Add_73","op":"Add","input":["PartitionedCall/depthwise_16","unknown_100"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_31","op":"Conv2D","input":["PartitionedCall/Add_73","PartitionedCall/split_31"],"device":"/device:CPU:0","attr":{"T":{"type":"DT_FLOAT"},"use_cudnn_on_gpu":{"b":true},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_74","op":"Add","input":["PartitionedCall/convolution_31","unknown_102"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_148","op":"Transpose","input":["PartitionedCall/Add_74","PartitionedCall/transpose_148/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_170","op":"LeakyRelu","input":["PartitionedCall/transpose_148"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_171","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_165","PartitionedCall/onnx_tf_prefix_LeakyRelu_170","PartitionedCall/onnx_tf_prefix_Concat_171/axis"],"attr":{"Tidx":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"},"N":{"i":"2"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_173","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_171","PartitionedCall/add_75"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_174","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_173","PartitionedCall/onnx_tf_prefix_Transpose_174/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_176","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_174","PartitionedCall/add_76"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_177","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_176","PartitionedCall/Const_89","PartitionedCall/onnx_tf_prefix_Split_177/split_dim"],"attr":{"Tlen":{"type":"DT_INT32"},"num_split":{"i":"2"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_150","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_177:1","PartitionedCall/transpose_150/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_32","op":"Conv2D","input":["PartitionedCall/transpose_150","PartitionedCall/split_32"],"device":"/device:CPU:0","attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="},"use_cudnn_on_gpu":{"b":true},"strides":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}}}}, + {"name":"PartitionedCall/Add_77","op":"Add","input":["PartitionedCall/convolution_32","unknown_104"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_151","op":"Transpose","input":["PartitionedCall/Add_77","PartitionedCall/transpose_151/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_179","op":"LeakyRelu","input":["PartitionedCall/transpose_151"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_18","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_179","PartitionedCall/Const_91"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_153","op":"Transpose","input":["PartitionedCall/Pad_18","PartitionedCall/transpose_153/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_17","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_153","PartitionedCall/Reshape_17"],"attr":{"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"T":{"type":"DT_FLOAT"},"data_format":{"s":"TkhXQw=="},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_78","op":"Add","input":["PartitionedCall/depthwise_17","unknown_106"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_33","op":"Conv2D","input":["PartitionedCall/Add_78","PartitionedCall/split_33"],"device":"/device:CPU:0","attr":{"use_cudnn_on_gpu":{"b":true},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_79","op":"Add","input":["PartitionedCall/convolution_33","unknown_108"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_157","op":"Transpose","input":["PartitionedCall/Add_79","PartitionedCall/transpose_157/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_182","op":"LeakyRelu","input":["PartitionedCall/transpose_157"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_183","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_177","PartitionedCall/onnx_tf_prefix_LeakyRelu_182","PartitionedCall/onnx_tf_prefix_Concat_183/axis"],"attr":{"N":{"i":"2"},"Tidx":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_185","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_183","PartitionedCall/add_80"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_186","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_185","PartitionedCall/onnx_tf_prefix_Transpose_186/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_188","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_186","PartitionedCall/add_81"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_189","op":"SplitV","input":["PartitionedCall/onnx_tf_prefix_Reshape_188","PartitionedCall/Const_95","PartitionedCall/onnx_tf_prefix_Split_189/split_dim"],"attr":{"Tlen":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"},"num_split":{"i":"2"}}}, + {"name":"PartitionedCall/transpose_159","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Split_189:1","PartitionedCall/transpose_159/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_34","op":"Conv2D","input":["PartitionedCall/transpose_159","PartitionedCall/split_34"],"device":"/device:CPU:0","attr":{"explicit_paddings":{"list":{}},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"use_cudnn_on_gpu":{"b":true}}}, + {"name":"PartitionedCall/Add_82","op":"Add","input":["PartitionedCall/convolution_34","unknown_110"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_160","op":"Transpose","input":["PartitionedCall/Add_82","PartitionedCall/transpose_160/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_191","op":"LeakyRelu","input":["PartitionedCall/transpose_160"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_19","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_191","PartitionedCall/Const_97"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_162","op":"Transpose","input":["PartitionedCall/Pad_19","PartitionedCall/transpose_162/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/depthwise_18","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_162","PartitionedCall/Reshape_18"],"attr":{"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"data_format":{"s":"TkhXQw=="}}}, + {"name":"PartitionedCall/Add_83","op":"Add","input":["PartitionedCall/depthwise_18","unknown_112"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_35","op":"Conv2D","input":["PartitionedCall/Add_83","PartitionedCall/split_35"],"device":"/device:CPU:0","attr":{"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_84","op":"Add","input":["PartitionedCall/convolution_35","unknown_114"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_166","op":"Transpose","input":["PartitionedCall/Add_84","PartitionedCall/transpose_166/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_194","op":"LeakyRelu","input":["PartitionedCall/transpose_166"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Concat_195","op":"ConcatV2","input":["PartitionedCall/onnx_tf_prefix_Split_189","PartitionedCall/onnx_tf_prefix_LeakyRelu_194","PartitionedCall/onnx_tf_prefix_Concat_195/axis"],"attr":{"N":{"i":"2"},"Tidx":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_197","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Concat_195","PartitionedCall/add_85"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_198","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_197","PartitionedCall/onnx_tf_prefix_Transpose_198/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_200","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Transpose_198","PartitionedCall/add_86"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/transpose_174","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_200","PartitionedCall/transpose_174/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_38","op":"Conv2D","input":["PartitionedCall/transpose_174","PartitionedCall/split_38"],"device":"/device:CPU:0","attr":{"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"use_cudnn_on_gpu":{"b":true},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_89","op":"Add","input":["PartitionedCall/convolution_38","unknown_120"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_175","op":"Transpose","input":["PartitionedCall/Add_89","PartitionedCall/transpose_175/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/resize/ResizeBilinear","op":"ResizeBilinear","input":["PartitionedCall/Add_89","PartitionedCall/Cast_33"],"attr":{"align_corners":{"b":false},"T":{"type":"DT_FLOAT"},"half_pixel_centers":{"b":true}}}, + {"name":"PartitionedCall/transpose_177","op":"Transpose","input":["PartitionedCall/resize/ResizeBilinear","PartitionedCall/transpose_177/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Add_224","op":"Add","input":["PartitionedCall/transpose_172","PartitionedCall/transpose_177"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_178","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Add_224","PartitionedCall/transpose_178/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/resize_1/ResizeBilinear","op":"ResizeBilinear","input":["PartitionedCall/transpose_178","PartitionedCall/Cast_35"],"attr":{"align_corners":{"b":false},"T":{"type":"DT_FLOAT"},"half_pixel_centers":{"b":true}}}, + {"name":"PartitionedCall/transpose_179","op":"Transpose","input":["PartitionedCall/resize_1/ResizeBilinear","PartitionedCall/transpose_179/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Add_245","op":"Add","input":["PartitionedCall/transpose_169","PartitionedCall/transpose_179"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_20","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_Add_245","PartitionedCall/Const_104"],"attr":{"T":{"type":"DT_FLOAT"},"Tpaddings":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_180","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Add_245","PartitionedCall/transpose_180/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_185","op":"Transpose","input":["PartitionedCall/Pad_20","PartitionedCall/transpose_185/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/resize_2/ResizeBilinear","op":"ResizeBilinear","input":["PartitionedCall/transpose_180","PartitionedCall/Cast_37"],"attr":{"T":{"type":"DT_FLOAT"},"half_pixel_centers":{"b":true},"align_corners":{"b":false}}}, + {"name":"PartitionedCall/depthwise_19","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_185","PartitionedCall/Reshape_19"],"attr":{"padding":{"s":"VkFMSUQ="},"dilations":{"list":{"i":["1","1","1","1"]}},"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/transpose_181","op":"Transpose","input":["PartitionedCall/resize_2/ResizeBilinear","PartitionedCall/transpose_181/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Add_90","op":"Add","input":["PartitionedCall/depthwise_19","unknown_126"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Add_266","op":"Add","input":["PartitionedCall/onnx_tf_prefix_Add_224","PartitionedCall/transpose_181"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_186","op":"Transpose","input":["PartitionedCall/Add_90","PartitionedCall/transpose_186/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_22","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_Add_266","PartitionedCall/Const_112"],"attr":{"T":{"type":"DT_FLOAT"},"Tpaddings":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_182","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Add_266","PartitionedCall/transpose_182/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_289","op":"LeakyRelu","input":["PartitionedCall/transpose_186"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_200","op":"Transpose","input":["PartitionedCall/Pad_22","PartitionedCall/transpose_200/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/resize_3/ResizeBilinear","op":"ResizeBilinear","input":["PartitionedCall/transpose_182","PartitionedCall/Cast_39"],"attr":{"half_pixel_centers":{"b":true},"T":{"type":"DT_FLOAT"},"align_corners":{"b":false}}}, + {"name":"PartitionedCall/transpose_188","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_289","PartitionedCall/transpose_188/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/depthwise_21","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_200","PartitionedCall/Reshape_21"],"attr":{"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/transpose_183","op":"Transpose","input":["PartitionedCall/resize_3/ResizeBilinear","PartitionedCall/transpose_183/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_39","op":"Conv2D","input":["PartitionedCall/transpose_188","PartitionedCall/split_39"],"device":"/device:CPU:0","attr":{"T":{"type":"DT_FLOAT"},"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"explicit_paddings":{"list":{}},"padding":{"s":"VkFMSUQ="},"dilations":{"list":{"i":["1","1","1","1"]}},"strides":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_97","op":"Add","input":["PartitionedCall/depthwise_21","unknown_138"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Add_287","op":"Add","input":["PartitionedCall/transpose_175","PartitionedCall/transpose_183"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_91","op":"Add","input":["PartitionedCall/convolution_39","unknown_128"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_201","op":"Transpose","input":["PartitionedCall/Add_97","PartitionedCall/transpose_201/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Pad_24","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_Add_287","PartitionedCall/Const_120"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_189","op":"Transpose","input":["PartitionedCall/Add_91","PartitionedCall/transpose_189/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_306","op":"LeakyRelu","input":["PartitionedCall/transpose_201"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/transpose_215","op":"Transpose","input":["PartitionedCall/Pad_24","PartitionedCall/transpose_215/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_291","op":"LeakyRelu","input":["PartitionedCall/transpose_189"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_203","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_306","PartitionedCall/transpose_203/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/depthwise_23","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_215","PartitionedCall/Reshape_23"],"attr":{"data_format":{"s":"TkhXQw=="},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}}}}, + {"name":"PartitionedCall/Pad_21","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_291","PartitionedCall/Const_106"],"attr":{"T":{"type":"DT_FLOAT"},"Tpaddings":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/convolution_42","op":"Conv2D","input":["PartitionedCall/transpose_203","PartitionedCall/split_42"],"device":"/device:CPU:0","attr":{"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"use_cudnn_on_gpu":{"b":true},"padding":{"s":"VkFMSUQ="},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_104","op":"Add","input":["PartitionedCall/depthwise_23","unknown_148"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_191","op":"Transpose","input":["PartitionedCall/Pad_21","PartitionedCall/transpose_191/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_98","op":"Add","input":["PartitionedCall/convolution_42","unknown_140"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_216","op":"Transpose","input":["PartitionedCall/Add_104","PartitionedCall/transpose_216/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_20","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_191","PartitionedCall/Reshape_20"],"attr":{"strides":{"list":{"i":["1","1","1","1"]}},"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"padding":{"s":"VkFMSUQ="},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_204","op":"Transpose","input":["PartitionedCall/Add_98","PartitionedCall/transpose_204/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_323","op":"LeakyRelu","input":["PartitionedCall/transpose_216"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/Add_92","op":"Add","input":["PartitionedCall/depthwise_20","unknown_130"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_308","op":"LeakyRelu","input":["PartitionedCall/transpose_204"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_218","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_323","PartitionedCall/transpose_218/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_192","op":"Transpose","input":["PartitionedCall/Add_92","PartitionedCall/transpose_192/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Pad_23","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_308","PartitionedCall/Const_114"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_45","op":"Conv2D","input":["PartitionedCall/transpose_218","PartitionedCall/split_45"],"device":"/device:CPU:0","attr":{"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"use_cudnn_on_gpu":{"b":true},"dilations":{"list":{"i":["1","1","1","1"]}},"strides":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_293","op":"LeakyRelu","input":["PartitionedCall/transpose_192"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/transpose_206","op":"Transpose","input":["PartitionedCall/Pad_23","PartitionedCall/transpose_206/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Add_105","op":"Add","input":["PartitionedCall/convolution_45","unknown_150"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_194","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_293","PartitionedCall/transpose_194/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_22","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_206","PartitionedCall/Reshape_22"],"attr":{"padding":{"s":"VkFMSUQ="},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/transpose_219","op":"Transpose","input":["PartitionedCall/Add_105","PartitionedCall/transpose_219/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/convolution_40","op":"Conv2D","input":["PartitionedCall/transpose_194","PartitionedCall/split_40"],"device":"/device:CPU:0","attr":{"padding":{"s":"VkFMSUQ="},"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"strides":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"T":{"type":"DT_FLOAT"},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/Add_99","op":"Add","input":["PartitionedCall/depthwise_22","unknown_142"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_325","op":"LeakyRelu","input":["PartitionedCall/transpose_219"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/Add_93","op":"Add","input":["PartitionedCall/convolution_40","unknown_132"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_207","op":"Transpose","input":["PartitionedCall/Add_99","PartitionedCall/transpose_207/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Pad_25","op":"Pad","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_325","PartitionedCall/Const_122"],"attr":{"Tpaddings":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_195","op":"Transpose","input":["PartitionedCall/Add_93","PartitionedCall/transpose_195/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_310","op":"LeakyRelu","input":["PartitionedCall/transpose_207"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_221","op":"Transpose","input":["PartitionedCall/Pad_25","PartitionedCall/transpose_221/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_295","op":"LeakyRelu","input":["PartitionedCall/transpose_195"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"PartitionedCall/transpose_209","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_310","PartitionedCall/transpose_209/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/depthwise_24","op":"DepthwiseConv2dNative","input":["PartitionedCall/transpose_221","PartitionedCall/Reshape_24"],"attr":{"explicit_paddings":{"list":{}},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/transpose_197","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_295","PartitionedCall/transpose_197/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/convolution_43","op":"Conv2D","input":["PartitionedCall/transpose_209","PartitionedCall/split_43"],"device":"/device:CPU:0","attr":{"data_format":{"s":"TkhXQw=="},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}},"dilations":{"list":{"i":["1","1","1","1"]}},"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"use_cudnn_on_gpu":{"b":true}}}, + {"name":"PartitionedCall/Add_106","op":"Add","input":["PartitionedCall/depthwise_24","unknown_152"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_41","op":"Conv2D","input":["PartitionedCall/transpose_197","PartitionedCall/split_41"],"device":"/device:CPU:0","attr":{"data_format":{"s":"TkhXQw=="},"use_cudnn_on_gpu":{"b":true},"padding":{"s":"VkFMSUQ="},"explicit_paddings":{"list":{}},"dilations":{"list":{"i":["1","1","1","1"]}},"strides":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_100","op":"Add","input":["PartitionedCall/convolution_43","unknown_144"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_222","op":"Transpose","input":["PartitionedCall/Add_106","PartitionedCall/transpose_222/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_94","op":"Add","input":["PartitionedCall/convolution_41","unknown_134"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_210","op":"Transpose","input":["PartitionedCall/Add_100","PartitionedCall/transpose_210/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_327","op":"LeakyRelu","input":["PartitionedCall/transpose_222"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_198","op":"Transpose","input":["PartitionedCall/Add_94","PartitionedCall/transpose_198/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_312","op":"LeakyRelu","input":["PartitionedCall/transpose_210"],"attr":{"alpha":{"f":0.1},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_224","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_327","PartitionedCall/transpose_224/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_297","op":"SplitV","input":["PartitionedCall/transpose_198","PartitionedCall/Const_109","PartitionedCall/onnx_tf_prefix_Split_297/split_dim"],"attr":{"num_split":{"i":"2"},"T":{"type":"DT_FLOAT"},"Tlen":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/transpose_212","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_312","PartitionedCall/transpose_212/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/convolution_46","op":"Conv2D","input":["PartitionedCall/transpose_224","PartitionedCall/split_46"],"device":"/device:CPU:0","attr":{"use_cudnn_on_gpu":{"b":true},"padding":{"s":"VkFMSUQ="},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"T":{"type":"DT_FLOAT"},"strides":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Sigmoid_298","op":"Sigmoid","input":["PartitionedCall/onnx_tf_prefix_Split_297"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_303","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Split_297:1","PartitionedCall/add_96"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_44","op":"Conv2D","input":["PartitionedCall/transpose_212","PartitionedCall/split_44"],"device":"/device:CPU:0","attr":{"strides":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="}}}, + {"name":"PartitionedCall/Add_107","op":"Add","input":["PartitionedCall/convolution_46","unknown_154"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_300","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Sigmoid_298","PartitionedCall/add_95"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_304","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_303","PartitionedCall/onnx_tf_prefix_Transpose_304/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/Add_101","op":"Add","input":["PartitionedCall/convolution_44","unknown_146"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_225","op":"Transpose","input":["PartitionedCall/Add_107","PartitionedCall/transpose_225/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_301","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_300","PartitionedCall/onnx_tf_prefix_Transpose_301/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"Identity_3","op":"Identity","input":["PartitionedCall/onnx_tf_prefix_Transpose_304"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_213","op":"Transpose","input":["PartitionedCall/Add_101","PartitionedCall/transpose_213/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_LeakyRelu_329","op":"LeakyRelu","input":["PartitionedCall/transpose_225"],"attr":{"T":{"type":"DT_FLOAT"},"alpha":{"f":0.1}}}, + {"name":"Identity","op":"Identity","input":["PartitionedCall/onnx_tf_prefix_Transpose_301"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_314","op":"SplitV","input":["PartitionedCall/transpose_213","PartitionedCall/Const_117","PartitionedCall/onnx_tf_prefix_Split_314/split_dim"],"attr":{"num_split":{"i":"2"},"Tlen":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_227","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_LeakyRelu_329","PartitionedCall/transpose_227/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Sigmoid_315","op":"Sigmoid","input":["PartitionedCall/onnx_tf_prefix_Split_314"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_320","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Split_314:1","PartitionedCall/add_103"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/convolution_47","op":"Conv2D","input":["PartitionedCall/transpose_227","PartitionedCall/split_47"],"device":"/device:CPU:0","attr":{"T":{"type":"DT_FLOAT"},"padding":{"s":"VkFMSUQ="},"use_cudnn_on_gpu":{"b":true},"data_format":{"s":"TkhXQw=="},"dilations":{"list":{"i":["1","1","1","1"]}},"explicit_paddings":{"list":{}},"strides":{"list":{"i":["1","1","1","1"]}}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_317","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Sigmoid_315","PartitionedCall/add_102"],"attr":{"T":{"type":"DT_FLOAT"},"Tshape":{"type":"DT_INT64"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_321","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_320","PartitionedCall/onnx_tf_prefix_Transpose_321/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/Add_108","op":"Add","input":["PartitionedCall/convolution_47","unknown_156"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_318","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_317","PartitionedCall/onnx_tf_prefix_Transpose_318/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"Identity_4","op":"Identity","input":["PartitionedCall/onnx_tf_prefix_Transpose_321"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/transpose_228","op":"Transpose","input":["PartitionedCall/Add_108","PartitionedCall/transpose_228/perm"],"attr":{"T":{"type":"DT_FLOAT"},"Tperm":{"type":"DT_INT32"}}}, + {"name":"Identity_1","op":"Identity","input":["PartitionedCall/onnx_tf_prefix_Transpose_318"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Split_331","op":"SplitV","input":["PartitionedCall/transpose_228","PartitionedCall/Const_125","PartitionedCall/onnx_tf_prefix_Split_331/split_dim"],"attr":{"num_split":{"i":"2"},"T":{"type":"DT_FLOAT"},"Tlen":{"type":"DT_INT32"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Sigmoid_332","op":"Sigmoid","input":["PartitionedCall/onnx_tf_prefix_Split_331"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_337","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Split_331:1","PartitionedCall/add_110"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Reshape_334","op":"Reshape","input":["PartitionedCall/onnx_tf_prefix_Sigmoid_332","PartitionedCall/add_109"],"attr":{"Tshape":{"type":"DT_INT64"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_338","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_337","PartitionedCall/onnx_tf_prefix_Transpose_338/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"PartitionedCall/onnx_tf_prefix_Transpose_335","op":"Transpose","input":["PartitionedCall/onnx_tf_prefix_Reshape_334","PartitionedCall/onnx_tf_prefix_Transpose_335/perm"],"attr":{"Tperm":{"type":"DT_INT32"},"T":{"type":"DT_FLOAT"}}}, + {"name":"Identity_5","op":"Identity","input":["PartitionedCall/onnx_tf_prefix_Transpose_338"],"attr":{"T":{"type":"DT_FLOAT"}}}, + {"name":"Identity_2","op":"Identity","input":["PartitionedCall/onnx_tf_prefix_Transpose_335"],"attr":{"T":{"type":"DT_FLOAT"}}} + ], + "library": {}, + "versions": + { + "producer": 561 + } + }, + "weightsManifest": + [ + { + "paths": ["nanodet.bin"], + "weights": [{"name":"PartitionedCall/Where_32","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_40","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_32","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_32","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_301/perm","shape":[3],"dtype":"int32"},{"name":"PartitionedCall/Where_34","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_42","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_34","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_34","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_318/perm","shape":[3],"dtype":"int32"},{"name":"unknown_135","shape":[3],"dtype":"int32"},{"name":"PartitionedCall/Where_36","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_44","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_36","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_36","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_335/perm","shape":[3],"dtype":"int32"},{"name":"PartitionedCall/Const_104","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_185/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_19","shape":[3,3,96,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_126","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_186/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_188/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_39","shape":[1,1,96,96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_128","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_189/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_106","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_191/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_20","shape":[3,3,96,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_130","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_192/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_194/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_40","shape":[1,1,96,96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_132","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_195/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_197/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_41","shape":[1,1,96,112],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_134","shape":[112],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_198/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_109","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_297/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_33","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_41","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_33","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_33","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_304/perm","shape":[3],"dtype":"int32"},{"name":"PartitionedCall/Const_112","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_200/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_21","shape":[3,3,96,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_138","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_201/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_203/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_42","shape":[1,1,96,96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_140","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_204/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_114","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_206/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_22","shape":[3,3,96,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_142","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_207/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_209/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_43","shape":[1,1,96,96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_144","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_210/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_212/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_44","shape":[1,1,96,112],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_146","shape":[112],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_213/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_117","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_314/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_35","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_43","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_35","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_35","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_321/perm","shape":[3],"dtype":"int32"},{"name":"PartitionedCall/transpose_175/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_168/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_36","shape":[1,1,116,96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_116","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_169/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_171/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_37","shape":[1,1,232,96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_118","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_172/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_76","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_126/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_14","shape":[3,3,232,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_86","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_27","shape":[1,1,232,232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_88","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_130/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_27","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_48/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_5","shape":[3,3,116,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_32","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_10","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_34","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_52/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_4/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_2","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_6/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape","shape":[3,3,24,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_2","shape":[24],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_1","shape":[1,1,24,58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_4","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_10/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_1/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split","shape":[3,3,3,24],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_0","shape":[24],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_2/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/PadV2/paddings","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/PadV2/constant_values","shape":[],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_3/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_2","shape":[1,1,24,58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_6","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_13/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_5","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_15/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_1","shape":[3,3,58,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_8","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_3","shape":[1,1,58,58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_10","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_19/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_11/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_14/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_1","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_1","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_1","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_1","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_9","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_17/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_21/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_4","shape":[1,1,58,58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_14","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_22/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_11","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_24/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_2","shape":[3,3,58,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_16","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_5","shape":[1,1,58,58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_18","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_28/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_23/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_2","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_2","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_2","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_2","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_26/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_3","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_3","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_3","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_3","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_15","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_29/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_30/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_6","shape":[1,1,58,58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_20","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_31/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_17","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_33/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_3","shape":[3,3,58,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_22","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_7","shape":[1,1,58,58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_24","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_37/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_35/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_4","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_4","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_4","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_4","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_38/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_5","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_5","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_5","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_5","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_21","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_41/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_39/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_8","shape":[1,1,58,58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_26","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_40/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_23","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_42/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_4","shape":[3,3,58,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_28","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_9","shape":[1,1,58,58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_30","shape":[58],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_46/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_47/axis","shape":[],"dtype":"int32"},{"name":"unknown_11","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_6","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_6","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_6","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_6","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_50/perm","shape":[5],"dtype":"int32"},{"name":"unknown_12","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Where_7","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_7","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_7","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_7","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_54/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_11","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_36","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_55/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_30","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_57/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_6","shape":[3,3,116,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_38","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_12","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_40","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_61/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_61/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_8","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_8","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_8","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_8","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_64/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_9","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_9","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_9","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_9","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_34","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_67/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_63/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_13","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_44","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_64/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_36","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_66/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_7","shape":[3,3,116,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_46","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_14","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_48","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_70/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_73/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_10","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_10","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_10","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_10","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_76/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_11","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_11","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_11","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_11","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_40","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_79/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_72/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_15","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_50","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_73/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_42","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_75/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_8","shape":[3,3,116,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_52","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_16","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_54","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_79/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_85/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_12","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_12","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_12","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_12","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_88/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_13","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_13","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_13","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_13","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_46","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_91/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_81/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_17","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_56","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_82/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_48","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_84/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_9","shape":[3,3,116,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_58","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_18","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_60","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_88/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_97/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_14","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_14","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_14","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_14","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_100/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_15","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_15","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_15","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_15","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_52","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_103/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_90/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_19","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_62","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_91/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_54","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_93/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_10","shape":[3,3,116,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_64","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_20","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_66","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_97/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_109/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_16","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_16","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_16","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_16","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_112/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_17","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_17","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_17","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_17","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_58","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_115/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_99/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_21","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_68","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_100/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_60","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_102/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_11","shape":[3,3,116,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_70","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_22","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_72","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_106/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_121/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_18","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_18","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_18","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_18","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_124/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_19","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_19","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_19","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_19","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_64","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_127/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_108/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_23","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_74","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_109/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_66","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_111/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_12","shape":[3,3,116,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_76","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_24","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_78","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_115/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_133/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_20","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_20","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_20","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_20","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_136/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_21","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_21","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_21","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_21","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_70","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_139/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_117/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_25","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_80","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_118/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_72","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_120/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_13","shape":[3,3,116,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_82","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_26","shape":[1,1,116,116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_84","shape":[116],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_124/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_145/axis","shape":[],"dtype":"int32"},{"name":"unknown_41","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_22","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_22","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_22","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_22","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_148/perm","shape":[5],"dtype":"int32"},{"name":"unknown_42","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Where_23","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_23","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_23","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_23","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_132/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_28","shape":[1,1,232,232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_90","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_133/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_79","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_135/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_15","shape":[3,3,232,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_92","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_29","shape":[1,1,232,232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_94","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_139/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_159/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_24","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_24","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_24","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_24","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_162/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_25","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_25","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_25","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_25","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_83","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_165/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_141/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_30","shape":[1,1,232,232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_98","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_142/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_85","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_144/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_16","shape":[3,3,232,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_100","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_31","shape":[1,1,232,232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_102","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_148/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_171/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_26","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_26","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_26","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_26","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_174/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_27","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_27","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_27","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_27","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_89","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_177/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_150/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_32","shape":[1,1,232,232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_104","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_151/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_91","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_153/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_17","shape":[3,3,232,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_106","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_33","shape":[1,1,232,232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_108","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_157/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_183/axis","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Where_28","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_28","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_28","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_28","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_186/perm","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_29","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_29","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_29","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_29","shape":[],"dtype":"int32"},{"name":"PartitionedCall/Const_95","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_189/split_dim","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_159/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_34","shape":[1,1,232,232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_110","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_160/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_97","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_162/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_18","shape":[3,3,232,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_112","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/split_35","shape":[1,1,232,232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_114","shape":[232],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_166/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Concat_195/axis","shape":[],"dtype":"int32"},{"name":"unknown_95","shape":[5],"dtype":"int32"},{"name":"PartitionedCall/Where_30","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_30","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_30","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_30","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_198/perm","shape":[5],"dtype":"int32"},{"name":"unknown_96","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Where_31","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_31","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_31","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_31","shape":[],"dtype":"int32"},{"name":"PartitionedCall/transpose_174/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_38","shape":[1,1,464,96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_120","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/Cast_33","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/transpose_177/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_178/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Cast_35","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/transpose_179/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_180/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Cast_37","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/transpose_181/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_182/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Cast_39","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/transpose_183/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_120","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_215/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_23","shape":[3,3,96,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_148","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_216/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_218/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_45","shape":[1,1,96,96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_150","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_219/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_122","shape":[4,2],"dtype":"int32"},{"name":"PartitionedCall/transpose_221/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Reshape_24","shape":[3,3,96,1],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_152","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_222/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_224/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_46","shape":[1,1,96,96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_154","shape":[96],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_225/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/transpose_227/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/split_47","shape":[1,1,96,112],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"unknown_156","shape":[112],"dtype":"float32","quantization":{"dtype":"float16","original_dtype":"float32"}},{"name":"PartitionedCall/transpose_228/perm","shape":[4],"dtype":"int32"},{"name":"PartitionedCall/Const_125","shape":[2],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Split_331/split_dim","shape":[],"dtype":"int32"},{"name":"unknown_136","shape":[3],"dtype":"int32"},{"name":"PartitionedCall/Where_37","shape":[0,1],"dtype":"int32"},{"name":"PartitionedCall/Cast_45","shape":[1],"dtype":"int32"},{"name":"PartitionedCall/GatherV2_37","shape":[0],"dtype":"int32"},{"name":"PartitionedCall/zeros_37","shape":[],"dtype":"int32"},{"name":"PartitionedCall/onnx_tf_prefix_Transpose_338/perm","shape":[3],"dtype":"int32"}] + } + ] +} \ No newline at end of file diff --git a/models/posenet.json b/models/posenet.json index 300b3f34..a2062d05 100644 --- a/models/posenet.json +++ b/models/posenet.json @@ -1,6 +1,6 @@ { "format": "graph-model", - "generatedBy": "2.0.0-dev20190603", + "generatedBy": "https://github.com/tensorflow/tfjs-models", "convertedBy": "https://github.com/vladmandic", "modelTopology": { diff --git a/package-lock.json b/package-lock.json index a6239a29..117918a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "@vladmandic/pilogger": "^0.2.14", "chokidar": "^3.5.1", "dayjs": "^1.10.4", - "esbuild": "^0.9.2", + "esbuild": "^0.9.3", "eslint": "^7.22.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-plugin-import": "^2.22.1", @@ -1397,9 +1397,9 @@ } }, "node_modules/esbuild": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.2.tgz", - "integrity": "sha512-xE3oOILjnmN8PSjkG3lT9NBbd1DbxNqolJ5qNyrLhDWsFef3yTp/KTQz1C/x7BYFKbtrr9foYtKA6KA1zuNAUQ==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.3.tgz", + "integrity": "sha512-G8k0olucZp3LJ7I/p8y388t+IEyb2Y78nHrLeIxuqZqh6TYqDYP/B/7drAvYKfh83CGwKal9txVP+FTypsPJug==", "dev": true, "hasInstallScript": true, "bin": { @@ -5449,9 +5449,9 @@ } }, "esbuild": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.2.tgz", - "integrity": "sha512-xE3oOILjnmN8PSjkG3lT9NBbd1DbxNqolJ5qNyrLhDWsFef3yTp/KTQz1C/x7BYFKbtrr9foYtKA6KA1zuNAUQ==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.3.tgz", + "integrity": "sha512-G8k0olucZp3LJ7I/p8y388t+IEyb2Y78nHrLeIxuqZqh6TYqDYP/B/7drAvYKfh83CGwKal9txVP+FTypsPJug==", "dev": true }, "escalade": { diff --git a/package.json b/package.json index 839f1fb0..b11b20d2 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "@vladmandic/pilogger": "^0.2.14", "chokidar": "^3.5.1", "dayjs": "^1.10.4", - "esbuild": "^0.9.2", + "esbuild": "^0.9.3", "eslint": "^7.22.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-plugin-import": "^2.22.1",