Skip To Content

Exemple : inférence à l’aide d’un modèle pré-entraîné

Le Deep Learning peut servir à automatiser la tâche d’extraction manuelle des entités dans les images. Avec les modèles pré-entraînés ArcGIS, vous n’avez plus besoin de jeux de données volumineux, de puissance de calcul énorme et de connaissance ou d’expertise en Deep Learning. Ces modèles ont été entraînés sur des données géographiques variées et fonctionnent bien dans différentes régions. Les modèles pré-entraînés ArcGIS sont disponibles à tout titulaire d’un compte ArcGIS via ArcGIS Living Atlas of the World. Dans le processus suivant, le modèle Car Detection-USA est utilisé pour identifier des voitures dans des images aériennes et par drone en haute résolution.

Conditions requises

Pour effectuer ce processus, les conditions suivantes doivent être remplies :

  • Images aériennes sur lesquelles exécuter le modèle.
    Remarque :

    Vous pouvez télécharger les images contenant des voitures depuis OpenAerialMap.

  • Le Deep Learning sollicite d’importantes ressources de calcul, c’est pourquoi il est recommandé d’utiliser un processeur graphique puissant pour traiter les jeux de données volumineux.

Inférence à l’aide de modèles pré-entraînés

Les sections suivantes décrivent les traitements utilisés pour inférer avec le modèle pré-entraîné ArcGIS.

Importations de bibliothèques Python

Importez les bibliothèques Python suivantes :

from arcgis.gis import GIS
from arcgis.learn import detect_objects
from arcgis.raster.analytics import copy_raster
 
gis = GIS("home")

Ajouter les données et le modèle pour l’analyse

Deux méthodes permettent d’ajouter votre jeu de données à votre notebook :

La première consiste à charger les images aériennes dans l’espace de travail de votre notebook, à l’ajouter dans la cellule de code et à exécuter la fonction copy_raster() pour extraire les données.

dataset = "/arcgis/home/Aerial imagery.tif"
imagery = copy_raster(input_raster=dataset, output_name="Aerial_imagery", raster_type_name="Raster Dataset")

La seconde consiste à ajouter les images aériennes en tant que couche d’imagerie hébergée à votre portail, puis à ajouter cette couche à votre notebook à l’aide de son itemID.

imagery = gis.content.get("<imagery-layer-item-id>")

Ajouter le paquetage de Deep Learning

Vous pouvez charger le modèle pré-entraîné Car Detection - USA depuis ArcGIS Living Atlas. Ajoutez-le ensuite à votre portail en tant qu’élément, puis accédez-y dans votre notebook à l’aide de son itemID.

model = gis.content.get("<deep-learning-package-item-id>")

Exécution du modèle

Pour exécuter le modèle pré-entraîné dans votre notebook, utilisez le module detect_objects d’argis.learn. Le module utilise vos images comme entrée, puis détecte et compte le nombre de voitures qu’elles contiennent.

Remarque :

Il est possible d’augmenter les performances du modèle en augmentant ses arguments avec différentes valeurs, jusqu’à obtenir le résultat souhaité.

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
        }

Remarque :

Si un GPU est configuré, vous pouvez définir un contexte dans la méthode detect_object() de sorte à le paramétrer sur l’environnement GPU :

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))

Résultats du modèle

Enfin, une fois le modèle exécuté, vous pouvez afficher le résultat du num_cars :

print(f"Number of cars is {num_cars}.")