Խորը նեյրոնային ցանցերի կատարումը մեծ առաջընթաց կատարեց վերջին երկու տասնամյակների ընթացքում։ Ամեն տարի ստեղծվում են նոր ճարտարապետություններ, որոնք գերազանցում են ժամանակակից արդյունքները: Այնուամենայնիվ, միայն ճարտարապետության բարելավումը չի աշխատի առանց որակյալ տվյալների բազայի: Տվյալների հավաքածուն մեծ ազդեցություն ունի վերջնական կատարողականի վրա: Տարբեր, ճշգրիտ տվյալների հավաքածուները հավաքելը և պիտակավորելը կարող է աշխատատար և ծախսատար լինել, և առկա տվյալների հավաքածուները սովորաբար չեն ընդգրկում իրական տվյալների բաշխման ողջ բազմազանությունը, ուստի օգտագործվում են տվյալների ավելացման մեթոդներ:
Այս հոդվածում ես ցույց կտամ, թե ինչպես կարելի է մարդկային դեմքերի ձեր տվյալների հավաքածուն հարստացնել 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 կոդը.
[2] FLAME մոդել.