Deep Learning kann zum Automatisieren der manuellen Extraktion von Features aus Bilddaten verwendet werden. Mit vortrainierten ArcGIS-Modellen ist es nicht mehr notwendig, dass Sie große Datasets, beträchtliche Rechenleistung und Wissen und Kompetenz im Umgang mit Deep Learning in vollem Umfang selbst bereitstellen müssen. Diese Modelle wurden an verschiedensten geographischen Daten trainiert und funktionieren in unterschiedlichen Regionen. Die vortrainierten ArcGIS-Modelle sind in ArcGIS Living Atlas of the World für alle Benutzer mit einem ArcGIS-Konto verfügbar. Im folgenden Workflow wird das Modell "Car Detection – USA" zum Identifizieren von Fahrzeugen in hochauflösenden Drohnen- und Luftbildern verwendet.
Anforderungen
Damit Sie diesen Workflow durchführen können, müssen die folgenden Voraussetzungen erfüllt sein:
- Luftbilder, an denen das Modell ausgeführt werden soll.
Hinweis:
Die Luftbilder können Sie bei OpenAerialMap herunterladen.
- Da Deep Learning rechenintensiv ist, wird für die Verarbeitung großer Datasets die Verwendung einer leistungsstarken GPU empfohlen.
Inferenzierung mit vortrainierten Modellen
In den folgenden Abschnitten werden die einzelnen Prozesse bei der Inferenzierung mit einem vortrainierten ArcGIS-Modell beschrieben.
Import der Python-Bibliotheken
Importieren Sie die folgenden Python-Bibliotheken:from arcgis.gis import GIS
from arcgis.learn import detect_objects
from arcgis.raster.analytics import copy_raster
gis = GIS("home")
Hinzufügen der Daten und des Modells
Zum Hinzufügen Ihres Datasets zu Ihrem Notebook gibt es zwei Methoden.
Die erste Methode besteht darin, die Luftbilddaten in Ihren Notebook-Workspace hochzuladen, sie in die Codezelle einzufügen und die Funktion copy_raster() auszuführen, um die Daten zu extrahieren.dataset = "/arcgis/home/Aerial imagery.tif"
imagery = copy_raster(input_raster=dataset, output_name="Aerial_imagery", raster_type_name="Raster Dataset")
Die zweite Methode besteht darin, die Luftbilddaten als gehosteten, Bilddaten-Layer Ihrem Portal hinzuzufügen und den Bilddaten-Layer über seine Element-ID Ihrem Notebook hinzuzufügen.imagery = gis.content.get("<imagery-layer-item-id>")
Hinzufügen des Deep-Learning-Pakets
Sie können das vortrainierte Modell "Car Detection – USA" aus dem ArcGIS Living Atlas herunterladen. Nachdem Sie das Modell heruntergeladen haben, fügen Sie es als Element Ihrem Portal zu und greifen über seine Element-ID in Ihrem Notebook darauf zu.model = gis.content.get("<deep-learning-package-item-id>")
Ausführen des Modells
Um das vortrainierte Modell in Ihrem Notebook auszuführen, verwenden Sie das Modul detect_objects in arcgis.learn. Dieses Modul verwendet Ihre Bilddaten als Eingabe und erkennt und zählt die darin vorhandenen Fahrzeuge.
Hinweis:
Die Performance dieses Modells können Sie verbessern, indem Sie die Argumente des Modells mit variierenden Werten erweitern, bis die Ausgabe Ihren Wünschen entspricht:
model_arguments = {
"padding": "100", # The number of pixels at the border of image tiles from which predictions are blended for adjacent tiles. To smooth the output while reducing artifacts, increase the value
"batch_size": "16", # Change batch size as per GPU specifications
"threshold": "0.5", # Get detections greater than 50% confidence
"tile_size": "224", # The width and height of image tiles into which the imagery is split for prediction
}
Hinweis:
Wenn eine GPU konfiguriert wurde, dann können Sie einen Kontext in der Methode detect_object() festlegen, um die GPU-Umgebung festzulegen.context = { "processorType": "GPU" }
num_cars = {}
detected_cars = detect_objects(
input_raster=imagery,
model = model,
output_name = "detected_cars",
)
num_cars[imagery.name] = len(detected_cars.query(as_df=True))
Modellergebnisse
Abschließend können Sie, nachdem Sie Ihr Modell ausgeführt haben, die Ausgabe von num_cars anzeigen:print(f"Number of cars is {num_cars}.")