Przetwarzanie obrazów – kalendarz adwentowy #20

Jeżeli przejrzałeś wcześniejsze wpisy z tej serii, to być może kojarzysz już zbiór danych MNIST. Zbiór ten jest o tyle ciekawy, że można go próbować ugryźć na co najmniej dwa sposoby. Jedno z takich podejść to analiza piksel po pikselu, a drugie to całościowe przetwarzanie obrazów. Chciałbym Ci pokrótce nakreślić ideę tego drugiego podejścia.

Analiza pojedynczych pikseli

Obrazki ze zbioru MNIST mają rozdzielczość 28 × 28 pikseli, gdzie każdy piksel posiada szarość — czyli wartość od 0 do 255. W każdym obrazku mamy więc 784 liczby. Możemy więc przerobić każdy taki obrazek na obserwację w ramce danych i zastosować jakieś klasyczne podejście z asortymentu uczenia maszynowego. Może to być np. metoda najbliższych sąsiadów. I możemy uzyskać całkiem sensowne wyniki.

Przetwarzanie obrazów z wykorzystaniem splotu

Faktem jest, że jeżeli widzimy jakąś cyfrę, to nie analizujemy jej po pikselu (albo mikrometrowych plamkach atramentu), ale spoglądamy na nią całościowo. Zanim jednak opanujemy tę umiejętność, to musimy się nauczyć interpretować te kształty. Dowiadujemy się (najczęściej jako dzieci), że np. jeden to kijek z małym daszkiem, a ósemka to bałwanek. Zbierając te „podpowiedzi” jesteśmy w stanie określić, na jaką cyfrę patrzymy. A może da się zmusić komputer do czegoś podobnego?

Okazuje się, że mamy w algebrze taką sprytną funkcję, która nazywa się splot (albo z angielskiego konwolucja). Jeśli chodzi o przetwarzanie obrazów, to jest to przechodzenie małą macierzą (zwaną filtrem) zaświeconych lub zgaszonych „pikseli”, po dużej macierzy oryginalnego obrazka. W czasie takiego przechodzenia zwyczajnie mnożymy ze sobą wartości, sumujemy je i wrzucamy do mniejszej wynikowej macierzy. I oczywiście zdaję sobie sprawę, że niczego w ten sposób nie wytłumaczyłem. Pozwolę wiec sobie tutaj wkleić całkiem fajny filmik od Andrew Ng, który doskonale to tłumaczy:

Oczywiście nie jest to koniec tematu. Tak uzyskana macierz wynikowa jest później pomniejszana, a następnie nakładane są na nią kolejne filtry. Te kolejne filtry w wyniku treningu sieci neuronowej są coraz bardziej skomplikowane i mogą przypominać pewne znajome dla nas kształty — np. twarze, koła rowerowe i tym podobne. W ten sposób niejako zmuszamy komputer do przejścia od szczegółu do ogółu.

Przetwarzanie obrazów — Podsumowanie

Sieci neuronowe oparte o konwolucyjne przetwarzanie obrazów nie są niczym szczególnie bardziej skomplikowanym niż zwykłe sieci neuronowe. Wciąż mamy tam macierze, wciąż mamy tam mnożenie i dodawanie. Wciąż mamy tam, zupełnie tak samo jak mają ogry i cebula, warstwy. Ale dzięki takim sprytnym operacjom nasz komputer zaczyna widzieć. Nie zawsze widzi tak, jak my byśmy widzieli, ale czasem nawet i tak się zdarza.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *