Raport Raport System wraz z biblioteką modułów dla zaawansowanej analizy i interaktywnej syntezy ruchu postaci ludzkiej. Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Rozwoju Regionalnego w ramach Programu Operacyjnego Innowacyjna Gospodarka 2007-2013.
Działanie nr 4 Raport nr: 4.3 Tytuł: Finalna implementacja modułu kondensacji Tytuł Projektu: System wraz z biblioteką modułów dla zaawansowanej analizy i interaktywnej syntezy ruchu postaci ludzkiej Data rozpoczęcia Projektu: 01/04/2009 Czas trwania Projektu Koordynator Projektu: 36 miesięcy Polsko Japooska Wyższa Szkoła Technik Komputerowych Termin przedłożenia Raportu 01/04/2011 Autorzy: Akceptujący Dostępne na: Poziom rozpowszechniania Tomasz Krzeszowski, Bogdan Kwolek prof. dr hab. inż. Konrad Wojciechowski http://hm.pjwstk.edu.pl/raporty PP str. 2
Abstrakt: Raport przedstawia architekturę zaimplementowanego systemu do śledzenia ruchu postaci ludzkiej w środowisku wielokamerowym. Śledzenie ruchu odbywa się w oparciu o trójwymiarowy model postaci ludzkiej. Wydzielenie i ekstrakcja postaci ludzkiej odbywa się w oparciu o metody przetwarzana i analizy obrazów. W ramach zadania zaimplementowane i przebadane zostały następujece algorytmy: filtr cząsteczkowy, algorytm optymalizacji roju PSO (ang. Particle Swarm Optimization) oraz algorytm GLPSO (ang. Global-Local Particle Swarm Optimization). W niniejszym dokumencie opisano strukturę przygotowanego systemu, w tym przeznaczenie i funkcjonalnośd poszczególnych klas. Przedstawione zostały także zależności pomiędzy poszczególnymi modułami systemu. W ramach zadania przygotowane zostały także aplikacje pomocnice prezentujące sposób wykorzystania poszczególnych modułów systemu. Aplikacje te zostały przedstawione i opisane w niniejszym dokumencie. str. 3
Historia zmian Data Wersja Autor Opis zmian 23.03 2011 1.0 Tomasz Krzeszowski Bogdan Kwolek Opisano architekturę systemu do śledzenia ruchu postaci ludzkiej. Przedstawiono aplikacje demonstrujące możliwości systemu do śledzenia ruchu postaci. str. 4
Streszczenie Raport przedstawia architekturę systemu do śledzenia ruchu postaci ludzkiej w środowisku wielokamerowym. System posiada budowę modułową. System został zaimplementowany w języku C++ z wykorzystaniem bibliotek Qt oraz OpenSceneGraph (OSG). Przygotowane oprogramowanie zostało skompilowane z wykorzystaniem środowiska Visual Studio 2005/2008 oraz kompilatora GCC. Testy oprogramowania zostały zrealizowane w systemach Windows XP/Vista/7 oraz Linux. W ramach zadania zaimplementowane zostały algorytmy umożliwiające śledzenie ruchu postaci ludzkiej, moduły pomocnicze oraz szereg aplikacji demonstracyjnych. W ramach koocowej implementacji systemu do śledzenia ruchu postaci ludzkiej zaimplementowano trzy algorytmy: filtr cząsteczkowy, algorytm optymalizacji roju PSO (ang. Particle Swarm Optimization) oraz algorytm GLPSO (ang. Global-Local Particle Swarm Optimization). Poszczególne moduły zostały zaprojektowane, aby umożliwid dużą uniwersalnośd oraz konfigurowalnośd systemu. System składa się z następujących modułów: moduł algorytmu śledzącego, model 3D postaci ludzkiej, moduł umożliwiający realizację renderingu modelu postaci ludzkiej na obrazach oraz moduł funkcji celu. Moduł 3D postaci ludzkiej jest w pełni konfigurowalny. W szczególności możliwe jest łatwe ustawienie dowolnej konfiguracji postaci ludzkiej. W ramach zadania zaimplementowano także szereg metod do przetwarzania i analizy obrazów, m.in. metody umożliwiające wydzielenie sylwetki postaci ludzkiej, wydzielenie krawędzi, itp. Przygotowano także metody umożliwiające odczyt plików generowanych przez MoCap, który wykorzystywany jest do określenia jakości (dokładności) śledzenia. W niniejszej pracy opisano także strukturę przygotowanego systemu do śledzenia ruchu postaci ludzkiej. Omówiono przeznaczenie i funkcjonalnośd poszczególnych klas, oraz przedstawiono zależności pomiędzy poszczególnymi modułami systemu. W ramach zadania przygotowane zostały aplikacje prezentujące sposób wykorzystania poszczególnych modułów systemu. W szczególności przygotowano aplikacje demonstrujące połączenie poszczególnych modułów dla śledzenia ruchu postaci ludzkiej. Przygotowano także aplikację demonstrujące wykorzystanie trójwymiarowego modelu postaci ludzkiej oraz modułu umożliwiającego rendering modeli w dwuwymiarowej przestrzeni obrazu. Omówiona została aplikacja demonstrująca sposób użycia algorytmu PSO na przykładzie maksymalizacji funkcji dwóch zmiennych. str. 5
Spis treści Abstrakt:... 3 Historia zmian... 4 Streszczenie... 5 Spis treści... 6 Spis ilustracji... 7 Spis table... 8 1. Cel zadania... 9 2. Wprowadzenie... 10 3. Zrealizowane badania... 11 4. Wyniki eksperymentów... 12 5. Przygotowane oprogramowanie... 14 5.1 Wymagania... 14 5.2 Architektura systemu do śledzenia ruchu postaci ludzkiej... 14 5.3 Omówienie poszczególnych modułów systemu... 15 5.4 Aplikacje demonstracyjne... 17 6. Podsumowanie... 23 7. Literatura... 24 str. 6
Spis ilustracji Rys. 1 Śledzenie postaci ludzkiej na sekwencji 1. Klatki #20, 40, 60, 80, 100, 120, 140, obrazy z kamery 1 (pierwszy wiersz) oraz z kamery 4 (drugi wiersz)... 12 Rys. 2 Przykładowe połączenie poszczególnych modułów w system do estymacji konfiguracji postaci ludzkiej... 15 Rys. 3 Przykładowa konfiguracja modelu 3D postaci ludzkiej... 16 Rys. 4 Aplikacja Model2DRepresentation wyświetlenie krawędzi bocznych modelu... 18 Rys. 5 Okno aplikacji Model3DDemo wyświetlenie szkieletu modelu postaci ludzkiej... 19 Rys. 6 Okno aplikacji demonstrującej zasadę wykorzystania algorytmu PSO... 20 Rys. 7 Aplikacja demonstrująca metodę śledzenia ruchu postaci ludzkiej... 21 Rys. 8 Okno podglądu aktualnej konfiguracji śledzonej postaci... 21 Rys. 9 Aplikacja demonstrująca śledzenie ruchu postaci ludzkiej na rzeczywistych sekwencjach wideo... 22 str. 7
Spis table Tabela 1 Średni błąd i odchylenie standardowe dla markerów umieszczony na całej postaci ludzkiej - algorytm GLPSO... 13 str. 8
1. Cel zadania Celem Zadania 4.3 była koocowa implementacja modułu algorytmu kondensacji do śledzenia ruchu postaci ludzkiej. Przygotowane oprogramowanie ma budowę modułową i jest w pełni konfigurowalne. W ramach zadania zaimplementowano następujące algorytmy: kondensacji stanu (ang. Condensation particle filter), algorytm PSO (ang. Particle Swarm Optimization) oraz algorytm GLPSO (ang. Global-Local Particle Swarm Optimization). Zaimplementowane zostały także moduły dodatkowe wykorzystywane podczas śledzenia ruchu postaci ludzkiej. Przygotowano między innymi moduł modelu 3D postaci ludzkiej. Zastosowanie modelu 3D postaci ludzkiej pozwala na znaczne ograniczenie przestrzeni poszukiwao, ponieważ rozpatrywane są jedynie dopuszczalne konfiguracje postaci ludzkiej, to znaczy konfiguracje określające ruchy możliwe do wykonania przez człowieka. Kolejnym z modułów jest moduł umożliwiający realizację obliczeo zwianych z funkcją celu. Moduł umożliwia porównywanie obrazów, określenie pokrycia krawędzi, itp. Funkcja celu jest wykorzystywana przez algorytm śledzący do określenia w jakim stopniu dana konfiguracja modelu odpowiada poszukiwanej konfiguracji postaci ludzkiej. Zaimplementowany został także moduł umożliwiający rendering modeli 3D postaci ludzkiej w dwuwymiarowej przestrzeni obrazu. Ponadto w ramach zadania przygotowano szereg aplikacji demonstracyjnych. Cały system został zaimplementowany w języku C++, a jego działanie zostało przetestowane w systemach operacyjnych rodziny Windows oraz w systemie Linux. str. 9
2. Wprowadzenie Śledzenie ruchu postaci ludzkiej jest bardzo ważnym problemem i ma wiele potencjalnych zastosowao. Wyniki badao nad śledzeniem ruchu postaci ludzkich mogą zostad wykorzystane np. w medycynie, rozpoznawaniu i analizie czynności wykonywanych przez ludzi, różnorakich systemach zabezpieczeo, a także w przyjaznych użytkownikowi interfejsach i systemach sztucznej/poszerzonej rzeczywistości. Celem śledzenia ruchu postaci jest estymacja aktualnej konfiguracji postaci ludzkiej na podstawie analizy obrazów. Jest to bardzo wymagające zadanie, głównie ze względu na bardzo dużą przestrzeo poszukiwao, różnorodnośd w wyglądzie postaci ludzkich, różnorodnośd otoczenia śledzonej postaci oraz często występujące przesłonięcia poszczególnych części ciała. Dlatego w pracach nad śledzeniem ruchu postaci ludzkiej często stosuje się jednolite tło, modele uproszczone [7], oraz odpowiednio dobrany ubiór postaci w celu wyznaczenia cech charakterystycznych. Do śledzenia ruchu postaci ludzkiej najczęściej wykorzystywany jest algorytm filtru cząsteczkowego lub jego modyfikacje [3,7]. Algorytmy filtrów cząsteczkowych są stosowane do śledzeniu ruchu głównie ze względu na zdolnośd do aproksymacji wielomodalnych rozkładów prawdopodobieostwa w wielowymiarowych przestrzeniach stanu. Ich główną wadą jest koniecznośd zastosowania ogromnej ilości cząstek w celu wiernej aproksymacji rozkładu prawdopodobieostwa, a duża liczba cząstek przekłada się bezpośrednio na czas obliczeo. Jest to główny powód coraz większego zainteresowania algorytmami, które umożliwiają efektywną eksplorację przestrzeni poszukiwao. Do takich algorytmów należy algorytm PSO (ang. Particle Swarm Optimization) [4,5,6]. Algorytm ten czerpie z reguł zachowao społecznych w populacjach organizmów żywych, a jego główne zalety to możliwośd eksploracji przestrzeni oraz zdolnośd do współdzielenia wiedzy o przestrzeni poszukiwao między osobnikami roju. W systemach do śledzenie ruchu postaci ludzkiej bardzo często wykorzystuje się trójwymiarowe modele postaci ludzkiej [3,4,5,6,7]. Zastosowanie modelu postaci ludzkiej pozwala na znaczne ograniczenie przestrzeni poszukiwao, ponieważ hierarchiczna struktura modelu pozwala na odrzucenie dużej liczby konfiguracji reprezentujących ruchy niemożliwe do wykonania przez człowieka. str. 10
3. Zrealizowane badania W ramach prac nad opracowaniem algorytmu kondensacji przetestowano algorytmy filtrów cząsteczkowych, algorytm PSO i jego modyfikacje, a także opracowany algorytm GLPSO. Szczegółowe omówienie poszczególnych algorytmów zawarto w raportach *1,2+ oraz w pracach [4,5,6]. Podczas eksperymentów główną uwagę skupiono na analizie ruchu postaci ludzkiej podczas chodu. W eksperymentach praktycznych uwzględniono różnorodnośd w ubiorze śledzonej postaci, a także różnorodnośd tła. Przetestowanych zostało wiele wariantów różnych funkcji celu m.in. uwzględniających posegmentowane postacie ludzkie, porównywanie krawędzi oraz wydzielonej skóry postaci. Opis poszczególnych funkcji celu można znaleźd w raporcie z zadania 4.2 [2]. Przebadane zostały także różne reprezentacje oraz konfiguracje modelu 3D postaci ludzkiej. Model ten pełni bardzo ważną rolę podczas śledzenia ponieważ jego hierarchiczna struktura pozwala na znaczne ograniczenie przestrzeni poszukiwao. W ramach badania przeprowadzono także udane próby przyspieszenia algorytmu poprzez realizację obliczeo na wielu rdzeniach procesora jednocześnie z wykorzystaniem OpenMP. Zrealizowano także śledzenie ruchu postaci ludzkiej na GPU w technologii CUDA. str. 11
4. Wyniki eksperymentów Eksperymenty zostały przeprowadzone z wykorzystaniem wielokamerowego systemu wizyjnego. System ten składa się z czterech skalibrowanych i zsynchronizowanych kamer. Z systemem wizyjnym został zsynchronizowany system motion capture firmy Vicon, który posłużył do uzyskania wiarygodnych danych odniesienia. System MoCap pracował z częstotliwością 100 Hz i składał się z 10 kamer. Na Rys. 1 przedstawiono rezultaty śledzenia ruchu postaci ludzkiej w oparciu o algorytm GLSPO. W pierwszej fazie algorytmu, tzn. podczas estymacji konfiguracji całej postaci wykorzystywane było 200 cząstek natomiast do estymacji konfiguracji nóg oraz ramion postaci użyto po 50 cząstek. Prezentowana sekwencja składała się z 180 klatek. Rys. 1 Śledzenie postaci ludzkiej na sekwencji 1. Klatki #20, 40, 60, 80, 100, 120, 140, obrazy z kamery 1 (pierwszy wiersz) oraz z kamery 4 (drugi wiersz) Do weryfikacji poprawności śledzenia wykorzystano dane z systemu motion capture w postaci plików.c3d. W celu otrzymania błędów śledzenia dane o położeniu markerów na śledzonej postaci były porównywane z pozycją wirtualnych markerów znajdujących się na model 3D postaci ludzkiej. Do wyznaczenia średniego błędu dla danego markera w kolejnych klatkach sekwencji wideo wykorzystywana jest zależnośd (1). str. 12
d i 1 T T t1 m ( xˆ ) m ( x ) i t i t (1) gdzie m i ( i ) oznacza pozycję wirtualnego markera w przestrzeni 3D, która jest wyznaczona na podstawie wyestymowanej konfiguracji postaci ludzkiej, natomiast m i ( x i ) oznacza pozycję markera odczytaną z pliku.c3d, T określa liczbę klatek sekwencji wideo. W Tabeli 1 przedstawiono rezultaty śledzenia dla dwóch sekwencji wideo. Śledzenie było realizowane z wykorzystaniem algorytmu GLPSO. Średni błąd został wyznaczony dla 39 markerów (4 znajdowały się na głowie, po 7 na każdym z ramion, po 6 na każdej z nóg, 5 na tułowiu, oraz 4 na biodrze). Dla każdego markera i odchlenie standardowe σ i zostało obliczone na podstawie zależności: i 1 T T 1 t1 ( m ( xˆ ) m ( x ) i t i t d ) i 2 (2) Odchylenie standardowe przedstawione w Tabeli 1 jest średnią wartości odchyleo standardowych dla wszystkich markerów. W celu uwiarygodnienia uzyskanych rezultatów pomiary powtórzono dwadzieścia razy. Algorytm GLPSO uzyskał średni błąd śledzenia w granicy 62 mm przy zastosowaniu 300 cząstek oraz 20 iteracji. Jest to wynik porównywalny z wynikami uzyskiwanymi przez inne zespoły pracujące nad śledzeniem ruchu postaci ludzkiej w systemach wizyjnych [2]. W tabeli przedstawiono jedynie rezultaty śledzenia dla najlepszego algorytmu. Pozostałe wyniki przedstawiono w raportach z zadania 2.2 *1+ oraz 4.2 *2+ oraz w pracach *4,5,6+. Tabela 1 Średni błąd i odchylenie standardowe dla markerów umieszczony na całej postaci ludzkiej - algorytm GLPSO Sekwencja 1 Sekwencja 2 liczba cząstek liczba iteracji błąd d [mm] [mm] błąd d [mm] [mm] 100 10 71.19 33.88 73.88 35.58 200 10 67.17 27.83 66.36 25.58 GLPSO 300 10 64.14 25.74 64.52 23.36 100 20 68.03 28.31 67.01 27.72 200 20 66.45 28.35 64.02 23.19 300 20 62.46 23.77 62.59 22.45 str. 13
5. Przygotowane oprogramowanie 5.1 Wymagania 5.1.1 Zalecana konfiguracja sprzętowa Procesor: 1.0 GHz lub szybszy Pamięd operacyjna: min 512 MB 5.1.2 Wymagania programowe System operacyjny: Windows XP, Windows Vista, Windows 7, Linux Biblioteka Qt 4.5.3 lub wersja późniejsza Biblioteka OpenSceneGraph 2.8.0 lub wersja późniejsza 5.1.3 Konfiguracja komputera, na którym testowano oprogramowanie Konfiguracja sprzętowa: Laptop Lenovo Y550 (Intel Core 2 Duo P7350 2.0 GHz, 4GB RAM) Komputer stacjonarny (Intel Core i5-760 2.8 GHz, 4GB RAM) Oprogramowanie: Windows 7, Visual Studio 2005, Visual Studio 2008, Qt 4.5.3, Qt 4.6.2, OSG 2.8.0 Linux Ubuntu 10.10 i386, GCC 4.4.5, Qt 4.7.0, OSG 2.8.3 5.2 Architektura systemu do śledzenia ruchu postaci ludzkiej Na aplikację składają się następujące moduły: EvaluationFunction moduł umożliwiający realizację obliczeo związanych z funkcją celu (klasa EvaluationFunction) str. 14
Model2DRepresentation moduł umożliwiający rendering modeli 3D postaci ludzkich w dwuwymiarowej przestrzeni obrazu (klasa Model2DRepresentation) Model3D moduł modelu 3D postaci ludzkiej (klasy Model3D, Spatial, Bone, Geometry) PSO algorytm PSO (klasy Particle, PSO) Rys. 2 Przykładowe połączenie poszczególnych modułów w system do estymacji konfiguracji postaci ludzkiej 5.3 Omówienie poszczególnych modułów systemu 5.3.1 PSO/PF Moduł zawiera implementacje algorytmów umożliwiających śledzenie ruchu postaci ludzkiej. Na moduł składają się następujące algorytmy: filtr cząsteczkowy algorytm PSO (ang. particle swarm optimization) algorytm GLPSO (ang. global-local particle swarm optimization) str. 15
Poszczególne algorytmy zostały zaprojektowane w taki sposób aby zapewnid jak największą uniwersalnośd i konfigurowalnośd modułu. Jest to realizowane poprzez wydzielenie realizacji obliczeo związanych z funkcją celu poza algorytm, tzn. że funkcja celu jest wyznaczana poza modułem PSO/PF. Takie rozwiązanie pozwala na zastosowanie omawianego modułu w praktycznie dowolnym problemie. Moduł zapewnia także dużą konfigurowalnośd poszczególnych algorytmów. Oprócz standardowych parametrów takich jak liczba cząstek, czy iteracji, można także dowolnie modyfikowad długośd wektora stanu, który określa położenie cząstek w przestrzeni. Algorytmy pozwalają także na zmianę parametru wariancji dla poszczególnych składowych wektora stanu. Parametr ten określa na jak dużym obszarze cząstki będą rozlosowywane. 5.3.2 Model3D Zaimplementowany model 3D postaci ludzkiej oparty jest o strukturę hierarchiczną zwaną grafem sceny. Moduł modelu 3D postaci ludzkiej został zaprojektowany aby umożliwid łatwą konfigurowalnośd oraz dużą uniwersalnośd. Poszczególne części modelu mogą byd reprezentowane za pomocą cylindrów lub prostopadłościanów, a parametryzacja modelu może odbywad się za pomocą macierzy rotacji lub kwaternionów. Na Rys. 3 przedstawiony model 3D postaci ludzkiej w przykładowej konfiguracji. Model ten składa się z jedenastu ruchomych części i operuje w dwudziestosześciowymiarowej przestrzeni swobody. Rys. 3 Przykładowa konfiguracja modelu 3D postaci ludzkiej Najważniejsze funkcjonalności modelu 3D postaci ludzkiej: możliwośd dowolnej konfiguracji struktury modelu (za pomocą pliku konfiguracyjnego), możliwośd poruszania dowolnym elementem struktury modelu, dodawanie elementów struktury modelu, które nie będą wyświetlane podczas renderingu, możliwośd ustawienia aktualnej konfiguracji modelu za pomocą pojedynczego wektora stanu, str. 16
możliwośd ustawienia aktualnej konfiguracji modelu jedynie dla rąk postaci lub nóg postaci, pobranie wektora wierzchołków składających się na strukturą geometryczną modelu, możliwośd pobrania wektora z pozycjami wirtualnych markerów znajdujących się na modelu 3D postaci ludzkiej (porównanie pozycji tych markerów z danymi z pliku.c3d służy do weryfikacji poprawności śledzenia). 5.3.3 Model2DRepresentation Moduł Model2DRepresentation służy do renderingu modeli 3D postaci ludzkiej w dwuwymiarowej przestrzeni obrazu. W celu renderingu modeli konieczne jest ustawienie dla obiektu klasy pf::model2drepresentation obiektu kamery (pf::camera) o odpowiednich parametrach. Obiekt ten jest odpowiedzialny za przejście z przestrzeni 3D do 2D. Do renderingu poszczególne metody klasy Model2DRepresentation, wymagają także podania wektorów z aktualną pozycją wierzchołków składających się na poszczególne elementy modelu 3D postaci ludzkiej. Najważniejsze funkcjonalności modułu: rendering krawędzi modelu 3D (możliwośd ustawienia grubości rysowanych linii i koloru), rendering wypełnionego modelu postaci ludzkiej, możliwośd pobrania wektora z koordynatami pikseli zamalowanych podczas renderingu modelu. 5.3.4 EvaluationFunction Moduł udostępnia zestaw metod wykorzystywanych podczas obliczania wartości funkcji celu. W szczególności moduł pozwala na realizację obliczeo związanych z wartością pokrycia zamalowanych pikseli na dwóch porównywanych obrazach. Udostępnione są także metody, które pozwalają na porównanie pokrycia poszczególnych kolorów na obrazie. 5.4 Aplikacje demonstracyjne W ramach zadania przygotowano szereg aplikacji demonstrujących przykłady wykorzystania poszczególnych modułów systemu. W poniższym rozdziale omówione zostaną funkcjonalności poszczególnych aplikacji demonstracyjnych. str. 17
5.4.1 Model2DRepresentationDemo Aplikacja demonstruje sposób wykorzystania klasy Model2DRepresentation i umożliwia wyświetlenie dwuwymiarowej reprezentacji modelu postaci ludzkiej. Aplikacja pozwala na wyświetlenie modelu w trzech trybach: wyświetlenie bocznych krawędzi modelu (przycisk 1 na klawiaturze), wyświetlenie wypełnionego modelu (przycisk 2 ) oraz wyświetlenie co drugiego piksela wypełnionego modelu. Aplikacja udostępnia także funkcję renderingu modelu na obrazie i zapisu wyniku na dysku w formacie bitmapy (przycisk p ). Za pomocą wybranych przycisków można także poruszad prawym ramieniem modelu postaci ludzkiej (więcej informacji w wyświetlanej instrukcji obsługi przycisk F1 ). Rys. 4 Aplikacja Model2DRepresentation wyświetlenie krawędzi bocznych modelu 5.4.2 Model3DDemo Aplikacja demonstruje sposób użycia modelu 3D postaci ludzkiej w reprezentacji cylindrycznej. Dostępne są dwa tryby wyświetlenia modelu: wyświetlenie szkieletu (przycisk 1 ) oraz wyświetlenie elementów modelu w postaci cylindrów. Aplikacja demonstruje w jaki sposób można poruszad poszczególnymi częściami modelu oraz w jaki sposób wyrenderowad postad na podstawie danych z modelu. str. 18
Rys. 5 Okno aplikacji Model3DDemo wyświetlenie szkieletu modelu postaci ludzkiej 5.4.3 PSODemo Aplikacja demonstruje sposób wykorzystania algorytmu PSO do znalezienia najlepszego rozwiązania dla danego zadania. Zadaniem algorytmu PSO jest znalezienie maksimum funkcji dwóch zmiennych (3). sin( x) sin( y) f ( x), gdzie x, y 0 (3) x y Na Rys. 6 przedstawiono okno omawianej aplikacji, kolorem zielonym oznaczono cząstki algorytmu PSO, najlepsza znaleziona konfiguracja (najlepsza globalna pozycja cząstki) została oznaczona kolorem czerwonym. Maksimum funkcji celu znajduje się na środku okna prezentującego ruch cząstek i zostało oznaczone jasnym kolorem, natomiast minima lokalne ciemnym. Aplikacja pozwala także na zmianę podstawowych parametrów algorytmu PSO, tzn. liczby cząstek i liczby iteracji. Po ustawieniu nowych parametrów cząstki ponownie są rozlosowywane w sposób losowy a algorytm rozpoczyna poszukiwania od początku. str. 19
Rys. 6 Okno aplikacji demonstrującej zasadę wykorzystania algorytmu PSO 5.4.4 SimulationSystemDemo Aplikacja demonstrująca działanie systemu symulacyjnego powstała w celu pokazania istoty działania metody do śledzenia ruchu postaci ludzkiej oraz sposobu wykorzystania przedstawionych modułów. Śledzenie odbywa się w oparciu o algorytm PSO oraz obrazy pobrane z dwóch kamer. Podczas śledzenia wykorzystywany jest także model 3D postaci ludzkiej. Aplikacja została w maksymalny sposób uproszona, aby jak najlepiej zaprezentowad istotę działania algorytmu śledzenia ruchu postaci. W tym celu śledzona jest animowana postad przygotowana w programie 3ds Max, a śledzenie odbywa się jedynie w oparciu o obrazy binarne z wydzieloną postacią (podczas śledzenia ruchu postaci ludzkich na rzeczywistych sekwencjach obrazy tego typu uzyskuje poprzez zastosowanie algorytmów detekcji tła). O skuteczności działania algorytmu świadczy stopieo pokrycia (overlap) obrazu binarnego z obrazem prezentującym model postaci ludzkiej, który został wygenerowany za pomocą modułu Model2DRepresentation. Na zdjęciach wyświetlany jest wynik działania algorytmu śledzącego. Aplikacja pozwala na zmianę podstawowych parametrów algorytmu PSO, powiększenie prezentowanych zdjęd, oraz prezentuje czas estymacji pojedynczej klatki oraz uzyskany stopieo pokrycia. Estymacja może odbywad się w sposób ciągły (przycisk Start ) lub klatka po klatce (w tym trybie w celu wyznaczenia konfiguracji postaci dla każdej klatki sekwencji wideo należy przycisnąd przycisk Next Frame ). Przycisk Stop służy do zatrzymania śledzenia. str. 20
Rys. 7 Aplikacja demonstrująca metodę śledzenia ruchu postaci ludzkiej Aplikacja udostępnia także funkcjonalnośd podglądu aktualnej konfiguracji (przycisk Model 3D preview ) co zostało przedstawione na Rys. 8. Rys. 8 Okno podglądu aktualnej konfiguracji śledzonej postaci 5.4.5 TrackingDemo Aplikacja demonstrująca system do śledzenia ruchu postaci ludzkiej na rzeczywistych sekwencjach wideo. Śledzenie odbywa się w oparciu o algorytm PSO oraz obrazy pobrane z dwóch kamer. Podczas śledzenia wykorzystywane są metody przetwarzania i analizy obrazu w celu wydzielenia cech charakterystycznych śledzonej postaci. W prezentowanym algorytmie wykorzystywane są obrazy z wydzieloną posgementowaną postacią ludzką, obrazy z wydzieloną skórą postaci oraz obrazy z wydzielonymi krawędziami. Aplikacja udostępnia analogiczne funkcjonalności jak w przypadku aplikacji demonstrującej system symulacyjny. str. 21
Rys. 9 Aplikacja demonstrująca śledzenie ruchu postaci ludzkiej na rzeczywistych sekwencjach wideo str. 22
6. Podsumowanie W ramach Zadania 4.3 zrealizowano finalną implementację algorytmu filtru cząsteczkowego, algorytmu PSO oraz GLPSO. Wybór algorytmów do koocowej implementacji został poprzedzony gruntownymi badaniami i analizami co zostało przedstawione w raportach *1,2+ oraz w pracach *4,5,6+. Oprócz wspomnianych algorytmów zaimplementowane zostały także inne moduły wykorzystywane podczas śledzenia ruchu postaci m.in. moduł trójwymiarowego modelu postaci ludzkiej oraz moduł funkcji celu. W badaniach eksperymentalnych najlepsze rezultaty zostały uzyskane przez algorytm GLPSO, który podczas estymacji konfiguracji postaci ludzkiej wykorzystuje hierarchiczną strukturę modelu 3D postaci. Pozwala to na uzyskanie znacznie lepszych wyników niż w przypadku pozostałych przebadanych algorytmów. Weryfikacja dokładności śledzenia została przeprowadzona w oparciu o dane z systemu motion capture firmy Vicon oraz wizualnego oszacowania dokładności na postawie zdjęd z wyrenderowanym modelem postaci ludzkiej. Zaproponowany algorytm GLPSO umożliwia śledzenie ruchu postaci ludzkiej ze średnim błędem w granicy 62 mm. Są to wyniki porównywalne z wynikami uzyskiwanymi przez inne zespoły zajmujące się analizą i śledzeniem ruchu *3]. Przeprowadzone zostały także badania mające na celu skrócenie obliczeo związanych z estymacją konfiguracji postaci ludzkiej. Implementacja algorytmu śledzenia w architekturze opartej o wiele wątków pozwoliło na uzyskanie czasów estymacji pojedynczej klatki na poziomie 1 sekundy. Do implementacji wykorzystano interfejs OpenMP. str. 23
7. Literatura 1. Krzeszowski, T., Kwolek, B.: Raport 2.2 Opracowanie algorytmu kondensacji, 2010. 2. Krzeszowski, T., Kwolek, B.: Raport 4.2 Implementacja algorytmu kondensacji, 2011. 3. Sigal, L., Balan, A., Black, M.: HumanEva: Synchronized Video and Motion Capture Dataset and Baseline Algorithm for Evaluation of Articulated Human Motion. Int. Journal of Computer Vision, vol. 87, pp. 4-27 (2010). 4. 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, vol. 6374/2010, pp. 147-154 (2010). 5. 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, vol. 6374/2010, pp. 155-162 (2010). 6. Krzeszowski, T., Kwolek, B., Wojciechowski, K.: Model-Based 3D Human Motion Capture Using Global- Local Particle Swarm Optimization,, Int. Conf. on Computer Recognition Systems, Advances in Intelligent and Soft Computing, Springer, vol. 95/2011, pp. 297-306 (2011). 7. Fritsch, J., Schmidt, J., Kwolek, B.: Kernel particle filter for real-time 3D body tracking in monocular color images. In: IEEE Int. Conf. on Face and Gesture Rec., Southampton, UK, pp. 567 572. IEEE Computer Society Press, Los Alamitos (2006). 8. Krzeszowski, T., Kwolek, B., Wojciechowski, K.: Model 3D do badao symulacyjnych nad filtrami cząsteczkowymi do śledzenia ruchu postaci ludzkiej. Konferencja projektu System wraz z biblioteką modułów dla zawansowanej analizy i interaktywnej syntezy ruchu postaci ludzkiej, Warszawa (2009). 9. Krzeszowski, T., Kwolek, B., Wojciechowski, K.: Filtr cząsteczkowy do śledzenia ruchu postaci ludzkiej. Konferencja projektu System wraz z biblioteką modułów dla zawansowanej analizy i interaktywnej syntezy ruchu postaci ludzkiej, Warszawa (2009). 10. Krzeszowski, T., Kwolek, B., Wojciechowski, K.: Akwizycja ruchu postaci ludzkiej w wielokamerowym systemie wizyjnym. VI Sympozjum Analiza ruchu teoria i praktyka w zastosowaniach klinicznych Warszawa (2011). str. 24
Egzemplarz bezpłatny Redakcja PJWSTK Wydział Zamiejscowy Informatyki w Bytomiu Aleja Legionów 2, 41-902 Bytom tel.: +48 32 387-16-62 +48 32 387-16-62 fax: +48 32 389-01-31 Strona projektu www.hm.pjwstk.edu.pl