Évaluer des modèles

Après avoir entraîné un modèle, le suivi des objets AutoML Video Intelligence utilise des éléments de l'ensemble de TEST pour évaluer la qualité et la précision du nouveau modèle.

Le suivi des objets AutoML Video Intelligence fournit un ensemble de métriques d'évaluation indiquant les performances globales du modèle. Il offre également des métriques pour chaque étiquette de catégorie, de façon à évaluer les performances du modèle pour une étiquette donnée.

  • IoU : Intersection over Union (ratio entre l'aire d'intersection et l'aire d'union). Métrique utilisée dans le suivi des objets pour mesurer le chevauchement d'un cadre de délimitation prévu par rapport au cadre réel d'une instance d'objet dans une image vidéo. Plus les valeurs du cadre de sélection prévu sont proches des valeurs réelles du cadre de sélection, plus l'intersection et la valeur d'IoU sont importantes.

  • AuPRC : Area under Precision/Recall Curve (aire sous la courbe de précision/rappel), également appelée "précision moyenne". Cette valeur est généralement comprise entre 0,5 et 1. Plus les valeurs sont élevées, plus les modèles sont précis.

  • Les courbes de seuil de confiance montrent comment différents seuils de confiance peuvent influer sur la précision, le rappel, ainsi que les taux de vrais et faux positifs. Découvrez la relation qui existe entre la précision et le rappel.

Évaluez l'état de préparation de votre modèle à l'aide de ces données. Des scores AUC bas ou des valeurs de précision et de rappel faibles peuvent indiquer que votre modèle requiert des données d'entraînement supplémentaires ou que ses libellés sont incohérents. Si vous obtenez un score AUC très élevé et des valeurs de précision et de rappel parfaites, cela peut signifier que les données sont trop simples et risquent de ne pas être correctement généralisées.

Obtenir les valeurs d'évaluation du modèle

UI Web

  1. Ouvrez la page Modèles dans l'interface utilisateur de suivi des objets AutoML Video.

  2. Cliquez sur la ligne du modèle que vous souhaitez évaluer.

  3. Cliquez sur l'onglet Évaluation.

    Si l'entraînement du modèle est terminé, le suivi des objets AutoML Video affiche ses métriques d'évaluation.

    Onglet "Évaluation" avec les informations du modèle
  4. Pour afficher les métriques correspondant à une étiquette spécifique, sélectionnez le nom de l'étiquette dans la liste située dans la partie inférieure de la page.

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants:

  • model-id : remplacez cette valeur par l'identifiant de votre modèle.
  • project-number : numéro de votre projet.
  • location-id : région cloud dans laquelle l'annotation doit avoir lieu. Les régions cloud compatibles sont les suivantes : us-east1, us-west1, europe-west1 et asia-east1. Si aucune région n'est spécifiée, une région sera déterminée en fonction de l'emplacement du fichier vidéo.

Méthode HTTP et URL :

GET https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id:modelEvaluations

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

exécutez la commande suivante :

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-number" \
"https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id:modelEvaluations"

PowerShell

exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-number" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1beta1/projects/project-number/locations/location-id/models/model-id:modelEvaluations" | Select-Object -Expand Content
La réponse inclut une ressource ModelEvaluation pour le modèle global, par exemple: 8703337066443674578.

Java

Pour vous authentifier auprès du suivi des objets vidéo AutoML, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

import com.google.cloud.automl.v1beta1.AutoMlClient;
import com.google.cloud.automl.v1beta1.ModelEvaluation;
import com.google.cloud.automl.v1beta1.ModelEvaluationName;
import java.io.IOException;

class GetModelEvaluation {

  static void getModelEvaluation() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    String modelEvaluationId = "YOUR_MODEL_EVALUATION_ID";
    getModelEvaluation(projectId, modelId, modelEvaluationId);
  }

  // Get a model evaluation
  static void getModelEvaluation(String projectId, String modelId, String modelEvaluationId)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AutoMlClient client = AutoMlClient.create()) {
      // Get the full path of the model evaluation.
      ModelEvaluationName modelEvaluationFullId =
          ModelEvaluationName.of(projectId, "us-central1", modelId, modelEvaluationId);

      // Get complete detail of the model evaluation.
      ModelEvaluation modelEvaluation = client.getModelEvaluation(modelEvaluationFullId);

      System.out.format("Model Evaluation Name: %s%n", modelEvaluation.getName());
      System.out.format("Model Annotation Spec Id: %s", modelEvaluation.getAnnotationSpecId());
      System.out.println("Create Time:");
      System.out.format("\tseconds: %s%n", modelEvaluation.getCreateTime().getSeconds());
      System.out.format("\tnanos: %s", modelEvaluation.getCreateTime().getNanos() / 1e9);
      System.out.format(
          "Evalution Example Count: %d%n", modelEvaluation.getEvaluatedExampleCount());

      System.out.format(
          "Video Object Tracking Evaluation Metrics: %s%n",
          modelEvaluation.getVideoObjectTrackingEvaluationMetrics());
    }
  }
}

Node.js

Pour vous authentifier auprès du suivi des objets vidéo AutoML, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const modelId = 'YOUR_MODEL_ID';
// const modelEvaluationId = 'YOUR_MODEL_EVALUATION_ID';

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require('@google-cloud/automl').v1beta1;

// Instantiates a client
const client = new AutoMlClient();

async function getModelEvaluation() {
  // Construct request
  const request = {
    name: client.modelEvaluationPath(
      projectId,
      location,
      modelId,
      modelEvaluationId
    ),
  };

  const [response] = await client.getModelEvaluation(request);

  console.log(`Model evaluation name: ${response.name}`);
  console.log(`Model annotation spec id: ${response.annotationSpecId}`);
  console.log(`Model display name: ${response.displayName}`);
  console.log('Model create time');
  console.log(`\tseconds ${response.createTime.seconds}`);
  console.log(`\tnanos ${response.createTime.nanos / 1e9}`);
  console.log(`Evaluation example count: ${response.evaluatedExampleCount}`);
  console.log(
    `Video object tracking model evaluation metrics: ${response.videoObjectTrackingEvaluationMetrics}`
  );

}

getModelEvaluation();

Python

Pour vous authentifier auprès du suivi des objets vidéo AutoML, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

from google.cloud import automl_v1beta1 as automl

# TODO(developer): Uncomment and set the following variables
# project_id = "YOUR_PROJECT_ID"
# model_id = "YOUR_MODEL_ID"
# model_evaluation_id = "YOUR_MODEL_EVALUATION_ID"

client = automl.AutoMlClient()
# Get the full path of the model evaluation.
model_path = client.model_path(project_id, "us-central1", model_id)
model_evaluation_full_id = f"{model_path}/modelEvaluations/{model_evaluation_id}"

# Get complete detail of the model evaluation.
response = client.get_model_evaluation(name=model_evaluation_full_id)

print(f"Model evaluation name: {response.name}")
print(f"Model annotation spec id: {response.annotation_spec_id}")
print(f"Create Time: {response.create_time}")
print(f"Evaluation example count: {response.evaluated_example_count}")

print(
    "Video object tracking model evaluation metrics: {}".format(
        response.video_object_tracking_evaluation_metrics
    )
)

Itérer sur le modèle

Si vous n'êtes pas satisfait des niveaux de qualité, vous pouvez revenir aux étapes précédentes pour les améliorer en suivant les consignes ci-après :

  • Vous devrez peut-être ajouter d'autres types de vidéos (par exemple, avec un angle plus large, une résolution supérieure ou inférieure, des points de vue différents).
  • Supprimez totalement les libellés si vous ne disposez pas de suffisamment de vidéos d'entraînement.
  • N'oubliez pas que les machines ne peuvent pas lire le nom de votre étiquette : pour elles, il s'agit seulement d'une chaîne de lettres aléatoire. Si vous avez une étiquette "porte" et une étiquette "porte_avec_poignée", la machine peut seulement se baser sur les vidéos que vous fournissez pour déterminer la nuance.
  • Enrichissez vos données avec davantage d'exemples de vrais positifs et négatifs. Les exemples particulièrement importants sont ceux qui sont proches de la frontière de décision.

Une fois les modifications apportées, entraînez et évaluez un nouveau modèle jusqu'à ce que vous ayez atteint un niveau de qualité suffisant.