Bezmaksas Chrome paplašinājums — fona noņemšana ierīcē

Web Worker attēlu apstrādes pamati

Web Worker smagos aprēķinus novirza no UI pavediena, lai saskarne apstrādes laikā paliktu atsaucīgāka.

Attēla dati joprojām pārvietojas pārlūkā; pati šī arhitektūra nenozīmē attālinātu augšupielādi.

Galvenajam pavedienam ir lietotāja interfeisa uzdevums

Pārlūkprogrammas lapā galvenajā pavedienā parasti tiek palaists JavaScript. Šis pavediens arī koordinē izkārtojumu, krāsošanu un ievadi. Ja to aizņem viens garš aprēķins, klikšķi var šķist aizkavēti, animācija var apstāties un pārlūkprogramma var brīdināt, ka lapa nereaģē.

Attēlu redaktoram ir daudz galveno pavedienu pienākumu, pirms pat tiek sākts secinājums:

Segmentācijas modeļa skaitliskā darba ievietošana tajā pašā pavedienā liktu šiem uzdevumiem tieši konkurēt. Strādnieks rada skaidrāku robežu.

Uz ziņojumu balstīta robeža

Redaktors un darbinieks nedala parastos mainīgos. Viņi sazinās, sūtot ziņas. Vienkāršota plūsma izskatās šādi:

  1. Redaktors izveido vai atkārtoti izmanto darbinieku.
  2. Tas prasa darbiniekam inicializēt secinājumu izpildlaiku un modeli.
  3. Tas sagatavo attēla datus un nosūta secinājumu pieprasījumu.
  4. Darbinieks pārveido datus par modeļa paredzamo ievadi.
  5. Darbinieks palaiž modeli un izveido maskas vērtības.
  6. Tas nosūta maskas vai rezultātu datus atpakaļ.
  7. Redaktors izveido priekšskatījumu un iespējo precizēšanu vai eksportēšanu.

Ziņojumos ir jāiekļauj pietiekami daudz konteksta, lai atbilstu atbildei pareizajam pieprasījumam. Tam ir nozīme, ja lietotājs izvēlas citu attēlu pirms iepriekšējā darba pabeigšanas. Interfeisam ir jāizvairās no veca rezultāta parādīšanas jaunā avotā.

Attēlu datu kopēšana un pārsūtīšana

Nelielas īsziņas nosūtīšana ir lēta. Miljoniem pikseļu vērtību sūtīšana var būt dārga, ja pārlūkprogrammai ir jākopē viss buferis. Tā vietā tīmekļa API var nodot īpašumtiesības uz noteiktiem binārajiem buferiem. Pārsūtītais buferis kļūst pieejams saņēmējam, nesaglabājot izmantojamu dublikātu sūtītāja pusē.

Šī optimizācija ir saistīta ar dizaina ierobežojumu: pēc pārsūtīšanas sūtītājs nevar turpināt izmantot to pašu buferi, it kā tam joprojām piederētu dati. Redaktors var saglabāt atsevišķu displeja attēlojumu, izveidot īpašu secinājumu buferi vai vēlāk rekonstruēt nepieciešamo.

Ne katra ieviešana izmanto pārsūtīšanu tieši tajās pašās vietās. Vispārējā mācība ir tāda, ka pavedienu atdalīšana nepazūd datu kustībai. Attēla izmēri, bufera lielums un reklāmguvumu skaits joprojām ietekmē latentumu un atmiņu.

Ko Easy Background Remover ieliek strādniekā

Easy Background Remover izmanto Web Worker ar pārlūkprogrammas secinājumu izpildlaiku ierīces segmentēšanai. Smagais automātiskās izslēgšanas solis rada masku. Pēc tam redaktors parāda salikto rezultātu un atbalsta CPU audekla otas precizēšanu.

Šī atdalīšana piešķir kļūmēm noderīgāku robežu. Ja darbinieks nevar inicializēt vai avarējas secinājumu veikšanas laikā, saskarne var ziņot par ar darbinieku saistītu kļūdu, nevis paļauties uz pastāvīgi iesaldētu cilni kā vienīgo signālu.

Tas arī padara vietējās apstrādes pretenziju saprotamu. Pikseļu sūtīšana no paplašinājuma lapas savam darbiniekam ir saziņa pārlūkprogrammas vidē, nevis augšupielāde attālās izgriešanas API. Pirmajā sesijā var atsevišķi lejupielādēt atkārtoti lietojamā modeļa līdzekli; Skatiet sadaļu Kāpēc vispirms tiek lejupielādēts modelis.

Darbinieks aprēķinus neveic tūlītēji

Darbinieki uzlabo atsaucību, nevis neapstrādātas ierīces iespējas. Modelis joprojām patērē CPU, GPU vai citus izpildlaika resursus atkarībā no tā, ko var nodrošināt pārlūkprogramma. Liela ievade joprojām var aizņemt ilgāku laiku un prasīt vairāk atmiņas nekā maza ievade.

Ir vairāki ierobežojumi:

Piecu izsecināšanas darbu sākšana pieciem attēliem nav automātiski piecas reizes ātrāka. Strādniekiem ir viena un tā pati mašīna. Paralēli uzdevumi var konkurēt par atmiņas joslas platumu un izpildes resursiem, savukārt katra modeļa instancei var būt savas atmiņas izmaksas.

Progresa ziņošana ir sadarbība

Darbinieks var nosūtīt statusa ziņojumus, taču tas automātiski nezina, kāds progresa procents būs precīzs. Modeļa lejupielāde, izpildlaika inicializācija, ievades sagatavošana, secinājumi, maskas konvertēšana un priekšskatījuma renderēšana ir atsevišķas fāzes ar atšķirīgu laiku.

Dažām fāzēm ir izmērāms baitu skaits. Viena modeļa izpilde var parādīt tikai “sākts” un “pabeigts”. Tāpēc vienmērīgs procents, kas vienmērīgi virzās uz priekšu, var būt kosmētisks, nevis precīzs mērījums.

Noderīga progresa lietotāja saskarne, ja iespējams, nosauc posmu: modeļa sagatavošana, attēla apstrāde vai izveides rezultāts. Tas arī apstrādā neveiksmes un atcelšanu, nevis atstāj vērpēju bez paskaidrojumiem.

Atcelšana ir vairāk nekā vērpēja slēpšana

Ja lietotājs aizver attēlu vai sāk no jauna, saskarne var ignorēt iespējamo atbildi no novecojušā pieprasījuma. Lai nekavējoties apturētu pamatā esošo aprēķinu, var būt nepieciešams papildu atbalsts no izpildlaika vai darbinieka darbības pārtraukšana un atjaunošana.

Darba ņēmēja atlaišana ir izšķiroša, taču tā atmet savu inicializēto stāvokli. Nākamajam darbam, iespējams, būs vēlreiz jāielādē un jāinicializē modelis. Īsai darbībai rezultāta atzīmēšana novecojušā var būt lētāka nekā visu nojaukt.

Pareizā izvēle ir atkarīga no atmiņas spiediena, darbības ilguma un izpildlaika iespējām. No lietotāja viedokļa svarīgs noteikums ir tāds, ka novecojis darbs nedrīkst pārrakstīt pašreizējo labojumu.

Arī kļūdām ir jāšķērso robeža

Izņēmums darbinieka iekšienē nekļūst par parastu galvenā pavediena izņēmumu. Darbiniekam ir jāziņo par izmantojamām kļūdām, un redaktoram ir jāuzklausa darbinieka līmeņa kļūmes.

Laba kļūdu apstrāde atšķir vismaz:

Tas ir efektīvāks nekā vispārējs “kaut kas nogāja greizi”, it īpaši, ja pirmās palaišanas iestatīšanai un normālai attēlu apstrādei ir dažādi līdzekļi.

Darbinieku produkcija joprojām ir tikai pirmā maska

Pavedienu arhitektūra pati par sevi neuzlabo neskaidru malu. Darbinieks var atgriezt tehniski derīgu masku, kurai joprojām trūkst kažokādas, caurspīdīga materiāla, šauras siksnas vai vēlamās ēnas. Tie ir jautājumi par segmentāciju un nolūku.

Redaktora darbs tiek atsākts pēc secinājuma izdarīšanas: mērogojiet masku darba koordinātu sistēmā, izveidojiet priekšskatījumu, ļaujiet lietotājam to precizēt un eksportējiet pašreizējo stāvokli. Maskas izšķirtspēja salīdzinājumā ar priekšskatījuma izmēru izskaidro, kāpēc šīs koordinātu sistēmas nevajadzētu sajaukt.

Īss garīgais modelis

Padomājiet par darbinieku kā par vietējo speciālistu aiz ziņojumu loga:

Lai modelī skatītu pašus pikseļus, turpiniet ar Ko redz ierīces izgriezuma modelis. Lai iegūtu pilnīgu praktisku pārskatu, skatiet rakstu Kā darbojas vietējā fona noņemšana.

Turpiniet izpētīt

Interesantu