All Posts By

Makk Árpád

Mikor lassít az önvezető autó a zöldségesnél?

By | Big Data News, Data Science, Tech Trends | No Comments

Tudod, mi a különbség a sarki zöldséges és a képelemző algoritmus között? Az egyik kilóban, a másik pedig pixelekben méri a dinnyét. És mi a hasonlóság? Mindkettő úgy szereti, ha minél pirosabb belülről a gyümölcs. A poén persze komolytalan, a téma viszont nagyon is komoly – mutatjuk, hogyan került képbe a dinnye!

A 2010-es évek talán leglátványosabb technológiai vívmányai az önvezető autók, illetve a kép- és arcfelismerő rendszerek. Lassan egy évtizede sorra jelennek meg cikkek, tévériportok, blogbejegyzések a témában, melyekkel nem csupán az IT-szakma, de a laikus átlagember is gyakran találkozik, így viszonylag tájékozott lehet a felhasználással kapcsolatban. Azt azonban ma is kevesen tudják, hogyan is működnek ezek a rendszerek, miként „foghatja fel” egy gép, hogy mit is lát az elé táruló élő képeken vagy éppen fotókon.

E bejegyzésünkben segítünk kicsit megérteni, hogy milyen alapelvek szerint működik a képfeldolgozás, és hogy hogyan találnak meg egy-egy objektumot az algoritmusok a hatalmas pixelrengetegben. Ebben segített egy OpenCV (Open Source Computer Vision) csomag, mely bárki számára elérhető. A cikkben az alapfogalmak tisztázását követően bemutatunk két eljárást, ami segíthet a számítógép számára különböző objektumokat megtalálni, akár azonos képeken, akár teljesen más forrásból származó fotók esetében.

Kezdjük az alapoktól!

A kép képpontok, azaz a pixelek összessége,  amelyek egy mátrixba csoportosulnak, és vizuálisan felismerhető, értelmezhető alakzatokat jelenítenek meg. Ezen mátrixok nagyságát befolyásolja a kép szélessége és magassága, a rétegeit pedig a színrendszer határozza meg. A fontosabb színskálák az úgynevezett rgb, hsv, hls, luv és a yiq. A továbbiakban az rgb, tehát a red, green és blue színrendszer alkalmazásával bontjuk elemeire a képeket. Az rgb rendszer esetén a kép mátrix-összetétel a következő: a mátrix magassága, a szélessége és a színrétegek száma, ami jelen rendszer mellett három. A rétegek elemei 0-tól 255-ig terjedő egész értékű számok. Fekete-fehér kép esetén a 0 a teljesen sötét, míg a 255 a fehér árnyalatot jelenti, és hasonlóan oszlik el az rgb színskálán is: a piros árnyalat esetén például a 0 a fekete, míg a nagyobb értékek a piros erősségét írja le.

Az önvezető autók működésének alapjául szolgáló, komplex képfelismerő rendszerek képesek arra, hogy azonosítsák a különböző tereptárgyakat, a járműveket, a gyalogosokat, a jelzőtáblákat és útburkolati jeleket, hogy felismerjék a jelzőlámpák fényeit. Mi azonban kezdjük az alapoktól, az alábbi dinnyés fotóval szemléltetve a rendszer működését.

Ahogyan a példaképeken – vagyis a dinnyeszeleteken – is látszik, az első kép az eredeti, ami az összes színréteget tartalmazza, ezt követi a piros, a zöld és a kék árnyalatok kiemelése. Jól látszik, hogy a kép dimenziói nem változtak, azonban például a piros esetén a többi réteg elemei nulla értéket kaptak, azaz teljesen feketévé váltak, így a maradék réteggel megjeleníthetővé vált a kiválasztott piros réteg. Természetesen azonos módszerrel jeleníthetők meg a kék és a zöld árnyalatok is.

A cikkben kétféle objektum keresési eljárást fogok ismertetni, az úgynevezett template matching és a feature matching eljárásokat.

Template matching, avagy objektumillesztés

A legegyszerűbb objektumkeresési eljárások közé tartozik, hiszen a teljes kép egy kis részlete a keresett alakzat a képen, tehát a kicsi lényegében része a nagy képnek.

Ebben az esetben elegendő a kis és a nagy kép pixeleinek az összeegyeztetése, amihez többfajta műveletet is alkalmazhatunk, azonban a legismertebbek a következők:

  • két különböző kép pixeleinek vagy pixel csoportjai közötti korrelációs vizsgálat (lineáris kapcsolatot leíró metrika, mely értéke -1 és 1 között található, ahol az 1 az erős azonos irányú, -1 az erős ellentétes irányú és a 0 érték pedig a kapcsolat meg nem létét írja le),
  • differenciálszámítás a két kép pixel csoportjai között, ahol a hiba 0, ott lesz a teljes egyezés.

A következő képsor a folyamat lépéseit tartalmazza, aminek az első eleme a teljes kép, amiből származik a második kép, amit egyben szeretnénk is megtalálni a teljes képen. A harmadik kép egy korrelációs kép, ami egy részlet a teljes képből. Ezen jól látható, hogy kék színnel mutatja, ahol nincs pixelegyezés a nagy és a kis kép között, azonban a sárgával jelzett részen megvan a teljes egyezés. Az utolsó kép pedig a találat eredményét jeleníti meg immáron egy piros kerettel jelezve a kis kép helyzetét a teljes képen.

A bemutatott egyszerűbb módszertan alkalmazása több helyzetben is elegendő lehet, például akkor, amikor tudjuk, hogy a vizsgált képsokaságokon vannak pontok, melyek mindig állandók, és ezen objektumok mellett következhet be változás, így az állandó alakzatok helyzetéből meghatározható és feldolgozható az újdonság a képeken. Ezzel szemben indikátorként is alkalmazható, ha tudjuk, hogy egy képen csak egyetlen mátrixban történhet változás, és ennek a meg nem találása jelenti a változás megtörténtét.

Feature Matching, avagy sablonillesztés

A template matching esetén a hasonló pixelek feltárásánál nem volt szükség a kép előkészítésére, azonban ha a keresett kép nem része az eredetinek, hanem teljesen más forrásból származik, akkor ki kell emelni a különböző tulajdonságokat. Ezek segítségével az algoritmusok könnyebben találják meg a hasonló egységeket a képeken. Ilyen előkészítések lehetnek a következők:

  • a gray scaling, avagy szürke skála, aminek a segítségével meghatározhatjuk a színárnyalatok fokozatait. Ebben az esetben a kép fekete, fehér és szürke színeket tartalmaz és csupán egy réteget, nem pedig hármat, mint az rgb színrendszer esetén,
  • blurring, smoothing: zaj eltávolítása, egy előre definiált, pár képpont nagyságú mátrix mentén a teljes képen hajt végre képpontátlagolást → ennek következtében a megkapjuk azokat a képrészleteket, ahol a legnagyobb fényváltozások fellelhetők a képen. Fontos figyelni, hogy ennek következtében a kép veszít élességéből így ezt figyelembe tartva kell meghatározni ezeknek a beavatkozásoknak a súlyát.
A feature matching különböző algoritmusok összessége, amelyek együttes alkalmazásával képes megtalálni két különböző, azonban hasonló kép közötti hasonló egységeket. Ezekben a következő algoritmusok segítenek (a lista nem teljes):
  • edge detection, avagy az élek feltárása: alapvető fontossága van, hiszen a képek nagy részletességgel bírhatnak, így ennek a csökkentésére szolgál az algoritmus, aminek segítségével egyszerűbbé válik a képfeldolgozás a számunkra is fontos élek feltárásával.
  • contour detection, avagy a kontúrvonalak megtalálása: segít meghatározni egyes tárgyak formáját, kiterjedését, segítve az elválasztást a többi tárgytól.

A feature matching alkalmazása két pontból tevődik össze. Először is a korábbiakban felsorolt eszközök segítségével feltárja mindkét kép esetében a kulcsfontosságú részeket a képeken. Ezek lehetnek a különböző élek, kontúrok. Ezt követően a két kép esetén meghatározott kulcsfontosságú elemeket hasonlítja össze és rögzíti az összes egyezést. Mivel mindkét kép esetén több kulcsfontosságú elemet is vizsgál, így több esetben is előfordulhat, hogy lehetnek rosszabb és jobb egyezések is a két kép esetén. Tanácsos a folyamatot követően csak a legjobb egyezéseket kiválasztani.

A fent látható képeken megtörtént a feljebb említett szürke skálázás és a pixelek átlagolása. Az összeegyeztetés sikeresnek mondható, hiszen mind a mag, mind a héj esetében megtalálta az egyezéseket még akkor is, ha a képek teljesen más paraméterekkel rendelkeznek, és más körülmények között készítették azokat.

Az önvezető autók persze sokkal bonyolultabb és szofisztikáltabb rendszereket használnak, azonban az alapjai ezekből a folyamatokból tevődnek össze. Ezen alkalmazások segítségével képes meghatározni a sávokat, klasszifikációval a felismert táblákat és más alapvető funkciók összességét, ami a biztonságos vezetéshez szükséges. Talán egyszer majd az útszéli dinnyeárusnál is megáll, ha egy mézédes görögre vágyik a sofőr – azt ugyanis már tudjuk, hogy a dinnye felismerésére is képes a technológia.

Ingatlanok árazása

By | Data Science | No Comments

Az ingatlanok értéke könnyen összegezhető a telek elhelyezkedése, nagysága, befektetett különböző erőforrások értéke alapján. Ezzel szemben az ára nehezebben meghatározható egy “dinamikusan” változó környezetben, ahol más és más célok keverékével találnak újabb gazdára az ingatlanok.

Egyre nagyobb arányban jelenik meg a spekuláns, vagy kiadási célra vásárló kereslet, ami könnyen felborítja a piac megszokott működését. Emiatt az elmúlt években az ingatlan értékét kevésbé latba véve, az aktuális piacon lévő hasonló ingatlanok árát súlyozva volt helyesebb meghatározni az ingatlan árát. A problémát tovább nehezítette, hogy ezt az árazást elég sűrűn újra a piachoz kellett igazítani, hiszen akár egy hónap elteltével hasonló ingatlanok ára is százalékokkal változhatott. Ebben a kérdéskörben lehettünk segítségére egy projekt keretei között egy ingatlanközvetítő cégnek.

Mivel a jelenben szeretnénk megkapni az ingatlan árát és nem előrevetíteni ennek a változását egy következő periódusra, így a probléma egy egyszerű regresszióval is leírható. Első lépésként meg kell különböztetnünk a cél és magyarázó változót. A cél az ingatlan ára, a magyarázók pedig azok az attribútumok, amik legjobban meg tudják magyarázni az ár alakulását. Bár ezek a tényezők akár régiónként is nagy részben változhatnak, azonban legtöbb esetben a következő változók jelentik a minimum követelményt egy ingatlan árának a meghatározásához:

  • Időpont

Az ingatlan meghirdetésének vagy keresésének az időpontja. Elegendő az év-hónap esetleg a negyedév feltüntentése, így könnyebben követhető mely negyedévekben volt nagyobb az emelkedés vagy csökkenés, vagy ennek kombinációja, ami volatilitást szült. Fontos megjegyezni, hogy a meghirdetett ár és a ténylegesen eladásra került ingatlan ára között nem csupán marginális eltérések lehetnek, hiszen a meghirdetett ár, nem biztos, hogy fix és a vásárló is lehet elég szemfüles, hogy jól tud alkudni. Ezt nagyban befolyásolja, hogy az eladó milyen gyorsan akar túladni a ingatlanon.

  • Ingatlan tulajdonságai

Az ingatlan tulajdonságait két nagy csoportba sorolhatjuk. Az első és talán legfontosabb a különböző méretek, mint ingatlan, terasz, telek területek, szobák száma és ezek kialakítása, belmagasság és további az ingatlan állapotát nem tükröző adottságok. Ne feledkezzünk meg természetesen az építés évéről és a kiépített infrastruktúráról sem.

A szembetűnőbb és egyben szubjektívabb elemek fedik le az ingatlan állapotát, amit egyszerűség kedvéért egy szimpla pontozási rendszerrel is megoldhatunk, azonban, ha csak egy ötös skálát veszünk alapul, akkor nagy különbségek lehetnek akár az átlagos, akár a luxus ingatlanok között és nem jelölhetjük csupán hármassal az előbbit és ötössel az utóbbit. Ebben lehetnek segítségünkre a leírások, amelyek tartalmazhatják, hogy felújított vagy esetleg arra szoruló az ingatlan. Ha ezeket is alapul szeretnénk venni az ingatlan árának becslésnél, akkor ezeknek a mondatoknak a dekódolása is szükséges. Csak ezeket a leírásokat felhasználni a modellezéshez természetesen kockázatos, hiszen ez az egyéntől függ, hogy hogyan írja le az adott tényezőket, azonban kiegészítésének biztos segítség lehet.

  • Környék és elhelyezkedés

Nem mehetünk el szó nélkül az ingatlan elhelyezkedése mellett, hiszen hasonló ingatlan akár Pesten, vagy Budán helyezkedik el, vagy esetleg más és más városokban, az nagyon megszabja, hogy minek mennyi is az ára. Fontos megemlíteni az ingatlan esetében, hogy merre néz, hiszen nem mindegy, hogy egy csendes belső udvarra, vagy a forgalmas utca felé. Emellett számba kell venni az ingatlan közelségében lévő szolgáltatási lehetőségeket is, amelyek iránti igény életciklusonként eltérő lehet. Hiszen fiatalon még fontos, hogy akár a szórakozóhelyek, akár az iskola elérhetők legyenek, későbbiekben a munkahely, bevásárlási lehetőségek, gyógyszertár majd az óvoda, iskola, stb.
A közelben lévő szolgáltatások azonosításához a bárki számára elérhető OpenStreetMap-et használtunk, ami a Google Maps-hez hasonlóan nem csak az úthálózatokat, de a különböző szolgáltatásokat is felöleli a régiókban. A projekt során az ingatlanok koordinátáit felhasználva gyűjtöttük össze a közelségükben található szolgáltatásokat, amelyek pozitívan hathatnak az árak alakulására. Emellett összegeztük a tömegközlekedési lehetőségeket és a nagyobb utazási csomópontokat.

  • KSH adatok

Az ingatlanok árát befolyásolja a település de a régió adottságai is. Beszélhetünk akár a balatoni borvidék közelségéről, vagy a munkanélküliségi rátáról a körzetben, vagy egyszerűen az új lakások számáról. Bár nagy átlagban nem játszik nagy szerepet a régió KSH adatai, azonban ezeket a tényezőket is szükséges figyelembe venni, hogy minél pontosabb árat prediktálhassunk.

Természetesen az érdeklődőnek nem szükséges tudnia, hogy milyen messze helyezkedik el telkéhez a legközelebbi bevásárlóközpont, vagy mennyi az átlagkereset a településén, elegendő, ha csak a fontosabb tulajdonságait megosztja az ingatlanáról. De természetesen minél több információt oszt meg a felhasználó, annál pontosabban tud a modellünk prediktálni.

A fenti képen az ingatlan és régió tulajdonságait láthatjuk és ezek hatását az árra, ha a skála piros, akkor növeli az ingatlan árát, kékkel jelölve fordított az irány. Ezek a hatások az első pár változó esetében jól is látható, hiszen a bruttó és nettó méret növekedésével az ingatlan ára is egyre nagyobb lesz, de befolyásolja a korábban említett tranzakciós vagy kikiáltási ár is és hogy mikor lett létrehozva az ingatlan hirdetés.

De pontosan mi is mondja meg az árat és ez mennyire pontos, kérdezheti jogosan a felhasználó. Már a változókból is jól látható, hogy nem feltétlenül van meg minden egyes változó között a lineáris kapcsolat, így a lineáris regressziónál komplexebb modellezésre volt szükségünk. Hogy a felhasználóknak továbbra is egyszerű maradjon az értelmezés, egy döntési fák csoportjából álló modellezés mellett döntöttünk. Ekkor az egyes fák csupán gyenge tanulóként jelennek meg, csak a változók egy részével találkoznak, azonban ezek információk összevetésével egy erős tanuló hozható létre.

Bár elsőre meggyőzőnek tűnik, azonban mi lehet a probléma ezzel a modellezéssel? Az információk összevetésével átlagolás történik, ami információ vesztéssel is jár, azonban a nagy számban előforduló átlagos ingatlanok esetében nagyon jól működik az eljárás. Tehát az átlagos panelek, lakások, családi házak becslése megfelelő lesz, azonban a hatalmas loftok, vagy rózsadombi ingatlanok esetében alul becsli a modell az ingatlan árát.

Megnyugtatásul ez a probléma is kezelhető, ha a tanuló halmazokat rögtön ennek tudatában alakítjuk ki, hogy az egyedibb jellemzőkkel bíró ingatlanokat próbáljuk egy szegmensbe rakni és ezekre a kialakult csoportokra különböző modelleket fejleszteni. Ennek köszönhetően mindenki a lehető legjobb árat kaphatja meg a piacnak megfelelően pár perc alatt és nem kell átfésülni az összes hasonló ingatlant, hogy megszabhassuk a legjobb árat.

Fejlesztésünk eredményét az ingatlanközvetítő cég a dolgozóik támogatására használja, vagyis az ingatlanközvetítő kolléga a lakás adatainak megadása után azonnal kap egy becsült irányárat. Ezt összevetheti a saját vagy az eladó elképzeléseivel, így könnyebben kialakul egy reális eladási ár.

Az ajánlórendszerek használata ma már igen elterjedt, aki ilyen megoldást tervez bevezetni, több szolgáltató dobozos terméke közül is választhat. A döntés előtt érdemes azonban mérlegelni, hogy ezek a standardizált megoldások megfelelően illeszkednek-e a szolgáltatáshoz vagy a szolgáltatás speciális jellege miatt érdemes inkább egy egyedi megoldás fejlesztésében gondolkozni. Az alábbi írásban egy ingatlan ajánló rendszer fejlesztését mutatjuk be, amelynek bevezetésével a harmadával sikerült megnövelni az ingatlan megtekintések számát és a tényleges tranzakciók növekedéséhez több, mint 10%-kal járult hozzá.