Automatyczne znakowanie przejść dla pieszych oraz przejazdów rowerowych

Na prawdę super pracuje się na OSM bo znajdywanie danych do trenowania to pestka. A jakieś algorytmiczne zachowanie też bardzo prosto się dodaje bo OSM jest dosyć mocno przewidywalne (w zasadach mapowania).

1 Like

Tak z ciekawostki pokaże co widzi mniej więcej AI do klasyfikacji rodzaju przejścia. Po lewo obraz przed przetworzeniem, a po prawo, po. Zastosowałem zestaw filtrów które usuwają niepotrzebny szum i uwydatniają kontrast w okolicach pasów oraz je dodatkowo wyostrzają. Taki prosty zabieg bardzo pomaga w osiągnięciu przez AI dobrych rezultatów.

1 Like

Trochę przeraża mnie skuteczność tych rozwiązań. Ciekawe co takie Google potrafi mając Street View i inne dane.

2 Likes

To tylko dowodzi, że wielkie korporacje niekoniecznie mają przewagę jeśli chodzi o mapowanie z AI, jeśli jeden programista sam jest w stanie zrobić dużo lepsze rozwiązanie.

Grunt to podejście do tematu znając kontekst OSM oraz lokalne źródła danych. Czy w MS albo FB ktoś wpadłby na to, aby np. budynki nie trasować z OSM, a po prostu importować z rządowej bazy danych, z tym że zaprzęgając AI do weryfikacji?

5 Likes

Place zabaw są w BDOT10k. Mógłbym przygotować zestaw danych do weryfikacji z podziałem na np. powiaty. Format mógłby być np. GeoJSON. Geometria nie jest idealna, ale jest niezła. Mogę zdeduplikować z już otagowanymi w OSM

4 Likes

Jak chcesz możemy we 2 przerobić automatyczne budynki na automatyczne place zabaw. Deduplikacja i tak musiałaby być wykonana tuż przed dodaniem bo inaczej nie ma gwarancji że ktoś po prostu nie doda tego placu później. Na tą chwilę przydałby się jedynie ten json/geojson no i przygotowanie danych do ai, jeśli chcesz mogę ci dać dane do apki i pomożesz w klasyfikacji zdjęć. Fajnie jakby ten geojson był też automatyczny aby w przyszłości sam się aktualizował.

1 Like

Wykonałem kolejny test: Changeset: 139318941 | OpenStreetMap

Przytrafił się jeden bubel:

Node: 11081921266 | OpenStreetMap
Wygląda na jakiś traffic_calming, dodam danych treningowych z tej kategorii.

1 Like

Ok, jestem za :slight_smile:
Myślę, że najpierw warto to przemyśleć/przedyskutować.

Format danych

BDOT10k jest dostępne jako matrioszka-zip:

  • plik na Polskę (7.5GB)
  • w środku zipy na województwa (200-977MB)
  • w środku zipy na powiaty (2.3-87MB)
  • w środku dane w formacie SHP (shapefile)

Po rozpakowaniu całość ma 250GB.
@tomczk może tutaj pewnie więcej podpowiedzieć z doświadczenia z https://budynki.openstreetmap.org.pl/

Polecam dokument https://www.wodgik.katowice.pl/www/pobierz/VADEMECUM_UZYTKOWNIKA_BDOT10k.pdf

Place zabaw można znaleźć w warstwie BUSP (budowla sportowa), konkretnie BUSP06: plac gier i zabaw. Otagowane też RODZAJ=placGierIZabaw.
Dla Polski pliki BUSP mają 39MB w sumie.
Mogę przetworzyć te dane i dostarczyć w wybranym formacie.

Zgadzam się, że dobrze to zautomatyzować i deduplikować przed dodaniem.
Jedną opcją jest pobieranie całości np. raz na dobę, wypakowanie i przetworzenie. Dużo miejsca, ale od razu są dane do innych projektów.
Alternatywą jest rozpakowanie zipa w pamięci i pominięcie niepotrzebnych danych.

Mogę pomóc w klasyfikacji zdjęć.

Tagowanie w OSM

Częściowo już dodawałem place zabaw na podstawie BDOT10k w Changeset: 139172847 | OpenStreetMap
Poza leisure=playground można znaleźć też leisure=fitness_station oraz landuse=recreation_ground.
W przypadku Warszawy dużo placów zabaw nieotagowanych jest na terenie:

  • przedszkola
  • szkoły podstawowej
  • zamkniętych osiedli

Potencjalne można dawać access, ale w przypadku dodawania automatycznego ten tag pominąłbym.

Wyposażenie placu zabaw

Potencjalnym follow-upem jest dodawanie wyposażenie placu zabaw tagowanego za pomocą tagu playground. Można wyszukiwać na podstawie orto na terenie już otagowanych placów zabaw. Podejrzewam, że przynajmniej kilka rodzajów powinno być łatwo rozpoznawalnych z orto. Podobne zadanie jak rozpoznawanie małej architektury: ławek, leżaków, koszy itd.

Bardziej raz na miesiąc :D. Czy to jest aż tak często aktualizowane? Może po prostu użyjemy geoportoalowego WMSa który jest do publicznego użytku?

Nie trzeba by się bawić w te całe aktualizowanie, a kod na pobieranie z WMS jest już praktycznie gotowy.

Potencjalnie. Ale na tą chwilę takie coś byłoby ograniczone zasięgowo bo to trochę roboty a będzie wymagało high res orto, które nie jest dostępne w całej Polsce.

1 Like

Proszę - przenieście nowe tematy do innego wątku. Łatwiej będzie znaleźć i zorientować się w temacie. Ewentualnie jeden zbiorczy: “Pomysły na krabowanie” - i jak coś się wykrystalizuje to zakładać osobny, dotyczący już głębszych przemyśleń na nowy temat.

7 Likes

Kolejny test: Changeset: 139352469 | OpenStreetMap

Znacznie zoptymalizowałem całą aplikację, przejście całej Polski na 1 serwerze to będzie czas około 60 dni. Aplikacja ma już się ku ukończeniu :slight_smile:.

Zidentyifkowałem błąd który sprawiał niepoprawne przyłączanie do pobliskiego node:
Node: 5161323471 | OpenStreetMap
Node: 4268771856 | OpenStreetMap

Cały czas AI ma zwidy więc znowu dodam więcej danych, a jeśli i to tym razem nie pomoże to zwiększę granicę “pewności”.
Node: 11083819109 | OpenStreetMap
Node: 11083819157 | OpenStreetMap
Node: 1113694497 | OpenStreetMap
Node: 1728784882 | OpenStreetMap
Node: 9111799340 | OpenStreetMap
Node: 11081921266 | OpenStreetMap

1 Like

Temat dla AI na poszukiwanie nie wprowadzonej infry rowerowej: łatwo znaleźć po znakach P-23 (rowerek). Raczej widoczne na orcie. Potrzebna tylko analiza, czy w sąsiedztwie wykrytego miejsca jest już otagowane coś rowerowe. Jeżeli nie, to AI zgłasza miejsce dla użytkowników dla zweryfikowania i wprowadzenia z orty.
Podobne zadanie jest na osmose ale tam dane pobierane są z mapillary i działa to od dość różnie.

1 Like

Kolejny test:

Trafiły się jedynie 2 buble rozpoznawcze ale nie znalazłem już żadnych błędów w logice złączeniowej.

Node: 11085645081 | OpenStreetMap
Node: 1558354242 | OpenStreetMap

Myśle, że można spokojnie wprowadzić warunek zeby nie dodawał przejść na rondach (tag junction=roundabout), raczej nie spotkałem się z sytuacją w Polsce żeby na rondzie było przejście

Dobry pomysł! Postaram się jednak jeszcze usprawnić AI bo najlepiej byłoby naprawić problem u źródła :slight_smile:

Zgadzam się, że będzie to rzadki przypadek.
Kontrprzykład (Plac Grunwaldzki w Szczecinie):


Źródło: Plac Grunwaldzki w Szczecinie – Wikipedia, wolna encyklopedia

1 Like

Kolejny test:

Teraz nie było już żadnych false-positive (również na danych testowych).
Aktualna wersja AI będzie w stanie zaimportować około ~88% wykrytych przejść.

Zdarzyło się 1 nieoptymalne przyłączenie: Node: 5188256013 | OpenStreetMap (jakiś błąd programistyczny, nie AI, już to analizuję).

Myślę, że dzisiaj będzie można odpalić import na jakiejś małej prędkości. Proponuję na start 300 przejść dziennie, a po jakimś czasie zwiększyć jeśli nie będzie żadnych ewidentnych bubli.

Opublikowałem kod:

Na tą chwilę program nie oznacza crossing=uncontrolled/traffc_signals, postanowiłem wyciąć tę część na rzecz kolejnego projektu. Będzie można wtedy na całą Polskę zaktualizować oznaczenia highway=crossing, a funkcjonalność klasyfikacji w tym samym AI co sprawdzanie egzystencji, dodawało trudności w uczeniu i pogarszało wyniki.

output

3 Likes

Kolejny test:

Znowu nie było żadnych false-positive :tada:.
Nie było też już żadnych błędów przyłączeniowych.
Aplikacja wydaje się być gotowa na powolne wdrażanie jej.

Wbrew pozorom to nie jest takie rzadkie. Trzeba tylko wiedzieć gdzie szukać. Tutaj przejście na rondzie w Bochni (trzeba przybliżyć żeby zobaczyć znak, nie mogłem złapać kąta)

Tutaj rondo-rynek w Skale (ogólnie rondo-rynki często będą miały przejścia, bo na wysepkę trzeba się jakoś dostać)