Czy można trenować sieć neuronową, aby rysować obraz w określonym stylu?

10

Czy można trenować sieć neuronową, aby rysować obraz w określonym stylu? (Więc pobiera obraz i przerysowuje w stylu, dla którego został wytrenowany).

Czy istnieje zatwierdzona technologia dla tego rodzaju rzeczy? Wiem o algorytmie DeepArt. Dobrze jest wypełnić główny obraz pewnym wzorem (na przykład obraz vangoghify), ale szukam czegoś innego - na przykład zrobienia kreskówki w pewnym stylu z portretu wejściowego.

zavg
źródło
3
Jedną z przeszkód w szkoleniu sieci neuronowej typu fotografia-kreskówka może być znalezienie zestawu danych szkoleniowych. Wygląda na to, że zestaw danych musiałby zawierać zdjęcia i rysunki, które ludzie narysowali na podstawie tych zdjęć. Nie znam takich zestawów danych.
Tanner Swett
@TannerSwett Jak myślisz, ile zdjęć jest potrzebnych do tego rodzaju treningu?
zavg
Nie jestem ekspertem, więc mogę tylko zgadywać. Myślę, że potrzebujesz co najmniej tysiąca zdjęć. Możesz potrzebować dużo więcej. Nawiasem mówiąc, sugeruję spojrzenie na to narzędzie: github.com/hardmaru/sketch-rnn To narzędzie zostało użyte do generowania imitacji chińskich znaków; może podobne narzędzie może generować imitacje kreskówek.
Tanner Swett
Mogę być trochę nieaktualny, ponieważ moje szkolenie NN było jakiś czas temu, ale jeśli myślisz o szkoleniu sieci z kilkoma tysiącami obrazów i oczekujesz, że będzie w stanie renderować obrazy w stylu, możesz sięgać za daleko - jeśli uważasz, że jest to dobry projekt początkowy, nie rób tego. Osiągnięcie tego, co opisujesz, wymagałoby „dużo” ręcznego majstrowania. Pomyśl o wiedzy wymaganej do interpretacji obrazu, a nie tylko dopasowania wzoru.
Peter Scott
Warto również spojrzeć na vox.com/2016/6/1/11787262/blade-runner-neural-network-encoding
Peter Scott

Odpowiedzi:

12

Istnieje odpowiedni artykuł: LA Gatus, AS Ecker, M Bethge, 2015, A Neural Algorytm of Artistic Style . Cytowanie z streszczenia

Przedstawiamy sztuczny system oparty na Deep Neural Network, który tworzy artystyczne obrazy o wysokiej jakości percepcji. System wykorzystuje reprezentacje neuronowe do oddzielania i rekombinacji treści i stylu dowolnych obrazów, zapewniając algorytm neuronowy do tworzenia obrazów artystycznych.

Oto rysunek 2 z tego artykułu:

wprowadź opis zdjęcia tutaj

Istnieje również bardzo popularna implementacja typu open source oparta na latarce , która jest dość łatwa w użyciu. Zobacz link, aby uzyskać więcej przykładów.

Należy pamiętać, że obliczenia są ciężkie i dlatego przetwarzanie pojedynczych obrazów jest przedmiotem tej pracy.

Edycja: po sprawdzeniu wspomnianego projektu DeepArt wydaje się, że używa tych samych technik. Nie jestem pewien, dlaczego nie tego chcesz, ponieważ koncepcja przenoszenia stylu jest tak ogólna, jak to tylko możliwe.

sascha
źródło
4
Kreskówki wyolbrzymiają i upraszczają cechy tego, co przedstawiają, tworząc kształty, które bardzo różnią się od kształtów na zdjęciu. Nie wierzę, że istniejące sieci neuronowe przenoszące styl kiedykolwiek to zrobiły.
Tanner Swett
@TannerSwett Spójrz na przykłady tutaj: imgur.com/a/ue6ap . Niektóre z nich są dość kreskówkowe.
ameba
@amoeba Wyglądają na kreskówkowe, tak, ale żaden z nich nie ma zniekształconych proporcji, jakie ma większość prawdziwych kreskówek.
Tanner Swett,
Mówimy tutaj o zmianie stylu. We wszystkich przykładach zastosowano styl wybrany z góry, w którym żaden z nich nie był kreskówkowy (dlaczego wynik miałby wyglądać kreskówkowo, gdy nauczył się na Van Gogh). Może mógłbyś po prostu uruchomić projekt open source (nie miałem żadnych problemów w przeszłości) i wypróbować go przy użyciu komiksowego wkładu.
sascha
7

Jest to dość trudny problem do rozwiązania. Możesz zobaczyć kilka przykładów, w jaki sposób styl kreskówkowy, np. Z Simpsona, został zastosowany do obrazu.

Obraz w kreskówce na ogół nie ma struktury, która daje ten efekt artystyczny . Najłatwiejszym sposobem na zastosowanie tego w jakiś sposób byłoby posiadanie narzędzia do śledzenia twarzy, a następnie próba wyrównania dwóch twarzy, np. Twarzy z kreskówki i ludzkiej, a następnie zastosowania. To może cię gdzieś zaprowadzić, ale może również wyglądać dziwnie. Następnie możesz dodać adnotacje do punktów orientacyjnych na obrazach, aby pomóc dalej i dokonać niesztywnej rejestracji przed tym. To nadal jest trochę gówniane rozwiązanie, ale najbliższe, jakie mogę sobie wyobrazić, może zadziałać dla twarzy.

Edytować:

Komentarz @TannerSwett coś do tego dodaje, potencjalnie można przejść na strony niektórych artystów i spróbować znaleźć ich ilustracje i nauczyć się „ich” stylu. Nadal nie uważam, że będzie to zadowalające lub przyniosło wystarczającą ilość danych, ale byłoby to interesujące przetestowanie. Obecnie nie ma ogólnie dostępnego rozwiązania, ale myślę, że zdecydowanie są ludzie, którzy nad tym pracują i wkrótce zobaczymy lepsze wyniki.

Myślę, że być może najlepszą drogą nie jest podejście do artystycznej sieci neuronowej. Być może lepiej jest mieć sieć, która może klasyfikować obiekty na obrazie, a następnie uczyć się zgodności między obiektami i ich odpowiednikami z kreskówek, a następnie mieszać wyniki w jakiś znaczący sposób.

Gumeo
źródło
1
Ten przykład Simpsona wygląda dla mnie niesamowicie @Gumeo
FabricioG
1

Nie powinno to być zbyt skomplikowane. Nie przeczytałem wspomnianego artykułu, oto mój przepis:

Automatyczne enkodery wariacyjne

Demo online z morfingowymi twarzami: http://vdumoulin.github.io/morphing_faces/online_demo.html

oraz https://jmetzen.github.io/2015-11-27/vae.html dla kodu.

Zasadniczo daje to sposób na sparametryzowanie „stylu” w twoim przypadku, na przykład powiedzmy, jak szeroki lub niewyraźny powinien być pociągnięcie pędzla. Rzeczy, które zależą od konkretnego stylu, który próbujesz naśladować.

W powyższym przykładzie różne „zmienione” lub „wyobrażone” twarze są funkcją parametrów w utajonej przestrzeni. Na poniższym obrazku byłoby to, co otrzymujesz, zmieniając rzeczy na poziomie „kodu”.

Oto podstawowa idea: oryginalny obraz po lewej, stylizowana wersja tego samego obrazu po prawej:

wprowadź opis zdjęcia tutaj

Teoretycznie, jeśli trenujesz taki model na normalnym obrazie i stylizowanym obrazie jako cel i dodajesz sploty, powinieneś być w stanie nauczyć się filtrów jądra, które odpowiadają rodzajowi „pociągnięć pędzla”, których używa artysta .

Oczywiście oznacza to, że musisz mieć kilka przykładów obrazów zarówno w oryginalnych, jak i stylizowanych wersjach. Taki zestaw danych byłby miły dla społeczności - jeśli to zrobisz, bardzo chętnie zobaczę tego rodzaju pracę.

Powodzenia!

Artykuł wiki na temat koderów automatycznych byłby dobrym punktem wyjścia: https://en.wikipedia.org/wiki/Autoencoder

shuriken x niebieski
źródło