Kwantyzacja wektorowa
Transkrypt
Kwantyzacja wektorowa
Kwantyzacja wektorowa
1.
2.
3.
4.
Plan
Zasada działania
Projektowanie. Algorytm LBG
Kwantyzatory strukturalne
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ę:
R=
| log 2 M |
L
• Zniekształcenie
X −Y
2
L
=
∑
i =1
( xi − yi ) 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 Yj
Formuła kwantyzacji:
Q( X ) = Yj ⇔ d ( X , Yj ) < d ( X , Yi ) ∀i ≠ j
Obszary kwantyzacyjne:
V j = { X : d ( X , Y j ) < d ( X , Yi ) ∀i ≠ j}
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.
2.
3.
Wybieramy dowolnie początkowy zestaw {Yj(0)}, j=1, .., M.
Ustalamy k=0, D(-1) =0. Wybieramy próg e.
Znajdujemy obszary kwantyzacji Vj(k) odpowiadające
poszczególnym wektorom Yj
2
M
Wyznaczamy zniekształcenie D ( k ) =
X − Yi ( k ) f ( X )dX
∑∫
i =1 V ( k )
i
D ( k ) − D ( k −1)
<e
D (k )
4.
JeŜeli
zakończ. JeŜeli nie – kontynuuj
5.
k = k+1, znajdź nowe przybliŜenie Yj(k) jako środków
cięŜkości obszarów Vj(k-1). Przejdź do kroku 2.
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 {Xk} k = 1, .. N (zbiór uczący)
Przebieg zmodyfikowanego algorytmu:
1.
2.
Wybieramy dowolnie początkowy zestaw {Yj(0)}, j=1, .., M. Ustalamy k=0,
D(-1) =0. Wybieramy próg e.
Znajdujemy obszary kwantyzacji Vj(k)
V j( k ) = { X i : d ( X i , Y j( k ) ) < d ( X i , Yn( k ) ) ∀n ≠ j}
3.
Oblicz zniekształcenie: sumę odległości pomiędzy wektorami uczącymi a ich
reprezentantami
D ( k ) − D ( k −1)
<e
D (k )
4.
JeŜeli
zakończ. JeŜeli nie – kontynuuj.
5.
k = k + 1, znajdź nowe przybliŜenie Yj(k) jako średnie wektorów z obszarów
Vj(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
180
Y1
(45, 50)
(44, 41)
....
(44, 41)
65
120
Y2
(75, 117) (58, 102)
....
(57, 90)
59
119
Y3
(45, 117) (64, 117)
....
(62, 116)
64
150
Y4
(80, 180) (69, 168)
....
(69, 168)
65
162
Zn.
....
60.17
57
88
72
175
44
41
k
start
koniec
62
114
Y1
(75, 50)
(44, 41)
60
110
Y2
(75, 117)
(60, 107)
56
91
Y3
(75, 127)
(64, 150)
70
172
Y4
(80, 180)
(70, 172)
387.25
89.0
Rozwiązanie alternatywne:
Algorytm LBG – przykład – c.d.
k=0
k=1
k = kf
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 Ys równego średniej zbioru uczącego
• Rozszczepiamy go na dwa: Y1 = Ys, Y2 = Ys + 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
Rozmiar
słownika
Narzut na słownik
Rozmiar
słownika
Narzut
bpp
Efekt. st.
kompresji
16
0.03125
28.44:1
32:1
64
0.125
16:1
0.375
21.33:1
256
0.5
8:1
8
0.50
16:1
1024
2.0
3.05:1
10
0.625
12.8:1
Bitów
/słowo
kodowe
Bitów
/piksel
16
4
0.25
64
6
256
1024
Stopień
kompresji
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 109
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
Następnie porównujemy wejście do v01 i v02. Znów odrzucamy
połowę pozostałych wektorów
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!!!).
2.
3.
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 {a1, a2, ..., aL} – L niezaleŜnych liniowo wektorów.
Krata:
L
K = {x : x = ∑ui ai } gdzieui ∈ Z
i =1
Kwantyzatory kratowe – punkty wyjściowe naleŜą do
kraty.
Wystarczy pamiętać generatory kraty
Łatwość znalezienia wektora słownikowego najbliŜszego wejściu
Optymalizacja szumu ziarnistego – dobór kraty (np. systemy
pierwiastkowe algebr Liego)
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