Бесплатно проширење за Chrome — уклањање позадине на уређају

Основе обраде слика уз Web Worker

Web Worker је засебан JavaScript контекст који може да ради скупе прорачуне без тога да главна нит уређивача обави сав посао. За обраду слика у прегледачу то значи да припрема модела и инференција могу да раде даље од нити одговорне за дугмад, поруке о напретку, унос четкице и ажурирања екрана.

Резултат није „бесплатна обрада у позадини“. Исти уређај и даље рачуна и троши меморију. Архитектонска корист је одвајање: тешка операција модела мање вероватно блокира сваки одговор интерфејса док ради.

Главна нит има задатак корисничког интерфејса

Страница претраживача обично покреће ЈаваСцрипт на главној нити. Та нит такође координира распоред, сликање и унос. Ако га заузме једно дугачко израчунавање, кликови могу бити одложени, анимација може да престане, а прегледач може да упозори да страница не реагује.

Уређивач слика има много одговорности главне нити пре него што закључивање уопште и почне:

Стављање нумеричког рада модела сегментације на исту нит учинило би да се ти задаци директно надмећу. Радник ствара јаснију границу.

The message-based boundary

Уредник и радник не деле обичне променљиве. Они комуницирају слањем порука. Поједностављени ток изгледа овако:

  1. Уредник креира или поново користи радника.
  2. Тражи од радника да иницијализује време извођења закључивања и модел.
  3. Припрема податке о слици и шаље захтев за закључивање.
  4. Радник конвертује податке у очекивани улаз модела.
  5. Радник покреће модел и производи вредности маске.
  6. Шаље маску или податке о резултату назад.
  7. Едитор саставља преглед и омогућава прецизирање или извоз.

Поруке треба да садрже довољно контекста да одговарају одговору на тачан захтев. Ово је важно ако корисник одабере другу слику пре него што се претходни посао заврши. Интерфејс мора избегавати приказивање старог резултата преко новог извора.

Копирање и пренос података о слици

Слање мале текстуалне поруке је јефтино. Слање милиона вредности пиксела може бити скупо ако прегледач мора да копира цео бафер. Уместо тога, Веб API-ји могу да пренесу власништво над одређеним бинарним баферима. Пренесени бафер постаје доступан примаоцу без задржавања употребљивог дупликата на страни пошиљаоца.

Та оптимизација долази са ограничењем дизајна: након преноса, пошиљалац не може да настави да користи исти бафер као да и даље поседује податке. Едитор може задржати засебан приказ приказа, креирати наменски бафер закључивања или реконструисати оно што му је потребно касније.

Не користи свака имплементација трансфер на потпуно истим местима. Општа лекција је да раздвајање нити не доводи до нестанка кретања података. Димензије слике, величина бафера и број конверзија и даље утичу на кашњење и меморију.

Шта Easy Background Remover ставља у радника

Easy Background Remover користи Веб Воркер са изводним временом за закључивање претраживача за сегментацију на уређају. The heavy automatic cutout step produces a mask. Уређивач затим приказује састављени резултат и подржава пречишћавање четкице ЦПУ-а.

Ово раздвајање даје неуспесима кориснију границу. If the worker cannot initialize or crashes during inference, the interface can report a worker-related error instead of relying on a permanently frozen tab as the only signal.

То такође чини тврдњу о локалној обради разумљивом. Слање пиксела са странице са екстензијом сопственом раднику је комуникација унутар окружења претраживача, а не отпремање на API за удаљено искључивање. Прва сесија може засебно преузети материјал за вишекратну употребу; погледајте Зашто прво покретање преузима модел.

A worker does not make computation instant

Радници побољшавају брзину реаговања, а не сирове могућности уређаја. Модел и даље троши ЦПУ, ГПУ или друге рунтиме ресурсе у складу са оним што претраживач може да пружи. Велики улаз и даље може трајати дуже и захтевати више меморије од малог.

Остаје неколико ограничења:

Покретање пет инференција за пет слика није аутоматски пет пута брже. Радници деле исту машину. Паралелни послови могу да се такмиче за меморијски пропусни опсег и извршне ресурсе, док свака инстанца модела може да носи сопствене трошкове меморије.

Извештавање о напретку је кооперативно

Радник може да шаље статусне поруке, али не зна аутоматски који ће проценат напретка бити тачан. Преузимање модела, иницијализација времена извршавања, припрема уноса, закључивање, конверзија маске и приказивање прегледа су одвојене фазе са различитим временским распоредом.

Неке фазе имају мерљив број бајтова. Извршење једног модела може изложити само „започето“ и „завршено“. Уједначен проценат који равномерно напредује стога може бити козметички пре него прецизно мерење.

Корисни кориснички интерфејс напретка именује фазе када је то могуће: припрема модела, обрада слике или резултат изградње. Такође се бави неуспехом и отказивањем уместо да оставља спинер без објашњења.

Отказивање је више од скривања спинера

Ако корисник затвори слику или почне испочетка, интерфејс може да игнорише евентуални одговор застарелог захтева. Одмах заустављање основног израчунавања може захтевати додатну подршку из времена извршавања или прекид и поновно креирање радника.

Укидање радника је одлучујуће, али одбацује његово иницијализовано стање. Следећи посао ће можда морати поново да учита и иницијализује модел. За кратку операцију, означавање резултата може бити јефтиније од рушења свега.

Тачан избор зависи од притиска меморије, трајања рада и могућности рада. Из перспективе корисника, важно је правило да застарели рад не сме да замени тренутну измену.

Грешке такође морају да пређу границу

Изузетак унутар радника не постаје нормалан изузетак главне нити. Радник мора пријавити употребљиве грешке, а уредник треба да слуша грешке на нивоу радника.

Добро руковање грешкама разликује најмање:

Ово је ефикасније од генеричког „нешто је пошло наопако“, посебно када прво покретање и нормална обрада слике имају различите лекове.

Излаз радника је још увек само прва маска

Архитектура нити сама по себи не побољшава двосмислену ивицу. Радник може да врати технички исправну маску којој још недостаје крзно, провидни материјал, уске траке или жељена сенка. То су питања о сегментацији и намери.

Посао уредника се наставља након закључивања: скалирајте маску у радни координатни систем, саставите преглед, пустите кориснику да га прецизира и извезите тренутно стање. Резолуција маске у односу на величину прегледа објашњава зашто те координатне системе не треба мешати.

Сажети ментални модел

Замислите радника као локалног стручњака иза прозора за поруке:

За приказ модела самих пиксела, наставите са Шта види модел изреза на уређају. За практичан преглед од краја до краја, погледајте Како функционише локално уклањање позадине.

Наставите да истражујете

Занимљиво