Optimalizációs módszerek a távérzékelésben és a geoinformatikában Ph.D. Diszertáció tézisei Dezső Balázs Témavezető: Dr. Fekete István Eötvös Loránd Tudományegyetem Informatikai kar Informatikai Doktori Iskola Prof. Benczúr András, D.Sc. Információs rendszerek doktori program Prof. Benczúr András, D.Sc. Budapest, 2012
1. Bevezetés Az értekezésben bemutatunk három, valós alkalmazásként megjelenő problémát, valamint ismertetjük az ezekre adott algoritmikus megoldásokat. Az első téma a műholdfelvételek osztályozása, azaz a felvétel képpontjainak besorolása adott tematikus kategóriákba. A második problémában szkennelt rasztertérképek automatikus vektorizálásval foglalkozunk. A harmadik téma ügynökök beosztásának a megtervezése, akiknek ügyfeleket kell meglátogatni egy adott városban vagy egy nagyobb régióban. A fenti három probléma mellet, egy negyedik témával is foglalkozunk, mégpedig a LEMON gráf optimalizálási programkönyvtárral. Ez a programcsomag hasznos segédeszközként alkalmazható optimalizációs feladatoknál, ezért az előző problémák megoldásánál is kiterjedt módon használtuk. Geoinformatika Beosztás optimalizálás Műholdfelvételek osztályozása Optimalizálás Raszter-vektor konverzió LEMON 1. ábra. Témák közötti kapcsolat 1 2. Műholdfelvételek osztályozása A távérzékelés egyik alapfeladata a tematikus osztályozás, azaz egy felvétel képpontjainak besorolása adott kategóriákba [10]. A feladathoz megoldásához az adott területről egy műholdfelvétel-sorozatot és egy referencia térképet használunk fel. Ezen adatok alapján, figyelembe véve a képpontok spektrális hasonlóságát, a felvétel összes képpontját be kell sorolni egy-egy osztályba. A dolgozatban ismertetjük a legfontosabb módszereket az osztályozási problémára. A feladatra tradicionálisan pontonkénti algoritmusokat alkalmaztak, mint például a maximum likelihood vagy a Bayes döntést. Mindkét módszer többdimenziós normális eloszlással közelíti a kategóriák gyakorlati eloszlását. Valódi problémáknál az osztályok bonyolultabbak lehetnek, például csak több normális eloszlás uniójaként írható le egy tematikus kategória. A klaszterezés alapú módszerek bevezetésével ezek az osztályok is megfelelően kezelhetők. 1 Az ábrán a nyíl jelentése használja a módszereit és eredményeit reláció. 1
A pontonkénti osztályozási módszerek felteszik, hogy a műholdfelvétel képpontjai egymástól függetlenek, és nem veszik figyelembe a képpontok térbeli elhelyezkedését. Gyakorlatban a képpontok olyan egybefüggő területeket, azaz szegmenseket alkotnak, amelyekben a felszínborítás egységes, és a befoglalt pixelek spektrális tulajdonságai hasonlók. Nagy felbontású felvételeknél a szegmens alapú osztályozás csökkentheti a pontszerű félreosztályozásokból származó hibát. A pontonkénti módszerek a bizonytalan képpontokat rossz osztályba sorolhatják, ami csak részben javítható az algoritmus paramétereinek hangolásával. A szegmens alapú módszereknél a pontok osztályozását segítheti a környezetük abban, hogy a megfelelő kategóriába kerüljenek. A dolgozatban három módszert vizsgáltunk szegmensek osztályokhoz rendelésére. A maximum likelihood és a klaszterezés alapú módszerek általánosíthatók úgy, hogy pontok helyett szegmenseket osztályozzanak. Továbbá, a spektrális hasonlósági távolság függvények is használhatók szegmensek osztályba sorolására. A gráf alapú szegmentáló algoritmusokat [3] részletesen vizsgáltuk a dolgozatban. Képfeldolgozó algoritmusokban egy képet természetesen módon reprezentálhatunk egy irányítatlan gráffal, amelyben minden csúcs a kép egy-egy képpontját reprezentálja, és a szomszédos csúcsokat él köti össze. Továbbá, egy súlyfüggvényt rendelhetünk az élekhez, amely a két végpont közötti spektrális különbséget jellemzi. Négy szegmentáló algoritmust mutatunk be a disszertációban. A legjobb összevonás alapú módszer [1, 16] egy lentről-felfele haladó algoritmus, azaz kezdetben minden képpontot külön szegmensbe sorolunk, majd az algoritmus lépéseiben szomszédos szegmenseket vonunk össze. A dolgozatban bemutatott implementációban minden lépésben azt a két szegmenst vonjuk össze, amelyek között menő éleken vett átlagsúly a legnagyobb. A feszítőfa-összevonás alapú [8] szegmentálás hasonlít a legjobb összevonás alapú módszerre, de ahelyett, hogy mindig a leginkább kapcsolódó szegmenseket egyesítenénk, az algoritmus az összevonási lehetőségeket előre meghatározott sorrendben vizsgálja. Ehhez a gráf éleit súlyfüggvény szerint csökkenően sorba rendezzük, és ebben a sorrendben megvizsgáljuk, hogy össze kell-e vonni az él két végpontja által meghatározott szegmenseket. Két szomszédos szegmenst összevonunk, ha az új él hozzáadása és az összevonás nem növeli jelentősen a szegmensek változékonyságát. Egy szegmens változékonyságát a meghatározott részgráf maximális súlyú feszítőfájának a minimális élével jellemezzük. A minimális átlagsúlyú vágás alapú szegmentálás [17] egy fentről-lefele haladó algoritmus, azaz kezdetben a teljes kép egy szegmensbe esik, majd minden lépésben egy szegmenst vághatunk ketté. Az algoritmus meghatá- 2
rozza egy szegmensben a minimális átlagsúlyú vágást, és ha az egy küszöbértéknél kisebb, akkor a szegmenst szétvágjuk. A minimális normalizált vágás alapú szegmentálás hasonlít [15] a minimális átlagsúlyú vágás módszerére, de értelemszerűen a normalizált vágás algoritmusát használjuk a szegmensek szétvágására. A dolgozatban összehasonlítottuk a szegmentáló algoritmusok hatékonyságát az osztályozási problémában. Az osztályozási pontosság meghatározása a legfontosabb szempontja az összehasonlításnak, amelyhez a teljes osztályozási hibát, a tévesztési mátrixot és a hibatérképet használtuk. A témához kapcsolódó eredményeinket összefoglaljuk: Készítettünk egy keretrendszert, amiben osztályozási problémákat tudunk megoldani és kiértékelni, továbbá több szegmentáló, klaszterező és osztályozó algoritmust implementáltunk ebben a keretrendszerben. A gráf alapú szegmentáló algoritmusokat kiemelten vizsgáltuk. Ezért a legjobb összevonás alapú szegmentálást értelmeztük gráf alapú módszerként, továbbá a normalizált vágás alapú szegmentáló algoritmust a hatvány-módszer segítségével egyszerűsítettük. Kutatásunk szerint a szegmentálás alapú osztályozó algoritmusokkal mind pontosságban és futásidőben jobb hatékonyságot lehet elérni mint a képpontonkénti módszerekkel. Tapasztalatunk alapján a fentről-lefele haladó szegmentáló algoritmusokkal jobb tematikus osztályozási pontosságot lehet elérni mint a lentről-lefele haladó algoritmusokkal, mivel az előbbiek kevésbé érzékenyek az osztályok spektrális szórásának különbségeire. A szegmentálás alapú algoritmusok Bhattacharyya-távolság alapú osztályozással robusztusabbá válnak az osztályozási hibákkal szemben, mivel így az osztályozás kevésbé érzékeny a nagy spektrális kiterjedésű szegmensekre. Alapos tesztelés alapján a minimum normalizált vágás alapú szegmentálás Bhattacharyya-távolság alapú osztályozással bizonyult leginkább robusztus és hatékony megoldásnak a tematikus osztályozási feladatra. 3. Térképek raszter-vektor konverziója A térképek raszter-vektor konverziójának az a célja, hogy olyan digitális térképeket állítsunk elő, amelyek használhatók térinformatikai adatbázisokban 3
és rendszerekben. A dolgozatban az IRIS projekt eredményeit és a kapcsolódó optimalizációs problémák megoldásait ismertetjük [7, 6]. A bemutatott keretrendszerben a konverziós folyamatot három részre osztottuk fel: előfeldolgozás, a vektor adatok kinyerése, majd az utófeldolgozás. Az előfeldolgozás során a raszter képet egyszerűsítjük, hogy az alkalmassá váljon a vektorizálásra. A második lépésben az előfeldolgozott raszterképből előállítjuk a vektorizált térképet. Végül az utófeldolgozásban javítjuk a vektoros kép minőségét. Az előfeldolgozásban egyszerű képfeldolgozó eljárásokat használtunk, elsősorban digitális szűrőket és szín transzformációkat [14]. A vektorizált térkép előállításához az objektumokat három csoportba osztottuk, név szerint területekre, vonalakra és szimbólumokra. A területek kinyeréséhez a raszter képpontonjait osztályozzuk a térképen előforduló színosztályokba. A vektorizált térképet egy síkgráf primál és duális reprezentációjaként tároljuk el. A dolgozatban szintén vizsgáltuk pontozott textúrák felismerését, ami speciális esete a területek kinyerésének. A vonalak felismeréséhez egy színdekompozíciós módszert használtunk, amelyben minden képpontot egy terület és egy vonal vagy szimbólum szín keverékére bontottunk fel. A vonalak él-vékonyító szűrő alkalmazása után kinyerhetők a képről. Szimbólumok felismerésére raszter alapú mintaillesztő algoritmust alkalmaztunk. Továbbá, kifejlesztettünk egy módszert téglalap alakú épületek felismerésére, a minimális befoglaló téglalap algoritmus segítségével. Az utófeldolgozási lépésben a különböző típusú objektumokat együtt vizsgáltuk, hogy ezzel a térkép minőségét javítsuk. Például, ha egy szimbólum olyan területen van, amelyen nem szerepelhet, akkor töröljük a térképről. Összefoglaljuk a témához kapcsolódó eredményeinket: Kifejlesztettünk egy keretrendszert raszter térképek automatikus vektorizálására, és létrehoztunk egy transzformációs folyamatot magyar topográfiai térképek konverziójára. A síkgráfok használata térbeli objektum tárolására egy ismert technika, mégis csak ritkán fordul elő GIS-alkalmazásokban. A legtöbb kereskedelmi alkalmazás nem támogatja ezt az adatreprezentációt. Tapasztalataink alapján ezen adatstruktúra segítségével könnyebb karbantartani a térkép objektumok topológiáját, ugyanakkor lehetővé teszi a térkép egyszerű módosítását is. Kifejlesztettünk egy algoritmust a pontozott területek felismerésére Delaunay-háromszögelés segítségével, és egy másikat téglalap alakú épületek keresésére a minimális befoglaló téglalap algoritmus használatával. 4
4. Ügynökök beosztásának optimalizálása Adottak kereskedelmi ügynökök, akiknek ügyfeleket kell meglátogatniuk megadott időben. Továbbá, az ügynököknek, amikor nem vesznek részt látogatáson, vissza kell menniük az irodájukba, és ott egyéb munkát kell végezniük. A feladat az, hogy tervezzük meg az ügynökök beosztását egy napra. A problémára egy oszlop generálás alapú megoldás adható [4]. A munkanap akkor kezdődik, amikor az ügynök megérkezik az irodájába vagy az első találkozóra. A látogatások és az irodai feladatok helyszíne között az ügynököknek autóval vagy tömegközlekedéssel el kell utazniuk. Továbbá, az ügynökök napi beosztásában ebédidőt is kell biztosítani. A feladatra készítettünk egy egészértékű lineáris programozási modellt, amelyben minden ügynök minden lehetséges beosztásához egy bináris változót rendeltünk. Mivel az összes lehetséges egyéni beosztások száma nagy, ezért az oszlop generálás módszerét [13] használtunk a lineáris program megoldására. Az oszlop generálás módszerhez szükséges egy szubrutin, amely megkeres egy olyan duális feltételt, amelyet megsért az aktuális duális megoldás. Ezt a feladatot erőforrás korlátos legrövidebb utak problémájaként formalizáltuk, és egy dinamikus programozás módszert [9] használó algoritmussal oldottuk meg. Az egészértékű megoldás elérésére egy mohó kerekítési módszert alkalmaztunk. Az algoritmusban lépésenként kiválasztunk egy-egy változót, és rögzítjük az értékét egyre. Minden lépésben az a változó kerül kiválasztásra, amely legkisebb mértékben növeli a globális költségfüggvény értékét. A feladatban fontos részprobléma az, hogy az ügynökök útvonalát meg kelltervezniatalálkozókésazirodaimunkákközött. Nohaerreacélraazoptimalizáló szoftver fejlesztésnél egy külső, web-service-ként elérhető terméket vettünk igénybe, a dolgozatban összefoglaltuk az útvonaltervezés legfontosabb módszereit. A legfontosabb eredményeink a beosztás készítés témájában: Kifejlesztettünk egy komplex optimalizálási algoritmust a beosztás tervezési problémára. Kiértékeltük az oszlop generálás algoritmusához használt heurisztikus kerekítési eljárást. A tapasztalati eredmények azt mutatják, hogy a kifejlesztett algoritmus megfelelő és hatékony megoldást nyújt a beosztási problémára. 5
5. LEMON optimalizálási könyvtár LEMON (Library for Efficient Modeling and Optimization in Networks 2 ) [12, 5] egy hatékony, nyílt forráskódú, generikus optimalizálási programkönyvtár. Ezen könyvtár fejlesztéséhez személyesen is hozzájárultam. Számos adatstruktúra található a LEMON könyvtárban, amelyek felhasználhatók optimalizálási eljárásokban. Ezek közül legfontosabb típusok a gráf osztályok és a hozzájuk tartozó típusok, mint például csúcsok, élek és leképzések. Számos további kiegészítő struktúra is megtalálható a könyvtárban, például különböző kupac implementációk és unió-holvan adatszerkezetek. A könyvtárban megtalálható számos gráfalgoritmus és kombinatorikus optimalizálási eljárás hatékony implementációja. Ezen algoritmusok között olyan alapvető eljárások szerepelnek, mint a mélységi és szélességi keresés, a Dijkstra algoritmus, a Bellman-Ford algoritmus, a Kruskal algoritmus és további eljárások gráfok tulajdonságainak (összefüggőség, páros gráf, Euler gráf, stb.) meghatározására. Olyan összetett algoritmusok is szerepelnek a könyvtárban, mint a maximális folyam keresés, a minimális vágás algoritmusai, a maximális párosítások, a minimális átlagsúlyú kör keresés, a minimális költségű folyamok és a gráfok síkba ágyazása. A lineáris programozás (LP) valószínűleg a legfontosabb általános eszköz az operációkutatásban. Számtalan optimalizálási feladat formalizálható és megoldható LP feladatként. Számos LP megoldó programkönyvtár használható a LEMON segítségével, amely ezen könyvtárakhoz egységes és magas szintű interfészt biztosít. A dolgozatban bemutatjuk a könyvtár belső megvalósításának néhány részletét, például azt, hogy hogyan tárolható C++ vector adattípusban gráfok adjacencia listája, vagy hogyan alkalmazható az Observer minta gráfok változásainak jelzésére. Többek között ez a két megoldás szükséges a hatékony és kényelmes leképzés típus megvalósításához a LEMON programkönyvtárban. A dolgozatban összehasonlítottuk a LEMON könyvtár futásidejű hatékonyságát a legfontosabb konkurens termékekkel, azaz a Boost [2] és a LE- DA [11] könyvtárral. A tesztek eredményei alapján azt a következtetést vonhatjuk le, hogy az algoritmusok és adatszerkezet jelentősen gyorsabbak LEMON-ban, mint a másik két vizsgált könyvtárban. Összefoglaljuk a témához kapcsolódó eredményeinket: Számos adatszerkezet, algoritmus és egyéb hasznos komponens megtalálható a LEMON programkönyvtárban, amelyek egyszerűen kombinálhatóak gráfoptimalizálási problémák megoldására. 2 Programkönyvtár hálózatok hatékony modellezéséhez és optimalizálásához 6
Részletes tesztelés alapján, a LEMON-ban szereplő alapvető algoritmusok és adatszerkezetek hatékonyabbnak bizonyultak, mint más széles körben használt konkurens könyvtárakban. A könyvtár fejlesztéséhez személyesen is hozzájárultam. Több algoritmust és adatszerkezetet implementáltam, és fontos tervezési kérdések megvitatásában is részt vettem. Mivel a könyvtár széleskörűen alkalmazható eszközöket biztosít, ezáltal hatékonyan felhasználható távérzékelésben és geoinformatikában felmerülő optimalizálási problémák megoldására is. A LEMON gráfstruktúra alkalmas valós világban előforduló térinformatikai objektumok reprezentálására. Továbbá, a képfeldolgozó algoritmusok megvalósításához a LEMON rácsgráf típusa nyújt hatékony segítséget. 6. Összefoglalás Amikor egy komplex, valós életbeli problémát akarunk megoldani, a matematikát, a számítástudományt és a szoftvertechnológiát együtt, szintézisben kell alkalmazni. Először egy matematikai modellt kell létrehozni, majd egy optimalizálási módszert kell kidolgozni, végül hatékony algoritmusokat kell implementálni megfelelő szoftver eszközök segítségével. Ezt módszertant sikeresen alkalmaztuk a dolgozatban bemutatott problémák megoldása során. Hivatkozások [1] Jean-Marie Beaulieu and Morris Goldberg. Hierarchy in picture segmentation: A stepwise optimization approach. IEEE Trans. Pattern Anal. Mach. Intell., 11(2):150 163, 1989. [2] Boost C++ Libraries. http://www.boost.org/, 2012. [3] Balázs Dezső, Roberto Giachetta, László István, and Fekete István. Experimental study on graph-based image segmentation methods in the classification of satellite images. EARSeL eproceedings, 11(1):12 24, 2012. [4] Balázs Dezső, Alpár Jüttner, and Péter Kovács. Column generation method for an agent scheduling problem. Electronic Notes in Discrete Mathematics, 36:829 836, 2010. ISCO 2010 - International Symposium on Combinatorial Optimization. 7
[5] Balázs Dezső, Alpár Jüttner, and Péter Kovács. LEMON an Open Source C++ Graph Template Library. Electronic Notes in Theoretical Computer Science, 264(5):23 45, 2011. Proceedings of the Second Workshop on Generative Technologies (WGT) 2010. [6] Balázs Dezső, Zsigmond Máriás, and István Elek. Image processing methods in raster-vector conversion of topographic maps. In International Conference on Artificial Intelligence and Pattern Recognition, July 2009. [7] István Elek, Zsigmond Máriás, and Balázs Dezső. IRIS, Intelligent Raster Interpretation System (in Hungarian). Technical report, Faculty of Informatics, Eötvös Loránd University, Budapest, 2007. [8] Pedro F. Felzenszwalb and Daniel P. Huttenlocher. Efficient graph-based image segmentation. Int. J. Comput. Vision, 59(2):167 181, 2004. [9] Stefan Irnich and Guy Desaulniers. Shortest path problems with resource constraints. Column Generation, pages 33 65, 2005. [10] István László, Balázs Dezső, István Fekete, and Tamás Pröhle. A fully segment-based method for the classification of satellite images. In 10th Symposium on Programming Languages and Software Tools, June 2007. [11] LEDA Library of Efficient Data Types and Algorithms. http://www.algorithmic-solutions.com/, 2010. [12] LEMON Library for Efficient Modeling and Optimization in Networks. http://lemon.cs.elte.hu/, 2012. [13] Marco E. Lübbecke and Jacques Desrosiers. Selected topics in column generation. Oper. Res., 53(6):1007 1023, 2005. [14] William K. Pratt. Digital Image Processing. John Wiley & Sons, New York, 1991. [15] Jianbo Shi and Jitendra Malik. Normalized cuts and image segmentation. IEEE Trans. on Pattern Analysis and Machine Intelligence, 22(8):888 905, 2000. [16] James C. Tilton. Image segmentation by iterative parallel region growing and splitting. In Proc. of the International Geoscience and Remote Sensing Symp. (IGARSS89), pages 2235 2238, 1989. [17] Song Wang and Jeffrey Mark Siskind. Image segmentation with minimum mean cut. 8 th IEEE International Conf. on Computer Vision, 1:517, 2001. 8