Web Worker պատկերների մշակման հիմունքներ
Web Worker-ը JavaScript-ի կատարման առանձին համատեքստ է, որը կարող է կատարել թանկարժեք հաշվարկներ՝ առանց խմբագրի հիմնական շարանը ստիպելու կատարել ամբողջ աշխատանքը: Բրաուզերի պատկերների մշակման համար դա նշանակում է, որ մոդելի կարգավորումն ու եզրակացությունը կարող են հեռանալ կոճակների, առաջընթացի հաղորդագրությունների, վրձինների մուտքագրման և էկրանի թարմացումների համար պատասխանատու շղթայից:
Արդյունքը «անվճար ֆոնային մշակում» չէ։ Նույն սարքը դեռ կատարում է հաշվարկը և օգտագործում հիշողություն: Ճարտարապետական առավելությունը տարանջատումն է. ծանր մոդելի գործողությունն ավելի քիչ հավանական է, որ արգելափակի յուրաքանչյուր ինտերֆեյսի պատասխանը, երբ այն աշխատում է:
Հիմնական շարանը ունի օգտագործողի միջերեսի աշխատանք
Բրաուզերի էջը սովորաբար աշխատում է JavaScript-ը հիմնական թեմայի վրա: Այդ շարանը նաև համակարգում է դասավորությունը, նկարչությունը և մուտքագրումը: Եթե մեկ երկար հաշվարկ զբաղեցնի այն, սեղմումները կարող են հետաձգվել, անիմացիան կարող է դադարեցվել, և զննարկիչը կարող է զգուշացնել, որ էջը չի արձագանքում:
Պատկերի խմբագրիչը ունի հիմնական թեմայի բազմաթիվ պարտականություններ, նախքան եզրակացությունը սկսելը.
- ստացեք ֆայլի ընտրություն, տեղադրեք կամ թողեք;
- վերծանել և ցուցադրել պատկեր;
- թարմացնել առաջընթացը և սխալի վիճակները.
- նկարել նախադիտման կտավը;
- կարգավորել Ավելացնել և ջնջել խոզանակի շարժումը;
- պատրաստել ներբեռնման կամ սեղմատախտակի գործողություններ:
Սեգմենտավորման մոդելի թվային աշխատանքը նույն թելի վրա դնելը կստիպի այդ առաջադրանքները ուղղակիորեն մրցակցել: Աշխատողն ավելի հստակ սահման է ստեղծում:
Հաղորդագրության վրա հիմնված սահմանը
Խմբագիրն ու աշխատողը չեն կիսում սովորական փոփոխականները։ Նրանք շփվում են հաղորդագրություններ ուղարկելով։ Պարզեցված հոսքը հետևյալն է.
- Խմբագիրը ստեղծում կամ նորից օգտագործում է աշխատող:
- Այն խնդրում է աշխատողին սկզբնավորել եզրակացության գործարկման ժամանակը և մոդելը:
- Այն պատրաստում է պատկերի տվյալները և ուղարկում է եզրակացության հարցում:
- Աշխատողը տվյալները փոխակերպում է մոդելի ակնկալվող մուտքագրման:
- Աշխատողը գործարկում է մոդելը և արտադրում դիմակային արժեքներ:
- Այն հետ է ուղարկում դիմակը կամ արդյունքի տվյալները:
- Խմբագիրը կազմում է նախադիտումը և հնարավորություն է տալիս կատարելագործումը կամ արտահանումը:
Հաղորդագրությունները պետք է ներառեն բավարար համատեքստ՝ ճիշտ հարցման պատասխանին համապատասխանելու համար: Սա կարևոր է, եթե օգտատերը ընտրի մեկ այլ պատկեր մինչև նախորդ աշխատանքի ավարտը: Ինտերֆեյսը պետք է խուսափի հին արդյունքի ցուցադրումից նոր աղբյուրի վրա:
Պատկերի տվյալների պատճենում և փոխանցում
Փոքրիկ տեքստային հաղորդագրություն ուղարկելը էժան է: Միլիոնավոր պիքսելային արժեքներ ուղարկելը կարող է թանկ արժենալ, եթե զննարկիչը պետք է պատճենի ամբողջ բուֆերը: Վեբ API-ները կարող են փոխարենը փոխանցել որոշակի երկուական բուֆերների սեփականությունը: Փոխանցված բուֆերը հասանելի է դառնում ստացողի համար՝ չպահպանելով օգտագործվող կրկնօրինակը ուղարկողի կողմից:
Այդ օպտիմիզացիան գալիս է դիզայնի սահմանափակումով. փոխանցումից հետո ուղարկողը չի կարող շարունակել օգտագործել նույն բուֆերը, կարծես թե դեռ տիրապետում է տվյալներին: Խմբագիրը կարող է պահպանել առանձին ցուցադրման ներկայացում, ստեղծել հատուկ եզրակացության բուֆեր կամ վերակառուցել այն, ինչ իրեն անհրաժեշտ է հետագայում:
Ամեն իրականացում չէ, որ օգտագործում է փոխանցում հենց նույն վայրերում: Ընդհանուր դասն այն է, որ թելերի բաժանումը չի հանգեցնում տվյալների շարժման անհետացմանը: Պատկերի չափերը, բուֆերի չափը և փոխակերպումների քանակը դեռևս ազդում են հետաձգման և հիշողության վրա:
Ինչ է Easy Background Remover-ը դնում բանվորի մեջ
Easy Background Remover-ն օգտագործում է Web Worker-ը՝ բրաուզերի եզրակացության գործարկման ժամանակով՝ սարքի հատվածավորման համար: Ծանր ավտոմատ անջատման քայլը ստեղծում է դիմակ: Այնուհետև խմբագրիչը ցուցադրում է բաղադրյալ արդյունքը և աջակցում է պրոցեսորի կտավի վրձինների ճշգրտումը:
Այս տարանջատումը ձախողումներին տալիս է ավելի օգտակար սահման: Եթե աշխատողը չի կարող նախաստորագրվել կամ խափանում է եզրակացության ընթացքում, ինտերֆեյսը կարող է հաղորդել աշխատողի հետ կապված սխալ՝ որպես միակ ազդանշան հենվելու մշտապես սառեցված ներդիրի վրա:
Այն նաև հասկանալի է պահում տեղական վերամշակման պահանջը: Ընդլայնման էջից պիքսելներ ուղարկելը սեփական աշխատակցին հաղորդակցություն է դիտարկիչի միջավայրում, այլ ոչ թե վերբեռնում հեռավոր անջատման API: Առաջին նիստը կարող է առանձին ներբեռնել բազմակի օգտագործման մոդելի ակտիվը. տես Ինչու առաջին անգամ գործարկել մոդելի ներբեռնումը:
Աշխատողը ակնթարթային հաշվարկ չի անում
Աշխատողները բարելավում են արձագանքման ունակությունը, այլ ոչ թե հում սարքի հնարավորությունները: Մոդելը դեռ սպառում է CPU, GPU կամ գործարկման այլ ռեսուրսներ՝ ըստ զննարկչի տրամադրածի: Մեծ մուտքագրումը դեռ կարող է ավելի երկար տևել և ավելի շատ հիշողություն պահանջել, քան փոքրը:
Մնացել են մի քանի սահմաններ.
- մոդելի սկզբնավորումն ունի իրական արժեք.
- պիքսելային բուֆերները կրկնօրինակման դեպքում երկու կողմից էլ հիշողություն են զբաղեցնում.
- չափափոխումը և ձևաչափի փոխարկումը ժամանակ են պահանջում.
- ցածր հիշողության սարքերը կարող են պայքարել մեծ պատկերների հետ.
- ավելի շատ աշխատողներ կարող են մեծացնել վեճը՝ այն նվազեցնելու փոխարեն.
- արտահանման և կտավի թարմացումները դեռ կարող են ներառել հիմնական թեման:
Հինգ պատկերի համար հինգ եզրակացության աշխատող սկսելը ինքնաբերաբար հինգ անգամ ավելի արագ չէ: Աշխատողները կիսում են նույն մեքենան։ Զուգահեռ աշխատանքները կարող են մրցակցել հիշողության թողունակության և կատարման ռեսուրսների համար, մինչդեռ յուրաքանչյուր մոդելի օրինակ կարող է կրել իր հիշողության արժեքը:
Առաջընթացի հաշվետվությունը համագործակցային է
Աշխատակիցը կարող է ուղարկել կարգավիճակի հաղորդագրություններ, բայց ինքնաբերաբար չգիտի, թե առաջընթացի որ տոկոսն է ճշգրիտ: Մոդելի ներբեռնումը, գործարկման ժամանակի սկզբնավորումը, մուտքագրման պատրաստումը, եզրակացությունը, դիմակի փոխարկումը և նախադիտման ցուցադրումը առանձին փուլեր են՝ տարբեր ժամկետներով:
Որոշ փուլեր ունեն բայթերի չափելի քանակ: Մեկ մոդելի կատարումը կարող է բացահայտել միայն «սկսված» և «ավարտված»: Հետևաբար, սահուն տոկոսը, որը առաջադիմում է միատեսակ, կարող է ավելի շուտ կոսմետիկ լինել, քան ճշգրիտ չափում:
Օգտակար առաջընթացի UI-ն անվանում է փուլը, երբ դա հնարավոր է՝ մոդելի պատրաստում, պատկերի մշակում կամ կառուցման արդյունք: Այն նաև կարգավորում է ձախողումը և չեղարկումը, այլ ոչ թե մանողին առանց բացատրության թողնելու:
Չեղարկումն ավելին է, քան մանողին թաքցնելը
Եթե օգտատերը փակում է պատկերը կամ սկսում է նորից, ինտերֆեյսը կարող է անտեսել հնացած հարցման վերջնական պատասխանը: Հիմնական հաշվարկների անհապաղ դադարեցումը կարող է պահանջել լրացուցիչ աջակցություն գործարկման ժամանակից կամ աշխատողի դադարեցումը և վերստեղծումը:
Աշխատողին դադարեցնելը որոշիչ է, բայց այն մերժում է դրա սկզբնավորման վիճակը: Հաջորդ աշխատանքը կարող է նորից բեռնել և նախաստորագրել մոդելը: Կարճ գործողության համար հնացած արդյունքի նշումը կարող է ավելի էժան լինել, քան ամեն ինչ քանդելը:
Ճիշտ ընտրությունը կախված է հիշողության ճնշումից, շահագործման տևողությունից և գործարկման հնարավորություններից: Օգտագործողի տեսանկյունից կարևոր կանոնն այն է, որ հնացած աշխատանքը չպետք է վերագրի ընթացիկ խմբագրումը:
Սխալները նույնպես պետք է անցնեն սահմանը
Աշխատողի ներսում բացառությունը չի դառնում սովորական հիմնական շղթայի բացառություն: Աշխատողը պետք է զեկուցի օգտագործելի սխալներ, և խմբագիրը պետք է լսի աշխատողի մակարդակի ձախողումները:
Սխալների լավ մշակումը առանձնացնում է առնվազն.
- մոդելային ակտիվն անհասանելի է.
- մոդելի սկզբնավորումը ձախողվեց;
- պատկերի վերծանումը կամ մուտքագրման պատրաստումը ձախողվեց.
- եզրակացությունը ձախողվեց;
- աշխատողը անսպասելիորեն կանգ է առել.
- արդյունքն այլևս չի պատկանում ընթացիկ հարցումին:
Սա ավելի կիրառելի է, քան ընդհանուր «ինչ-որ բան սխալ է տեղի ունեցել», հատկապես, երբ առաջին գործարկման կարգավորումը և պատկերի նորմալ մշակումն ունեն տարբեր միջոցներ:
Աշխատողների արդյունքը դեռ միայն առաջին դիմակն է
Թեմաների ճարտարապետությունը ինքնին չի բարելավում երկիմաստ եզրը: Աշխատողը կարող է վերադարձնել տեխնիկապես վավեր դիմակ, որը դեռ բացակայում է մորթուց, թափանցիկ նյութից, նեղ ժապավեններից կամ ցանկալի ստվերից: Դրանք սեգմենտավորման և մտադրության հարցեր են:
Խմբագրի աշխատանքը վերսկսվում է եզրակացությունից հետո. մասշտաբավորել դիմակը աշխատանքային կոորդինատների համակարգում, նախադիտում կազմել, թույլ տալ օգտվողին կատարելագործել այն և արտահանել ներկայիս վիճակը: Դիմակի լուծումն ընդդեմ նախադիտման չափի բացատրում է, թե ինչու չպետք է շփոթել այդ կոորդինատային համակարգերը:
Համառոտ մտավոր մոդել
Մտածեք աշխատողին որպես տեղացի մասնագետ հաղորդագրության պատուհանի հետևում.
- խմբագրին է պատկանում փոխազդեցությունը.
- աշխատողին է պատկանում ծանր եզրակացության առաջադրանքը.
- երկուական պատկերի տվյալները հատում են սահմանված սահմանը.
- աշխատողը վերադարձնում է դիմակ, ոչ թե ավարտված դատողություն յուրաքանչյուր եզրի մասին.
- խմբագիրը պատասխանատու է ընթացիկ վիճակի, վերանայման, ճշգրտման և արտահանման համար:
Մոդելի կողմից պիքսելների պատկերը տեսնելու համար շարունակեք [What an on-device cutout model sees]-ով (/what-an-on-device-cutout-model-sees/): Գործնական ակնարկի համար տե՛ս Ինչպես է աշխատում տեղական ֆոնի հեռացումը: