Przejdź do treści
Wróć do bloga
AI Segmentation
QGIS
Poradnik

Jak automatycznie wykrywać obrysy budynków w QGIS

0:00 / 0:00
Jeden obszar, jedno słowo, 848 budynków. Rzeczywiste przetwarzanie, przyspieszone 3x, bez wycięć.

Przeprowadziłem automatyczne wykrywanie nad strefą centralnego Paryża i w jednym przebiegu otrzymałem 635 poligonów. Decyzja, które 82 zachować, zajęła więcej czasu niż samo wykrywanie, a ten drugi etap pomija niemal każdy poradnik.

Dense Parisian city blocks before and after automatic building detection (after)
Dense Parisian city blocks before and after automatic building detection (before)
ImageryDetected
Przeciągnij, aby porównać
One automatic pass over central Paris, on Google Satellite imagery. Every polygon gets its own colour so neighbours stay separate. Drag the handle to compare.

W skrócie. Aby automatycznie wykrywać obrysy budynków w : zainstaluj plugin do wykrywania AI z menedżera pluginów, wczytaj zobrazowanie, narysuj strefę, nazwij obiekt i uruchom wykrywanie. Otrzymasz poligonowy layer w CRS projektu. Następnie przefiltruj surowy wynik według pewności i powierzchni, bo duża część tego, co wraca, nie przedstawia budynku.

Czym jest obrys budynku

Obrys budynku w miejscu, gdzie styka się on z gruntem, przedstawiony jako płaski poligon. Nie dach, nie działka, nie punkt adresowy.

To ma tu znaczenie, bo zobrazowanie wykonane pionowo pokazuje dach. W przypadku pięciopiętrowej kamienicy haussmannowskiej sfotografowanej niemal nadirowo przesunięcie jest niewielkie. W przypadku wieżowca już nie. Warto to wiedzieć, zanim obiecasz komuś layer obrysów.

Najpierw sprawdź otwarte zbiory danych

W wielu zadaniach nie musisz niczego wykrywać.

Three panels of the same dense Luanda neighbourhood on Google Satellite imagery, with building footprints in green. OpenStreetMap shows none, Microsoft covers most, Google Open Buildings covers nearly all.
The same 1 km² of Luanda, on Google Satellite imagery. OpenStreetMap maps no buildings here, Microsoft finds 3,140, Google Open Buildings 4,468. Over a dense African neighbourhood the dataset you reach for decides whether you get everything or nothing.

Wczytaj jeden z nich na swoje zobrazowanie. Przechodzisz dalej dopiero, gdy pokrycie ma luki, aktualność danych jest niewłaściwa albo obrysy muszą pasować do konkretnej ortofotomapy przekazanej przez klienta.

Przy mniej niż pięćdziesięciu budynkach narysuj je

Zdigitalizuj je ręcznie. Za darmo, dokładnie i przy takiej liczbie nadal zrobiłbym to sam. Najpierw włącz przyciąganie (Project -> Snapping Options, wierzchołek i segment, włączona edycja topologiczna), bo spędzisz popołudnie na usuwaniu drobnych szczelin.

Około sześćdziesiątego budynku zaczynasz iść na skróty, których nigdy nie obrałbyś przy szóstym, i tego nie zauważasz. Jest już w layerze.

Sposób automatyczny

Pluginem jest tutaj AI Segmentation, który współtworzymy z moim wspólnikiem w TerraLab, więc czytaj ten fragment, pamiętając, czyje narzędzie opisuję. Instaluje się go z menedżera pluginów jak każdy inny: bez ręcznego pobierania, bez środowiska Pythona, bez dedykowanej karty graficznej, bo model działa na naszych serwerach. Windows, macOS i Linux.

Narysuj strefę, wpisz buildings, kliknij Detect. To cały prompt, w wybranym języku, jeśli wolisz. Wyniki napływają kafelek po kafelku jako jeden poligonowy layer w CRS projektu.

The AI Segmentation panel in QGIS with the Semi-Auto and Automatic switch
Automatic mode: pick the imagery layer, draw a zone, name the object.

Jedynym ustawieniem, którego warto się nauczyć, jest precyzja, czyli rozmiar kafelka. Małe kafelki dają modelowi dokładny wgląd, którego potrzebują małe obiekty. Duże kafelki dają mu kontekst, którego potrzebuje działka rolna. Kafelki są też jednostką rozliczeniową: jeden kredyt za każdy. Każde konto otrzymuje co miesiąc darmowy limit, bez podawania karty, a Pro go zwiększa. Wykrywanie działa na europejskich serwerach, nie trenujemy na Twoim zobrazowaniu, a jeśli nic nie może opuścić Twojego komputera, dostępny jest mały model lokalny.

Następnie panel prowadzi Cię przez trzy kroki, zanim cokolwiek trafi do layera: filtruj to, co chcesz Keep, Correct to, co model pominął, i wybierz wynikowe Shapes. Kompletny przewodnik omawia wszystkie trzy. Pierwszy z nich decyduje o powodzeniu zadania, więc poświęcamy mu następną sekcję.

Filtrowanie to cała praca

Surowy wynik wykrywania to zbiór poligonów kandydujących z ocenami pewności. Na gęstym zobrazowaniu większość jest mała i niepewna. Ten paryski przebieg wyeksportowałem przy obu filtrach ustawionych bardzo szeroko, więc każdy kandydat trafił do layera: 635 poligonów na 1.18 km².

1 m²101001 00010 000 m²50 m²
Every one of the 635 detections, binned by area on a log scale. Two humps: noise under 5 m², real buildings above 160 m². The 50 m² line falls in the valley between them, which is why it is not an arbitrary number. Median 3.2 m², largest 13,528 m², median confidence 0.26.

Połowa wyników jest mniejsza niż miejsce parkingowe: wywietrzniki, świetliki, obudowy klatek schodowych, szopy na dziedzińcach. Prawdziwe obiekty na zobrazowaniu, poprawnie obrysowane, ale nie to, co ktokolwiek ma na myśli, mówiąc o obrysie budynku.

Więc filtruj. Przesuń oba suwaki w panelu albo wykonaj tę samą pracę w tabeli atrybutów za pomocą Select by Expression:

"area_m2" >= 50 AND "score" >= 0.5

Pozostaje 82 poligony z 635, obejmujące 222,338 m² z łącznych 263,658 m². Zamiast wierzyć mi na słowo w sprawie progów, przesuń je samodzielnie. Zielone przetrwają Twój filtr, białe nie.

Aerial imagery of dense Parisian blocks with detected building polygons drawn over it

82 / 635polygons kept (13%)

84%of the built area (222,338 m²)

The same 635 detections the attribute table holds. Drop the confidence to zero and the courtyard sheds and skylights come back.

Obserwuj drugą liczbę, gdy przesuwasz pierwszą. Odrzucenie 87% poligonów kosztuje 16% powierzchni. Reszta to szum, który i tak usunąłbyś ręcznie, jeden obiekt po drugim, zastanawiając się, czy narzędzie jest w ogóle dobre.

Dostosuj oba parametry do zadania. W przypadku przeglądu hal przemysłowych możesz podnieść minimalną powierzchnię do 200 m². Przy mapowaniu osiedli nieformalnych 50 m² odrzuca prawdziwe domy, więc zejdź do 15 i oprzyj się bardziej na ocenie pewności.

Jak wygląda czysty wynik

Paryż to trudny przypadek. To samo narzędzie w zabudowie jednorodzinnej około 10 km na zachód:

Detached and semi-detached houses in a Paris suburb, each house filled with its own colour
Detached housing, review filter on. One polygon per house, almost nothing to throw away.

85

median polygon area

Paris run: 3.2 m²

0.79

median confidence

Paris run: 0.26

251polygons

kept, out of 251 returned

Paris run: 82 out of 635

To samo narzędzie, to samo miasto, nic do odrzucenia. Zmieniła się tkanka zabudowy, nie model.

Gdzie to się psuje: gęsta, ciągła zabudowa

Close view of Haussmann blocks, each block one coloured polygon following the street edge with courtyards cut out
The outline follows the street edge precisely and cuts out the courtyards. What it does not do is split the block into individual addressed buildings.

Każdy poligon odwzorowuje obrys zabudowy całego kwartału, przylegając do linii ulicy i prawidłowo wycinając dziedzińce. Dobrze sprawdza się przy powierzchni zabudowanej lub powierzchni nieprzepuszczalnej, ale nie wtedy, gdy potrzebujesz jednego poligonu na adres. Żaden model czytający pionowe zobrazowanie nie znajdzie wspólnej ściany między dwoma połączonymi budynkami, bo z góry nie ma tam nic, co można zobaczyć.

Dlatego nie użyłbym automatycznego wykrywania do layera z jednym poligonem na adres w historycznym centrum miasta. Dane katastralne i ręczna korekta sprawdzają się tam lepiej.

Czyszczenie geometrii

Trzy natywne narzędzia QGIS porządkują layer obrysów, a kolejność ma znaczenie, bo Simplify przesuwa wierzchołki, które właśnie wyprostowałeś.

  1. Simplify, tolerancja 0.5 m na zobrazowaniu lotniczym. Mocno ogranicza liczbę wierzchołków, nie przesuwając granicy w sposób, który dałoby się zauważyć.
  2. Orthogonalize. Prostuje kąty zbliżone do prostych. Sięgnij po nie przy otwartych danych lub pracy odrysowanej ręcznie, gdy nic wcześniej ich nie wyprostowało.
  3. Delete holes, tylko jeśli chcesz mieć pełne obrysy. Nie w wyniku paryskim: te otwory to dziedzińce i są prawidłowe.

Na wykrytym layerze krok 2 prawie nic nie zmienia. Zmierzyłem to zamiast zakładać, uruchamiając Orthogonalize na 190 wykrytych budynkach i porównując wszystkie 1,845 narożników przed i po.

87.9%

corners already within 1° of square

before running anything

87.9%

after Orthogonalize

the same 1,845 corners

1.7cm

median vertex shift

9.1 cm at the worst

Close view of detected building outlines on aerial imagery, corners meeting at right angles
The same detections, close in. The corners arrive square, so the cleanup step has nothing left to snap.

Te 12%, które nie są prostopadłe, to dołączone tarasy. Spójrz na schodkową krawędź biegnącą środkiem kwartału. Żadne narzędzie do prostowania narożników tego nie naprawi, bo te uskoki odwzorowują prawdziwą linię dachu, a nie błąd modelowania.

Którą metodę wybrać

Otwarte zbiory danychRęczna digitalizacjaAutomatyczne wykrywanie
KosztBezpłatnieBezpłatnieDarmowy poziom, potem płatny
KonfiguracjaKilka minutBrakKilka minut
Dobre doObszarów z dobrym pokryciemMniej niż ~50 budynkówOd setek do tysięcy
Pasuje do Twojego zobrazowaniaNieTakTak
Spójne w całym zespoleTakNieTak
Gęsta, ciągła zabudowaRóżnieTakTylko obrysy kwartałów
Źródło, które możesz wskazaćZbiór danych i data wykonaniaTyTwoje zobrazowanie, z oceną pewności

Pytania, które słyszę

Czy działa na zobrazowaniu z drona? Lepiej niż na zobrazowaniu satelitarnym. Rozdzielczość terenowa ma większe znaczenie niż źródło: ortofotomapa 5 cm daje czystsze granice i wyższą pewność niż scena satelitarna 30 cm.

Czy potrzebuję GPU? Nie. Oba tryby domyślnie działają na naszych serwerach, a mały model lokalny działa na własnym CPU, wolniej i mniej dokładnie. Jeśli chcesz, żeby wszystko zostało na Twoim komputerze, Geo-SAM i samgeo są bezpłatne i dobre, ale wymagają karty NVIDIA.

Ile kosztuje jedno uruchomienie? Jeden kredyt na kafelek w trybie automatycznym, jeden kredyt na zapisany obiekt w trybie półautomatycznym. Każde konto otrzymuje co miesiąc darmowy limit, a model lokalny nie kosztuje absolutnie nic.

Try it free in QGIS, no card needed