Deep-Learning-Modelle sind in der Regel groß und erfordern eine beträchtliche Rechenleistung. Durch Integration des Trainings von Modellen in ArcGIS API for Python können Sie Deep-Learning-Modelle erstellen, die sowohl kompakt als auch für die mobile Bereitstellung geeignet sind.
In diesem beispielhaften Notebook-Workflow wird das Modell "Multi-Task Road Extractor" zur Extraktion eines Straßennetzes aus Satellitenbildern verwendet.
Anforderungen
Damit Sie diesen Workflow durchführen können, müssen die folgenden Voraussetzungen erfüllt sein:
- Zugriff auf das Training-Dataset, bestehend aus SpaceNet-Daten für Straßenmittelachsen in der Region Paris.
Hinweis:
Wenn Sie nicht auf das Training-Dataset zugreifen können, wird Raster Server benötigt, um geeignete Trainingsdaten im erforderlichen Format zu generieren.
- Deep Learning ist rechenintensiv. Daher wird empfohlen, eine Advanced-Notebook-Runtime mit GPU-Unterstützung zu verwenden.
Import der Python-Bibliotheken
Importieren Sie die folgenden Python-Bibliotheken:from arcgis.gis import GIS
gis = GIS("home")
import os, zipfile
from pathlib import Path
from arcgis.learn import prepare_data, MultiTaskRoadExtractor
Hochladen der Daten in Ihren Workspace
Laden Sie das Dataset in Ihren Notebook-Workspace unter Files als .zip-Datei mit beschrifteten Bildschnipseln im Ordner images hoch.#Adding zipped file from workspace
filepath = training_data = gis1.content.get('itemID')
filepath = training_data.download(save_path='/arcgis/home/input', file_name=training_data.name)
filepath
assert os.path.exists(filepath) == 1
#Extract zip
with zipfile.ZipFile(filepath, 'r') as zip_ref:
zip_ref.extractall(Path(filepath).parent)
#Get the data path
output_path = Path(os.path.join(os.path.splitext(filepath)[0]))
Vorbereiten Ihrer Daten
Mit der Funktion prepare_data() in der ArcGIS API for Python werden Daten für Deep-Learning-Workflows vorbereitet. Diese Funktion liest Trainingsgebiete und automatisiert den Prozess der Datenvorbereitung, indem verschiedene Transformationen und Erweiterungen auf die Trainingsdaten angewendet werden. Diese Erweiterungen ermöglichen das Training der Modelle mit begrenzten Daten und verhindern die Überanpassung dieser Modelle.data = prepare_data(
path=output_path,
batch_size=4,
chip_size=512
)
data.classes
Informationen zu den Parametern der Funktion prepare_data() finden Sie in der arcgis.learn-API-Referenz.
Visualisieren der Daten
Nachdem Sie Ihre Daten vorbereitet haben, können Sie die Funktion show_batch() verwenden, um Trainingsgebiete aus ihnen zu visualisieren.data.show_batch(alpha=1)
Laden der Modellarchitektur
Das Framework "Multi-Task Road Extractor" in arcgis.learn unterstützt zwei Architekturen, die mithilfe des Parameters mt1_model festgelegt werden können. Der Parameter kann entweder auf die Architektur linknet oder hourglass festgelegt werden.
Modellspezifische erweiterte Parameter können optional in dieser Phase festgelegt werden:
- gaussian_thresh: Legt den Gauß'schen Schwellenwert fest, mit dem Sie die erforderliche Straßenbreite einstellen können.
- orient_bin_size: Legt die Abschnittsgröße für Ausrichtungswinkel fest.
- orient_theta: Legt die Breite der Ausrichtungsmaske fest.
model = MultiTaskRoadExtractor(data, mtl_model="hourglass")Berechnen der Lernrate
ArcGIS API for Python verwendet die Lernratensuche von fast.ai, um die optimale Lernrate für das Training Ihrer Modelle zu finden. Verwenden Sie die Methode lr_find(), um die optimale Lernrate zum Trainieren eines zuverlässigen Modells zu finden. Nachdem Sie mit der ersten Ausführung Ihres Modells die Lernrate bestimmt haben, können Sie sie als festen Wert für weitere Ausführungen beim erneuten Trainieren des Modells übergeben.lr = model.lr_find()
#lr = 0.0005754 #from the first run
Modellanpassung
Die Methode fit() wird zum Trainieren Ihres Modells verwendet. Bei dieser Methode muss ein Wert für den Parameter "epoch" eingegeben werden. Eine Epoche definiert, wie oft das Modell am gesamten Training-Dataset trainiert werden soll. Innerhalb einer Epoche kann das Modell lernen und dann seine Gewichtungen basierend auf den Daten anpassen. Im folgenden Beispiel wird das Modell für drei Epochen zu Testzwecken ausgeführt.
Es wird empfohlen, mit 25 Epochen zu beginnen, um ein genaueres Modell für die Bereitstellung zu erhalten.
model.fit(3, lr=lr, early_stopping=True)Visualisieren der Ergebnisse
Um die Ergebnisse Ihres Modells in Ihrem Notebook zu überprüfen, können Sie die Methode show_results() verwenden, um die Vorhersagen Ihres Modells mit zufällig ausgewählten Überprüfungsbildern zu vergleichen.
model.show_results(rows=4, thresh=0.2)Speichern des Modells
Nachdem Sie die Genauigkeit Ihres trainierten Modells bestätigt haben, können Sie es zur späteren Bereitstellung speichern. Standardmäßig wird das Modell als .dlpk-Datei im Unterordner "Modelle" im Trainingsdatenordner gespeichert.
model.save('/arcgis/home/road_model_for_spacenet_data')Bereitstellen des Modells
Ihre gespeicherte .dlpk-Datei kann jetzt mit anderen Datasets bereitgestellt und für Ihre Organisation freigegeben werden. Weitere Informationen zur Verwendung einer .dlpk-Datei finden Sie unter Beispiel: Inferenzierung mit einem vortrainierten Modell.