ˇ ´ Cesk e ´ vysoke ˇen´ı uc ´ technicke v Praze Fakulta elektrotechnick´ a Kybernetika a robotika
Bakal´ aˇrsk´ a pr´ ace
Lokalizace osob v budovˇ es vyuˇ zit´ım bezdr´ atov´ e technologie Jan Trejbal
Kvˇ eten 2015 Vedouc´ı pr´ ace: Ing. Karel Koˇsnar, Ph.D.
České vysoké učení technické v Praze Fakulta elektrotechnická Katedra kybernetiky
ZADÁNÍ BAKALÁŘSKÉ PRÁCE Student:
Jan T r e j b a l
Studijní program:
Kybernetika a robotika (bakalářský)
Obor:
Robotika
Název tématu:
Lokalizace osob v budově s využitím bezdrátové technologie
Pokyny pro vypracování: 1. Seznamte se s metodami lokalizace za přítomnosti neurčitosti. 2. Naimplementujte vybranou metodu využívající skryté markovovské modely. 3. Proveďte experimentální ověření. 4. Vyhodnoťte kvalitu implementované metody.
Seznam odborné literatury: [1] Zahid F., Rosdiadee N., and Mahamod I., “Recent Advances in Wireless Indoor Localization Techniques and System,” Journal of Computer Networks and Communications, vol. 2013, Article ID 185138, 12 pages, 2013. doi:10.1155/2013/185138 [2] Arthi, R.; Murugan, K., "Localization in Wireless Sensor Networks by Hidden Markov Model," Advanced Computing (ICoAC), 2010 Second International Conference on , vol., no., pp.14,18, 14-16 Dec. 2010 doi: 10.1109/ICOAC.2010.5725355 [3] Ibrahim, M., and Moustafa Y.. "A hidden markov model for localization using low-end gsm cell phones."Communications (ICC), 2011 IEEE International Conference on. IEEE, 2011.
Vedoucí bakalářské práce: Ing. Karel Košnar, Ph.D. Platnost zadání: do konce letního semestru 2015/2016
L.S.
doc. Dr. Ing. Jan Kybic vedoucí katedry
prof. Ing. Pavel Ripka, CSc. děkan V Praze dne 20. 1. 2015
Prohl´ aˇsen´ı Prohlaˇsuji, ˇze jsem pˇredloˇzenou pr´aci vypracoval samostatnˇe a ˇze jsem uvedl veˇsker´e pouˇzit´e informaˇcn´ı zdroje v souladu s Metodick´ ym pokynem o dodrˇzov´an´ı etick´ ych princip˚ u pˇri pˇr´ıpravˇe vysokoˇskolsk´ ych z´avˇereˇcn´ ych prac´ı.
V Praze dne 20. 5. 2015
i
Podˇ ekov´ an´ı R´ad bych podˇekoval Ing. Karlu Koˇsnarovi, Ph.D. za veden´ı t´eto bakal´aˇrsk´e pr´ace a za cenn´e rady, d´ıky kter´ ym jsem zd´arnˇe dokonˇcil tuto bakal´aˇrskou pr´aci. R´ad bych t´eˇz podˇekoval rodinˇe za podporu a trpˇelivost po dobu m´eho studia.
ii
Abstrakt Tato bakal´aˇrsk´a pr´ace se zab´ yv´a lokalizac´ı osob v budovˇe s vyuˇzit´ım bezdr´atov´e technologie. Lokalizace je ˇreˇsena s vyuˇzit´ım skryt´ ych Markovsk´ ych model˚ u a porovn´av´ana je s k-NN klasifikac´ı. Pro lokalizaci bylo v r´amci pr´ace naps´ano nˇekolik program˚ u a aplikac´ı v jazyku C++ a PHP. V z´avˇeru je porovn´ano nˇekolik konfigurac´ı aplikace a vyhodnocena nejvhodnˇejˇs´ı konfigurace. Kl´ıˇcov´a slova: Skryt´e Markovsk´e modely, lokalizace, matlab, C++, PHP, relaˇcn´ı datab´aze
Abstract This thesis deals with the localization of people in buildings using wireless technology. Localization is solved using hidden Markov models and compares them with the k-NN classification. I wrote several programs and applications which were written in C++ and PHP. I compared several configuratios of applications and I evaluated the most appropriate configuration. Keywords: Hidden Markov models, localization, matlab, C++, PHP, relational database
iii
Obsah 1
´ Uvod
1
1.1 Definice u ´lohy . . 1.2 Metody lokalizace 1.2.1 Triangulace 1.2.2 K-NN . . .
2
3
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
3
2.1 Tr´enov´an´ı modelu . . . . . . . . . . . . . . . . . . . . . . 2.2 Pouˇzit´ı modelu . . . . . . . . . . . . . . . . . . . . . . . .
3 5
Jednotky IMA
6
Vys´ılaˇce . . . . Pˇrij´ımaˇce . . . ˇ ıd´ıc´ı jednotka R´ Zpracov´an´ı dat
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Implementace
6 6 7 7
10
4.1 Sbˇer dat . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Ukl´ad´an´ı informac´ı v pr˚ ubˇehu mˇeˇren´ı . . . . . . . . 4.1.1.1 Pˇripojen´ı k u ´loˇziˇsti . . . . . . . . . . . . . . 4.1.1.2 Pˇripojen´ı k ˇr´ıd´ıc´ı jednotce IMA . . . . . . . 4.1.1.3 Parsov´an´ı proudu dat z ˇr´ıd´ıc´ı jednotky . . . 4.1.2 Definov´an´ı fyzick´eho prostˇred´ı . . . . . . . . . . . . 4.2 Uˇcen´ı a rozpozn´av´an´ı ze sebran´ ych dat . . . . . . . . . . 4.2.1 Pˇripojen´ı k u ´loˇziˇsti . . . . . . . . . . . . . . . . . . 4.2.2 Pˇripojen´ı k Matlabu . . . . . . . . . . . . . . . . . 4.2.3 Pˇripraven´ı dat pro tr´enov´an´ı a rozpozn´av´an´ı . . . . 4.2.3.1 Proˇciˇstˇen´ı dat . . . . . . . . . . . . . . . . 4.2.3.2 Kvantov´an´ı dat . . . . . . . . . . . . . . . . 4.2.3.3 Pˇrek´odov´an´ı dat . . . . . . . . . . . . . . . 4.2.4 Vystavˇen´ı modelu z dat . . . . . . . . . . . . . . . . 4.2.5 Rozpozn´an´ı nejpravdˇepodobnˇejˇs´ı sekvence stav˚ u z dat a natr´enovan´eho modelu . . . . . . . . . . . . . 4.3 Jin´a metoda uˇcen´ı a rozpozn´av´an´ı . . . . . . . . . . . . . 4.4 Export v´ ysledk˚ u . . . . . . . . . . . . . . . . . . . . . . .
5
1 1 1 1
Skryt´ e Markovsk´ e modely
3.1 3.2 3.3 3.4
4
. . . .
Experimenty
10 10 10 11 11 12 13 14 14 15 15 15 15 15 16 16 16
17
5.1 Sbˇer dat . . . . . . . . . . . . . . . . . . . . . . . . . . . iv
17
5.2 Tr´enov´an´ı a rozpozn´av´an´ı z dat . . . . . . . . . . . . . . .
18
6
V´ ysledky
22
7
Z´ avˇ er
26
Literatura
27
v
Seznam obr´ azk˚ u 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Uk´azka pouˇzit´ı triangulace [1] . . . . . . . . . . . . . . . . Uk´azka vyhodnocen´ı pomoc´ı k-NN . . . . . . . . . . . . . Uk´azkov´e sch´ema tranzitivit HMM [2] . . . . . . . . . . . . N´akres struktury IMA . . . . . . . . . . . . . . . . . . . . Vys´ılaˇc IMA [3] . . . . . . . . . . . . . . . . . . . . . . . . Pˇrij´ımaˇc IMA [3] . . . . . . . . . . . . . . . . . . . . . . . Proud dat z ˇr´ıd´ıc´ı jednotky . . . . . . . . . . . . . . . . . . ER diagram . . . . . . . . . . . . . . . . . . . . . . . . . . Nastaven´ı mapy . . . . . . . . . . . . . . . . . . . . . . . . Aplikace pouˇz´ıvan´a pˇri uˇcen´ı . . . . . . . . . . . . . . . . . Mapa s vyznaˇcen´ ymi pˇrij´ımaˇci . . . . . . . . . . . . . . . . Porovn´an´ı 1. mˇeˇren´ı, uˇcen´ı nad 0x4e, rozpozn´av´an´ı nad 0x4a Porovn´an´ı 1. mˇeˇren´ı, uˇcen´ı nad 0x4a, rozpozn´av´an´ı nad 0x4e Porovn´an´ı 2. mˇeˇren´ı, uˇcen´ı nad 0x4e, rozpozn´av´an´ı nad 0x4a Porovn´an´ı 2. mˇeˇren´ı, uˇcen´ı nad 0x4a, rozpozn´av´an´ı nad 0x4e Porovn´an´ı 2. mˇeˇren´ı, uˇcen´ı nad 0x4a, rozpozn´av´an´ı nad 0x4e - rozdˇeleno do skupin . . . . . . . . . . . . . . . . . . . . . Porovn´an´ı 2. mˇeˇren´ı, uˇcen´ı nad 0x4a, rozpozn´av´an´ı nad 0x4e, 3 kvantily . . . . . . . . . . . . . . . . . . . . . . . . . . . Porovn´an´ı 2. mˇeˇren´ı, uˇcen´ı nad 0x4a, rozpozn´av´an´ı nad 0x4e, 5 kvantil˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . .
vi
2 2 4 6 7 8 9 11 13 14 17 22 22 23 23 24 24 25
Kapitola 1
´ Uvod 1.1
Definice u ´lohy
C´ılem m´e bakal´aˇrsk´e pr´ace je lokalizovat osoby v budovˇe s pˇresnost´ı na m´ıstnosti s vyuˇzit´ım v budovˇe rozm´ıstˇen´eho hardwaru. Mezi rozm´ıstˇen´ y hardware patˇr´ı pˇrij´ımaˇce a lokalizovanou osobou nesen´ y vys´ılaˇc. Lokalizovat osobu v budovˇe je nesnadn´e, pˇredevˇs´ım d´ıky interferenc´ım vznikaj´ıc´ım pr˚ uchodem sign´alu z nesen´ ych vys´ılaˇc˚ u skrz stˇeny k pˇrij´ımaˇc˚ um. Tento hardware lze pˇr´ıpadnˇe zamˇenit za WiFi access pointy a mobiln´ı telefony na nˇe pˇripojen´e. D´ıky ˇcemu lze sn´ıˇzit poˇrizovac´ı n´aklady vyuˇzit´ım existuj´ıc´ı infrastruktury.
1.2
Metody lokalizace
Mezi uvaˇzovan´e metody lokalizace, ˇci klasifikace pro tuto bakal´aˇrskou pr´aci patˇr´ı napˇr. triangulace, k-NN klasifikace a skryt´e Markovsk´e modely.
1.2.1
Triangulace
Lokalizace pomoc´ı triangulace vych´az´ı z geometrie a z vlastnost´ı troj´ uheln´ıku. V t´eto metodˇe se vyuˇz´ıv´a znalosti vzd´alenost´ı mezi zn´am´ ymi body, mezi zn´am´ ymi body zmˇeˇr´ıme u ´hly v bodˇe u kter´eho chceme urˇcit polohu, z tˇechto u ´hl˚ u lze vypoˇc´ıtat jednoduchou matematikou poloha, pro ilustraci n´akres metody na obr´azku 1, na kter´em je zachycena triangulace pro stanoven´ı vzd´alenosti lodi od pobˇreˇz´ı v kter´e po zmˇeˇren´ı u ´hl˚ u staˇc´ı vyuˇz´ıt vzorec: d = l ∗ sin(α) ∗ sin(β) Pro lokalizaci osob v budovˇe tato metoda nen´ı vhodn´a. Mˇeˇren´ı u ´hl˚ u mezi zn´am´ ymi body v budovˇe je velice ˇspatnˇe realizovateln´e. Pouˇzit´ı sil sign´al˚ u pˇrepoˇcten´ ych na vzd´alenost by pouˇzit´ı metody umoˇznila, tato metoda by vˇsak ˇspatnˇe reagovala na r˚ uznˇe tlust´e, nebo mokr´e stˇeny, kter´e ovlivˇ nuj´ı sign´al jimi prostupuj´ıc´ı.
1.2.2
K-NN
Lokalizace (klasifikace) pomoc´ı k-NN1 [4] je bˇeˇznˇe uˇz´ıvanou metodou, d´ıky jej´ı jednoduchosti. V t´eto metodˇe se urˇc´ı nejvhodnˇejˇs´ı kandid´at pomoc´ı nejmenˇs´ı vzd´alenosti od 1
Nearest Neighbour classification: Klasifikace podle nejbliˇzˇs´ıch soused˚ u
1/29
1.2 METODY LOKALIZACE
Obr´azek 1: Uk´azka pouˇzit´ı triangulace [1] ’k’ prvk˚ u. Z tohoto postupu plyne nutnost existence metody vyˇc´ısluj´ıc´ı vzd´alenost mezi jednotliv´ ymi prvky. N´ahled vyhodnocov´an´ı pomoc´ı k-NN je na obr´azku 2, na kter´em zelen´e koleˇcko zn´azorˇ nuje prvek, kter´ y chceme ohodnotit, ˇcerven´e a ˇcern´e kruhy zn´azorˇ nuj´ı referenˇcn´ı vzorky. Pˇri pouˇzit´ı 1-NN zn´azorˇ nuje vyhodnocen´ı ˇzlut´ y kruh, jako ohodnocen´ı by byl zvolen ˇcerven´ y kruh. Pouˇzit´ı 3-NN zn´azornˇen´e zelen´ y kruhem oproti 1-NN vˇsak ohodnot´ı prvek jako ˇcern´ y. Tuto metodu lze vyuˇz´ıt, bohuˇzel vˇsak tato metoda nezohledˇ nuje re´aln´ y pohyb osob budovou. Umoˇzn ˇuje tak napˇr´ıklad proch´azen´ı zd´ı budov, nebo skoky mezi patry bez pouˇzit´ı schodiˇstˇe.
Obr´azek 2: Uk´azka vyhodnocen´ı pomoc´ı k-NN
2/29
Kapitola 2
Skryt´ e Markovsk´ e modely Skryt´e Markovsk´e modely (HMM) 2 jsou rozˇs´ıˇren´ım Markovsk´ ych model˚ u [5], v kter´ ych ˇretˇez stav˚ u nen´ı pˇr´ımo pozorovateln´ y. Oproti napˇr´ıklad triangulaci zm´ınˇen´e v sekci 1.2.1 a K-NN ze sekce 1.2.2 m´a HMM v´ yhodu ve specifikov´an´ı moˇzn´ ych pˇrechod˚ u mezi stavy (v naˇsem pˇr´ıpadˇe m´ıstnosti), respektive v moˇznosti jejich zamezen´ı viz obr´azek 3 (tento graf lze popsat matic´ı tranzitivity) z kter´eho je zˇrejm´e, ˇze neexistuje pˇrechod mezi π1 a π6 , ale ˇze existuje pˇrechod z π1 do π2 nebo π5 . Definov´an´ım pˇrechod˚ u mezi stavy, tak lze zamezit chyb´am zp˚ usoben´ ym interferenc´ı a n´asledn´ ym ˇspatn´ ym urˇcen´ım stavu. Tyto chyby jsou automaticky eliminov´any d´ıky absenci pˇr´ım´eho pˇrechodu mezi stavy (napˇr. pro pˇrechod z m´ıstnosti do m´ıstnosti je nutn´e vyuˇz´ıt chodbu). Jelikoˇz nem´ame pˇr´ımou informaci o aktu´aln´ım stavu (m´ıstnosti) nad pˇrechody mezi stavy vybudujeme dalˇs´ı matici (matice emisivity), kter´a ud´av´a pravdˇepodobnost, s jakou dan´ y stav odpov´ıd´a vektoru sil sign´al˚ u z pˇrij´ımaˇc˚ u. Matematick´ y model HMM pro n´aˇs pˇr´ıpad m˚ uˇzeme reprezentovat pomoc´ı S, V , T , E a O, kde: • S = {S1 , S2 , ..., SN } - Si jsou jednotliv´e m´ıstnosti a N = |S| v S jsou tedy vˇsechny m´ıstnosti, • V = {v1 , v2 , ..., vM } - vi jsou jednotliv´a pozorov´an´ı (upraven´e s´ıly sign´al˚ u) a M = |V | ve V jsou tedy vˇsechna z´ıskan´a data, • T = {tij } je matice tranzitivit v kter´e kaˇzd´ y prvek tij odpov´ıd´a pravdˇepodobnosti pˇrechodu z Si do Sj , • E = {eij } je matice emisivit, v kter´e i < N a j < Q kde Q je poˇcet vˇsech moˇzn´ ych pozorov´an´ı, eij pak odpov´ıd´a pravdˇepodobnosti emise ze stavu do dan´eho pozorov´an´ı a • O = {o1 , o2 , ..., oM } je pak hledan´a sekvence m´ıstnost´ı.
2.1
Tr´ enov´ an´ı modelu
Pro tr´enov´an´ı modelu jsem si vybral interativn´ı metodu [6]. Tr´enov´an´ı pomoc´ı t´eto metody lze zjednoduˇsenˇe popsat tˇemito kroky: 1. Odhad poˇc´ateˇcn´ıch pravdˇepodobnost´ı - v z´akladu rovnomˇern´e. 2
Hidden Markov Model: Skryt´e Markovsk´e modely
3/29
´ ´ ´I MODELU 2.1 TRENOV AN
Obr´azek 3: Uk´azkov´e sch´ema tranzitivit HMM [2]
4/29
ˇ ´I MODELU 2.2 POUZIT 2. Na z´akladˇe emisivity a tranzitivity urˇcen´ı nejpravdˇepodobnˇejˇs´ı sekvence stav˚ uz vektor˚ u sil sign´al˚ u. 3. Odhad nov´ ych pravdˇepodobnost´ı na z´akladˇe oˇcek´avan´ ych a vypoˇcten´ ych sekvenc´ı stav˚ u. 4. Prov´ad´ıme n iterac´ı 2. a 3. bodu algoritmu do doby, neˇz jsme spokojeni s odchylkou . Po dokonˇcen´ı tr´enov´an´ı m´ame pˇripraven model pro rozpozn´av´an´ı, tj. m´ame naplnˇeny S, T a E ze sekce 1.2.2. Pro u ´plnost zm´ın´ım existenci Baumova-Welchova algoritmu [7], ten jsem vˇsak v pr´aci nevyuˇzil, lze ho vˇsak napˇr. vyuˇz´ıt pro dalˇs´ı zpˇresˇ nov´an´ı modelu.
2.2
Pouˇ zit´ı modelu
Pro nalezen´ı nejpravdˇepodobnˇejˇs´ı cesty na z´akladˇe vektor˚ u sil sign´al˚ u a natr´enovan´eho modelu jsem se rozhodl vyuˇz´ıt Viterbiho algoritmus [8], kter´ y je vhodn´ ym algoritmem, pro urˇcen´ı nejpravdˇepodobnˇejˇs´ı sekvence stav˚ u. Tento algoritmus se vyuˇz´ıv´a napˇr´ıklad v GSM, CDMA, satelitn´ı komunikaci a dalˇs´ıch syst´emech vyuˇz´ıvaj´ıc´ıch digit´aln´ı k´odov´an´ı [9]. Do tohoto algoritmu vstupuj´ı data pˇripraven´a z tr´enov´an´ı, tj. S, T a E, d´ale pak seznam pozorov´an´ı V , v´ ystupem je pak hledan´a sekvence O.
5/29
Kapitola 3
Jednotky IMA Pro pokusy mi byl umoˇznˇen pˇr´ıstup k jednotk´am od firmy IMA3 , kter´e obsahuj´ı ˇr´ıd´ıc´ı jednotku, pˇrij´ımaˇce a vys´ılaˇce. N´akres struktury hardwaru je na obr´azku 4.
Obr´azek 4: N´akres struktury IMA
3.1
Vys´ılaˇ ce
Vys´ılaˇce jsou pˇrenosn´e, zhruba o velikosti pageru. Na sv´em tˇele maj´ı um´ıstˇen´e tlaˇc´ıtko, po jeho stisku dojde k neprodlen´emu vysl´an´ı sign´alu z vys´ılaˇce. Vys´ılaˇc je k nahl´ednut´ı na obr´azku 5. Vys´ılaˇce vys´ılaj´ı sign´al v pravideln´ ych intervalech ihned po zapnut´ı. Jeden z vys´ılaˇc˚ u byl v dobˇe testov´an´ı nastaven na pravideln´e vys´ıl´an´ı sign´alu jednou za 1s, druh´ y 4x za stejnou dobu. Sign´al je vys´ılan´ y v p´asmu 2,4GHz (tedy voln´e p´asmo).
3.2
Pˇrij´ımaˇ ce
Pˇrij´ımaˇce jsou nepˇrenosn´e, o velikosti bˇeˇzn´eho notebookov´eho zdroje. Na sv´em tˇele maj´ı dva SMA konektory pro ant´eny, konektor pro nap´ajen´ı, vyp´ınaˇc a diodu indikuj´ıc´ı 3
Institut Mikroelektronick´ ych Aplikac´ı
6/29
´ ´I DAT 3.4 ZPRACOVAN
Obr´azek 5: Vys´ılaˇc IMA [3] zapnut´ı pˇrij´ımaˇce. Pˇrij´ımaˇc je k nahl´ednut´ı na obr´azku 6. Tyto pˇrij´ımaˇce se automaticky spoj´ı s ˇr´ıd´ıc´ı jednotkou, kter´e pˇred´avaj´ı sebran´a data.
3.3
ˇ ıd´ıc´ı jednotka R´
ˇ ıd´ıc´ı jednotka je mikro PC, kter´e m´a na sv´em tˇele nap´ajec´ı konektor, s´ıt’ov´ R´ y konektor (RJ45) a USB konektor. Do USB konektoru je zapojen ZigBee pˇrij´ımaˇc, kter´ y sb´ır´a data zaslan´a z pˇrij´ımaˇc˚ u. Tato jednotka pˇrijat´a data odes´ıl´a jako proud dat.
3.4
Zpracov´ an´ı dat
Zpracov´an´ı dat prob´ıh´a v t´eto sekvenci: • Vys´ılaˇc vyˇsle data (automaticky, nebo po stisku tlaˇc´ıtka), • vˇsechny pˇrij´ımaˇce v dosahu pˇrijmou vyslan´ y sign´al a ohodnot´ı jeho u ´roveˇ n, • ˇr´ıd´ıc´ı jednotka od pˇrij´ımaˇc˚ u obdrˇz´ı informaci o vys´ılaˇci, identifik´ator vyslan´eho sign´alu (umoˇzn ˇuje sp´arovat pˇrijat´a data z jednotliv´ ych pˇrij´ımaˇc˚ u) a s´ılu sign´alu, • ˇr´ıd´ıc´ı jednotka vys´ıl´a pˇrijat´a data jako proud dat na TCP/IP portu 1112. Obsah proudu dat je k nahl´ednut´ı na obr´azku 7. Na tomto obr´azku jsou vidˇet servisn´ı informace (oznaˇcen´e ’#’ v druh´em sloupci), ty jsou pro u ´ˇcely mˇeˇren´ı nezaj´ımav´e. 7/29
´ ´I DAT 3.4 ZPRACOVAN
Obr´azek 6: Pˇrij´ımaˇc IMA [3] Zaj´ımav´e jsou data kter´a maj´ı v druh´em sloupci ’D’ v dan´em ˇr´adku jsou obsaˇzen´a data jako: identifik´ator pˇrij´ımaˇce (4. sloupec), identifik´ator vys´ılaˇce (5. sloupec), identifik´ator vyslan´eho sign´alu (6. sloupec), s´ılu sign´alu (7. sloupec) a informaci o stisku tlaˇc´ıtka (8. sloupec). Vˇsechna takto vyslan´a data jsou v ˇsestn´actkov´e soustavˇe.
8/29
´ ´I DAT 3.4 ZPRACOVAN
Obr´azek 7: Proud dat z ˇr´ıd´ıc´ı jednotky
9/29
Kapitola 4
Implementace Pro potˇreby bakal´aˇrsk´e pr´ace jsem implementoval programy v jazyce C++ a aplikaci v PHP. Prvn´ım programem byl program pro sbˇer dat, kter´ y byl vyv´ıjen z´aroveˇ n s aplikac´ı v PHP, kter´e umoˇzn ˇuje vlastn´ı sbˇer dat. Druh´ y implementovan´ y program zpracov´av´a sebran´a data, z kter´ ych tr´enuje model a n´aslednˇe rozpozn´av´a nejpravdˇepodobnˇejˇs´ı sekvenci navˇst´ıven´ ych m´ıstnost´ı, kterou porovn´av´a s referenˇcn´ı metodou k-NN.
4.1
Sbˇ er dat
Sbˇer dat m´a aplikace prov´adˇet pˇripojen´ım k ˇr´ıd´ıc´ı jednotce IMA popsan´e v sekci 3.3, n´aslednˇe m´a tato data pˇreparsovat a uloˇzit pro dalˇs´ı pouˇzit´ı. Od toho se odv´ıj´ı jej´ı struktura:
4.1.1
Ukl´ ad´ an´ı informac´ı v pr˚ ubˇ ehu mˇ eˇ ren´ı
Program pro sbˇer dat4 je ps´an v jazyce C++ s maxim´aln´ı snahou vyuˇz´ıvat pˇrednosti OOP5 , jako jsou napˇr´ıklad rozhran´ı (interface)6 umoˇzn ˇuj´ıc´ı v navrˇzen´em programu napˇr´ıklad snadno zmˇenit SQL u ´loˇziˇstˇe za u ´loˇziˇstˇe zcela jin´eho typu. Z´akladn´ı funkce programu jsou: • Pˇripojen´ı k u ´loˇziˇsti, • pˇripojen´ı k ˇr´ıd´ıc´ı jednotce IMA 3.3, • parsov´an´ı proudu dat z ˇr´ıd´ıc´ı jednotky a • uloˇzen´ı v´ ysledk˚ u do u ´loˇziˇstˇe kter´e jsou pops´any v n´asleduj´ıc´ıch sekc´ıch: 4.1.1.1
Pˇ ripojen´ı k u ´ loˇ ziˇ sti
Jako u ´loˇziˇstˇe jsem zvolil relaˇcn´ı datab´azi MySQL [10], konkr´etnˇe jej´ı odnoˇz MariaDB [11], kter´a je oproti MySQL od Oracle efektivnˇejˇs´ı. Datab´azi jsem zvolil InnoDB [12], kter´a mimo jin´e umoˇzn ˇuje vyuˇzit´ı transakˇcn´ıch operac´ı. Pro tuto datab´azi jsem implementoval SqlStorage jako rozhran´ı IStorage, ve kter´em jsem vyuˇzil existuj´ıc´ı C++ knihovny pro MySQL[13]. V t´eto implementaci jsem pouˇzil 4
K dispozici na pˇriloˇzen´em CD a online na https://bitbucket.org/trejjam/ima Object-oriented programming: Objektovˇe orientovan´e programov´an´ı 6 V jazyce C++ nejsou definovan´e rozhran´ı (interface), jako napˇr. v PHP(PHP: Hypertext Preprocessor), tuto absenci obch´ az´ım pomoc´ı neimlementovan´e (tj. pouze definovan´e) tˇr´ıdy 5
10/29
ˇ DAT 4.1 SBER pˇredpˇripraven´e dotazy (prepared statements [14]), kter´e mimo zlepˇsen´ı ˇcasov´ ych prodlev pˇrin´aˇs´ı i typovou kontrolu, pˇr´ıpadnˇe u ´pravu dat. Vz´ajemn´e vztahy tabulek datab´aze vyuˇz´ıvan´ ych touto implementac´ı jsou vyobra7 zeny pomoc´ı ER modelu na obr´azku 8. Tento model popisuje jednoduchou relaci mezi tabulkou se sebran´ ymi daty a vys´ılaˇcem z kter´eho byla tato data odesl´ana.
Obr´azek 8: ER diagram
4.1.1.2
Pˇ ripojen´ı k ˇ r´ıd´ıc´ı jednotce IMA
Pˇripojen´ı k ˇr´ıd´ıc´ı jednotce IMA se uskuteˇcn´ı na z´akladˇe zad´an´ı IP adresy a portu a ˇ ıd´ıc´ı jednotka takto vytvoˇren´ n´asledn´em nav´az´an´ı TCP/IP spojen´ı k jednotce. R´ ym spojen´ım zas´ıl´a do aplikace jednoduch´ y proud dat popsan´ ym v sekci 3.4. 4.1.1.3
Parsov´ an´ı proudu dat z ˇ r´ıd´ıc´ı jednotky
Proud dat z ˇr´ıd´ıc´ı jednotky 4.1.1.2 vstupuje do parseru, kter´ y m´a za u ´kol vybrat z dat uˇziteˇcn´e informace (kombinace ˇcasu, ID vys´ılaˇce, ID pˇrij´ımaˇce, . . . ). Prvn´ım krokem je rozdˇelen´ı dat podle oddˇelovaˇce (v tomto pˇr´ıpadˇe je to znak ’\n’ - odˇra´dkov´an´ı). Dalˇs´ım krokem je identifikace datov´ ych ˇr´adk˚ u, ty jsou rozpoznateln´e podle kl´ıˇcov´eho znaku ’D’ v druh´em sloupci. Posledn´ım krokem parsov´an´ı je pˇrevod jednotliv´ ych informac´ı na datov´e typy vhodn´e pro uchov´an´ı a dalˇs´ı zpracov´an´ı. Tyto datov´e typy jsem urˇcil n´asledovnˇe: 7
Entity-relationship model: entitnˇe vztahov´ y model
11/29
ˇ DAT 4.1 SBER • ˇcas - double • ID pˇrij´ımaˇce - int • ID vys´ılaˇce - int • ID mˇeˇren´ı - int • s´ıla sign´alu - int • stisknut´e tlaˇc´ıtko - int8 Informace z´ıskan´e z parseru jsou pˇred´av´any do popsan´e implementace rozhran´ı IStorage (tj. do SqlStorage) popsan´e v sekci 4.1.1.1, kter´e je n´aslednˇe ukl´ad´a do datab´aze pro pozdˇejˇs´ı vyuˇzit´ı. Zdrojov´e k´ody jsou spravov´any GIT reposit´aˇrem9 , pouˇzit´ ym pˇredevˇs´ım pro moˇznost verzov´an´ı, d´ıky jeho existenci je snadn´e spolupracovat na projektu s v´ıce u ´ˇcastn´ıky. Ostatn´ı zdrojov´e k´ody a texty jsou tak´e verzovan´e z podobn´ ych d˚ uvod˚ u jako tento program.
4.1.2
Definov´ an´ı fyzick´ eho prostˇ red´ı
Pro pˇriˇrazen´ı namˇeˇren´ ych dat k re´aln´ ym prostor´am jsem vytvoˇril jednoduchou webo10 vou aplikaci . Pˇri jej´ımˇz vytv´aˇren´ı bylo myˇsleno na snadn´e vloˇzen´ı map budov a n´asledn´e specifikov´an´ı m´ıstnost´ı, t´eˇz na pˇr´ıpadn´e budouc´ı zobrazov´an´ı pozice vys´ılaˇce (lokalizov´an´ı osoby). Aplikace je naprogramov´ana v jazyce PHP s napojen´ım na stejnou MariaDB datab´azi jako aplikace popsan´a v sekci 4.1.1, d´ıky tomuto propojen´ı lze snadno pˇriˇrazovat namˇeˇren´a data k jednotliv´ ym m´ıstnostem. J´adrem aplikace je Nette Framework 2.3 [15] s moduly (extensions) dostupn´ ymi pˇres 11 Composer : • trejjam/authorization [16] - spr´ava uˇzivatel˚ u a jejich rol´ı s napojen´ım na relaˇcn´ı datab´azi pro pohodln´e nastavov´an´ı pr´av z administrace aplikace • kdyby/console [17] - knihovna pro snadn´e vytv´aˇren´ı konzolov´ ych pˇr´ıkaz˚ u v PHP pro Nette Framework Pˇri psan´ı aplikace byly vyuˇzity principy jako DI12 , DRY13 . Pro automatizov´an´ı pˇri v´ yvoji je pouˇzit Grunt14 . Nasazov´an´ı aplikace je ˇreˇseno pomoc´ı verzovac´ıho n´astroje GIT a vzd´alen´eho reposit´aˇre. 8
pro tlaˇc´ıtko by byl vhodnˇejˇs´ı boolean, avˇsak tento typ m´a slabou podporu v nˇekter´ ych datab´ azov´ ych syst´emech, proto jsem zvolil int 9 K dispozici na pˇriloˇzen´em CD a online na https://bitbucket.org/trejjam/ima 10 K dispozici na pˇriloˇzen´em CD a online na https://bitbucket.org/trejjam/ima-web 11 Bal´ıkovac´ı syst´em pro PHP 12 Dependency Injection 13 Don’t repeat yourself 14 http://gruntjs.com/
12/29
ˇ ´I A ROZPOZNAV ´ AN ´ ´I ZE SEBRANYCH ´ 4.2 UCEN DAT Aplikace umoˇzn ˇuje nahr´an´ı obr´azku mapy pomoc´ı standardn´ıho souborov´eho dialogu. Na nahran´e mapˇe n´asledovnˇe umoˇzn ˇuje specifikov´an´ı jmen m´ıstnost´ı. M´ıstnosti, kter´e existuj´ı v datab´azi je moˇzno namapovat na mapu pomoc´ı gesta drag & drop. N´ahled aplikace je na obr´azku 9, nastaven´e m´ıstnosti jsou oznaˇcen´e zelenou barvou, pr´avˇe mapovan´a m´ıstnost je oznaˇcena ˇcervenˇe.
Obr´azek 9: Nastaven´ı mapy Pˇripraven´a mapa se specifikovan´ ymi m´ıstnostmi je vyuˇz´ıv´ana pˇri sbˇeru dat. A to tak, ˇze umoˇzn ˇuje uˇzivateli prov´adˇej´ıc´ımu mˇeˇren´ı jednoznaˇcnˇe urˇcit, v kter´e m´ıstnosti se nach´az´ı. Toto uˇzivatel provede napˇr´ıklad z mobiln´ıho telefonu, s pouˇzit´ım jeho webov´eho prohl´ıˇzeˇce, kde specifikuje nesen´ y vys´ılaˇc (tag) a m´ıstnost v kter´e se nach´az´ı. N´ahled pouˇzit´e aplikace je na obr´azku 10. Z´ısk´an´ım tˇechto informac´ı je schopen program popsan´ y v sekci 4.1.1 spojit pˇr´ıchoz´ı data s m´ıstnost´ı. Toto spojen´ı umoˇzn ˇuje budouc´ı operace s daty, napˇr´ıklad tr´enov´an´ı modelu.
4.2
Uˇ cen´ı a rozpozn´ av´ an´ı ze sebran´ ych dat
Pro uˇcen´ı jsem pˇripravil specializovanou aplikaci, kter´a vyuˇz´ıv´a data pˇripraven´a aplikac´ı popsanou v sekci 4.1.1. Tato aplikace15 je t´eˇz psan´a v jazyce C++. Z´akladn´ı funkcionality aplikace jsou: • Pˇripojen´ı k u ´loˇziˇsti, 15
K dispozici na pˇriloˇzen´em CD a online na https://bitbucket.org/trejjam/imacomputing
13/29
ˇ ´I A ROZPOZNAV ´ AN ´ ´I ZE SEBRANYCH ´ 4.2 UCEN DAT
Obr´azek 10: Aplikace pouˇz´ıvan´a pˇri uˇcen´ı • pˇripojen´ı k Matlabu, • pˇripraven´ı dat pro tr´enov´an´ı a rozpozn´av´an´ı, • vystavˇen´ı modelu z dat, • rozpozn´an´ı nejpravdˇepodobnˇejˇs´ı sekvence stav˚ u z dat a natr´enovan´eho modelu a • export v´ ysledk˚ u.
4.2.1
Pˇ ripojen´ı k u ´ loˇ ziˇ sti
Pˇripojen´ı k u ´loˇziˇsti vyuˇz´ıv´a stejnou knihovnu jako program pro sbˇer dat 4.1.1. Jen s t´ım rozd´ılem, ˇze do u ´loˇziˇstˇe nezapisuje. Po u ´spˇeˇsn´em pˇripojen´ı k u ´loˇziˇsti je tˇreba vybrat mˇeˇren´ı kter´e bude pouˇzito pro tr´enov´an´ı a rozpozn´av´an´ı. Toho je doc´ıleno pomoc´ı klasick´eho ˇra´dkov´eho vstupu, pomoc´ı kter´eho lze zvolit jedno a v´ıce mˇeˇren´ı.
4.2.2
Pˇ ripojen´ı k Matlabu
Pro pˇripojen´ı do programu Matlab jsem vyuˇzil poskytovanou knihovnu [18], kter´a umoˇzn ˇuje volat vlastn´ı pˇr´ıkazy automaticky z vlastn´ı aplikace, jako kdyby byli ruˇcnˇe zad´avan´e do konzole Matlabu. P˚ uvodnˇe jsem chtˇel vyuˇz´ıt tohoto API 16 i pro pˇrenos dat mezi aplikac´ı a Matlabem, ale zde nejsp´ıˇse kv˚ uli neoptim´aln´ımu nadefinov´an´ı typ˚ u pol´ı 16
Application Programming Interface: soubor funkc´ı, procedur, . . . pro komunikaci s aplikac´ı
14/29
ˇ ´I A ROZPOZNAV ´ AN ´ ´I ZE SEBRANYCH ´ 4.2 UCEN DAT doch´azelo k r˚ uzn´ y zmˇen´am v datech. Proto jsem nakonec s´ahl po ne zcela optim´aln´ım ˇreˇsen´ı a to pˇren´aˇset data pˇres prostˇredn´ıka, kter´ ym se stalo nˇekolik textov´ ych soubor˚ u.
4.2.3
Pˇ ripraven´ı dat pro tr´ enov´ an´ı a rozpozn´ av´ an´ı
Sebran´a data nejsou vhodn´a pro pˇr´ım´e pouˇzit´ı v HMM, proto jsem data nejdˇr´ıve proˇcistil, kvantoval a pˇrek´odoval, tyto u ´pravy jsou pops´any v n´asleduj´ıc´ıch sekc´ıch: 4.2.3.1
Proˇ ciˇ stˇ en´ı dat
Aby nevznikl pˇreuˇcen´ y model (tj. model, kter´ y d´ıky velk´emu mnoˇzstv´ı dat zpˇresn´ı sv´e hodnoty tak, ˇze pˇri nasazen´ı nen´ı schopen spr´avnˇe zpracovat/zaˇradit vˇetˇsinu dat) rozhodl jsem se sebran´a data proˇcistit. Metodu ˇciˇstˇen´ı jsem zvolil tak, ˇze pouˇz´ıv´am data s rozestupy ˇcasov´ ych znaˇcek od pˇredchoz´ı i n´asleduj´ıc´ı ˇcasov´e znaˇcky namˇeˇren´ ych u ´daj˚ u. Tedy pro kaˇzd´ y pouˇzit´ y z´aznam plat´ı (s - ˇcasov´a znaˇcka z´aznamu; n - poˇcet z´aznam˚ u; i = 0, 1, (n-2); k = zvolen´ y rozestup): si <= (si+1 + k) <= (si+2 + k) 4.2.3.2
Kvantov´ an´ı dat
Protoˇze jsou data z ˇr´ıd´ıc´ı jednotky IMA 3.3 spojit´a (s intervalem 0-255), rozhodl jsem se tato data pro snazˇs´ı implementaci HMM 1.2.2 kvantovat. Kvantily jsem stanovil objektivnˇe z namˇeˇren´ ych dat a to pomoc´ı vzorce (r - rozsah, q - poˇcet kvantil˚ u, d pˇrijat´a data, round - zaokrouhlen´ı dol˚ u, o - pˇriˇrazen´ y kvantil): o = round(d/(r/q)) 4.2.3.3
Pˇ rek´ odov´ an´ı dat
Z´akladn´ı pouˇzit´ı HMM je omezeno na skal´arn´ı hodnoty, proto bylo tˇreba vektory sil sign´al˚ u zobrazit na skal´arn´ı hodnotu. Pro toto zobrazen´ı (pˇrek´odov´an´ı) jsem si stanovil podm´ınku, aby bylo prost´e, tj. dva r˚ uzn´e vektory se nesm´ı zobrazit do stejn´eho prvku. Pˇrek´odov´an´ı jsem implementoval jako jednoduch´ y pˇrepoˇcet z n-kov´e soustavy (kde n je poˇcet kvantil˚ u) do des´ıtkov´e soustavy. Vezmeme-li si n´ahodn´ y vzorek ze ˇctyˇr pˇrij´ımaˇc˚ u o pˇeti kvantilech implementovan´ y pˇrepoˇcet vypad´a n´asledovnˇe: 0143(5) = 0 ∗ 53 + 1 ∗ 52 + 4 ∗ 51 + 3 ∗ 50 = 48(10)
4.2.4
Vystavˇ en´ı modelu z dat
Pˇri implementov´an´ı tr´enov´an´ı jsem vyuˇzil toho, ˇze iterativn´ı algoritmus 2.1 je implementovan´ y v Matlabu [19]. Jeho z´akladn´ı vol´an´ı vypad´a takto: [T RAN S, EM IS] = hmmestimate(seq, states) 15/29
´ ˚ 4.4 EXPORT VYSLEDK U Vstup do tohoto algoritmu jsou proˇciˇstˇen´a, kvantovan´a a pˇrek´odovan´a data (postup zm´ınˇen v sekc´ıch 4.2.3.1, 4.2.3.2 a 4.2.3.3). V´ ystupem jsou pak hledan´e matice emisivity a tranzitivity. Pro pouˇzit´ı na testovan´ ych datech bylo tˇreba vyuˇz´ıt i voliteln´e parametry funkce: Prvn´ım parametrem je poˇcet symbol˚ u, protoˇze proˇciˇstˇen´a data mohou b´ yt ochuzena o nˇekter´e symboly oproti dat˚ um urˇcen´ ym k rozpozn´av´an´ı, coˇz pˇri pˇr´ıpadn´e absenci a n´asledn´em rozpozn´av´an´ı skonˇc´ı chybou. Druh´ ym parametrem je pˇredpˇripraven´a matice tranzitivit, kterou jsem pˇredvyplnil jedniˇckami na diagon´ale (tj. 100% pravdˇepodobnost pˇrechodu do stejn´eho stavu) a to z d˚ uvodu velice podobn´eho jako u prvn´ıho parametru. Zde vˇsak s vazbou na moˇznost chybˇej´ıc´ıch stav˚ u, kter´e zp˚ usob´ı nulov´ y ˇra´dek v´ ysledn´e matice, coˇz vede k chybˇe pˇri rozpozn´av´an´ı. Tˇret´ım a posledn´ım parametrem je pˇredpˇripraven´a matice emisivit, kterou jsem pˇredvyplnil tak aby emisivity ze vˇsech stav˚ u byly stejn´e (tj. vˇsechny prvky matice maj´ı hodnotu 1/poˇcet symbol˚ u).
4.2.5
Rozpozn´ an´ı nejpravdˇ epodobnˇ ejˇ s´ı sekvence stav˚ uz dat a natr´ enovan´ eho modelu
Pro rozpozn´av´an´ı Viterbiho algoritmem popsan´ ym v sekci 2.2 jsem vyuˇzil funkce implementovan´e v Matlabu [20]. Jej´ıˇz vol´an´ı vypad´a takto: ST AT ES = hmmviterbi(seq, T RAN S, EM IS) Do t´eto funkce pˇred´av´am proˇciˇstˇen´a, kvantovan´a a pˇrek´odovan´a data (postup zm´ınˇen v sekc´ıch 4.2.3.1, 4.2.3.2 a 4.2.3.3), s jedinou u ´pravou oproti tr´enov´an´ı, kterou je zmˇena zdrojov´eho vys´ılaˇce. V´ ystupem funkce je nejpravdˇepodobnˇejˇs´ı ˇretˇezec stav˚ u (m´ıstnost´ı), kter´ ymi se vys´ılaˇc pohyboval.
4.3
Jin´ a metoda uˇ cen´ı a rozpozn´ av´ an´ı
Jako referenˇcn´ı algoritmus jsem vybral k-NN 1.2.2, kter´ y je povaˇzov´an za dobrou referenˇcn´ı metodu klasifikace. Pro tuto metodu jsem implementoval tr´enov´an´ı a rozpozn´av´an´ı s vyuˇzit´ım algoritm˚ u dostupn´ ych v Matlabu.
4.4
Export v´ ysledk˚ u
V´ ysledky porovn´an´ı u ´spˇeˇsnosti rozpozn´an´ı HMM jejichˇz algoritmus je pops´an v sekci 4.2.5 a KNN v sekci 4.3 se ukl´adaj´ı do jednoduch´eho souboru ve form´atu CSV17 , kter´ y umoˇzn ˇuje jejich snadn´e budouc´ı pouˇzit´ı.
17
Comma-separated values: hodnoty oddˇelen´e ˇc´arkami
16/29
Kapitola 5
Experimenty Pˇri prov´adˇen´ı experiment˚ u jsem vyuˇzil napsan´e aplikace a znalosti s´ıt’ov´e komunikace, kter´e pˇriˇsli vhod napˇr. pˇri zpˇr´ıstupˇ nov´an´ı zaˇr´ızen´ı um´ıstˇen´e za NATem18 ze s´ıtˇe Internet
5.1
Sbˇ er dat
ˇ Sbˇer dat jsme prov´adˇeli v budovˇe E CVUT FEL na Karlovˇe n´amˇest´ı v bloku budovy smˇeˇruj´ıc´ı k budovˇe G. Pˇrij´ımaˇce popsan´e v sekci 3.2 jsme rozm´ıstili v 1. patˇre viz obr´azek 11.
Obr´azek 11: Mapa s vyznaˇcen´ ymi pˇrij´ımaˇci Pˇred vlastn´ım mˇeˇren´ım bylo nutn´e spojit, ˇci umoˇznit spojen´ı vˇsech zaˇr´ızen´ı, tj. jednotky IMA, sbˇern´e zaˇr´ızen´ı (notebook) a mobiln´ı telefony. Stabiln´ı pˇr´ıstup mobiln´ıch telefon˚ u k notebooku, na kter´em bˇeˇz´ı server s aplikac´ı, popsan´e v sekci 4.1.2, umoˇzn ˇuj´ıc´ı specifikov´an´ı m´ıstnosti, v kter´e se subjekt prov´adˇej´ıc´ı mˇeˇren´ı nach´az´ı, jsme vyˇreˇsili, pomoc´ı vlastn´ıho soukrom´eho serveru s veˇrejnou IP, z kter´eho jsme vytvoˇrili reverzn´ı tunel pˇres SSH 19 , d´ıky ˇcemu byl notebook dostupn´ y, i v pˇr´ıpadˇe, kdy mobiln´ı telefony pˇreˇsli na mobiln´ı pˇripojen´ı (z d˚ uvodu nedokonal´eho wifi pokryt´ı) a nebyl-li tedy mobiln´ı telefon pˇr´ımo ve ˇskoln´ı s´ıti. Jednotky IMA popsan´e v kapitole 2.2 jsme s notebookem urˇcen´ ym pro bˇeh aplikace pˇripraven´e pro sbˇer dat, popsan´e v sekci 4.1.1, propojily pomoc´ı routeru nakon18 19
Network Address Translation: pˇreklad s´ıt’ov´ ych adres SSH: Secure Shell
17/29
´ ´ ´I A ROZPOZNAV ´ AN ´ ´I Z DAT 5.2 TRENOV AN figurovan´eho jako switch, kter´ y jsme pˇripojili do ˇskoln´ı s´ıtˇe, abychom zajistili stabiln´ı pˇripojen´ı k zm´ınˇen´emu veˇrejn´emu serveru. Do tohoto switche jsme pˇripojili notebook, kter´ ym jsme proskenovali zaˇr´ızen´ı viditeln´a v s´ıti, n´aslednˇe jsme pˇripojili a spustili ˇr´ıd´ıc´ı jednotku IMA, znovu jsme proskenovali s´ıt’ a z rozd´ılu viditeln´ ych zaˇr´ızen´ı jsme identifikovali IP adresu ˇr´ıd´ıc´ı jednotky IMA, kter´a je jedn´ım z parametr˚ u aplikace pro sbˇer dat. Propojen´ım jednotliv´ ych zaˇr´ızen´ı a spuˇstˇen´ım aplikac´ı jsme zajistili vˇse potˇrebn´e k sbˇeru dat, kter´ y prob´ıhal tak, ˇze jsme v mobiln´ım zaˇr´ızen´ı specifikovali nesen´ y vys´ılaˇc (tag) a pˇri pˇrechodu z m´ıstnosti do m´ıstnosti jsme tuto m´ıstnost oznaˇcovali ve webov´e aplikaci. Informace o m´ıstnosti z t´eto aplikace mˇela k dispozici aplikace zpracov´avaj´ıc´ı data z ˇr´ıd´ıc´ı jednotky IMA, kter´a je pˇriˇrazovala k pˇrij´ıman´ ym dat˚ um z jednotky, ˇc´ımˇz jsme z´ıskali sekvenci vektor˚ u sil sign´al˚ u s informac´ı ke kter´e m´ıstnosti tato data patˇr´ı. Sbˇery dat jsme prov´adˇeli s kolegou Richardem Bl´ahou, kter´ y m´a pro sebran´a data vyuˇzit´ı v r´amci vlastn´ı bakal´aˇrsk´e pr´ace. Sbˇer jsme prov´adˇeli souˇcasnˇe s t´ım, ˇze kaˇzd´ y z n´as nesl jeden vys´ılaˇc a pohyboval se nez´avisle na druh´em. V prvn´ım mˇeˇren´ı jsme namˇeˇrili pˇribliˇznˇe 11500 z´aznam˚ u, v druh´em mˇeˇren´ı 34000. Pˇri druh´em mˇeˇren´ı jsme rozˇs´ıˇrili sbˇer dat i na druh´e patro bez zmˇeny rozm´ıstˇen´ı pˇrij´ımaˇc˚ u. Abychom zamezili vlastn´ımu vlivu na mˇeˇren´ı pˇri druh´em mˇeˇren´ı jsme si vys´ılaˇce s kolegou vymˇenili.
5.2
Tr´ enov´ an´ı a rozpozn´ av´ an´ı z dat
Tr´enov´an´ı a rozpozn´av´an´ı nad sebran´ ymi daty jsem prov´adˇel s r˚ uzn´ ymi konfiguracemi rozd´ıl˚ u ˇcasov´ ych znaˇcek u dat urˇcen´ ych pro tr´enov´an´ı i rozpozn´av´an´ı, s poˇctem kvantil˚ u do kter´ ych byli klasifikov´any s´ıly sign´al˚ u na pˇrij´ımaˇc´ıch a poˇcet k v k-NN algoritmu. Pro minim´aln´ı rozd´ıl ˇcasov´ ych znaˇcek dat urˇcen´ ych pro tr´enov´an´ı jsem zvolil hodnoty 0s, 1,5s, 3s, 5s a 8s. Minim´aln´ı rozd´ıl ˇcasov´ ych znaˇcek dat urˇcen´ ych pro rozpozn´av´an´ı jsem zvolil hodnoty 1,5s, 3s, 5s a 8s. Pouˇzit´e kvantily pro data jsem zvolil 3 a 5 kvantil˚ u. Referenˇcn´ı algoritmus jsem nastavoval na k rovno 1, 3 a 5ti. N´aslednˇe jsem spustit uˇcen´ı nad daty z prvn´ıho mˇeˇren´ı z jednoho vys´ılaˇce s rozpozn´av´an´ım z druh´eho vys´ılaˇce pro tato data jsem pouˇzil kombinace vˇsech zm´ınˇen´ ych parametr˚ u. N´aslednˇe jsem vymˇenil pˇrij´ımaˇce. Stejn´ y postup jsem zopakoval i pro druh´e mˇeˇren´ı. Pouˇzit´e konfigurace jsou vyps´any v n´asleduj´ıc´ı tabulce:
18/29
´ ´ ´I A ROZPOZNAV ´ AN ´ ´I Z DAT 5.2 TRENOV AN i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
rozd´ıl ˇcasov´ ych znaˇcek rozd´ıl ˇcasov´ ych znaˇcek u dat pro rozpozn´av´an´ı u dat pro tr´enov´an´ı 0 1,5 0 1,5 0 1,5 0 1,5 0 1,5 0 1,5 0 3 0 3 0 3 0 3 0 3 0 3 0 5 0 5 0 5 0 5 0 5 0 5 0 8 0 8 0 8 0 8 0 8 0 8 1,5 1,5 1,5 1,5 1,5 1,5 1,5 1,5 1,5 1,5 1,5 1,5 1,5 3 1,5 3 1,5 3 1,5 3 1,5 3 1,5 3 1,5 5 1,5 5 1,5 5 1,5 5 1,5 5 1,5 5
poˇcet kvantil˚ u poˇcet k HMM u k-NN 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 19/29
´ ´ ´I A ROZPOZNAV ´ AN ´ ´I Z DAT 5.2 TRENOV AN i 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 20/29
rozd´ıl ˇcasov´ ych znaˇcek rozd´ıl ˇcasov´ ych znaˇcek u dat pro rozpozn´av´an´ı u dat pro tr´enov´an´ı 1,5 8 1,5 8 1,5 8 1,5 8 1,5 8 1,5 8 3 1,5 3 1,5 3 1,5 3 1,5 3 1,5 3 1,5 3 3 3 3 3 3 3 3 3 3 3 3 3 5 3 5 3 5 3 5 3 5 3 5 3 8 3 8 3 8 3 8 3 8 3 8 5 1,5 5 1,5 5 1,5 5 1,5 5 1,5 5 1,5 5 3 5 3 5 3 5 3 5 3 5 3
poˇcet kvantil˚ u poˇcet k HMM u k-NN 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1
´ ´ ´I A ROZPOZNAV ´ AN ´ ´I Z DAT 5.2 TRENOV AN i 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
rozd´ıl ˇcasov´ ych znaˇcek rozd´ıl ˇcasov´ ych znaˇcek u dat pro rozpozn´av´an´ı u dat pro tr´enov´an´ı 5 5 5 5 5 5 5 5 5 5 5 5 5 8 5 8 5 8 5 8 5 8 5 8 8 1,5 8 1,5 8 1,5 8 1,5 8 1,5 8 1,5 8 3 8 3 8 3 8 3 8 3 8 3 8 5 8 5 8 5 8 5 8 5 8 5 8 8 8 8 8 8 8 8 8 8 8 8
poˇcet kvantil˚ u poˇcet k HMM u k-NN 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1 5 5 3 5 5 3 3 3 5 1 3 1
Tyto v´ ypoˇcty byli pomˇernˇe ˇcasovˇe n´aroˇcn´e, jejich doba se bl´ıˇzila k 16h na procesoru i5-3317U.
21/29
Kapitola 6
V´ ysledky Kaˇzd´e mˇeˇren´ı a roli vys´ılaˇce (jedna role pro tr´enov´an´ı a druh´a pro rozpozn´av´an´ı) jsem vynesl do grafu, kter´ y zn´azorˇ nuje srovn´an´ı pravdˇepodobnost´ı chybn´ ych rozpozn´an´ı (v grafu jako e) mezi v´ ystupem referenˇcn´ıho algoritmu (k-NN) popsan´eho v sekci 4.3 a HMM ze sekce 4.2.5. Srovn´an´ı jsem vynesl do grafu pro kaˇzdou konfiguraci (ˇc´ıslo konfigurace i v tabulce odpov´ıd´a ose grafu i ) z tabulky vypsan´e v sekci 5.2. Srovn´an´ı z prvn´ıho mˇeˇren´ı (tj. pouze jedno patro, 11500 z´aznam˚ u) s daty z vys´ılaˇce s oznaˇcen´ım 0x4e pouˇzit´ ymi pro tr´enov´an´ı a z vys´ılaˇce 0x4a pro rozpozn´av´an´ı, lze pozorovat na grafu 12, v´ ysledky po vymˇenˇe rol´ı vys´ılaˇc˚ u pak na grafu 13. 0,90 0,80 0,70 0,60
e
0,50 0,40 HMM KNN
0,30 0,20 0,10 0,00
i
Obr´azek 12: Porovn´an´ı 1. mˇeˇren´ı, uˇcen´ı nad 0x4e, rozpozn´av´an´ı nad 0x4a 0,50 0,45 0,40 0,35 0,30 e
0,25 0,20
HMM KNN
0,15 0,10 0,05 0,00
i
Obr´azek 13: Porovn´an´ı 1. mˇeˇren´ı, uˇcen´ı nad 0x4a, rozpozn´av´an´ı nad 0x4e U grafu 12 si nejsem jist z jak´eho d˚ uvodu je metoda HMM ve vˇsech konfigurac´ıch 22/29
´ 6.0 VYSLEDKY tak ˇspatn´a (tj. pr˚ umˇernˇe pˇribliˇznˇe 80% ne´ uspˇeˇsnost), pˇredpokl´ad´am, ˇze to m˚ uˇze b´ yt zp˚ usobeno ˇcast´ ym pohybem vys´ılaˇce na okraj´ıch mˇeˇriteln´eho prostoru, ˇcehoˇz jsme se pˇri dalˇs´ım mˇeˇren´ı vyvarovali. Mysl´ım si proto, ˇze zaj´ımavˇejˇs´ı jsou porovn´an´ı z druh´eho mˇeˇren´ı, kter´a jsou na grafu 14 (data od vys´ılaˇce 0x4e pouˇzit´a pro tr´enov´an´ı a data z vys´ılaˇce 0x4a pro rozpozn´av´an´ı) a na grafu 15 po vymˇenˇe rol´ı vys´ılaˇc˚ u. 0,80 0,70 0,60 0,50
e
0,40 HMM KNN
0,30 0,20 0,10 0,00
i
Obr´azek 14: Porovn´an´ı 2. mˇeˇren´ı, uˇcen´ı nad 0x4e, rozpozn´av´an´ı nad 0x4a
0,80 0,70 0,60 0,50
e
0,40 HMM KNN
0,30 0,20 0,10 0,00
i
Obr´azek 15: Porovn´an´ı 2. mˇeˇren´ı, uˇcen´ı nad 0x4a, rozpozn´av´an´ı nad 0x4e Mezi zvolen´ ymi rolemi vys´ılaˇc˚ u u prvn´ıho a druh´eho mˇeˇren´ı vid´ım jistou korelaci (i pˇres zm´ınˇenou zmˇenu subjektu prov´adˇej´ıc´ıho mˇeˇren´ı v sekci 5.1), proto se budu d´ale zamˇeˇrovat na porovn´an´ı zaloˇzen´e na uˇcen´ı z vys´ılaˇce 0x4a a rozpozn´av´an´ı z 0x4e. Z graf˚ u druh´eho mˇeˇren´ı soud´ım, ˇze l´epe reflektuj´ı oˇcek´avan´e v´ ysledky. S pˇrihl´ednut´ım k pozorov´an´ı kvality v´ ysledk˚ u jednotliv´ ych mˇeˇren´ı a jejich z´avislosti na zvolen´ ych rol´ıch vys´ılaˇc˚ u jsem se d´ale zamˇeˇril na detailnˇejˇs´ı porovn´an´ı v´ ysledk˚ u vynesen´ ych do grafu 15. V prvn´ım detailnˇejˇs´ım porovn´an´ı jsem seˇradil v´ ysledky podle ˇcas˚ u minim´aln´ıch odchylek mezi daty pouˇzit´ ymi pro rozpozn´av´an´ı, porovn´an´ı jsem vynesl do grafu 16. Na tomto grafu je dobˇre vidˇet ovlivnˇen´ı rozd´ılu ˇcasov´ ych znaˇcek napˇr´ıˇc zmˇenou ostatn´ıch parametr˚ u. Nejlepˇs´ı v´ ysledek pro HMM m˚ uˇzeme pozorovat u rozd´ılu k=8s u 23/29
´ 6.0 VYSLEDKY 0,80 0,70 0,60
e
0,50 HMM HMM HMM HMM KNN
0,40 0,30 0,20
− − − −
k k k k
= 1,5s = 3s = 5s = 8s
0,10 0,00 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 i
Obr´azek 16: Porovn´an´ı 2. mˇeˇren´ı, uˇcen´ı nad 0x4a, rozpozn´av´an´ı nad 0x4e - rozdˇeleno do skupin konfigurace 3, 13 a 23 (u kter´ ych d´ıky seˇrazen´ı v´ ysledk˚ u ˇc´ısla konfigurac´ı neodpov´ıdaj´ı ˇc´ısl˚ um konfigurac´ı v p˚ uvodn´ı tabulce, seˇrazen´a data jsou k dispozici na pˇriloˇzen´em CD), tyto konfigurace maj´ı shodnˇe nastaven´ y rozd´ıl ˇcasov´ ych znaˇcek dat pro tr´enov´an´ı a to na 3s, coˇz v d˚ usledku znamen´a, ˇze pouˇzijeme pˇresnˇejˇs´ı data pro tr´enov´an´ı a m´enˇe pˇresn´a pro rozpozn´av´an´ı, jako vedlejˇs´ı efekt pozitivnˇe ovlivn´ıme dobu v´ ypoˇctu a ˇcetnost pˇrepoˇc´ıt´av´an´ı. Kdyˇz prozkoum´ame kˇrivku k=3s m˚ uˇzeme si povˇsimnout jist´e korelace s k=8s (f´azovˇe posunut´e), z kter´e vyvozuji vhodnost pouˇzit´ı velikosti ˇcasov´ ych rozd´ıl˚ uu tr´enov´an´ı a rozpozn´av´an´ı v pomˇeru pˇribliˇznˇe 1:3. Pro dalˇs´ı detailnˇejˇs´ı porovn´an´ı jsem si vybral setˇr´ıdˇen´ı podle poˇctu kvantil˚ u pouˇzit´ ych pro HMM, porovn´an´ı jsem vynesl do grafu 17 a 18 0,70 0,60 0,50
e
0,40 0,30
HMM KNN
0,20 0,10 0,00 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 i
Obr´azek 17: Porovn´an´ı 2. mˇeˇren´ı, uˇcen´ı nad 0x4a, rozpozn´av´an´ı nad 0x4e, 3 kvantily Na tˇechto porovn´an´ıch mi pˇrijde zvl´aˇstn´ı opaˇcn´a tendence, kter´a je dobˇre viditeln´a u konfigurac´ı (ˇc´ısla konfigurac´ı d´ıky seˇrazen´ı neodpov´ıdaj´ı ˇc´ısl˚ um konfigurac´ı v tabulce zm´ınˇen´e v sekci 5.2, seˇrazen´a data jsou k dispozici na pˇriloˇzen´em CD) s ˇc´ıslem konfigurace vetˇs´ım neˇz 46 (tj. vˇsechny konfigurace s rozd´ılem ˇcasov´ ych znaˇcek vˇetˇs´ım neˇz 8s u dat pro rozpozn´av´an´ı). Porovn´an´ı zaloˇzen´e na tˇrech kvantilech reaguje na r˚ ust rozd´ılu ˇcasov´ ych znaˇcek dat pro uˇcen´ı negativnˇe. Oproti tomu porovn´an´ı s pˇeti kvantily reaguje 24/29
´ 6.0 VYSLEDKY 0,80 0,70 0,60 0,50
e
0,40 HMM KNN
0,30 0,20 0,10 0,00 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 i
Obr´azek 18: Porovn´an´ı 2. mˇeˇren´ı, uˇcen´ı nad 0x4a, rozpozn´av´an´ı nad 0x4e, 5 kvantil˚ u na r˚ ust rozd´ılu ˇcasov´ ych znaˇcek pozitivnˇe (do dosaˇzen´ı zm´ınˇen´e 1:3 hranice, po kter´e se v´ ysledky zaˇcnou prudce zhorˇsovat).
25/29
Kapitola 7
Z´ avˇ er Pro tuto pr´aci jsem napsal program pro sbˇer dat, webovou aplikaci pro identifikaci sebran´ ych dat a program pro tr´enov´an´ı model˚ u ze sebran´ ych dat (jak HMM, tak k-NN) a rozpozn´av´an´ı nejpravdˇepodobnˇejˇs´ı sekvence. Oba programy jsem napsal v jazyce C++, webovou aplikaci pak v jazyce PHP. Pˇri pr´aci jsem si osvojil pr´aci s poˇc´ıtaˇcovou s´ıt´ı a jej´ımi moˇznostmi, kter´e jsem hojnˇe vyuˇzil pˇri sbˇeru dat. Celkovˇe jsme v pr˚ ubˇehu pr´ace sebrali t´emˇeˇr 50000 z´aznam˚ u dat, nad kter´ ymi jsem prov´adˇel tr´enov´an´ı modelu a rozpozn´av´an´ı nejpravdˇepodobnˇejˇs´ıch posloupnost´ı m´ıstnost´ı. Z detailnˇejˇs´ıch porovn´an´ı v´ ysledk˚ u ze sekce 5.2 vyvozuji jako vhodn´e pouˇz´ıt 5-ti kvantil˚ u pro u ´pravu dat z pˇrij´ımaˇc˚ u, d´ale selekci dat s minim´aln´ım rozd´ılem ˇcasov´ ych znaˇcek 3s pro uˇcen´ı a 8s pro rozpozn´av´an´ı (pomˇer 3:8 je velice bl´ızko vyvozen´emu pomˇeru 1:3, kter´ y se uk´azal jako vhodn´e krit´erium pro urˇcen´ı minim´aln´ıho rozd´ılu ˇcasov´ ych znaˇcek). Tato konfigurace 5 kvantil˚ u, 3s rozd´ıl ˇcasov´ ych znaˇcek dat pro uˇcen´ı a 8s rozd´ıl pro rozpozn´av´an´ı se uk´azala jako nejlepˇs´ı pro HMM i referenˇcn´ı k-NN. Nejlepˇs´ı konfigurace HMM je ne´ uspˇeˇsn´a jen na 26% namˇeˇren´ ych datech, oproti k-NN jej´ıˇz nejlepˇs´ım v´ ysledkem je 49% ne´ uspˇeˇsnost. Pˇri vyhodnocov´an´ı byli vyhodnoceny jako chybn´e rozpozn´an´ı v´ ysledky, kter´e oznaˇcili za nejpravdˇepodobnˇejˇs´ı sousedn´ı m´ıstnost, coˇz v praxi pˇri snaze lokalizovat osobu v rozlehl´ ych are´alech nemus´ı b´ yt povaˇzov´ano jako v´ yrazn´a komplikace. Pokraˇcov´an´ım projektu m˚ uˇze b´ yt napˇr. moˇznost upravit modelu, tak aby byl schopen vyuˇz´ıt spojit´a data (v tomto projektu jsou data kvantov´ana, d´ıky ˇcemu se ztr´ac´ı ˇca´st namˇeˇren´ ych informac´ı). Dalˇs´ı moˇzn´e rozˇs´ıˇren´ı je v oblasti automatizovan´eho opravov´an´ı modelu v z´avislosti na napojen´ı napˇr. k ˇcipov´ ym syst´em˚ um umoˇzn ˇuj´ıc´ım autorizovan´e odemyk´an´ı dveˇr´ı. Moˇznou inovaci v uˇzivatelsk´e ˇca´sti vid´ım v implementov´an´ı interaktivn´ıho zobrazov´an´ı aktu´aln´ı pozice na mapˇe (tj. otoˇcen´ı funkce webov´e aplikace specializovan´e pro sbˇer dat).
26/29
Literatura [1] Triangulace – wikipedie. http://cs.wikipedia.org/wiki/Triangulace. Naposledy navˇst´ıveno 19. 5. 2015. [2] M. Ibrahim; Y. Moustafa. A hidden markov model for localization using low-end gsm cell phones. http://arxiv.org/pdf/1010.3411.pdf. [3] Libor Urban´ık. Methods for people localization based on radio signals. [4] Tom´aˇs Proch´azka Michal Houdek, Tom´aˇs Svoboda. Klasifikace podle nejbliˇzˇs´ıch soused˚ u nearest neighbour classification [k-nn]. http://cmp.felk.cvut. cz/cmp/courses/recognition/zapis_prednasky/zapis_01/4/rpz4.pdf. Naposledy navˇst´ıveno 12. 5. 2015. [5] R. Arthi; K. Murugan. Localization in wireless sensor networks by hidden markov model. [6] CSc. Prof. Ing. Jan Nouza. Pokroˇcil´e metody rozpozn´av´an´ı ˇreˇci. http://itakura. ite.tul.cz/jan/PMR/prednaska4.pdf. [7] Stephen Tu. Derivation of baum-welch algorithm for hidden markov models. http://www.cs.berkeley.edu/~stephentu/writeups/ hmm-baum-welch-derivation.pdf. Naposledy navˇst´ıveno 11. 2. 2015. [8] V´aclav Hlav´aˇc. Rozpozn´av´an´ı s markovsk´ ymi modely. http://cmp.felk.cvut. cz/~hlavac/TeachPresCz/31Rozp/61MarkovianPR.pdf. Naposledy navˇst´ıveno 11. 5. 2015. [9] VOCAL Technologies. Viterbi algorithm in speech enhancement and hmm. http://www.vocal.com/echo-cancellation/ viterbi-algorithm-in-speech-enhancement-and-hmm/. Naposledy navˇst´ıveno 18. 5. 2015. [10] Oracle Corporation. Mysql. http://www.mysql.com/. Naposledy navˇst´ıveno 8. 2. 2015. [11] MariaDB Corporation. Mariadb. https://mariadb.com/. Naposledy navˇst´ıveno 8. 2. 2015. [12] Oracle Corporation. Mysql :: Mysql 5.0 reference manual :: 14.2 the innodb storage engine. http://dev.mysql.com/doc/refman/5.0/en/innodb-storage-engine. html. Naposledy navˇst´ıveno 8. 2. 2015. 27/29
[13] Oracle Corporation. Mysql :: Download connector/c++. http://dev.mysql.com/ downloads/connector/cpp/. Naposledy navˇst´ıveno 8. 2. 2015. [14] Oracle Corporation. Mysql :: Mysql connector/c++ developer guide :: 7.6 mysql connector/c++ complete example 2. http://dev.mysql.com/doc/ connector-cpp/en/connector-cpp-examples-complete-example-2.html. Naposledy navˇst´ıveno 10. 2. 2015. [15] Nette Foundation. Nette framework. http://nette.org/. Naposledy navˇst´ıveno 10. 2. 2015. [16] Jan Trejbal. Trejjam/authorization. https://github.com/Trejjam/ Authorization. Naposledy navˇst´ıveno 10. 2. 2015. [17] Filip Proch´azka. Kdyby/console. https://github.com/kdyby/console. Naposledy navˇst´ıveno 10. 2. 2015. [18] MathWorks. Matlab engine api for c, c++, and fortran matlab & simulink. http://www.mathworks.com/help/matlab/ calling-matlab-engine-from-c-c-and-fortran-programs.html. Naposledy navˇst´ıveno 11. 5. 2015. [19] MathWorks. Hidden markov model parameter estimates from emissions and states - matlab hmmestimate. http://www.mathworks.com/help/stats/hmmestimate. html. Naposledy navˇst´ıveno 7. 5. 2015. [20] MathWorks. Hidden markov model most probable state path - matlab hmmviterbi. http://www.mathworks.com/help/stats/hmmviterbi.html. Naposledy navˇst´ıveno 11. 5. 2015.
28/29
Obsah CD • Tato bakal´aˇrsk´a pr´ace • Program pro sbˇer dat • Program pro prov´adˇen´ı v´ ypoˇct˚ u • Webov´a aplikace umoˇzn ˇuj´ıc´ı sbˇer dat • Namˇeˇren´a data • Konfigurace pouˇzit´e v ˇc´asti ”V´ ysledky”