Détecter des objets

Disponible avec une licence Image Analyst.

Pour détecter des objets dans l’imagerie en entrée, utilisez l’outil Détecter des objets à l’aide du Deep Learning, qui crée autour des objets ou des entités d’une image des cadres permettant d’identifier leur emplacement. L’image suivante montre un exemple de détection de palmiers à l’aide des outils de Deep Learning d’ArcGIS :

Détection des palmiers

Un processus type de détection d’objets à l’aide du Deep Learning comprend trois étapes principales :

  1. Créez et exportez des échantillons d’apprentissage. Créez des échantillons d’entraînement dans la fenêtre Label Objects for Deep Learning (Étiqueter les objets pour le Deep Learning), puis utilisez l’outil Export Training Data For Deep Learning (Exporter les données d’entraînement pour Deep Learning) pour convertir les échantillons en données d’entraînement de Deep Learning.
  2. Entraînez le modèle d’apprentissage profond. Utilisez l’outil Train Deep Learning Model (Entraîner le modèle de Deep Learning) pour entraîner un modèle à l’aide des échantillons d’entraînement que vous avez créés à l’étape précédente.
  3. Exécuter l’inférence : utilisez l’outil Détecter des objets à l’aide du Deep Learning. Vous utiliserez le modèle créé à l’étape 2.

Une fois le processus de détection d’objets terminé, il est conseillé de procéder à une analyse de contrôle qualité et de vérifier les résultats. Si les résultats ne sont pas satisfaisants, vous pouvez améliorer le modèle en ajoutant des échantillons d’entraînement et en réexécutant le processus. Pour vérifier les résultats, utilisez la fenêtre Attributes (Attributs). Pour vérifier l’exactitude des résultats, utilisez l’outil Calculer la précision pour la détection d’objets.

Pour obtenir des exemples, les formats de métadonnées pris en charge et les architectures de type de modèle, voir Architectures de modèles de Deep Learning.

Créer et exporter des échantillons d’entraînement

Créez une structure d’entraînement et des échantillons d’entraînement, puis exportez les données d’entraînement.

Si un jeu de données raster ou une classe d’entités contient des échantillons d’entraînement, vous pouvez utiliser l’outil Export Training Data For Deep Learning (Exporter les données d’apprentissage pour Deep Learning) et passer à la section Entraîner un modèle d’apprentissage profond.

  1. Créer une structure d’entraînement.
    1. Ajoutez l’image à utiliser pour générer les échantillons d’entraînement à une carte.
    2. Dans la fenêtre Contents (Contenu), sélectionnez l’image que vous avez ajoutée.
    3. Cliquez sur l’onglet Imagery (Imagerie).
    4. Cliquez sur Deep Learning Tools (Outils de Deep Learning), puis sur Label Objects for Deep Learning (Étiqueter les objets pour le Deep Learning).

      La fenêtre Image Classification (Classification d’image) apparaît avec une structure vide.

    5. Dans la fenêtre Image Classification (Classification d’image), cliquez avec le bouton droit de la souris sur New Schema (Nouvelle structure), puis cliquez sur Edit Properties (Mettre à jour les propriétés).

      Mettre à jour la nouvelle structure

    6. Indiquer un nom pour la structure.

      Modifier le nom de la structure

    7. Cliquez sur Save (Enregistrer).

    La structure est renommée dans la fenêtre Image Classification (Classification d’image) et vous pouvez y ajouter des classes.

  2. Ajoutez une nouvelle classe à la structure.
    1. Cliquez avec le bouton droit de la souris sur la structure que vous avez créée, puis cliquez sur Add New Class (Ajouter une nouvelle classe).

      Option Add New Class (Ajouter une nouvelle classe)

    2. Indiquer un nom pour la classe.

      Nom de la nouvelle classe

    3. Indiquez une valeur pour la classe.

      La valeur ne peut pas être 0.

    4. Éventuellement, choisissez une couleur pour la classe.
    5. Cliquez sur OK.

      La classe est ajoutée à la structure dans la fenêtre Image Classification (Classification d’image).

    6. Vous pouvez répéter les étapes 2a à 2e pour ajouter d’autres classes.
  3. Créer des échantillons d’entraînement.
    1. Choisissez un outil de dessin (un cercle, par exemple) et utilisez-le pour tracer une limite autour d’un objet.

      Outil Cercle

      Exemple d’un palmier
      Cet échantillon d’entraînement de palmier a été créé avec l’outil Circle (Cercle).

      Si vous avez des doutes quant à un objet, ne l’incluez pas. Les limites peuvent se chevaucher.

    2. Utiliser les outils de dessin pour choisir d’autres entités.

      Comme le modèle final tiendra compte de la taille des objets identifiés, vous pouvez sélectionner des objets de différentes tailles.

      Échantillons d’entraînement
      Ces échantillons d’entraînement ont été créés dans différents domaines et en différentes tailles de manière à présenter un large éventail d’échantillons.

  4. Lorsque vous avez terminé de créer des échantillons d’entraînement, dans la fenêtre Image Classification (Classification d’image), cliquez sur Save (Enregistrer).

    Bouton Enregistrer

    1. Dans la fenêtre Save current training sample (Enregistrer l’échantillon d’entraînement actuel), accédez à la géodatabase.
    2. Indiquez un nom pour la classe d’entités, puis cliquez sur Save (Enregistrer).

    Avant d’entraîner le modèle, vous devez exporter les échantillons d’entraînement en tant que fragments d’image. Un fragment d’image est une petite image qui contient un ou plusieurs objets à détecter.

  5. Dans la fenêtre Image Classification (Classification d’image), cliquez sur l’onglet Export Training Data (Exporter les données d’apprentissage), puis procédez comme suit :
    1. Indiquez la valeur de Output Folder (Dossier en sortie).

      Il s’agit du chemin d’accès et du nom du dossier dans lequel les fragments d’image en sortie et les métadonnées vont être stockés.

    2. Vous pouvez également indiquer la valeur de Mask Polygon (Masquer le polygone).

      Il s’agit d’une classe d’entités surfaciques qui délimite la zone dans laquelle les fragments d’image peuvent être créés. Seuls les fragments d’image se trouvant intégralement dans le polygone seront créés.

    3. Vous pouvez éventuellement choisir la valeur Image Format (Format d’image) pour les fragments.

      Les formats pris en charge sont TIFF, PNG, JPEG et MRF.

    4. Spécifiez éventuellement les valeurs Tile Size X (Taille de tuile X) et Tile Size Y (Taille de tuile Y).

      Il s’agit de la dimension x et de la dimension y des fragments d’image. En règle générale, les valeurs par défaut donnent de bons résultats. La même taille est généralement spécifiée pour les deux dimensions.

    5. Spécifiez éventuellement les valeurs de Stride X (Pas en X) et Stride Y (Pas en Y).

      Il s’agit de la distance de déplacement dans la direction x et dans la direction y lors de la création du fragment d’image suivant. Si le pas est égal à la taille de tuile, il n’y a pas de chevauchement. Si le pas est égal à la moitié de la taille de tuile, le chevauchement est de 50 %.

    6. Spécifiez éventuellement la valeur de Rotation Angle (Angle de rotation).

      Le fragment d’image est pivoté selon l’angle spécifié, afin de créer des fragments d’image supplémentaires. Un fragment d’image supplémentaire est créé pour chaque angle tant que le fragment d’image n’a pas totalement pivoté. Par exemple, si vous spécifiez un angle de rotation de 45 degrés, huit fragments d’image sont créés. Ces fragments d’image sont créés pour les angles suivants : 45, 90, 135, 180, 225, 270 et 315 degrés.

    7. Choisissez éventuellement la valeur de Reference System (Système de référence).

      Il s’agit du système de référence qui sera utilisé pour interpréter l’image en entrée. Les options sont Map Space (Espace cartographique) ou Pixel Space (Espace pixel). L’espace cartographique utilise un système de coordonnées basé sur des cartes, qui est la valeur par défaut lorsqu’une référence spatiale est définie pour le raster en entrée. L’espace pixel utilise un système de coordonnées d’espace image dépourvu de rotation ou de déformation. L’option Pixel Space (Espace pixel) est recommandée lorsque l’imagerie en entrée est orientée ou oblique. Le système de référence spécifié doit correspondre au système de référence utilisé pour entraîner le modèle de Deep Learning.

    8. Vous pouvez cocher la case Output No Feature Tiles (Aucune tuile d’entités en sortie).

      Lorsque cette option est activée, tous les fragments d’image sont exportés, y compris ceux qui ne capturent pas d’échantillons d’entraînement. Si cette option n’est pas activée, seuls les fragments d’image qui capturent les échantillons d’entraînement sont exportés. Cette option est désactivée par défaut.

    9. Vous pouvez éventuellement sélectionner la valeur Meta Data Format (Format des métadonnées).

      Les formats de métadonnées pris en charge pour la détection d’objet sont Tuiles étiquetées, Pascal Visual Object Classes et Masques RCNN.

    10. Cliquez sur Run (Exécuter) pour exporter les données d’entraînement.

Onglet Exporter les données d’entraînement

Entraîner un modèle d’apprentissage profond

L’outil Train Deep Learning Model (Entraîner le modèle de Deep Learning) utilise les fragments d’image étiquetés pour déterminer les combinaisons de pixels dans chaque image et représenter l’objet. Vous allez utiliser ces échantillons d’entraînement pour entraîner un modèle de Deep Learning. Dans l’outil, seuls les paramètres Input Training Data (Données d’entraînement en entrée) et Output Model (Modèle en sortie) sont requis.

Étant donné que les données d’entraînement en entrée sont basées sur la valeur Metadata Format (Format des métadonnées), une valeur appropriée pour Model Type (Type de modèle) est attribuée par défaut. Par exemple, si vous avez spécifié le format de métadonnées Pascal Visual Objects Classes (Classes Pascal Visual Object) lors du traitement d’exportation, la valeur de Model Type (Type de modèle) est Single Shot Detector. La liste déroulante de paramètres Model Type (Type de modèle) est également mise à jour avec les types de modèles qui prennent en charge le format de métadonnées Classes Pascal Visual Object. Les paramètres Batch Size (Taille de lot), Model Arguments (Arguments du modèle) et Backbone Model (Modèle de backbone) sont renseignés en fonction de la valeur de Model Type (Type de modèle).

  1. Ouvrez l’outil Train Deep Learning Model (Entraîner le modèle de Deep Learning).
  2. Pour le paramètre Input Training Data (Données d’entraînement en entrée), accédez au dossier de données d’entraînement dans lequel les fragments d’image sont stockés et sélectionnez-le.
  3. Pour le paramètre Output Model (Modèle en sortie), indiquez le chemin de fichier et le nom du dossier dans lequel le modèle en sortie va être enregistré après l’entraînement.
  4. Spécifiez éventuellement une valeur pour le paramètre Max Epochs (Nombre maximal d’époques).

    Un epoch est un cycle entier à travers le jeu de données d’entraînement. Au cours de chaque époque, le jeu de données d’entraînement que vous avez stocké dans le dossier de fragments d’image est transmis vers l’avant et vers l’arrière dans le réseau neuronal en une seule fois. En règle générale, entre 20 et 50 époques sont utilisées pour l’examen initial. La valeur par défaut est 20. Si le modèle peut être amélioré dans une plus large mesure, vous pouvez le réentraîner en utilisant le même outil.

  5. Vous pouvez éventuellement modifier la valeur du paramètre Model Type (Type de modèle) dans la liste déroulante.

    Le type de modèle détermine l’algorithme de Deep Learning et le réseau neuronal utilisés pour entraîner le modèle (l’option Single Shot Detector (SSD), par exemple). Pour plus d’informations sur les modèles, voir Modèles de Deep Learning dans ArcGIS. Pour obtenir des exemples de documentation et des informations sur les métadonnées prises en charge et les architectures de modèles, voir Architectures de modèles de Deep Learning.

  6. Modifiez éventuellement la valeur de paramètre Model Arguments (Arguments du modèle).

    Le paramètre Model Arguments (Arguments du modèle) est renseigné avec les informations provenant de la définition du modèle. Ces arguments varient en fonction de l’architecture de modèle spécifiée. Une liste des arguments de modèle pris en charge par l’outil est disponible dans le paramètre Model Arguments (Arguments du modèle).

  7. Définissez éventuellement la valeur de paramètre Batch Size (Taille de lot).

    Ce paramètre détermine le nombre d’échantillons d’apprentissage allant être entraînés à la fois. Une valeur de taille de lot peut être déterminée par différents facteurs, tels que le nombre de fragments d’image, la mémoire GPU (si un GPU est utilisé) et la vitesse d’apprentissage, si une valeur personnalisée est utilisée. En règle générale, la taille de lot par défaut donne de bons résultats.

  8. Indiquez éventuellement la valeur de paramètre Learning Rate (Vitesse d’apprentissage).

    Si aucune valeur n’est indiquée, la vitesse d’apprentissage optimale est extraite de la courbe d’apprentissage lors du processus d’entraînement.

  9. Spécifiez éventuellement la valeur de paramètre Backbone Model (Modèle de backbone).

    La valeur par défaut est fonction de l’architecture du modèle. Vous pouvez changer de modèle de backbone par défaut dans la liste déroulante.

  10. Indiquez éventuellement la valeur de paramètre Pre-trained Model (Modèle pré-entraîné).

    Un modèle pré-entraîné avec des classes similaires peut être affiné en vue de son adaptation au nouveau modèle. Le modèle pré-entraîné doit avoir été entraîné avec le même type de modèle et le même modèle d’architecture que ceux qui seront utilisés pour entraîner le nouveau modèle.

  11. Modifiez éventuellement la valeur de paramètre Validation % (Pourcentage de validation).

    Il s’agit du pourcentage d’échantillons d’entraînement utilisés pour valider le modèle. Cette valeur dépend de différents facteurs tels que le nombre d’échantillons d’entraînement et l’architecture du modèle. En règle générale, avec peu de données d’entraînement, entre 10 et 20 pour cent est une valeur appropriée pour la validation. Si les données d’entraînement sont nombreuses (plusieurs milliers d’échantillons, par exemple), un pourcentage plus faible (entre 2 et 5 pour cent des données) est appropriée pour la validation. La valeur par défaut est 10.

  12. Activez éventuellement le paramètre Stop when model stops improving (Arrêter lorsque le modèle ne s’améliore plus).

    S’il est activé, l’entraînement de modèle s’arrête lorsque le modèle ne s’améliore plus quelle que soit la valeur de Max Epochs (Nombre maximal d’époques) spécifiée. Cette case est cochée par défaut.

  13. Activez éventuellement le paramètre Freeze Model (Figer le modèle).

    Ce paramètre spécifie si les couches de backbone dans le modèle pré-entraîné vont être figées pour que la conception originale des pondérations et des biais soit conservée. Si vous activez ce paramètre, les couches de backbone sont figées et les pondérations et biais prédéfinis ne sont pas modifiés dans le paramètre Backbone Model (Modèle de backbone). Si vous n’activez pas cette option, les couches de backbone ne sont pas figées et les pondérations et biais du paramètre Backbone Model (Modèle de backbone) peuvent être modifiés pour s’adapter aux échantillons d’entraînement. Le traitement est plus long, mais produit généralement de meilleurs résultats. Cette case est cochée par défaut.

  14. Cliquez sur Run (Exécuter) pour commencer l’entraînement.

L’image ci-dessous montre la fenêtre Train Deep Learning Model (Entraîner le modèle de Deep Learning) avec Single Shot Detector (Object detection) (Single Shot Detector [Détection d’objets]) comme valeur de Model Type (Type de modèle).

Paramètres de l’outil Entraîner le modèle de Deep Learning

Exécuter l’inférence

Pour exécuter l’inférence, utilisez le modèle de Deep Learning produit pour analyser les nouvelles données. L’inférence est le traitement au cours duquel les informations acquises pendant le traitement d’entraînement de Deep Learning sont utilisées pour détecter les entités similaires dans les jeux de données. Étant donné que vous exécutez un processus de détection d’objets, vous utilisez l’outil Détecter des objets à l’aide d’algorithmes de Deep Learning.

  1. Ouvrez l’outil Détecter des objets à l’aide d’algorithmes de Deep Learning.
  2. Pour Input Raster (Raster en entrée), accédez aux données raster en entrée dans lesquelles vous voulez détecter des objets et sélectionnez-les.

    L’entrée peut être un jeu de données raster ou plusieurs rasters d’un jeu de données mosaïque, un service d’imagerie, un dossier d’images ou une classe d’entités avec des images en pièces jointes.

  3. Pour Output Detected Objects (Objets détectés en sortie), entrez le nom de la classe d’entités en sortie.

    Cette classe d’entités en sortie contient les géométries qui encerclent les objets détectés dans l’image en entrée.

  4. Spécifiez la valeur de Model Definition (Définition de modèle) (*.emd ou *.dlpk).

    Il s’agit du fichier de modèle qui contient la sortie d’entraînement. Il s’agit de la sortie de la section d’entraînement Deep Learning.

  5. Le paramètre Arguments est renseigné à l’aide de la valeur du paramètre Model Definition (Définition du modèle). Ces arguments varient en fonction de l’architecture de modèle utilisée. Dans cet exemple, comme le modèle Single Shot Detector est utilisé, les arguments suivants sont renseignés. Vous pouvez accepter les valeurs par défaut ou les modifier.

    Ces arguments varient en fonction de l’architecture de modèle utilisée. Dans cet exemple, comme le modèle Single Shot Detector est utilisé, les arguments suivants sont renseignés. Vous pouvez accepter les valeurs par défaut ou les modifier.

    1. padding - Nombre de pixels en bordure des tuiles d’image à partir desquelles les prévisions sont fusionnées pour les tuiles adjacentes. Augmentez la valeur pour lisser la sortie, ce qui réduit les artefacts. La valeur maximale de marge de remplissage peut être égale à la moitié de la valeur de taille de tuile.
    2. threshold - Les détections dont le score de confiance est supérieur à ce seuil sont incluses dans les résultats. Les valeurs autorisées varient entre 0 et 1,0.
    3. batch_size - Nombre de tuiles d’image traitées à chaque étape de l’inférence du modèle. Ce nombre dépend de la taille de mémoire de la carte graphique.
    4. nms_overlap - Ratio de superposition maximale de deux entités se chevauchant, défini comme le rapport entre la zone d’intersection et la zone d’union. La valeur par défaut est 0.1.
    5. exclude_pad_detections - Si la valeur est true, l’outil filtre les détections potentiellement tronquées sur les arêtes qui se trouvent dans la région remplie de fragments d’image.
    6. test_time_augmentation - Procède à l’augmentation du temps de test lors de la prévision. Si la valeur est true, les prévisions des variants inversés et pivotés de l’image en entrée sont fusionnées dans la sortie finale.
  6. Vous pouvez éventuellement cocher la case Non Maximum Suppression (Suppression non maximale).

    Lorsque cette case est cochée, les objets en double détectés sont supprimés de la sortie et vous devez fournir des informations pour les trois paramètres suivants :

    1. Confidence Score Field (Champ de score de confiance) : nom du champ dans la classe d’entités qui contient les scores de confiance utilisés en sortie par la méthode de détection d’objets.
    2. Class Value Field (Champ de valeur de classe) : nom du champ de valeur de classe dans la classe d’entités en entrée.
    3. Max Overlap Ratio (Ratio de superposition maximale) : ratio de superposition maximale de deux entités se chevauchant, défini comme le rapport entre la zone d’intersection et la zone d’union.
  7. Cliquez sur Run (Exécuter) pour lancer l’inférence.

    Paramètres de l’outil Détecter des objets à l’aide d’algorithmes de Deep Learning

Dans l’image de résultat ci-dessous, les palmiers détectés sont identifiés par un polygone qui les encadre.

Résultat de la détection de palmiers

Pour obtenir un exemple détaillé de détection d’objets, voir Utilisation du Deep Learning pour évaluer l’état sanitaire des palmiers.

Rubriques connexes