Mašininis mokymasis II: rezultatai

Ankstesniame įraše buvo rašyta apie mašininio mokymosi reikalavimus ir potencialą atpažįstant objektus ortofotografiniuose žemėlapiuose. Šį kartą parašysiu apie tai, kokie stebimi praktiniai rezultatai su Lietuvos objektų atpažinimu.

Pastatų atpažinimas

Pastatų atpažinimas bandomas jau du mėnesius. Modelis apmokytas su beveik tūkstančiu kaladėlių. Tai nėra didelis kiekis, bet jau matomi šiokie tokie rezultatai ir tendencijos. Verta paminėti, kad pradžioje pabandžius mokyti su tiesiog iš OpenStreetMap paimtais duomenimis, rezultatai buvo daug prastesni, nei kruopščiai parinkus (ir dažnai pataisius) OSM duomenis. T.y. žemiau pateikiami rezultatai modelio, kuris apmokytas su tiksliai (kiek tai įmanoma) pažymėtais pastatais – iki minimumo sumažintas klaidingų ar netikslių etikečių skaičius.

Mokymo rinkiniui kurti ir rezultatams tikrinti buvo sukurta paprasta web aplikacija, apie kurią parašysiu trečiame įraše. Kol kas užteks tik bendros informacijos. Apmokytam modeliui buvo pateikta dvidešimt tūkstančių kaladėlių, kuriose jis turėjo ieškoti pastatų. Štai pavyzdinis rezultatas:

Viršutinėje dalyje matome ortofoto kaladėlę (apibrėžtą punktyrais), kurioje ieškoma pastatų. Žaliai pažymėti OpenStreetMap jau pažymėti pastatai (šios informacijos robotas atpažinimo metu neturi).

Po ortofotografija yra dvi kaladėlės – roboto darbo rezultatai. Kairėje pusėje esančioje kaladėlėje yra nuotraukos segmentacijos rezultatas: kiekvienam taškui paskaičiuota tikimybė, kad jame yra pastatas. Kuo taškas rausvesnis, tuo didesnė tikimybė, kuo baltesnis – tuo mažesnė. Dešinėje kaladėlėje yra išrinkti tik taškai, su didele pastato buvimo tikimybe – tai yra šio etapo galutinis rezultatas. Kaip matome, atpažinti pastatai yra apvalūs. Tai pasekmė to, kad modelis pastato kraštus atpažįsta su vidutine tikimybe. Norint tokius duomenis naudoti automatiniam geometrijos (pastato formos) identifikavimui, reikėtų pritaikyti papildomą algoritmą, kuris iš tokio „apvalaus“ daikto sukurtų „kampuotą“ pastatą. Tai yra netrivialu, o gal net ir neįmanoma, kol turime dabartinę atpažinimo kokybę.

Kaip ten bebūtų, pirmam tikslui – trūkstamų pastatų identifikavimui ir nebeegzistuojančių pastatų aptikimui – šito pilnai užtenka. Pavyzdžiui, patikrinęs ~20000 kaladėlių aplink Labanorą, robotas iš karto galėjo atmesti ~95% kaladėlių, kur jis nerado jokių pastatų. Taigi net rankiniu būdu peržiūrint rezultatus, sutaupoma ~95% laiko, nes nebereikia tikrinti kaladėlių, kuriose yra tik miškai, vanduo, pievos, pelkės ar keliai.

Aukščiau pateiktoje nuotraukoje matome, kad robotas visgi nerado pietvakariuose nuo viršutinio pastato esančio pastato (tiksliau rado nepakankamai užtikrintai). Ir tas trūkstamas pastatas turėjo tikimybę panašią į automobilį, stovintį greta apatinio aptikto pastato. Taigi „false negative“ problema yra, tiesa, lyg ir nedidelė. Esant tokiai situacijai kaladėlė įtraukiama į mokymosi aibę, kad per kitą mokymąsi robotas išmoktų aptikti tokį pastatą (ir neaptikti automobilio).

Yra ir „false positive“:

Čia matome, kad robotas neteisingai kaip pastatą identifikavo kai kurias kelio atkarpas, arba tiltą:

Taip pat problemų kol kas kyla ir su kai kuriais objektais ant žemės (polietileninė plėvelė ant lysvių(?) kaladėlės viduryje:

Kadangi robotas nepavargsta, jam neatsibosta, neišblėsta dėmesys, o ir kontrastas jam mažiau svarbus, jis be problemų randa pastatus, kuriuos žiūrint akimis galima ir praleisti:

Taigi rezultatai geri, atsižvelgiant į pirmą tikslą: aptikti trūkstamus ir nebeegzistuojančius objektus. Tikiuosi, kad neteisingi aptikimai beveik dings dar geriau apmokius modelį.

Modelio apmokymas

Peržiūrint rezultatus atrenkamos kaladėlės mokymuisi. Tai ir „positive“ kaladėlės – su įvairių formų, spalvų pastatais, ir „hard negative“ kaladėlės – kuriose pastatų nėra, bet modelis juos ten aptinka. Į mokymosi aibę neįtraukiamos kaladėlės, kur pastato matosi tik kampas, arba kur aš pats negaliu pasakyti, kokia yra pastato tiksli geometrija arba apskritai, ar yra pastatas ortofotografijoje.

Pats apmokymas turėtų būti daromas naudojant GPU (Grafinius procesorius), bet, kadangi tokio neturiu, kol kas mokau naudodamas paprastą CPU. Dėl GPU nenaudojimo apmokymas yra ~10 kartų lėtesnis, tai su ~1000 mokymosi kaladėlių ir 15 epochų modelis mokėsi apie savaitę. Ateity reikės galvoti kažką gudresnio.

Geometrijos aptikimas

Dabartinis aptikimo rezultatas neleidžia pakankamai tikslai identifikuoti pastatų geometrijos. Paklaida tiesiog per didelė (pabandykite nežiūrėdami į ortofotografiją, vien iš tikimybinių paveiksliukų identifikuoti, koks turėtų būti pastatas, t.y. kur ir kokie turėtų būti pastato kampai). Su kiekvienu nauju mokymusi su didesniu kaladėlių skaičiumi, tikimybinis pastato šablonas tikslėja, bet klausimas, kiek jis tikslės. Gali būti, kad tiesiog ORT10LT nuotraukos yra nepakankamai detalios. Tarkime čia naudojamos 18 mastelio nuotraukos, o kolegos užsienyje gali džiaugtis 19 mastelio ortofotografijomis. Taigi dar reikia mokytis ir žiūrėti, kas gausis.

Turint tikslesnius šablonus reikės rašyti algoritmą vektorinės pastato geometrijos kūrimui iš rastro (jei niekas kitas tokio algoritmo neparašys). Minčių, kaip tą padaryti galima rasti Microsofto pristatyme.

Kol kas tiek. Kitame įraše papasakosiu, koks sukurtas robosato „apvalkalas“ patogesniam mokymo aibės kaupimui ir rezultatų naudojimui.

Share

Mašininis mokymasis I: reikalavimai

Prieš du mėnesius buvo rašyta apie Mapbox sukurtą atvirą ortofotografijų atpažinimo programinę įrangą „Robosat“.

Robosat

Tai mašininio mokymosi, gilaus mokymosi (angl. deep learning) priemonė, skirta spręsti nuotraukų segmentavimo (angl. image segmentation) uždavinį. Čia patikslinsiu, kad nuotraukų analizę (angl. computer vision) grubiai galima būtų skirstyti į du tipus:

  • objektų aptikimas – galimybė nurodyti, kad „štai šiame nuotraukos stačiakampyje yra objektas X“,
  • segmentavimas – tai irgi objektų aptikimas, bet nuotraukos taško lygmenyje, t.y. nurodymas, kad „štai šitame pateiktos nuotraukos taške yra objektas X“ (paprastai aptiktas X objektas identifikuojamas daugiau nei viename nuotraukos taške, rezultato pavyzdį matote aukščiau pateiktoje iliustracijoje, kur identifikuojami pastatai, keliai ir medžiai).

Toks ortofotografijų segmentavimas leidžia spręsti tokius uždavinius:

  1. identifikuoti, kad kažkuriame Lietuvos segmente (ortofotografijos kvadratėlyje) yra ar nėra kažkokių objektų, tarkime pastatų,
  2. identifikuoti objektų geometrijas (formas).

Kaip tai pagerintų Lietuvos žymėjimo situaciją, lyginant su dabartine?

Pirmas punktas (objektų aptikimas) leidžia robotui duoti patikrinti atnaujintas ortofotografijos kaladėles (pvz. trečdalį Lietuvos) ir tada žmogų nukreipti tik į tas vietas, kur aptikti nepažymėti objektai (arba kur objektas pažymėtas, bet ortofotografijoje jo nebesimato). Taigi žmogus vis tiek turi atlikti žymėjimo darbą, bet jam nebereikia „ieškoti“ objektų žymėjimui. Pavyzdžiui rasti pastatus dideliuose retai gyvenamuose plotuose yra ne tokia jau ir paprasta užduotis – reikia peržiūrėti labai didelį plotą, o kai analizuojamame regione norimų objektų jau yra nemažai pažymėta, žmogaus dėmesys atbunka ir daroma nemažai klaidų (praleidžiami skirtumai tarp ortofotografijų ir sužymėtų objektų). Taipogi, kai objektus aptinka robotas, tai galima tikėtis tolygaus (pilno) objekto sužymėjimo visame apdorotame regione (pvz. Lietuvoje), t.y. galima tikėtis, kad bus sužymėti beveik visi objektai, o ne taip, kaip yra dabar – sužymėti tik tie plotai, kurie kažkam kažkodėl pasirodė įdomūs.

Antras punktas (objektų geometrijos identifikavimas) leistų dar daugiau – robotas galėtų (galbūt su žmogaus patvirtinimu) pats sužymėti (ar ištrinti) objektus.

Kas įmanoma, kas neįmanoma, kokios realios galimybės ir problemos, negalima atsakyti nepadarius bandymo su Lietuvoje naudojamomis Nacionalinės Žemės Tarnybos ortofotografijomis (ORT10LT). Atsakyti negalima, nes rezultatai labai priklauso nuo konkretaus ortofotografinio žemėlapio savybių: spalvų, rezoliucijos, analizuojamo objekto savybių (skirtingose šalyse skirtingi pastatai) ir pan. T.y. negalima tiesiog remtis užsienio rezultatais.

Kad tai būtų išsiaiškinta, jau beveik du mėnesius vykdomas bandomasis robosat naudojimas aplink Labanorą. Apie rezultatus parašysiu kitame įraše.

Share

Žymėtojai 2018-03

Tai kas ir kur žymi Lietuvoje? Ogi pasirodo pakankamai daug skirtingų žmonių! Vieni žymi aplink savo gyvenimo vietą, kiti pagal kažkokias kitas žymėjimo schemas.

Lietuvos žymėtojai 2018-03

Žemėlapis pagamintas padalinus Lietuvą į šešiakampius, tada paskaičiavus, kiek kiekvienas žymėtojas tame šešiakampyje yra paskutinis keitęs tašku, linijų ir poligonų. Kiekviename šešiakampyje vaizduojamas didžiausią skaičių gavęs žymėtojas.

P.S. Tai grubus laisvalaikiui pagamintas vaizdavimas. Jei kas nepateko į žemėlapį, tai nereiškia, kad jūsų indėlis nesvarbus. Juk nupaišome didelį mišką ir gauname tūkstančius objektų, o nupaišome 50 stovyklaviečių – gauname 50. Ir sunku pasakyti, kas realiai vertingiau 🙂

Share

Narystė asociacijoje „Atvirasis žemėlapis“ ir parama

Narystė

Po truputį susidėlioja asociacijos reikalai. Tai dabar jau galime paskelbti, kaip galite tapti asociacijos nariu. Būnant asociacijos nariu jūs neįgaunate jokių prievolių (nėra jokių mokesčių) ar privilegijų. Tiesiog esate kartu su kitais, jei norite – dalyvaujate kasmetiniuose susitikimuose ir pan. Nariu tapti gali bet kas, kas tik nori. Išstoti galėsite bet kada, tokiu pačiu būdu, kaip ir įstojote.

Kadangi į asociacijos narių sąrašą reikia įvesti tikrą realų vardą ir pavardę, todėl mums reikia kažkokiu būdu jį patikrinti. Tai paprasčiausias variantas – dalyvauti kuriame nors susitikime, kuriame dalyvauja ir kas nors iš asociacijos „Atvirasis žemėlapis“ valdybos, tada užtenka tiesiog parodyti savo dokumentą su vardu ir pavarde, na ir, žinoma, išreikšti norą tapti nariu.

Kitas variantas, parašyti prašymą tapti nariu ir jį pasirašius savo elektroniniu parašu išsiųsti asociacijos adresu. Tikslią instrukciją kaip tapti asociacijos nariu rasite asociacijos puslapyje.

Parama

Finansinė parama skirta mokesčiams už asociacijos turimus domeno vardus, serverių nuomą, konferencijų/hackatonų ir pan. organizavimą.

Parama niekaip nesusijusi su naryste. T.y. galite remti asociaciją nebūdami nariu, galite būti nariu ir neremti finansiškai. Žodžiu tai visiškai atskiri ir nepriklausomi dalykai.

Jei norite asociacijai skirti savo GPM 2% paramą, asociacijos puslapyje rasite instrukciją, kaip tai padaryti.

Share

OpenStreetMap bendravimo kanalai Lietuvoje

Atvirojo žemėlapio (angl. OpenStreetMap) projektas įkurtas 2004m. Anglijoje. Gana greitai pirmi duomenys atsirado ir Lietuvoje, taigi greitai (per kelis metus) atsirado ir Lietuvos žymėtojai. Kiekvienas žymėjo atskirai, bendraujama buvo tik su tais, ką pažįsti „gyvenime“ arba per viso pasaulio OpenStreetMap bendravimo kanalus.

2008m. buvo sukurtas pirmas grynai Lietuvos OpenStreetMap bendravimo kanalas – e-pašto sąrašynas talk-lt. Sąrašynai, kaip internetinio bendravimo technologija buvo sukurti labai senai. Jų privalumas tas, kad naudoti gali bet kas, kas tik turi elektroninį paštą. Veikimas labai paprastas, nurodai savo e-pašto adresą ir tada į jį gauni laiškus iš visų rašančių į sąrašyną. Kai nori parašyti į sąrašyną, tiesiog rašai paprastą laišką į sąrašyno adresą ir tavo laišką gauna visi, prisijungę prie konferencijos/sąrašyno.

Bet bėgant metams, populiarėjo kiti/naujesni bendravimo būdai. Kažkuo jie geresni, kažkuo blogesni. Vieniems patinka vieni bendravimo būdai, kitiems – kiti. Tai logiška, mes gi visi skirtingi.

Ne kartą teko kalbėti su žmonėmis ar gauti laiškų apie tai, kad norisi kokio nors kito/kitokio bendravimo kanalo. Taigi ta proga buvo sukurta trumputė apklausa, kuria bandoma išsiaiškinti, koks realus kitų bendravimo kanalų poreikis, ir, jei jis yra, kokie konkrečiai tai turėtų būti kanalai.

Taigi nepagailėkite kelių minučių ir užpildykite šią anketą:

http://apklausa.lt/f/openstreetmap-komunikacija-lietuvoje-mk8apw2.fullpage

Užtruksite tikrai tik minutę. Atsakymai anonimiški. Ir atsakymai mums tikrai labai svarbūs!

Atsakymų lauksime iki kovo pabaigos ir tada bandysime apibendrinti rezultatus.

Ačiū!

Share