En général, les modèles de Deep Learning sont volumineux et requièrent une puissance de calcul importante. En intégrant l’entraînement de modèles avec ArcGIS API for Python, vous pouvez créer des modèles de Deep Learning à la fois compacts et adaptés au déploiement mobile.
Dans cet exemple de processus de notebook, le modèle Multi-task Road Extractor (Extracteur de routes multitâche) est utilisé pour extraire un réseau routier de l’imagerie satellite.
Conditions requises
Pour effectuer ce processus, les conditions suivantes doivent être remplies :
- Vous devez disposer du jeu de données d’entraînement, constitué des données SpaceNet des axes médians de routes dans la région de Paris.
Remarque :
Si vous n’avez pas accès à ce jeu de données d’entraînement, vous devez disposer de Raster Server pour générer des données d’entraînement adéquates au format requis.
- Le Deep Learning sollicite d’importantes ressources de calcul, c’est pourquoi il est recommandé d’utiliser un runtime du notebook avancé avec prise en charge du GPU.
Importations de bibliothèques Python
Importez les bibliothèques Python suivantes :from arcgis.gis import GIS
gis = GIS("home")
import os, zipfile
from pathlib import Path
from arcgis.learn import prepare_data, MultiTaskRoadExtractor
Charger des données dans votre espace de travail
Chargez le jeu de données dans l’espace de travail de votre notebook dans Files, sous la forme d’un fichier .zip contenant des fragments d’image étiquetés dans un dossier nommé images.#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]))
Préparer vos données
La fonction prepare_data() dans ArcGIS API for Python prépare les données pour les processus de Deep Learning. La fonction lit les échantillons d’entraînement et automatise le traitement de préparation des données en appliquant différentes transformations et augmentations aux données d’entraînement. Grâce à ces augmentations, les modèles peuvent être entraînés avec des données limitées, ce qui évite le surajustement des modèles.data = prepare_data(
path=output_path,
batch_size=4,
chip_size=512
)
data.classes
Pour plus d’informations sur les paramètres de la fonction prepare_data(), reportez-vous à la rubrique Référence de l’API arcgis.learn.
Visualiser vos données
Une fois vos données préparées, vous pouvez utiliser la fonction show_batch() pour en visualiser des échantillons.data.show_batch(alpha=1)
Charger l’architecture du modèle
La structure Multi-task Road Extractor (Extracteur de routes multitâche) dans arcgis.learn prend en charge deux architectures qui peuvent être définies à l’aide du paramètre mt1_model. Ce paramètre peut être défini sur l’architecture linknet ou hourglass.
Les paramètres avancés spécifiques du modèle peuvent éventuellement être définis à cette étape :
- gaussian_thresh : définit le seuil gaussien, qui vous permet de définir la largeur de route requise.
- orient_bin_size : définit la taille de groupe des angles d’orientation.
- orient_theta : définit la largeur du masque d’orientation.
model = MultiTaskRoadExtractor(data, mtl_model="hourglass")Calculer la vitesse d’apprentissage
ArcGIS API for Python utilise l’outil de recherche de vitesse d’apprentissage de fast.ai pour trouver la vitesse d’apprentissage optimale pour entraîner vos modèles. Utilisez la méthode lr_find() pour rechercher la vitesse d’apprentissage optimale pour entraîner un modèle puissant. Une fois la vitesse d’apprentissage déterminée avec la première exécution de votre modèle, vous pouvez la transmettre sous forme de valeur fixe pour les exécutions suivantes de réentraînement du modèle.lr = model.lr_find()
#lr = 0.0005754 #from the first run
Ajustement du modèle
La méthode fit() est utilisée pour entraîner votre modèle. Avec cette méthode, un paramètre d’époque doit être indiqué en entrée. L’époque définit le nombre de fois où le modèle sera exposé à l’intégralité du jeu de données d’entraînement. Chaque époque permet au modèle d’apprendre et d’ajuster ses pondérations en fonction des données. Dans l’exemple suivant, le modèle est exécuté pour trois époques aux fins des tests.
Il est recommandé de commencer avec 25 époques pour obtenir un modèle plus précis pour le déploiement.
model.fit(3, lr=lr, early_stopping=True)Visualiser les résultats
Pour valider les résultats de votre modèle dans votre notebook, vous pouvez utiliser la méthode show_results() afin de comparer les prédictions de votre modèle aux images aléatoires de réalité de terrain.
model.show_results(rows=4, thresh=0.2)Enregistrer le modèle
Vérifiez la précision de votre modèle d’entraînement, puis enregistrez-le pour déploiement ultérieur. Par défaut, le modèle est enregistré en tant que fichier .dlpk dans le sous-dossier des modèles du dossier des données d’entraînement.
model.save('/arcgis/home/road_model_for_spacenet_data')Déployer le modèle
Votre fichier .dlpk enregistré peut maintenant être déployé avec d’autres jeux de données et partagé au sein de votre organisation. Pour plus d’informations sur l’utilisation d’un fichier .dlpk, reportez-vous à la rubrique Exemple : inférence à l’aide d’un modèle pré-entraîné.
Vous avez un commentaire à formuler concernant cette rubrique ?