2023-04-03 16:36:01 +02:00
|
|
|
/*
|
|
|
|
Human
|
|
|
|
homepage: <https://github.com/vladmandic/human>
|
|
|
|
author: <https://github.com/vladmandic>'
|
|
|
|
*/
|
|
|
|
|
2023-05-08 15:16:52 +02:00
|
|
|
import*as U from"../../dist/human.esm.js";var J=Object.defineProperty,z=Object.getOwnPropertyNames,w=(l,y)=>J(l,"name",{value:y,configurable:!0}),S=(l,y)=>function(){return y||(0,l[z(l)[0]])((y={exports:{}}).exports,y),y.exports},q=S({"node_modules/.pnpm/uuid@3.2.1/node_modules/uuid/lib/rng-browser.js"(l,y){var f=typeof crypto!="undefined"&&crypto.getRandomValues.bind(crypto)||typeof msCrypto!="undefined"&&msCrypto.getRandomValues.bind(msCrypto);f?(c=new Uint8Array(16),y.exports=w(function(){return f(c),c},"whatwgRNG")):(s=new Array(16),y.exports=w(function(){for(var g=0,h;g<16;g++)g&3||(h=Math.random()*4294967296),s[g]=h>>>((g&3)<<3)&255;return s},"mathRNG"));var c,s}}),X=S({"node_modules/.pnpm/uuid@3.2.1/node_modules/uuid/lib/bytesToUuid.js"(l,y){var f=[];for(s=0;s<256;++s)f[s]=(s+256).toString(16).substr(1);function c(i,g){var h=g||0,e=f;return e[i[h++]]+e[i[h++]]+e[i[h++]]+e[i[h++]]+"-"+e[i[h++]]+e[i[h++]]+"-"+e[i[h++]]+e[i[h++]]+"-"+e[i[h++]]+e[i[h++]]+"-"+e[i[h++]]+e[i[h++]]+e[i[h++]]+e[i[h++]]+e[i[h++]]+e[i[h++]]}w(c,"bytesToUuid"),y.exports=c;var s}}),j=S({"node_modules/.pnpm/uuid@3.2.1/node_modules/uuid/v4.js"(l,y){var f=q(),c=X();function s(i,g,h){var e=g&&h||0;typeof i=="string"&&(g=i==="binary"?new Array(16):null,i=null),i=i||{};var n=i.random||(i.rng||f)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,g)for(var t=0;t<16;++t)g[e+t]=n[t];return g||c(n)}w(s,"v4"),y.exports=s}}),C=S({"utils.js"(l){l.isDetectionTooLarge=(c,s)=>c.w>=s;var y=w((c,s)=>{let i=c.x-c.w/2,g=c.x+c.w/2,h=c.y-c.h/2,e=c.y+c.h/2;return s.x>=i&&s.x<=g&&s.y>=h&&s.y<=e},"isInsideArea");l.isInsideArea=y,l.isInsideSomeAreas=(c,s)=>c.some(g=>y(g,s)),l.ignoreObjectsNotToDetect=(c,s)=>c.filter(i=>s.indexOf(i.name)>-1);var f=w(c=>({x0:c.x-c.w/2,y0:c.y-c.h/2,x1:c.x+c.w/2,y1:c.y+c.h/2}),"getRectangleEdges");l.getRectangleEdges=f,l.iouAreas=(c,s)=>{var i=f(c),g=f(s),h=Math.max(i.x0,g.x0),e=Math.max(i.y0,g.y0),n=Math.min(i.x1,g.x1),t=Math.min(i.y1,g.y1);if(n-h<=0||t-e<=0)return 0;{let r=c.w*c.h,a=s.w*s.h,o=(n-h)*(t-e),m=r+a-o;return o/m}},l.computeVelocityVector=(c,s,i)=>({dx:(s.x-c.x)/i,dy:(s.y-c.y)/i}),l.computeBearingIn360=function(c,s){var i=Math.atan(c/s)/(Math.PI/180);return i>0?s>0?i:180+i:c>0?180+i:360+i}}}),Y=S({"ItemTracked.js"(l){var y=j(),f=C().computeBearingIn360,c=C().computeVelocityVector;l.ITEM_HISTORY_MAX_LENGTH=15;var s=0;l.ItemTracked=function(i,g,h,e){var n=h,t={};return t.available=!0,t.delete=!1,t.fastDelete=e,t.frameUnmatchedLeftBeforeDying=h,t.isZombie=!1,t.appearFrame=g,t.disappearFrame=null,t.disappearArea={},t.nameCount={},t.nameCount[i.name]=1,t.x=i.x,t.y=i.y,t.w=i.w,t.h=i.h,t.name=i.name,t.confidence=i.confidence,t.itemHistory=[],t.itemHistory.push({x:i.x,y:i.y,w:i.w,h:i.h,confidence:i.confidence}),t.itemHistory.length>=l.ITEM_HISTORY_MAX_LENGTH&&t.itemHistory.shift(),t.velocity={dx:0,dy:0},t.nbTimeMatched=1,t.id=y(),t.idDisplay=s,s++,t.update=function(r,a){this.disappearFrame&&(this.disappearFrame=null,this.disappearArea={}),this.isZombie=!1,this.nbTimeMatched+=1,this.x=r.x,this.y=r.y,this.w=r.w,this.h=r.h,this.confidence=r.confidence,this.itemHistory.push({x:this.x,y:this.y,w:this.w,h:this.h,confidence:this.confidence}),t.itemHistory.length>=l.ITEM_HISTORY_MAX_LENGTH&&t.itemHistory.shift(),this.name=r.name,this.nameCount[r.name]?this.nameCount[r.name]++:this.nameCount[r.name]=1,this.frameUnmatchedLeftBeforeDying=n,this.velocity=this.updateVelocityVector()},t.makeAvailable=function(){return this.available=!0,this},t.makeUnavailable=function(){return this.available=!1,this},t.countDown=function(r){this.disappearFrame===null&&(this.disappearFrame=r,this.disappearArea={x:this.x,y:this.y,w:this.w,h:this.h}),this.frameUnmatchedLeftBeforeDying--,this.isZombie=!0,this.fastDelete&&this.nbTimeMatched<=1&&(this.frameUnmatchedLeftBeforeDying=-1)},t.updateTheoricalPositionAndSize=function(){this.itemHistory.push({x:this.x,y:this.y,w:this.w,h:this.h,confidence:this.confidence}),t.itemHistory.length>=l.ITEM_HISTORY_MAX_LENGTH&&t.itemHistory.shift(),this.x=this.x+this.velocity.dx,this.y=this.y+this.velocity.dy},t.predictNextPosition=function(){retu
|
|
|
|
`)}return o}w(g,"format_matrix");function h(e,n){var t=new s;return t.compute(e,n)}w(h,"computeMunkres"),h.version="1.2.2",h.format_matrix=g,h.make_cost_matrix=i,h.Munkres=s,typeof y!="undefined"&&y.exports&&(y.exports=h)}}),Q=S({"tracker.js"(l){var y=Y(),f=y.ItemTracked,c=W().kdTree,s=C().iouAreas,i=K(),g=!1,h=w(function(a,o){var m=s(a,o),u=1-m;return u>1-e.iouLimit&&(u=e.distanceLimit+1),u},"iouDistance"),e={unMatchedFramesTolerance:5,iouLimit:.05,fastDelete:!0,distanceFunc:h,distanceLimit:1e4,matchingAlgorithm:"kdTree"},n=new Map,t=new Map,r=!1;l.computeDistance=h,l.updateTrackedItemsWithNewFrame=function(a,o){var m=new c(Array.from(n.values()),e.distanceFunc,["x","y","w","h"]),u=new c(a,e.distanceFunc,["x","y","w","h"]);if(n.size===0)a.forEach(function(v){var b=new f(v,o,e.unMatchedFramesTolerance,e.fastDelete);n.set(b.id,b),m.insert(b)});else{var d=new Array(a.length);if(d.fill(!1),a.length>0)if(e.matchingAlgorithm==="munkres"){var I=Array.from(n.keys()),p=Array.from(n.values()).map(v=>{var b=v.predictNextPosition();return a.map(k=>e.distanceFunc(b,k))});n.forEach(function(v){v.makeAvailable()}),i(p).filter(v=>p[v[0]][v[1]]<=e.distanceLimit).forEach(v=>{var b=n.get(I[v[0]]),k=a[v[1]];d[v[1]]={idDisplay:b.idDisplay},b.makeUnavailable().update(k,o)}),d.forEach(function(v,b){if(!v&&Math.min(...p.map(T=>T[b]))>e.distanceLimit){var k=f(a[b],o,e.unMatchedFramesTolerance,e.fastDelete);n.set(k.id,k),k.makeUnavailable(),p.push(a.map(T=>e.distanceFunc(k,T)))}})}else if(e.matchingAlgorithm==="kdTree")n.forEach(function(v){var b=v.predictNextPosition();v.makeAvailable();var k=u.nearest(b,1,e.distanceLimit)[0],T=u.nearest(v,1,e.distanceLimit)[0],O=u.nearest(b,2,e.distanceLimit);if(k){var x=a.indexOf(k[0]);if(!d[x]){d[x]={idDisplay:v.idDisplay};var E=a[x];n.get(v.id).makeUnavailable().update(E,o)}}});else throw`Unknown matching algorithm "${e.matchingAlgorithm}"`;else g&&console.log("[Tracker] Nothing detected for frame n\xBA"+o),n.forEach(function(v){v.makeAvailable()});e.matchingAlgorithm==="kdTree"&&n.size>0&&(m=new c(Array.from(n.values()),e.distanceFunc,["x","y","w","h"]),d.forEach(function(v,b){if(!v){var k=m.nearest(a[b],1,e.distanceLimit)[0];if(!k){var T=f(a[b],o,e.unMatchedFramesTolerance,e.fastDelete);n.set(T.id,T),m.insert(T),T.makeUnavailable()}}})),n.forEach(function(v){v.available&&(v.countDown(o),v.updateTheoricalPositionAndSize(),v.isDead()&&(n.delete(v.id),m.remove(v),r&&t.set(v.id,v)))})}},l.reset=function(){n=new Map,t=new Map,y.reset()},l.setParams=function(a){Object.keys(a).forEach(o=>{e[o]=a[o]})},l.enableKeepInMemory=function(){r=!0},l.disableKeepInMemory=function(){r=!1},l.getJSONOfTrackedItems=function(a=!0){return Array.from(n.values()).map(function(o){return o.toJSON(a)})},l.getJSONDebugOfTrackedItems=function(a=!0){return Array.from(n.values()).map(function(o){return o.toJSONDebug(a)})},l.getTrackedItemsInMOTFormat=function(a){return Array.from(n.values()).map(function(o){return o.toMOT(a)})},l.getAllTrackedItems=function(){return t},l.getJSONOfAllTrackedItems=function(){return Array.from(t.values()).map(function(a){return a.toJSONGenericInfo()})}}}),D=Q();var R={debug:!0,backend:"webgl",modelBasePath:"https://vladmandic.github.io/human-models/models",filter:{enabled:!0,equalization:!1,flip:!1},face:{enabled:!0,detector:{rotation:!1,maxDetected:10,minConfidence:.3},mesh:{enabled:!0},attention:{enabled:!1},iris:{enabled:!1},description:{enabled:!1},emotion:{enabled:!1},antispoof:{enabled:!1},liveness:{enabled:!1}},body:{enabled:!1,maxDetected:6,modelPath:"movenet-multipose.json"},hand:{enabled:!1},object:{enabled:!1,maxDetected:10},segmentation:{enabled:!1},gesture:{enabled:!1}},F={unMatchedFramesTolerance:100,iouLimit:.05,fastDelete:!1,distanceLimit:1e4,matchingAlgorithm:"kdTree"},M=new U.Human(R),_={video:document.getElementById("video"),canvas:document.getElementById("canvas"),log:document.getElementById("log"),fps:document.getElementById("status"),tracker:document.getElementById("tracker"),interpolation:document.getElementById("interpolation"),config:document.getElementById("config"),ctx:document.g
|
|
|
|
`,console.log(...l)},B=l=>_.fps.innerText=l;async function V(){if(!_.video.paused&&_.video.readyState>=2){A.start===0&&(A.start=M.now()),await M.detect(_.video,R);let l=M.tf.memory().numTensors;l-A.tensors!==0&&H("allocated tensors:",l-A.tensors),A.tensors=l,N.detectFPS=Math.round(1e3*1e3/(M.now()-A.detect))/1e3,N.frames++,N.averageMs=Math.round(1e3*(M.now()-A.start)/N.frames)/1e3}A.detect=M.now(),requestAnimationFrame(V)}function Z(){if(!_.video.paused&&_.video.readyState>=2){let y=_.interpolation.checked?M.next(M.result):M.result,f=[];M.config.face.enabled?f=y.face:M.config.body.enabled?f=y.body:M.config.object.enabled?f=y.object:H("unknown object type");let c=[];if(_.tracker.checked){let s=f.map(i=>({x:i.box[0]+i.box[2]/2,y:i.box[1]+i.box[3]/2,w:i.box[2],h:i.box[3],name:i.label||(M.config.face.enabled?"face":"body"),confidence:i.score}));D.updateTrackedItemsWithNewFrame(s,N.frames),c=D.getJSONOfTrackedItems(!0)}M.draw.canvas(_.video,_.canvas);for(let s=0;s<f.length;s++){let i=f[s].label||(M.config.face.enabled?"face":"body");_.ctx.strokeRect(f[s].box[0],f[s].box[1],f[s].box[1],f[s].box[2]),_.ctx.fillText(`id: ${f[s].id} ${Math.round(100*f[s].score)}% ${i}`,f[s].box[0]+4,f[s].box[1]+16),c[s]&&_.ctx.fillText(`t: ${c[s].id} ${Math.round(100*c[s].confidence)}% ${c[s].name} ${c[s].isZombie?"zombie":""}`,f[s].box[0]+4,f[s].box[1]+34)}}let l=M.now();N.drawFPS=Math.round(1e3*1e3/(l-A.draw))/1e3,A.draw=l,B(_.video.paused?"paused":`fps: ${N.detectFPS.toFixed(1).padStart(5," ")} detect | ${N.drawFPS.toFixed(1).padStart(5," ")} draw`),setTimeout(Z,30)}async function P(l){let y=URL.createObjectURL(l);_.video.src=y,await _.video.play(),H("loaded video:",l.name,"resolution:",[_.video.videoWidth,_.video.videoHeight],"duration:",_.video.duration),_.canvas.width=_.video.videoWidth,_.canvas.height=_.video.videoHeight,_.ctx.strokeStyle="white",_.ctx.fillStyle="white",_.ctx.font="16px Segoe UI",_.video.playbackRate=.25}function ee(){document.body.addEventListener("dragenter",l=>l.preventDefault()),document.body.addEventListener("dragleave",l=>l.preventDefault()),document.body.addEventListener("dragover",l=>l.preventDefault()),document.body.addEventListener("drop",async l=>{var f,c;l.preventDefault(),l.dataTransfer&&(l.dataTransfer.dropEffect="copy");let y=(c=(f=l.dataTransfer)==null?void 0:f.files)==null?void 0:c[0];y&&await P(y),H(_.video.readyState)}),document.getElementById("inputvideo").onchange=async l=>{var f,c;l.preventDefault();let y=(c=(f=l.target)==null?void 0:f.files)==null?void 0:c[0];y&&await P(y)},_.config.onchange=()=>{F.distanceLimit=document.getElementById("distanceLimit").valueAsNumber,F.iouLimit=document.getElementById("iouLimit").valueAsNumber,F.unMatchedFramesTolerance=document.getElementById("unMatchedFramesTolerance").valueAsNumber,F.unMatchedFramesTolerance=document.getElementById("unMatchedFramesTolerance").valueAsNumber,F.matchingAlgorithm=document.getElementById("matchingAlgorithm-kdTree").checked?"kdTree":"munkres",D.setParams(F),document.getElementById("keepInMemory").checked?D.enableKeepInMemory():D.disableKeepInMemory(),D.reset(),H("tracker config change",JSON.stringify(F)),R.face.enabled=document.getElementById("box-face").checked,R.body.enabled=document.getElementById("box-body").checked,R.object.enabled=document.getElementById("box-object").checked},_.tracker.onchange=l=>{H("tracker",l.target.checked?"enabled":"disabled"),D.setParams(F),D.reset()}}async function te(){H("human version:",M.version,"| tfjs version:",M.tf.version["tfjs-core"]),H("platform:",M.env.platform,"| agent:",M.env.agent),B("loading..."),await M.load(),H("backend:",M.tf.getBackend(),"| available:",M.env.backends),H("models loaded:",M.models.loaded()),B("initializing..."),await M.warmup(),ee(),await V(),Z()}window.onload=te;
|
2023-04-03 16:36:01 +02:00
|
|
|
//# sourceMappingURL=index.js.map
|