Prédictions d'images

Earth Engine fournit ee.Model en tant que connecteur aux modèles hébergés sur Vertex AI. Ce connecteur envoie des données d'image ou de tableau en tant que requêtes de prédiction en ligne à un modèle entraîné déployé sur un point de terminaison Vertex AI. Les sorties du modèle sont ensuite renvoyées sous forme d'images ou de tableaux Earth Engine.

ee.Model.predictImage

Utilisez model.predictImage() pour effectuer des prédictions sur un ee.Image à l'aide d'un modèle hébergé. ee.Image permet de créer des tuiles (patch d'image) de bandes qui sont ensuite envoyées au modèle hébergé. Le type de retour de predictImage() est un ee.Image qui peut être ajouté à la carte, exporté ou utilisé dans d'autres calculs.

Options de saisie

Lorsque vous effectuez une inférence à l'aide d'un ee.Image, un certain nombre de paramètres sont utilisés dans le connecteur ee.Model. Ces commandes concernent les bandes et les propriétés d'entrée, le carrelage des tuiles d'image d'entrée, la taille des tuiles d'image de sortie et les bandes d'image de sortie.

Bracelets et propriétés

Pour spécifier les bandes et les propriétés d'entrée, utilisez les paramètres suivants:

inputProperties

inputProperties est une liste de noms de propriétés à transmettre à chaque instance de prédiction. Les propriétés numériques, de chaîne et booléennes sont acceptées.

inputTypeOverride

inputTypeOverride est un dictionnaire de noms de propriétés et/ou de canaux avec des informations spécifiques sur le type et la dimension. Cela peut être nécessaire, car de nombreux algorithmes Earth Engine créent des sorties avec des types dynamiques qui ne peuvent être inférés qu'au moment de l'exécution.

Par exemple, si vous calculez "pente" en mappant la fonction ee.Terrain.slope sur une collection, vous devez spécifier le type de sortie de "pente" dans nos entrées d'inférence comme suit:

inputTypeOverride = {
  "slope": {
    "type": "PixelType",
    "precision": "float",
    "dimensions": 0,
    "min": -100.0,
    "max": 100.0
  }
}

CONSEIL: Si le message d'erreur indique qu'une bande ou une propriété "ne peut pas être convertie en tenseur", une solution possible consiste à utiliser un forçage de type pour forcer l'entrée à un type donné.

inputShapes

inputShapes est un dictionnaire de noms de bandes et de formes de pixels de matrice. Pour envoyer à votre modèle des pixels de type ARRAY avec une longueur supérieure à 1, définissez l'argument inputShapes. L'argument est semblable à inputTypeOverride, mais il est spécifique aux formes de bande d'entrée pour les prédictions d'images. Par exemple, pour encoder trois bandes, (1) "ndvi_series" en tant que série temporelle 1D avec 12 valeurs, (2) "temp" en tant que scalaire et (3) "patch" en tant que tableau de pixels 2D, utilisez ce qui suit:

inputShapes = {
  "ndvi_series": [12],  # 12 ndvi samples
  "temp": [], # scalar
  "patch": [2, 2], # 2px * 2px patch
}

outputBands

outputBands est un dictionnaire de noms de bandes de sortie vers un objet contenant le ee.PixelType et les dimensions de la bande. Ici, les dimensions doivent être identiques à la longueur du tableau de forme du tenseur. En d'autres termes, les données scalaires avec la forme () doivent avoir la dimension 0, les données 1D avec la forme (N) doivent avoir la dimension 1 et les données 2D avec la forme (N, M) doivent avoir la dimension 2. Par exemple, une bande de sortie nommée "B1" avec des pixels à valeurs de tableau avec une forme est spécifiée comme suit:

outputBands = {
  'B1': {'type': ee.PixelType.float(), 'dimensions': 1}
}

Tailles des cartes

Vous pouvez contrôler la mise en mosaïque de l'image à l'aide des paramètres suivants:

  • inputTileSize
  • inputOverlapSize
  • outputTileSize

Tailles des tuiles d'entrée

Pour définir les tailles de tuiles d'entrée, utilisez inputTileSize et inputOverlapSize. Définissez ces paramètres en fournissant une paire de valeurs de largeur et de hauteur de carte en pixels (par exemple, [32, 32]). La taille totale du correctif est déterminée en ajoutant les hauteurs et largeurs de inputTileSize et outputTileSize.

Par exemple, un modèle entièrement convolutif peut s'attendre à des entrées de forme (256 x 256 x Canaux). Si nous sommes préoccupés par les effets de bordure entre les résultats d'inférence, nous pouvons supprimer des pixels inputOverlapSize[0] à gauche et à droite, et inputOverlapSize[1] en haut et en bas de chaque résultat d'inférence. Cela entraînera davantage d'appels de prédiction afin de couvrir entièrement la zone de prédiction.

Par exemple, si notre modèle s'attend à (256 x 256 x 3) et que nous souhaitons supprimer les 32 pixels de bordure, nous spécifions ce qui suit:

ee.Model({
  "endpoint": endpoint,
  "inputTileSize": [192, 192],
  "inputOverlapSize": [64, 64],
  # rest omitted.
}

REMARQUE: inputOverlapSize correspond à une superposition totale sur les axes X et Y. Si vous souhaitez avoir un tampon de N pixels autour de l'ensemble de l'image, le chevauchement sera alors de [2N, 2N]

Taille des tuiles de sortie

Pour définir la taille des tuiles de sortie, définissez l'argument outputTileSize. Si outputTileSize n'est pas défini, la taille de carte par défaut est identique à inputTileSize.

Pour certains modèles, la taille de sortie peut être différente de la taille d'entrée. Par exemple, un modèle de classification peut accepter des entrées de forme (256, 256, canaux), mais renvoyer des tenseurs de forme (1, 1, 1). Dans ce cas, outputTileSize doit être défini sur [1, 1]. Cela est assez courant avec les modèles qui renvoient la sortie de probabilité (à une résolution réduite) de certaines caractéristiques de tuile.

Projection

Presque tous les modèles convolutifs s'attendent à une entrée de projection fixe. En effet, la plupart des modèles convolutifs sont entraînés à une échelle fixe. Dans ce cas, définissez le paramètre fixInputProj sur true dans votre appel à ee.Model.fromVertexAi() et spécifiez la projection des données dans le paramètre proj.

La projection de l'image d'entrée et la projection fixe du modèle affecteront les valeurs de sortie. Consultez le guide sur la reprojection EE.