ˇ ENI´ TECHNICKE´ V BRNEˇ VYSOKE´ UC BRNO UNIVERSITY OF TECHNOLOGY
ˇ NI´CH TECHNOLOGII´ FAKULTA INFORMAC ˇ ´ITAC ˇ OVE´ GRAFIKY A MULTIME´DII´ ´ STAV POC U FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA
ˇ ´IHO VC ˇ ETNE ˇ GEST ´ NI´ ROZHODC SLEDOVA ˇ I AGILITY PR
ˇ SKA ´R ´ PRA´CE BAKALA BACHELOR’S THESIS
AUTOR PRA´CE AUTHOR
BRNO 2013
PETR PALATA
ˇ ENI´ TECHNICKE´ V BRNEˇ VYSOKE´ UC BRNO UNIVERSITY OF TECHNOLOGY
ˇ NI´CH TECHNOLOGII´ FAKULTA INFORMAC ˇ ´ITAC ˇ OVE´ GRAFIKY A MULTIME´DII´ ´ STAV POC U FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA
ˇ ´IHO VC ˇ ETNEˇ GEST ´ NI´ ROZHODC SLEDOVA ˇ I AGILITY PR TRACKING JUDGE INCLUDING GESTURES IN AGILITY
ˇ SKA´ PRA´CE ´R BAKALA BACHELOR’S THESIS
AUTOR PRA´CE
PETR PALATA
AUTHOR
VEDOUCI´ PRA´CE SUPERVISOR
BRNO 2013
doc. Ing. ADAM HEROUT, Ph.D.
Abstrakt Tato práce se zabývá možností implementace sledování rozhodčího včetně jeho gest ve sportu agility. Začátek práce je věnován krátkému úvodu ke sportu agility. Následně je navržen konceptuální systém, jehož prvky jsou postupně rozebrány v jednotlivých kapitolách. Práce integruje sledovač člověka z dostupných open-source knihoven a zabývá se trénováním dvou SVM klasifikátorů za použítí Bag of Words deskriptorů.
Abstract This thesis focuses on tracking an Agility judge including his gestures. The beginning is dedicated to a brief introduction into Agility. After that, a conceptual system is presented and its parts are then described in the individual chapters. The thesis evaluates available open-source human trackers and integrates them into the system. Posture and hand recognition are done using two SVM classifiers trained with Bag of Words descriptors.
Klíčová slova Sledování člověka, agility rozhodčí, Bag of Words model, Support Vector Machines, rozpoznávání gesta, rozpoznávání pózy.
Keywords Human tracking, Agility judge, Bag of Words Model, Support Vector Machines, gesture recognition, posture recognition.
Citace Petr Palata: Sledování rozhodčího včetně gest při agility, bakalářská práce, Brno, FIT VUT v Brně, 2013
Sledování rozhodčího včetně gest při agility Prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením pana docenta Adama Herouta. ....................... Petr Palata 15. května 2013
Poděkování Rád bych poděkoval panu docentu Adamu Heroutovi za jeho cenné připomínky a odborné rady při vypracování této bakalářské práce.
c Petr Palata, 2013.
Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů.
Obsah 1 Úvod
2
2 Co je to agility? 2.1 Role rozhodčího . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 3
3 Navržený systém 3.1 Sledování člověka . . . . . . . . . . . . . . 3.1.1 Sledování pomocí detekce . . . . . 3.1.2 Částicový filtr . . . . . . . . . . . . 3.2 Rozpoznání zdvižené paže a gesta . . . . . 3.2.1 Scale Invariant Feature Transform 3.2.2 Bag of Visual Words . . . . . . . . 3.2.3 Support Vector Machines . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
4 5 5 5 5 6 7 8
4 Implementace sledování člověka 4.1 Dostupné open-source knihovny 4.1.1 FragTrack . . . . . . . . 4.1.2 MILTrack . . . . . . . . 4.1.3 OpenTLD . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
10 10 10 11 12
5 Implementace rozpoznání postavy a gesta 5.1 Datová sada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Velikost Bag of Words slovníku . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Trénování SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13 13 13 15
6 Experimenty se systémem 6.1 Anotační nástroj . . . . . . . . . 6.2 Testovací scénáře . . . . . . . . . 6.3 Vyhodnocování výsledků systému 6.4 Výsledky testování scénářů . . .
19 19 19 20 20
. . . .
. . . .
. . . .
. . . .
. . . .
7 Závěr
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
22
1
Kapitola 1
Úvod V posledních několika letech se v rozličných oborech lidské činnosti začaly uplatňovat techniky počítačového vidění. Autonomní systémy založené na počítačovém zpracovaní obrazu se využívají na sledování chování osob, v inteligentních vozidlech, robotech, systémech pro kontrolu jakosti, ale také pro zjednodušení práce pořadatelů v některých sportech. Vývoj takových systémů není nikdy snadný a vyžaduje vždy individuální přístup s ohledem na požadovaný výsledek. Automatizace některých manuálních lidských činností je velkou výzvou. Cílem této práce je uplatňení poznatků z výzkumu v počítačovém vidění na vytvoření automatického systému pro sledování rozhodčího v agility včetně jeho gest. Systém by měl v ideálním případě fungovat v reálném čase, aby se dal používat při pořádání závodů v praxi. Existence takového systému by částečně zjednodušila personální nároky na pořádání závodů agility. Jelikož jsou pravidla posuzování rozhodčích stejná po celém světě, našlo by se uplatňení i mimo území České republiky. Tento a výše zmíněné důvody jsou hlavní motivací pro řešení tohoto tématu.
2
Kapitola 2
Co je to agility? Agility je sport, ve kterém soutěží člověk se svým psem (zkráceně je tato dvojice označována jako tým) v překonání předem stanovené překážkové trati. Překážky překonává pouze pes a psovod ho vede svými povely a posunky tak, aby trať proběhl co nejrychleji a bezchybně. Pes musí být při běhu bez obojku i vodítka a psovod nesmí mít u sebe žádné motivační prostředky (pamlsky ani hračky). Na toto pravidlo je kladen velký důraz a jakékoliv sebemenší porušení znamená pro tým diskvalifikaci. Pokud by člověk chtěl hledat analogii v nějakém sportu, dalo by se agility přirovnat ke koňskému parkuru. Liší se však ve skladbě překážek — agility navíc obsahuje překážky zónové, tunely a stůl (kompletní seznam překážek včetně jejich rozměrů popisuje řád agility České republiky [31]). Ačkoliv je agility velmi mladý sport, počet stoupenců a fanoušků každým rokem roste. Jen na našem území se minulý rok konalo přes 200 oficiálních závodů agility [27] a Česká republika byla poprvé hostující zemí pro mistrovství světa, kterého se zúčastnilo několik stovek reprezentantů a tisíce fanoušků z celého světa.
2.1
Role rozhodčího
V agility je jedním z hlavních faktorů rozhodčí, který stanovuje rozestavění překážek a pořádí jejich zdolání. Mimo to také rozhodčí posuzuje běhy všech týmů, které soutěží na jeho parkuru. Existují dva typy penalizace, na které rozhodčí dává znamení zapisovateli (zapisovatel je člověk, který pozorně sleduje rozhodčího, interpretuje jeho gesta a zapisuje jejich mínění k výsledkům právě běžícího týmu): • K chybám dochází například při shození laťky na skokové překážce nebo doteku psovoda a psa a značí se zdviženou rukou s otevřenou dlaní • Odmítnutí rozhodčí ukazuje zapisovateli také zdviženou paží, ale zaťatou pěstí. Odmítnutí vzniká při oběhnutí aktuálně zdolávané překážky psem Rozhodčí se v průběhu jednotlivých běhů volně pohybuje po parkuru tak, aby vždy dobře viděl na psovoda i psa. V České republice sdružuje veškerou oficiální činnost týkající se agility nezisková organizace Klub agility České republiky (KAČR). Rozhodčí je povinen rozhodovat v souladu s řádem této organizace [31].
3
Kapitola 3
Navržený systém Systém, který tato práce navrhuje se dá na nejvyšší úrovni rozdělit na několik podúkolů. Jednoduchý konceptuální návrh je vidět na obrázku 3.1. Lze ho tedy rozdělit na následující procesy: 1. Sledovač člověka, který jako vstup dostane od uživatele vymezovací čtverec, ve kterém se na začátku nachází rozhodčí. V následujících snímcích poté lokalizuje jeho polohu. 2. Rozpoznávač zdvižené paže — na základě dodané polohy člověka v obraze stanovuje, jestli má rozhodčí zdviženou paži nebo nikoliv. 3. Klasifikátor gesta, jehož úkolem je rozlišit mezi zaťatou pěstí a otevřenou dlaní. Tento koncept je důkladněji rozebrán v jednolivých podkapitolách této sekce, kde jsou diskutovány existující přístupy k těmto problémům. Aby byl systém použitelný v praxi, je nutné, aby se jeho rychlost co nejvíce blížila reálnému zpracování. Není tudíž možné uvažovat jakékoliv přístupy, které nějakým způsobem pracují s budoucímy“ daty. ” Je nutno brát v potaz, že prostředí, ve kterém se agility soutěže odehrávají, je velmi rozmanité. Závody se můžou odehrávat jak venku, tak v kryté hale a k tomu na různých typech povrchu (nejčastější je tráva, ale není výjimkou ani písek, umělá tráva nebo koberec). Při nepříznivém počasí se ve většině případů závod žádným způsobem nepřerušuje, takže je nutno uvažovat i různé povětrnostní podmínky.
Obrázek 3.1: Koncept rozpoznávacího systému
4
3.1
Sledování člověka
Sledování lidí i pohyblivých předmětů obecně je velmi častým námětem odborných článků. Důvody jsou jednoduché — existuje široké uplatňení v různých oborech. Jedním z nejčastějších použití jsou dohledové systémy, které dokáží sledovat i velké množství na sobě nezávislých osob [10]. Časté je i sledování chodců v bezpečnostních systémech automobilů. Další hojně zmiňované využití lze nalézt v řidicích systémech pro roboty, kteří nějakým způsobem komunikují s člověkem [18] nebo například v inteligentních domech [23]. V oblasti sledování lidí převažují řešení, která si dávají za úkol sledovat větší množství lidí. U sledovačů obecných pohyblivých předmětů jde většinou o jeden označený předmět. Důvod k tomuto trendu je zřejmý — systémy, které sledují lidi mohou znát dopředu tvar a chování sledovaného předmětu, kdežto u obecných předmětů tato informace chybí. Jsou metody řešení, které se v mnoha článcích opakují. Dva přístupy používané v součásné době ke sledování lidí i předmětů jsou sledování pomocí detekce a částicové filtry [5, 2, 24, 17].
3.1.1
Sledování pomocí detekce
Sledování pomocí detekce je metoda, která využívá stále se zlepšujícího výkonu detekčních technik. Často je kombinována s nějakým pravděpodobnostním modelem systému, u kterého kontroluje chybovost a případně upravuje hypotézu.
3.1.2
Částicový filtr
Částicový filtr funguje na myšlence, že máme nějaký systém, jehož parametry jsou nám skryty. Můžeme však provádět měření v čase a tím získávat informace. Inicializace algoritmu probíhá tak, že se vytvoří náhodná množina N stavů, ve kterých se systém může nacházet. Těmto stavům (časticím) jsou přiřazeny stejné váhy (váhy reprezentují věrohodnost stavu v závislosti na měření). V každém kroku algoritmu je pak provedeno měření, částice jsou s ním porovnány a jejich váha je upravena uměrně k tomu, v jaké vzdálenosti“ od měření se náchází. ” Potom nastává proces, kterému se říká vzorkování (angl. sampling). Vytvoří se nová prázdná množina částic a do ní jsou vybrány částice takovým způsobem, že se provede N náhodných výběrů ze staré množiny částic, přičemž pravděpodobnost vybrání je rovna jejich váze (uvažujeme-li, že součet vah všech částic je 1). Tím se vyberou do nové množiny vícekrát částice, které mají větší váhy a ty s nižší vahou postupně vymřou“. ” Existuje mnoho různých algoritmů pro vzorkování, jejichž přehled lze nalézt v článku [25].
3.2
Rozpoznání zdvižené paže a gesta
Gesta ruky nebo paže se dají používat pro komunikaci s počítáčem nebo pro zadávání povelů interaktivním robotům. Velmi oblíbené je také využítí v počítačových hrách, které jsou pomocí rukou intuitivně ovládány. V takových případech je ovšem většinou zapojen speciální hardware (např. Microsoft Kinect). Další uplatnění lze nalézt například pro rozpoznávání znakové řeči. Mnoho z používaných metod spoléhá na to, že uživatel bude mít na sobě nějaký druh speciálních kontrastních nebo elektronických rukavic, které usnadní proces rozpoznávání
5
[19]. Jelikož se většiná závodů odehrává v létě, nelze po rozhodčím chtít, aby měl na sobě jakékoliv takovéto zařízení. Další metody používají pro zjednodušení informaci o hloubce obrázku, která není dostupná z běžné kamery. Pro získání hloubkového obrázku by se v našem případě musela použít cenově nedostupná time-of-flight kamera (Microsoft Kinect také umí získávat hloubkovou informaci, ale pro naše účely má příliš nízké rozlišení). Jako hlavní inspirace nakonec posloužil článek [9], který používá kombinaci modelu Bag of Words (BoW), lokálních příznaků Scale Invariant Feature Transform (SIFT) a klasifikátoru Support Vector Machine (SVM). Funkce těchto komponent je popsána v následujících podkapitolách.
3.2.1
Scale Invariant Feature Transform
SIFT je algoritmus pro extrakci a popis příznakových vektorů z obrázku. Algoritmus představil ve svém článku [20] David G. Lowe a později si ho nechal patentovat a publikoval pokračování [21]. Příznaky získané tímto přístupem jsou invariantní k rotaci, změně měřítka a částečně k osvětlení [21]. Průběh algoritmu se dá rozložit na dva podproblémy: • Detekce a extrakce význačných bodů • Popis a reprezentace příznaků Je to jeden z nejvíce používaných algoritmů pro extrakci a popis lokálních příznaků a je široce uplatňován v detekčních i klasifikačních úlohách. Detekce a extrakce příznaků Detekce význačných bodů probíhá v takzvaném prostoru měřítek (angl. scale-space). Prostor měřítek je taková reprezentace obrázku (obecně jakéhokoliv signálu), ve které existují všechny dostupné úrovně měřítka. Lowe používá pro vytvoření takového prostoru Gaussovu funkci [21]. Formálně je tedy prostor měřítek L(x, y, σ) definovaný jako konvoluce Gaussovy funkce G(x, y, σ) se vstupním obrázkem O(x, y). Tento vztah lze zapsat následující rovnicí: L(x, y, σ) = G(x, y, σ) ∗ O(x, y)
(3.1)
Gaussovské rozmazání je vyjádřeno pomocí −(x2 +y 2 ) 1 2σ 2 e 2πσ 2 V prostoru měřítek jsou hledány extrémy pomocí funkce rozdílu gaussovských rozmazání, které lze spočítat jako rozdíl sousedících měřítek oddělených pomocí konstantního √ násobitele k. Lowe navrhuje použít hodnotu k = 2 [21]. Počet sousedících obrázků je dán vztahem s + 3, kde s musí splňovat podmínku k = 21/s . V našem případě je tedy počet takovýchto obrázků 5. Pixel, který je označený jako extrém, se porovná s okolními osmi pixely v jeho měřítku a také s devíti sousedy v měřítku předchozím a následujícím. Pokud je pixel ze všech zmíněných sousedů nejmenší, označíme tento bod za minimum, pokud je největší, označíme ho naopak za maximum.
G(x, y, σ) =
6
Jakmile je takovýmto způsobem zpracováno všech s + 3 obrázků, tak se převzorkuje rozmazaný obrázek, který má dvojnásobnou hodnotu než počáteční σ. Převzorkování probíhá tak, že se z obrázku vezme každý druhý pixel ve všech sloupcích i řadcích. Výsledek jednoho kroku tohoto postupu lze vidět na obrázku 3.2.
Obrázek 3.2: Ukázka jednoho kroku hledání význačných bodů Z minim a maxim jsou vyřazeny ty, které mají nízký kontrast nebo jsou špatně umístěny podél hrany. Zbývajícím bodům po této filtraci je přiřazena orientace. Popis a reprezentace příznaků Popsaným postupem jsme získali význačné body, které mají pozici, měřítko a orientaci. Aby šlo s těmito body dále pracovat, musíme nějakým způsobem popsat oblast obrázku, ve které se tyto body nachází. Při této operaci je kladen důraz na to, aby byl získaný popis invariantní ke změně osvětlení. Popis probíhá tak, že se nejprve navzorkují velikosti a orientace gradientu v okolí význačného bodu (pro zefektivnění jsou gradienty předpočítány pro všechny úrovně pyramidy). Pomocí gaussovské váhové funkce (σ je rovno polovině šířky okna, ze kterého počítáme deskriptor) je přiřazena váha velikosti gradientů jednotlivých bodů. Tímto se sníží významnost bodů, které jsou ve větší vzdálenosti od význačného bodu. Lowe používá pro reprezentaci vektor o délce 128 [21]. Získává ho tak, že pole o velikosti 16x16 rozdělí na 16 oblastí o velikosti 4x4 a v každé oblasti vypočítá histogram gradientů (každý gradient ma přiřazenu jednu z osmi možných orientací). Vektor je tedy složený z 16 histogramů, kde každý histogram má 8 binů — tudíž 16 · 8 = 128. Názorná ukázka jednoho deskriptoru je na obrázku 3.3.
3.2.2
Bag of Visual Words
Model Bag of Visual Words (BoVW nebo BoW) pracuje s myšlenkou, že k obrázku lze konceptuálně přistupovat jako k textovému dokumentu. Předpokládá, že každý obrázek se skládá z mnoha vizuálních slov“. Vizuální slovo je obvykle reprezentováno jako nějaký druh ” lokálního příznaku. V první fázi dochází k vytvoření slovníku. Jako vstup model vyžaduje 7
Obrázek 3.3: Grafická reprezentace SIFT deskriptoru množinu vektorů stejné délky, ze kterých potom vybere k reprezentujících kandidátů — například metodou k-means clustering. Slovník lze následně reprezentovat jako vektor vizuálních slov. Na obrázku 3.4 lze vidět reálný slovník vytvořený z černobílých SIFT příznaků (každý řádek reprezentuje jedno slovo).
Obrázek 3.4: Vizuální reprezentace BoVW slovníku Když je dostupný vytvořený slovník, lze každý obrázek reprezentovat jako vektor, jehož prvky vyjadřují výskyt jednotlivých vizuálních slov v obrázku. Tento vektor umožňuje používání metod pro klasifikaci textu na klasifikaci obrázků.
3.2.3
Support Vector Machines
Support Vector Machines (SVM) je ve své základní podobě algoritmus pro strojové učení binárních klasifikátorů (klasifikujících do dvou skupin). Jako základ support vector ma8
chines posloužila v roce 1982 (anglický překlad původní ruské verze z roku 1979) kniha, ve které Vapnik představil metodu pro výpočet optimální nadroviny pro data, která lze separovat bezchybně [26]. Metodu lze popsat následovně. Předpokládejme, že máme trénovací sadu N vstupních vektorů {xn |n ∈ 1..N } včetně jejich cílových hodnot (tříd) {tn |n ∈ 1..N, tn ∈ {−1, 1}}. Dále uvažujme, že tato vstupní data jsou lineárně separovatelná. Pokud budeme hledat řešení rovnice y(x) = w · x + b
(3.2)
takové, že bude splňovat podmínku tn yn (xn ) > 0 (zjednodušeně řečeno bude správně klasifikovat každý vektor z trénovací sady), pak nalezneme jedno z mnoha řešení, které ovšem nebude nutně řešením optimálním. Optimální nadrovina musí splňovat rovnici w0 · x + b = 0
(3.3)
aby vzniklo řešení s maximálním možným okrajem mezi oběma třídami. Separace nadrovinou s maximálním okrajem je vyznačena v obrázku 3.5. Okraj je definovaný jako kolmá vzdálenost k nejbližšímu vektoru z datové sady. Vektory, které splňují omezení yi (w·xi +b) = 1 se nazývají pomocné vektory (support vectors — SV) — v obrázku jsou vyznačeny červenou barvou. Podle těchto vektorů dostala metoda svůj název. Díky pomocným vektorům může SVM při klasifikaci pracovat pouze s malou podmnožinou původních trénovacích dat.
Obrázek 3.5: Separace tříd včetně maximalizace okraje Jak již bylo zmíněno, tento přístup funguje pouze pro lineárně a bezchybně separovatelná data. Z toho důvodu v roce 1995 Cortes a Vapnik přišli s myšlenkou nadroviny s měkkým okrajem [7]. Měkký okraj umožňuje bezchybně neoddělitelná data oddělit tak, aby byla chybovost co nejmenší. Matematickou teorii lze nalézt v původním článku nebo v odborné literatuře [4, 11].
9
Kapitola 4
Implementace sledování člověka Protože je sledování člověka tak často řešenou úlohou, nabízí se použití již hotové aplikace. Vzhledem k orientaci celé práce na vytvoření fungujícího systému pro sledování rozhodčího bylo rozhodnuto, že bude pro tuto část použito volně dostupného softwaru. Předpoklad byl takový, že v oblasti sledování lidí a pohyblivých předmětů bude k dispozici široký výběr knihoven s otevřeným kódem. Tato kapitola se zaměřuje na vytvoření přehledu o těchto knihovnách, výběrem několika kandidátů, popis jejich fungování a důvody pro zvolení konkrétní implementace.
4.1
Dostupné open-source knihovny
Přehled knihoven, které byly vyhledány v rámci této práce spolu s komentářem: • Reading People Tracker [30] — knihovna sloužící pro dohledové systémy. Je schopna sledovat více lidí najednou. Byl vydán pod licencí GPL. Překlad zdrojových kódů byl vyzkoušen na všech většinových operačních systémech (Ubuntu 12.04, Windows 7 a OS X 10.7), ovšem nikde se to nezdařilo díky nedořešené závislosti na použité knihovny. • FragTrack — K dispozici [28] pod licencí GPL. Podrobný popis postupu tohoto algoritmu je popsán v samostatné podkapitole. • MILTrack — Nejnovější ze všech zmíněných algoritmů. Jeho podrobnější popis lze najít v samostatné kapitole. Zdrojové kódy jsou přístupné na stránkách Borise Babenka [29] pod licencí LGPL. • OpenTLD — Algoritmus dostupný na stránkách Z. Kálala [?] pod licencí GPL 3.0. Ačkoliv se tento algoritmus nepodařilo zprovoznit podle očekávání, je mu věnována zvláštní kapitola, kde je popsáno fungování tohoto algoritmu. Tři z těchto algoritmů jsou popsány v následujících kapitolách. MILTrack a FragTrack byly implementovány do systému a v následujících kapitolách bude porovnána jejich úspěšnost nad vytvořenou datovou sadou.
4.1.1
FragTrack
Vstupem FragTracku je, jako v ostatních případech námi posuzovaných algoritmů, pouze úvodní rámeček, ve kterém se nachází sledovaný předmět. Z tohoto rámečku se vytvoří 10
šablona, která se skládá z několika podobrázků, přičemž je známo umístění podobrázku v úvodní šabloně. Potom se v každém následujícím snímku pro každý podobrázek vytvoří v nějakém předem stanoveném okolí (toto okolí se dá volit jako parametr aplikace) takzvaná hlasovací mapa (angl. vote map). Hlasovací mapa se vytváří tak, že se pro každý bod (střed podobrázku) tohoto okolí vypočítá korespondence mezi šedotónovýmí histogramy podobrázku ze šablony a podobrázku snímku, ve kterém hledáme novou pozici objektu. Tím se sice ztratí prostorová informace, ale díky tomu, že známe původní rozmístění podobrázků v šabloně, můžeme kombinací hlasovacích map získat robustní odhad nové pozice objektu. Obdobně funguje i hledání aktuálního měřítka šablony. Jakmile je vybrán odhad nové pozice a nová velikost objektu, šablona se aktualizuje z aktuálního snímku. V článku [1], který představuje tento algoritmus lze nalézt podrobnosti o použitých metodách pro srovnávání histogramů.
4.1.2
MILTrack
Jeden z dostupných open source algoritmů pro sledování libovolných předmětů ve videu je MILTrack, který poprvé představil Babenko ve svém článku Visual Tracking with Online Multiple Instance Learning [3]. Vstupem tohoto algoritmu je pouze počáteční obdélník, vymezující sledovaný objekt (z toho důvodu se velmi hodí do našeho systému). Algoritmus se skládá ze tří částí: • reprezentace obrázku, • modelu vzhledu a • modelu pohybu. Reprezentace obrázku Obrázek je reprezentován pomocí vektoru odezev na Haarovy příznaky, které jsou náhodně generovány. Každý takovýto vektor příznaků sestává z dvou až čtyř čtverců. Hodnota příznaku se potom spočítá jako vážený průměr přes všechny pixely těchto čtverců. Tyto výpočty jsou velmi efektivní díky integrálním obrázkům. Model vzhledu Model vzhledu tohoto algoritmu pracuje s takzvanými popsanými sáčky příznaků. Z obrázku se vyřízne množina vzorků v poloměru zmíněném v následující kapitole, zařadí se do sáčku a ten je označen jako pozitivní. Ze zbytku obrázku je potom náhodně vybrána podmnožina výřezů a ty jsou označeny jako negativní. Každý negativní vzorek je zařazen do zvláštního sáčku. Pomocí těchto sáčků se aktualizují slabé klasifikátory, ze kterých se potom natrénuje metodou Online Multiple Instance Learning silný klasifikátor. Model pohybu Pro označení potencionálních oblastí, kde se může objekt nacházet používá algoritmus model pohybu. Ten počítá v čase t − 1 pravděpodobnost průměru, kde se může objekt nalézat v čase t. Autor sám navrhuje, že by bylo vhodné vylepšit tento poměrně naivní přístup například pomocí částicového filtru. 11
Dostupnost a obtížnost integrace K tomuto algoritmu jsou dostupné zdrojové kódy v C++ kompatibilní s knihovnou OpenCV. Vzhledem k slibným výsledkům při ad-hoc testování a velmi snadné integraci do našeho systému byl tento algoritmus vybrán a použit jako sledovač postavy.
4.1.3
OpenTLD
OpenTLD byl vyvinut Zdeňkem Kalálem během jeho doktorské práce. Výsledky potom prezentoval v několika článcích [13, 14, 15, 16]. Jde o adaptivní algoritmus, který používá zároveň dvě techniky, aby dosáhl robustního sledování předem neznámých objektů: • sledování a • detekci. Sledování Sledování je implementováno pomocí krátkodobého sledovače založeného na metodě Lucase a Kanadeho. Touto metodou sledují korespondující význačné body mezi jednotlivými snímky. V každém snímku se zároveň vybírá nová množina význačných bodů, což příspívá k dobré adaptaci systému. Detekce Původní článek [13] zavádí nové význačné body — dvoubitové binární vzory (2BitBP). 2BitBP jsou založené na lokálních binárních vzorech (Local Binary Patterns — LBP), ovšem liší se v tom, že zakódovává informaci pouze do 4 možných kódů, oproti 256 v případě LBP. 2BitBP tedy zakódovává lokalní orientaci gradientu. Klasifikátor použitý pro detekci je založen na náhodném lese (angl. randomized forest), který sestává z několika stromů. Každý strom je vytvořený z jedné skupiny příznaků. Technika náhodného lesa umožňuje online aktualizaci na základě nových pozitivních i negativních vzorků. Pokud sledovač i detektor souhlasí na určité pozici předmětu, všechny detekce mimo nalezenou oblast jsou považovány za false-positive a ze stromů jsou odstraněny korespondující detekční větve. Dostupnost a obtížnost integrace Původně vydaný algoritmus je napsaný převážně v jazyce Matlab. Existují však další implementace v různých jazycích včetně C++. Ačkoliv autor prezentuje výborné výsledku, tak se je v rámci této práce nepodařilo reprodukovat. Při ad-hoc testování nad vybranými videi si algoritmus vedl velmi špatně — většinou ztratil sledovaný objekt okamžitě po označení a už se nevzpamatoval. Z těchto důvodů nebyl uvažován pro integraci do systému.
12
Kapitola 5
Implementace rozpoznání postavy a gesta V několika přechozích kapitolách byly popsány tři techniky, které budou použity při implementaci detekce zdvižené paže i klasifikace — příznaky SIFT, model Bag of Visual Words a klasifikátor Support Vector Machine. K rozpoznání postavy i rozpoznání gesta bylo tedy přistupováno jako ke klasifikační úloze. V případě zdvižené paže jde o rozlišení dvou tříd — paže nahoře a paže dole. Také v případě rozpoznání gesta šlo o zařazení do dvou tříd a to pěst a dlaň. Řešení spočívalo v několika podúlohách. Nejprve bylo potřeba obstarat datové sady pro jednotlivé klasifikátory. Z každé datové sady byly extrahovány deskriptory SIFT příznaků, které byly použity jako zdroj pro vytvoření modelu BoVW. U modelu BoVW pak bylo nutno zvolit vhodnou velikost slovníku. Po vytvoření slovníků došlo k reprezentaci trénovacích obrázku pomocí BoVW vektoru a následnému hledání co nejlepších parametrů SVM. Každému z těchto kroků je věnována samostatná podkapitola.
5.1
Datová sada
Vzhledem k tomu, že rozpoznávání gest je poměrně častou úlohou, existuje několik volně dostupných trénovacích sad. Pro účely této práce byla vybrána podmnožina datové sady [22], která obsahuje 6 gest, mezi kterými je i pěst a dlaň. V této datové sadě je gesto dlaně rozděleno na dvě třídy (s prsty u sebe a s roztaženými prsty), mezi kterými náš klasifikátor však rozlišovat nemá, a proto byly sloučeny do naší třídy dlaň. Rozpoznávání zdvižené paže je méně často řešeným problémem, což bylo pravděpodobně důvodem toho, že nebyla nalezena žádná volně dostupná datová sada. Pro účely této práce však bylo natočeno několik hodin vidí z agility závodů a uměle vytvořených modelových situací. Z těchto videí bylo vybráno zhruba 1500 obrázků rozhodčího a ostatních lidí bez zdvižené paže a přes 500 obrázků 4 různých rozhodčích se zdviženou paží. Tato datová sada je dostupná v elektronické příloze této práce.
5.2
Velikost Bag of Words slovníku
Aby klasifikátor trénovaný na vektorech modelu BoW nesl dobré výsledky, musíme zvolit vhodné množství vizuálních slov, které dobře reprezentují popisované objekty. Potřebujeme
13
0.44
0.42
0.4
Chybovost
0.38
0.36
0.34
0.32
0.3
0.28
0.26 1
10
100
1000
Velikost slovníku
Obrázek 5.1: Závislost chybovosti klasifikátoru zdvižené paže na velikosti slovníku tedy ověřit, pro jakou velikost slovníku bude mít model nejmenší chybovost. V našem případě chybovost ověřujeme pomocí naivního bayesovského klasifikátoru, stejně jako Csurka aj. [8]. Knihovna OpenCV poskytuje třídu CvNormalBayesClassifier, která abstrahuje tento druh klasifikátoru. Tato třída poskytuje jednoduché rozhraní pro trénovaní tohoto klasifikátoru. Při trénovaní se klasifikátoru předloží sada vektorů (v našem případě matice BoW vektorů) spolu s vektorem tříd, do kterých náleží. Metodou train se pak vytvoří požadovaný klasifikátor. Postup získání BoW vektorů se skládal z několika kroků: 1. Vyhledání význačných bodů SIFT, 2. popis náhodně vybrané podmnožiny nalezených význačných bodů pomocí SIFT deskriptorů (2000 bodů v případě paže a 1000 bodů u gesta), 3. vytvoření vizualního slovníku o k vizuálních slovech pomocí metody k-means (OpenCV pro tento účel poskytuje třídu BOWKMeansTrainer) a 4. sestavení BoW vektorů z trénovací sady pomocí slovníku z bodu 3. Pomocí vektorů získaných tímto postupem byl natrénován již zmíněný bayesovský klasifikátor. Tento postup byl opakován pro k = {2, 5, 10, 20, 35, 50, 100, 200, 300, 400, 500, 750}. Chybovost klasifikátoru byla otestována na předem oddělené podmnožině trénovací sady (která nebyla použita při původním trénování). Tato metodika byla automatizována vytvořením aplikace BOWCodebookSize, která produkuje soubor ve formátu .dat, který umí zpracovat do grafové reprezentace program gnuplot. Pomocí tohoto nástroje byl vytvořen graf na obrázcích 5.1 a 5.2.
14
0.5
chybovost klasifikátoru gesta
0.45
0.4
Chybovost
0.35
0.3
0.25
0.2
0.15
0.1 1
10
100
1000
Velikost slovníku
Obrázek 5.2: Závislost chybovosti klasifikátoru gesta na velikosti slovníku Z grafů lze vyčíst nejvhodnější hodnoty pro velikost slovníku — u klasifikátoru zdvižené paže měl nejmenší chybovost slovník s počtem 50 slov, kdežto klasifikátor gesta si vedl nejlépe v případě slovníku o 300 slovech. Slovníky s těmito hodnotami byly uloženy a používány na následujících trénovacích problémech.
5.3
Trénování SVM
V minulé kapitole byly empiricky zjištěny vhodné velikosti slovníku pro oba klasifikátory. Pro zjištění těchto hodnot byl použit naivní bayesovský klasifikátor, ke kterému ovšem existují lepší alternativy. Jednou z nich je klasifikátor SVM, popsaný v kapitole 3.2.3. Jelikož je SVM velmi oblíbený klasifikátor, existují pro trénování jak specializované knihovny (LibSVM [6]), tak implementace v knihovně OpenCV. Implementace třídy SVM v knihovně OpenCV, poskytuje pro trénování 2 metody — train a train_auto. Metoda train_auto se liší hlavně v tom, že sama najde ideální hodnotu C a v případě nelineárního jádra i hodnotu γ. Nicméně implementace této třídy neposkytuje rozhraní pro vizualizaci procesu hledání parametrů. Z toho důvodu v této práci byla použita knihovna LibSVM, která poskytuje sadu nástrojů pro jednoduché trénování, zjištění ideálních parametrů a vizualizaci výsledků hledání parametrů. Postup pro hledání parametrů a trénování se řídil podle návodu na knihovnu LibSVM [12]. Nejprve bylo zvoleno rozmezí parametrů C a γ v souladu s doporučením používat exponenciální krok: C ∈ {2−5 , 2−3 , . . . , 213 , 215 } γ ∈ {2−15 , 2−13 , . . . , 23 , 25 }
15
C γ přesnost
Klasifikátor paže 21.75 24 84.8614
Klasifikátor ruky 22.25 23.5 94.4364
Tabulka 5.1: Zvolené parametry C a γ pro oba klasifikátory Po zvolení rozmezí parametrů byl použit nástroj grid.py, který prochází mřížku“ ” parametrů a hledá pomocí křížové validace takové hodnoty, které mají nejlepší klasifikační výsledky na předem oddělené podmnožině trénovacích dat. Pomocí techniky křížové validace byly vypočítány všechny kombinace těchto parametrů pro RBF jádro. Výsledky tohoto postupu lze vidět na obrázcích 5.3 a 5.5. Na základě zmíněných výsledků byly vybrány pro RBF jádro menší intervaly hodnot, na kterých byl postup s menšími kroky mezi jednotlivými hodnotami zopakován. Výsledky jemnějšího prohledávání mřížky jsou zobrazeny v obrázcích 5.4 a 5.6. Přesné výsledné hodnoty jsou pak zapsány v tabulce 5.1.
5
84 83.5 83 82.5 82 81.5 81
0
-5
log2(gamma)
-10
-5
0
5
10
-15 15
log2(C)
Obrázek 5.3: Hrubé prohledávání mřížky s parametry pro klasifikátor paže
16
5
84.5 84 83.5 83
4.5
4
log2(gamma)
3.5
3 0
0.5
1
1.5
2
log2(C)
Obrázek 5.4: Jemné prohledávání mřížky s parametry pro klasifikátor paže
5
"-" 94 93.5 93 92.5 92 91.5 91
0
-5
log2(gamma)
-10
-5
0
5
10
-15 15
log2(C)
Obrázek 5.5: Hrubé prohledávání mřížky s parametry pro klasifikátor gesta
17
"-" 94 93.5 93 4
3.5
3
log2(gamma)
2.5
2 2
2.5
3
3.5
4
log2(C)
Obrázek 5.6: Jemné prohledávání mřížky s parametry pro klasifikátor gesta
18
Kapitola 6
Experimenty se systémem V minulých kapitolách byly popsány dílčí části systému, včetně postupů pro jejich sestrojení. Tato kapitola se zabývá zkoumáním vytvořeného systému jako celku a hodnotí jeho úspěšnost.
6.1
Anotační nástroj
V rámci práce byla vytvořena aplikace, sloužící k ruční anotaci pohybu rozhodčího včetně jeho ruky a prováděného gesta. Tato aplikace generuje soubor ve formátu CSV (Comma Separated Values) následující struktury:
;
;; kde je číslo snímku videa, je obdélník ohraničující rozhodčího, je obdélník ohraničující ruku a je numerické označení gesta.
6.2
Testovací scénáře
Agility má dva typy soutěží, lišících se ve skladbě překážek: agility a jumping. Agility obsahuje oproti jumpingu i zónové překážky (houpačku, kladinu a áčko). Díky tomu, že se rozhodčí volně pohybuje po parkuru, často nastane situace, kdy je po nějakou dobu skrytý za nějakou překážkou. Vzhledem k velikosti áčka dochází z pohledu kamery i k úplnému překrytí rozhodčího. Při sestavování testovacích scénářů byl na všechny tyto skutečnost brán zřetel. Několik ukázek ze sestavených testovacích scénářu je vidět na obrázku 6.1. Většina těchto scénářů pochází z videomateriálu natočeném na oficiálních závodech agility. Celkem bylo anotačním nástrojem označeno 8 videí s následujícími scénáři: • rozhodčí stojí na místě a ukazuje odmítnutí (1), • dlouhé video (30s), kde rozhodčí ukazuje odmítnutí i chyby (2), • téměř nehybný rozhodčí ukazující 2 chyby (3), • rozhodčí ukazuje 4 chyby za sebou (4), • běh rozhodčího s odmítnutím (5), • naprosto nehybný rozhodčí, 2 chyby (6), 19
Obrázek 6.1: Ukázka modelových situací • chyba u slalomu (7), • a postupné úplné skrytí za áčkem a ukázání chyby (8).
6.3
Vyhodnocování výsledků systému
Za účelem vyhodnocování výsledků celého systému byla vytvořena aplikace AnnotationDiffTool, která slouží k vyhodnocování podobnosti mezi dvěma anotačními soubory. U anotovaných obdélníků se vyhodnocuje procentuální míra překrytí — pokud se obdélníky přesně překrývají, je hodnocení 100 % a pokud se nepřekrývají vůbec, ohodnocení je 0 %. U rozpoznání zdvižené paže i gesta je hodnocení pouze správně nebo špatně (tedy 0 % nebo 100 %). Přestože anotační soubory obsahují i pozici ruky, tak není ve výsledném hodnocení nijak zohledňována, protože implementace detektoru lidské ruky nebyla předmětem této práce.
6.4
Výsledky testování scénářů
Získané výsledky jsou uvedeny v tabulce 6.1. Nejlépe si systém vedl v situaci, kdy rozhodčí stojí nehybně na místě a ukazuje chyby. Z toho lze odvodit, že na úspěšnost celého systému má značný vliv sledovač člověka. Špatné výsledky klasifikátoru gesta byly pravděpodobně způsobeny tím, že nebyla použita datová sada z domény, ve které byla prováděna klasifikace. 20
Scénář (1) (2) (3) (4) (5) (6) (7) (8)
Snímků 170 0 959 253 486 139 157 152 131
Úspěšnost klasifikátoru paže 0.441176 0.769552 0.822134 0.6893 0.870504 0.980892 0.921053 0.992366
Úspěšnost klasifikátoru ruky 0.0235294 0.250261 0.0158103 0.0658436 0.0359712 0.490446 0.157895 0.167939
Tabulka 6.1: Výsledky systému na testovacích scénářích
21
Kapitola 7
Závěr Úkolem této práce bylo prozkoumat možnosti vytvoření systému pro sledování rozhodčího ve sportu agility. Systém byl rozvržen na abstraktní části, jejichž řešení se dalo jednoduše oddělit. U každého podproblému souvisejícímu s těmito částmi (sledovač člověka, klasifikátor zdvižené paže a klasifikátor ruky) byl proveden přehled o používaných technologiích pro řešení tohoto problému. U sledovače člověka byl vytvořen přehled o open-source knihovnách řešících tuto úlohu a fungování několika vybraných bylo podrobně prozkoumáno a popsáno. Dvě z těchto knihoven pak byly implementovány do výsledné aplikace. Kritéria byla jak jednoduchost implementace, tak úspěšnost při ad-hoc testování nad vlastní datovou sadou. Pro oba klasifikátory byla zvolena stejná metoda a to kombinace modelu Bag of Visual Words a Support Vector Machines. Jak u klasifikátoru ruky, tak klasifikátoru paže byla empiricky zjištěna vhodná velikost slovníku za pomoci bayesovkého klasifikátoru. S použitím nástrojů dostupných v knihovně LibSVM byly nalezeny vhodné parametry C a γ a posléze byly oba klasifikátory natrénovány. Bylo vytvořeno několik modelových scénářů, na kterých bylo ověřeno chování systému jako celku. Klasifikátor paže nesl relativně dobré výsledky a o něco hůře na tom byl klasifikátor gest. Přestože nebyl vytvořen funkční systém pro sledování rozhodčího včetně jeho gest, navržené postupy by se mohli dát aplikovat při dalším rozvoji této práce. Jako další krok by pak mohla být implementace robustního detektoru ruky nebo vlastního specializovaného sledovače člověka.
22
Literatura [1] Adam, A.; Rivlin, E.; Shimshoni, I.: Robust Fragments-based Tracking using the Integral Histogram. In Proceedings of the 2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition - Volume 1, CVPR ’06, Washington, DC, USA: IEEE Computer Society, 2006, ISBN 0-7695-2597-0, s. 798–805. [2] Andriluka, M.; Roth, S.; Schiele, B.: People-tracking-by-detection and people-detection-by-tracking. In Computer Vision and Pattern Recognition, 2008. CVPR 2008. IEEE Conference on, 2008, ISSN 1063-6919, s. 1–8. [3] Babenko, B.; Yang, M.-H.; Belongie, S.: Visual Tracking with Online Multiple Instance Learning. In CVPR, 2009. [4] Bishop, C. M.: Pattern Recognition and Machine Learning (Information Science and Statistics). Secaucus, NJ, USA: Springer-Verlag New York, Inc., 2006, ISBN 0387310738. [5] Breitenstein, M.; Reichlin, F.; Leibe, B.; aj.: Online Multiperson Tracking-by-Detection from a Single, Uncalibrated Camera. Pattern Analysis and Machine Intelligence, IEEE Transactions on, ročník 33, č. 9, 2011: s. 1820–1833, ISSN 0162-8828. [6] Chang, C.-C.; Lin., C.-J.: LIBSVM: a library for support vector machines. ACM Transactions on Intelligent Systems and Technology, 2011, str. 2:27:1–27:27. [7] Cortes, C.; Vapnik, V.: Support-vector networks. Springer, 1995, s. 273–297. [8] Csurka, G.; Dance, C.; Fan, L.; aj.: Visual categorization with bags of keypoints. In Workshop on statistical learning in computer vision, ECCV, ročník 1, 2004, str. 22. [9] Dardas, N.; Chen, Q.; Georganas, N. D.; aj.: Hand gesture recognition using Bag-of-features and multi-class Support Vector Machine. In Haptic Audio-Visual Environments and Games (HAVE), 2010 IEEE International Symposium on, 2010, s. 1–5. [10] Elgammal, A.; Duraiswami, R.; Harwood, D.; aj.: Background and foreground modeling using nonparametric kernel density estimation for visual surveillance. Proceedings of the IEEE, ročník 90, č. 7, 2002: s. 1151–1163, ISSN 0018-9219. [11] Forsyth, D. A.; Ponce, J.: Computer Vision: A Modern Approach. Prentice Hall Professional Technical Reference, 2002, ISBN 0130851981. [12] Hsu, C.-W.; Chang, C.-C.; Lin, C.-J.; aj.: A practical guide to support vector classification. 2003. 23
[13] Kalal, Z.; Matas, J.; Mikolajczyk, K.: Online learning of robust object detectors during unstable tracking. In Computer Vision Workshops (ICCV Workshops), 2009 IEEE 12th International Conference on, 2009, s. 1417–1424. [14] Kalal, Z.; Matas, J.; Mikolajczyk, K.: P-N learning: Bootstrapping binary classifiers by structural constraints. In Computer Vision and Pattern Recognition (CVPR), 2010 IEEE Conference on, 2010, ISSN 1063-6919, s. 49–56. [15] Kalal, Z.; Mikolajczyk, K.; Matas, J.: Face-TLD: Tracking-Learning-Detection applied to faces. In Image Processing (ICIP), 2010 17th IEEE International Conference on, 2010, ISSN 1522-4880, s. 3789–3792. [16] Kalal, Z.; Mikolajczyk, K.; Matas, J.: Forward-Backward Error: Automatic Detection of Tracking Failures. In Pattern Recognition (ICPR), 2010 20th International Conference on, 2010, ISSN 1051-4651, s. 2756–2759. [17] Klein, D.; Schulz, D.; Frintrop, S.; aj.: Adaptive real-time video-tracking for arbitrary objects. In Intelligent Robots and Systems (IROS), 2010 IEEE/RSJ International Conference on, 2010, ISSN 2153-0858, s. 772–777. [18] Kleinehagenbrock, M.; Lang, S.; Fritsch, J.; aj.: Person tracking with a mobile robot based on multi-modal anchoring. In Robot and Human Interactive Communication, 2002. Proceedings. 11th IEEE International Workshop on, 2002, s. 423–429. [19] Lamberti, L.; Camastra, F.: Real-Time Hand Gesture Recognition Using a Color Glove. In Image Analysis and Processing – ICIAP 2011, Lecture Notes in Computer Science, ročník 6978, Springer Berlin Heidelberg, 2011, ISBN 978-3-642-24084-3, s. 365–373. [20] Lowe, D. G.: Object recognition from local scale-invariant features. In Computer vision, 1999. The proceedings of the seventh IEEE international conference on, ročník 2, Ieee, 1999, s. 1150–1157. [21] Lowe, D. G.: Distinctive image features from scale-invariant keypoints. International journal of computer vision, ročník 60, č. 2, 2004: s. 91–110. [22] Marcel, S.; Bernier, O.; Viallet, J.-E.; aj.: Hand gesture recognition using input-output hidden Markov models. In Automatic Face and Gesture Recognition, 2000. Proceedings. Fourth IEEE International Conference on, IEEE, 2000, s. 456–461. [23] Nguyen, Q. C.; Shin, D.; Shin, D.; aj.: Real-Time Human Tracker Based on Location and Motion Recognition of User for Smart Home. In Multimedia and Ubiquitous Engineering, 2009. MUE ’09. Third International Conference on, 2009, s. 243–250. [24] Okuma, K.; Taleghani, A.; Freitas, N.; aj.: A Boosted Particle Filter: Multitarget Detection and Tracking. In Computer Vision - ECCV 2004, Lecture Notes in Computer Science, ročník 3021, Springer Berlin Heidelberg, 2004, ISBN 978-3-540-21984-2, s. 28–39. [25] Sanjeev Arulampalam, M.; Maskell, S.; Gordon, N.; aj.: A tutorial on particle filters for online nonlinear/non-Gaussian Bayesian tracking. Signal Processing, IEEE Transactions on, ročník 50, č. 2, 2002: s. 174–188, ISSN 1053-587X. 24
[26] Vapnik, V. N.; Kotz, S.: Estimation of dependences based on empirical data, ročník 41. Springer-Verlag New York, 1982. [27] WWW stránky: Termínový kalendář závodů agility [online]. http://www.kacr.info. [28] WWW stránky: Web algoritmu FragTrack [online]. http://www.cs.technion.ac.il/~amita/fragtrack/fragtrack.htm cit. [2013-04-23]. [29] WWW stránky: Web Borise Babenka — MILTrack [online]. http://vision.ucsd.edu/~bbabenko/project_miltrack.shtml cit. [2013-04-22]. [30] WWW stránky: Web s dostupnými zdrojovými kódy k Reading People Tracker [online]. http://www.siebel-research.de/people_tracking/reading_people_tracker/ cit. [2013-04-22]. [31] WWW stránky: Řád agility [online]. http://www.klubagility.cz/static/docs/Rad FCI Agility platny od 1 7 2012 rev1.pdf, 2013-01-01 cit. [2013-04-19].
25