Kwantyzacja wektorowa Plan 1. Zasada działania 2. Projektowanie. Algorytm LBG 3. Kwantyzatory strukturalne 4. Modyfikacje
Zasada kwantyzacji wektorowej Kwantyzacja skalarna koduje oddzielnie kaŝdą próbkę Shannon kodowanie sekwencji moŝe być korzystniejsze niŝ kodowanie pojedynczych próbek Schemat kwantyzacji wektorowej
Zasada kwantyzacji wektorowej c.d. Działanie kodera i dekodera róŝna złoŝoność obliczeniowa Koder wiele porównań wektora wejściowego z wektorami słownika duŝa złoŝoność Dekoder tylko odczytanie z tablicy Średnie bitowe Rozmiar wektora L Rozmiar słownika M Średnia bitowa na próbkę: Zniekształcenie X Y log 2 M R = L 2 = L i = 1 ( x i y i ) 2
Kwantyzacja wektorowa vs. skalarna Podstawowe pytanie po co stosować kwantyzację wektorową? Jaka jest jej przewaga nad skalarną? Odpowiedź bo stosując ją dostajemy mniejsze zniekształcenie przy tej samej średniej bitowej. Dlaczego? Powód 1: korelacje Przykład: źródło generuje ciąg danych opisujących wagę [funtach] i wzrost [calach] pewnej grupy osób. Waga rozkład jednostajny w zakresie [40, 240] ([18, 108] kg) Wzrost rozkład jednostajny w zakresie [40, 80] ([100, 200] cm) Kwantyzacja skalarna oddzielnie waga i wzrost, kaŝda zmienna przy pomocy kwantyzatora 8 poziomowego Ilustracja graficzna następna strona
Kwantyzacja wektorowa vs. skalarna c.d.
Kwantyzacja wektorowa vs. skalarna c.d. Para kwantyzatorów skalarnych optymalna gdy wszystkie punkty końcowe (pary waga wzrost) równie prawdopodobne Tak nie jest w danych mamy korelację waga[funty] = 2.5 wzrost [cale] Pomimo Ŝe rozkłady wagi i wzrostu z osobna są równomierne, to łączny rozkład par nie jest jednorodny Gdy weźmiemy tyle samo stanów wyjściowych, ale rozłoŝonych głownie tam, gdzie gromadzą się dane dostaniemy zmniejszenie zniekształcenia
Kwantyzacja wektorowa vs. skalarna c.d.
Kwantyzacja wektorowa vs. skalarna c.d. Powód 2: większa elastyczność w dostosowaniu do danych Przykład: źródło generuje zmienne o rozkładzie Laplace a Kolejne wartości niezaleŝne brak korelacji Kwantyzacja: 8-poziomowy kwantyzator skalarny; = 0.7309 Rozkład Laplace a niejednorodny: P(1) = 0.3242, P(4) = 0.0225 RozwaŜamy proces kwantyzacji dwóch kolejnych wartości równowaŝny określeniu punktu kwantyzacji w przestrzeni dwuwymiarowej Prawdopodobieństwa róŝnych punktów róŝne: P(1,1) = P(1) P(1) = 0.1051 P(4,4) = P(4) P(4) = 0.0005 < P(1,1)/207 Punkt rzadko uŝywany moŝna przesunąć w inne miejsce, gdzie będzie bardziej uŝyteczny
Kwantyzacja wektorowa vs. skalarna c.d.
Kwantyzacja wektorowa vs. skalarna c.d.
Kwantyzacja wektorowa vs. skalarna c.d. Skutki modyfikacji Kwantyzacja nie jest juŝ wynikiem dwóch następujących po sobie procesów kwantyzacji skalarnej Liczba stanów końcowych taka sama średnia bitowa bez zmian Zmniejszenie zniekształcenia, poprawa SNR (z 11.39 db na 11.73 db) Czy podobny efekt moŝna osiągnąć modyfikując kwantyzator skalarny (ostatni punkt centrum)? Nie, pogorszenie SNR (z 11.39 na 10.80) Przesunięcie jednego punktu kwantyzatora skalarnego równowaŝne przesunięciu 15 punktów w 2 wymiarach Modyfikacje kwantyzatora skalarnego bardzo grube zmiany struktury; kwantyzator wektorowy daje lepsze moŝliwości dopasowania do danych
Projektowanie kwantyzatora wektorowego Kwantyzator skalarny określony poprzez granice decyzyjne i poziomy rekonstrukcji Kwantyzator wektorowy granice decyzyjne bardzo skomplikowane Gdy znamy miarę zniekształceń, to kwantyzator określony całkowicie poprzez zadanie punktów wyjściowych Y j Formuła kwantyzacji: Obszary kwantyzacyjne: Q( X) = Y d( X, Y ) < d( X, Y ) j j i i j V j = { X : d( X, Y ) < d( X, Y ) i j} j i Określenie kwantyzatora zadanie punktów wyjściowych tak, by zminimalizować zniekształcenie
Algorytm LBG Zaproponowany w 1980 przez Linde, Buzo i Graya uogólnienie algorytmu Lloyda projektowania kwantyzatora pdf-optymalnego Przebieg algorytmu: 1. Wybieramy dowolnie początkowy zestaw {Y j (0) }, j=1,.., M. Ustalamy k=0, D (-1) =0. Wybieramy próg e. 2. Znajdujemy obszary kwantyzacji V (k) j odpowiadające poszczególnym wektorom Y j M 2 ( k ) ( k) 3. Wyznaczamy zniekształcenie D = X Y f ( X ) dx D ( k ) D ( k ) D ( k 1) i= 1 V 4. JeŜeli < e zakończ. JeŜeli nie kontynuuj 5. k = k+1, znajdź nowe przybliŝenie Y j (k) jako środków cięŝkości obszarów V j (k-1). Przejdź do kroku 2. ( k ) i i
Algorytm LBG c.d. Przedstawiony algorytm niepraktyczny; wymaga wyliczania wielowymiarowych całek po skomplikowanych obszarach (kroki 3 i 5) Modyfikacja gdy dysponujemy zbiorem wektorów generowanych przez źródło {X k } k = 1,.. N (zbiór uczący) Przebieg zmodyfikowanego algorytmu: 1. Wybieramy dowolnie początkowy zestaw {Y (0) j }, j=1,.., M. Ustalamy k=0, D (-1) =0. Wybieramy próg e. 2. Znajdujemy obszary kwantyzacji V (k) j V ( k ) j = { X i : d( X i, Y ( k ) j ) < d( X i, Y ( k ) n ) n j} 3. Oblicz zniekształcenie: sumę odległości pomiędzy wektorami uczącymi a ich reprezentantami D ( k ) D ( k ) D ( k 1) 4. JeŜeli < e zakończ. JeŜeli nie kontynuuj. 5. k = k + 1, znajdź nowe przybliŝenie Y j (k) jako średnie wektorów z obszarów V j (k-1). Przejdź do kroku 2.
Algorytm LBG - przykład Wyznaczamy punkty wyjściowe kwantyzatora wzrost-waga Zbiór uczący: Kolejne przybliŝenia: Wzrost Waga k 0 1... ostatni 72 65 59 64 65 57 72 44 62 60 56 70 180 120 119 150 162 88 175 41 114 110 91 172 Y 1 (45, 50) (44, 41)... (44, 41) Y 2 (75, 117) (58, 102)... (57, 90) Y 3 (45, 117) (64, 117)... (62, 116) Y 4 (80, 180) (69, 168)... (69, 168) Zn. 387.25 89.0... Rozwiązanie alternatywne: k start koniec Y 1 (75, 50) (44, 41) Y 2 (75, 117) (60, 107) Y 3 (75, 127) (64, 150) Y 4 (80, 180) (70, 172) 60.17
Algorytm LBG przykład c.d. k = 0 k = 1 k = k f
Inicjalizacja algorytmu LBG Algorytm LBG procedura optymalizcyjna; wynik zaleŝy od wartości startowych. Wypracowano szereg procedur inicjalizacji algortymu LBG najwaŝniejsze z nich to: Technika podziałów Zaczynamy od wektora Y s równego średniej zbioru uczącego Rozszczepiamy go na dwa: Y 1 = Y s, Y 2 = Y s + e. Uzyskane wektory traktujemy jako dane początkowe kwantyzatora 2-poziomowego; wyznaczamy te wektory algorytmem LBG Rozszczepiamy otrzymane tak 2 wektory uzyskujemy 4 nowe. Powtarzamy procedurę do uzyskania potrzebnej ilości wektorów. Losowy wybór wektorów Wybieramy wektory startowe poprzez losowanie z wszystkich wektorów zbioru uczącego. Wyznaczamy słownik i zniekształcenie. Powtarzany czynność kilkukrotnie biorąc rozwiązanie dające najmniejsze zniekształcenie
Inicjalizacja algorytmu LBG c.d. Algorytm najbliŝszych sąsiadów (PNN) Startujemy od sytuacji w której w słowniku są wszystkie wektory ze zbioru uczącego W następnych etapach łączymy dwa najbliŝsze wektory w grono i zastępujemy je ich średnią W kaŝdym etapie łączymy te skupiska, które dają najmniejszy wzrost zniekształcenia Aproksymacja przez kwantyzator skalarny Punkty startowe kwantyzatora wektorowego przyjmujemy jako punkty odpowiedniego kwantyzatora skalarnego Prawdopodobnie metoda PNN najlepsza, ale najbardziej złoŝona.
Przykłady kompresja obrazu Kompresja obrazu; wektor blok N x M ( na ogół N=M) Przykład Zdjęcie chłopca 256 x 256 pikseli, 8 bpp Wektor blok 4 x 4 Słownik utworzony na podstawie kodowanego obrazu Stopień kompresji Narzut na słownik Rozmiar Bitów Bitów Stopień Rozmiar Narzut Efekt. st. słownika 16 64 256 1024 /słowo kodowe 4 6 8 10 /piksel 0.25 0.375 0.50 0.625 kompresji 32:1 21.33:1 16:1 12.8:1 słownika 16 64 256 1024 bpp 0.03125 0.125 0.5 2.0 kompresji 28.44:1 16:1 8:1 3.05:1
Przykłady kompresja obrazu c.d.
Przykłady kompresja obrazu c.d. Mały słownik (M=16) widoczne artefakty kwantyzacji. Większy słownik (M=1024) obraz porównywalny z oryginałem Niskie średnie bitowe (< 1 bpp) Gdy konieczność przesłania słownika dodatkowy narzut Gdy M = rozmiar słownika, L = rozmiar wektora, B = ilość bitów/piksel, Np. = ilość pikseli w obrazie, to Narzut = B*L*M / Np. Słowniki ogólne przykłady ObniŜenie jakości UŜywanie słowników ogólnych realne
Słowniki ogólne - przykłady
Kwantyzatory z duŝąśrednią bitową Rozmiar słownika rośnie wykładniczo ze średnią bitową: M = 2 RL Kwantyzacja z wysokąśrednią bitową problem ZłoŜoności obliczeniowej kodera Pamięci Przykład Kwantyzator o wymiarze L=16, R=2 M=2 32 = 4.3 10 9 Pamięć potrzebna na zapamiętanie słownika = 64 GB Wyjście struktura w słowniku i procesie kwantyzacji pozwalająca obejść powyŝsze ograniczenia
Kwantyzatory o strukturze drzewiastej Struktura w słowniku umoŝliwiająca szybsze znalezienie wektora słownika najbliŝszego danemu wejściu Słownik specjalnie projektowany: Wyliczamy wektor średnią zbioru uczącego, rozszczepiamy na 2 Oznaczamy powstałe wektory v0 i v1, zaś grupy które się do nich kwantyzują przez g0 i g1 Bierzemy wektor v0 rozszczepiamy go uŝywając tylko wektorów z g0 dostajemy v00 i v01 oraz odpowiadające im grupy g01 i g02 To samo robimy dla grupy g1 i v1 dostajemy g10, g11, v10, v11 Powtarzamy całą procedurę do uzyskania odpowiedniej ilości wektorów słownikowych Zapamiętujemy wektory słownikowe (otrzymane w ostatnich podziałach) oraz wektory struktury pośredniej (v0, v1, v00, v01,...)
Kwantyzatory o strukturze drzewiastej c.d. Proces kodowania 1. Porównujemy wejście do v0 i v1. Gdy wejście bliŝsze v0 pomijamy wszystkie wektor o indeksach z 1 jako pierwszy bit 2. Następnie porównujemy wejście do v01 i v02. Znów odrzucamy połowę pozostałych wektorów 3. Do wyznaczenia właściwego wektora słownika potrzeba tylko 2 log 2 M porównań zamiast M (np. dla M=4096 tylko 24, czyli 170 razy mniej!!!). Cena Zwiększenie zniekształceń Zwiększenie obciąŝenia pamięci (struktura pośrednia)
Kwantyzatory strukturalne Kwantyzatory strukturalne punkty wyjściowe regularnie rozłoŝone, nie ma potrzeby pamiętania ich pozycji Ograniczanie szumu kwantyzacji Szum nadmiaru modyfikacja kształtu (zysk brzegowy) Szum ziarnisty dobór kształtu komórki kwantyzacji Przykład ograniczenie szumu nadmiaru: 2-wymiarowy kwantyzator Laplace a Poziomice stałego prawdopodobieństwa: x + y = A = const Gdy np. A=5, mamy 60 punktów; porównując z 8-poziomowym kwantyzatorem skalarnym mamy poprawę SNR z 11.39 db do 12.22 db Przykład ograniczenie szumu ziarnistego 2-wymiarowy rozkład jednorodny Komórka kolista SNR=0.159, kwadratowa SNR = 0.167
Zysk brzegowy
Kwantyzatory kratowe Wymagania co do kształtu komórkek kwantyzacyjnych kafelkowanie przestrzeni Kwantyzator zadany przez stany wyjściowe Niech {a 1, a 2,..., a L } L niezaleŝnych liniowo wektorów. Krata: K = { x: x = i= 1 a } gdzieu Kwantyzatory kratowe punkty wyjściowe naleŝą do kraty. Wystarczy pamiętać generatory kraty L u i i Z Łatwość znalezienia wektora słownikowego najbliŝszego wejściu Optymalizacja szumu ziarnistego dobór kraty (np. systemy pierwiastkowe algebr Liego) i
Modyfikacje Kompresja wektorowa efektywna metoda kompresji z małym zniekształceniem, stosowana w multimediach (często w róŝnych wariantach) Przykłady modyfikacji: Kwantyzatory skala-kształt Stosowana do kwantyzacji dźwięku Przed kwantyzacją wektor normalizujemy Kształt kodujemy kwantyzatorem wektorowym Kwantyzatory z usuniętąśrednią Stosowana w kwantyzacji obrazów Przed kwantyzacją wyliczamy średnią wektora i odejmujemy Średnia kwantyzator skalarny, wektor z odjętąśrednią kwantyzator wektorowy