Modelle bewerten

Nach dem Training eines Modells verwendet das AutoML Video Intelligence-Objekt-Tracking Elemente aus dem Set TEST, um die Qualität und Genauigkeit des neuen Modells zu bewerten.

Das AutoML Video Intelligence-Objekt-Tracking bietet eine ganze Reihe von Bewertungsmesswerten. Sie geben an, wie gut das Modell insgesamt funktioniert. Auch für jedes Kategorielabel gibt es Bewertungsmesswerte. Sie geben an, wie gut das Modell für das jeweilige Label funktioniert.

  • IoU: Überschneidung über Union, ein Messwert, mit dem im Objekt-Tracking die Überlappung eines vorhergesagten Begrenzungsrahmens gegenüber einem tatsächlichen Begrenzungsrahmen für eine Objektinstanz in einem Video-Frame gemessen wird. Je näher die vorhergesagten Werte des Begrenzungsrahmens an den tatsächlichen Werten des Begrenzungsrahmens liegen, desto größer sind die Überschneidung und der IoU-Wert.

  • AuPRC: Die Fläche unter der Precison/Recall, auch als "durchschnittliche Genauigkeit" bezeichnet. Im Allgemeinen zwischen 0,5 und 1,0. Höhere Werte deuten auf genauere Modelle hin.

  • Die Konfidenzwertkurven zeigen, wie sich unterschiedliche Konfidenzwerte auf die Genauigkeit, die Trefferquote sowie die Richtig- und Falsch-Positiv-Raten auswirken würden. Siehe auch die Beziehung von Precison und Recall.

Verwenden Sie diese Daten, um die Bereitschaft Ihres Modells zu bewerten. Niedrige AUC-Werte oder niedrige Precision- und Recallquotenwerte können darauf hinweisen, dass Ihr Modell zusätzliche Trainingsdaten benötigt. Ein sehr hoher AUC-Wert und eine perfekte Precision und Recallquote zeigen unter Umständen an, dass die Daten zu einfach sind und sich unter Umständen nicht gut verallgemeinern lassen.

Werte der Modellbewertung abrufen

Web-UI

  1. .ffnen Sie die Seite Models (Modelle) in der UI des AutoML Video-Objekt-Trackings.

  2. Klicken Sie in die Zeile für das Modell, das Sie auswerten möchten.

  3. Klicken Sie auf den Tab Bewerten.

    Wenn das Training für das Modell abgeschlossen ist, zeigt AutoML Video Object Tracking seine Bewertungsmesswerte an.

    Tab "Bewerten" mit Modellinformationen
  4. Wählen Sie unten auf der Seite in der Liste der Labels den Labelnamen aus, um Messwerte für ein bestimmtes Label anzeigen zu lassen.

REST UND BEFEHLSZEILE

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • model-id: Durch die Kennung für Ihr Modell ersetzen
  • project-number: Die Nummer Ihres Projekts
  • location-id: Die Cloud-Region, in der die Annotation erfolgen soll. Unterstützte Cloud-Regionen sind: us-east1, us-west1, europe-west1, asia-east1. Wenn keine Region angegeben ist, wird eine Region basierend auf dem Speicherort der Videodatei festgelegt.

HTTP-Methode und URL:

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

Senden Sie die Anfrage mithilfe einer der folgenden Optionen:

curl

Führen Sie diesen Befehl aus:

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

PowerShell

Führen Sie diesen Befehl aus:

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

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
Die Antwort enthält eine ModelEvaluation-Ressource für das Gesamtmodell, z. B. 8703337066443674578.

Java

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

/**
 * 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

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("Model evaluation name: {}".format(response.name))
print("Model annotation spec id: {}".format(response.annotation_spec_id))
print("Create Time: {}".format(response.create_time))
print(
    "Evaluation example count: {}".format(response.evaluated_example_count)
)

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

Modell durchlaufen

Wenn Sie mit dem Qualitätsniveau nicht zufrieden sind, können Sie zu den vorherigen Schritten zurückkehren, um die Qualität zu verbessern:

  • Möglicherweise müssen Sie verschiedene Arten von Videos einfügen (z. B. mit größerem Bildwinkel, höherer oder niedrigerer Auflösung, aus unterschiedlichen Perspektiven).
  • Entfernen Sie Labels gegebenenfalls vollständig, wenn Sie nicht genügend Trainingsvideos haben.
  • Beachten Sie, dass Maschinen Labelnamen nicht lesen können. Für Maschinen stellen sie lediglich eine zufällige Aneinanderreihung von Buchstaben dar. Wenn Sie ein Label mit der Aufschrift "Tür" und ein anderes mit der Aufschrift "Tür_mit_Klinke" haben, kann die Maschine den feinen Unterschied nur erkennen, wenn Sie entsprechende Videos bereitstellen.
  • Erweitern Sie Ihre Daten um mehr richtig positive und negative Beispiele. Besonders wichtige Beispiele sind jene, die nahe an der Entscheidungsgrenze liegen.

Nachdem Sie Änderungen vorgenommen haben, trainieren und bewerten Sie ein neues Modell, bis Sie ein ausreichend hohes Qualitätsniveau erreicht haben.