Brezplačna razširitev za Chrome — izrezi ozadja v napravi

Osnove obdelave slik z Web Worker

Web Worker je ločen JavaScript kontekst, ki lahko izvaja drage izračune, ne da bi glavna nit urejevalnika opravila vse delo. Pri obdelavi slik v brskalniku to pomeni, da priprava modela in sklepanje lahko tečeta stran od niti, odgovorne za gumbe, sporočila o napredku, vnos čopiča in posodobitve zaslona.

Rezultat ni »brezplačna obdelava v ozadju«. Ista naprava še vedno računa in uporablja pomnilnik. Arhitekturna korist je ločitev: težka operacija modela manj verjetno blokira vsak odziv vmesnika, medtem ko teče.

Glavna nit ima nalogo uporabniškega vmesnika

Stran brskalnika običajno izvaja JavaScript v glavni niti. Ta nit tudi usklajuje postavitev, slikanje in vnos. Če ga zasede en dolg izračun, lahko kliki zamujajo, animacija se lahko ustavi in ​​brskalnik lahko opozori, da se stran ne odziva.

Urejevalnik slik ima veliko odgovornosti za glavno nit, preden se izvajanje modela sploh začne:

Če bi numerično delo modela segmentacije postavili na isto nit, bi te naloge neposredno konkurirale. Delavec ustvari jasnejšo mejo.

Meja na podlagi sporočila

Urednik in delavec si ne delita običajnih spremenljivk. Komunicirajo s pošiljanjem sporočil. Poenostavljen tok izgleda takole:

  1. Urejevalnik ustvari ali ponovno uporabi delavca.
  2. Od delavca zahteva, da inicializira izvajalno okolje sklepanja in model.
  3. Pripravi slikovne podatke in pošlje zahtevo za sklepanje.
  4. Delavec pretvori podatke v pričakovani vhod modela.
  5. Delavec zažene model in ustvari vrednosti maske.
  6. Pošlje masko ali podatke o rezultatu nazaj.
  7. Urejevalnik sestavi predogled in omogoči izboljšanje ali izvoz.

Sporočila morajo vsebovati dovolj konteksta, da se odgovor ujema s pravilno zahtevo. To je pomembno, če uporabnik izbere drugo sliko, preden se prejšnje opravilo konča. Vmesnik se mora izogibati prikazovanju starega rezultata namesto novega vira.

Kopiranje in prenos slikovnih podatkov

Pošiljanje majhnega besedilnega sporočila je poceni. Pošiljanje milijonov vrednosti slikovnih pik je lahko drago, če mora brskalnik kopirati celoten medpomnilnik. Spletni API-ji lahko namesto tega prenesejo lastništvo določenih binarnih medpomnilnikov. Preneseni medpomnilnik postane na voljo prejemniku, ne da bi obdržal uporabni dvojnik na strani pošiljatelja.

Ta optimizacija ima oblikovno omejitev: po prenosu pošiljatelj ne more več uporabljati istega vmesnega pomnilnika, kot da je še vedno lastnik podatkov. Urejevalnik lahko obdrži ločeno prikazno predstavitev, ustvari namenski medpomnilnik za sklepanje ali pozneje rekonstruira, kar potrebuje.

Vsaka izvedba ne uporablja prenosa na povsem istih mestih. Splošna lekcija je, da ločevanje niti ne povzroči, da gibanje podatkov izgine. Dimenzije slike, velikost medpomnilnika in število pretvorb še vedno vplivajo na zakasnitev in pomnilnik.

Kaj Easy Background Remover vloži v delavca

Easy Background Remover uporablja Web Worker z izvajalnim okoljem sklepanja brskalnika za segmentacijo v napravi. Težka samodejna izrezovalna stopnica ustvari masko. Urejevalnik nato prikaže sestavljeni rezultat in podpira izboljšanje čopiča na platnu CPE.

Ta ločitev daje napakam uporabnejšo mejo. Če se delavec ne more inicializirati ali se med sklepanjem zruši, lahko vmesnik sporoči napako, povezano z delavcem, namesto da bi se zanašal na trajno zamrznjen zavihek kot edini signal.

Prav tako ohranja trditev o lokalni obdelavi razumljivo. Pošiljanje slikovnih pik z razširitvene strani lastnemu delavcu je komunikacija znotraj okolja brskalnika in ne nalaganje v API za oddaljeni izrez. Prva seja lahko ločeno prenese sredstvo modela za večkratno uporabo; glejte Zakaj prvi zagon prenese model.

Delavec ne naredi izračuna takoj

Delavci izboljšajo odzivnost, ne zmogljivosti surove naprave. Model še vedno porablja CPE, GPE ali druge vire izvajalnega okolja glede na to, kar brskalnik lahko zagotovi. Velik vnos lahko še vedno traja dlje in zahteva več pomnilnika kot majhen.

Ostaja več omejitev:

Zagon petih sklepnih delavcev za pet slik ni samodejno petkrat hitrejši. Delavci si delijo isti stroj. Vzporedna opravila lahko tekmujejo za pasovno širino pomnilnika in izvedbene vire, medtem ko lahko vsak primerek modela nosi svoje stroške pomnilnika.

Poročanje o napredku je kooperativno

Delavec lahko pošilja sporočila o stanju, vendar ne ve samodejno, kakšen odstotek napredka se bo zdel točen. Prenos modela, inicializacija izvajalnega okolja, priprava vnosa, sklepanje, pretvorba maske in upodabljanje predogleda so ločene faze z različnim časovnim razporedom.

Nekatere faze imajo merljivo število bajtov. Enkratna izvedba modela lahko razkrije le »začeto« in »končano«. Gladki odstotek, ki enakomerno napreduje, je torej lahko kozmetična in ne natančna meritev.

Uporabni uporabniški vmesnik napredka poimenuje fazo, kadar je to mogoče: priprava modela, obdelava slike ali rezultat gradnje. Obravnava tudi neuspeh in preklic, namesto da pusti spinner brez pojasnila.

Preklic je več kot skrivanje vrtavke

Če uporabnik zapre sliko ali začne znova, lahko vmesnik prezre morebitni odgovor zastarele zahteve. Takojšnja ustavitev osnovnega izračuna lahko zahteva dodatno podporo izvajalnega okolja ali prekinitev in ponovno ustvarjanje delavca.

Prekinitev delavca je odločilna, vendar zavrže njegovo inicializirano stanje. Naslednje opravilo bo morda moralo znova naložiti in inicializirati model. Za kratko operacijo je lahko cenejše označevanje rezultata kot porušitev vsega.

Pravilna izbira je odvisna od obremenitve pomnilnika, trajanja delovanja in zmogljivosti časa izvajanja. Z vidika uporabnika je pomembno pravilo, da zastarelo delo ne sme prepisati trenutnega urejanja.

Tudi napake morajo prestopiti mejo

Izjema znotraj delavca ne postane običajna izjema glavne niti. Delavec mora poročati o uporabnih napakah, urednik pa mora poslušati napake na ravni delavca.

Dobro obravnavanje napak razlikuje vsaj:

To je bolj izvedljivo kot generično »nekaj je šlo narobe«, še posebej, če imata nastavitev ob prvem zagonu in običajna obdelava slike drugačna sredstva.

Delavec je še vedno le prva maska

Arhitektura niti sama po sebi ne izboljša dvoumnega roba. Delavec lahko vrne tehnično veljavno masko, na kateri manjka krzno, prozoren material, ozki trakovi ali želena senca. To so vprašanja segmentacije in namena.

Delo urednika se nadaljuje po sklepanju: skalirajte masko v delovni koordinatni sistem, sestavite predogled, pustite uporabniku, da ga izboljša, in izvozite trenutno stanje. Ločljivost maske v primerjavi z velikostjo predogleda pojasnjuje, zakaj teh koordinatnih sistemov ne smete zamenjevati.

Jedrnat mentalni model

Predstavljajte si delavca kot lokalnega strokovnjaka za oknom s sporočili:

Za pogled modela na same slikovne pike nadaljujte z Kaj vidi model izreza v napravi. Za celovit praktični pregled si oglejte Kako deluje lokalno odstranjevanje ozadja.

Nadaljujte z raziskovanjem

Zanimivo