• Nem Talált Eredményt

A Z ELKÉSZÜLT RENDSZER

6 T ESZTEK ÉS EREDMÉNYEK

6.3 A Z ELKÉSZÜLT RENDSZER

Az alfejezetben ismertetem a rendszeremmel kapcsolatos implementációs részleteket és a rendszer jelenlegi állapotát. Az implementált keretrendszert két részre osztanám fel. Az egyik a pontfelhő szegmentálása normálvektorok alapján, a másik pedig az RGB szegmentáló alrendszer.

Az egyes részeket a MATLAB fogja össze egésszé különböző megoldásokkal. Az egyik lehetőség, hogy C/C++ Mex fájlokat készítünk, melynek segítségével C/C++ metódusokat hívhatunk, mint beépített MATLAB funkciókat. A funkció akkor is hasznos, ha a megvalósítás során feltétel a futási idő minimalizálása. További lehetőség a platformfüggetlenségre, hogy DOS parancsokat is lehetőség van futtatni, így a lefordított .NET vagy C/C++ alapú exe fájlokat probléma nélkül elindíthatjuk. A program beállításai és az algoritmusok paraméterei konfigurációs fájlokban találhatóak meg, amit mind kívülről, mind pedig kódból lehet módosítani.

6.3.1 PONTFELHŐ SZEGMENTÁLÁSA NORMÁLVEKTOROK ALAPJÁN

A pontfelhő szegmentálást teljes egészében C++ nyelven a PCL osztálykönyvtár segítségével készítettem el. Öt fő lépésből áll az algoritmus: pontfelhő megnyitása, előfeldolgozás optimalizálási célokkal, normálvektorok számítása és szegmentálás.

Az első lépésben egy pontfelhőt kell betölteni fájlnév alapján. Felmerülhet, hogy miért pontfelhőt használok, ami egy bonyolultabb adatszerkezet, mint az intenzitás képként ábrázolható mélységi térkép. Ha később videó adatokkal dolgozunk, akkor teljes 3D modelleket építhetünk például az RGDSLAM segítségével [11], melyet elmenthetünk egy pontfelhő fájlba, illetve ilyenkor a jelenet egészére végre tudunk hajtani normálvektor számítást és szegmentálást nagyobb módosítás vagy bonyolult algoritmus nélkül. A nagyobb előny, hogy az eredményt egy kompakt egészben meg lehetne jeleníteni. Hogy ez működjön, el kell tárolnunk, hogy melyik RGB képkockához, melyik indexű pontok tartoznak a 3D felhőből. Ezt már csak azért is kell megtenni, mivel a szegmentálás alapvetően RGB képekről kinyert jellemzők alapján történik. Mivel egy pont a felhőből több RGB képhez is tartozhat, így szegmentálás eredménye miatt különböző képekre egy pont több címkét is kaphat. Itt egyszerűen csak ki kell választani a legnagyobb előfordulású eredményt. Mivel bizonyos adatbázisok csak mélységi térképeket (intenzitás kép) szolgáltatnak, így konverziós metódusokat kell készíteni, mely pontfelhővé alakítja ezeket.

Az előfeldolgozás célja tisztán teljesítményoptimalizálási eredetű. Mikor először leprogramoztam, ezt a lépést hanyagoltam, és így az eredmény nagyon kiábrándító volt, mivel fél óra után sem kaptam értékelhető kimenetet. Először alkalmaztam a Voxelrács szűrőt („VoxelGrid filter”, ahol a voxel egy a tér minden irányában kiterjedéssel rendelkező pixel) [19]. Az algoritmus a 3D

39

modellben kis dobozokat helyez el rácsszerűen. Az egy dobozba eső pontok súlypontjával közelíti az ott lévő elemeket, így csökkentve a pontfelhő méretét. A közelítés alapja lehetne a dobozok középpontja is, így gyorsítva az algoritmust, azonban a mintavételezés minősége rosszabb lenne.

Az eredeti pontfelhőt is meghagyjuk keresőfelületnek. A dobozok méretének megválasztásával lehet állítani a mintavételezés mértékét. Az esetleges megjelenő zajokat statisztikai meggondolású szűrőkkel el lehet távolítani, amennyiben ez iránt igény mutatkozik.

A következő lépésben számolom ki a normálvektorokat a csökkentett elemszámú pontfelhőre, ahol az eredeti adat lesz a keresőfelület. Az algoritmus lassú, mivel sok pontra sorosan meg kell határozni a legközelebbi szomszédjait, és kiszámolni azok alapján a normálvektort. A PCL szerencsére rendelkezik OpenMP API-t használó párhuzamosított verzióval is, aminek segítségével ki lehet használni a többmagos rendszerekben rejlő számítási erőt. A soros és párhuzamos implementáció, processzor kihasználtság különbségeit szemléteti a 32. és 33. ábra.

32. ábra – A normálvektorok kiszámítása a soros algoritmussal. A processzor kihasználtsága 14%. (4 magos Intel(R) Core(TM) i7-2630QM CPU – 8 logikai mag, 2.00 GHz).

33. ábra – Az OpenMP-vel támogatott normálvektor számítás az inicializálás után 100%-os processzorkihasználtság mellett fut. (4 magos Intel(R) Core(TM) i7-2630QM CPU – 8 logikai mag, 2.00 GHz).

40

A pontfelhő szegmentálása során PCL osztálykönyvtár a RANSAC metódusát használtam fel. Ez egy iteratív algoritmus, melynek segítségével N db megfigyelés részhalmazára illeszthető matematikai modell paramétereit becsülhetjük meg [46]. Első körben a bemeneti adathalmazból kiválaszt egy részhalmazt (belső halmaz), amelyre a modellt illesztjük (angolul „inliers”), a többit kívül eső pontnak tekinti („outliers”). Kiválasztja a kezdeti paramétereket és a külső adatokra is teszteli a hipotézist. Amennyiben kielégítik a modellt, őket is a belső halmaz elemeinek lehet tekinteni. Ezek után a modellt újra kiértékelik, és a paramétereken finomítanak. Ez egészen addig fut, amíg hiba nem csökken egy adott küszöb alá (vagyis a becslés bizonyossága elég magas lesz). A pontfelhő szegmentálás során a következő modellt alkalmazom.

= 0

Mikor pontfelhő részhalmazára megfelelően illeszkedik egy matematikai modell, akkor ezeknek a pontoknak adok egy címkét és hozzáadom őket egy másik (kezdetben üres) pontfelhőhöz. A megmaradt adatokra újra próbálok modellt illeszteni, és ezt addig folytatom, amíg az eredeti pontfelhő adott százalékánál még több pont áll a rendelkezésre. Tipikusan ez az érték 5-10% a programom során. Mivel korábban kiszámoltam az egyes pontokból mutató normálvektorokat is, ezért ezeket hatékonyan fel lehet használni. Ha modell által meghatározott sík normálvektora és az adott pont normál vektora közötti elhajlási szög („angular deviation”) nagyobb egy küszöbnél, akkor el kell vetni a pontot, annak ellenére is, hogy egy síkban helyezkednek el (lásd 34. ábra). A 35, 36. és 37. ábra megmutatja a normálvektor alapján működő szegmentálás egyes lépéseit.

34. ábra – A modell normálvektorával nem eléggé párhuzamos vektorokat hanyagoljuk.

forrás: http://www.pointclouds.org/assets/files/presentations/ICCV2011-segmentation.pdf

35. ábra – A 3D pontfelhő betöltése és megjelenítése PCL segítségével.

forrás: saját program

41

36. ábra – A pontfelhőre ható normálvektorok kiszámítása és megjelenítése PCL segítségével.

forrás: saját program

37. ábra – Az egyes szegmensek elkülönítése és megjelenítése PCL segítségével.

forrás: saját program

6.3.2 SZEGMENTÁLÓ/CÍMKÉZŐ ALRENDSZER

Ahogy a „A rendszer globális felépítése” kifejtettem a szegmentált pontfelhő egy maszkként fog megfelelni, és az egyes szegmenseket kell felcímkézni és később egyesíteni, ha együtt nagyobb bizonyossággal meghatároznak egy objektumot. Az alfejezetben bemutatom, hogy az egyes szegmenseket mi alapján lehet azonosítani.

Az alrendszert egy tanuló és egy osztályozó fázisra bontottam szét. A magas szintű jellemzőket az Accord .NET osztálykönyvtár segítségével állítottam elő a MATLAB-ban kinyert jellemzők alapján.

Az első lépésben a lokális jellemzőket számolom ki. Jelen rendszerben csak a HOG jellemzőket használtam fel. A 38. és 39. ábrán látható a két mintavételezési stratégia. Ahhoz, hogy a kép összes információját leírják a jellemzők, átfedő ablakokra kell kiszámítani a HOGokat (lásd 39.

ábra). Ezeket a jellemzőket Gauss-keverékes módszerrel osztályoztam, de előtte a 32 dimenziós HOG jellemzők PCA-val csökkentem. Az elkészült szótár alapján előállítom a magasabb dimenzionalitású vektorokat. Azt, hogy egy vektor melyik szótárbeli szó legyen, az egyes osztályokat képviselő Gauss eloszlások sűrűség függvénye alapján állapítom meg. Mindig a legnagyobb eredmény határozza meg, hogy melyik szóról beszélünk.

42

38. ábra – Mintavételezés vizualizációja nem átfedő blokkokkal.

forrás: saját program

39. ábra - Mintavételezés vizualizációja átfedő blokkokkal.

forrás: saját program

Az SVM tanítás során nagyon fontos, hogy megfelelő paraméterekkel és megfelelő kernellel inicializáljuk a módszert. [39] ajánlása szerint a radiál bázis függvényt választottam („radial basis function” – továbbiakban RBF kernel). Az adatok és hozzátartozó annotációk betöltése után, a vektorokat [0,1] intervallumra lineárisan skáláztam, mivel a nagy értékekből a magasabb dimenzionalitásba transzformálása és az osztályozása esetén számítási problémák adódhatnak.

Mivel RBF kernelnek van két paramétere is, így egy modellválasztásnak kell megtörténnie. [39]-ben írtak szerint a C és ϒ paraméterek kiválasztására egy grid alapú keresést valósítottam meg.

Egyszerűen megkeresem azt a (C,ϒ) párt, amelyikre a legjobb keresztellenőrzési értéket kapom.

(C,ϒ) értékeket exponenciális növekedéssel vizsgálom, tehát a {2-5, 2-4, …, 24,2 halmazból kerülnek ki az értékek. Megjegyzésként a keresztellenőrzés során a tanító adatokat felosztom v részre. Minden egyes részre megvizsgálom, hogy a v-1 elemre történő tanítás milyen hatékonyságú. Ilyenkor az egyetlen rész annotációját nem használom fel.

A tanítás során közel 50%-os keresztellenőrzési rátát sikerült elérni, melynek több oka is van.

Először is fontos beszélni arról, hogy csak HOG jellemzőket használtam eddig fel, ami a

43

környezetben előforduló éleket ábrázolja hisztogram segítségével. Véleményem szerint csak az élinformációk alapján nem lehet megfelelően eldönteni, hogy adott objektumot ábrázoló jellemző vektor melyik osztályba tartozik. A másik oka a rossz teljesítmények az NYU mintaadatbázis. A tesztelés során konyhai képeket használtam fel, és egy-egy objektumról kevés felvétel készült, ezért egy-egy osztályt kevés vektor jellemzett.

44

7 Ö SSZEGZÉS

A videók kereséséhez, interaktív felhasználásához és intelligens tárolásához nagy szükség van a megfelelő eszközök biztosítására. Az első ilyen lépés a témában az automatikus szegmentáló algoritmusok fejlesztése és tesztelése. Ehhez szorosan kapcsolódnia kell az annotációs eljárások fejlődésének is. Számos alkalmazási terület és piaci ré áll nyitva a kutatók előtt. A dolgozat

„Kitűzött célok és felhasználási lehetőségek” alfejezetében számos hasznos alkalmazást megemlítettem, mint légi felvételek szemantikus szegmentálását, videók annotálását reklámokkal vagy a duplikátum és jogtalan tartalmak szűrését videó megosztó portálokon. Az elsődleges célom a videók címkézésvel kapcsolatban a szegmentálási lehetőségek megvizsgálása volt.

A célkitűzésem egy szegmentáló rendszer építése volt, amely mind szemantikus szegmentálásnál felhasznált, mind pedig az általános objektumdetektálásnál alkalmazott technikákat ötvözte. A projekt során RGB-D adatokkal dolgoztam, azért, hogy megmutassam, mennyi potenciál rejlik az ilyen szenzorokban, szenzorrendszerekben.

A projektem során összeállítottam egy keretrendszert, amit a jövőben bővíteni fogok további jellemző leírási módokkal is. Három különböző nyelvet is felhasználtam, aminek nagyon pozitív előnyeit élveztem. Így egy projekten belül tudtam alkalmazni különböző nyelven megírt korszerű osztálykönyvtárakat. Ezáltal produktívabban tudtam dolgozni. Implementáltam a Gauss-keveréken alapuló BOW módszert, ahol rács alapú lokális jellemző mintavételezést alkalmaztam.

A vektorok dimenzionalitásából adódó problémákat pedig PCA segítségével mérsékeltem. A BOW módszerem a későbbiek során a Fischer kernel használatával szeretnék kiegészíteni [21]. A rendszer két fő részből áll, ezeket külön-külön megvalósítottam, de még nem illesztettem őket össze.

Egyre fontosab, hogy több és több példaadatbázis legyen elérhető, mely RGB-D jeleneteket tartalmaz. Mivel mindegyik adatbázis különböző struktúrába van szervezve, így sokat kell azzal foglalkozni, hogy egységes formára hozzuk az adatokat. Célszerű lenne a témában standardizálni.

45

8 I RODALOMJEGYZÉK

[1] B. Szántó, P. Pozsegovics, Z. Vámossy, S. Sergyán, "Sketch4match — Content-based image retrieval system using sketches," Applied Machine Intelligence and Informatics (SAMI), 2011 IEEE 9th International Symposium on ,Herlány, Slovakia pp. 183-188, 27-29 January 2011.

[2] H. Weiming, X. Nianhua, L. Li, Z. Xianglin, S. Maybank, "A Survey on Visual Content-Based Video Indexing and Retrieval," Systems, Man, and Cybernetics, Part C: Applications and Reviews, IEEE Transactions on , Vol.41, No.6, pp.797-819, November 2011.

[3] S. W. Chee, K. P. Dong, P. Soo-Jun, "Efficient Use of MPEG-7 Edge Histogram Descriptor" ETRI Journal on, Vol. 24, No. 1, pp. 23-30, 2002. Overview of the Goals, Tasks, Data, Evaluation Mechanisms and Metrics," Proceedings of TRECVID 2011 (to appear), December 2011.

[7] C. G. M. Snoek, M. Worring, O. de Rooij, K. E. A. van de Sande, R. Yan, A. G. Hauptmann,

"VideOlympics: Real-Time Evaluation of Multimedia Retrieval Systems," IEEE MultiMedia on, Vol.

15 No. 1, pp. 86-91, January 2008.

[8] B. Fröhlich, J. Denzler, "Semantic Segmentation Algorithms for Aerial Image Analysis and Classification," One Day BMVA Symposium at the British Computer Society on Aerial Image Analysis & Classification, pp. 1-2, 2010.

[9] D. Stojcsics, A. Molnár, "AirGuardian UAV hardware and software system for small size UAVs," International Journal of Advanced Robotic Systems, Croatia, 2012, ISSN 1729-880 6 (megjelenés alatt).

[10] C. Cigla, A. A. Alatan, "Segmentation in multi-view video via color, depth and motion cues," Image Processing, ICIP 2008. 15th IEEE International Conference on , pp. 2724-2727, 12-15 October 2008.

[11] H. Koppula, A. Anand, T. Joachims, A. Saxena, "Semantic Labeling of 3D Point Clouds for Indoor Scenes, " Conference on Neural Information Processing Systems (NIPS), 2011.

[12] L. Shang, L. Yang, F. Wang, K. Chan, X. Hua, "Real-time large scale near-duplicate web video retrieval," In Proceedings of the international conference on Multimedia (MM '10) ACM, New York, NY, USA, pp. 531-540. 2010.

46

[13] Google Operating System – Google Project Glass [Online].

http://googlesystem.blogspot.hu/2012/04/googles-project-glass.html, utolsó látogatás:

2012.11.10.

[14] M. Petkovic, "Content-based Video Retrieval", VII. Conference on Extending Database Technology (EDBT), Ph.D. Workshop, Konstanz, Germany, March 2000.

[15] P. Geetha, V. Narayanan, "A Survey of Content-Based Video Retrieval," Journal of Computer Science, Vol. 4, No. 6, pp. 474-486, 2008.

[16] A. G. Hauptmann, M. G. Christel, Y. Rong, "Video Retrieval Based on Semantic Concepts,"

Proceedings of the IEEE , Vol. 96, No. 4, pp. 602-622, April 2008.

[17] F. Suard, A. Rakotomamonjy, A. Bensrhair, A. Broggi, "Pedestrian Detection using Infrared images and Histograms of Oriented Gradients," Intelligent Vehicles Symposium, pp. 206-212, 2006.

[18] E. Rodner, "Learning from Few Examples for Visual Recognition Problems," PhD Dissertation, Friedrich-Schiller-Universität Jena, pp. 1-209, December, 2011.

[19] R.B Rusu, S. Cousins, "3D is here: Point Cloud Library (PCL)," Robotics and Automation (ICRA), 2011 IEEE International Conference on, pp.1-4, 9-13 May 2011.

[20] B. Alexe, T. Deselaers and V. Ferrari, "What is an object?," Proceedings of the 2010 IEEE Conference on Computer Vision and Pattern Recognition (CVPR'10), 2010.

[21] B. Fröhlich, "Semantic Segmentation," Diploma Thesis, Friedrich-Schiller-Universität Jena, pp.

1-79, October 2009.

[22] T. Berners-Lee, M. Fischetti, "Weaving the Web : The Original Design and Ultimate Destiny of the World Wide Web by its Inventor," Harper San Francisco, September 1999.

[23] G. Csurka, "BOV and Fisher Vectors in Large Scale Image Classification and Retrieval" 19th Summer School on Image Processing, Szeged, Hungar, July, 2011.

[24] H. Nakayama, T. Harada, Y. Kuniyoshi, "Dense sampling low-level statistics of local features,"

In Proceedings of the ACM International Conference on Image and Video Retrieval (CVIR ‘09), No.

17, pp. 1-8, New York, 2009.

[25] C. Dance, J. Willamowski, L. Fan, C. Bray, G. Csurka, "Visual categorization with bags of keypoints," ECCV International Workshop on Statistical Learning in Computer Vision, Prague, 2004.

[26] M. Eitz, R. Richter, K. Hildebrand, T. Boubekeur, M. Alexa, "Photosketcher: Interactive Sketch-Based Image Synthesis," Compute Graphics and Applications, IEEE, Vol. 31, No. 6, pp. 56-66, November-December 2011.

[27] A. Lakdashti, H. Ajoroloo, "IRFUM: Image Retrieval via Fuzzy Modeling" Computing and Informatics, Vol. 22, pp. 1001-1029, 2003.

47

[28] F. Perronnin, L. Yan, J. Sánchez, H. Poirier, "Large-scale image retrieval with compressed Fisher vectors," Computer Vision and Pattern Recognition (CVPR), 2010 IEEE Conference on, pp.

3384-3391, 13-18 June 2010.

[29] H. Xiaodi, Z. Liqing, "Saliency Detection: A Spectral Residual Approach," Computer Vision and Pattern Recognition, 2007. CVPR '07. IEEE Conference on, pp.1-8, 17-22 June 2007.

[30] K. Lai, B. Liefeng, R. Xiaofeng, D. Fox, "A large-scale hierarchical multi-view RGB-D object dataset," Robotics and Automation (ICRA), 2011 IEEE International Conference on, pp. 1817-1824, 9-13 May 2011.

[31] X. Lu, C. Chia-Chin, J.K. Aggarwal, "Human detection using depth information by Kinect,"

Computer Vision and Pattern Recognition Workshops (CVPRW), 2011 IEEE Computer Society Conference on, pp.15-22, 20-25 June 2011.

[32] D. Navneet, B. Triggs, C. Schmid, "Histogram of Oriented Gradients (HOG) for Object Detection," 2009.[Online]

http://vision.stanford.edu/teaching/cs223b_winter0910/lecture/HoG.pdf , utolsó látogatás:

2012.11.10

[33] D. Navneet, B. Triggs. "Histograms of Oriented Gradients for Human Detection” In Proceedings of the 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05), Vol. 1, pp. 886-893, 2005.

[34] M. A. Johnson, "Semantic Segmentation and Image Search," PhD Dissertation,University of Cambridge, pp. 1-171, April 2008.

[35] K. Klasing, D. Althoff, D. Wollherr, M. Buss, "Comparison of surface normal estimation methods for range sensing applications," Robotics and Automation, 2009. ICRA '09, IEEE International Conference on, pp. 3206-3211, 12-17 May 2009.

[36] D. Reynolds, "Gaussian Mixture Models," MIT Lincoln Laboratory, pp. 1-5

[37] C. R. Souza, "The Accord.NET Framework," April 2012. [Online].

http://accord.googlecode.com , utolsó látogatás: 2012.11.10.

[38] A. Kaehler, G. Bradski, "Learning OpenCV," O’Reilly Media, 2008.

[39] C. W. Hsu, C. C. Chang, C. J. Lin, "A practical guide to support vector classification,"

Department of Computer Science and Information Engineering, National Taiwan University, Taipei, Taiwan, 2003.

[40] A. Ben-Hur, J. Weston, "A User’s Guide to Support Vector Machines Data Mining Techniques for the Life Sciences," Springer (2009).

[41] C. Chih-Chung, L. Chih-Jen, "LIBSVM: A library for support vector machines," ACM Trans.

Intell. Syst. Technol, Vol. 2, No. 3, pp. 27 May 2011.

[42] R. Bellman, "Adaptive Controll Process: A Guided Tour," Princeton University Press, 1961.

48

[43] The MathWorks Inc. Image Processing Toolbox.[Online].

http://www.mathworks.com/products/image/ , utolsó látogatás: 2010.11.10.

[44] N. Silberman, R. Fergus, D. Hoiem, P. Kohli, "Indoor Segmentation and Support Inference from RGBD Images," ECCV, 2012.

[45] A. Janoch, S. Karayev, Y. Jia, J.T. Barron, M. Fritz, K. Saenko, T. Darrell, "A Category-Level 3-D Object 3-Dataset: Putting the Kinect to Work," ICCV Workshop on Consumer 3-Depth Cameras in Computer Vision, 2011.

[46] M. A. Fischler, R. C. Bolles, "Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography," Comm. of the ACM, Vol. 24, pp. 381-395, 1981.