Evaluar modelos

Después de que se entrena un modelo, la clasificación AutoML Video Intelligence usa elementos del conjunto de PRUEBA para evaluar la calidad y exactitud del modelo nuevo.

La clasificación AutoML Video Intelligence proporciona un conjunto agregado de métricas de evaluación que indican el rendimiento general del modelo, así como métricas de evaluación para cada etiqueta de categoría que indican el rendimiento del modelo en la etiqueta.

  • AuPRC : Área bajo la curva de Precisión/Recuperación, también conocida como "precisión promedio". Por lo general, se encuentra entre 0.5 y 1.0. Valores más altos indican modelos más exactos.

  • Las Curvas del umbral de confianza muestran de qué manera los diferentes umbrales de confidencia podrían afectar las tasas de precisión, recuperación, y de verdaderos y falsos positivos. Obtén información sobre la relación entre precisión y recuperación.

Usa estos datos para evaluar la preparación de tu modelo. Las puntuaciones bajas de AUC o las puntuaciones bajas de precisión y recuperación pueden indicar que tu modelo necesita datos de entrenamiento adicionales o que tiene etiquetas incoherentes. Una puntuación AUC muy alta y una precisión y recuperación perfectas podrían indicar que los datos son demasiado fáciles y pueden no generalizarse bien.

Obtén valores de modelos de evaluación

IU web

  1. Abre la página Modelos en la IU de video de AutoML.

  2. Haz clic en la fila del modelo que deseas evaluar.

  3. Haz clic en la pestaña Evaluar.

    Si se completó el entrenamiento del modelo, AutoML Video mostrará sus métricas de evaluación.

    Pestaña Evaluar con la información del modelo
  4. Para ver las métricas de una etiqueta específica, selecciona el nombre de la etiqueta de la lista que se encuentra en la parte inferior de la página.

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • model-name: Es el nombre completo del modelo, según la respuesta que obtuviste cuando lo creaste. El nombre completo tiene el siguiente formato: projects/project-number/locations/location-id/models/model-id.
  • project-number: Es el número de tu proyecto.

HTTP method and URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente 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

Ejecuta el siguiente 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 respuesta incluye un recurso ModelEvaluation para el modelo general, por ejemplo: 2308399322008336298.

Java

Para autenticarte en AutoML Video, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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(
          "Classification Model Evaluation Metrics: %s%n",
          modelEvaluation.getClassificationEvaluationMetrics());
    }
  }
}

Node.js

Para autenticarte en AutoML Video, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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 classification model evaluation metrics: ${response.videoClassificationEvaluationMetrics}`
  );
}

getModelEvaluation();

Python

Para autenticarte en AutoML Video, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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(
    "Classification model evaluation metrics: {}".format(
        response.classification_evaluation_metrics
    )
)

Realiza iteraciones en tu modelo

Si no estás satisfecho con los niveles de calidad, puedes volver a realizar los pasos anteriores para mejorarla:

  • Es posible que debas agregar diferentes tipos de videos (p. ej., un ángulo más amplio, mayor o menor resolución, diferentes puntos de vista).
  • Considera quitar las etiquetas por completo si no tiene suficientes videos de entrenamiento.
  • Recuerda que las máquinas no pueden leer el nombre de tu etiqueta; solo la ven como una string de letras al azar. Si tienes una etiqueta que dice “puerta” y otra que dice “puerta_con_picaporte”, la máquina no puede distinguir la diferencia más allá de los videos que le proporciones.
  • Mejora tus datos con más ejemplos de verdaderos positivos y negativos. Los ejemplos más importantes son los que están cerca del límite de decisión.

Una vez que hayas hecho los cambios, entrena y evalúa un modelo nuevo hasta que alcances un nivel de calidad satisfactorio.