Valutazione dei modelli

Dopo aver addestrato un modello, AutoML Video Intelligence Classification utilizza gli elementi del set di TEST per valutare la qualità e l'accuratezza del nuovo modello.

AutoML Video Intelligence Classification fornisce un set aggregato di metriche di valutazione che indicano le prestazioni complessive del modello, nonché le metriche di valutazione per ogni etichetta di categoria, indicando le prestazioni del modello per l'etichetta in questione.

  • AuPRC : area sotto la curva di precisione/richiamo, chiamata anche "precisione media". Di solito tra 0,5 e 1,0. Valori più alti indicano modelli più accurati.

  • Le curve di soglia di confidenza mostrano in che modo soglie di confidenza diverse incidono sui tassi di precisione, richiamo, veri e falsi positivi. Scopri il rapporto tra precisione e richiamo.

Usa questi dati per valutare l'idoneità del modello. Punteggi AUC bassi o punteggi di precisione e richiamo bassi possono indicare che il modello ha bisogno di dati di addestramento aggiuntivi o ha etichette incoerenti. Un punteggio AUC molto elevato e una precisione e un richiamo perfetti potrebbero indicare che i dati sono troppo semplici e potrebbero non essere generalizzati.

Ottieni valori di valutazione del modello

UI web

  1. Apri la pagina Modelli nell'UI di AutoML Video.

  2. Fai clic sulla riga relativa al modello da valutare.

  3. Fai clic sulla scheda Valuta.

    Se l'addestramento del modello è stato completato, AutoML Video mostra le metriche di valutazione.

    Scheda Valuta con informazioni sul modello
  4. Per visualizzare le metriche relative a un'etichetta specifica, seleziona il nome dell'etichetta dall'elenco di etichette nella parte inferiore della pagina.

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • model-name: nome completo del modello, dalla risposta al momento della creazione del modello. Il nome completo ha il formato: projects/project-number/locations/location-id/models/model-id.
  • project-number: il numero del progetto

Metodo HTTP e URL:

GET  https://automl.googleapis.com/v1beta1/model-name:modelEvaluations

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Esegui questo comando:

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

PowerShell

Esegui questo comando:

$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/model-name:modelEvaluations" | Select-Object -Expand Content
La risposta include una risorsa ModelEvaluation per il modello complessivo, ad esempio: 2308399322008336298.

Java

Per eseguire l'autenticazione su AutoML Video, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per eseguire l'autenticazione su AutoML Video, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per eseguire l'autenticazione su AutoML Video, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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(
    "Classification model evaluation metrics: {}".format(
        response.classification_evaluation_metrics
    )
)

Esegui l'iterazione sul modello

Se i livelli qualitativi non sono soddisfacenti, puoi tornare ai passaggi precedenti per migliorare la qualità:

  • Potrebbe essere necessario aggiungere diversi tipi di video (ad es. un'angolazione più ampia, una risoluzione più alta o più bassa, diversi punti di vista).
  • Valuta la possibilità di rimuovere completamente le etichette se non hai abbastanza video di addestramento.
  • Ricorda che le macchine non possono leggere il nome delle etichette, si tratta solo di una stringa casuale di lettere. Se hai un'etichetta con la scritta "door" e un'altra con "door_with_knob", la macchina non ha modo di comprenderne le sfumature se non nei video che la fornisci.
  • Arricchisci i tuoi dati con un maggior numero di esempi di veri positivi e negativi. Gli esempi particolarmente importanti sono quelli vicini al confine decisionale.

Dopo aver apportato le modifiche, addestra e valuta un nuovo modello fino a raggiungere un livello qualitativo sufficientemente elevato.