framefields 2.0.2 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -32
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-x28ZgQBP.mjs → audio-COkiXyDb.mjs} +3 -3
- package/dist/{audio-x28ZgQBP.mjs.map → audio-COkiXyDb.mjs.map} +1 -1
- package/dist/{audio-Dvwwz8xU.d.mts → audio-nmU-BWxI.d.mts} +3 -3
- package/dist/{audio-Dvwwz8xU.d.mts.map → audio-nmU-BWxI.d.mts.map} +1 -1
- package/dist/{dist-1iUYuPct.mjs → dist-55MP0aN4.mjs} +59 -16
- package/dist/dist-55MP0aN4.mjs.map +1 -0
- package/dist/{dist-gjHmorxL.mjs → dist-DgIKXWZ1.mjs} +75 -16
- package/dist/dist-DgIKXWZ1.mjs.map +1 -0
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +23 -23
- package/dist/{effects-CHWORCYd.mjs → effects-m3FuatqZ.mjs} +2 -2
- package/dist/{effects-CHWORCYd.mjs.map → effects-m3FuatqZ.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +1 -1
- package/dist/{fonts-DrGTBJJk.mjs → fonts-C_AWIMdb.mjs} +13 -2
- package/dist/fonts-C_AWIMdb.mjs.map +1 -0
- package/dist/{index-DKFGNyMB.d.mts → index-Bx7JBFT6.d.mts} +9 -2
- package/dist/index-Bx7JBFT6.d.mts.map +1 -0
- package/dist/{index-B0BNPEoH.d.mts → index-C8rstr3Y.d.mts} +5 -5
- package/dist/index-C8rstr3Y.d.mts.map +1 -0
- package/dist/{index-D2wJqSl5.d.mts → index-CAGDH7l6.d.mts} +3 -3
- package/dist/{index-D2wJqSl5.d.mts.map → index-CAGDH7l6.d.mts.map} +1 -1
- package/dist/{index-DiSKzDGR.d.mts → index-CbzEM_o6.d.mts} +8 -1
- package/dist/index-CbzEM_o6.d.mts.map +1 -0
- package/dist/{index-BMVVmc4G.d.mts → index-DY3mLoPO.d.mts} +2 -2
- package/dist/{index-BMVVmc4G.d.mts.map → index-DY3mLoPO.d.mts.map} +1 -1
- package/dist/{index-D1ZsMpke.d.mts → index-i0xPY4Fe.d.mts} +3 -3
- package/dist/{index-D1ZsMpke.d.mts.map → index-i0xPY4Fe.d.mts.map} +1 -1
- package/dist/{index-D2jDC7O5.d.mts → index-ogL8Y-Ng.d.mts} +9 -1
- package/dist/index-ogL8Y-Ng.d.mts.map +1 -0
- package/dist/index.d.mts +88 -70
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +44 -39
- package/dist/index.mjs.map +1 -1
- package/dist/preview/index.d.mts +3 -3
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-uQM210iy.mjs → preview-BM0Zzcn1.mjs} +74 -66
- package/dist/preview-BM0Zzcn1.mjs.map +1 -0
- package/dist/preview-engine/{chunk-HAXK42HG.mjs → chunk-2RMSCL6V.mjs} +1 -1
- package/dist/preview-engine/chunk-45JOFIHE.mjs +8 -0
- package/dist/preview-engine/{chunk-MT2DZQHO.mjs → chunk-4Q7JG6WJ.mjs} +1 -1
- package/dist/preview-engine/chunk-7S6ZFYLI.mjs +418 -0
- package/dist/preview-engine/chunk-KNZU3Z2F.mjs +3 -0
- package/dist/preview-engine/{chunk-SWD76532.mjs → chunk-PCB2VB5K.mjs} +2 -2
- package/dist/preview-engine/{chunk-GYG2IIBR.mjs → chunk-RJJRPL42.mjs} +1 -1
- package/dist/preview-engine/chunk-UC7CSW2A.mjs +1 -0
- package/dist/preview-engine/{chunk-4BEJJKEU.mjs → chunk-YK4XHUP4.mjs} +7 -7
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +84 -76
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/{renderers-YVN3EIOP.mjs → renderers-76MPTVZK.mjs} +1 -1
- package/dist/preview-engine/{renderers-R3XEYD5V.mjs → renderers-LFA5NW4V.mjs} +1 -1
- package/dist/{program-Dl510wmI.mjs → program-DGqyGGvj.mjs} +2 -2
- package/dist/{program-Dl510wmI.mjs.map → program-DGqyGGvj.mjs.map} +1 -1
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/renderer--fkO4O8d.mjs +3 -0
- package/dist/{renderer-D7EX8IjU.mjs → renderer-0gJC-sc8.mjs} +2 -2
- package/dist/{renderer-D7EX8IjU.mjs.map → renderer-0gJC-sc8.mjs.map} +1 -1
- package/dist/{renderer-7DOcIxFG.mjs → renderer-2r4EgfdZ.mjs} +2 -2
- package/dist/{renderer-7DOcIxFG.mjs.map → renderer-2r4EgfdZ.mjs.map} +1 -1
- package/dist/{renderer-COkcU3db.mjs → renderer-5OiVjQan.mjs} +4 -4
- package/dist/{renderer-COkcU3db.mjs.map → renderer-5OiVjQan.mjs.map} +1 -1
- package/dist/renderer-6x7CgHhJ.mjs +3 -0
- package/dist/renderer-B0RDWv1C.mjs +3 -0
- package/dist/{renderer-CMzEjdzi.mjs → renderer-B9l641o-.mjs} +2 -2
- package/dist/{renderer-CMzEjdzi.mjs.map → renderer-B9l641o-.mjs.map} +1 -1
- package/dist/renderer-BFOkGS0N.mjs +3 -0
- package/dist/{renderer-pxXf9dvk.mjs → renderer-BJiL-BQY.mjs} +2 -2
- package/dist/{renderer-pxXf9dvk.mjs.map → renderer-BJiL-BQY.mjs.map} +1 -1
- package/dist/{renderer-B1CvhW4p.mjs → renderer-BMrm2Zbz.mjs} +2 -2
- package/dist/{renderer-B1CvhW4p.mjs.map → renderer-BMrm2Zbz.mjs.map} +1 -1
- package/dist/{renderer-Cj-whdVr.mjs → renderer-BUHMkkLU.mjs} +2 -2
- package/dist/{renderer-Cj-whdVr.mjs.map → renderer-BUHMkkLU.mjs.map} +1 -1
- package/dist/{renderer-CB5aWAaf.mjs → renderer-BYsmLk63.mjs} +2 -2
- package/dist/{renderer-CB5aWAaf.mjs.map → renderer-BYsmLk63.mjs.map} +1 -1
- package/dist/renderer-BaoJiMJO.mjs +3 -0
- package/dist/{renderer-DbaQLI4z.mjs → renderer-BtkU0BT-.mjs} +2 -2
- package/dist/{renderer-DbaQLI4z.mjs.map → renderer-BtkU0BT-.mjs.map} +1 -1
- package/dist/{renderer-Dt6fzgX5.mjs → renderer-Bwsh5TUv.mjs} +2 -2
- package/dist/{renderer-Dt6fzgX5.mjs.map → renderer-Bwsh5TUv.mjs.map} +1 -1
- package/dist/{renderer-vCFTm0oe.mjs → renderer-C28Bab-M.mjs} +2 -2
- package/dist/{renderer-vCFTm0oe.mjs.map → renderer-C28Bab-M.mjs.map} +1 -1
- package/dist/{renderer-HFfcJlmR.mjs → renderer-C3L9SNRO.mjs} +2 -2
- package/dist/{renderer-HFfcJlmR.mjs.map → renderer-C3L9SNRO.mjs.map} +1 -1
- package/dist/renderer-C4O-L73n.mjs +3 -0
- package/dist/{renderer-CB7lH5K8.mjs → renderer-C9BKcHZb.mjs} +1 -1
- package/dist/renderer-CGVuhBbA.mjs +3 -0
- package/dist/renderer-CHKB-Or4.mjs +3 -0
- package/dist/renderer-CL9gPcfZ.mjs +3 -0
- package/dist/{renderer-BXMmISWG.mjs → renderer-CMM4DZ1i.mjs} +2 -2
- package/dist/{renderer-BXMmISWG.mjs.map → renderer-CMM4DZ1i.mjs.map} +1 -1
- package/dist/{renderer-C17wL9QX.mjs → renderer-COkFM1KL.mjs} +2 -2
- package/dist/{renderer-C17wL9QX.mjs.map → renderer-COkFM1KL.mjs.map} +1 -1
- package/dist/renderer-CSkFF-qe.mjs +3 -0
- package/dist/renderer-CU2c6zWc.mjs +3 -0
- package/dist/{renderer-CDOUAN7X.mjs → renderer-CXUohIJ9.mjs} +2 -2
- package/dist/{renderer-CDOUAN7X.mjs.map → renderer-CXUohIJ9.mjs.map} +1 -1
- package/dist/{renderer-ByDhfrPE.mjs → renderer-CeADvUU_.mjs} +2 -2
- package/dist/{renderer-ByDhfrPE.mjs.map → renderer-CeADvUU_.mjs.map} +1 -1
- package/dist/{renderer-CH8sdfYX.mjs → renderer-CgVdRbc-.mjs} +2 -2
- package/dist/{renderer-CH8sdfYX.mjs.map → renderer-CgVdRbc-.mjs.map} +1 -1
- package/dist/renderer-CiLiH6w_.mjs +3 -0
- package/dist/{renderer-Dp_FfvF-.mjs → renderer-CnRoblJF.mjs} +2 -2
- package/dist/{renderer-Dp_FfvF-.mjs.map → renderer-CnRoblJF.mjs.map} +1 -1
- package/dist/{renderer-BAQmR0Zo.mjs → renderer-CsQ7nY0z.mjs} +1 -1
- package/dist/{renderer-CclIvsLO.mjs → renderer-CwAjqb2o.mjs} +1 -1
- package/dist/{renderer-CszOjcRW.mjs → renderer-Cx5H41JR.mjs} +1 -1
- package/dist/{renderer-Fco4EmAu.mjs → renderer-D1Zs78PQ.mjs} +126 -105
- package/dist/{renderer-Fco4EmAu.mjs.map → renderer-D1Zs78PQ.mjs.map} +1 -1
- package/dist/{renderer-BQHbp-Sp.mjs → renderer-D1ib-wB3.mjs} +2 -2
- package/dist/{renderer-BQHbp-Sp.mjs.map → renderer-D1ib-wB3.mjs.map} +1 -1
- package/dist/{renderer-Tp6OXWNZ.mjs → renderer-D54yO_M_.mjs} +2 -2
- package/dist/{renderer-Tp6OXWNZ.mjs.map → renderer-D54yO_M_.mjs.map} +1 -1
- package/dist/{renderer-Cl1oUXMi.mjs → renderer-D5N2JO7g.mjs} +2 -2
- package/dist/{renderer-Cl1oUXMi.mjs.map → renderer-D5N2JO7g.mjs.map} +1 -1
- package/dist/{renderer-BsgIcBKH.mjs → renderer-DBp6A7tR.mjs} +2 -2
- package/dist/{renderer-BsgIcBKH.mjs.map → renderer-DBp6A7tR.mjs.map} +1 -1
- package/dist/{renderer-vvpdx1vk.mjs → renderer-DI2RcpKU.mjs} +2 -2
- package/dist/{renderer-vvpdx1vk.mjs.map → renderer-DI2RcpKU.mjs.map} +1 -1
- package/dist/renderer-DMaYsSM4.mjs +3 -0
- package/dist/renderer-DZ7t_l1d.mjs +3 -0
- package/dist/{renderer-Ryo2CEFD.mjs → renderer-D_QS6p1q.mjs} +2 -2
- package/dist/{renderer-Ryo2CEFD.mjs.map → renderer-D_QS6p1q.mjs.map} +1 -1
- package/dist/{renderer-DDp7_TUi.d.mts → renderer-DcPOsAVu.d.mts} +2 -2
- package/dist/{renderer-DDp7_TUi.d.mts.map → renderer-DcPOsAVu.d.mts.map} +1 -1
- package/dist/{renderer-B_NuVaIP.mjs → renderer-Dcd-Pkzd.mjs} +2 -2
- package/dist/{renderer-B_NuVaIP.mjs.map → renderer-Dcd-Pkzd.mjs.map} +1 -1
- package/dist/{renderer-WkVrkCVA.mjs → renderer-DjiUZ0Vs.mjs} +2 -2
- package/dist/{renderer-WkVrkCVA.mjs.map → renderer-DjiUZ0Vs.mjs.map} +1 -1
- package/dist/renderer-DkJEnKQu.mjs +3 -0
- package/dist/renderer-DlkrKqQj.mjs +3 -0
- package/dist/renderer-DxOQ5S8T.mjs +3 -0
- package/dist/renderer-Ibvw1tE_.mjs +3 -0
- package/dist/{renderer-CwQhzcUn.mjs → renderer-JjMO41Cv.mjs} +2 -2
- package/dist/{renderer-CwQhzcUn.mjs.map → renderer-JjMO41Cv.mjs.map} +1 -1
- package/dist/renderer-M0jeFo6S.mjs +4 -0
- package/dist/renderer-NhSzqWsQ.mjs +3 -0
- package/dist/renderer-OrhgkzVu.mjs +3 -0
- package/dist/{renderer-DxjVQV6f.mjs → renderer-Q7_DUcnu.mjs} +2 -2
- package/dist/{renderer-DxjVQV6f.mjs.map → renderer-Q7_DUcnu.mjs.map} +1 -1
- package/dist/{renderer-I-Sw3JBB.mjs → renderer-QfSB-cRU.mjs} +2 -2
- package/dist/{renderer-I-Sw3JBB.mjs.map → renderer-QfSB-cRU.mjs.map} +1 -1
- package/dist/{renderer-OWQmmg4Z.mjs → renderer-WXylxlu2.mjs} +2 -2
- package/dist/{renderer-OWQmmg4Z.mjs.map → renderer-WXylxlu2.mjs.map} +1 -1
- package/dist/renderer-WrFAaLxW.mjs +3 -0
- package/dist/renderer-bbOALT4F.mjs +3 -0
- package/dist/{renderer-BGXU6vcW.mjs → renderer-bebAt6Dz.mjs} +2 -2
- package/dist/{renderer-BGXU6vcW.mjs.map → renderer-bebAt6Dz.mjs.map} +1 -1
- package/dist/{renderer-B9-QSJcG.mjs → renderer-eC1gRPRo.mjs} +2 -2
- package/dist/{renderer-B9-QSJcG.mjs.map → renderer-eC1gRPRo.mjs.map} +1 -1
- package/dist/renderer-lXmyzdcx.mjs +3 -0
- package/dist/renderer-ospMsCzr.mjs +3 -0
- package/dist/{renderer-k2JL79kM.mjs → renderer-vUjNMbLq.mjs} +2 -2
- package/dist/{renderer-k2JL79kM.mjs.map → renderer-vUjNMbLq.mjs.map} +1 -1
- package/dist/renderer-xc9wkiC7.mjs +3 -0
- package/dist/{renderer-XcmYTd6P.mjs → renderer-z6Qb5Z-W.mjs} +143 -4
- package/dist/renderer-z6Qb5Z-W.mjs.map +1 -0
- package/dist/{renderers-BWg16W-V-BXG_cjhM.mjs → renderers-BWg16W-V-jhdCp6Vd.mjs} +2 -2
- package/dist/{renderers-BWg16W-V-BXG_cjhM.mjs.map → renderers-BWg16W-V-jhdCp6Vd.mjs.map} +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +4 -4
- package/package.json +55 -55
- package/dist/dist-1iUYuPct.mjs.map +0 -1
- package/dist/dist-gjHmorxL.mjs.map +0 -1
- package/dist/fonts-DrGTBJJk.mjs.map +0 -1
- package/dist/index-B0BNPEoH.d.mts.map +0 -1
- package/dist/index-D2jDC7O5.d.mts.map +0 -1
- package/dist/index-DKFGNyMB.d.mts.map +0 -1
- package/dist/index-DiSKzDGR.d.mts.map +0 -1
- package/dist/preview-engine/chunk-47VT677S.mjs +0 -8
- package/dist/preview-engine/chunk-DPST2XLC.mjs +0 -418
- package/dist/preview-engine/chunk-DRLEOHN5.mjs +0 -1
- package/dist/preview-engine/chunk-SZ7YRPKO.mjs +0 -3
- package/dist/preview-uQM210iy.mjs.map +0 -1
- package/dist/renderer-3BNskNuJ.mjs +0 -3
- package/dist/renderer-9dHlMQGX.mjs +0 -3
- package/dist/renderer-BGvORwkQ.mjs +0 -3
- package/dist/renderer-BLikd6BK.mjs +0 -3
- package/dist/renderer-BSbTJBWc.mjs +0 -3
- package/dist/renderer-BU1rwNRT.mjs +0 -3
- package/dist/renderer-BZJm3m4f.mjs +0 -3
- package/dist/renderer-BqyAgNt3.mjs +0 -3
- package/dist/renderer-BryTM2g7.mjs +0 -3
- package/dist/renderer-CQCoggIa.mjs +0 -3
- package/dist/renderer-CV2m6k1V.mjs +0 -3
- package/dist/renderer-CYY-poLe.mjs +0 -3
- package/dist/renderer-C_Ki91kc.mjs +0 -3
- package/dist/renderer-CmApuKjS.mjs +0 -3
- package/dist/renderer-Cu074POw.mjs +0 -3
- package/dist/renderer-D4qLmox-.mjs +0 -3
- package/dist/renderer-D6cJ6MSq.mjs +0 -3
- package/dist/renderer-DQLGnEFc.mjs +0 -3
- package/dist/renderer-DY2SVYUW.mjs +0 -3
- package/dist/renderer-DoAY5JbB.mjs +0 -4
- package/dist/renderer-DuplLRbp.mjs +0 -3
- package/dist/renderer-DvfUbZ31.mjs +0 -3
- package/dist/renderer-Q_uUQipO.mjs +0 -3
- package/dist/renderer-UQFCgeNx.mjs +0 -3
- package/dist/renderer-XcmYTd6P.mjs.map +0 -1
- package/dist/renderer-eMsnzJg9.mjs +0 -3
- package/dist/renderer-pHiz78e0.mjs +0 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as Ve}from"./chunk-VXUJWPIK.mjs";import{a as lt}from"./chunk-XKO4RYKN.mjs";import{b as mt}from"./chunk-DRLEOHN5.mjs";import{I as ut,a as S,b as C}from"./chunk-NQZKBFC6.mjs";import{b as dt,d as be,e as je,h as te}from"./chunk-P3HBP725.mjs";import{a as nt}from"./chunk-YSTLMWCG.mjs";import{a as st,e as it,i as Le,j as at}from"./chunk-4GEWSUX5.mjs";import{b as ge,c as rt,e as ot}from"./chunk-MTJHQATU.mjs";import{d as ct,e as pe,g as Ee}from"./chunk-YAQFFQPG.mjs";import{a as Jt,c as Qt,d as B,e as y}from"./chunk-BVF64D6H.mjs";var vt=Jt((kr,wt)=>{y();var _e=()=>new Proxy(function(){},{get:(r,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":_e(),apply:()=>_e(),construct:()=>_e()});wt.exports=_e()});y();y();y();y();y();var se=(r,e,t)=>`https://huggingface.co/${r}/resolve/${e}/${t}`,Ae="tori29umai/rtmdet-ins-onnx-person-masks",Be="e5218e8d47d7c50077f27f9893a28e0ef2ad5656",De="RTMDet-Ins (OpenMMLab mmdetection, Apache-2.0), mmdeploy ONNX export",Fe="RTMO (OpenMMLab mmpose, Apache-2.0), ONNX export",ft="MediaPipe Selfie Segmenter (Google, Apache-2.0), ONNX export",re={"rtmdet-ins-t":{key:"rtmdet-ins-t",family:"rtmdet-ins",filename:"rtmdet-ins-t.onnx",url:se(Ae,Be,"models/tiny/rtmdet-ins_tiny_640x640.onnx"),bytes:24032356,sha256:"99ee670820c4493aa13e20578b6a8e39781c319846dc41796a77765734beac5c",input:[640,640],source:De},"rtmdet-ins-s":{key:"rtmdet-ins-s",family:"rtmdet-ins",filename:"rtmdet-ins-s.onnx",url:se(Ae,Be,"models/s/rtmdet-ins_s_640x640.onnx"),bytes:43236976,sha256:"9cd1787fbf3eb2bd64cc2d8154f41c036f5484b85599e1cbe0227a2dc5a4a08b",input:[640,640],source:De},"rtmdet-ins-m":{key:"rtmdet-ins-m",family:"rtmdet-ins",filename:"rtmdet-ins-m.onnx",url:se(Ae,Be,"models/m/rtmdet-ins_m_640x640.onnx"),bytes:115735979,sha256:"a003bce80316e03467c2c2b483df2d5c0398220c2357a44f9bf985929f7eb052",input:[640,640],source:De},"rtmo-t":{key:"rtmo-t",family:"rtmo",filename:"rtmo-t.onnx",url:se("Xenova/RTMO-t","f29d13ce5ee291fbe505e9d06a049992f05699dc","onnx/model.onnx"),bytes:27360569,sha256:"cb54dd042bf997df86d938721c94238940f2bff98ba8d2ccc834430de5c65c13",input:[416,416],source:Fe},"rtmo-s":{key:"rtmo-s",family:"rtmo",filename:"rtmo-s.onnx",url:se("Xenova/RTMO-s","d8c526187f341d287753831c9c8b1ecc4855bba1","onnx/model.onnx"),bytes:39636400,sha256:"1cd6a3517658903233e9ccb78666554862f57f0944b6886e2048093594aef4e7",input:[640,640],source:Fe},"rtmo-m":{key:"rtmo-m",family:"rtmo",filename:"rtmo-m.onnx",url:se("Xenova/RTMO-m","3aba1280472b98ee2bf663482e27e243038d23fe","onnx/model.onnx"),bytes:89291929,sha256:"76d82c45e5c4810baf587ecf2638d15cbf7ed196afb2055e977382532021b59e",input:[640,640],source:Fe},"selfie-square":{key:"selfie-square",family:"selfie",filename:"selfie-square.onnx",url:se("onnx-community/mediapipe_selfie_segmentation","be49485c8e027524be38591817fc5cd31bd9d00e","onnx/model.onnx"),bytes:462352,sha256:"3241ac4ad8aa35bdaf33946776db29f7c283a413aa0b0dacb9483594b4531aad",input:[256,256],source:ft},"selfie-landscape":{key:"selfie-landscape",family:"selfie",filename:"selfie-landscape.onnx",url:se("onnx-community/mediapipe_selfie_segmentation_landscape","2497d5bec26c626c7b3c4edc6e1fefc21b64f6c3","onnx/model.onnx"),bytes:462338,sha256:"7a0adcfdb1715d3b0ff0f61486d8a181c33f4a208343a5abfccbc6540e872d24",input:[256,144],source:ft}};function ht(r,e="s",t=1){return r==="pose"?`rtmo-${e}`:r==="matte"?t>1.3?"selfie-landscape":"selfie-square":`rtmdet-ins-${e}`}var ye=["person","bicycle","car","motorcycle","airplane","bus","train","truck","boat","traffic light","fire hydrant","stop sign","parking meter","bench","bird","cat","dog","horse","sheep","cow","elephant","bear","zebra","giraffe","backpack","umbrella","handbag","tie","suitcase","frisbee","skis","snowboard","sports ball","kite","baseball bat","baseball glove","skateboard","surfboard","tennis racket","bottle","wine glass","cup","fork","knife","spoon","bowl","banana","apple","sandwich","orange","broccoli","carrot","hot dog","pizza","donut","cake","chair","couch","potted plant","bed","dining table","toilet","tv","laptop","mouse","remote","keyboard","cell phone","microwave","oven","toaster","sink","refrigerator","book","clock","vase","scissors","teddy bear","hair drier","toothbrush"];y();function ae(r,e){let t=Math.max(r.originX,e.originX),n=Math.max(r.originY,e.originY),o=Math.min(r.originX+r.width,e.originX+e.width),s=Math.min(r.originY+r.height,e.originY+e.height),i=Math.max(0,o-t),f=Math.max(0,s-n),a=i*f;if(a<=0)return 0;let c=r.width*r.height,h=e.width*e.height,u=c+h-a;return u>0?a/u:0}var ue=class{_nextTrackId=1;_tracks=[];_iouThreshold;_maxMissedFrames;_minHits;_positionSmoothing;_activeDuringCoast;constructor(e={}){this._iouThreshold=e.iouThreshold??.25,this._maxMissedFrames=e.maxMissedFrames??15,this._minHits=e.minHits??1,this._positionSmoothing=Math.max(.1,Math.min(1,e.positionSmoothing??.75)),this._activeDuringCoast=e.activeDuringCoast!==!1}update(e,t,n=24){let o=n>0?1/n:.0416;for(let a of this._tracks)if(a.age++,a.timeSinceUpdate++,a.timeSinceUpdate>0){let c=a.centerX+a.vx*o,h=a.centerY+a.vy*o;a.centerX=c,a.centerY=h;let u=a.box.width,p=a.box.height,T=a.box.normalizedWidth,E=a.box.normalizedHeight,P=a.box.normalizedX+T/2+a.vx*o/Math.max(1,a.box.width/T),L=a.box.normalizedY+E/2+a.vy*o/Math.max(1,a.box.height/E);a.box={originX:c-u/2,originY:h-p/2,width:u,height:p,normalizedX:P-T/2,normalizedY:L-E/2,normalizedWidth:T,normalizedHeight:E},a.vx*=.92,a.vy*=.92,a.isCoasting=!0}let s=new Set,i=new Set,f=[];for(let a=0;a<this._tracks.length;a++){let c=this._tracks[a];for(let h=0;h<e.length;h++){let u=e[h];if(c.category!==u.category)continue;let p=ae(c.box,u.boundingBox);p>=this._iouThreshold&&f.push({trackIdx:a,detIdx:h,iou:p})}}f.sort((a,c)=>c.iou-a.iou);for(let a of f){if(i.has(a.trackIdx)||s.has(a.detIdx))continue;i.add(a.trackIdx),s.add(a.detIdx);let c=this._tracks[a.trackIdx],h=e[a.detIdx],u=h.boundingBox,p=u.originX+u.width/2,T=u.originY+u.height/2,E=(p-c.centerX)/o,P=(T-c.centerY)/o;c.vx=c.vx*.4+E*.6,c.vy=c.vy*.4+P*.6;let L=this._positionSmoothing,g=c.box.width*(1-L)+u.width*L,_=c.box.height*(1-L)+u.height*L,b=c.centerX*(1-L)+p*L,j=c.centerY*(1-L)+T*L;c.centerX=b,c.centerY=j,c.score=h.score,c.timeSinceUpdate=0,c.hits++,c.isCoasting=!1,c.hits>=this._minHits&&(c.active=!0),c.box={originX:b-g/2,originY:j-_/2,width:g,height:_,normalizedX:u.normalizedX,normalizedY:u.normalizedY,normalizedWidth:u.normalizedWidth,normalizedHeight:u.normalizedHeight}}for(let a=0;a<e.length;a++){if(s.has(a))continue;let c=e[a],h=c.boundingBox,u=h.originX+h.width/2,p=h.originY+h.height/2;this._tracks.push({trackId:this._nextTrackId++,category:c.category,score:c.score,box:h,centerX:u,centerY:p,vx:0,vy:0,age:1,hits:1,timeSinceUpdate:0,active:this._minHits<=1,isCoasting:!1})}return this._tracks=this._tracks.filter(a=>a.timeSinceUpdate<=this._maxMissedFrames),this._tracks.filter(a=>a.active).map(a=>{let c=a.box.normalizedWidth,h=a.box.normalizedHeight,u=a.box.normalizedX+c/2,p=a.box.normalizedY+h/2,T=Math.sqrt(a.vx*a.vx+a.vy*a.vy);return{trackId:a.trackId,category:a.category,score:a.score,boundingBox:a.box,centerX:a.centerX,centerY:a.centerY,normalizedCenterX:u,normalizedCenterY:p,velocity:{vx:a.vx,vy:a.vy},speed:T,age:a.age,hits:a.hits,active:this._activeDuringCoast?!0:a.timeSinceUpdate===0,isCoasting:a.isCoasting}})}trackSequence(e,t,n=24){this.reset();let o=n>0?1/n:.0416,s=new Map;for(let a=0;a<t;a++){let c=e[a]??[],h=this.update(c,a,n);for(let u of h)s.has(u.trackId)||s.set(u.trackId,{category:u.category,observations:[]}),u.isCoasting||s.get(u.trackId).observations.push({frame:a,box:u.boundingBox,score:u.score})}let i=new Map;for(let[a,c]of s.entries()){let h=c.observations;if(h.length===0)continue;h.sort((g,_)=>g.frame-_.frame);let u=new Array(t).fill(null);for(let g of h)u[g.frame]={box:g.box,score:g.score};let p=h[0];for(let g=0;g<p.frame;g++)u[g]={box:{...p.box},score:p.score*.9};for(let g=0;g<h.length-1;g++){let _=h[g],b=h[g+1],j=b.frame-_.frame;if(!(j<=1))for(let l=_.frame+1;l<b.frame;l++){let m=(l-_.frame)/j,x=_.box.originX+(b.box.originX-_.box.originX)*m,v=_.box.originY+(b.box.originY-_.box.originY)*m,w=_.box.width+(b.box.width-_.box.width)*m,O=_.box.height+(b.box.height-_.box.height)*m,H=_.box.normalizedX+(b.box.normalizedX-_.box.normalizedX)*m,R=_.box.normalizedY+(b.box.normalizedY-_.box.normalizedY)*m,M=_.box.normalizedWidth+(b.box.normalizedWidth-_.box.normalizedWidth)*m,d=_.box.normalizedHeight+(b.box.normalizedHeight-_.box.normalizedHeight)*m;u[l]={box:{originX:x,originY:v,width:w,height:O,normalizedX:H,normalizedY:R,normalizedWidth:M,normalizedHeight:d},score:_.score*(1-m)+b.score*m}}}let T=h[h.length-1];for(let g=T.frame+1;g<t;g++)u[g]={box:{...T.box},score:T.score*.9};let E=[],P=2,L=[.06136,.24477,.38774,.24477,.06136];for(let g=0;g<t;g++){let _=0,b=0,j=0,l=0,m=0,x=0,v=0,w=0,O=0,H=0;for(let M=-P;M<=P;M++){let d=Math.max(0,Math.min(t-1,g+M)),I=u[d];if(I){let U=L[M+P];_+=U,b+=I.box.originX*U,j+=I.box.originY*U,l+=I.box.width*U,m+=I.box.height*U,x+=I.box.normalizedX*U,v+=I.box.normalizedY*U,w+=I.box.normalizedWidth*U,O+=I.box.normalizedHeight*U,H+=I.score*U}}let R=_>0?1/_:1;E.push({box:{originX:b*R,originY:j*R,width:l*R,height:m*R,normalizedX:x*R,normalizedY:v*R,normalizedWidth:w*R,normalizedHeight:O*R},score:H*R})}i.set(a,{category:c.category,frames:E})}let f=[];for(let a=0;a<t;a++){let c=[];for(let[h,u]of i.entries()){let p=u.frames[a];if(!p)continue;let T=u.frames[Math.max(0,a-1)]??p,E=u.frames[Math.min(t-1,a+1)]??p,P=p.box.originX+p.box.width/2,L=p.box.originY+p.box.height/2,g=T.box.originX+T.box.width/2,_=T.box.originY+T.box.height/2,b=E.box.originX+E.box.width/2,j=E.box.originY+E.box.height/2,l=a===0||a===t-1?o:2*o,m=(b-g)/l,x=(j-_)/l,v=Math.sqrt(m*m+x*x),w=p.box.normalizedWidth,O=p.box.normalizedHeight;c.push({trackId:h,category:u.category,score:p.score,boundingBox:p.box,centerX:P,centerY:L,normalizedCenterX:p.box.normalizedX+w/2,normalizedCenterY:p.box.normalizedY+O/2,velocity:{vx:m,vy:x},speed:v,age:a+1,hits:10,active:!0,isCoasting:!1})}f.push(c)}return f}reset(){this._tracks=[],this._nextTrackId=1}};var gt=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();async function Gn(r,e){let{runner:t}=e,n=e.fps??24,o=e.tasks&&e.tasks.length>0?e.tasks:["detect"],s=new Set(o),i=e.categories?new Set(e.categories.map(M=>M.toLowerCase())):null,f=e.includeMasks===!0&&s.has("segment"),a=s.has("detect")||s.has("segment"),c=[],h={},u=new Map,p=0,T=0,E=M=>!i||i.has(M.toLowerCase()),P=async(M,d,I)=>{let U=t.modelKeyFor(M,d.width/d.height),A=t.downloadStatus.get(U)==="ready",V=gt(),D=await I(),X=gt()-V;return p+=X,!A&&!h[U]&&(h[U]={bytes:re[U].bytes,ms:X}),D},L=M=>{for(let d of M){if(!E(d.category))continue;let I=u.get(d.category)??{sum:0,count:0};I.sum+=d.coverage,I.count++,u.set(d.category,I)}};for await(let M of r){let d=[];if(f){let I=await P("segment",M,()=>t.segment(M));L(I.masks),d=I.detections}else a&&(d=await P("detect",M,()=>t.detect(M)));s.has("pose")&&await P("pose",M,()=>t.pose(M)),s.has("matte")&&await P("matte",M,()=>t.matte(M)),c.push(i?d.filter(I=>E(I.category)):d),T++}let g=T,b=new ue({iouThreshold:e.iouThreshold??.25,maxMissedFrames:e.maxMissedFrames??15}).trackSequence(c,g,n),j=e.pathStride??Math.max(1,Math.ceil(g/50)),l=new Map,m=new Map,x=new Map,v=new Map,w=(M,d,I)=>{let U=M.get(d);return U===void 0&&(U=I(),M.set(d,U)),U};for(let M=0;M<g;M++)for(let d of b[M]??[]){if(!E(d.category))continue;let I=l.get(d.trackId);I||(I={category:d.category,firstFrame:M,lastFrame:M,speedSum:0,speedCount:0,centers:[]},l.set(d.trackId,I)),I.lastFrame=M,Number.isFinite(d.speed)&&(I.speedSum+=d.speed,I.speedCount++),(M-I.firstFrame)%j===0&&I.centers.push({frame:M,x:d.centerX,y:d.centerY}),w(m,d.category,()=>new Set).add(M),x.set(d.category,Math.max(x.get(d.category)??0,d.score)),w(v,d.category,()=>new Set).add(d.trackId)}let O=Array.from(l.entries()).map(([M,d])=>({trackId:M,category:d.category,frames:[d.firstFrame,d.lastFrame],speedMeanPxS:d.speedCount>0?d.speedSum/d.speedCount:0,centerPath:d.centers.map(I=>[I.x,I.y])})).sort((M,d)=>M.trackId-d.trackId),H={};for(let[M,d]of m)H[M]={framesPresent:d.size,totalFrames:g,maxConfidence:x.get(M)??0,tracks:v.get(M)?.size??0};let R={};for(let[M,d]of u)R[M]={meanCoverage:d.count>0?d.sum/d.count:0};return{source:e.source??"frames",totalFrames:g,fps:n,durationSec:n>0?g/n:0,tasks:Array.from(s),modelDownloads:h,inferenceMs:p,trackCount:O.length,classes:H,tracks:O,masks:R}}y();var en=[103.53,116.28,123.675],tn=[57.375,57.12,58.395],nn={"rtmdet-ins":{fit:"topLeft",channels:"bgr",mean:en,std:tn,padValue:114},rtmo:{fit:"center",channels:"bgr",mean:[0,0,0],std:[1,1,1],padValue:114},selfie:{fit:"stretch",channels:"rgb",mean:[0,0,0],std:[255,255,255],padValue:0}};function pt(r,e){return{...nn[r],width:e[0],height:e[1]}}function rn(r,e,t){if(t.fit==="stretch")return{scaleX:t.width/r,scaleY:t.height/e,offsetX:0,offsetY:0,inputWidth:t.width,inputHeight:t.height};let n=Math.min(t.width/r,t.height/e),o=Math.round(r*n),s=Math.round(e*n),i=t.fit==="center";return{scaleX:n,scaleY:n,offsetX:i?(t.width-o)/2:0,offsetY:i?(t.height-s)/2:0,inputWidth:t.width,inputHeight:t.height}}function ce(r,e,t){return{x:(r-t.offsetX)/t.scaleX,y:(e-t.offsetY)/t.scaleY}}function bt(r,e,t){let{width:n,height:o,data:s}=r,{width:i,height:f}=e,a=rn(n,o,e),{scaleX:c,scaleY:h,offsetX:u,offsetY:p}=a,T=i*f;(!t||t.length<3*T)&&(t=new Float32Array(3*T));let E=e.channels==="bgr"?[2,1,0]:[0,1,2],[P,L,g]=e.mean,_=1/e.std[0],b=1/e.std[1],j=1/e.std[2],l=(e.padValue-P)*_,m=(e.padValue-L)*b,x=(e.padValue-g)*j,[v,w,O]=E,H=Math.ceil(u),R=Math.ceil(p),M=Math.min(i,Math.floor(u+n*c))-1,d=Math.min(f,Math.floor(p+o*h))-1;for(let I=0;I<f;I++){let U=I*i,A=I<R||I>d,V=Math.max(0,(I+.5-p)/h-.5),D=Math.min(o-1,Math.floor(V)),X=Math.min(o-1,D+1),q=V-D;for(let $=0;$<i;$++){let N=U+$;if(A||$<H||$>M){t[N]=l,t[T+N]=m,t[2*T+N]=x;continue}let K=Math.max(0,($+.5-u)/c-.5),G=Math.min(n-1,Math.floor(K)),ne=Math.min(n-1,G+1),z=K-G,Q=(D*n+G)*4,F=(D*n+ne)*4,Y=(X*n+G)*4,Z=(X*n+ne)*4,J=(1-z)*(1-q),ee=z*(1-q),W=(1-z)*q,oe=z*q;t[N]=(s[Q+v]*J+s[F+v]*ee+s[Y+v]*W+s[Z+v]*oe-P)*_,t[T+N]=(s[Q+w]*J+s[F+w]*ee+s[Y+w]*W+s[Z+w]*oe-L)*b,t[2*T+N]=(s[Q+O]*J+s[F+O]*ee+s[Y+O]*W+s[Z+O]*oe-g)*j}}return{tensor:t,transform:a}}y();var xe=8;function Ue(r,e){let{sourceWidth:t,sourceHeight:n,transform:o}=e,s=e.classes?new Set(e.classes.map(P=>P.toLowerCase())):null,i=[];for(let P=0;P<r.count;P++){let L=r.dets[P*5+4];if(!(L>=e.confidence))continue;let g=Number(r.labels[P]),_=e.classNames[g]??`class_${g}`;if(s&&!s.has(_.toLowerCase()))continue;let b=ce(r.dets[P*5],r.dets[P*5+1],o),j=ce(r.dets[P*5+2],r.dets[P*5+3],o),l=ie(b.x,0,t),m=ie(b.y,0,n),x=ie(j.x,0,t)-l,v=ie(j.y,0,n)-m;x<=0||v<=0||i.push({index:P,detection:{category:_,score:L,boundingBox:{originX:l,originY:m,width:x,height:v,normalizedX:l/t,normalizedY:m/n,normalizedWidth:x/t,normalizedHeight:v/n}}})}i.sort((P,L)=>L.detection.score-P.detection.score);let f=i.map(P=>P.detection),a=[];if(!r.masks)return{detections:f,masks:a};let c=He(e.maskThreshold??.5,e.featherRadius??.05),{maskWidth:h,maskHeight:u}=r,p=h*u,T=h/o.inputWidth,E=u/o.inputHeight;for(let P=0;P<i.length;P++){let{index:L,detection:g}=i[P],_=g.boundingBox,b=L*p,j=Math.max(0,Math.floor(_.originX)-xe),l=Math.max(0,Math.floor(_.originY)-xe),m=Math.min(t-1,Math.ceil(_.originX+_.width)+xe),x=Math.min(n-1,Math.ceil(_.originY+_.height)+xe),v=new Uint8Array(t*n),w=0;for(let O=l;O<=x;O++){let H=((O+.5)*o.scaleY+o.offsetY)*E-.5,R=ie(Math.floor(H),0,u-1),M=Math.min(u-1,R+1),d=ie(H-R,0,1),I=O*t;for(let U=j;U<=m;U++){let A=((U+.5)*o.scaleX+o.offsetX)*T-.5,V=ie(Math.floor(A),0,h-1),D=Math.min(h-1,V+1),X=ie(A-V,0,1),q=r.masks[b+R*h+V]*(1-X)*(1-d)+r.masks[b+R*h+D]*X*(1-d)+r.masks[b+M*h+V]*(1-X)*d+r.masks[b+M*h+D]*X*d,$=c(q);$>0&&(v[I+U]=$,w+=$/255)}}w=Math.round(w),w!==0&&a.push({category:g.category,mask:v,width:t,height:n,area:w,coverage:w/(t*n),detectionIndex:P})}return{detections:f,masks:a}}function He(r,e){if(e<=0)return o=>o>r?255:0;let t=r-e,n=255/(2*e);return o=>o<=t?0:o>=r+e?255:(o-t)*n}function ie(r,e,t){return r<e?e:r>t?t:r}y();var yt=17,ze=.3;function xt(r,e){let{sourceWidth:t,sourceHeight:n,transform:o}=e,s=r.keypointStride,i=[];for(let c=0;c<r.count;c++){let h=r.dets[c*5+4];if(!(h>=e.confidence))continue;let u=ce(r.dets[c*5],r.dets[c*5+1],o),p=ce(r.dets[c*5+2],r.dets[c*5+3],o),T=le(u.x,0,t),E=le(u.y,0,n),P=le(p.x,0,t)-T,L=le(p.y,0,n)-E;if(P<=0||L<=0)continue;let g=[],_=c*yt*s;for(let j=0;j<yt;j++){let l=_+j*s,m=ce(r.keypoints[l],r.keypoints[l+1],o);g.push({x:le(m.x,0,t),y:le(m.y,0,n),visibility:le(r.keypoints[l+2],0,1)})}let b=0;for(let j of g)j.visibility>=ze&&b++;b<(e.minVisibleKeypoints??3)||i.push({score:h,boundingBox:{originX:T,originY:E,width:P,height:L,normalizedX:T/t,normalizedY:E/n,normalizedWidth:P/t,normalizedHeight:L/n},keypoints:g})}i.sort((c,h)=>h.score-c.score);let f=e.iouThreshold??.6,a=[];for(let c of i)a.some(h=>on(h,c,f))||a.push(c);return{people:a}}function le(r,e,t){return r<e?e:r>t?t:r}function on(r,e,t){if(ae(r.boundingBox,e.boundingBox)>t)return!0;let n=Math.sqrt(r.boundingBox.width*r.boundingBox.height),o=0,s=0;for(let i=0;i<r.keypoints.length;i++){let f=r.keypoints[i],a=e.keypoints[i];f.visibility<ze||a.visibility<ze||(o+=Math.hypot(f.x-a.x,f.y-a.y),s++)}return s>=3&&o/s<.1*n}y();function kt(r,e,t,n){let{sourceWidth:o,sourceHeight:s}=n,i=He(n.maskThreshold??.5,n.featherRadius??.2),f=new Uint8Array(o*s),a=e/o,c=t/s,h=0;for(let u=0;u<s;u++){let p=Math.max(0,(u+.5)*c-.5),T=Math.min(t-1,Math.floor(p)),E=Math.min(t-1,T+1),P=p-T;for(let L=0;L<o;L++){let g=Math.max(0,(L+.5)*a-.5),_=Math.min(e-1,Math.floor(g)),b=Math.min(e-1,_+1),j=g-_,l=r[T*e+_]*(1-j)*(1-P)+r[T*e+b]*j*(1-P)+r[E*e+_]*(1-j)*P+r[E*e+b]*j*P,m=i(l);f[u*o+L]=m,h+=m}}return{mask:f,width:o,height:s,coverage:o*s>0?h/(255*o*s):0}}y();y();y();var Tt=`
|
|
1
|
+
import{a as Ve}from"./chunk-VXUJWPIK.mjs";import{a as lt}from"./chunk-XKO4RYKN.mjs";import{c as mt}from"./chunk-UC7CSW2A.mjs";import{I as ut,a as S,b as C}from"./chunk-NQZKBFC6.mjs";import{b as dt,d as be,e as je,h as te}from"./chunk-P3HBP725.mjs";import{a as nt}from"./chunk-YSTLMWCG.mjs";import{a as st,e as it,i as Le,j as at}from"./chunk-4GEWSUX5.mjs";import{b as ge,c as rt,e as ot}from"./chunk-MTJHQATU.mjs";import{d as ct,e as pe,g as Ee}from"./chunk-YAQFFQPG.mjs";import{a as Jt,c as Qt,d as B,e as y}from"./chunk-BVF64D6H.mjs";var vt=Jt((kr,wt)=>{y();var _e=()=>new Proxy(function(){},{get:(r,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":_e(),apply:()=>_e(),construct:()=>_e()});wt.exports=_e()});y();y();y();y();y();var se=(r,e,t)=>`https://huggingface.co/${r}/resolve/${e}/${t}`,Ae="tori29umai/rtmdet-ins-onnx-person-masks",Be="e5218e8d47d7c50077f27f9893a28e0ef2ad5656",De="RTMDet-Ins (OpenMMLab mmdetection, Apache-2.0), mmdeploy ONNX export",Fe="RTMO (OpenMMLab mmpose, Apache-2.0), ONNX export",ft="MediaPipe Selfie Segmenter (Google, Apache-2.0), ONNX export",re={"rtmdet-ins-t":{key:"rtmdet-ins-t",family:"rtmdet-ins",filename:"rtmdet-ins-t.onnx",url:se(Ae,Be,"models/tiny/rtmdet-ins_tiny_640x640.onnx"),bytes:24032356,sha256:"99ee670820c4493aa13e20578b6a8e39781c319846dc41796a77765734beac5c",input:[640,640],source:De},"rtmdet-ins-s":{key:"rtmdet-ins-s",family:"rtmdet-ins",filename:"rtmdet-ins-s.onnx",url:se(Ae,Be,"models/s/rtmdet-ins_s_640x640.onnx"),bytes:43236976,sha256:"9cd1787fbf3eb2bd64cc2d8154f41c036f5484b85599e1cbe0227a2dc5a4a08b",input:[640,640],source:De},"rtmdet-ins-m":{key:"rtmdet-ins-m",family:"rtmdet-ins",filename:"rtmdet-ins-m.onnx",url:se(Ae,Be,"models/m/rtmdet-ins_m_640x640.onnx"),bytes:115735979,sha256:"a003bce80316e03467c2c2b483df2d5c0398220c2357a44f9bf985929f7eb052",input:[640,640],source:De},"rtmo-t":{key:"rtmo-t",family:"rtmo",filename:"rtmo-t.onnx",url:se("Xenova/RTMO-t","f29d13ce5ee291fbe505e9d06a049992f05699dc","onnx/model.onnx"),bytes:27360569,sha256:"cb54dd042bf997df86d938721c94238940f2bff98ba8d2ccc834430de5c65c13",input:[416,416],source:Fe},"rtmo-s":{key:"rtmo-s",family:"rtmo",filename:"rtmo-s.onnx",url:se("Xenova/RTMO-s","d8c526187f341d287753831c9c8b1ecc4855bba1","onnx/model.onnx"),bytes:39636400,sha256:"1cd6a3517658903233e9ccb78666554862f57f0944b6886e2048093594aef4e7",input:[640,640],source:Fe},"rtmo-m":{key:"rtmo-m",family:"rtmo",filename:"rtmo-m.onnx",url:se("Xenova/RTMO-m","3aba1280472b98ee2bf663482e27e243038d23fe","onnx/model.onnx"),bytes:89291929,sha256:"76d82c45e5c4810baf587ecf2638d15cbf7ed196afb2055e977382532021b59e",input:[640,640],source:Fe},"selfie-square":{key:"selfie-square",family:"selfie",filename:"selfie-square.onnx",url:se("onnx-community/mediapipe_selfie_segmentation","be49485c8e027524be38591817fc5cd31bd9d00e","onnx/model.onnx"),bytes:462352,sha256:"3241ac4ad8aa35bdaf33946776db29f7c283a413aa0b0dacb9483594b4531aad",input:[256,256],source:ft},"selfie-landscape":{key:"selfie-landscape",family:"selfie",filename:"selfie-landscape.onnx",url:se("onnx-community/mediapipe_selfie_segmentation_landscape","2497d5bec26c626c7b3c4edc6e1fefc21b64f6c3","onnx/model.onnx"),bytes:462338,sha256:"7a0adcfdb1715d3b0ff0f61486d8a181c33f4a208343a5abfccbc6540e872d24",input:[256,144],source:ft}};function ht(r,e="s",t=1){return r==="pose"?`rtmo-${e}`:r==="matte"?t>1.3?"selfie-landscape":"selfie-square":`rtmdet-ins-${e}`}var ye=["person","bicycle","car","motorcycle","airplane","bus","train","truck","boat","traffic light","fire hydrant","stop sign","parking meter","bench","bird","cat","dog","horse","sheep","cow","elephant","bear","zebra","giraffe","backpack","umbrella","handbag","tie","suitcase","frisbee","skis","snowboard","sports ball","kite","baseball bat","baseball glove","skateboard","surfboard","tennis racket","bottle","wine glass","cup","fork","knife","spoon","bowl","banana","apple","sandwich","orange","broccoli","carrot","hot dog","pizza","donut","cake","chair","couch","potted plant","bed","dining table","toilet","tv","laptop","mouse","remote","keyboard","cell phone","microwave","oven","toaster","sink","refrigerator","book","clock","vase","scissors","teddy bear","hair drier","toothbrush"];y();function ae(r,e){let t=Math.max(r.originX,e.originX),n=Math.max(r.originY,e.originY),o=Math.min(r.originX+r.width,e.originX+e.width),s=Math.min(r.originY+r.height,e.originY+e.height),i=Math.max(0,o-t),f=Math.max(0,s-n),a=i*f;if(a<=0)return 0;let c=r.width*r.height,h=e.width*e.height,u=c+h-a;return u>0?a/u:0}var ue=class{_nextTrackId=1;_tracks=[];_iouThreshold;_maxMissedFrames;_minHits;_positionSmoothing;_activeDuringCoast;constructor(e={}){this._iouThreshold=e.iouThreshold??.25,this._maxMissedFrames=e.maxMissedFrames??15,this._minHits=e.minHits??1,this._positionSmoothing=Math.max(.1,Math.min(1,e.positionSmoothing??.75)),this._activeDuringCoast=e.activeDuringCoast!==!1}update(e,t,n=24){let o=n>0?1/n:.0416;for(let a of this._tracks)if(a.age++,a.timeSinceUpdate++,a.timeSinceUpdate>0){let c=a.centerX+a.vx*o,h=a.centerY+a.vy*o;a.centerX=c,a.centerY=h;let u=a.box.width,p=a.box.height,T=a.box.normalizedWidth,E=a.box.normalizedHeight,P=a.box.normalizedX+T/2+a.vx*o/Math.max(1,a.box.width/T),L=a.box.normalizedY+E/2+a.vy*o/Math.max(1,a.box.height/E);a.box={originX:c-u/2,originY:h-p/2,width:u,height:p,normalizedX:P-T/2,normalizedY:L-E/2,normalizedWidth:T,normalizedHeight:E},a.vx*=.92,a.vy*=.92,a.isCoasting=!0}let s=new Set,i=new Set,f=[];for(let a=0;a<this._tracks.length;a++){let c=this._tracks[a];for(let h=0;h<e.length;h++){let u=e[h];if(c.category!==u.category)continue;let p=ae(c.box,u.boundingBox);p>=this._iouThreshold&&f.push({trackIdx:a,detIdx:h,iou:p})}}f.sort((a,c)=>c.iou-a.iou);for(let a of f){if(i.has(a.trackIdx)||s.has(a.detIdx))continue;i.add(a.trackIdx),s.add(a.detIdx);let c=this._tracks[a.trackIdx],h=e[a.detIdx],u=h.boundingBox,p=u.originX+u.width/2,T=u.originY+u.height/2,E=(p-c.centerX)/o,P=(T-c.centerY)/o;c.vx=c.vx*.4+E*.6,c.vy=c.vy*.4+P*.6;let L=this._positionSmoothing,g=c.box.width*(1-L)+u.width*L,_=c.box.height*(1-L)+u.height*L,b=c.centerX*(1-L)+p*L,j=c.centerY*(1-L)+T*L;c.centerX=b,c.centerY=j,c.score=h.score,c.timeSinceUpdate=0,c.hits++,c.isCoasting=!1,c.hits>=this._minHits&&(c.active=!0),c.box={originX:b-g/2,originY:j-_/2,width:g,height:_,normalizedX:u.normalizedX,normalizedY:u.normalizedY,normalizedWidth:u.normalizedWidth,normalizedHeight:u.normalizedHeight}}for(let a=0;a<e.length;a++){if(s.has(a))continue;let c=e[a],h=c.boundingBox,u=h.originX+h.width/2,p=h.originY+h.height/2;this._tracks.push({trackId:this._nextTrackId++,category:c.category,score:c.score,box:h,centerX:u,centerY:p,vx:0,vy:0,age:1,hits:1,timeSinceUpdate:0,active:this._minHits<=1,isCoasting:!1})}return this._tracks=this._tracks.filter(a=>a.timeSinceUpdate<=this._maxMissedFrames),this._tracks.filter(a=>a.active).map(a=>{let c=a.box.normalizedWidth,h=a.box.normalizedHeight,u=a.box.normalizedX+c/2,p=a.box.normalizedY+h/2,T=Math.sqrt(a.vx*a.vx+a.vy*a.vy);return{trackId:a.trackId,category:a.category,score:a.score,boundingBox:a.box,centerX:a.centerX,centerY:a.centerY,normalizedCenterX:u,normalizedCenterY:p,velocity:{vx:a.vx,vy:a.vy},speed:T,age:a.age,hits:a.hits,active:this._activeDuringCoast?!0:a.timeSinceUpdate===0,isCoasting:a.isCoasting}})}trackSequence(e,t,n=24){this.reset();let o=n>0?1/n:.0416,s=new Map;for(let a=0;a<t;a++){let c=e[a]??[],h=this.update(c,a,n);for(let u of h)s.has(u.trackId)||s.set(u.trackId,{category:u.category,observations:[]}),u.isCoasting||s.get(u.trackId).observations.push({frame:a,box:u.boundingBox,score:u.score})}let i=new Map;for(let[a,c]of s.entries()){let h=c.observations;if(h.length===0)continue;h.sort((g,_)=>g.frame-_.frame);let u=new Array(t).fill(null);for(let g of h)u[g.frame]={box:g.box,score:g.score};let p=h[0];for(let g=0;g<p.frame;g++)u[g]={box:{...p.box},score:p.score*.9};for(let g=0;g<h.length-1;g++){let _=h[g],b=h[g+1],j=b.frame-_.frame;if(!(j<=1))for(let l=_.frame+1;l<b.frame;l++){let m=(l-_.frame)/j,x=_.box.originX+(b.box.originX-_.box.originX)*m,v=_.box.originY+(b.box.originY-_.box.originY)*m,w=_.box.width+(b.box.width-_.box.width)*m,O=_.box.height+(b.box.height-_.box.height)*m,H=_.box.normalizedX+(b.box.normalizedX-_.box.normalizedX)*m,R=_.box.normalizedY+(b.box.normalizedY-_.box.normalizedY)*m,M=_.box.normalizedWidth+(b.box.normalizedWidth-_.box.normalizedWidth)*m,d=_.box.normalizedHeight+(b.box.normalizedHeight-_.box.normalizedHeight)*m;u[l]={box:{originX:x,originY:v,width:w,height:O,normalizedX:H,normalizedY:R,normalizedWidth:M,normalizedHeight:d},score:_.score*(1-m)+b.score*m}}}let T=h[h.length-1];for(let g=T.frame+1;g<t;g++)u[g]={box:{...T.box},score:T.score*.9};let E=[],P=2,L=[.06136,.24477,.38774,.24477,.06136];for(let g=0;g<t;g++){let _=0,b=0,j=0,l=0,m=0,x=0,v=0,w=0,O=0,H=0;for(let M=-P;M<=P;M++){let d=Math.max(0,Math.min(t-1,g+M)),I=u[d];if(I){let U=L[M+P];_+=U,b+=I.box.originX*U,j+=I.box.originY*U,l+=I.box.width*U,m+=I.box.height*U,x+=I.box.normalizedX*U,v+=I.box.normalizedY*U,w+=I.box.normalizedWidth*U,O+=I.box.normalizedHeight*U,H+=I.score*U}}let R=_>0?1/_:1;E.push({box:{originX:b*R,originY:j*R,width:l*R,height:m*R,normalizedX:x*R,normalizedY:v*R,normalizedWidth:w*R,normalizedHeight:O*R},score:H*R})}i.set(a,{category:c.category,frames:E})}let f=[];for(let a=0;a<t;a++){let c=[];for(let[h,u]of i.entries()){let p=u.frames[a];if(!p)continue;let T=u.frames[Math.max(0,a-1)]??p,E=u.frames[Math.min(t-1,a+1)]??p,P=p.box.originX+p.box.width/2,L=p.box.originY+p.box.height/2,g=T.box.originX+T.box.width/2,_=T.box.originY+T.box.height/2,b=E.box.originX+E.box.width/2,j=E.box.originY+E.box.height/2,l=a===0||a===t-1?o:2*o,m=(b-g)/l,x=(j-_)/l,v=Math.sqrt(m*m+x*x),w=p.box.normalizedWidth,O=p.box.normalizedHeight;c.push({trackId:h,category:u.category,score:p.score,boundingBox:p.box,centerX:P,centerY:L,normalizedCenterX:p.box.normalizedX+w/2,normalizedCenterY:p.box.normalizedY+O/2,velocity:{vx:m,vy:x},speed:v,age:a+1,hits:10,active:!0,isCoasting:!1})}f.push(c)}return f}reset(){this._tracks=[],this._nextTrackId=1}};var gt=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();async function Gn(r,e){let{runner:t}=e,n=e.fps??24,o=e.tasks&&e.tasks.length>0?e.tasks:["detect"],s=new Set(o),i=e.categories?new Set(e.categories.map(M=>M.toLowerCase())):null,f=e.includeMasks===!0&&s.has("segment"),a=s.has("detect")||s.has("segment"),c=[],h={},u=new Map,p=0,T=0,E=M=>!i||i.has(M.toLowerCase()),P=async(M,d,I)=>{let U=t.modelKeyFor(M,d.width/d.height),A=t.downloadStatus.get(U)==="ready",V=gt(),D=await I(),X=gt()-V;return p+=X,!A&&!h[U]&&(h[U]={bytes:re[U].bytes,ms:X}),D},L=M=>{for(let d of M){if(!E(d.category))continue;let I=u.get(d.category)??{sum:0,count:0};I.sum+=d.coverage,I.count++,u.set(d.category,I)}};for await(let M of r){let d=[];if(f){let I=await P("segment",M,()=>t.segment(M));L(I.masks),d=I.detections}else a&&(d=await P("detect",M,()=>t.detect(M)));s.has("pose")&&await P("pose",M,()=>t.pose(M)),s.has("matte")&&await P("matte",M,()=>t.matte(M)),c.push(i?d.filter(I=>E(I.category)):d),T++}let g=T,b=new ue({iouThreshold:e.iouThreshold??.25,maxMissedFrames:e.maxMissedFrames??15}).trackSequence(c,g,n),j=e.pathStride??Math.max(1,Math.ceil(g/50)),l=new Map,m=new Map,x=new Map,v=new Map,w=(M,d,I)=>{let U=M.get(d);return U===void 0&&(U=I(),M.set(d,U)),U};for(let M=0;M<g;M++)for(let d of b[M]??[]){if(!E(d.category))continue;let I=l.get(d.trackId);I||(I={category:d.category,firstFrame:M,lastFrame:M,speedSum:0,speedCount:0,centers:[]},l.set(d.trackId,I)),I.lastFrame=M,Number.isFinite(d.speed)&&(I.speedSum+=d.speed,I.speedCount++),(M-I.firstFrame)%j===0&&I.centers.push({frame:M,x:d.centerX,y:d.centerY}),w(m,d.category,()=>new Set).add(M),x.set(d.category,Math.max(x.get(d.category)??0,d.score)),w(v,d.category,()=>new Set).add(d.trackId)}let O=Array.from(l.entries()).map(([M,d])=>({trackId:M,category:d.category,frames:[d.firstFrame,d.lastFrame],speedMeanPxS:d.speedCount>0?d.speedSum/d.speedCount:0,centerPath:d.centers.map(I=>[I.x,I.y])})).sort((M,d)=>M.trackId-d.trackId),H={};for(let[M,d]of m)H[M]={framesPresent:d.size,totalFrames:g,maxConfidence:x.get(M)??0,tracks:v.get(M)?.size??0};let R={};for(let[M,d]of u)R[M]={meanCoverage:d.count>0?d.sum/d.count:0};return{source:e.source??"frames",totalFrames:g,fps:n,durationSec:n>0?g/n:0,tasks:Array.from(s),modelDownloads:h,inferenceMs:p,trackCount:O.length,classes:H,tracks:O,masks:R}}y();var en=[103.53,116.28,123.675],tn=[57.375,57.12,58.395],nn={"rtmdet-ins":{fit:"topLeft",channels:"bgr",mean:en,std:tn,padValue:114},rtmo:{fit:"center",channels:"bgr",mean:[0,0,0],std:[1,1,1],padValue:114},selfie:{fit:"stretch",channels:"rgb",mean:[0,0,0],std:[255,255,255],padValue:0}};function pt(r,e){return{...nn[r],width:e[0],height:e[1]}}function rn(r,e,t){if(t.fit==="stretch")return{scaleX:t.width/r,scaleY:t.height/e,offsetX:0,offsetY:0,inputWidth:t.width,inputHeight:t.height};let n=Math.min(t.width/r,t.height/e),o=Math.round(r*n),s=Math.round(e*n),i=t.fit==="center";return{scaleX:n,scaleY:n,offsetX:i?(t.width-o)/2:0,offsetY:i?(t.height-s)/2:0,inputWidth:t.width,inputHeight:t.height}}function ce(r,e,t){return{x:(r-t.offsetX)/t.scaleX,y:(e-t.offsetY)/t.scaleY}}function bt(r,e,t){let{width:n,height:o,data:s}=r,{width:i,height:f}=e,a=rn(n,o,e),{scaleX:c,scaleY:h,offsetX:u,offsetY:p}=a,T=i*f;(!t||t.length<3*T)&&(t=new Float32Array(3*T));let E=e.channels==="bgr"?[2,1,0]:[0,1,2],[P,L,g]=e.mean,_=1/e.std[0],b=1/e.std[1],j=1/e.std[2],l=(e.padValue-P)*_,m=(e.padValue-L)*b,x=(e.padValue-g)*j,[v,w,O]=E,H=Math.ceil(u),R=Math.ceil(p),M=Math.min(i,Math.floor(u+n*c))-1,d=Math.min(f,Math.floor(p+o*h))-1;for(let I=0;I<f;I++){let U=I*i,A=I<R||I>d,V=Math.max(0,(I+.5-p)/h-.5),D=Math.min(o-1,Math.floor(V)),X=Math.min(o-1,D+1),q=V-D;for(let $=0;$<i;$++){let N=U+$;if(A||$<H||$>M){t[N]=l,t[T+N]=m,t[2*T+N]=x;continue}let K=Math.max(0,($+.5-u)/c-.5),G=Math.min(n-1,Math.floor(K)),ne=Math.min(n-1,G+1),z=K-G,Q=(D*n+G)*4,F=(D*n+ne)*4,Y=(X*n+G)*4,Z=(X*n+ne)*4,J=(1-z)*(1-q),ee=z*(1-q),W=(1-z)*q,oe=z*q;t[N]=(s[Q+v]*J+s[F+v]*ee+s[Y+v]*W+s[Z+v]*oe-P)*_,t[T+N]=(s[Q+w]*J+s[F+w]*ee+s[Y+w]*W+s[Z+w]*oe-L)*b,t[2*T+N]=(s[Q+O]*J+s[F+O]*ee+s[Y+O]*W+s[Z+O]*oe-g)*j}}return{tensor:t,transform:a}}y();var xe=8;function Ue(r,e){let{sourceWidth:t,sourceHeight:n,transform:o}=e,s=e.classes?new Set(e.classes.map(P=>P.toLowerCase())):null,i=[];for(let P=0;P<r.count;P++){let L=r.dets[P*5+4];if(!(L>=e.confidence))continue;let g=Number(r.labels[P]),_=e.classNames[g]??`class_${g}`;if(s&&!s.has(_.toLowerCase()))continue;let b=ce(r.dets[P*5],r.dets[P*5+1],o),j=ce(r.dets[P*5+2],r.dets[P*5+3],o),l=ie(b.x,0,t),m=ie(b.y,0,n),x=ie(j.x,0,t)-l,v=ie(j.y,0,n)-m;x<=0||v<=0||i.push({index:P,detection:{category:_,score:L,boundingBox:{originX:l,originY:m,width:x,height:v,normalizedX:l/t,normalizedY:m/n,normalizedWidth:x/t,normalizedHeight:v/n}}})}i.sort((P,L)=>L.detection.score-P.detection.score);let f=i.map(P=>P.detection),a=[];if(!r.masks)return{detections:f,masks:a};let c=He(e.maskThreshold??.5,e.featherRadius??.05),{maskWidth:h,maskHeight:u}=r,p=h*u,T=h/o.inputWidth,E=u/o.inputHeight;for(let P=0;P<i.length;P++){let{index:L,detection:g}=i[P],_=g.boundingBox,b=L*p,j=Math.max(0,Math.floor(_.originX)-xe),l=Math.max(0,Math.floor(_.originY)-xe),m=Math.min(t-1,Math.ceil(_.originX+_.width)+xe),x=Math.min(n-1,Math.ceil(_.originY+_.height)+xe),v=new Uint8Array(t*n),w=0;for(let O=l;O<=x;O++){let H=((O+.5)*o.scaleY+o.offsetY)*E-.5,R=ie(Math.floor(H),0,u-1),M=Math.min(u-1,R+1),d=ie(H-R,0,1),I=O*t;for(let U=j;U<=m;U++){let A=((U+.5)*o.scaleX+o.offsetX)*T-.5,V=ie(Math.floor(A),0,h-1),D=Math.min(h-1,V+1),X=ie(A-V,0,1),q=r.masks[b+R*h+V]*(1-X)*(1-d)+r.masks[b+R*h+D]*X*(1-d)+r.masks[b+M*h+V]*(1-X)*d+r.masks[b+M*h+D]*X*d,$=c(q);$>0&&(v[I+U]=$,w+=$/255)}}w=Math.round(w),w!==0&&a.push({category:g.category,mask:v,width:t,height:n,area:w,coverage:w/(t*n),detectionIndex:P})}return{detections:f,masks:a}}function He(r,e){if(e<=0)return o=>o>r?255:0;let t=r-e,n=255/(2*e);return o=>o<=t?0:o>=r+e?255:(o-t)*n}function ie(r,e,t){return r<e?e:r>t?t:r}y();var yt=17,ze=.3;function xt(r,e){let{sourceWidth:t,sourceHeight:n,transform:o}=e,s=r.keypointStride,i=[];for(let c=0;c<r.count;c++){let h=r.dets[c*5+4];if(!(h>=e.confidence))continue;let u=ce(r.dets[c*5],r.dets[c*5+1],o),p=ce(r.dets[c*5+2],r.dets[c*5+3],o),T=le(u.x,0,t),E=le(u.y,0,n),P=le(p.x,0,t)-T,L=le(p.y,0,n)-E;if(P<=0||L<=0)continue;let g=[],_=c*yt*s;for(let j=0;j<yt;j++){let l=_+j*s,m=ce(r.keypoints[l],r.keypoints[l+1],o);g.push({x:le(m.x,0,t),y:le(m.y,0,n),visibility:le(r.keypoints[l+2],0,1)})}let b=0;for(let j of g)j.visibility>=ze&&b++;b<(e.minVisibleKeypoints??3)||i.push({score:h,boundingBox:{originX:T,originY:E,width:P,height:L,normalizedX:T/t,normalizedY:E/n,normalizedWidth:P/t,normalizedHeight:L/n},keypoints:g})}i.sort((c,h)=>h.score-c.score);let f=e.iouThreshold??.6,a=[];for(let c of i)a.some(h=>on(h,c,f))||a.push(c);return{people:a}}function le(r,e,t){return r<e?e:r>t?t:r}function on(r,e,t){if(ae(r.boundingBox,e.boundingBox)>t)return!0;let n=Math.sqrt(r.boundingBox.width*r.boundingBox.height),o=0,s=0;for(let i=0;i<r.keypoints.length;i++){let f=r.keypoints[i],a=e.keypoints[i];f.visibility<ze||a.visibility<ze||(o+=Math.hypot(f.x-a.x,f.y-a.y),s++)}return s>=3&&o/s<.1*n}y();function kt(r,e,t,n){let{sourceWidth:o,sourceHeight:s}=n,i=He(n.maskThreshold??.5,n.featherRadius??.2),f=new Uint8Array(o*s),a=e/o,c=t/s,h=0;for(let u=0;u<s;u++){let p=Math.max(0,(u+.5)*c-.5),T=Math.min(t-1,Math.floor(p)),E=Math.min(t-1,T+1),P=p-T;for(let L=0;L<o;L++){let g=Math.max(0,(L+.5)*a-.5),_=Math.min(e-1,Math.floor(g)),b=Math.min(e-1,_+1),j=g-_,l=r[T*e+_]*(1-j)*(1-P)+r[T*e+b]*j*(1-P)+r[E*e+_]*(1-j)*P+r[E*e+b]*j*P,m=i(l);f[u*o+L]=m,h+=m}}return{mask:f,width:o,height:s,coverage:o*s>0?h/(255*o*s):0}}y();y();y();var Tt=`
|
|
2
2
|
struct Bone {
|
|
3
3
|
start: vec2<f32>,
|
|
4
4
|
end: vec2<f32>,
|
|
@@ -95,4 +95,4 @@ struct VSOut {
|
|
|
95
95
|
}
|
|
96
96
|
return textureSampleLevel(picture, samp, uv, 0.0) * m;
|
|
97
97
|
}
|
|
98
|
-
`,Ie=class{constructor(e,t){this.device=e;let n=e.createShaderModule({label:"vision_matte_composite",code:_n});this.pipeline=e.createRenderPipeline({label:"vision_matte_composite",layout:"auto",vertex:{module:n,entryPoint:"vs"},fragment:{module:n,entryPoint:"fs",targets:[{format:t}]},primitive:{topology:"triangle-list"}}),this.sampler=e.createSampler({magFilter:"linear",minFilter:"linear"})}device;pipeline;sampler;uniforms=[];uniformIndex=0;masks=new Map;uploadMask(e,t,n,o){let s=this.masks.get(e);(!s||s.width!==n||s.height!==o)&&(s?.destroy(),s=this.device.createTexture({label:`vision_mask_${e}`,size:[n,o],format:"r8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),this.masks.set(e,s));let i=Math.ceil(n/256)*256,f=t;if(i!==n){f=new Uint8Array(i*o);for(let a=0;a<o;a++)f.set(t.subarray(a*n,(a+1)*n),a*i)}return this.device.queue.writeTexture({texture:s},f.buffer,{offset:f.byteOffset,bytesPerRow:i,rowsPerImage:o},{width:n,height:o}),s}draw(e,t,n,o,s,i){let f=o.width,a=o.height,c=new Float32Array(8),h=new Uint32Array(c.buffer);h[0]=s==="matte"?0:s==="mask"?1:2,s==="crop"&&i?(c[2]=i.x0/f,c[3]=i.y0/a,c[4]=(i.x1+1)/f,c[5]=(i.y1+1)/a):(c[2]=0,c[3]=0,c[4]=1,c[5]=1,s==="crop"&&(h[0]=0)),this.uniformIndex>=this.uniforms.length&&this.uniforms.push(this.device.createBuffer({size:c.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}));let u=this.uniforms[this.uniformIndex];this.uniformIndex=(this.uniformIndex+1)%16,this.device.queue.writeBuffer(u,0,c);let p=this.device.createBindGroup({layout:this.pipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:u}},{binding:1,resource:n.createView()},{binding:2,resource:o.createView()},{binding:3,resource:this.sampler}]}),T=e.beginRenderPass({label:"vision_matte_composite",colorAttachments:[{view:t,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});T.setPipeline(this.pipeline),T.setBindGroup(0,p),T.draw(3),T.end()}};var Ce=null,Qe=null,Oe=null,Gt=null,$t=new Re,Wt=new Map,Sn=new Map,wn=new Map,Kt=new Map,et=new WeakMap,de=new Map,tt=new Map,vn=3;function qt(r,e,t,n,o,s){let i=r.get(t);return(!i||i.width!==n.width||i.height!==n.height||i.format!==n.format)&&(i?.destroy(),i=e.createTexture({size:[n.width,n.height],format:n.format,usage:o,label:s}),r.set(t,i)),i}var Mn=(r,e,t)=>qt(Sn,r,e,t,GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING,"vision_held_frame"),Pn=(r,e,t)=>qt(wn,r,e,t,GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,"vision_matte");function Rn(r,e,t,n,o){let s=e;return JSON.stringify([r,s?.operation?.id??s?.id??null,n,o,t.mode??"passthrough",t.variant,t.confidence,t.classes,t.maskThreshold,t.featherRadius,t.matteSource,t.keyBackground===!0,t.maxMissedFrames])}function In(r,e,t){let n=r.backgroundKeyThreshold;return typeof n=="number"?n:typeof n?.get=="function"?Number(n.get({frame:e,fps:t})):typeof n?._value=="number"?Number(n._value):70}function Cn(r,e,t){if(r)return tt.set(e,{mask:r,frame:t}),r;let n=tt.get(e);if(n&&t-n.frame<=vn)return n.mask}function On(r){let e={variant:r.variant,confidence:r.confidence,classes:r.classes,maskThreshold:r.maskThreshold,featherRadius:r.featherRadius,modelsDir:r.modelsDir,baseUrl:r.baseUrl},t=JSON.stringify(e);return Ce?.key!==t&&(Ce?.runner.close(),Ce={key:t,runner:fe.create(e)}),Ce.runner}function Ln(r,e){let t=Kt.get(r);return t||(t=new ue({maxMissedFrames:e.maxMissedFrames??15}),Kt.set(r,t)),t}function En(r,e,t){return e<=0||t<=0?r:{people:r.people.map(n=>({...n,keypoints:n.keypoints.map(o=>({x:o.x/e,y:o.y/t,visibility:o.visibility}))}))}}function jn(r,e){return r.map(t=>{let{cx:n,cy:o}=Dn(t),s=null;for(let i of e){let f=i.centerX-n,a=i.centerY-o,c=f*f+a*a;(!s||c<s.distance)&&(s={trackId:i.trackId,distance:c})}return s?{...t,trackId:s.trackId}:t})}function Vn(r,e,t){let n=e*t,o=new Uint8Array(n),s=new Int32Array(n),i=0,f=c=>{o[c]||r[c]>0||(o[c]=1,s[i++]=c)};for(let c=0;c<e;c++)f(c),f((t-1)*e+c);for(let c=0;c<t;c++)f(c*e),f(c*e+e-1);let a=0;for(;a<i;){let c=s[a++],h=c%e,u=c+1;h+1<e&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c-1,h>0&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c+e,u<n&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c-e,u>=0&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u)}for(let c=0;c<n;c++)r[c]===0&&o[c]===0&&(r[c]=255)}function An(r,e,t,n=2){if(n<=0)return r;let o=new Uint8Array(e*t),s=new Uint8Array(e*t),i=2*n+1;for(let a=0;a<t;a++){let c=a*e,h=0;for(let u=-n;u<=n;u++){let p=Math.max(0,Math.min(e-1,u));h+=r[c+p]}for(let u=0;u<e;u++){o[c+u]=Math.round(h/i);let p=Math.max(0,u-n),T=Math.min(e-1,u+n+1);h+=r[c+T]-r[c+p]}}let f=new Float64Array(e);for(let a=-n;a<=n;a++){let c=Math.max(0,Math.min(t-1,a))*e;for(let h=0;h<e;h++)f[h]+=o[c+h]}for(let a=0;a<t;a++){let c=a*e,h=Math.max(0,a-n)*e,u=Math.min(t-1,a+n+1)*e;for(let p=0;p<e;p++)s[c+p]=Math.round(f[p]/i),f[p]+=o[u+p]-o[h+p]}return s}function Bn(r,e,t,n,o,s){let i=0,f=0,a=0,c=0,h=(g,_)=>{let b=_*e+g;if(r[b])return;let j=b*4;i+=n[j],f+=n[j+1],a+=n[j+2],c++};for(let g=0;g<e;g+=4)h(g,0),h(g,t-1);for(let g=0;g<t;g+=4)h(0,g),h(e-1,g);if(c===0)return r;i/=c,f/=c,a/=c;let u=e*t,p=new Uint8Array(u);for(let g=0,_=0;g<u;g++,_+=4)p[g]=Math.max(Math.abs(n[_]-i),Math.abs(n[_+1]-f),Math.abs(n[_+2]-a))>o?1:0;let T=new Int32Array(u),E=0;for(let g=0;g<u;g++)r[g]>0&&(p[g]&&(r[g]=255),T[E++]=g);let P=0;for(;P<E;){let g=T[P++],_=g%e,b=g+1;_+1<e&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g-1,_>0&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g+e,b<u&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g-e,b>=0&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b)}Vn(r,e,t);let L=s!==void 0&&s>0?Math.max(1,Math.min(8,Math.round(s*50))):2;return An(r,e,t,L)}function Dn(r){let{mask:e,width:t,height:n}=r,o=0,s=0,i=0;for(let f=0;f<n;f++){let a=f*t;for(let c=0;c<t;c++)e[a+c]>0&&(o+=c,s+=f,i++)}return i===0?{cx:0,cy:0}:{cx:o/i,cy:s/i}}var Zt=async r=>{let{ctx:e,encoder:t,pass:n,targetView:o,targetWidth:s,targetHeight:i,props:f,drawChild:a}=r,{virtualMedia:c}=f,h=c?.operation;if(h?.op!=="Vision")return;let u=h;n.end();let p=c?.children?.[0];if(!p)return;let T=u.effect,E=T!=null,P=c?.id??h?.id??`${s}x${i}_${u.mode}_${u.variant}_${u.keyBackground}_${u.backgroundKeyThreshold}`,L=`vision-${P}`,g=E?et.get(T):de.get(L);g&&(g.width!==s||g.height!==i)&&(g.destroy(),g=void 0,E?et.delete(T):de.delete(L));let _=g!==void 0;if(!g&&(g=e.device.createTexture({size:[s,i],format:e.renderer.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,label:"vision_child_persistent"}),E?et.set(T,g):de.set(L,g),de.size>4)){let F=de.keys().next().value;F&&F!==L&&(de.get(F)?.destroy(),de.delete(F))}let b=f.frame??0,j=f.fps??24,l=u.mode??"passthrough",m=l==="mask"||l==="matte"||l==="crop",x=u.visionBundle??c.visionBundle,v=u.enableDetection!==!1||l==="boxes"||l==="tracking",w=u.enableSegmentation===!0||m&&u.matteSource!=="selfie",O=u.enableMatte===!0||m&&u.matteSource==="selfie",H=u.enablePose===!0||l==="skeleton",R=!O&&!H&&(v||w),M=R?Rn(P,p,u,s,i):"",d=F=>u.keyBackground===!0?In(u,F,j):void 0,I=F=>{if(!R||F===void 0)return;let Y=$t.get(M,F);if(!(!Y||Y.keyThreshold!==d(F))&&!(w&&x&&!Y.masks))return Y},U=_?Wt.get(P):void 0,A=I(b),V=A!==void 0;A||(A=I(U));let D;m&&_&&!V&&(D=Mn(e.device,P,g),t.copyTextureToTexture({texture:g},{texture:D},[s,i,1]));let X=null;if(_&&!A){let Y=s*4,Z=Math.ceil(Y/256)*256,J=Z*i,ee=e.device.createBuffer({size:J,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,label:"vision_frame_staging"}),W=e.device.createCommandEncoder({label:"vision_readback_encoder"});W.copyTextureToBuffer({texture:g},{buffer:ee,bytesPerRow:Z,rowsPerImage:i},[s,i,1]),e.device.queue.submit([W.finish()]),await ee.mapAsync(GPUMapMode.READ);let oe=new Uint8Array(ee.getMappedRange());if(X=new Uint8ClampedArray(s*i*4),Z===Y)X.set(oe.subarray(0,X.length));else for(let he=0;he<i;he++)X.set(oe.subarray(he*Z,he*Z+Y),he*Y);ee.unmap(),ee.destroy()}let q=g.createView();e.renderer.beginFrame(t,q,{r:0,g:0,b:0,a:0},s,i,"clear").end(),await a(p,{...f},q,g,s,i),Wt.set(P,b);let N=[],K=[],G,ne,z;if(A)N=A.objects,v&&x?.setObjectResult(b,{objects:A.objects,rawDetections:A.detections}),w&&x&&A.masks&&(K=A.masks.map(Je),x.setMaskResult(b,K)),A.subject&&(z=Je(A.subject.mask),tt.set(P,{mask:z,frame:b}));else if(X){let F=On(u),Y={data:X,width:s,height:i},Z=[];if(v){Z=await F.detect(Y);let J=Ln(P,u);b===0&&J.reset(),N=J.update(Z,b,j),x?.setObjectResult(b,{objects:N,rawDetections:Z})}if(w){let J=await F.segment(Y);K=jn(J.masks,N),x?.setMaskResult(b,K)}if(O&&(G=await F.matte(Y),x?.setMatteResult(b,G)),H){let J=await F.pose(Y),ee=En(J,Y.width,Y.height);ne={people:zt(ee.people,N)},x?.setPoseResult(b,ne)}if(m){z=Cn(u.matteSource==="selfie"?Fn(G):Ot(K.length>0?K:x?.getMaskResult(b)??[]),P,b);let J=d(U??b);z&&J!==void 0&&(z={...z,mask:Bn(z.mask,z.width,z.height,X,J,u.featherRadius)})}R&&U!==void 0&&$t.set(M,U,{detections:Z,objects:N,masks:x?K.map(Ze):null,subject:z?{mask:Ze(z)}:null,keyThreshold:d(U)})}if(m){let F=V?g:D;if(!z||!F){e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear").end();return}(!Oe||Gt!==e.renderer.format)&&(Oe=new Ie(e.device,e.renderer.format),Gt=e.renderer.format);let Y=Oe.uploadMask(P,z.mask,z.width,z.height),Z=Pn(e.device,P,g);Oe.draw(t,Z.createView(),F,Y,l,l==="crop"?we(z)??void 0:void 0),x?.setStencilTexture(Z);let J=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(J,Z,{x:0,y:0,width:s,height:i}),J.end();return}if(l==="skeleton"){Qe||(Qe=new Te(e.device));let Y=(x?.getPoseResult(b)??ne)?.people[0];if(Y&&Y.keypoints.length>0){let Z=Qe.renderToTexture(Y.keypoints,{width:s,height:i}),J=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(J,Z,{x:0,y:0,width:s,height:i}),J.end();return}}if(l==="boxes"||l==="tracking"){let F=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(F,g,{x:0,y:0,width:s,height:i});let Y=N.length>0?N:x?.getObjectResult(b).objects??[];if(Y.length>0){let Z="#38bdf8";for(let ee of Y){if(!ee.active)continue;let W=ee.boundingBox;e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:W.width,height:2},Z),e.renderer.drawRect(F,{x:W.originX,y:W.originY+W.height-2,width:W.width,height:2},Z),e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:2,height:W.height},Z),e.renderer.drawRect(F,{x:W.originX+W.width-2,y:W.originY,width:2,height:W.height},Z);let oe=Math.min(16,W.width/4,W.height/4);e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:oe,height:4},"#ffffff"),e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:4,height:oe},"#ffffff"),l==="tracking"&&e.renderer.drawRect(F,{x:ee.centerX-3,y:ee.centerY-3,width:6,height:6},"#ef4444",3)}}F.end();return}let Q=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(Q,g,{x:0,y:0,width:s,height:i}),Q.end()};function Fn(r){if(!r||r.coverage<=0)return;let e=Math.round(r.coverage*r.width*r.height);return{category:"person",mask:r.mask,width:r.width,height:r.height,area:e,coverage:r.coverage,detectionIndex:-1}}var Ns=nt({WebGPURenderer:Zt});export{Lt as a,Et as b,jt as c,Qr as d,ln as e,ro as f,io as g,uo as h,mo as i,dn as j,Ft as k,Dt as l,go as m,un as n,mn as o,fn as p,hn as q,gn as r,pn as s,Xe as t,Ut as u,bn as v,Ge as w,Io as x,Ht as y,Vo as z,Ao as A,Fo as B,ke as C,ye as D,ue as E,Gn as F,k as G,Ye as H,_t as I,Te as J,St as K,vt as L,fe as M,Me as N,Pe as O,Yt as P,rs as Q,We as R,Ns as S};
|
|
98
|
+
`,Ie=class{constructor(e,t){this.device=e;let n=e.createShaderModule({label:"vision_matte_composite",code:_n});this.pipeline=e.createRenderPipeline({label:"vision_matte_composite",layout:"auto",vertex:{module:n,entryPoint:"vs"},fragment:{module:n,entryPoint:"fs",targets:[{format:t}]},primitive:{topology:"triangle-list"}}),this.sampler=e.createSampler({magFilter:"linear",minFilter:"linear"})}device;pipeline;sampler;uniforms=[];uniformIndex=0;masks=new Map;uploadMask(e,t,n,o){let s=this.masks.get(e);(!s||s.width!==n||s.height!==o)&&(s?.destroy(),s=this.device.createTexture({label:`vision_mask_${e}`,size:[n,o],format:"r8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),this.masks.set(e,s));let i=Math.ceil(n/256)*256,f=t;if(i!==n){f=new Uint8Array(i*o);for(let a=0;a<o;a++)f.set(t.subarray(a*n,(a+1)*n),a*i)}return this.device.queue.writeTexture({texture:s},f.buffer,{offset:f.byteOffset,bytesPerRow:i,rowsPerImage:o},{width:n,height:o}),s}draw(e,t,n,o,s,i){let f=o.width,a=o.height,c=new Float32Array(8),h=new Uint32Array(c.buffer);h[0]=s==="matte"?0:s==="mask"?1:2,s==="crop"&&i?(c[2]=i.x0/f,c[3]=i.y0/a,c[4]=(i.x1+1)/f,c[5]=(i.y1+1)/a):(c[2]=0,c[3]=0,c[4]=1,c[5]=1,s==="crop"&&(h[0]=0)),this.uniformIndex>=this.uniforms.length&&this.uniforms.push(this.device.createBuffer({size:c.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}));let u=this.uniforms[this.uniformIndex];this.uniformIndex=(this.uniformIndex+1)%16,this.device.queue.writeBuffer(u,0,c);let p=this.device.createBindGroup({layout:this.pipeline.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:u}},{binding:1,resource:n.createView()},{binding:2,resource:o.createView()},{binding:3,resource:this.sampler}]}),T=e.beginRenderPass({label:"vision_matte_composite",colorAttachments:[{view:t,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});T.setPipeline(this.pipeline),T.setBindGroup(0,p),T.draw(3),T.end()}};var Ce=null,Qe=null,Oe=null,Gt=null,$t=new Re,Wt=new Map,Sn=new Map,wn=new Map,Kt=new Map,et=new WeakMap,de=new Map,tt=new Map,vn=3;function qt(r,e,t,n,o,s){let i=r.get(t);return(!i||i.width!==n.width||i.height!==n.height||i.format!==n.format)&&(i?.destroy(),i=e.createTexture({size:[n.width,n.height],format:n.format,usage:o,label:s}),r.set(t,i)),i}var Mn=(r,e,t)=>qt(Sn,r,e,t,GPUTextureUsage.COPY_DST|GPUTextureUsage.TEXTURE_BINDING,"vision_held_frame"),Pn=(r,e,t)=>qt(wn,r,e,t,GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,"vision_matte");function Rn(r,e,t,n,o){let s=e;return JSON.stringify([r,s?.operation?.id??s?.id??null,n,o,t.mode??"passthrough",t.variant,t.confidence,t.classes,t.maskThreshold,t.featherRadius,t.matteSource,t.keyBackground===!0,t.maxMissedFrames])}function In(r,e,t){let n=r.backgroundKeyThreshold;return typeof n=="number"?n:typeof n?.get=="function"?Number(n.get({frame:e,fps:t})):typeof n?._value=="number"?Number(n._value):70}function Cn(r,e,t){if(r)return tt.set(e,{mask:r,frame:t}),r;let n=tt.get(e);if(n&&t-n.frame<=vn)return n.mask}function On(r){let e={variant:r.variant,confidence:r.confidence,classes:r.classes,maskThreshold:r.maskThreshold,featherRadius:r.featherRadius,modelsDir:r.modelsDir,baseUrl:r.baseUrl},t=JSON.stringify(e);return Ce?.key!==t&&(Ce?.runner.close(),Ce={key:t,runner:fe.create(e)}),Ce.runner}function Ln(r,e){let t=Kt.get(r);return t||(t=new ue({maxMissedFrames:e.maxMissedFrames??15}),Kt.set(r,t)),t}function En(r,e,t){return e<=0||t<=0?r:{people:r.people.map(n=>({...n,keypoints:n.keypoints.map(o=>({x:o.x/e,y:o.y/t,visibility:o.visibility}))}))}}function jn(r,e){return r.map(t=>{let{cx:n,cy:o}=Dn(t),s=null;for(let i of e){let f=i.centerX-n,a=i.centerY-o,c=f*f+a*a;(!s||c<s.distance)&&(s={trackId:i.trackId,distance:c})}return s?{...t,trackId:s.trackId}:t})}function Vn(r,e,t){let n=e*t,o=new Uint8Array(n),s=new Int32Array(n),i=0,f=c=>{o[c]||r[c]>0||(o[c]=1,s[i++]=c)};for(let c=0;c<e;c++)f(c),f((t-1)*e+c);for(let c=0;c<t;c++)f(c*e),f(c*e+e-1);let a=0;for(;a<i;){let c=s[a++],h=c%e,u=c+1;h+1<e&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c-1,h>0&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c+e,u<n&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u),u=c-e,u>=0&&!o[u]&&r[u]===0&&(o[u]=1,s[i++]=u)}for(let c=0;c<n;c++)r[c]===0&&o[c]===0&&(r[c]=255)}function An(r,e,t,n=2){if(n<=0)return r;let o=new Uint8Array(e*t),s=new Uint8Array(e*t),i=2*n+1;for(let a=0;a<t;a++){let c=a*e,h=0;for(let u=-n;u<=n;u++){let p=Math.max(0,Math.min(e-1,u));h+=r[c+p]}for(let u=0;u<e;u++){o[c+u]=Math.round(h/i);let p=Math.max(0,u-n),T=Math.min(e-1,u+n+1);h+=r[c+T]-r[c+p]}}let f=new Float64Array(e);for(let a=-n;a<=n;a++){let c=Math.max(0,Math.min(t-1,a))*e;for(let h=0;h<e;h++)f[h]+=o[c+h]}for(let a=0;a<t;a++){let c=a*e,h=Math.max(0,a-n)*e,u=Math.min(t-1,a+n+1)*e;for(let p=0;p<e;p++)s[c+p]=Math.round(f[p]/i),f[p]+=o[u+p]-o[h+p]}return s}function Bn(r,e,t,n,o,s){let i=0,f=0,a=0,c=0,h=(g,_)=>{let b=_*e+g;if(r[b])return;let j=b*4;i+=n[j],f+=n[j+1],a+=n[j+2],c++};for(let g=0;g<e;g+=4)h(g,0),h(g,t-1);for(let g=0;g<t;g+=4)h(0,g),h(e-1,g);if(c===0)return r;i/=c,f/=c,a/=c;let u=e*t,p=new Uint8Array(u);for(let g=0,_=0;g<u;g++,_+=4)p[g]=Math.max(Math.abs(n[_]-i),Math.abs(n[_+1]-f),Math.abs(n[_+2]-a))>o?1:0;let T=new Int32Array(u),E=0;for(let g=0;g<u;g++)r[g]>0&&(p[g]&&(r[g]=255),T[E++]=g);let P=0;for(;P<E;){let g=T[P++],_=g%e,b=g+1;_+1<e&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g-1,_>0&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g+e,b<u&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b),b=g-e,b>=0&&r[b]!==255&&p[b]&&(r[b]=255,T[E++]=b)}Vn(r,e,t);let L=s!==void 0&&s>0?Math.max(1,Math.min(8,Math.round(s*50))):2;return An(r,e,t,L)}function Dn(r){let{mask:e,width:t,height:n}=r,o=0,s=0,i=0;for(let f=0;f<n;f++){let a=f*t;for(let c=0;c<t;c++)e[a+c]>0&&(o+=c,s+=f,i++)}return i===0?{cx:0,cy:0}:{cx:o/i,cy:s/i}}var Zt=async r=>{let{ctx:e,encoder:t,pass:n,targetView:o,targetWidth:s,targetHeight:i,props:f,drawChild:a}=r,{virtualMedia:c}=f,h=c?.operation;if(h?.op!=="Vision")return;let u=h;n.end();let p=c?.children?.[0];if(!p)return;let T=u.effect,E=T!=null,P=c?.id??h?.id??`${s}x${i}_${u.mode}_${u.variant}_${u.keyBackground}_${u.backgroundKeyThreshold}`,L=`vision-${P}`,g=E?et.get(T):de.get(L);g&&(g.width!==s||g.height!==i)&&(g.destroy(),g=void 0,E?et.delete(T):de.delete(L));let _=g!==void 0;if(!g&&(g=e.device.createTexture({size:[s,i],format:e.renderer.format,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,label:"vision_child_persistent"}),E?et.set(T,g):de.set(L,g),de.size>4)){let F=de.keys().next().value;F&&F!==L&&(de.get(F)?.destroy(),de.delete(F))}let b=f.frame??0,j=f.fps??24,l=u.mode??"passthrough",m=l==="mask"||l==="matte"||l==="crop",x=u.visionBundle??c.visionBundle,v=u.enableDetection!==!1||l==="boxes"||l==="tracking",w=u.enableSegmentation===!0||m&&u.matteSource!=="selfie",O=u.enableMatte===!0||m&&u.matteSource==="selfie",H=u.enablePose===!0||l==="skeleton",R=!O&&!H&&(v||w),M=R?Rn(P,p,u,s,i):"",d=F=>u.keyBackground===!0?In(u,F,j):void 0,I=F=>{if(!R||F===void 0)return;let Y=$t.get(M,F);if(!(!Y||Y.keyThreshold!==d(F))&&!(w&&x&&!Y.masks))return Y},U=_?Wt.get(P):void 0,A=I(b),V=A!==void 0;A||(A=I(U));let D;m&&_&&!V&&(D=Mn(e.device,P,g),t.copyTextureToTexture({texture:g},{texture:D},[s,i,1]));let X=null;if(_&&!A){let Y=s*4,Z=Math.ceil(Y/256)*256,J=Z*i,ee=e.device.createBuffer({size:J,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ,label:"vision_frame_staging"}),W=e.device.createCommandEncoder({label:"vision_readback_encoder"});W.copyTextureToBuffer({texture:g},{buffer:ee,bytesPerRow:Z,rowsPerImage:i},[s,i,1]),e.device.queue.submit([W.finish()]),await ee.mapAsync(GPUMapMode.READ);let oe=new Uint8Array(ee.getMappedRange());if(X=new Uint8ClampedArray(s*i*4),Z===Y)X.set(oe.subarray(0,X.length));else for(let he=0;he<i;he++)X.set(oe.subarray(he*Z,he*Z+Y),he*Y);ee.unmap(),ee.destroy()}let q=g.createView();e.renderer.beginFrame(t,q,{r:0,g:0,b:0,a:0},s,i,"clear").end(),await a(p,{...f},q,g,s,i),Wt.set(P,b);let N=[],K=[],G,ne,z;if(A)N=A.objects,v&&x?.setObjectResult(b,{objects:A.objects,rawDetections:A.detections}),w&&x&&A.masks&&(K=A.masks.map(Je),x.setMaskResult(b,K)),A.subject&&(z=Je(A.subject.mask),tt.set(P,{mask:z,frame:b}));else if(X){let F=On(u),Y={data:X,width:s,height:i},Z=[];if(v){Z=await F.detect(Y);let J=Ln(P,u);b===0&&J.reset(),N=J.update(Z,b,j),x?.setObjectResult(b,{objects:N,rawDetections:Z})}if(w){let J=await F.segment(Y);K=jn(J.masks,N),x?.setMaskResult(b,K)}if(O&&(G=await F.matte(Y),x?.setMatteResult(b,G)),H){let J=await F.pose(Y),ee=En(J,Y.width,Y.height);ne={people:zt(ee.people,N)},x?.setPoseResult(b,ne)}if(m){z=Cn(u.matteSource==="selfie"?Fn(G):Ot(K.length>0?K:x?.getMaskResult(b)??[]),P,b);let J=d(U??b);z&&J!==void 0&&(z={...z,mask:Bn(z.mask,z.width,z.height,X,J,u.featherRadius)})}R&&U!==void 0&&$t.set(M,U,{detections:Z,objects:N,masks:x?K.map(Ze):null,subject:z?{mask:Ze(z)}:null,keyThreshold:d(U)})}if(m){let F=V?g:D;if(!z||!F){e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear").end();return}(!Oe||Gt!==e.renderer.format)&&(Oe=new Ie(e.device,e.renderer.format),Gt=e.renderer.format);let Y=Oe.uploadMask(P,z.mask,z.width,z.height),Z=Pn(e.device,P,g);Oe.draw(t,Z.createView(),F,Y,l,l==="crop"?we(z)??void 0:void 0),x?.setStencilTexture(Z);let J=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(J,Z,{x:0,y:0,width:s,height:i}),J.end();return}if(l==="skeleton"){Qe||(Qe=new Te(e.device));let Y=(x?.getPoseResult(b)??ne)?.people[0];if(Y&&Y.keypoints.length>0){let Z=Qe.renderToTexture(Y.keypoints,{width:s,height:i}),J=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(J,Z,{x:0,y:0,width:s,height:i}),J.end();return}}if(l==="boxes"||l==="tracking"){let F=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(F,g,{x:0,y:0,width:s,height:i});let Y=N.length>0?N:x?.getObjectResult(b).objects??[];if(Y.length>0){let Z="#38bdf8";for(let ee of Y){if(!ee.active)continue;let W=ee.boundingBox;e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:W.width,height:2},Z),e.renderer.drawRect(F,{x:W.originX,y:W.originY+W.height-2,width:W.width,height:2},Z),e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:2,height:W.height},Z),e.renderer.drawRect(F,{x:W.originX+W.width-2,y:W.originY,width:2,height:W.height},Z);let oe=Math.min(16,W.width/4,W.height/4);e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:oe,height:4},"#ffffff"),e.renderer.drawRect(F,{x:W.originX,y:W.originY,width:4,height:oe},"#ffffff"),l==="tracking"&&e.renderer.drawRect(F,{x:ee.centerX-3,y:ee.centerY-3,width:6,height:6},"#ef4444",3)}}F.end();return}let Q=e.renderer.beginFrame(t,o,{r:0,g:0,b:0,a:0},s,i,"clear");e.renderer.drawTexture(Q,g,{x:0,y:0,width:s,height:i}),Q.end()};function Fn(r){if(!r||r.coverage<=0)return;let e=Math.round(r.coverage*r.width*r.height);return{category:"person",mask:r.mask,width:r.width,height:r.height,area:e,coverage:r.coverage,detectionIndex:-1}}var Xs=nt({WebGPURenderer:Zt});export{Lt as a,Et as b,jt as c,Qr as d,ln as e,ro as f,io as g,uo as h,mo as i,dn as j,Ft as k,Dt as l,go as m,un as n,mn as o,fn as p,hn as q,gn as r,pn as s,Xe as t,Ut as u,bn as v,Ge as w,Io as x,Ht as y,Vo as z,Ao as A,Fo as B,ke as C,ye as D,ue as E,Gn as F,k as G,Ye as H,_t as I,Te as J,St as K,vt as L,fe as M,Me as N,Pe as O,Yt as P,rs as Q,We as R,Xs as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as l}from"./chunk-
|
|
1
|
+
import{a as l}from"./chunk-YK4XHUP4.mjs";import{b as w}from"./chunk-HYBAPT6I.mjs";import{d as u,e as p}from"./chunk-BVF64D6H.mjs";p();var g=null,i=new Map,b=new Set,c=new Map,F=new Map;async function v(e,r){let t=r;if(r.startsWith("/"))if(w)t=`${w}${r}`;else{let s=await import("./shims/fs-promises.mjs");try{await s.access(r)}catch{throw new Error(`Relative font URL "${r}" cannot be resolved because BASE_URL is not configured.`)}}if(i.has(t))return i.get(t);if(t.startsWith("file://"))try{let s=new URL(t).pathname;return u.platform==="win32"&&s.startsWith("/")&&(s=s.slice(1)),i.set(t,s),s}catch{let s=t.replace(/^file:\/\//,"");return i.set(t,s),s}if(!t.startsWith("http://")&&!t.startsWith("https://"))return t;let n=await import("./shims/fs-promises.mjs"),a=await import("./shims/path.mjs"),o=await import("./shims/os.mjs");g||(g=a.join(o.tmpdir(),"gatewai-fonts"),await n.mkdir(g,{recursive:!0}).catch(()=>{}));let $=e.replace(/[^a-zA-Z0-9_-]/g,"_"),m=new URL(t),f=a.extname(m.pathname);(!f||f.length>5)&&(f=".ttf");let d=a.join(g,`${$}-${Date.now()}${f}`),h=await fetch(t);if(!h.ok)throw new Error(`Failed to fetch font from ${t}: ${h.statusText}`);let P=await h.arrayBuffer();return await n.writeFile(d,Buffer.from(P)),i.set(t,d),d}async function U(e,r){if(c.has(e))return c.get(e);let t=globalThis;try{let n=await v(e,r);c.set(e,n),l(n===r?`[registerHeadlessFont] Registered "${e}" from ${n}`:`[registerHeadlessFont] Registered "${e}" from ${r} (cached at ${n})`);try{t.OffscreenCanvas&&typeof t.OffscreenCanvas.registerFont=="function"&&(t.OffscreenCanvas.registerFont(n,{family:e}),b.add(e))}catch(a){console.warn(`[registerHeadlessFont] SkiaCanvas registration failed for "${e}" (non-fatal):`,a)}return n}catch(n){console.warn(`[registerHeadlessFont] Failed to download font "${e}" from ${r}:`,n)}}function C(e){return c.get(e)}async function L(e){let r=F.get(e);if(r)return r;let t=c.get(e);if(t)try{let a=await(await import("./shims/fs-promises.mjs")).readFile(t),o=new Uint8Array(a.length);return o.set(a),l(`[getHeadlessFontData] Read local font binary for "${e}" from: ${t} (${o.length} bytes)`),F.set(e,o),o}catch(n){console.warn(`[getHeadlessFontData] Failed to read font file from ${t}:`,n)}}export{U as a,C as b,L as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as s}from"./chunk-BVF64D6H.mjs";s();var w="onnxruntime-web",g=()=>import(w),u=class{kind="webgpu";_loader;_providers;_wasmFallback;_ortPromise;constructor(e={}){this._loader=e.loader??g,this._providers=e.executionProviders??["webgpu","wasm"],this._wasmFallback=e.wasmFallback!==!1}ort(){return this._ortPromise||(this._ortPromise=this._loader().catch(e=>{throw this._ortPromise=void 0,new Error(`onnxruntime-web failed to load (${String(e)}). Install it in the browser bundle or pass a custom loader.`)})),this._ortPromise}async createSession(e){let o=await this.ort(),r;try{r=await o.InferenceSession.create(e,{executionProviders:[...this._providers],graphOptimizationLevel:"all",logSeverityLevel:3})}catch(n){if(!this._wasmFallback||!this._providers.includes("webgpu"))throw n;r=await o.InferenceSession.create(e,{executionProviders:["wasm"],graphOptimizationLevel:"all",logSeverityLevel:3})}return{run:async n=>{let v=r.inputNames.includes(n.name)?n.name:r.inputNames[0]??n.name,p=await r.run({[v]:new o.Tensor("float32",n.data,[...n.dims])}),a={};for(let[d,l]of Object.entries(p))a[d]={data:l.data,dims:[...l.dims]};return a},release:()=>{r.release()}}}};s();s();var h="onnxruntime-web/webgpu",S="webgpu",t;function O(){return t||(t=(async()=>{let i=globalThis;if(i.navigator?.gpu)return;let{create:e,globals:o}=await import(S);Object.assign(globalThis,o);let r=i.navigator??={};Object.defineProperty(r,"gpu",{value:e([]),configurable:!0,writable:!0})})(),t.catch(()=>{t=void 0})),t}var c=class{kind="webgpu";_inner;constructor(e={}){let o=e.loader??(async()=>{await O();let r=await import(h);return r.env?.wasm&&(r.env.wasm.numThreads=1),r});this._inner=new u({wasmFallback:!1,...e,loader:o})}createSession(e){return this._inner.createSession(e)}};var f;function I(i){f=i}var m=class{_resolved;get kind(){return this._resolved?.kind??"webgpu"}async createSession(e){if(!this._resolved){let o=new c({wasmFallback:!1});try{let r=await o.createSession(e);return this._resolved=o,r}catch{this._resolved=new P}}return this._resolved.createSession(e)}};function k(){return f?.()??new m}var P=class{kind="node";ortPromise;async ort(){return this.ortPromise||(this.ortPromise=import("./onnxruntime-node-56GSZEH3.mjs").catch(e=>{throw this.ortPromise=void 0,new Error(`onnxruntime-node failed to load (${String(e)}). Install it in the environment or provide a custom SessionProvider.`)})),this.ortPromise}async createSession(e){let o=await this.ort(),r=await o.InferenceSession.create(e,{executionProviders:["cpu"],graphOptimizationLevel:"all"});return{run:async n=>{let p={[r.inputNames.includes(n.name)?n.name:r.inputNames[0]??n.name]:new o.Tensor("float32",n.data,[...n.dims])},a=await r.run(p),d={};for(let[l,b]of Object.entries(a))d[l]={data:b.data,dims:[...b.dims]};return d},release:()=>{r.release()}}}};export{u as a,I as b,k as c};
|