Web Worker irudiak prozesatzeko oinarriak
Web Worker JavaScript exekuzio testuinguru bereizi bat da, kalkulu garestiak egin ditzakeena editorearen hari nagusiak lan guztia egin gabe. Arakatzailearen irudiak prozesatzeko, horrek esan nahi du ereduaren konfigurazioa eta inferentzia botoien, aurrerapen-mezuen, brotxaren sarrera eta pantailaren eguneratzeen ardura duen haritik ihes egin dezaketela.
Emaitza ez da “atzeko plano libreko prozesatzea”. Gailu berak oraindik konputazioa egiten du eta memoria erabiltzen du. Onura arkitektonikoa bereiztea da: ereduaren eragiketa astun batek litekeena da interfazearen erantzun guztiak blokeatzea exekutatzen den bitartean.
Hari nagusiak erabiltzaile-interfaze lana du
Arakatzaile-orri batek JavaScript exekutatzen du normalean hari nagusi batean. Hari horrek diseinua, margoketa eta sarrera ere koordinatzen ditu. Kalkulu luze batek hartzen badu, klikak atzeratuta senti daitezke, animazioa gelditu daiteke eta arakatzaileak ohartarazi dezake orriak ez duela erantzuten.
Irudi-editore batek hari nagusiko erantzukizun ugari ditu inferentzia hasi aurretik:
- Fitxategi-hautapena jaso, itsatsi edo jaregin;
- irudi bat deskodetu eta bistaratu;
- eguneratu aurrerapena eta errore-egoerak;
- marraztu aurrebista mihisea;
- Gehitu eta Ezabatu eskuila mugimendua kudeatu;
- deskargatzeko edo arbeleko ekintzak prestatu.
Segmentazio-eredu baten zenbakizko lana hari berean jartzeak zeregin horiek zuzenean lehiatuko lirateke. Langile batek muga argiago bat sortzen du.
Mezuetan oinarritutako muga
Editoreak eta langileak ez dituzte aldagai arruntak partekatzen. Mezuak bidaliz komunikatzen dira. Fluxu sinplifikatu batek itxura hau du:
- Editoreak langile bat sortu edo berrerabiltzen du.
- Langileari inferentziaren exekuzio-denbora eta eredua hasieratzeko eskatzen dio.
- Irudien datuak prestatzen ditu eta inferentzia eskaera bat bidaltzen du.
- Langileak datuak ereduaren espero den sarrera bihurtzen ditu.
- Langileak eredua exekutatzen du eta maskara-balioak sortzen ditu.
- Maskara edo emaitza datuak atzera bidaltzen ditu.
- Editoreak aurrebista konposatzen du eta hobetzea edo esportatzea ahalbidetzen du.
Mezuek nahikoa testuinguru izan behar dute erantzun bat eskaera zuzenarekin bat etortzeko. Horrek axola du erabiltzaile batek beste irudi bat aukeratzen badu aurreko lana amaitu aurretik. Interfazeak emaitza zahar bat iturri berri baten gainean bistaratzea saihestu behar du.
Irudien datuak kopiatzea eta transferitzea
Testu-mezu txiki bat bidaltzea merkea da. Milioika pixel balio bidaltzea garestia izan daiteke arakatzaileak buffer osoa kopiatu behar badu. Web APIek buffer bitar batzuen jabetza transferi dezakete. Transferitutako buffer bat hartzailearen eskura jartzen da bikoiztu erabilgarririk gorde gabe igorlearen aldean.
Optimizazio horrek diseinu-murriztapen batekin dator: transferitu ondoren, igorleak ezin du buffer bera erabiltzen jarraitu datuen jabea balitz bezala. Editore batek bistaratzeko irudikapen bereizi bat gorde dezake, inferentzia buffer dedikatu bat sor dezake edo behar duena gero berreraiki.
Inplementazio guztiek ez dute transferentzia erabiltzen leku berdinetan. Ikasgai orokorra da haria bereizteak ez duela datuen mugimendua desagertzen. Irudien dimentsioak, buffer tamainak eta bihurketa kopuruak latentziari eta memoriari eragiten diote oraindik.
Easy Background Removerk langileari jartzen diona
Easy Background Remover-k Web Worker bat erabiltzen du arakatzailearen inferentziaren exekuzio-denbora batekin gailuan segmentatzeko. Mozketa automatikoko urrats astunak maskara bat sortzen du. Ondoren, editoreak konposatutako emaitza bistaratzen du eta CPU-mihisearen eskuila fintzea onartzen du.
Banaketa honek hutsegiteei muga erabilgarriagoa ematen die. Langileak ezin badu hasieratu edo inferentzian huts egiten badu, interfazeak langileari lotutako errore baten berri eman dezake, behin betiko izoztutako fitxa batean fidatu ordez seinale bakarra gisa.
Era berean, tokiko prozesatzeko erreklamazioa ulergarri mantentzen du. Luzapen-orri batetik pixelak bere langileari bidaltzea arakatzailearen inguruneko komunikazioa da, ez urruneko mozketaren API batera kargatzea. Lehenengo saioak bereizita deskargatu dezake eredu berrerabilgarriaren aktiboa; ikusi Zergatik lehen exekuzioak eredu bat deskargatzen du.
Langile batek ez du konputazioa berehala egiten
Langileek erantzuna hobetzen dute, ez gailu gordinaren gaitasuna. Ereduak CPU, GPU edo beste exekuzio-baliabide batzuk kontsumitzen ditu arakatzaileak eman dezakeenaren arabera. Sarrera handi batek denbora gehiago iraun dezake eta txiki batek baino memoria gehiago behar du.
Hainbat muga geratzen dira:
- ereduaren hasieratzeak benetako kostua du;
- pixel buffer-ek memoria bi aldeetan okupatzen dute kopiatzen badira;
- Tamaina aldatzea eta formatu bihurketak denbora behar dute;
- memoria gutxiko gailuek irudi handiekin borrokan egon daitezke;
- langile gehiagok areagotu egin dezakete gatazka murriztu beharrean;
- esportatu eta mihisearen eguneratzeek hari nagusia izan dezakete oraindik.
Bost iruditarako bost inferentzia-langile hastea ez da automatikoki bost aldiz azkarragoa. Langileek makina bera partekatzen dute. Lan paraleloek memoria-banda-zabalera eta exekuzio-baliabideengatik lehiatu daitezke, eredu-instantzia bakoitzak bere memoria-kostua izan dezakeen bitartean.
Aurrerapenen txostena kooperatiboa da
Langile batek egoera-mezuak bidal ditzake, baina ez daki automatikoki zein aurrerapen-portzentaia izango den zehatza. Ereduen deskarga, exekuzio-denbora hasieratzea, sarrera-prestaketa, inferentzia, maskara bihurtzea eta aurrebista errendatzea fase bereiziak dira denbora ezberdinekin.
Fase batzuek byte-zenbaketa neurgarriak dituzte. Eredu bakarreko exekuzio batek “hasitakoa” eta “amaitua” baino ez izan dezake. Ondorioz, uniformeki aurreratzen den ehuneko leuna kosmetikoa izan daiteke neurketa zehatza baino.
Aurrerapen erabilgarria UI-k faseari izena ematen dio ahal denean: eredua prestatzea, irudia prozesatzea edo emaitza eraikitzea. Porrota eta baliogabetzea ere kudeatzen ditu spinner bat azalpenik gabe utzi beharrean.
Baliogabetzea spinner bat ezkutatzea baino gehiago da
Erabiltzaileak irudi bat ixten badu edo berriro hasten bada, interfazeak eskaera zaharkituaren erantzuna ez ikusi egin dezake. Azpiko konputazioa berehala gelditzeak exekuzio-denboraren laguntza gehigarria eskatu dezake edo langilea amaitzea eta birsortzea.
Langile bat amaitzea erabakigarria da, baina hasierako egoera baztertzen du. Baliteke hurrengo lanak eredua berriro kargatu eta hasieratu behar izatea. Eragiketa labur baterako, emaitza zaharkituta markatzea dena botatzea baino merkeagoa izan daiteke.
Aukera zuzena memoriaren presioaren, funtzionamenduaren iraupenaren eta exekuzio-ahalmenen araberakoa da. Erabiltzailearen ikuspegitik, arau garrantzitsua da lan zaharkituak ez duela uneko edizioa gainidatzi behar.
Erroreek ere muga gainditu behar dute
Langile baten barruan dagoen salbuespen bat ez da hari nagusiko salbuespen arrunt bihurtzen. Langileak erabil daitezkeen erroreen berri eman behar du, eta editoreak langileen mailako hutsegiteen berri izan behar du.
Erroreen kudeaketa onak bereizten ditu gutxienez:
- Ereduzko aktibo ez dago erabilgarri;
- ereduaren hasierak huts egin du;
- Irudiak deskodetzea edo sarrera prestatzea huts egin du;
- inferentzia huts egin du;
- langilea ustekabean gelditu zen;
- emaitza jada ez dago oraingo eskaerari.
Hau “zerbait gaizki joan da” generiko bat baino ekidingarriagoa da, batez ere lehen exekuzioaren konfigurazioa eta irudien prozesamendu normalak erremedio desberdinak dituztenean.
Langileen irteera lehen maskara besterik ez da oraindik
Hari-arkitekturak ez du berez hobetzen ertz anbiguo bat. Langileak larrua, material gardena, uhal estuak edo nahi den itzala falta dituen teknikoki baliozko maskara bat itzul dezake. Segmentazio eta intentzio galderak dira.
Editorearen lana inferentziaren ondoren berriro hasten da: eskalatu maskara laneko koordenatu-sistemara, konposatu aurrebista, utzi erabiltzaileari findu eta uneko egoera esportatu. Maskararen bereizmena vs aurrebistaren tamaina koordenatu-sistema horiek zergatik ez diren nahastu behar azaltzen du.
Eredu mental zehatza
Pentsa langilea mezu-leiho baten atzean tokiko espezialista gisa:
- editorea da elkarrekintzaren jabea;
- langilea da inferentzia zeregin astunaren jabea;
- irudi bitar datuek muga zehaztu bat zeharkatzen dute;
- Langileak maskara bat itzultzen du, ez ertz bakoitzari buruzko epai amaitu bat;
- Editoreak egungo egoeraren, berrikuspenaren, fintzearen eta esportazioaren erantzule izaten jarraitzen du.
Modeloak pixelen ikuspegia lortzeko, jarraitu Gailuko ebaki-eredu batek ikusten duena atalean. Amaierako ikuspegi praktikoa lortzeko, ikusi Nola funtzionatzen duen tokiko atzeko planoak kentzeak.