Modelle bewerten

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

AutoML Video Intelligence Classification bietet eine ganze Reihe von Bewertungsmesswerten, die angeben, 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.

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

  • Die Konfidenzwertkurven zeigen, wie sich unterschiedliche Konfidenzwerte auf Precision, Recall 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 Genauigkeit und Trefferquote 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 AutoML Video-UI.

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

  3. Klicken Sie auf den Tab Evaluate (Bewerten).

    Sobald das Training für das Modell abgeschlossen ist, werden die entsprechenden Bewertungsmesswerte in AutoML Video angezeigt.

    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-name: Der vollständige Name des Modells aus der Antwort, die Sie beim Erstellen des Modells erhalten haben. Der vollständige Name hat folgendes Format: projects/project-number/locations/location-id/models/model-id.

HTTP-Methode und URL:

GET  https://automl.googleapis.com/v1beta1/model-name: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/model-name: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/model-name:modelEvaluations" | Select-Object -Expand Content
Die Antwort enthält eine ModelEvaluation-Ressource für das Gesamtmodell, z. B. 2308399322008336298.

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(
          "Classification Model Evaluation Metrics: %s%n",
          modelEvaluation.getClassificationEvaluationMetrics());
    }
  }
}

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 classification model evaluation metrics: ${response.videoClassificationEvaluationMetrics}`
  );
}

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(
    "Classification model evaluation metrics: {}".format(
        response.classification_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 hinzufügen (zum Beispiel mit größerem Winkel, höherer oder geringerer Auflösung, unterschiedlichen Blickpunkten).
  • 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.