Wyobraźcie sobie, że możecie zobaczyć czyjeś sny. Kolorowe obrazy, poprzeplatanie rzeczywistości z fikcją, dziwne kształty i barwy. Brzmi ciekawie? Komputery mogą od dawna to robić i pokazać nam jak to wygląda.

Google Deep Dream to bardzo ciekawy projekt wykorzystujący sieci neuronowe, czyli mechanizm przypominający dzialaniem prawdziwe neurony, a w efekcie mózg (w wypadku tego algorytmu sieci neuronowej jest to kora wzrokowa). Taka sieć neuronowa jest zbudowana z grupek „neuronów”, które mają swoje preferencje i wagę. Grupki tworzą warsty, gdzie każda z tych grupek skanuje swoją część obrazu ucząc się, co mają aktywować, gdy „zobaczą” odpowiednią cechę, kształt, czy kolor. Gdy skończy kontaktuje się z sąsiednimi grupkami z innej warstwy, które robią to samo. Na samym końcu złożeniem wynikowego obrazka zajmuje się osobna warstwa, która komunikuje się ze wszystkimi neuronami na swojej powierzchni i poniżej siebie mając dostęp do pracy całego systemu. To daje nam obrazek z działania mechanizmu Deep Dream albo połączenie dwóch obrazów – tak by jeden obraz był dawcą stylu, gdy drugi jest dawcą zawartości.

Co daje nam to w praktyce? Możemy zmienić swoje zdjęcie, by wyglądało jak obraz malowany farbami olejnymi. Poniżej daję parę przykładów działania DeepDream, żebyście sami mogli zobaczyć co można za jego pomocą osiągnąć.

Pierwszy koncept stworzenia algorytmu wykorzystującego zasadę działania neuronów odpowiedzialnych za widzenie obrazu został stworzony przez Kunihiko Fukushimę w roku 1980 pod nazwą Neocognitron zainspirowany pracą neurofizjologów Hubla i Wiesla z roku 1959, gdzie zauważyli oni, że za widzenie obrazu jest odpowiedzialna grupa komórek składająca się z komórek prostych i złożonych. Koncept Neocognitrona był rozwijany i ulepszany na przestrzeni lat, aż do powstania funkcjonalnych mechanizmów jak LeNet-5, który był wykorzystywany do rozpoznawania pisma ręcznego, głównie na czekach bankowych.
Podobne algorytmy są też używane w niektórych sortowaniach pocztowych, aby czytać odręcznie adresowane listy i paczki.

 

Ale generowanie obrazków, czy czytanie ręcznego pisma to nie wszystko, co sieci neuronowe mogą osiągnąć. Dają one naprawdę duże możliwości, by komputery stawały się coraz bardziej inteligentne i przystosowane do naszego świata. Za pomocą sieci neuronowych maszyny uczą się rozpoznawać rzeczy widoczne na zdjęciach, czy filmach bez ingerencji człowieka. Algorytm sam stwierdzi czy na filmie jest widoczna osobówka, czy samochód ciężarowy. Sam przeszuka tysiące akt prawnych, czy publikacji naukowych by znaleźć coś, co jest w danej chwili potrzebne… a właściwie to już to robi, istnieje mechanizm Watson stworzony przez IBM, który pomaga prawnikom i lekarzom w ich pracy. Istnieje NeuralTalk, który potrafi na żywo, na zwykłym laptopie opisywać co widzi na filmie. Nie trzeba superkomputerów zajujących całe piętra budynków, nie trzeba gigawatów mocy. Przyszłość jest już teraz.

Z DeepDream możecie skorzystać za darmo pod adresem http://deepdreamgenerator.com/

Źródła:
https://en.wikipedia.org/wiki/Convolutional_neural_network
https://cs231n.github.io/convolutional-networks/
https://cs.stanford.edu/people/karpathy/deepimagesent/