PROGRAM OPERACYJNY INNOWACYJNA GOSPODARKA System wraz z biblioteką modułów dla zaawansowanej analizy i interaktywnej syntezy ruchu postaci ludzkiej Motion Dokumentacja techniczna projektu Wyciąg z raportu technicznego Zakres: Zadanie 2.2.Opracowanie algorytmu kondensacji
Spis treści 1. Cel zadania... 2 2. Wprowadzenie... 3 3. Przygotowane oprogramowanie... 3 Rozdział 1:... 5 4. Zrealizowane badania... 5 4.1. Filtry do śledzenia ruchu postaci ludzkiej... 5 5. Analiza i interpretacja wyników... 14 6. Podsumowanie... 19 1. Cel zadania Celem Zadania 2.2 było opracowanie filtru cząsteczkowego do śledzenia ruchu postaci ludzkiej. Śledzenie ruchu w wielowymiarowej przestrzeni jest zadaniem trudnym oraz czasochłonnym obliczeniowo. W ramach zadania porównano pięd różnych rodzajów filtrów cząsteczkowych o różnych konfiguracjach. W badaniach eksperymentalnych przetestowano filtry zbudowane w oparciu o macierze transformacji, kwaterniony i kąty Eulera. Przebadano skutecznośd oraz szybkośd śledzenia ruchu postaci ludzkiej. Przeprowadzono także badania nad rozwiązaniami algorytmicznymi celem przyśpieszenia działania filtrów poprzez wykorzystanie kart graficznych i technologii CUDA. 2
2.Wprowadzenie Obecnie znaczną częśd uwagi poświęca się śledzeniu ruchu postaci ludzkiej w sekwencjach obrazów *1,2,3,4,5+. Głównym problemem związanym ze śledzeniem ruchu postaci ludzkiej jest estymacja aktualnej konfiguracji postaci. Jest to jeden z najtrudniejszych problemów w komputerowym przetwarzaniu obrazów biorąc pod uwagę bardzo dużą przestrzeo poszukiwao, różnorodnośd w wyglądzie postaci ludzkich oraz różnorodnośd otoczenia śledzonej postaci. W pracach nad śledzeniem ruchu postaci ludzkiej najczęściej stosuje się modele uproszczone *3,7+, jednolite tło *2+ oraz odpowiednio dobrany ubiór postaci ludzkiej w celu wyznaczenia cech charakterystycznych. W pracy *2+ stworzono system do śledzenia ruchu człowieka w oparciu o trójwymiarowy model geometryczny. System wykorzystywał obrazy pochodzące z trzech skalibrowanych kamer. Eksperymenty realizowano w scenariuszach z czarnym tłem. Mimo że wykorzystywano udoskonalony filtr cząsteczkowy z algorytmem symulowanego wyżarzania, uzyskane czasy obliczeo są bardzo długie. Układy wielokamerowe *2,4,6+ są zwykle wykorzystywane w aplikacjach śledzących ruch postaci ludzkiej celem uzyskania lepszych wyników w kontekście wzajemnych przesłonięd przez kooczyny ludzkie i elementy ciała. W aplikacjach tego typu zwykle wykorzystuje się probabilistyczne modele postaci ludzkiej *4+ lub trójwymiarowe modele postaci [2,3,5,7]. 3.Przygotowane oprogramowanie Jak już wspomniano wcześniej śledzenie ruchu postaci ludzkiej w wielowymiarowej przestrzeni stanu jest zadaniem trudnym. Śledzenie ruchu postaci ludzkiej w oparciu o model 3D pozwala na uzyskanie lepszych wyników w porównaniu do rozwiązao opartych na probabilistycznych modelach, wyrażających zależności między treścią obrazu a konfiguracją sylwetki. Ze względu na nieliniową przestrzeo stanu (konfiguracji modelu 3d), a także nieliniowe modele obserwacji, do estymacji konfiguracji postaci ludzkiej zwykle stosuje się metody Monte-Carlo. We wspomnianym podejściu rozkład prawdopodobieostwa 3
aproksymowany jest poprzez zbiór cząstek. W typowym podejściu śledzenie ruchu postaci ludzkiej realizowane jest poprzez filtr cząsteczkowy, w którym cząstki reprezentują hipotezy, zaś wagi wyrażają prawdopodobieostwa hipotez. Celem porównania filtrów opracowano model 3D postaci ludzkiej oraz środowisko do badao symulacyjnych nad filtrami cząsteczkowymi. Dzięki zastosowaniu hierarchicznego modelu postaci ludzkiej, uzyskuje się ograniczenie przestrzeni poszukiwao, w której operują cząstki. Przygotowany model 3D (Rys. 1) składa się z 11 elementów i posiada dwudziestosześciowymiarową przestrzeo swobody. Głowa (2), tułów (1) oraz ramiona (5, 6) mają po 3 stopnie swobody, ponieważ możemy nimi obracad wokół dowolnej osi. Biodro (0) posiada 6 stopni, dzięki czemu można przesuwad oraz obracad cały model. Dwa stopnie swobody posiadają uda (3, 4), ponieważ nie mają możliwości obrotu wokół własnej osi. Pozostałe części modelu, czyli przedramiona (9, 10) i łydki (7, 8), mają jeden stopieo swobody. Rys. 1 Model 3D postaci ludzkiej Prezentowany na Rys. 1 model znajduje się w konfiguracji podstawowej, którą można rozszerzyd poprzez dodanie kolejnych elementów (dłoni, stóp itd.). Na Rys. 2 zaprezentowano poglądowy schemat systemu, który wykorzystywano w badaniach nad filtrami cząsteczkowymi do śledzenia ruchu postaci ludzkiej. Aktualna konfiguracja postaci jest estymowana przez filtr cząsteczkowy, który reprezentuje wiele hipotetycznych stanów reprezentujących konfiguracje człowieka. Z każdą hipotetyczną konfiguracją związana jest waga, która reprezentuje podobieostwo konfiguracji do aktualnej konfiguracji człowieka. Każda z tych hipotetycznych konfiguracji postaci jest w pierwszej kolejności rzutowana do przestrzeni 2D, gdzie następuje porównanie z dwuwymiarową 4
reprezentacją postaci, otrzymaną na podstawie danych z kamery lub systemu symulacyjnego. W trakcie porównywania wykorzystywane są cechy obrazów, np. krawędzie, kolory obiektów, gradient obrazu. Na Rys. 2 wspomniane cechy obrazu zaznaczono w sposób schematyczny za pomocą znaku x. Rys. 2 Schemat systemu do projektowania i testowanie filtru cząsteczkowego Rozdział 1: 4.Zrealizowane badania 4.1. Filtry do śledzenia ruchu postaci ludzkiej W trakcie prac zaimplementowano oraz przetestowano pięd różnych filtrów, z których każdy operuje w dwudziestosześciowymiarowej przestrzeni. Poniżej omówiono poszczególne filtry. 5
1.1.1. Filtr cząsteczkowy Filtr cząsteczkowy (ang. particle filter) aproksymuje rozkład prawdopodobieństwa za pomocą zbioru próbek w przestrzeni stanów systemu. Gęstość występowania próbek w danym obszarze reprezentuje prawdopodobieństwo iż system znajduje się w określonym punkcie przestrzeni stanów. W praktycznej realizacji algorytmu dla każdej próbki wyznaczana jest waga określająca trafnośd z jaką dana cząstka odwzorowuje dany stan. Wartośd wag dla poszczególnych cząstek można wyznaczyd z zależności: 2 1 1 f st w t exp, (1) 2 gdzie w t oznacza wagę cząstki a s t jej stan w danym czasie. W algorytmie można wyróżnid kilka podstawowych faz: predykcję, wyliczenie wag, normalizację, estymację i resampling. Podczas predykcji wyliczany jest nowy stan s t wszystkich cząstek. Nowe stany są wyznaczane na podstawie stanu cząstki dla czasu t-1. Bardzo ważną fazą algorytmu jest resampling. Podczas resamplingu losowane są najlepsze cząstki, które są następnie brane pod uwagę w fazie predykcji dla czasu t. Dzięki temu zabiegowi w kolejnej iteracji brane są pod uwagę jedynie próbki, które stosunkowo trafnie odwzorowują właściwy stan. Takie podejście zapobiega zjawisku degeneracji cząstek, które polega na propagowaniu do następnego kroku mało istotnych cząstek. Zaimplementowany algorytm filtru cząsteczkowego można przedstawid w następujący sposób: 1. Predykcja: przewidywanie stanów s t cząstek na podstawie stanu s t-1 2. Wyliczenie wag: wyliczenie wag w t dla wszystkich cząstek za pomocą wzoru (1) 3. Normalizacja wag 4. Estymacja: wyznaczenie najlepszej cząstki 5. Resampling: losowanie cząstek na podstawie wag w i Jak już wspomniano filtr cząsteczkowy aproksymuje rozkład prawdopodobieostwa za pomocą zbioru próbek. Przy odpowiednio dużej liczbie cząstek rozkład ten jest dobrze określony. W podstawowym 6
algorytmie filtru cząsteczkowego liczba cząstek powinna rosnąd ekspotencjalnie wraz ze wzrostem wymiarowości przestrzeni stanów. W praktyce liczba ta może byd znacząca, w szczególności w zadaniach estymacji ruchu postaci ludzkiej. W konsekwencji konieczne jest zastosowanie modyfikacji filtru cząsteczkowego, które pozwoliłby na zmniejszenie ilości cząstek. Przykłady modyfikacji filtru cząsteczkowego zostaną przedstawione w dalszej części raportu. 1.1.2. PSO Optymalizacja w oparciu o rój cząstek (ang. particle swarm optimization) PSO jest nowoczesną metodą poszukiwania stochastycznego, czerpiącą z reguł zachowao społecznych w populacjach organizmów żywych. Główną zaletą omawianego algorytmu jest to, że osobnicy pamiętają znalezione wcześniej najlepsze położenia, czyli dysponują pseudo-gradientową informacją o przestrzeni poszukiwania. Dodatkowo poprzez wzajemne oddziaływania na siebie oraz sprzężenia zwrotne osobnicy dzielą się wiedzą między sobą. Prowadzi to do znaczącego wzrostu skuteczności poszukiwao najlepszego rozwiązania. Zaimplementowany algorytm roju jest asynchroniczną wersją PSO z globalnym sąsiedztwem. Każda z cząstek i zawiera aktualną pozycje cząstki x i, aktualną prędkośd v i, i najlepszą pozycję cząstki y i. Dla każdej cząstki składowa j prędkości v i może byd wyliczona w następujący sposób: v v cr y x ) cr ( yˆ x ) (2) i, j i, j 1, j ( i, j i, j 2, j j i, j lub: v K v cr ( y x ) cr ( yˆ x )), (3) i, j ( i, j 1, j i, j i, j 2, j j i, j gdzie ω jest współczynnikiem inercyjnym (w zaimplementowanym algorytmie ω=1.2 ), r 1,j i r 2,j są liczbami losowymi z rozkładu jednorodnego w przedziale (0, 1), zaś c jest mnożnikiem wagowym, który powinien przyjmowad wartości większe od zera (w zaimplementowanym algorytmie c=2.05). Współczynnik K można wyliczyd ze wzoru: 7
2 K, (4) 2 2 4 gdzie γ=2c. W badaniach eksperymentalnych przetestowana została wersja algorytmu PSO z prędkością wyliczoną za pomocą wzorów (2) oraz (3). PSO wykorzystujący wzór (2) uzyskiwał lepsze wyniki, dlatego zaleca się stosowanie tego wzoru. Po wyliczeniu prędkości nową pozycję cząstki można wyliczyd ze wzoru: x i j xi, j vi, j, (5) W algorytmie niezbędny jest mechanizm kontroli prędkości maksymalnej by cząstki przemieszczające się ruchem odcinkowo prostoliniowym nie mijały dobrych rozwiązao. Zaimplementowany algorytm roju można przedstawid w następujący sposób: 1. Funkcja y ˆ PSO( ) 2. Inicjalizuj x, v 3. y = x, ( y) arg min f ( x) 4. Powtarzaj f x 5. Dla każdej cząstki 6. Uaktualnij prędkośd cząstki v i w oparciu o zależności (2) lub (3) 7. Uaktualnij pozycję cząstki x i za pomocą (5) 8. If f y ) f ( x ), uaktualnij najlepszą lokalną pozycję cząstki y i xi ( i i 9. If f ( yˆ) f ( xi ), uaktualnij najlepszą globalną pozycję cząstek ŷ xi 10. Dopóki iteracja < max_iteracji W omawianym algorytmie, dzięki zdolności zapamiętywania najlepszych położeo oraz zdolności dzielenia się informacją, cząstki wyszukują obszary z wartościami funkcji celu przyjmującymi największe wartości. 8
Przetestowana została także wersje PSO z wieloma sąsiedztwami. Uzyskiwane wyniki pokrycia były zbliżone do standardowego algorytmu PSO, lecz uzyskane odchylenie standardowe dla poszczególnych klatek było mniejsze (uzyskiwane wyniki były bardziej stabilne). 1.1.3. PSO + Filtr cząsteczkowy W celu zwiększenia dokładności śledzenia przez algorytm PSO zrealizowano filtr hybrydowy łączący cechy standardowego filtru cząsteczkowego z PSO. W naszym podejściu głównym zadaniem filtru cząsteczkowego jest propagacja najlepszych cząstek do następnego kroku, dzięki czemu cząstki są lepiej rozłożone w przestrzeni. Natomiast zadaniem algorytmu PSO jest estymacja dokładnej konfiguracji postaci ludzkiej. Zaimplementowany algorytm hybrydowy można przedstawid w następujący sposób: 1. Predykcja: przewidywanie stanów s t cząstek na podstawie s t-1 2. Ruch cząstek algorytmem PSO 3. Wyliczenie wag: wyliczenie wag w t dla wszystkich cząstek za pomocą wzoru (1) 4. Normalizacja wag 5. Estymacja: wyznaczenie najlepszej cząstki 6. Resampling: losowanie cząstek na podstawie wag w i Główna zaletą omawianego filtru jest możliwośd propagacji najlepszych cząstek do następnego kroku, co pozwala na uzyskanie lepszych rezultatów, w porównaniu do standardowego PSO, przy mniejszej ilości cząstek i iteracji. 1.1.4. Filtr cząsteczkowy z Mean-Shift Zaimplementowany algorytm Mean-Shift jest modyfikacją standardowego filtru cząsteczkowego i umożliwia bardziej efektywną eksplorację przestrzeni stanów w trakcie śledzenia ruchu postaci ludzkiej. Celem zmniejszenia liczby zdegenerowanych cząstek, to znaczy cząstek które ulokowane są w obszarach 9
charakteryzujących się małymi wartościami prawdopodobieostw obserwacji, cząstki przemieszczane są do obszarów o większych wartościach prawdopodobieostw obserwacji za pomocą deterministycznego algorytmu przesunięcia do średniej (ang. mean-shift). W algorytmie Mean-Shift mając do dyspozycji punkt początkowy wyznacza się wektor przesunięcia w kierunku maksimum funkcji rozkładu prawdopodobieostwa, zob. Rys. 3. Wektor przesunięcia wyznaczany jest iteracyjnie w zdefiniowanym zawczasu otoczeniu aż długośd tego wektora nie spadnie poniżej pewnego progu. t-1 t Rys. 3 Algorytm Mean-Shift w dwóch kolejnych iteracjach Nowe pozycje cząstek są wyliczane na podstawie wag cząstek, które znajdują się w danym sąsiedztwie za pomocą wzoru: s i N s k k 0 N k 0 w w k k, (6) gdzie s i oznacza stan cząstki, dla której wyliczana jest nowa pozycja, a s k i w k oznaczają odpowiednio cząstki które znajdują się w kernelu s i oraz wagi tych cząstek. W algorytmie wykorzystywanym w 10
badaniach eksperymentalnych wartośd kernela została ustalona na 8. Wielkośd kernela w każdej kolejnej iteracji powinna byd mniejsza. Do wyliczenia aktualnej wielkości kernela można wykorzystad wzór: K i 0.75 K 0, (7) gdzie K oznacza wielkośd kernela w danej iteracji, K 0 początkowy kernel, a i jest numerem aktualnej iteracji. Zaimplementowany algorytm można przedstawid w następujący sposób: 1. Predykcja: przewidywanie stanów s t cząstek na podstawie s t-1 2. Powtarzaj 3. Wyliczenie wag: wyliczenie wag w t dla wszystkich cząstek za pomocą wzoru (1) 4. Normalizacja wag 5. Mean-Shift: ruch cząstek z wykorzystaniem wzoru (6) 6. Dopóki iteracja < max_iteracji 7. Wyliczenie wag: wyliczenie wag w t dla wszystkich cząstek za pomocą wzoru (1) 8. Normalizacja wag 9. Estymacja: wyznaczenie najlepszej cząstki 10. Resampling: losowanie cząstek na podstawie wag w i Filtr Mean-Shift pozwala na znaczna zmniejszenie ilości cząstek, które są potrzebne do skutecznego śledzenia ruchu postaci ludzkiej. Niestety odpowiednie ustawienie filtru jest zadaniem trudnym i wymaga wielu eksperymentów. W testach implementacji ustawiono ilośd iteracji na 3, a wielkośd kernela na 8. 1.1.5. Filtr cząsteczkowy z symulowanym wyżarzaniem 11
Filtr cząsteczkowy z symulowanym wyżarzaniem (ang. annealed particle filter) jest modyfikacją standardowego filtru cząsteczkowego. W opisywanym filtrze funkcja celu jest początkowo wygładzana, a w kolejnych iteracjach następuje stopniowe wyostrzanie funkcji. Dzięki takiemu podejściu cząstki stopniowo są kierowane w kierunku lokalnych maksimów funkcji. Wygładzenie funkcji jest realizowane poprzez modyfikację wzoru (1) pozwalającego na wyliczenie wagi. Zmodyfikowany wzór na wyliczanie wag cząstek ma następującą postad: w t 2 1 exp 1 f s t 2 a, (8) gdzie a oznacza współczynnik wyżarzania przyjmujący wartości z przedziału (0.1, 0.9). W kolejnych iteracjach wartośd współczynnika a jest zwiększana, co powoduje stopniowe zmniejszenie stopnia wygładzenia funkcji celu. Zaimplementowany algorytm można przedstawid w następujący sposób: 1. Predykcja: przewidywanie stanów s t cząstek na podstawie s t-1 2. Powtarzaj 3. Wyliczenie wag: wyznaczenie w t dla wszystkich cząstek za pomocą wzoru (8) 4. Normalizacja wag 5. Resampling: losowanie cząstek na podstawie wag w i 6. Ruch wylosowanych cząstek 7. Dopóki iteracja < max_iteracji 8. Wyliczenie wag: wyznaczenie w t dla wszystkich cząstek za pomocą wzoru (1) 9. Normalizacja wag 10. Estymacja: wyznaczenie najlepszej cząstki 11. Resampling: losowanie cząstek na podstawie wag w i 12
Filtr cząsteczkowy z symulowanym wyżarzaniem uzyskuje dobre wyniki w przypadku sekwencji wideo z dużą ilością klatek na sekundę (w pracy *2+ uzyskano dobre wyniki przy 60 klatkach na sekundę). Natomiast przy mniejszej ilości klatek uzyskuje on nieco słabsze wyniki. 4.2. Algorytm PSO na GPU W celu znacznego przyspieszenia obliczeo związanych z śledzeniem ruchu postaci ludzkiej zaimplementowano filtr PSO na GPU z wykorzystaniem technologii CUDA. Niestety ze względu na architekturę CUDA konieczne stało się zastosowanie synchronicznej wersji PSO, która jest mniej efektywna w przeszukiwaniu wielowymiarowej przestrzeni stanu. Różnice w skuteczności śledzenia wynikają z kolejności w jakiej są wykonywane poszczególne kroki algorytmu. W przypadku wersji synchronicznej PSO, najpierw następuje wyliczenie nowych pozycji wszystkich cząstek i dopiero wtedy wyliczana jest najlepsza uzyskana pozycja dla wszystkich cząstek (najlepsza konfiguracja postaci ludzkiej). W algorytmie asynchronicznym PSO po wyliczeniu każdej z cząstek następuje aktualizacja najlepszej uzyskanej pozycji (najlepszej uzyskanej konfiguracji postaci ludzkiej). Zaimplementowany synchroniczny algorytm PSO można przedstawid w następujący sposób: 1. Funkcja y ˆ PSO( ) 2. Inicjalizuj x, v 3. y = x, ( y) arg min f ( x) 4. Powtarzaj f x 5. Uaktualnij prędkośd wszystkich cząstek v i za pomocą wzoru (2) lub (3) 6. Uaktualnij pozycję wszystkich cząstek x i za pomocą wzoru (5) 7. If f y ) f ( x ), uaktualnij najlepszą lokalną pozycję cząstki y i xi ( i i 8. If f ( yˆ) f ( xi ), uaktualnij najlepszą globalną pozycję cząstek ŷ xi 9. Dopóki iteracja < max_iteracji 13
Pomimo mniejszej skuteczności synchronicznego algorytmu PSO w śledzeniu ruchu postaci ludzkiej jest on wart zainteresowania, ponieważ jego implementacja na GPU pozwala na znaczne przyspieszenie obliczeo. 5.Analiza i interpretacja wyników Eksperymenty przeprowadzono na 40 kolejnych klatkach sekwencji wideo zarejestrowanej w jednym z domów studenckich. Obrazy wejściowe miały rozdzielczośd 720x576 pikseli i były rejestrowane z szybkością 6fps. Niska częstotliwości rejestrowanych obrazów wejściowych była dodatkowym czynnikiem utrudniającym śledzenie przez prezentowane filtry. Pomiary wykonano na laptopie Lenovo Y530 wyposażonym w dwurdzeniowy procesor o taktowaniu 2.0 GHz. Przeprowadzone zostały także testy śledzenia ruchu postaci ludzkiej wygenerowanej przy pomocy programu Blender. Śledzenie tak przygotowanej postaci przez filtr PSO również było prawidłowe. Na Rys. 4 zaprezentowano dwie klatki z badanej sekwencji wideo. W prawym dolnym rogu obrazów umieszczono modele, które były porównywane przez system symulacyjny z obrazami wygenerowanym na podstawie danych z poszczególnych filtrów. Model po lewej stronie jest modelem wygenerowanym przez system symulacyjny (zob. także Rys. 2), natomiast model po prawej jest modelem postaci ludzkiej, którą wygenerowano w programie Blender. 14
Rys. 4 Przykładowe klatki badanej sekwencji wideo z nałożonym modelem. W prawym dolnym rogu obrazów znajdują się obrazy, które były porównywane z obrazami generowanymi przez filtry 5.1. Porównanie filtrów do śledzenia ruchu postaci ludzkiej W Tabeli 1 przedstawiono średnie czasy obliczeo (kolumna 4) oraz średnie wyniki pokrycia się obrazu odniesienia z obrazem wygenerowanym na podstawie konfiguracji modelu 3D wyznaczonej przez filtr (kolumna 3). Zdecydowanie najlepsze wyniki uzyskuje filtr cząsteczkowy z algorytmem roju. Filtr ten uzyskuje zadowalające wyniki śledzenia ruchu postaci ludzkiej już przy wykorzystaniu 200 cząstek i 10 iteracjach, a jedna klatka przetwarzana jest w czasie 2.46s. Podobne rezultaty czasowe uzyskuje standardowy algorytm roju. Pozostałe przebadane filtry uzyskują już znacznie gorsze rezultaty czasowe oraz uzyskanego średniego pokrycia. Zgodnie z przewidywaniami zdecydowanie najgorzej wypada standardowy filtr cząsteczkowy, który potrzebuje bardzo dużej ilości cząstek do śledzenia ruchu postaci ludzkiej. Nawet przy zastosowaniu 20000 cząstek uzyskane wyniki pokrycia się obrazów są znacznie gorsze niż w przypadku filtru cząsteczkowego z zaimplementowanym algorytmem roju. Na uwagę zasługują także filtr Mean-Shift oraz filtr cząsteczkowy z symulowanym wyżarzaniem, które śledzą ruch postaci ludzkiej w czasie odpowiedni 3.5s oraz 5.6s. Jednak podobnie jak w przypadku standardowego filtru cząsteczkowego jest to śledzenie dużo mniej dokładne niż w przypadku filtru cząsteczkowego z algorytmem roju. 15
Tabela 1 Skuteczność śledzenia postaci ludzkiej przez filtr cząsteczkowy (PF), algorytm roju (PSO), filtr cząsteczkowy z algorytmem roju (PSO+PF), filtr Mean-Shift (KPF) oraz filtr z symulowanym wyżarzaniem (APF) #cząstki #it pokrycie [%] czas [s] 20000 0.75 22.92 PF 10000 5000 0.74 0.73 11.39 5.69 2000 0.67 2.71 1000 10 0.83 12.45 500 10 0.80 6.20 PSO 200 1000 10 5 0.76 0.81 2.49 6.79 500 5 0.78 3.40 200 5 0.76 1.36 1000 10 0.83 12.63 500 10 0.82 6.24 PSO+PF 200 1000 10 5 0.80 0.82 2.50 6.90 500 5 0.81 3.41 200 5 0.78 1.36 KPF 2000 1000 3 3 0.76 0.74 7.26 3.50 2000 10 0.79 22.38 APF 1000 10 0.78 11.16 500 10 0.75 5.60 16
Na Rys. 5 przedstawiono wyniki pokrycia uzyskanego przez poszczególne filtry w kolejnych klatkach sekwencji wideo. Rys. 5 Pokrycie obrazów referencyjnych z obrazami wygenerowanymi na podstawie konfiguracji wyestymowanej przez filtry w kolejnych klatkach sekwencji wideo. PF - filtr cząsteczkowy, PSO - algorytm roju, PSO+PF - filtr cząsteczkowy z algorytmem roju, KPF - filtr Mean-Shift, APF - filtr z symulowanym wyżarzaniem Na Rys. 5 można zaobserwowad jak zmienia się skutecznośd śledzenia w poszczególnych klatkach sekwencji wideo. W klatkach #13, #25 i #38 następuje spadek uzyskiwanego przez poszczególne filtry pokrycia, jest to spowodowane szybszym ruchem postaci ludzkiej w wymienionych klatkach, przez co postad śledzona jest mniej dokładnie. Zdecydowanie najlepiej z takim zmianami radzą sobie filtry wykorzystujące algorytm PSO. Pozwalają one na uzyskanie dokładnego śledzenia podczas całej sekwencji wideo. 17
5.2. Algorytm PSO na GPU W Tabeli 2 przedstawiono porównanie czasów obliczeo dla algorytmu PSO zaimplementowanego na CPU oraz na GPU. Obliczenia dla algorytmu zaimplementowanego na GPU zostały przeprowadzone na dwóch różnych kartach: GeForce GT 130M i GeForce GTX 280. Pierwsza z kart była wyposażona w 4 multiprocesory taktowane zegarem 1.5GHz, z których każdy miał 8 rdzeni, oraz 512MB RAM. Druga z kart miała 30 multiprocesorów taktowanych zegarem 1.3GHz, z których każdy miał 8 rdzeni, oraz 1GB RAM. Implementacja algorytmu PSO na GPU pozwoliła na uzyskanie ponad 15 krotnego przyspieszenia obliczeo w przypadku karty GTX 280. Na karcie w laptopie (GT 130M) uzyskano ponad dwukrotne przyspieszenie. Tabela 2 Średni czas obliczeń pojedynczej klatki sekwencji wideo [sek.] CPU GT 130M GTX 280 #4000, 10 it. 48.89 20.35 2.94 #2000, 10 it. 24.51 10.06 1.49 #1000, 10 it. 12.28 5.26 0.75 #500, 10 it. 6.12 2.65 0.39 #4000, 5 it. 26.74 11.19 1.59 #2000, 5 it. 13.38 5.52 0.81 #1000, 5 it. 6.68 2.87 0.41 #500, 5 it. 3.34 1.45 0.22 Ze względu na architekturę CUDA, zaimplementowano synchroniczną wersją PSO, która jest mniej efektywna w śledzeniu ruchu postaci ludzkiej niż wersja asynchroniczna. Porównanie efektywności śledzenia dla wersji asynchronicznej i synchronicznej przedstawiono w Tabeli 3. 18
Tabela 3 Średnie pokrycie uzyskane przez asynchroniczny i synchroniczny algorytm PSO PSO PSO asynchroniczny synchroniczny #2000, 10 it. 0.85 0.80 #1000, 10 it. 0.83 0.79 #500, 10 it. 0.80 0.78 #2000, 5 it. 0.82 0.80 #1000, 5 it. 0.81 0.78 #500, 5 it. 0.78 0.75 Pomimo mniejszej skuteczności synchronicznego algorytmu PSO, jest on wart zainteresowania, ponieważ jego implementacja na GPU pozwala na uzyskanie bardzo dużych przyśpieszeo (w naszym przypadku jest to przyspieszenie ponad piętnastokrotne). Warto nadmienid, że można uzyskad jeszcze większe przyspieszenie obliczeo poprzez zastosowanie specjalizowanych kart obliczeniowych takich jak np. nvidia Tesla. 6.Podsumowanie W ramach Zadania 2.2 przetestowano szereg różnych filtrów pod kątem skuteczności śledzenia ruchu postaci ludzkiej. Przeprowadzone badania wykazały, że najskuteczniejsze w omawianym zastosowaniu są filtry cząsteczkowe oparte na algorytmie PSO. Takie filtry pozwalają uzyskad najlepsze efektywności śledzenia, a także czasy estymacji konfiguracji postaci ludzkiej. W pracy w szczególności przebadano filtr 19
hybrydowy PSO+PF, który nie był do tej pory wykorzystywany w pracach związanych ze śledzeniem ruchu postaci ludzkiej. Filtr ten został porównany z innymi filtrami cząsteczkowymi. Uzyskano znacznie lepsze wyniki skuteczności śledzenia oraz czasy obliczeo *8,9+. W badaniach eksperymentalnych najlepsze wyniki uzyskano dla filtrów zbudowanych w oparciu o kąty Eulera. Eksperymenty zrealizowano na rzeczywistych obrazach dla różnych konfiguracji filtrów cząsteczkowych. Czasy obliczeo na GPU są około piętnastu razy krótsze w porównaniu do czasów obliczeo na CPU. W literaturze brak jest wzmianki odnośnie wykorzystania GPU do śledzenia ruchu postaci ludzkiej. Literatura [1] Poppe, R.: Vision-based human motion analysis: an overview. Computer Vision and Image Understanding 108 (2007) 4-18. [2] Deutscher, J., Blake, A., Reid, I.: Articulated body motion capture by annealed particle filtering, IEEE Int. Conf. on Pattern Recognition, 2000, 126 133. [3] Schmidt, J., Fritsch, J., Kwolek, B.: Kernel particle filter for real-time 3D body tracking in monocular color images, IEEE Int. Conf. on Automatic Face and Gesture Rec., 2006, 567-572. [4] Sigal, L., Bhatia, S., Roth, S., Black, M.J., Isard, M.: Tracking loose-limbed people, IEEE Int. Conf. on Computer Vision and Pattern Recognition, 2004, vol. 1, 421 428. [5] Sidenbladh, H., Black, M. Fleet, D.: Stochastic tracking of 3D human figures using 2D image motion. In: Europen Conference on Computer Vision (2000) 702-718. [6] Rosales, R., Siddiqui, M., Alon, J., Sclaroff, S.: Estimating 3d body pose using uncalibrated cameras, Int. Conf. on Computer Vision and Pattern Recognition, 2001, 821 827. [7] Ivekovic, S., Trucco, E., Petillot, Y.R.: Human body pose estimation with particle swarm optimisation. Evolutionary Computation 16 (2008) 509-528. [8] Krzeszowski, T., Kwolek, B., Wojciechowski, K.: Articulated Body Motion Tracking by Combined Particle Swarm Optimization and Particle Filtering, Int. Conf. on Computer Vision and Graphics, Lecture Notes in Computer Science, Springer 2010 (przyjęta). 20
[9] Krzeszowski, T., Kwolek, B., Wojciechowski, K.: GPU-Accelerated Tracking of the Motion of 3D Articulated Figure, Int. Conf. on Computer Vision and Graphics, Lecture Notes in Computer Science, Springer 2010 (przyjęta). 21