partner serwisu

Google DeepDream - sieci neuronowe, maszynowa incepcja i sztuka generowana przez komputery

Google DeepDream - sieci neuronowe, maszynowa incepcja i sztuka generowana przez komputery
Autor:
Marek Kowalski
Data publikacji:
23 grudnia 2015, 12:03
Średnia ocena:
Twoja ocena:
Tagi:
android, app store, deep machine learning, deepdream, google, google play, ios, konwolucyjne sieci neuronowe, pikazo, sieci neuronowe, sieć neuronowa, uczenie maszynowe

Czy komputer może tworzyć dzieła sztuki? Zdaniem naukowców pracujących w laboratoriach Google, twórców "artystycznej sieci neuronowej", znanej też pod nazwą DeepDream, jak najbardziej może. Cały projekt DeepDream to fascynująca podróż po maszynowej percepcji. Czy zastanawialiście się kiedykolwiek, jak komputer "widzi" świat? Oczywiście tak, jak każemy mu go widzieć. Prawda? Niezupełnie. Zastosowanie sieci neuronowych w połączeniu z algorytmami sztucznej inteligencji i mechanizmami głębokiego uczenia maszynowego zaowocowały powstaniem rozwiązania, które nie "widzi" tak ,jak człowiek mu każe. Maszyna sama zbudowała swój własny sposób postrzegania i prezentowania rzeczywistości. Czy to jest interesujące? Nawet bardzo, bo w podobny sposób my sami uczymy się percepcji otaczającego nas świata. Wiemy jak świat postrzegali tacy wielcy mistrzowie jak Van Gogh, Picasso, Dürer, Degas, Munch, Monet, Vermeer, van Eyck czy Dali. Czy maszyna może w równie wyrafinowany artystycznie sposób "postrzegać" rzeczywistość? Tak.

W połowie 2015 roku na oficjalnym blogu Google Research, działu badawczego wyszukiwarkowego i internetowego potentata, pojawił się wpis autorstwa trzech inżynierów oprogramowania: Alexandra Mordvintseva, Christophera Olaha oraz Mike'a Tyka, którzy rozwiązując jeden problem odkryli coś niezwykle interesującego - sztukę generowaną przez komputer.

Celem inżynierów Google'a było opracowanie narzędzi wizualnych, które ułatwiałyby zrozumienie sposobu działania sieci neuronowych i metody ich autorozwoju (w tzw. procesie uczenia maszynowego i głębokiego uczenia maszynowego). Niektórym może się to wydać cokolwiek dziwne, przecież w informatyce pojęcie sieci neuronowej istnieje od dawna, ba - sama koncepcja sztucznych sieci neuronowych jako matematycznego modelu przetwarzania informacji inspirowanego działaniem naturalnych neuronów i synaps jest niemal tak stara, jak komputery w ogóle. Najprostsza sieć neuronowa, czyli pojedynczy tzw. perceptron progowy, została opracowana przez McCullocha i Pittsa już w 1943 roku. Niemniej z sieciami neuronowymi, choć stanowią one coraz bardziej istotny element współczesnych narzędzi przetwarzania danych związanych ze sztuczną inteligencją, jest pewien problem. Potrafimy ich używać i dzięki nim komputery rozumieją nasze gesty, mowę, rozpoznają zdjęcia itp, ale nie jest do końca jasne, w jaki sposób powstaje dany rezultat - innymi słowy jak przebiega "proces myślowy" sztucznej sieci neuronowej. Trójka naukowców Google'a próbując znaleźć odpowiedź na to pytanie odkryła przy okazji coś zupełnie innego. Maszynową sztukę. Jak to w ogóle możliwe?

Program, a sieć neuronowa

Zwykle gdy mamy na myśli program komputerowy, czy ogólnie programowanie komputerów, wyobrażamy sobie przygotowany zawczasu przez programistę zestaw instrukcji, które następnie komputer ma wykonać. Owszem, tak wygląda programowanie w tradycyjnym ujęciu, ale nie jest to jedyny sposób zmuszania maszyn do wykonywania pewnych działań. Klasyczne programowanie jest rozwiązaniem dobrym, gdy człowiek oczekuje konkretnych wyników i wie, w jaki sposób do tych wyników dojść krok po kroku. Jeżeli jednak wynik działania nie jest znany, albo też nie jest nam znana procedura prowadząca do określonych rezultatów, to aby komputer mógł podjąć odpowiednie działania kod programu musi być wygenerowany w zupełnie inny sposób. Jest bardzo wiele przykładów działań, których nie sposób zaprogramować klasycznie. Zwrócił na to uwagę jeden z pionierów komputeryzacji - profesor Uniwersytetu Stanforda, wcześniej pracujący w IBM. O kim mowa? O profesorze Arthurze Samuelu. Już w latach pięćdziesiątych ubiegłego wieku poszukiwał on odpowiedzi na pytanie:  jak nauczyć komputer rzeczy, której samemu się nie potrafi? Rozwiązaniem tego zagadnienia było zbudowanie programu zdolnego do gry w warcaby na poziomie na tyle zaawansowanym, by komputer potrafił wygrać nie tylko ze swoim twórcą, ale i z bardziej wykwalifikowanym graczem. Samuel nie był jakimś wybitnym warcabistą, a jednak opracował program, który w 1962 roku pokonał w tej grze mistrza stanu Connecticut. Ów program nigdy by nie powstał, gdyby nie opracowany przez Samuela nadzwyczaj efektywny algorytm alfa-beta, jeden z podstawowych algorytmów przeszukujących. Co to ma wspólnego z siecią neuronową? Do algorytmów przeszukujących zaliczane są również algorytmy genetyczne, które z kolei wykorzystywane są m.in. do zarządzania populacją sieci neuronowych i uczenia sieci neuronowych. Cechą charakterystyczną wszystkich algorytmów ewolucyjnych jest to, że choć często znakomicie nadają się do rozwiązywania określonych problemów (np. jak nauczyć komputer rozumienia mowy), to tak naprawdę nie wiemy, dlaczego dokładnie dane rozwiązanie działa. Właśnie poszukując przybliżenia odpowiedzi na pytanie "jak myślą sieci neuronowe" naukowcy Google'a stworzyli narzędzie, które prezentując sposób "myślenia" sieci neuronowych pokazuje tak naprawdę komputerowo generowane fantasmagoryczne wizualizacje przywodzące na myśl prace malarskie. To właśnie projekt DeepDream.

DeepDream - obrazy "malowane" przez sieci neuronowe

Dwa tygodnie po publikacji pierwszego wpisu dotyczącego odkrycia, że próba wizualnego odwzorowania sposobu "myślenia" sieci neuronowych prowadzi do wygenerowania obrazów, które przez ludzi mogą być postrzegane jako artystycznie przetworzone, naukowcy Google'a publikują kolejny wpis prezentując przykład kodu wizualizującego sieci neuronowe. Zresztą, zobaczcie sami: 

Górna część powyższej ilustracji to oryginalne zdjęcie, natomiast dolna to wynik przetworzenia oryginalnej fotografii przez DeepDream (aby powiększyć zdjęcie należy kliknąć prawym klawiszem myszki na nim i z menu kontekstowego wybrać polecenie wyświetlenia grafiki w nowej karcie przeglądarki). Warto podkreślić, że program w żaden sposób nie został poinstruowany przez człowieka, że ma wstawiać widoczne budynki czy inne obiekty; cały rezultat wygenerowany jest automatycznie, a to, że na wynikowych obrazach pojawiają się - co prawda w dość fantasmagorycznej formie - rozpoznawalne przez człowieka obiekty, wynika stąd, że sieć neuronowa, której pracę za pomocą DeepDream chciano zwizualizować, zajmuje się w Google rozpoznawaniem, sortowaniem i katalogowaniem zdjęć. Najciekawsze jeszcze przed nami, możecie sami uzyskać fantasmagoryczne obrazy opracowane przez sztuczną inteligencję Google'a. Jak? Np. korzystając z generatora DeepDream działającego online za pośrednictwem przeglądarki lub za pomocą aplikacji mobilnej wykorzystującej DeepDream. Jeżeli jesteś programistą to być może ucieszy cię wiadomość, że Google udostępniło kod DeepDream na otwartej, bezpłatnej licencji. Repozytorium niezbędnych narzędzi odnajdziesz na dedykowanej projektowi DeepDream stronie w popularnym wśród koderów serwisie GitHub.

Deep Dream Generator

Nie trzeba być programistą, aby na własnym komputerze uzyskać artystycznie zmodyfikowane przez sztuczną sieć neuronową zdjęcia. Jeżeli chcesz zobaczyć, jak będą wyglądać twoje fotografie przepuszczone przez sieć neuronową DeepDream, skorzystaj z serwisu Deep Dream Generator.

Serwis Deep Dream Generator obsługuje konta użytkowników, ale chcąc szybko zobaczyć rezultat maszynowej wizualizacji nie trzeba zakładać konta. Wystarczy bezpośrednio z poziomu strony powitalnej wczytać zdjęcie do przeróbki klikając przycisk Upload image.

Niezależnie od rozmiarów przesyłanego do serwisu zdjęcia, które ma być przetworzone przez DeepDream czas oczekiwania na wynik jest zawsze ten sam, w naszym przypadku wynosił 15 sekund. 

A oto wynik działania algorytmu wizualizacyjnego DeepDream. Wygenerowany obraz można pobrać na dysk komputera klikając Download Image. Standardowo obrazy generowane w opisywanym serwisie mają szerokość maksymalnie 1200 pikseli. Jeżeli chcielibyśmy mieć możliwość generowania obrazów w innych rozdzielczościach należałoby najpierw zarejestrować konto (bezpłatnie), ale do tego za chwilę dojdziemy. 

Tymczasem jeszcze wstawiamy oryginał zdjęcia, które w postaci przetworzonej zostało wygenerowane przez Deep Dream Generator.

Bez logowania się do serwisu nie mamy żadnego wpływu na poziom ingerencji algorytmu i sieci neuronowej w obraz. Po kliknięciu przycisku Rare Deep Dreams wyświetlany jest komunikat informujący o możliwości znacznie głębszego przetworzenia wczytywanych ilustracji.

Po zalogowaniu się w opisywanej witrynie podczas generowania obrazów DeepDream możemy zdefiniować tytuł jaki ma być przypisany przetworzonej ilustracji.

Oprócz tego zalogowani użytkownicy po kliknięciu przycisku Settings mogą zmieniać tryb działania sieci neuronowej (sekcja Dream Type), modyfikować rozdzielczość - choć tutaj zastrzeżenie (widoczne na powyższej ilustracji) - przy wybraniu najwyższej dostępnej rozdzielczości wynikowej - Full HD - nie jest możliwe zaaplikowanie tzw. "głębokiej incepcji" do sieci neuronowej co skutkuje znacznie bardziej przetworzonymi wizualizacjami. Ostatnie dwie opcje dotyczą tego, czy wygenerowany obraz ma być dostępny publicznie (będzie widoczny dla każdego odwiedzającego serwis) czy też ma być zachowany jedynie na koncie zalogowanego użytkownika.

Już pojedyncza iteracja (powtórzenie) generowania obrazu z włączoną opcją Deep skutkuje powstaniem obrazu znacznie bardziej przetworzonego w stosunku do standardowych (dostępnych dla niezalogowanych) ustawień opisywanego generatora. Zwróćmy uwagę, że na stronie z wygenerowanym obrazem po zalogowaniu się w serwisie mamy nie tylko polecenie Download, ale również inne przyciski. Warto wypróbować Deeper, czyli polecenie dalszego przetwarzania danej fotografii z zadanymi przez użytkownika ustawieniami.

Widoczny w niebieskim polu komunikat mówi wszytko, generalnie im głębiej przetwarzamy zdjęcie, tym wyraźniej możemy zaobserwować wizualne przejawy pracy sztucznej inteligencji.

Opisany tu serwis nie jest oczywiście jedynym, za pośrednictwem którego możemy skorzystać z Google Deep Dream. Inny przykład webowego interfejsu dla Google Deep Dream to strona dostępna w domenie VR-Lab.com, na której można przesłać zdjęcie do przetworzenia oraz na której publikowane są wyniki przetworzonych fotografii umieszczanych przez internautów. Uwaga rodzice - ponieważ w tym serwisie nie ma klasyfikacji wrzucanych do przetworzenia zdjęć, niektóre z nich mogą prezentować treści nieodpowiednie dla dzieci!

Aplikacje mobilne - DreamDeeply

Dla posiadaczy sprzętu pracującego pod kontrolą systemu Android, jak i użytkowników mobilnych urządzeń Apple mamy bezpłatnie udostępniany program DreamDeeply - jest on oficjalnie dostępny w Google Play (DreamDeeply dla Androida) oraz w App Store (DreamDeeply dla iOS). Program działa w zasadzie identycznie na obu platformach systemowych, drobne różnice wyjaśniamy poniżej na screenach.

Tak prezentuje się ekran główny programu w wersji dla Androida - za pomocą przycisku Browse Photo możemy przesłać do sieci neuronowej zdjęcie, które ma być poddane artystycznej obróbce przez maszynę. 

Wynik wygenerowany przez Google Deep Dream. W wersji dla Androida główne menu programu wyświetlane jest w górnej części ekranu.

Tak natomiast prezentuje się wersja dla iPhone'a (działa identycznie jak ta dla Androida), jedyną różnicą jest to, że menu programu w wersji dla iOS jest wyświetlane w dolnej części ekranu aplikacji. Po przesłaniu zdjęcia do przerobienia, wskazując polecenie Dream deeply mamy możliwość wyboru trybu pracy sieci neuronowej (zatem możemy pośrednio wpływać na wynik artystyczny).

Program udostępnia 12 różnych trybów działania (metod przetwarzania wczytywanych przez użytkowników zdjęć), warto poznać wszystkie fantasmagoryczne wariacje Google Deep Dream. Powyżej wersja dla iOS, ale oczywiście to samo mają do dyspozycji użytkownicy wersji dla Androida.

Wynik przetworzenia zdjęcia w wersji dla iOS. Na małej miniaturce nie bardzo widać jak dalece zmodyfikowane zostało oryginalne zdjęcie, dlatego poniżej przedstawiamy je w wersji powiększonej (można je dodatkowo powiększyć klikając prawym klawiszem myszki na fotografię i wybierając z menu kontekstowego przeglądarki polecenie wyświetlenia ilustracji w nowej karcie).

Obraz trochę jak z sennego koszmaru, kto wie o czym śni komputer? ;-)

Pikazo

Kolejnym programem mobilnym, którym chcemy zainteresować wszystkich miłośników sztuki generowanej przez komputer jest aplikacja o nazwie Pikazo. Tym razem jest to aplikacja dostępna wyłącznie na platformę iOS i na dodatek płatna (kosztuje równowartość 2,99€), niemniej oferuje znacznie szersze możliwości w zakresie wyboru trybu pracy sieci neuronowej generującej finalny obraz. 

Jak zapewniają twórcy programu, Pikazo jest programem symulującym sposób postrzegania obrazów przez mózg. To co rzuca się w oczy, to dość długi czas generowania "dzieł malarskich" tworzonych przez sieci neuronowe - na pojedynczy obraz trzeba poczekać nawet kilka minut. Co ciekawe twórcy aplikacji sami uczciwie przyznają, że nie wiedzą dlaczego sieć neuronowa generuje właśnie takie obrazy, uprzedzają też, że owa namiastka sztucznej inteligencji stojąca za twórczym procesem maszyny ma swoje kaprysy. Niekiedy Pikazo stworzy niepowtarzalne i urzekające wizualnie dzieło, ale innym razem wyjdzie mu to kiepsko, bywają również chwile, kiedy w ogóle nie otrzymamy sensownego wyniku pracy generatora.

Domyślnym ekranem prezentowanym użytkownikowi programu Pikazo jest galeria - na powyższej ilustracji widoczny jest już jakiś wygenerowany przez nas obraz, jednak standardowo po pierwszym uruchomieniu aplikacji galeria jest pusta, co może skonfundować niektórych użytkowników - trudno się temu dziwić. Czarny, pusty ekran to nieszczególnie udany projekt interfejsu. Z poziomu aplikacji, poza - pustą na początku - galerią mamy dostęp do jeszcze dwóch głównych funkcji: Salon oraz Paint!. 

Funkcja Salon to nic innego jak przeglądarka obrazów dostępnych w usłudze online powiązanej z programem Pikazo. Osoby zainteresowane eksploracją dzieł wygenerowanych przez sieci neuronowe powinny zarejestrować się (bezpłatnie) w salonie (można powiązać z usługą Pikazu swoje konto na Facebooku). Jeżeli chcemy tylko przerobić twórczo nasze fotografie, Salon do niczego nam się nie przyda.

Sedno funkcjonalności aplikacji, to polecenie Paint! Po jego wybraniu na ekranie widoczne są kafle. Ten o nazwie Picture po dotknięciu umożliwia wybór fotografii źródłowej, która ma być poddana neuronowej obróbce (po prostu aplikacja domaga się dostępu do zdjęć zapisanych na iPhonie i w iCloud, po przyznaniu jej zezwolenia możemy wybrać dowolne zdjęcie). Kafelek o nazwie Style pozwala określić styl twórczych modyfikacji - rzut oka na kolejną ilustrację wiele wyjaśni.

Pikazo oferuje standardowo 8 styli "malarskich" - warto podkreślić: to nie są "filtry graficzne" tylko wstępnie zakodowane dane dla neuronów wejściowych sieci neuronowej, która będzie generować obrazy zgodnie z sugerowanymi wytycznymi. W odróżnieniu od statycznych filtrów wynik działania procesu "twórczego" sieci neuronowej jest za każdym razem troszeczkę inny - tym samym każdy wygenerowany przez Pikazo obraz jest unikalny - cóż, w końcu jak dzieło sztuki, to dzieło sztuki, choćby i komputerowej ;-) Ciekawą opcją jest element o nazwie Custom pozwala on wybrać ze zbioru zapisanych w pamięci iPhone'a/iPada zdjęć fotografię, która ma stanowić "styl wzorcowy" dla sieci neuronowej. Zatem oprócz ośmiu predefiniowanych styli możemy zastosować dowolny wzór - chcemy by sieć neuronowa "namalowała" nam obraz w stylu Renoira, wystarczy jako wzorzec stylu wskazać jej jakąś reprodukcję dzieła tego malarza.

Zgodnie z zapowiedziami twórców aplikacji na wynikowy obraz trzeba trochę poczekać - stosowny komunikat jest wyświetlany bezpośrednio po wybraniu stylu.

W trakcie przetwarzania danych przez sieć neuronową (działającą w chmurze; obliczenia nie są przeprowadzane przez sam telefon, zatem aby program działał poprawnie urządzenie mobilne musi być połączone z internetem) na ekranie głównym wyświetlany jest napis informujący o twórczej pracy maszyny.

Po kilku minutach na Pikazo wyświetli wygenerowany obraz, który możemy od razu z poziomu aplikacji udostępnić wszystkimi kanałami obsługiwanymi przez iOS (mail, sieci społecznościowe, airdrop, zapis lokalny do zdjęć itp.). 

Halucynacje maszyny - wideo

Na koniec jeszcze krótki pokaz możliwości Google DeepDream, tym razem jednak nie w odniesieniu do zdjęcia lecz do filmu. Życzymy udanej zabawy w tworzenie niepowtarzalnych maszynowych dzieł sztuki. Obrazy wygenerowane przez DeepDream mogą być ozdobą naprawdę udanej imprezy Sylwestrowej.

Aplikacje wykorzystujące mechanizm Google Deep Dream pracujące pod kontrolą systemu Android Android testowaliśmy za pomocą smartfonu  HTC One (E8) pracującego pod kontrolą systemu Android 4.4.2 KitKat.

Urządzenie dostarczyła firma:

Z kolei programy działające na platformie iOS, "zatrudniające" sieci neuronowe do tworzenia fantasmagorycznych przeróbek cyfrowych zdjęć instalowaliśmy na iPhonie 5S.

Urządzenie dostarczyła firma T-Mobile:

Z webowego interfejsu Google Deep Dream (m.in. z działającego przez przeglądarkę narzędzia online Deep Dream Generator) korzystaliśmy na komputerze Acer Aspire V15 Nitro (model VN7-571G-70MR). Komputer ten wyposażony jest w procesor Intel Core i7-5500U, 12 GB pamięci RAM, 256 GB SSD + 1TB HDD i matrycę o rozdzielczości 1920 x 1080 pikseli. Komputer pracował pod kontrolą systemu operacyjnego Windows 10.

Komputer przekazał nam producent, firma Acer.

Acer

 

Netteria.NET
2017.04.16, 11:29
Wszystkie te obrazy są przetworzone według jednego, monotonnego schematu, który trudno nazwać 'stylem artysty'. Z całym szacunkiem bardziej chwyt marketingowy niż rzeczywisty, przełomowy sukces.