Mga sukaranan sa pagproseso sa imahe sa Web Worker
Ang Web Worker usa ka bulag nga konteksto sa pagpatuman sa JavaScript nga makahimo sa mga mahal nga kalkulasyon nga wala’y paghimo sa panguna nga hilo sa editor nga buhaton ang tanan nga trabaho. Para sa pagproseso sa imahe sa browser, nagpasabot kana nga ang pag-setup sa modelo ug ang inference mahimong modagan gikan sa thread nga responsable sa mga buton, mga mensahe sa pag-uswag, input sa brush, ug mga update sa screen.
Ang resulta dili “libre nga pagproseso sa background.” Ang parehas nga aparato naghimo gihapon sa pagkalkula ug naggamit sa memorya. Ang kaayohan sa arkitektura mao ang panagbulag: ang usa ka bug-at nga operasyon sa modelo dili kaayo makababag sa matag tubag sa interface samtang kini nagdagan.
Ang nag-unang thread adunay usa ka user-interface nga trabaho
Ang usa ka panid sa browser kasagarang nagpadagan sa JavaScript sa usa ka punoan nga hilo. Kana nga thread nag-coordinate usab sa layout, painting, ug input. Kung ang usa ka taas nga kalkulasyon mag-okupar niini, ang mga pag-klik mahimong mobati nga nalangan, ang animation mahimong mohunong, ug ang browser mahimong magpasidaan nga ang panid dili mosanong.
Ang usa ka editor sa imahe adunay daghang mga responsibilidad sa panguna nga thread sa wala pa magsugod ang inference:
- makadawat usa ka pagpili sa file, idikit, o ihulog;
- decode ug ipakita ang usa ka imahe;
- pag-update sa pag-uswag ug mga estado sa sayup;
- idrowing ang preview nga canvas;
- pagdumala sa Pagdugang ug Pagtangtang sa paglihok sa brush;
- pag-andam sa pag-download o mga aksyon sa clipboard.
Ang pagbutang ug numerical nga buhat sa modelo sa pagbahin sa parehas nga hilo makahimo sa mga buluhaton nga direktang makigkompetensya. Ang usa ka trabahante nagmugna og mas klaro nga utlanan.
Ang utlanan nga gibase sa mensahe
Ang editor ug trabahante wala mag-ambit sa ordinaryo nga mga variable. Nagkomunikar sila pinaagi sa pagpadala og mga mensahe. Ang usa ka gipasimple nga dagan ingon niini:
- Ang editor nagmugna o naggamit pag-usab sa usa ka trabahante.
- Kini naghangyo sa trabahante sa pagsugod sa inference runtime ug modelo.
- Nag-andam kini sa datos sa hulagway ug nagpadala og hangyo sa inference.
- Ang trabahante nag-convert sa datos ngadto sa gipaabot nga input sa modelo.
- Ang trabahante nagpadagan sa modelo ug nagpatunghag mga kantidad sa maskara.
- Kini nagpadala sa maskara o resulta data balik.
- Ang editor nag-composite sa preview ug makahimo sa pagpino o pag-eksport.
Ang mga mensahe kinahanglan adunay igong konteksto aron ipares ang tubag sa husto nga hangyo. Importante kini kung ang usa ka user mopili og laing hulagway sa dili pa mahuman ang miaging trabaho. Ang interface kinahanglan nga maglikay sa pagpakita sa usa ka daan nga resulta sa usa ka bag-ong tinubdan.
Pagkopya ug pagbalhin sa datos sa imahe
Ang pagpadala ug gamay nga text message mura ra. Ang pagpadala sa milyon-milyon nga mga kantidad sa pixel mahimong mahal kung kinahanglan nga kopyahon sa browser ang tibuuk nga buffer. Ang mga Web API mahimong magbalhin sa pagpanag-iya sa pipila ka binary buffer. Ang gibalhin nga buffer mahimong magamit sa tigdawat nga wala magtipig usa ka magamit nga duplicate sa bahin sa nagpadala.
Kana nga pag-optimize moabut uban ang usa ka pagpugong sa disenyo: pagkahuman sa pagbalhin, ang nagpadala dili makapadayon sa paggamit sa parehas nga buffer ingon nga kini tag-iya gihapon ang datos. Ang usa ka editor mahimong maghupot ug bulag nga representasyon sa display, maghimo ug dedikadong inference buffer, o magtukod pag-usab sa gikinahanglan niini sa ulahi.
Dili tanan nga pagpatuman naggamit sa pagbalhin sa parehas nga mga lugar. Ang kinatibuk-ang leksyon mao nga ang pagbulag sa hilo dili makapawala sa paglihok sa datos. Ang mga sukat sa imahe, gidak-on sa buffer, ug ang gidaghanon sa mga pagkakabig makaapekto gihapon sa latency ug memorya.
Unsa ang gibutang sa Easy Background Remover sa trabahante
Ang Easy Background Remover naggamit sa usa ka Web Worker nga adunay usa ka browser inference runtime para sa on-device segmentation. Ang bug-at nga automatic cutout nga lakang nagpatunghag maskara. Gipakita dayon sa editor ang composited nga resulta ug gisuportahan ang pagpino sa brush sa CPU-canvas.
Kini nga panagbulag naghatag sa mga kapakyasan ug mas mapuslanong utlanan. Kung ang trabahante dili makasugod o mag-crash sa panahon sa inference, ang interface mahimong magreport sa usa ka sayup nga may kalabotan sa trabahante imbis nga magsalig sa usa ka permanente nga nagyelo nga tab ingon ang bugtong signal.
Gipadayon usab niini nga masabtan ang pag-angkon sa lokal nga pagproseso. Ang pagpadala sa mga pixel gikan sa usa ka extension nga panid ngadto sa iyang kaugalingong trabahante mao ang komunikasyon sulod sa palibot sa browser, dili usa ka pag-upload sa usa ka remote cutout API. Ang unang sesyon mahimong bulag nga mag-download sa magamit nga modelo nga asset; tan-awa Nganong nag-download ang una nga pagdagan sa usa ka modelo.
Ang usa ka trabahante dili mohimo dayon sa pagkuwenta
Gipauswag sa mga trabahante ang pagtubag, dili ang katakus sa hilaw nga aparato. Ang modelo naggamit gihapon sa CPU, GPU, o uban pang mga kapanguhaan sa runtime sumala sa kung unsa ang mahatag sa browser. Ang usa ka dako nga input mahimo pa nga magdugay ug magkinahanglan og dugang nga memorya kaysa usa ka gamay.
Pipila ka mga limitasyon nagpabilin:
- ang pagsugod sa modelo adunay tinuod nga gasto;
- Ang mga buffer sa pixel nag-okupar sa memorya sa duha ka kilid kung gikopya;
- pag-usab sa gidak-on ug pagkakabig sa format nagkinahanglan og panahon;
- Ang mga aparato nga ubos ang memorya mahimong makigbisog sa dagkong mga imahe;
- daghang mga mamumuo ang makadugang sa panagbingkil imbis nga makunhuran kini;
- export ug canvas updates mahimo gihapon nga maglakip sa nag-unang thread.
Ang pagsugod sa lima ka mga inference worker alang sa lima ka mga imahe dili awtomatiko nga lima ka beses nga mas paspas. Ang mga trabahante adunay parehas nga makina. Ang mga parallel nga trabaho mahimong makigkompetensya alang sa bandwidth sa memorya ug mga kapanguhaan sa pagpatuman, samtang ang matag modelo nga pananglitan mahimong magdala sa kaugalingon nga gasto sa panumduman.
Ang pagreport sa pag-uswag kay kooperatiba
Ang usa ka trabahante mahimong magpadala sa mga mensahe sa status, apan dili kini awtomatik nga mahibal-an kung unsa nga porsyento sa pag-uswag ang bation nga tukma. Pag-download sa modelo, pagsugod sa runtime, pag-andam sa input, inference, pagkakabig sa maskara, ug pag-render sa preview lahi nga mga hugna nga adunay lainlaing oras.
Ang ubang mga hugna adunay masukod nga gidaghanon sa byte. Ang usa ka modelo nga pagpatuman mahimo lamang nga ibutyag ang “nagsugod” ug “nahuman.” Ang usa ka hapsay nga porsyento nga nag-uswag nga parehas mahimo nga kosmetiko kaysa usa ka tukma nga pagsukod.
Mapuslanon nga pag-uswag UI nagngalan sa yugto kung mahimo: pag-andam sa modelo, pagproseso sa imahe, o resulta sa pagtukod. Nagdumala usab kini sa kapakyasan ug pagkansela imbes nga magbilin usa ka spinner nga wala’y katin-awan.
Ang pagkansela labaw pa sa pagtago sa usa ka spinner
Kung ang tiggamit magsira sa usa ka imahe o magsugod pag-usab, ang interface mahimong ibaliwala ang katapusan nga tubag gikan sa karaan nga hangyo. Ang pagpahunong dayon sa nagpahiping pagkalkula mahimong magkinahanglan ug dugang nga suporta gikan sa runtime o pagtapos ug paghimo pag-usab sa trabahante.
Ang pagtapos sa usa ka trabahante mahukmanon, apan gisalikway niini ang nasugdan nga kahimtang. Ang sunod nga trabaho mahimong kinahanglan nga i-load ug i-initial pag-usab ang modelo. Alang sa usa ka mubo nga operasyon, ang pagmarka sa resulta nga stale mahimong mas barato kaysa sa pagguba sa tanan.
Ang husto nga pagpili nagdepende sa presyur sa memorya, gidugayon sa operasyon, ug mga kapabilidad sa runtime. Gikan sa panan-aw sa tiggamit, ang importante nga lagda mao nga ang guba nga trabaho kinahanglang dili mag-overwrite sa kasamtangang pag-edit.
Ang mga kasaypanan kinahanglan usab nga molapas sa utlanan
Ang usa ka eksepsiyon sa sulod sa usa ka trabahante dili mahimong normal nga main-thread exception. Kinahanglang i-report sa trabahante ang magamit nga mga sayup, ug ang editor kinahanglan mamati sa mga kapakyasan sa lebel sa trabahante.
Ang maayo nga pagdumala sa sayup nagpalahi sa labing menos:
- modelo nga asset dili magamit;
- napakyas ang pagsugod sa modelo;
- Napakyas ang pag-decode sa imahe o pag-andam sa input;
- napakyas ang inference;
- trabahante mihunong sa wala damha;
- resulta dili na iya sa kasamtangan nga hangyo.
Mas maaksyonan kini kaysa usa ka generic nga “may nahitabo nga sayup,” labi na kung ang una nga pag-setup ug normal nga pagproseso sa imahe adunay lainlaing mga tambal.
Ang output sa trabahante usa lang gihapon ka una nga maskara
Ang arkitektura sa thread dili makapauswag sa usa ka dili klaro nga sulud sa iyang kaugalingon. Mahimong ibalik sa trabahante ang usa ka teknikal nga balido nga maskara nga wala gihapon balhibo, transparent nga materyal, pig-ot nga mga strap, o gusto nga anino. Mao kana ang mga pangutana sa pagbahinbahin ug katuyoan.
Ang trabaho sa editor magpadayon human sa inference: i-scale ang mask ngadto sa working coordinate system, pag-composite og preview, pasagdi ang user nga magpino niini, ug i-export ang kasamtangan nga kahimtang. Resolusyon sa maskara kumpara sa gidak-on sa preview nagpatin-aw kung ngano nga ang mga sistema sa koordinasyon kinahanglan dili maglibog.
Usa ka mubo nga modelo sa panghunahuna
Hunahunaa ang trabahante isip usa ka lokal nga espesyalista luyo sa bintana sa mensahe:
- tag-iya sa editor ang interaksyon;
- tag-iya sa mamumuo ang bug-at nga buluhaton sa paghinakop;
- ang binary nga datos sa imahe mitabok sa usa ka gitakda nga utlanan;
- ang mamumuo mibalik og maskara, dili usa ka nahuman nga paghukom sa matag ngilit;
- ang editor nagpabilin nga responsable sa kasamtangan nga estado, pagrepaso, pagpino, ug pag-eksport.
Alang sa pagtan-aw sa modelo sa mga pixel mismo, ipadayon ang Unsa ang nakita sa modelo sa cutout sa device. Para sa usa ka end-to-end praktikal nga overview, tan-awa ang Unsaon sa lokal nga pagtangtang sa background.