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

Wykop nie chce ze mną gadać, więc tu napiszę: na wrzuconym zdjęciu z Google są same pasy, brak linii zatrzymania dla pojazdów. Na zdjęciu satelitarnym linie zatrzymania już są, czyli coś było zmieniane. Czy są obecnie znaki pionowe - trudno stwierdzić.

Podoba mi się ten pomysł. Można to połączyć ze StreetComplete, żeby pytało o takie rzeczy i po potwierdzeniu wywalało ten tag.

2 Likes

Na granitowej kostce są. To się samo dość szybko usuwa, a frezować nie za bardzo nie można.

Parę false positive’ów:

changeset 144714804 (3/17):

changeset 144709198 (3/19):

Ewidentnie oszukuje się na strzałkach oznaczających dozwolone kierunki z danego pasa.

Dzięki, zapisałem na GitHub issues.

Aktualny plan jest taki, że kiedy bot skończy pierwszą iterację po Polsce, utworzę nową wersję modelu z poprawkami, i ponowię klasyfikacje na poprzednio wykrytych przejściach. Bot zapisuje wszystkie wykrycia do bazy wewnętrznej dzięki czemu przyszłe iteracje będą znacznie szybsze (nie będzie musiał szukać od zera). Oznacza to, że w nowej wersji bot doda poprzednio niepewne-pominięte przejścia, oraz usunie poprzednio błędnie dodane false-positives.

1 Like

To ja się trochę podepnę pod ten temat :slight_smile:

Wymyśliłem sobie, że fajnie by było porównać bazę znaków Mapillary z rzeczami oznaczonymi w OSM, tak aby wykrywać braki. Na pierwszy rzut chciałem właśnie przejściami dla pieszych się zająć.

No i dokładnie takie coś zrobiłem, dosyć prosty skrypt w Pythonie, pisany na kolanie i raczej jako PoC, ale może komuś się przyda, może ktoś postanowi go jakoś ulepszyć i tak dalej.

W skrócie działa w następujący sposób

  1. Pobiera kafelek danych z Mapillary
  2. Pobiera odrobinę większy obszar z Overpassa
  3. Dla każdego punktu z Mapillary szuka najbliższego punktu z Overpassa
  4. Jeśli dystans jest większy niż ustalona wartość wypluwa go do GeoJsona.
  5. Żeby zminimalizować false postivie’y sprawdza jeszcze w taki sam sposób lokalizacje (z gps i po pretwarzaniu) ze zdjęcia na którym dany znak jest widoczny, dodatkowo zdjęcia jednego usera ignoruję ze względu na masę sekwencji z totalnie błędnymi lokalizacjami.

Wynikowy geojson można sobie wrzucić w JOSM i przez plugin todo da się fajnie z tym pracować.

Oczywiście można przejścia dla pieszych zamienić na cokolwiek innego, lista rzeczy, które Mapillary oznacza jest dostępna na Mapillary API: FAQs także do zamiany jest information--pedestrians-crossing--g1 na coś innego i odpowiednio overpass_query, żeby łapał to co chcemy. :slight_smile:

Polecam pobierać po województwie (jest tam kawałek kodu za to odpowiedzialny) bo Mapillary często zwraca HTTP 400 / HTTP 500 z nie do końca znanych mi przyczyn, pobieranie przykładowo woj. śląskiego z zoom = 10 trwa jakieś 6 minut a i pobieranie wtedy jest bardziej stabilne.

No i dzięki niemu udało mi się około 1.5k przejść dla pieszych w Polsce dodać :slight_smile:

Kod na mapillary_crossing_osm.py · GitHub

Aktualizacja:

Podobne rzeczy można zrobić przykładowo w celu wykrycia nieotagowanych obszarów zabudowanych/niezabudowanych.

Podejście odrobine inne, bo dla każedego wykrytego punktu z Mapillary szukamy w pobliżu dróg o maxspeed=50/90, a jeśli takich brak to mamy potencjalnego kandydata do uzupełnienia.

Kod na mapillary_crossing_osm.py · GitHub

1 Like

Nie wiem czy było - mapilary ma w wielu miejscach ostatnie zdjecia z kilku lat wstecz - czyli dane mogą być nieaktualne, tak samo jak podkłady z geoportalu zdjeć lotniczych - ostatnio dodawalem odcinkowy pomiar oredkosci i podkład zdjęciowy był starszy niż ortofotomapa; nie wiem też jak wyglada sprawa z najnowszymi zdjeciami kiedy dana droga jest dosć czesto aktualizowana częstymi przejazdami nimi.

Jestem tego świadomy, dlatego skrypt ma założony filtr, że zwraca tylko detekcje wykryte ostatni raz po 2023 roku. Oczywiście żaden problem ustawić tam 2024 czy cokolwiek innego.

1 Like

O wow fajne i dobry pomysł :+1:

Tylko nie wiem skąd wziąć ten MAPILLARY_KEY :sweat_smile:

Ok mam: https://www.mapillary.com/developer

1 Like