AI

Generowanie zdjęć profilowych za pomocą deep learningu

Czy nie potrzebowaliście kiedyś profesjonalnego zdjęcia biznesowego, ale nie mieliście czasu go zrobić? Z użyciem dzisiejszych technologii uczenia głębokiego (ang. deep learning) jest to możliwe za pomocą jednego kliknięcia. W tym artykule prezentujemy metodę, która konwertuje zwykłe selfie na zdjęcie biznesowe z użyciem modelu CycleGAN – generatywnego modelu uczenia głębokiego.


Maciej Zamorski. Na co dzień jest doktorantem na Politechnice Wrocławskiej, gdzie zajmuje się rozwojem metod uczenia głębokiego, w szczególności skupiając się na technikach nienadzorowanych. Uczeniem maszynowym zajmuje się od ponad 3 lat, bierze udział w projektach badawczych i komercyjnych, współpracuje m.in. z firmami Alphamoon i Tooploox.

Adam Gonczarek. Uczeniem maszynowym zajmuje się od 10 lat. W 2013 roku obronił w tej tematyce doktorat na Politechnice Wrocławskiej. Prowadził projekty badawcze i komercyjne. Współzałożyciel i Chief Technology Officer w Alphamoon – polskiej firmie świadczącej usługi z zakresu AI i uczenia maszynowego. Autor publikacji naukowych, m.in. na warsztatach na konferencjach NIPS i ICML.


Generative Adversarial Networks

Generatywne modele uczenia głębokiego (ang. deep generative models) są technikami, które pozwalają w sposób nienadzorowany uczyć się wektorowych reprezentacji dla skomplikowanych danych nieustrukturyzowanych, jak obrazy, dźwięk czy tekst. Następnie na podstawie wyuczonej reprezentacji są w stanie syntezować nowe dane, które nie zostały użyte w procesie uczenia. Generative Adversarial Networks (GANs) są wśród nich najpopularniejszą grupą metod i zarazem wiodącą, jeśli chodzi o jakość.

Podstawowa idea GANów polega na zastosowaniu dwóch sieci neuronowych — generatora i dyskryminatora, których proces uczenia polega na doskonaleniu się w przeciwstawnych zadaniach. Generator stara się generować dane, które swoim wyglądem przypominają dane z ciągu treningowego, jednak bez bezpośredniego dostępu do prawdziwych danych uczących. Zadaniem generatora jest oszukać dyskryminator, aby nie był w stanie odróżnić syntetycznych przykładów od prawdziwych. Z kolei dyskryminator uczy się jak najlepiej odróżniać przykłady wygenerowane od rzeczywistych.

Podczas procesu uczenia dwa modele wzajemnie ze sobą konkurują, co prowadzi do iteracyjnej poprawy jakości obu z nich. Końcowym efektem jest uzyskanie dwóch modeli, gdzie jeden generuje nowe przykłady o wysokiej jakości, a drugi dzięki dobrym zdolnościom dyskryminacyjnym może być wykorzystany jako ekstraktor cech do zadań klasyfikacji czy grupowania. Na poniższym rysunku przedstawione zostały syntetyczne obserwacje uzyskane przy pomocy GANa nauczonego na zbiorze zdjęć sypialni.

Źródło: Radford, Alec, et. al.,Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

CycleGAN

W 2017 roku Jun-Yan Zhu i Taesung Park z Uniwersytetu Kalifornijskiego w Berkeley opublikowali interesującą ideę rozszerzenia modelu GAN – tzw. CycleGAN. W celu zobrazowania tej techniki wyobraźmy sobie, że mamy przykładowo obraz namalowany farbą olejną i chcielibyśmy uzyskać z niego fotorealistyczne zdjęcie, albo mamy zdjęcie zebry i chcielibyśmy zamienić ją na konia, lub też mamy zdjęcie krajobrazu latem, a chcielibyśmy uzyskać ten sam krajobraz zimą. Autorzy prezentują swoje wyniki w tym artykule, gdzie stosują opracowany model do różnego rodzaju transformacji przedstawionych na rysunku poniżej, dowodząc tym samym dużego potencjału i wysokiej jakości działania metody dla różnorodnej grupy problemów.

Przykłady transformacji wygenerowanych za pomocą CycleGAN (źródło)

Ponadto, w suplemencie do publikacji autorzy pokazali, że udało im się pomyślnie zastosować ich metodę do krótkich sekwencji wideo, gdzie biegnący koń jest z powodzeniem transformowany do zebry.

Transformacja sekwencji wideo przy pomocy CycleGAN (źródło)

Pojawienie się modelu CycleGAN zostało entuzjastycznie przyjęte w środowisku naukowym i różne zespoły badawcze rozpoczęły eksperymentowanie z tą techniką, tworząc kolejne ciekawe zastosowania. Wśród wielu przykładów wyszczególnionych na stronie autorów warto wspomnieć o:

  • Tworzeniu map w stylu Google’a na podstawie map historycznych

Źródło: Resurrecting Ancient Cities by Jack Clark

  • Zmiana koloru futra u zwierząt

Źródło: Animal Transfiguration by Tatsuya Hatanaka

  • Generowanie lalek na podstawie ludzkiej twarzy

Źródło: Mario Klingemann

Jak to działa?

Dane

Rysunek z publikacji o CycleGAN

Największą zaletą modelu CycleGAN jest fakt, że w procesie uczenia, w przeciwieństwie do poprzednich popularnych modeli do transformacji stylu zdjęcia, nie wymaga on par obrazów wejście-wyjście, gdzie podajemy wygląd zdjęcia przed i po transformacji. W oryginalnej implementacji CycleGANa zbiory treningowe zostały utworzone poprzez wybieranie obserwacji z dwóch różnych klas z popularnego zbioru ImageNet. W ten sposób autorzy otrzymywali dwa niepowiązane zbiory, które były wystarczające na potrzeby nauczenia modelu. Należy podkreślić, że dzięki tej własności technika ta otworzyła zupełnie nowe możliwości, gdyż przygotowanie par wejściowo-wyjściowych dla wielu zastosowań jest po prostu niemożliwe.

Architektura

Architektura modelu CycleGAN (źródło)

Żeby zrozumieć jak działa CycleGAN, wyobraźmy sobie, że chcemy przekształcić obraz należący do zbioru A w obraz ze zbioru B. Najpierw wywołujemy generator A2B dla przykładu z A (na rysunku oznaczonego jako Input_A), który transformuje obraz tak, by wyglądem przypominał obraz ze zbioru B. Następnie wygenerowany obraz (Generated_B) jest z powrotem transformowany do zbioru A z użyciem generatora B2A. W ten sposób wymuszamy spójność pomiędzy generatorami i unikamy sytuacji, gdzie generator wyrzuca istotne informacje z obrazu, zastępując je losowymi wartościami.

Jednocześnie generatory trenujemy tak, aby iteracyjnie doskonaliły swoje możliwości, stosując podstawowy schemat generator-dyskryminator. Rzeczywiste i wygenerowane przykłady ze zbiorów A i B są odpowiednio brane jako wejście do dyskryminatorów A i B, które uczą się rozróżniać pomiędzy prawdziwymi i syntetycznymi obrazami. Dzięki temu generatory uczą się generować dane, które wyglądem są zbliżone do rzeczywistych przykładów ze zbiorów A i B. Podobnie jak w przypadku podstawowego modelu GAN, proces uczenia CycleGANa możemy postrzegać jako grę pomiędzy generatorami i dyskryminatorami, gdzie generatory starają się oszukać dyskryminatory, podając im obrazy zbliżone do prawdziwych, natomiast dyskryminatory starają się to wykryć.

CycleGAN do generowania zdjęć biznesowych

Pokażemy teraz jak w oparciu o model CycleGAN stworzyliśmy aplikację, która zamienia zwykłe selfie, gdzie osoba jest w codziennym ubraniu, na zdjęcie w stroju biznesowym. Podejście do tego problemu wymagało przygotowania odpowiedniego zbioru danych i kilku modyfikacji w oryginalnym modelu, aby zapewnione były następujące założenia:

  • twarz pozostaje niezmieniona;
  • tło na zdjęciu biznesowym powinno być jednolite;
  • na zdjęciu biznesowym kobieta powinna być ubrana w żakiet, a mężczyzna w garnitur.

Pierwsze dwa założenia osiągnięte zostały poprzez dodanie składnika do funkcji kosztu służącej do uczenia modelu. Składnik bazuje na binarnych maskach, które określają region, w którym występuje twarz na zdjęciu i wprowadza dodatkową karę, jeśli wygląd twarzy się zmienia po przejściu przez generator. Pozostała część zdjęcia, tj. tło i strój jest zmieniana tak, aby oddać charakter zdjęć profesjonalnych. Powoduje to, że model uczy się, że tło powinno być jednolite. Trzecie założenie zostało osiągnięte poprzez zastosowanie uczenia z częściowym nadzorem (semi-supervised approach to train CycleGAN). Dzięki temu dyskryminatory zostały dodatkowo nauczone rozróżniać kobiety i mężczyzn, co spowodowało, że model był zdolny generować prawidłowy kostium w zależności od płci.

Wyniki

Poniżej przedstawione zostało kilka przykładowych transformacji wykonanych stworzoną metodą. Warto zauważyć, że:

  • w pierwszych trzech przykładach wejściowych mamy niejednolite tło. Generator stara się je wygładzić i rozjaśnić;
  • w ostatnim przykładzie zdjęcie wejściowe jest ucięte po bokach. Rezultat wygenerowany przez model ma uzupełnione ramiona;
  • twarze i odcień skóry pozostają niezmienione.

Podsumowanie

W artykule zaprezentowany został model CycleGAN, który pozwala na przekształcenie jednego stylu zdjęcia w inny i nie wymaga przykładów połączonych w pary wejściowo-wyjściowe podczas uczenia. Przedstawione zostało również zastosowanie modelu do zmiany stylu zdjęcia z nieformalnego selfie na zdjęcie biznesowe, gdzie nacisk położony został na dobór odpowiedniego stroju w zależności od płci oraz zachowanie twarzy w możliwie niezmienionej postaci.

najwięcej ofert html

Podobne artykuły

[wpdevart_facebook_comment curent_url="https://justjoin.it/blog/generowanie-zdjec-profilowych-pomoca-deep-learningu" order_type="social" width="100%" count_of_comments="8" ]