Wpis z mikrobloga

Chcę zbudować sieć neuronową, która ma mi pomóc w proceduralnym generowaniu wysp. To jest: daje jej na wejściu 2 wymiarową tablice float'ów z danymi o wysokości terenów, a dostaję na wyjściu mapę o poprawionych wartościach tak, że faktycznie przypomina wyspę. Udało mi się jak na razie przekopać trochę internet i znaleźć źródła map wysokościowych prawdziwych wysp. Niestety nie wiem jak się zabrać za konstruowanie takiej sieci. Jakie materiały polecacie?

Edit:
Jak na razie wymyślilem, że na wejsciu każdy neuron dostanie jeden wiersz, więc można stworzyć funkcję, która przebiega przez te punkty i poprawić ją tak by wyglądala bardziej ralnie.
#programowanie #gamedev
  • 16
Zastanawiam się, czy sieć neuronowa jest dobrym wyborem ;). Generowanie proceduralne jest raczej wykonywane za pomocą jakichś predefiniowanych losowych procesów. Na przykład możesz sobie losować funkcję f(x,y) i na podstawie takiej funkcji generować sobie wyspę ;).
@Sudet: odpadaja ci wtedy anomalia wystepujaca w naturze takie jak chociazby korozja nabrzeza od strony z ktorej uderzaja fale.

@levil: bardzo fajny pomysl jednak nie wiem czy 1 linijka by wystarczyla. Moim zdaniem ze 2 by musialy byc zeby byla zachowana spojnosc terenu.

Mozesz tez zrobic cos na zasadzie generowania co 100 linijki a siec neuronowa by tylko uzupelniala obszar miedzy nimi.
Wystarczy dodać losowość do generowanego obszaru :).


@Sudet: jaka dokladnie losowosc masz na mysli? Moim zdaniem latwiej nauczyc siec neuronowa niz uwzglednic w algorytmie korozje pradowa na podstawie zatoki i klifu zalesionego/niezalesionego.

Wszystko da sie algorytmem osiagnac ale chodzi o to ze algorytm jest zbyt skomplikowany.
@jigsaw96: @karer: Jak na razie mam coś takiego https://i.gyazo.com/7ecf4aac9e63e47531ecb3b72879b55e.png ,
w miarę wygląda, ale topologicznie leży
https://gyazo.com/edeb7954f3a73decaddf5a96b4a8706d
dlatego też myślę o zrobieniu jakiejś sieci, która nauczę jak wygląda prawilna wyspa i mi przerobi dane jakie dostanie(pojedyncza wyspa)
@Sudet: próbowałem już dodawać kolejne szumy, jednak nie dawało to pożądanych wyników nawet jak dodawałem różnego rodzaju erozje
Pobierz levil - @jigsaw96: @karer: Jak na razie mam coś takiego https://i.gyazo.com/7ecf4aac9...
źródło: comment_PeMODRs2nzz9PZVpVCUDdTq18r6k2Tss.jpg
A co do samych sieci neuronowych to znam podstawy podstaw typu jak wygląda neuron, jakie są rodzaje połączeń. Niestety nie wiem gdzie szukać informacji jak to konkretnie działa
@levil: O ile dobrze rozumiem to te wysokości źródłowe to po prostu źrodło losowości.
Da się to zrobić za pomocą sieci generacyjnej trenując na prawdziwych mapach, ale to dużo roboty zaczynając od podstaw, szczególnie żeby to było szybkie. Dałbym sobie raczej spokój i użył jakiejś prostszej metody, chyba, że chcesz użyć tego jako projektu edukacyjnego

Przykłady
https://github.com/Newmu/dcgan_code
https://github.com/nivwusquorum/tf-adversarial/blob/master/Adversarial-LSUN.ipynb
@megaloxantha: zgadza się w danych wejściowych będą dane losowe, ale będzie zachowany dany kształt wyspy, na której trzeba porobić parę gór lub jedną. I z chęcią sprawdzę swoje siły w tej dziedzinie zwłaszcza, że jest interesująca. Dzięki za linki
@jigsaw96: Również dziękuje ( ͡° ͜ʖ ͡°)
Sprawdziłem na stronie biblioteki swojej politechniki i jest kilka książek o sieciach neuronowch jednak są sprzed 2000 roku( ͡° ʖ̯ ͡°) ktoś obeznany w tych tematach mógłby powiedzieć czy wyszły jakieś "nowości" w tym czasie?
@levil: Można generować wysypy siecią tak samo jak można zbudować czołg z silnika z kosiarki i 15stu wiader, tylko to raczej nie będzie najszybsze i najlepsze rozwiązanie problemu.

Jeśli to w celach edukacyjnych to dobry przykład gotowego rozwiązania dał @megaloxantha (pewnie przyda ci się do tego jakaś dobra karta graficzna do obliczeń i 100k znormalizowanych wysp). Jako wstępny kurs do sieci neuronowych polecam "Machine Learining" prowadzony przez Andrew'a Ng na coursera.