Tasuta Chrome'i laiendus — tausta eemaldamine seadmes

Web Worker’i pilditöötluse põhialused

Web Worker on eraldi JavaScripti käivituskontekst, mis saab teha kalleid arvutusi ilma, et redaktori peamine lõim peab kogu töö tegema. Brauseri pilditöötluses tähendab see, et mudeli seadistus ja järeldus võivad joosta eemal lõimest, mis haldab nuppe, edenemist, pintslisisendit ja ekraanivärskendusi.

Tulemus ei ole „tasuta taustatöötlus“. Sama seade teeb endiselt arvutuse ja kasutab mälu. Arhitektuuriline kasu on eraldatus: raske mudelioperatsioon blokeerib vähem tõenäoliselt iga liidese vastust, kui see jookseb.

Põhilõimel on kasutajaliidese töö

Brauseri leht käitab tavaliselt põhilõimes JavaScripti. See lõim koordineerib ka paigutust, maalimist ja sisendit. Kui see võtab enda alla üks pikk arvutus, võivad klõpsud tunduda viivitatud, animatsioon võib peatuda ja brauser võib hoiatada, et leht ei reageeri.

Pildiredaktoril on palju peamise lõimega seotud kohustusi, enne kui järelduste tegemine isegi algab:

Segmenteerimismudeli arvulise töö asetamine samale lõimele paneks need ülesanded otseselt konkureerima. Töötaja loob selgema piiri.

Sõnumipõhine piir

Toimetaja ja töötaja ei jaga tavalisi muutujaid. Nad suhtlevad sõnumeid saates. Lihtsustatud voog näeb välja selline:

  1. Toimetaja loob või taaskasutab töötaja.
  2. See palub töötajal lähtestada järelduse käitusaeg ja mudel.
  3. See valmistab ette pildiandmed ja saadab järelduspäringu.
  4. Töötaja teisendab andmed mudeli eeldatavaks sisendiks.
  5. Töötaja käivitab mudeli ja loob maski väärtused.
  6. See saadab maski või tulemuse andmed tagasi.
  7. Redaktor koostab eelvaate ja võimaldab täpsustada või eksportida.

Sõnumid peaksid sisaldama piisavalt konteksti, et vastata õigele päringule. See on oluline, kui kasutaja valib teise pildi enne eelmise töö lõppu. Liides peab vältima vana tulemuse kuvamist uue allika kohal.

Pildiandmete kopeerimine ja edastamine

Väikese tekstisõnumi saatmine on odav. Miljonite piksliväärtuste saatmine võib olla kulukas, kui brauser peab kogu puhvri kopeerima. Veebi API-d võivad selle asemel teatud binaarpuhvrite omandiõiguse üle anda. Edastatud puhver muutub vastuvõtjale kättesaadavaks, ilma et see säilitaks saatja poolel kasutatavat duplikaati.

Selle optimeerimisega kaasneb disainipiirang: pärast ülekandmist ei saa saatja kasutada sama puhvrit, nagu oleks ta endiselt andmete omanik. Redaktor võib säilitada eraldi kuva esituse, luua spetsiaalse järelduspuhvri või rekonstrueerida hiljem vajaliku.

Mitte iga rakendus ei kasuta ülekandmist täpselt samades kohtades. Üldine õppetund on see, et lõime eraldamine ei muuda andmete liikumist kaduma. Kujutise mõõtmed, puhvri suurus ja konversioonide arv mõjutavad endiselt latentsust ja mälu.

Mida Easy Background Remover töötajasse paneb

Easy Background Remover kasutab veebitöötajat koos brauseri järelduste käitusajaga seadmesiseseks segmenteerimiseks. Raske automaatse väljalülitamise samm tekitab maski. Seejärel kuvab redaktor kombineeritud tulemuse ja toetab CPU-lõuendi pintsli täpsustamist.

Selline eraldamine annab tõrgetele kasulikuma piiri. Kui töötaja ei saa lähtestada või jookseb järelduse ajal kokku, saab liides teatada töötajaga seotud veast, selle asemel, et toetuda ainsa signaalina püsivalt külmutatud vahelehele.

See hoiab ka kohaliku töötlemise nõude arusaadavana. Pikslite saatmine laienduslehelt oma töötajale on suhtlus brauseri keskkonnas, mitte üleslaadimine kaugväljalõike API-sse. Esimesel seansil võidakse korduvkasutatava mudeli vara eraldi alla laadida; Vaadake artiklit Miks mudeli esmakordne käivitamine alla laadida.

Töötaja ei tee arvutusi kiireks

Töötajad parandavad reageerimisvõimet, mitte töötlemata seadme võimekust. Mudel tarbib endiselt CPU-d, GPU-d või muid käitusaja ressursse vastavalt sellele, mida brauser suudab pakkuda. Suur sisend võib siiski võtta kauem aega ja nõuda rohkem mälu kui väike.

Jääb mitu piirangut:

Viie pildi jaoks viie järeldustöötaja käivitamine ei ole automaatselt viis korda kiirem. Töötajad jagavad sama masinat. Paralleelsed tööd võivad konkureerida mälu ribalaiuse ja täitmisressursside pärast, samas kui iga mudeli eksemplar võib kanda oma mälukulusid.

Eduaruandlus on koostööpõhine

Töötaja saab saata olekuteateid, kuid ta ei tea automaatselt, milline edenemisprotsent on täpne. Mudeli allalaadimine, käitusaegne lähtestamine, sisendi ettevalmistamine, järelduste tegemine, maski teisendamine ja eelvaate renderdamine on erinevad faasid erineva ajastusega.

Mõnel faasil on mõõdetav baitide arv. Ühe mudeli täitmine võib kuvada ainult “algatud” ja “lõpetatud”. Ühtlaselt arenev sujuv protsent võib seetõttu olla pigem kosmeetiline kui täpne mõõtmine.

Kasulik edenemise kasutajaliides nimetab võimaluse korral etapi: mudeli ettevalmistamine, kujutise töötlemine või ehitamise tulemus. Samuti tegeleb see ebaõnnestumise ja tühistamisega, selle asemel, et jätta ketraja ilma selgituseta.

Tühistamine on midagi enamat kui spinneri peitmine

Kui kasutaja sulgeb pildi või alustab otsast peale, võib liides aegunud päringu võimalikku vastust ignoreerida. Aluseks oleva arvutuse viivitamatu peatamine võib nõuda käitusaja lisatuge või töötaja lõpetamist ja uuesti loomist.

Töötaja lõpetamine on otsustav, kuid see tühistab selle algoleku. Järgmise töö jaoks võib olla vaja mudel uuesti laadida ja lähtestada. Lühikese operatsiooni puhul võib tulemuse aegunuks märkimine olla odavam kui kõige maha lammutamine.

Õige valik sõltub mälu rõhust, töö kestusest ja käitusaja võimalustest. Kasutaja seisukohast on oluline reegel, et aegunud töö ei tohi praegust muudatust üle kirjutada.

Ka vead peavad ületama piiri

Töötaja sees olev erand ei muutu tavaliseks põhilõime erandiks. Töötaja peab teatama kasutatavatest vigadest ja toimetaja peaks kuulama töötaja taseme tõrkeid.

Hea veakäsitlus eristab vähemalt:

See on rakendatavam kui üldine “midagi läks valesti”, eriti kui esmakordsel seadistamisel ja tavalisel pilditöötlusel on erinevad abinõud.

Töötaja väljund on endiselt vaid esimene mask

Lõime arhitektuur ei paranda iseenesest mitmetähenduslikku serva. Töötaja saab tagastada tehniliselt kehtiva maski, millel on endiselt puudu karusnahk, läbipaistev materjal, kitsad rihmad või soovitud varjund. Need on segmenteerimise ja kavatsuse küsimused.

Redigeerija töö jätkub pärast järelduste tegemist: skaleerige mask töötavasse koordinaatsüsteemi, koostage eelvaade, laske kasutajal seda täpsustada ja eksportige praegune olek. Maski eraldusvõime vs eelvaate suurus selgitab, miks neid koordinaatsüsteeme ei tohiks segi ajada.

Lühike vaimne mudel

Mõelge töötajale kui kohalikule spetsialistile sõnumiakna taga:

Mudeli pikslite endi vaate vaatamiseks jätkake jaotisega Mida näeb seadmes väljalõigatud mudel. Täieliku praktilise ülevaate saamiseks vaadake jaotist Kuidas kohalikul taustal eemaldamine töötab.

Hoida uurida

Huvitav