human/dist/human.node-nobundle.js

26 lines
208 KiB
JavaScript
Raw Normal View History

var e1=Object.defineProperty,F0=e=>e1(e,"__esModule",{value:!0}),g=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),J=(e,t)=>{F0(e);for(var n in t)e1(e,n,{get:t[n],enumerable:!0})},h1=g(he=>{const E=require("@tensorflow/tfjs"),t1=6;function D0(e){const t={strides:[e/16,e/8],anchors:[2,6]},n=[];for(let r=0;r<t.strides.length;r++){const c=t.strides[r],_=Math.floor((e+c-1)/c),h=Math.floor((e+c-1)/c),o=t.anchors[r];for(let i=0;i<_;i++){const x=c*(i+.5);for(let y=0;y<h;y++){const d=c*(y+.5);for(let w=0;w<o;w++)n.push([d,x])}}}return n}const n1=e=>{e.startEndTensor.dispose(),e.startPoint.dispose(),e.endPoint.dispose()},r1=e=>({startEndTensor:e,startPoint:E.slice(e,[0,0],[-1,2]),endPoint:E.slice(e,[0,2],[-1,2])}),c1=(e,t)=>{const n=E.mul(e.startPoint,t),r=E.mul(e.endPoint,t),c=E.concat2d([n,r],1);return r1(c)};function N0(e,t,n){const r=E.slice(e,[0,1],[-1,2]),c=E.add(r,t),_=E.slice(e,[0,3],[-1,2]),h=E.div(_,n),o=E.div(c,n),i=E.div(h,2),x=E.sub(o,i),y=E.add(o,i),d=E.mul(x,n),w=E.mul(y,n),s=1;return E.concat2d([d,w],s)}function C0(e,t){return E.tidy(()=>{const n=e.box?e.box:e;return c1(n,t).startEndTensor.squeeze()})}class _1{constructor(e,t){this.blazeFaceModel=e,this.width=t.detector.inputSize,this.height=t.detector.inputSize,this.maxFaces=t.detector.maxFaces,this.anchorsData=D0(t.detector.inputSize),this.anchors=E.tensor2d(this.anchorsData),this.inputSize=E.tensor1d([this.width,this.height]),this.iouThreshold=t.detector.iouThreshold,this.scaleFaces=.8,this.scoreThreshold=t.detector.scoreThreshold}async getBoundingBoxes(e){if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return null;const[t,n,r]=E.tidy(()=>{const x=e.resizeBilinear([this.width,this.height]),y=E.mul(E.sub(x.div(255),.5),2),d=this.blazeFaceModel.predict(y);let w;if(Array.isArray(d)){const P=d.sort((D,l)=>D.size-l.size),T=E.concat([P[0],P[2]],2),b=E.concat([P[1],P[3]],2),F=E.concat([b,T],1);w=F.squeeze(0)}else w=d.squeeze();const s=N0(w,this.anchors,this.inputSize),u=E.slice(w,[0,0],[-1,1]),m=E.sigmoid(u).squeeze();return[w,s,m]}),c=await E.image.nonMaxSuppressionAsync(n,r,this.maxFaces,this.iouThreshold,this.scoreThreshold),_=c.arraySync();c.dispose();const h=_.map(x=>E.slice(n,[x,0],[1,-1])),o=h.map(x=>{const y=x.arraySync();return x.dispose(),y}),i=[];for(let x=0;x<o.length;x++){const y=o[x],d=r1(y),w=_[x],s=this.anchorsData[w],u=E.slice(t,[w,t1-1],[1,-1]),m=u.squeeze(),P=m.reshape([t1,-1]),T=E.slice(r,[w],[1]),b={box:d,landmarks:P,probability:T,anchor:s};i.push(b),u.dispose(),m.dispose()}return t.dispose(),n.dispose(),r.dispose(),t.dispose(),{boxes:i,scaleFactor:[e.shape[2]/this.width,e.shape[1]/this.height]}}async estimateFaces(e){const{boxes:t,scaleFactor:n}=await this.getBoundingBoxes(e),r=[];for(const c of t){const _=c.landmarks.arraySync(),h=C0(c,n),o=c1.arraySync(),i=c.probability.arraySync(),x=c.anchor,[y,d]=n,w=_.map(u=>[(u[0]+x[0])*y,(u[1]+x[1])*d]),s={topLeft:o.slice(0,2),bottomRight:o.slice(2),landmarks:w,probability:i};n1(c.box),c.landmarks.dispose(),c.probability.dispose(),h.dispose(),r.push(s)}return r}}async function L0(e){const t=await E.loadGraphModel(e.detector.modelPath,{fromTFHub:e.detector.modelPath.includes("tfhub.dev")}),n=new _1(t,e);return n}he.load=L0;he.BlazeFaceModel=_1;he.disposeBox=n1}),pe=g(fe=>{fe.MESH_ANNOTATIONS={silhouette:[10,338,297,332,284,251,389,356,454,323,361,288,397,365,379,378,400,377,152,148,176,149,150,136,172,58,132,93,234,127,162,21,54,103,67,109],lipsUpperOuter:[61,185,40,39,37,0,267,269,270,409,291],lipsLowerOuter:[146,91,181,84,17,314,405,321,375,291],lipsUpperInner:[78,191,80,81,82,13,312,311,310,415,308],lipsLowerInner:[78,95,88,178,87,14,317,402,318,324,308],rightEyeUpper0:[246,161,160,159,158,157,173],rightEyeLower0:[33,7,163,144,145,153,154,155,133],rightEyeUpper1:[247,30,29,27,28,56,190],rightEyeLower1:[130,25,110,24,23,22,26,112,243],rightEyeUpper2:[113,225,224,223,222,221,189],rightEyeLower2:[226,31,228,229,230,231,232,233,244],rightEyeLower3:[143,111,117,118,119,120,121,128,245],rightEyebrowUpper:[156,70,63,105,66,107,55,193],rightEyebrowLower:[35,124,46,53,52,65]
2020-11-04 20:59:30 +01:00
`),D.FRAGMENT_IDENTITY=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","void main(void) {","gl_FragColor = texture2D(texture, vUv);","}"].join(`
2020-11-05 21:38:09 +01:00
`);let l={};l.colorMatrix=function(f){const a=new Float32Array(f);a[4]/=255,a[9]/=255,a[14]/=255,a[19]/=255;const p=a[18]===1&&a[3]===0&&a[8]===0&&a[13]===0&&a[15]===0&&a[16]===0&&a[17]===0&&a[19]===0?l.colorMatrix.SHADER.WITHOUT_ALPHA:l.colorMatrix.SHADER.WITH_ALPHA,S=b(p);s.uniform1fv(S.uniform.m,a),T()},l.colorMatrix.SHADER={},l.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(`
2020-11-04 20:59:30 +01:00
`),l.colorMatrix.SHADER.WITHOUT_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];","gl_FragColor.a = c.a;","}"].join(`
2020-11-05 21:38:09 +01:00
`),l.brightness=function(f){const a=(f||0)+1;l.colorMatrix([a,0,0,0,0,0,a,0,0,0,0,0,a,0,0,0,0,0,1,0])},l.saturation=function(f){const a=(f||0)*2/3+1,p=(a-1)*-.5;l.colorMatrix([a,p,p,0,0,p,a,p,0,0,p,p,a,0,0,0,0,0,1,0])},l.desaturate=function(){l.saturation(-1)},l.contrast=function(f){const a=(f||0)+1,p=-128*(a-1);l.colorMatrix([a,0,0,0,p,0,a,0,0,p,0,0,a,0,p,0,0,0,1,0])},l.negative=function(){l.contrast(-2)},l.hue=function(f){f=(f||0)/180*Math.PI;const a=Math.cos(f),p=Math.sin(f),S=.213,R=.715,z=.072;l.colorMatrix([S+a*(1-S)+p*-S,R+a*-R+p*-R,z+a*-z+p*(1-z),0,0,S+a*-S+p*.143,R+a*(1-R)+p*.14,z+a*-z+p*-.283,0,0,S+a*-S+p*-(1-S),R+a*-R+p*R,z+a*(1-z)+p*z,0,0,0,0,0,1,0])},l.desaturateLuminance=function(){l.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},l.sepia=function(){l.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},l.brownie=function(){l.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},l.vintagePinhole=function(){l.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},l.kodachrome=function(){l.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},l.technicolor=function(){l.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},l.polaroid=function(){l.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},l.shiftToBGR=function(){l.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},l.convolution=function(f){const a=new Float32Array(f),p=1/o,S=1/i,R=b(l.convolution.SHADER);s.uniform1fv(R.uniform.m,a),s.uniform2f(R.uniform.px,p,S),T()},l.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(`
`),l.detectEdges=function(){l.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},l.sobelX=function(){l.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},l.sobelY=function(){l.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},l.sharpen=function(f){const a=f||1;l.convolution.call(this,[0,-1*a,0,-1*a,1+4*a,-1*a,0,-1*a,0])},l.emboss=function(f){const a=f||1;l.convolution.call(this,[-2*a,-1*a,0,-1*a,1,1*a,0,1*a,2*a])},l.blur=function(f){const a=f/7/o,p=f/7/i,S=b(l.blur.SHADER);s.uniform2f(S.uniform.px,0,p),T(F.INTERMEDIATE),s.uniform2f(S.uniform.px,a,0),T()},l.blur.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","void main(void) {","gl_FragColor = vec4(0.0);","gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;","gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv )*0.159576912161;","gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;","}"].join(`
`),l.pixelate=function(f){const a=f/o,p=f/i,S=b(l.pixelate.SHADER);s.uniform2f(S.uniform.size,a,p),T()},l.pixelate.SHADER=["precision highp float;","varying vec2 vUv;","uniform vec2 size;","uniform sampler2D texture;","vec2 pixelate(vec2 coord, vec2 size) {","return floor( coord / size ) * size;","}","void main(void) {","gl_FragColor = vec4(0.0);","vec2 coord = pixelate(vUv, size);","gl_FragColor += texture2D(texture, coord);","}"].join(`
2020-11-06 05:46:37 +01:00
`)};u0.Canvas=kn}),m0=g(p0=>{const _e=require("@tensorflow/tfjs"),Bn=f0();let I=null,A=null;function Fn(e,t){let n;if(e instanceof _e.Tensor)n=_e.clone(e);else{const r=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,c=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0;let _=r,h=c;t.filter.width>0?_=t.filter.width:t.filter.height>0&&(_=r*(t.filter.height/c)),t.filter.height>0?h=t.filter.height:t.filter.width>0&&(h=c*(t.filter.width/r)),(!I||I.width!==_||I.height!==h)&&(I=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas"),I.width!==_&&(I.width=_),I.height!==h&&(I.height=h));const o=I.getContext("2d");e instanceof ImageData?o.putImageData(e,0,0):o.drawImage(e,0,0,r,c,0,0,I.width,I.height),t.filter.enabled&&((!this.fx||!A||I.width!==A.width||I.height!==A.height)&&(A=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(I.width,I.height):document.createElement("canvas"),A.width!==I.width&&(A.width=I.width),A.height!==I.height&&(A.height=I.height),this.fx=_e.ENV.flags.IS_BROWSER?new Bn.Canvas({canvas:A}):null),this.fx.reset(),this.fx.addFilter("brightness",t.filter.brightness),t.filter.contrast!==0&&this.fx.addFilter("contrast",t.filter.contrast),t.filter.sharpness!==0&&this.fx.addFilter("sharpen",t.filter.sharpness),t.filter.blur!==0&&this.fx.addFilter("blur",t.filter.blur),t.filter.saturation!==0&&this.fx.addFilter("saturation",t.filter.saturation),t.filter.hue!==0&&this.fx.addFilter("hue",t.filter.hue),t.filter.negative&&this.fx.addFilter("negative"),t.filter.sepia&&this.fx.addFilter("sepia"),t.filter.vintage&&this.fx.addFilter("brownie"),t.filter.sepia&&this.fx.addFilter("sepia"),t.filter.kodachrome&&this.fx.addFilter("kodachrome"),t.filter.technicolor&&this.fx.addFilter("technicolor"),t.filter.polaroid&&this.fx.addFilter("polaroid"),t.filter.pixelate!==0&&this.fx.addFilter("pixelate",t.filter.pixelate),this.fx.apply(I)),A||(A=I);let i;if(t.backend==="webgl"||A instanceof ImageData)i=_e.browser.fromPixels(A);else{const y=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas");y.width=_,y.height=h;const d=y.getContext("2d");d.drawImage(A,0,0);const w=d.getImageData(0,0,_,h);i=_e.browser.fromPixels(w)}const x=i.toFloat();n=x.expandDims(0),i.dispose(),x.dispose()}return{tensor:n,canvas:t.filter.return?A:null}}p0.process=Fn}),g0=g(Dn=>{J(Dn,{default:()=>Nn});var Nn={backend:"webgl",console:!0,async:!1,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",inputSize:256,maxFaces:10,skipFrames:15,minConfidence:.3,iouThreshold:.3,scoreThreshold:.5},mesh:{enabled:!0,modelPath:"../models/facemesh.json",inputSize:192},iris:{enabled:!0,modelPath:"../models/iris.json",enlargeFactor:2.3,inputSize:64},age:{enabled:!0,modelPath:"../models/ssrnet-age-imdb.json",inputSize:64,skipFrames:15},gender:{enabled:!0,minConfidence:.3,modelPath:"../models/ssrnet-gender-imdb.json"},emotion:{enabled:!0,inputSize:64,minConfidence:.3,skipFrames:15,modelPath:"../models/emotion-large.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",inputResolution:257,outputStride:16,maxDetections:10,scoreThreshold:.5,nmsRadius:20},hand:{enabled:!0,inputSize:256,skipFrames:15,minConfidence:.3,iouThreshold:.3,scoreThreshold:.5,enlargeFactor:1.65,maxHands:10,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}}}),E0=g((g5,b0)=>{b0.exports={name:"@vladmandic/human",version:"0.7.4",description:"human: 3D Face Detection, Body Pose, Hand & Finger Tracking, Iris Tracking, Age & Gender Prediction, Emotion Prediction & Gesture Recognition",sideEffects:!1,main:"dist/human.node.js",module:"dist/human.esm.js",browser:"dist/human.esm.js",author:"Vladimir Mandic <mandic00@live.com>",bugs:{url:"https://github.com/vladmandic/human/issues"},homepa
2020-11-04 07:11:24 +01:00
/**
* @license
* Copyright 2020 Google LLC. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* =============================================================================
*/
//# sourceMappingURL=human.node-nobundle.js.map