Rozpoznávanie objektov ako cloudová služba
Tejto téme sme sa rozhodli venovať z viacerých dôvodov:
- Nóvum – táto téma ešte nebola skúmaná, resp. je skúmaná práve teraz
- Potenciálny široký záber – pri úspešnom implementovaní môže byť takýto typ rozpoznávania objektov jednoducho použiteľný s rôznymi typmi robotov a zariadení
- Využitie „crowd sourcingu“ pri učení klasifikátora – namiesto jedného učiteľa bude systém navrhnutý a implementovaný tak, aby trénovacie dáta poskytovali používatelia služby, teda sa spoliehame na kvantitu príkladov viac ako na ich kvalitu
- Škálovateľnost – využitie cloudovej infraštruktúry umožní v prípade úspechu služby efektívne obslúžiť takmer neobmedzené množstvo požiadaviek a teda takmer neobmedzené množstvo rôznych zariadení
- Využitie existujúcej infraštruktúry – keďže nenavrhujeme vlastné komunikačné protokoly a infraštruktúru, môžeme sa zamerať na vytvorenie optimalizovanej služby pre daný typ infraštruktúry poskytovaného cloud providerom, a teda využiť aj SLA (Service Level Agreement) definovaný v kontrakte
Samotné rozpoznávanie objektov implementujeme na platforme Windows Azure ako cloud service. V nasledujúcich častiach prinesieme podrobnejší pohľad na architektúru takejto služby, a popíšeme aktuálny stupeň implementácie.
Návrh služby pre rozpoznávanie objektov
Pri návrhu služby sme kládli dôraz na plné využitie cloudovej infraštruktúry so zameraním na implementáciu typu cloudová služba (cloud service, dokumentácia k Windows Azure je dostupná na [1]).
Naším zámerom je vytvoriť službu, ktorá bude mať minimálne požiadavky na zariadenie, ktoré sa k nej pripája, a preto sme definovali parametre nasledovne: vstupom služby bude obrázok bez obmedzenia rozlíšenia, a výstupom vektor tried, do ktorých patrí nájdený objekt. Pre klasifikáciu objektov z obrazu sme zvolili dva prístupy - neurónovú sieť typu MF ArtMap ([2], [3]), a Gaussovský klasifikátor ([4], [5]). Tieto boli zvolené, pretože predstavujú dva rôzne prístupy ku klasifikácii:
- Klasifikácia podľa modelu (štatistického) – Gaussovský klasifikátor
- Klasifikácia bez modelu – MF ArtMap
Výstupom z týchto klasifikátorov je vektor, ktorý určuje, s akými triedami je daný objekt na obraze podobný, a zároveň aj úroveň tejto podobnosti. Táto vlastnosť umožňuje širší záber služby, a jej potenciálne nasadenie v bežných situáciách.
Tieto klasifikátory majú na vstupe extrahované lokálne príznaky z obrazu, ktoré sú invariantné voči škále, posunutiu a natočeniu, konkrétne ide o použitie metód SIFT [6], SURF [7], a ORB [8]. Tieto boli zvolené pretože predstavujú tri rýchlostne odlišné extraktory lokálnych príznakov, pričom ich výkonnosť a vhodnosť je porovnateľná.
Táto služba je implementovaná ako „AI-brick“ (pojem definovaný v [9]), teda bude ju možné použiť v iných systémoch cez publikované API, ktoré umožní vývojárom túto službu využívať vo vlastných systémoch.
V tomto ohľade sa nami navrhovaná služba odlišuje od už existujúcich služieb poskytujúcich rozpoznávanie objektov (Google Goggles [10], Bing Image Search a iné). Tieto služby momentálne nemajú sprístupnené API, existujú ako nástroje pre užívateľov, a ich úspešnosť pri identifikácii objektov je obmedzená.
Architektúra služby pre rozpoznávanie objektov
Keďže naším zámerom je aj zistiť optimálnu kombináciu extraktor – klasifikátor, rozhodli sme sa rozdeliť službu do dvoch častí, ktoré sú úplne samostatné. Extrakčná časť, kde implementujeme nahrávanie obrazu, jeho predspracovanie a vlastnú extrakciu príznakov. Klasifikačná časť, kde budú vstupom príznaky a výstupom zoznam tried, do ktorých patrí daný objekt.
Z hľadiska cloud architektúry využijeme služby (cloud services), ktoré zabezpečia spracovávanie dát, a úložisko (cloud storage), kam budeme ukladať dáta (obrázky, extrahované príznaky, parametre klasifikátorov).
Spracovávanie dát sa na Azure cloude vykonáva prostredníctvom worker role (pracovnej úlohy), ktorá je reprezentovaná samostatným virtuálnym počítačom, na ktorom je spustený program spracovávajúci tieto dáta v nekonečnej slučke. Vytváranie rozhrania sa vykonáva prostredníctvom web role (webová úloha), ktorá je samostatnou inštanciou virtuálneho počítača a z vonkajšieho sveta je možné sa k nej pripojiť pomocou otvorených portov na IP adrese virtuálneho počítača.
Keďže chceme využívať výhody cloudu, musíme zohľadniť požiadavky, ktoré je nutné pre ich využitie splniť.
Konkrétne to znamená, že pri spracovávaní dát nemôžeme využívať lokálne úložiská na virtuálnych počítačoch, na ktorých sú tieto úlohy spustené, a zároveň musíme využívať fronty (Azure Queues) na komunikáciu medzi jednotlivými úlohami. Zároveň musíme vziať do úvahy aj to, že akákoľvek inštancia úlohy môže byť kvôli poruche alebo údržbe odstavená a reštartovaná. Avšak nasledovanie týchto pravidiel nám umožňuje spoľahnúť sa so zabezpečením prístupnosti služby na automatické nástroje cloud providera a už vstavané prostriedky pre škálovateľnosť a robustnosť služby.
Návrh architektúry služby pre extrakciu lokálnych príznakov preto pozostáva z jednej web úlohy, a pracovnej úlohy pre každý typ extračného mechanizmu (konkrétne teda troch). Web úloha zabezpečuje komunikáciu s užívateľom, uloženie obrázku do úložiska a vytvorenie záznamu vo fronte pre konkrétny extrakčný mechanizmus (užívateľ môže zvoliť, ktorý si vyberie). Pracovné úlohy v presne definovaných časových intervaloch kontrolujú frontu a ak obsahuje záznam, vyberú ho a spracujú obraz.
Architektúra pre klasifikáciu zrkadlí architektúru extrakcie. Obsahuje jednu pracovnú úlohu pre zadeľovanie požiadaviek, a ďalšie pracovné úlohy pre každý typ klasifikačného mechanizmu. Obsahuje aj webovú úlohu ktorá zabezpečuje zobrazovanie výsledkov. Pracovná úloha pre zadeľovanie požiadaviek kontroluje úložisko na prítomnosť nových extrahovaných príznakov, ak také nájde, zadelí ich podľa užívateľom zvoleného klasifikátora do príslušnej fronty.
Pracovné úlohy klasifikátorov následne tieto záznamy z fronty vyberajú a vykonajú klasifikáciu. Výstup je uložený, a zároveň ponúknutý užívateľovi na webovej stránke vyprodukovanej web úlohou. Web úlohy sme zvolili pre jednoduchšiu optimalizáciu pracovných úloh a ich testovanie. V nasledujúcich krokoch budú doplnené o WCF služby a prepojenie priamo na robotický systém.
Obr. 3 Schéma architektúry systému na rozpoznávanie objekov z obrazu
Implementácia
V doterajšom výskume a vývoji sme implementovali prvú časť - extrakčnú službu. Vyskúšali sme dve rôzne verzie, a vzájomne ich výkonovo otestovali a porovnali. Momentálne máme implementované dve extrakčné metódy – SIFT a SURF.
Oproti druhej verzii má prvá verzia naviac jednu pracovnú úlohu určenú na predspracovanie obrazu a triedenie úloh, v druhej verzii je táto funkcionalita pridaná k extrakčným úlohám.
Pre testovanie rýchlosti verzií sme implementovali podrobné zapisovanie trvania jednotlivých akcií, kde sme merali aj čas potrebný na uloženie dát do úložiska, ich načítavanie, pripojenie ku fronte, ukladanie a čítanie záznamov z nej. Testovacím súborom bolo 20 obrázkov rôznych predmetov v rôznych rozlíšeniach a zložitosti. Výsledky meraní sú v tabuľkách 1 a 2.
Verzia 1 | ||||
Čas pre používateľa | Výpočtový čas [s] | Iba extrakcia SIFT [ms] | Iba extrakcia SURF [ms] | |
Min. | 0:00:01 | 0,9759 | 197,9281 | 354,9850 |
Max. | 0:00:15 | 11,9751 | 5967,6276 | 8374,6194 |
Priemer | 0:00:04 | 2,6114 | 1007,3908 | 1690,6716 |
Medián | 0:00:03 | 1,7334 | 473,1524 | 1074,7474 |
Tab. 1 Výsledky meraní rýchlosti extrakčnej služby pri použití prvej verzie implementácie
Verzia 2 | ||||
Čas pre používateľa | Výpočtový čas [s] | Iba extrakcia SIFT [ms] | Iba extrakcia SURF [ms] | |
Min. | 0:00:00 | 0,7403 | 156,2778 | 169,7089 |
Max. | 0:00:11 | 10,0929 | 3578,1217 | 7811,9474 |
Priemer | 0:00:04 | 1,9533 | 686,7257 | 1358,1596 |
Medián | 0:00:02 | 1,3111 | 349,4731 | 788,2077 |
Tab. 2 Výsledky meraní rýchlosti extrakčnej služby pri použití druhej verzie implementácie
Stĺpec „čas pre užívateľa“ označuje celkový čas behu služby, teda od kliknutia na tlačidlo Odošli po zobrazenie výsledkov (teda oznámenie o tom, že extrakcia je ukončená a extrahované príznaky je možné stiahnuť na adrese úložiska). „Výpočtový čas“ určuje sumu časov spotrebovaných jednotlivými krokmi procesu. Nie je zhodný s „časom pre užívateľa“, keďže pracovné úlohy medzi jednotlivými opakovaniami kontroly fronty čakajú (v prípade, že fronta je prázdna, vlákno úlohy sa uspí na 2 sekundy). Stĺpce „Iba extrakcia. ..“ určujú čas spotrebovaný iba na extrahovanie príznakov z obrazu.
Z uvedených výsledkov vyplýva, že najviac času sa (očakávateľne) spotrebuje pri ukladaní dát do úložiska - komunikácia medzi koncovým zariadením a cloudom. Samotné spracovanie na cloude je pomerne rýchle. Zároveň porovnanie s výsledkami prvej verzie ukázalo nepotrebnosť oddelenia predspracovania obrazu do samostatnej pracovnej úlohy, keďže tento prístup predĺži čas spracovania.
Zhrnutie doterajšieho vývoja
Pri vývoji systému pre rozpoznávanie objektov na obraze v cloudovom prostredí sme vytvorili architektúru tohto systému, a podarilo sa nám implementovať prvú časť. Pri tejto implementácii sme vyskúšali dve možné verzie systému, a pre ďalší výber sme vybrali tú rýchlejšiu. Momentálne pracujeme na implementácii druhej časti.
Z výsledkov meraní zároveň vyplýva, že aj keď sme sa chceli vyhnúť obmedzovaniu vstupu do služby, pre rýchlosť odozvy služby to bude potrebné (určiť maximálnu veľkosť obrazu), pretože rýchlosť uloženia obrazu do úložiska závisí od rýchlosti pripojenia koncového zariadenia.
Využitie systému
Tento systém plánujeme využiť v rámci nášho laboratória, kde často riešime úlohy vyžadujúce spracovanie obrazu z robota, a iných zariadení (kvadrikoptéra, kamery inteligentného priestoru).
Zároveň sme diskutovali so zástupcami projektu RoboEarth ([11]), ktorí podporujú vytváranie takýchto modulov (resp. AI-bricks), ktoré je možné prepojiť a použiť s ich systémom zameraným na cloud robotiku.
A v neposlednom rade by sme túto službu chceli sprístupniť odbornej verejnosti a poskytnúť na bezplatné využitie v iných systémoch.
Použitá literatúra
[1] “Windows Azure.” [Online]. Available: http://www.windowsazure.com/en-us/.
[2] A. Bodnárová, “The MF-ARTMAP neural network,” in Latest Trends in Applied informatics and Computing, 2012, pp. 264–269.
[3] P. Smolár, “Object Categorization using ART Neural Networks,” Technical University of Kosice, 2012.
[4] C. K. I. Williams and D. Barber, “Bayesian Classification With Gaussian Processes,” IEEE Trans. Pattern Anal. Mach. Intell., vol. 20, no. 12, pp. 1342–1351, 1998.
[5] R. A. Gopinath, “Maximum likelihood modeling with Gaussian distributions for classification,” in Proceedings of the 1998 IEEE International Conference on Acoustics, Speech and Signal Processing, ICASSP ’98 (Cat. No.98CH36181), 1998, vol. 2, no. 914, pp. 661–664.
[6] D. G. Lowe, “Object recognition from local scale-invariant features,” in Proceedings of the Seventh IEEE International Conference on Computer Vision, 1999, pp. 1150–1157 vol.2.
[7] H. Bay, T. Tuytelaars, and L. Van Gool, “SURF: Speeded Up Robust Features,” in European Conference on Computer Vision, 2006, pp. 404–417.
[8] E. Rublee, V. Rabaud, K. Konolige, and G. Bradski, “ORB?: an efficient alternative to SIFT or SURF,” in IEEE International Conference on Computer Vision, 2011, pp. 2564–2571.
[9] T. Ferraté, “Cloud Robotics - new paradigm is near,” Robotica Educativa y Personal, 20-Jan-2013.
[10] “Google Goggles.” [Online]. Available: http://www.google.com/mobile/goggles/#text. [Accessed: 30-May-2013].
[11] “RoboEarth Project.” [Online]. Available: http://www.roboearth.org/. [Accessed: 03-Jun-2013].
daniel.lorencik@tuke.sk, +421 556 025 101
Ing. Tomáš Cádrik
tomas.cadrik@tuke.sk, +421 556 025 165
doc. Ing. Marián Mach Csc.
marian.mach@tuke.sk, +421 556 022 571
prof. Ing. Peter Sinčák CSc.
peter.sincak@tuke.sk, +421 556 027 642
Centrum pre inteligentné technológie, Katedra kybernetiky a umelej Inteligencie, Technická univerzita v Košiciach
www.ai-cit.sk, www.tuke.sk, www.kkui.tuke.sk