human/dist/human.esm-nobundle.js

3 lines
64 KiB
JavaScript
Raw Normal View History

2020-10-15 15:43:16 +02:00
var qe=Object.defineProperty;var y=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),E0=e=>qe(e,"__esModule",{value:!0}),je=(e,t)=>{E0(e);for(var o in t)qe(e,o,{get:t[o],enumerable:!0})};var Xe=y(oe=>{const f=require("@tensorflow/tfjs"),M0={strides:[8,16],anchors:[2,6]},Ue=6;function I0(e,t,o){const n=[];for(let i=0;i<o.strides.length;i++){const s=o.strides[i],r=Math.floor((t+s-1)/s),c=Math.floor((e+s-1)/s),a=o.anchors[i];for(let d=0;d<r;d++){const u=s*(d+.5);for(let h=0;h<c;h++){const l=s*(h+.5);for(let p=0;p<a;p++)n.push([l,u])}}}return n}const We=e=>{e.startEndTensor.dispose(),e.startPoint.dispose(),e.endPoint.dispose()},Ke=e=>({startEndTensor:e,startPoint:f.slice(e,[0,0],[-1,2]),endPoint:f.slice(e,[0,2],[-1,2])}),S0=(e,t)=>{const o=f.mul(e.startPoint,t),n=f.mul(e.endPoint,t),i=f.concat2d([o,n],1);return Ke(i)};function T0(e,t,o){const n=f.slice(e,[0,1],[-1,2]),i=f.add(n,t),s=f.slice(e,[0,3],[-1,2]),r=f.div(s,o),c=f.div(i,o),a=f.div(r,2),d=f.sub(c,a),u=f.add(c,a),h=f.mul(d,o),l=f.mul(u,o),p=1;return f.concat2d([h,l],p)}function Ye(e,t){return f.tidy(()=>{const o=e.box?e.box:e;return S0(o,t).startEndTensor.squeeze()})}class Ge{constructor(e,t){this.blazeFaceModel=e,this.width=t.detector.inputSize,this.height=t.detector.inputSize,this.maxFaces=t.detector.maxFaces,this.anchorsData=I0(t.detector.inputSize,t.detector.inputSize,M0),this.anchors=f.tensor2d(this.anchorsData),this.inputSizeData=[t.detector.inputSize,t.detector.inputSize],this.inputSize=f.tensor1d([t.detector.inputSize,t.detector.inputSize]),this.iouThreshold=t.detector.iouThreshold,this.scoreThreshold=t.detector.scoreThreshold}async getBoundingBoxes(e){const[t,o,n]=f.tidy(()=>{const a=e.resizeBilinear([this.width,this.height]),d=f.mul(f.sub(a.div(255),.5),2),u=this.blazeFaceModel.predict(d),h=u.squeeze(),l=T0(h,this.anchors,this.inputSize),p=f.slice(h,[0,0],[-1,1]),m=f.sigmoid(p).squeeze();return[h,l,m]}),i=await f.image.nonMaxSuppressionAsync(o,n,this.maxFaces,this.iouThreshold,this.scoreThreshold),s=await i.array();i.dispose();let r=s.map(a=>f.slice(o,[a,0],[1,-1]));r=await Promise.all(r.map(async a=>{const d=await a.array();return a.dispose(),d}));const c=[];for(let a=0;a<r.length;a++){const d=r[a],u=f.tidy(()=>{const h=Ke(d),l=s[a],p=this.anchorsData[l],m=f.slice(t,[l,Ue-1],[1,-1]).squeeze().reshape([Ue,-1]),w=f.slice(n,[l],[1]);return{box:h,landmarks:m,probability:w,anchor:p}});c.push(u)}return o.dispose(),n.dispose(),t.dispose(),{boxes:c,scaleFactor:[e.shape[2]/this.inputSizeData[0],e.shape[1]/this.inputSizeData[1]]}}async estimateFaces(e,t=!1,o=!0){const n=f.tidy(()=>(e instanceof f.Tensor||(e=f.browser.fromPixels(e)),e.toFloat().expandDims(0))),{boxes:i,scaleFactor:s}=await this.getBoundingBoxes(n);return n.dispose(),t?i.map(r=>{const c=Ye(r,s),a={topLeft:c.slice([0],[2]),bottomRight:c.slice([2],[2])};if(o){const{landmarks:d,probability:u,anchor:h}=r,l=d.add(h).mul(s);a.landmarks=l,a.probability=u}return a}):Promise.all(i.map(async r=>{const c=Ye(r,s);let a;if(o){const[d,u,h]=await Promise.all([r.landmarks,c,r.probability].map(async b=>b.array())),l=r.anchor,[p,m]=s,w=d.map(b=>[(b[0]+l[0])*p,(b[1]+l[1])*m]);a={topLeft:u.slice(0,2),bottomRight:u.slice(2),landmarks:w,probability:h},We(r.box),r.landmarks.dispose(),r.probability.dispose()}else{const d=await c.array();a={topLeft:d.slice(0,2),bottomRight:d.slice(2)}}return c.dispose(),a}))}}async function B0(e){const t=await f.loadGraphModel(e.detector.modelPath,{fromTFHub:e.detector.modelPath.includes("tfhub.dev")}),o=new Ge(t,e);return o}oe.load=B0;oe.BlazeFaceModel=Ge;oe.disposeBox=We});var he=y(le=>{le.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:[2
2020-10-15 14:16:34 +02:00
//# sourceMappingURL=human.esm-nobundle.js.map