Sieci neuronowe - projekt

Podobne dokumenty
Sztuczne sieci neuronowe. Krzysztof A. Cyran POLITECHNIKA ŚLĄSKA Instytut Informatyki, p. 335

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Obliczenia inteligentne Zadanie 4

Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Politechnika Świętokrzyska. Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 6. Transformata cosinusowa. Krótkookresowa transformata Fouriera.

Transformata Fouriera

Lekcja 5: Sieć Kohonena i sieć ART

Inżynieria obrazów cyfrowych. Ćwiczenie 5. Kompresja JPEG

Joint Photographic Experts Group

Transformaty. Kodowanie transformujace

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Kompresja bezstratna. Entropia. Kod Huffmana

Kwantyzacja wektorowa. Kodowanie różnicowe.

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Kompresja dźwięku w standardzie MPEG-1

Wybrane metody kompresji obrazów

Kompresja obrazów w statycznych - algorytm JPEG

Co to jest grupowanie

0 + 0 = 0, = 1, = 1, = 0.

Temat: Algorytm kompresji plików metodą Huffmana

Micha Strzelecki Metody przetwarzania i analizy obrazów biomedycznych (2)

Nierówność Krafta-McMillana, Kodowanie Huffmana

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Cyfrowe przetwarzanie i kompresja danych

Zastosowania sieci neuronowych

Klasyfikacja metod kompresji

Kompresja danych DKDA (7)

Kompresja video (MPEG)

Grafika Komputerowa Wykład 2. Przetwarzanie obrazów. mgr inż. Michał Chwesiuk 1/38

Kwantowanie sygnałów analogowych na przykładzie sygnału mowy

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

Spośród licznych filtrów nieliniowych najlepszymi właściwościami odznacza się filtr medianowy prosty i skuteczny.

Python: JPEG. Zadanie. 1. Wczytanie obrazka

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

Zastosowanie metod eksploracji danych Data Mining w badaniach ekonomicznych SAS Enterprise Miner. rok akademicki 2014/2015

Systemy uczące się Lab 4

WOJSKOWA AKADEMIA TECHNICZNA

Klasyfikacja metod kompresji

FFT i dyskretny splot. Aplikacje w DSP

Przetwarzanie i transmisja danych multimedialnych. Wykład 8 Transformaty i kodowanie cz. 2. Przemysław Sękalski.

Technika audio część 2

Dane obrazowe. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Algorytmy zachłanne. dr inż. Urszula Gałązka

dr inż. Piotr Odya dr inż. Piotr Suchomski

Kompresja Danych. Streszczenie Studia Dzienne Wykład 13, f(t) = c n e inω0t, T f(t)e inω 0t dt.

8. Neuron z ciągłą funkcją aktywacji.

Cyfrowe Przetwarzanie Obrazów i Sygnałów

Algorytm grupowania danych typu kwantyzacji wektorów

9. Dyskretna transformata Fouriera algorytm FFT

Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

METODY INŻYNIERII WIEDZY KNOWLEDGE ENGINEERING AND DATA MINING

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat

Zastosowanie kompresji w kryptografii Piotr Piotrowski

Przetwarzanie analogowo-cyfrowe sygnałów

Ćwiczenie 4. Filtry o skończonej odpowiedzi impulsowej (SOI)

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Instrukcja realizacji ćwiczenia

Kompresja JPG obrazu sonarowego z uwzględnieniem założonego poziomu błędu

Kody Tunstalla. Kodowanie arytmetyczne

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Kodowanie transformujace. Kompresja danych. Tomasz Jurdziński. Wykład 11: Transformaty i JPEG

Podstawy Przetwarzania Sygnałów

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F

Maciej Piotr Jankowski

Kodowanie podpasmowe. Plan 1. Zasada 2. Filtry cyfrowe 3. Podstawowy algorytm 4. Zastosowania

Algorytm wstecznej propagacji błędów dla sieci RBF Michał Bereta

Obliczenia iteracyjne

Metody sztucznej inteligencji Zadanie 3: (1) klasteryzacja samoorganizująca się mapa Kohonena, (2) aproksymacja sieć RBF.

Sieci Kohonena Grupowanie

3. Macierze i Układy Równań Liniowych

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka Adaline.

Modelowanie motywów łańcuchami Markowa wyższego rzędu

Niech x 1,..., x n będzie ciągiem zdarzeń. ---

dr inż. Piotr Odya Wprowadzenie

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Uczenie sieci radialnych (RBF)

4 Zasoby językowe Korpusy obcojęzyczne Korpusy języka polskiego Słowniki Sposoby gromadzenia danych...

LABORATORIUM AKUSTYKI MUZYCZNEJ. Ćw. nr 12. Analiza falkowa dźwięków instrumentów muzycznych. 1. PODSTAWY TEORETYCZNE ANALIZY FALKOWEJ.

Informatyka I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny) kierunkowy (podstawowy / kierunkowy / inny HES)

MATLAB Neural Network Toolbox przegląd

Sortowanie. Bartman Jacek Algorytmy i struktury

Przedmowa 11 Ważniejsze oznaczenia 14 Spis skrótów i akronimów 15 Wstęp 21 W.1. Obraz naturalny i cyfrowe przetwarzanie obrazów 21 W.2.

Programowanie genetyczne, gra SNAKE

Fundamentals of Data Compression

Zastosowania sieci neuronowych

Przekształcenia punktowe

Sztuczne sieci neuronowe i sztuczna immunologia jako klasyfikatory danych. Dariusz Badura Letnia Szkoła Instytutu Matematyki 2010

Algorytm grupowania danych typu kwantyzacji wektorów

Menu Narzędzia w Edytorze symboli i Edytorze Widoku aparatów

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Algorytmy klasteryzacji jako metoda dyskretyzacji w algorytmach eksploracji danych. Łukasz Przybyłek, Jakub Niwa Studenckie Koło Naukowe BRAINS

Klasyfikatory: k-nn oraz naiwny Bayesa. Agnieszka Nowak Brzezińska Wykład IV

Przetwarzanie i transmisja danych multimedialnych. Wykład 7 Transformaty i kodowanie. Przemysław Sękalski.

Algorytmy i struktury danych. wykład 8

Transkrypt:

Sieci neuronowe - projekt Maciej Barański, Kamil Dadel 15 stycznia 2015 Streszczenie W ramach projektu został zrealizowany algorytm kompresji stratnej bazujący na działaniu samoorganizującej się sieci Kohonena. Algorytm został zaimplementowany w środowisku Matlab oraz porównany z działaniem algorytmu Vector Quantization. Spis treści 1 Wstęp teoretyczny 2 1.1 Wektoryzacja.................................................. 3 1.2 Transformata cosinusowana.......................................... 3 1.3 Filtr dolnoprzepustowy............................................. 3 1.4 Kwantyzacja.................................................. 3 1.4.1 Kwantyzacja wektorowa........................................ 3 1.4.2 Samoorganizują się sieć neuronowa.................................. 3 1.5 Kodowanie................................................... 4 2 Eksperymenty 5 2.1 Pierwszy eksperyment - Lena......................................... 5 2.2 Drugi eksperyment - kwiat........................................... 5 2.3 Porównanie działania dwóch metod...................................... 6 3 Wnioski 8 4 Instrukcja 9 4.1 Nauka sieci................................................... 9 4.2 Kompresja obrazu............................................... 9 4.3 Uwagi...................................................... 9 1

1 Wstęp teoretyczny Kompresja obrazów jest ważną dziedziną przetwarzania obrazów. W informatyce jest wszechobecna - każda grafika komputerowa zawiera w sobie pewien poziom kompresji, który pozwala pogodzić ilość potrzebnej przestrzeni (bądź potrzebnego transferu) oraz jakość obrazu. Rysunek 1: Schemat kompresji obrazów Na schemacie 1 przedstawiono jeden ze schematów kompresji obrazów. Oryginalny obraz zostaje zamieniony na postać macierzową. Następnie dokonywana jest transformata cosinusowa ze względu na pożądane cechy (łatwo zniwelować wysokie częstotliwości, które nie są widoczne dla ludzkiego oka w obrazie). Następnie wysokie częstotliwości są niwelowane filtrem dolnoprzepustowym. Następnie dokonywana jest kwantyzacja, która pozwala na przybliżenie wartości za pomocą słów zdefiniowanych w słowniku. Dzięki temu otrzymywane są indeksy (które zajmują mniej pamięci niż odpowiadające im wartości). Następnie indeksy te są odpowiednio kodowane w celu zmniejszenia potrzebnej pamięci. Tak przygotowany obraz jest skompresowany. Należy zaznaczyć, że strata informacji następuje w filtrze oraz w kwantyzacji. Odtwarzanie obrazu polega na wstępnym zdekodowaniu indeksów, odtworzenie wartości częstotliwości oraz przeprowadzenie odwrotnej transformaty cosinusowej. Rysunek 2: Schemat kompresji obrazów z samoorganizującą się siecią w projekcie zostanie porównanie działanie schematu 1 oraz 2. Jedyna różnica w działaniu polega na sposobie kwantyzacji: w pierwszym jest stosowana kwantyzacja wektorowa, zaś w drugim kwantyzacja za pomocą samoorganizującej się sieci neuronowej. 2

1.1 Wektoryzacja Istnieje wiele różnych przestrzeni barw: RGB,CMYK oraz HSV. W projekcie założono stosowanie tylko odcieni szarości. Dzięki temu obraz jest zamieniany na postać macierzową. 1.2 Transformata cosinusowana Dyskretna transformata kosinusowa (DCT z ang. discrete cosine transform) jest stosowana w kompresji danych ze względu na to, że większość jej współczynników jest bliska 0. Dzięki temu po kwantyzacji będą się zerować, co pozwoli na ich zapis za pomocą mniejszej ilości bitów przy niedużej stracie jakości. Transformata ta jest stosowana w kompresji JPEG oraz MPEG. 1.3 Filtr dolnoprzepustowy Po transformacie cosinusowej istotne, niskie częstotliwości znajdują się w lewym, górnym rogu, zaś wysokie częstotliwości w prawym, dolnym rogu. Będą one eliminowane, ponieważ nie są istotne z punktu widzenia jakości obrazu. 1.4 Kwantyzacja Kwantyzacja będzie polegać na zamianie wartości na te, które są zdefiniowane w słowniku. Liczba wartości w słowników jest zazwyczaj dużo mniejsza niż liczba możliwych wartości. Ponadto dzięki zdefiniowaniu słownika po kwantyzacji nie są istotne już same wartości, lecz indeksy tych wartości w słowniku. 1.4.1 Kwantyzacja wektorowa Kwantyzacja wektorowa będzie polegać na zamianie przestrzeni wektorowej R k na przestrzeń wektorową Y = {y i : i = 1,..., N}. Każdy wektor y i jest nazywany słowem w zbiorze Y nazywanym słownikiem. Ponadto każdemu słowu w słowniku jest zdefiniowany region przynależności (z ang. Voronoi region) zdefiniowany następująco: V i = {x V k : x y i x y j, j i} (1) Kwantyzacja wektorowa bazuje na pojęciu odległości - zazwyczaj definiowanej jako norma euklidesowa. Region przynależności do danego słowa to wszystkie wektory, które są najbliższe (w sensie zdefiniowanej normy) danemu słowu. Jak działa enkoder? Dekoder kwantyzacji dla wektora wejściowego oblicza wszystkie odległości tego wektora do wszystkich słów w słowniku. Następnie zwraca indeks tego słówa, dla którego obliczona odległość jest najmniejsza. Jak działa dekorer? słowniku. Mając dany słownik oraz indeks wystarczy odnaleźć wartość słowa, który ma dany indeks w Jaki jest algorytm powstawania słownika? 1. Ustalić rozmiar słownika N. 2. Wybrać losowo N słów - będzie to słownik początkowy. 3. Ustalić regiony przynależności - dla wszystkich wektorów wejściowych ustalić do którego słowa w słowniku należą na podstawie ustalonej miary 4. Ustalić nowe słowa w słowniku za pomocą wzoru y i = 1 m m j=1 x ij, gdzie m jest ilością wektorów należących do słowa, a i jest kolejnym wymiarem wektora. 1.4.2 Samoorganizują się sieć neuronowa Samoorganizująca się sieć neuronowa jest nazywana także siecią Kohonena. Uczy się bez nadzoru (z ang. unsupervised learning). Wyjściem sieci jest zdyskretyzowana reprezentacja przestrzeni wejściowej zwana mapą. Sieć Kohonena zachowuje właściwości przestrzeni wejściowej. Nauka sieci polega ciągłym przetwarzaniu za pomocą sieci wektorów wejściowych. Każdy wektor jest porównywany z wszystkimi neuronami (za pomocą normy) i wybierany jest zwycięzca, który ma największą normę. Współczynik wagi zwycięskiego neuronu zostaje zmieniony. Istnieje możliwość wprowadzenia sąsiedztwa, które zmienia również neurony sąsiadujące ze zwycięskim. 3

Rysunek 3: Topologia samoorganizującej się sieci neuronowej Sieć w naszym wypadku działa bardzo podobnie do kwantyzacji wektorowej, w związku z tym zastosowano ją do schematu kompresji danych. 1.5 Kodowanie W projekcie zostało zaimplementowane kodowanie różnicowe oraz kodowanie Huffmana. Kodowanie różnicowe Mając dany ciąg danych d 1,..., d N kodowanie różnicowe poleca na zamianie ciągu na nowy ˆd 1,..., ˆd N, w którym pierwszy element ˆd 1 pozostaje taki sam, zaś każdy następny jest zdefiniowany następująco: Dekodowanie polega na odwrotnej transformacji zdefiniowanej następująco: Kodowanie Huffmana 1. Określ prawdopodobieństwo każdego symbolu ˆd i = d i d i 1 (2) d i = d i 1 + ˆd i (3) 2. Stwórz listę drzew binarnych, które na początku posiada tylko korzeń składający się z pary: symbol i prawdopodobieństwo. 3. Dopóki na liście nie zostanie tylko jedno drzewo należy: (a) usunąć dwa drzewa o najmniejszym prawdopodobieństwie w korzeniu (b) wstawić nowe drzewo, którego korzeń jest sumą prawdopodobieństw usuniętych drzew, zaś one same stają się lewym i prawym poddrzewem. Powstałe drzewo nazywamy drzewem Huffmana. 4

2 Eksperymenty W ramach projektu zostały przeprowadzone dwa eksperymenty mające na celu porównanie działania kwantyzacji wektorowej oraz sieci samoorganizującej się. 2.1 Pierwszy eksperyment - Lena Pierwszy eksperyment polegał na wytrenowaniu sieci neuronowej oraz na stworzeniu słownika do kwantyzacji wektorowej przy pomocy znanego obrazu Lena. Rysunek 4: Lena - obraz wejściowy Poniżej przedstawiono wynik działania kwantyzacji wektorowej oraz sieci Kohonena. Rysunek 5: Wynik działania kwantyzacji wektorowej Rysunek 6: Wynik działania samoorganizującej się sieci Nie istnieje jednoznaczna miara pozwalająca na określenie jakości kompresji. W obu przypadkach ustawiono ten sam stopień kompresji - 1.3. Wobec tego decydujące znaczenie ma, który z tych obrazów wynikowych bardziej przypomina obraz wejściowy dla ludzkiego oka. W tym przypadku widać, że nieznacznie lepszy wynik dała sieć neuronowa. 2.2 Drugi eksperyment - kwiat Drugi eksperyment polegał na kompresji obrazu przedstawionego poniżej: 5

Rysunek 7: Kwiat - obraz wejściowy Jednak w tym wypadku kwantyzacja została przeprowadzona na słowniku i na sieci wytrenowanej za pomocą obrazu Lena. Rysunek 8: Wynik działania kwantyzacji wektorowej Rysunek 9: Wynik działania samoorganizującej się sieci Jak widać obie metody uzyskały gorszą jakość. Oceniając subiektywnie sieć Kohonena również w tym przypadku uzyskała lepszy wynik. 2.3 Porównanie działania dwóch metod W tej części rozdziału przedstawiono obiektywne porównania działania samoorganizującej się sieci (SOM) oraz kwantyzacji wektorowej (VQ). Na początek przedstawiono czas wykonywania się wspólnych etapów kompresji dla obu metod. Tablica 1: Czas działania etapów wspólnych dla obu metod Czas [s] Lena SOM Kwiat SOM DCT 0.0041478 0.00328266 Filtr dolnoprzepustowy 0.000151817 0.000190733 Kodowanie roznicowe 0.0100969 0.00300768 Kodowanie Hoffmana 1.46109 1.54723 Dekodowanie Hoffmana 10.8187 13.4189 Dekodowanie roznicowe 0.00688478 0.00371844 Odwrotne DCT 0.00416662 0.00373725 6

W następnych dwóch tabelkach przedstawiono czasy wykonywania się etapów kodowania oraz nauki. Tablica 2: Porównanie czasów kodowania Lena SOM Kwiat SOM Lena VQ Kwiat VQ Czas kodowania [s] 702.778 852.515 0.435521 0.594474 Tablica 3: Porównanie czasu powstawania słownika oraz trenowania sieci neuronowej SOM VQ Czas powstawania slownika [s] 702.778 0.435521 W ostatniej tabelce przedstawiono parametry będące przybliżeniem jakości obrazu, która jest zauważalna dla ludzkiego oka. Pierwszy parametr MSE jest zwyczajnym błędem średniokwadratowym dwóch obrazów (A - obrazem po kompresji, B - obrazem referencyjnym): MSE = M N i=1 j=1 (A(i, j) B(i, j)) 2 (4) Drugi parametr PSNR (z ang. peak signal-to-noise) jest stosunkiem sygnału do szumu. Im większy parametr tym lepsza jakość obrazu. PSNR = 10 log 255 MSE (5) Tablica 4: Porównanie parametrów obrazów wynikowych Lena SOM Kwiat SOM Lena VQ Kwiat VQ PSNR [db] 71.9786 25.7237 60.401 25.8442 MSE 48.6507 4964.96 154.846 4905.45 7

3 Wnioski Podczas innych eksperymentów z algorytmami zauważono, że działają one tylko dla niezbyt skompresowanych obrazów. Wielokrotna kompresja obrazów sprawia, że tracone są istotne częstotliwości i nie jest możliwa rekonstrukcja obrazu. Kodowanie Huffmana można zastąpić kodowaniem UVLC, które ze względu na to, że jest zmiennej długości i dostosowywuje się do rozkładu danych wejściowych będzie lepiej przystosowane do zastosowanych algorytmów. W algorytmach zastosowaną prostą kompresję bez podziału obrazów na okna. Modyfikacja algorytmu uwzględniająca podział obrazu na okna pozwoli na istotne zwiększenie efektywności kompresji. Sieć Kohonena można z powodzeniem stosować zamiast kwantyzacji wektorowej. Pozwala ona na osiągnięcie lepszych wyników. Niestety działanie sieci jest o wiele dłuższe od działania algorytmu kwantyzacji wektorowej. 8

4 Instrukcja 4.1 Nauka sieci 1. Dokonaj wektoryzacji obrazu lena.jpg 2. Przeprowadź dyskretną transformatę cosinusową 3. Stwórz i naucz sieć Kohonena dla niskich częstotliwości 4. Zbadaj czas uczenia się sieci 5. Zdefiniuj nowy słownik Huffmana 4.2 Kompresja obrazu 1. Dokonaj wektoryzacji obrazu lena.jpg 2. Przeprowadź dyskretną transformatę cosinusową 3. Użyj filtru dolnoprzepustowego 4. Wykorzystaj sieć Kohonena nauczonej na obrazie lena.jpg 5. Przeprowadź kodowanie różnicowe i kodowanie Huffmana 6. Zbadaj czasy wykonywania się poszczególnych etapów 7. Wyznacz parametr MSE dla obrazów wynikowych i referencyjnych 8. Zbadaj rezultaty przeprowadzanych operacji 4.3 Uwagi Przydatne funkcje: 1. rgb2gray 2. dct2 3. selforgmap 4. train 5. huffmandict 6. diff_coding 7. huffmanenco Zaleca się użycie interfejsu graficznego do tworzenia i trenowania sieci neuronowej, który jest uruchamiany za pomocą polecenia nnstart. Umożliwia on wygenerowanie skryptu, który zawiera instrukcje pozwalające na powtórzenie działania interfejsu. 4.4 Zadanie dodatkowe Działanie kompresji można ulepszyć poprzez podział obrazu na okna i kodowanie całych okien DCT zamiast poszczególnych wartości. Ponadto istnieje możliwość zamiany kodowania Huffmana na efektywniejszy (na przykład UVLC). 9