paint-brush
Դեմքի տվյալների ավելացում - Մաս 1. Երկրաչափական փոխակերպումկողմից@ainur
282 ընթերցումներ

Դեմքի տվյալների ավելացում - Մաս 1. Երկրաչափական փոխակերպում

կողմից Ainur Gainetdinov3m2024/10/27
Read on Terminal Reader

Չափազանց երկար; Կարդալ

Խորը նեյրոնային ցանցերի կատարումը մեծ առաջընթաց կատարեց վերջին երկու տասնամյակների ընթացքում։ Ամեն տարի ստեղծվում են նոր ճարտարապետություններ, որոնք գերազանցում են ժամանակակից արդյունքները: Այնուամենայնիվ, միայն ճարտարապետության բարելավումը չի աշխատի առանց որակյալ տվյալների բազայի: Տվյալների հավաքածուն մեծ ազդեցություն ունի վերջնական կատարողականի վրա: Տարբեր, ճշգրիտ տվյալների հավաքածուները հավաքելը և պիտակավորելը կարող է աշխատատար և թանկ լինել, և առկա տվյալների հավաքածուները սովորաբար չեն ընդգրկում իրական տվյալների բաշխման ողջ բազմազանությունը, ուստի օգտագործվում են տվյալների ավելացման տեխնիկա:
featured image - Դեմքի տվյալների ավելացում - Մաս 1. Երկրաչափական փոխակերպում
Ainur Gainetdinov HackerNoon profile picture

Խորը նեյրոնային ցանցերի կատարումը մեծ առաջընթաց կատարեց վերջին երկու տասնամյակների ընթացքում։ Ամեն տարի ստեղծվում են նոր ճարտարապետություններ, որոնք գերազանցում են ժամանակակից արդյունքները: Այնուամենայնիվ, միայն ճարտարապետության բարելավումը չի աշխատի առանց որակյալ տվյալների բազայի: Տվյալների հավաքածուն մեծ ազդեցություն ունի վերջնական կատարողականի վրա: Տարբեր, ճշգրիտ տվյալների հավաքածուները հավաքելը և պիտակավորելը կարող է աշխատատար և ծախսատար լինել, և առկա տվյալների հավաքածուները սովորաբար չեն ընդգրկում իրական տվյալների բաշխման ողջ բազմազանությունը, ուստի օգտագործվում են տվյալների ավելացման մեթոդներ:


Այս հոդվածում ես ցույց կտամ, թե ինչպես կարելի է մարդկային դեմքերի ձեր տվյալների հավաքածուն հարստացնել 3D երկրաչափության փոխակերպմամբ՝ ձեր մոդելի արդյունավետությունը բարելավելու համար: Բաց կոդով կոդի ներդրումը ներկայացված է ստորև[1]:


Տվյալների ավելացումը տեխնիկա է, որը մեծացնում է տվյալների քանակը՝ կիրառելով տարբեր փոփոխություններ նմուշների վրա: Ընդհանուր պատկերի մեծացումը կարելի է բաժանել երկու կատեգորիայի՝ երկրաչափական փոխակերպումներ և գունային փոխակերպումներ: Երկրաչափական փոխակերպումները բաղկացած են մասշտաբից, կտրումից, շրջվելուց, պտտումից, թարգմանությունից և այլն: Մինչդեռ գունային փոխակերպումները բաղկացած են գունային ցնցումից, աղմուկի ավելացումից, մոխրագույն մասշտաբից, պայծառության/կոնտրաստի ճշգրտումից և այլն:


Եկեք մտածենք, թե ինչպես կարող ենք մեծացնել պատկերը, եթե գիտենք, որ կա մարդու դեմք: Ինչպե՞ս ենք մենք տարբերում մեկ մարդուն մյուսից: Կան դեմքի առանձնահատկություններ, որոնք կազմում են ինքնությունը, ինչպիսիք են մաշկի գույնը, դեմքի ձևը, սանրվածքը, կնճիռները, աչքերի գույնը և այլն: Ամենատարբերակվողներից մեկը դեմքի ձևն է:


Այսպիսով, եթե մենք փոխենք մուտքագրված դեմքի պատկերի ձևը, այն մի փոքր այլ մարդ կլինի վարժեցվող մոդելի համար: Այսպիսով, եկեք օգտագործենք այս հատկությունը մեր տվյալների բազան մեծացնելու համար:


Մենք կփոխենք դեմքի երկրաչափությունը՝ օգտագործելով 3D Morphable Model (3DMM), մասնավորապես FLAME[2] մոդելը: 3DMM-ը եռաչափ ցանց է, որն ունի իր ձևը, դիրքը և արտահայտությունը կառավարելու պարամետրեր: 3DMM-ը կառուցված է իրական մարդկանց կողմից գրանցված եռաչափ ցանցերից:


Այսպիսով, այն կարող է ներկայացնել իրական դեմքի ձևերի բաշխումը: Կափարիչի տակ այն բաղկացած է միջին ձևից և մի շարք հիմնական բաղադրիչներից, որոնք նշում են ձևի և արտահայտման փոփոխության ուղղությունները: Ալֆան և բետա-ն մոդելի պարամետրերն են:


Նախքան դեմքի ձևը փոխելը, մենք պետք է գտնենք 3DMM-ի պարամետրերը, որոնք համապատասխանում են մեր մուտքագրված լուսանկարին: Դա անելու համար կան մի քանի մեթոդներ, ինչպիսիք են ուղենիշների օպտիմիզացումը, ֆոտոմետրիկ օպտիմալացումը կամ ռեգրեսիոն մոդելները՝ պարամետրերը մեկ քայլով կանխատեսելու համար: Ես օգտագործել եմ 2D ուղենիշների օպտիմալացում, քանի որ այն ունի պարզ իրականացում և տալիս է ճշգրիտ արդյունքներ ողջամիտ ժամանակում:


Dlib դեմքի հայտնաբերման մոդելով մուտքագրված պատկերի վրա հայտնաբերվել են դեմքի ուղենիշներ: Ադամի օպտիմիզացման ալգորիթմն օգտագործվել է MSE կորստի հետ՝ ուղենիշների համար՝ 3DMM-ը դեմքի պատկերին տեղավորելու համար: Միավորվելու համար պահանջվեց մոտ 150 կրկնություն:


Այժմ մենք պատրաստ ենք փոփոխել դեմքի երկրաչափությունը: Առաջին հերթին, մենք արդեն ունենք եռաչափ ցանց, որը համահունչ է մեր դեմքի պատկերին: 3DMM-ի ձևի պարամետրերի փոփոխությունը հանգեցնում է պատկերի տարածության ցանցի գագաթների տեղաշարժի: Իմանալով, որ տեղաշարժերը, մենք կարող ենք օգտագործել այն պատկերի պիքսելները տեղափոխելու համար:


Տեղաշարժերի խիտ քարտեզ ստանալու համար ես օգտագործեցի OpenGL գրադարանը, որտեղ գագաթային գույնի փոխարեն ես ցուցադրեցի 3DMM ցանց՝ տեղաշարժերով x և y ուղղություններով: Մնում է հաշվի առնել մի բան, թե ինչպես վարվել պիքսելների հետ, որոնք դուրս էին դեմքի ցանցից:


Այդ նպատակով ես օգտագործեցի էքստրապոլացիա, որը սահուն կերպով միացնում է փոխված դեմքը ստատիկ ֆոնի հետ։ Քանի դեռ մենք ունենք խիտ տեղաշարժերի քարտեզներ x և y ուղղությունների համար, մենք կարող ենք դրանք կիրառել ցանկացած տեսակի պիտակի վրա, ինչպիսիք են դեմքի ուղենիշները, հատվածավորման դիմակները կամ զուգակցված պատկերները: Ստորև բերված նկարում կարող եք տեսնել երկրաչափական փոխակերպմամբ դեմքի մեծացման օրինակներ: Եթե ցանկանում եք ավելի շատ մանրամասներ իմանալ, ես ձեզ հրավիրում եմ սկզբնական կոդը[1]:



Այժմ դուք կարող եք փորձել այն ձեր տվյալների հավաքածուներում: Ավելացման այս տեխնիկան կօգնի ձեզ կատարելագործել մոդելը՝ այն կայուն դարձնելով մուտքային տատանումների նկատմամբ: Այս հոդվածում մենք իմացանք 3D երկրաչափական վերափոխման մասին, բայց բացի դրանից, կան հյուսվածքային փոփոխություններ, որոնք դեմքերի տվյալների հավաքածուների հետագա բարելավումներ են, որոնք հաջորդ հոդվածում:


Հղումներ

[1] GitHub կոդը. https://github.com/ainur699/face_data_augmentation

[2] FLAME մոդել. https://flame.is.tue.mpg.de/index.html