Evaluar e iterar modelos de detección de objetos de imagen de AutoML

En esta página se explica cómo evaluar los modelos de detección de objetos en imágenes de AutoML para que puedas iterar en tu modelo.

Vertex AI proporciona métricas de evaluación de modelos para ayudarte a determinar el rendimiento de tus modelos, como las métricas de precisión y recuperación. Vertex AI calcula las métricas de evaluación mediante el conjunto de pruebas.

Cómo usar las métricas de evaluación de modelos

Las métricas de evaluación de modelos proporcionan mediciones cuantitativas del rendimiento de tu modelo en el conjunto de pruebas. La forma en que interpretes y uses esas métricas dependerá de las necesidades de tu empresa y del problema para el que se haya entrenado tu modelo. Por ejemplo, puede que toleres menos los falsos positivos que los falsos negativos o al revés. Este tipo de preguntas influyen en las métricas en las que te centrarás.

Para obtener más información sobre cómo iterar en tu modelo para mejorar su rendimiento, consulta Iterar en tu modelo.

Métricas de evaluación devueltas por Vertex AI

Vertex AI devuelve varias métricas de evaluación diferentes, como la precisión, la recuperación y los umbrales de confianza. Las métricas que devuelve Vertex AI dependen del objetivo de tu modelo. Por ejemplo, Vertex AI proporciona métricas de evaluación diferentes para un modelo de detección de objetos de imagen que para un modelo de clasificación de objetos de imagen.

Un archivo de esquema, que se puede descargar desde una ubicación de Cloud Storage, determina qué métricas de evaluación proporciona Vertex AI para cada objetivo. Las siguientes pestañas proporcionan enlaces a los archivos de esquema y describen las métricas de evaluación de cada objetivo del modelo.

Puedes ver y descargar archivos de esquema desde la siguiente ubicación de Cloud Storage:
gs://google-cloud-aiplatform/schema/modelevaluation/

  • Umbral de intersección sobre unión: valor de umbral de intersección sobre unión que determina qué inferencias se devuelven. Un modelo devuelve inferencias que tienen este valor o uno superior. Cuanto mayor sea el umbral, más se acercarán los valores del cuadro delimitador predicho a los valores del cuadro delimitador real.
  • Media aritmética de precisión: también se conoce como precisión media. Este valor va de cero a uno; cuanto mayor es el valor, más calidad tiene el modelo.
  • Umbral de confianza: una puntuación de confianza que determina qué inferencias se devuelven. Un modelo devuelve inferencias que tienen este valor o uno superior. Cuanto más alto es el umbral de confianza, mayor es la precisión, pero menor es la recuperación. Vertex AI devuelve métricas de confianza en diferentes valores de umbral para mostrar cómo afecta el umbral a la precisión y a la recuperación.
  • Retirada: la fracción de inferencias con esta clase que el modelo ha predicho correctamente. También se denomina tasa de verdaderos positivos.
  • Precisión: la fracción de las inferencias de clasificación correctas que produjo el modelo.
  • Puntuación F1: media armónica de la precisión y la recuperación. La métrica F1 resulta útil si buscas un equilibrio entre la precisión y la recuperación, así como si las clases están distribuidas de manera desigual.
  • Precisión media de los cuadros delimitadores: la métrica única de las evaluaciones de los cuadros delimitadores, es decir, la meanAveragePrecision media de todos los boundingBoxMetrics.

Obtener métricas de evaluación

Puede obtener un conjunto agregado de métricas de evaluación de su modelo y, en algunos objetivos, métricas de evaluación de una clase o etiqueta concretas. Las métricas de evaluación de una clase o una etiqueta concretas también se conocen como porción de evaluación. En el siguiente contenido se describe cómo obtener métricas de evaluación agregadas y segmentos de evaluación mediante la Google Cloud consola o la API.

Google Cloud consola

  1. En la Google Cloud consola, en la sección Vertex AI, ve a la página Modelos.

    Ir a la página Modelos

  2. En el menú desplegable Región, selecciona la región en la que se encuentra tu modelo.

  3. En la lista de modelos, haga clic en el que quiera. Se abrirá la pestaña Evaluar del modelo.

    En la pestaña Evaluar, puedes ver las métricas de evaluación agregadas de tu modelo, como la precisión media y el recuerdo.

    Si el objetivo del modelo tiene sectores de evaluación, la consola muestra una lista de etiquetas. Puede hacer clic en una etiqueta para ver las métricas de evaluación de esa etiqueta, como se muestra en el siguiente ejemplo:

    Selección de etiquetas en la consola

API

Las solicitudes de la API para obtener métricas de evaluación son las mismas para cada tipo de datos y objetivo, pero las salidas son diferentes. En los siguientes ejemplos se muestra la misma solicitud, pero con diferentes respuestas.

Obtener métricas de evaluación de modelos agregadas

Las métricas de evaluación de modelos agregadas proporcionan información sobre el modelo en su conjunto. Para ver información sobre un segmento específico, consulta la lista de segmentos de evaluación de modelos.

Para ver las métricas de evaluación agregadas del modelo, usa el método projects.locations.models.evaluations.get.

En el caso de la métrica de cuadro delimitador, Vertex AI devuelve una matriz de valores de métrica con diferentes valores de umbral de IoU (entre 0 y 1) y de umbral de confianza (entre 0 y 1). Por ejemplo, puedes centrarte en las métricas de evaluación con un umbral de IoU de 0,85 y un umbral de confianza de 0,8228. Si consultas estos diferentes valores de umbral, puedes ver cómo afectan a otras métricas, como la precisión y la recuperación.

Selecciona la pestaña correspondiente a tu idioma o entorno:

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION: región en la que se almacena el modelo.
  • PROJECT: tu ID de proyecto.
  • MODEL_ID: ID del recurso de modelo.
  • PROJECT_NUMBER: el número de proyecto que se genera automáticamente.
  • EVALUATION_ID: ID de la evaluación del modelo (aparece en la respuesta).

Método HTTP y URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations"

PowerShell

Ejecuta el comando siguiente:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

Java

Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.


import com.google.cloud.aiplatform.v1.ModelEvaluation;
import com.google.cloud.aiplatform.v1.ModelEvaluationName;
import com.google.cloud.aiplatform.v1.ModelServiceClient;
import com.google.cloud.aiplatform.v1.ModelServiceSettings;
import java.io.IOException;

public class GetModelEvaluationImageObjectDetectionSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // To obtain evaluationId run the code block below after setting modelServiceSettings.
    //
    // try (ModelServiceClient modelServiceClient = ModelServiceClient.create(modelServiceSettings))
    // {
    //   String location = "us-central1";
    //   ModelName modelFullId = ModelName.of(project, location, modelId);
    //   ListModelEvaluationsRequest modelEvaluationsrequest =
    //   ListModelEvaluationsRequest.newBuilder().setParent(modelFullId.toString()).build();
    //   for (ModelEvaluation modelEvaluation :
    //     modelServiceClient.listModelEvaluations(modelEvaluationsrequest).iterateAll()) {
    //       System.out.format("Model Evaluation Name: %s%n", modelEvaluation.getName());
    //   }
    // }
    String project = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    String evaluationId = "YOUR_EVALUATION_ID";
    getModelEvaluationImageObjectDetectionSample(project, modelId, evaluationId);
  }

  static void getModelEvaluationImageObjectDetectionSample(
      String project, String modelId, String evaluationId) throws IOException {
    ModelServiceSettings modelServiceSettings =
        ModelServiceSettings.newBuilder()
            .setEndpoint("us-central1-aiplatform.googleapis.com:443")
            .build();

    // 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 (ModelServiceClient modelServiceClient = ModelServiceClient.create(modelServiceSettings)) {
      String location = "us-central1";
      ModelEvaluationName modelEvaluationName =
          ModelEvaluationName.of(project, location, modelId, evaluationId);

      ModelEvaluation modelEvaluation = modelServiceClient.getModelEvaluation(modelEvaluationName);

      System.out.println("Get Model Evaluation Image Object Detection Response");
      System.out.format("\tName: %s\n", modelEvaluation.getName());
      System.out.format("\tMetrics Schema Uri: %s\n", modelEvaluation.getMetricsSchemaUri());
      System.out.format("\tMetrics: %s\n", modelEvaluation.getMetrics());
      System.out.format("\tCreate Time: %s\n", modelEvaluation.getCreateTime());
      System.out.format("\tSlice Dimensions: %s\n", modelEvaluation.getSliceDimensionsList());
    }
  }
}

Node.js

Antes de probar este ejemplo, sigue las Node.js instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

/**
 * TODO(developer): Uncomment these variables before running the sample
 * (not necessary if passing values as arguments). To obtain evaluationId,
 * instantiate the client and run the following the commands.
 */
// const parentName = `projects/${project}/locations/${location}/models/${modelId}`;
// const evalRequest = {
//   parent: parentName
// };
// const [evalResponse] = await modelServiceClient.listModelEvaluations(evalRequest);
// console.log(evalResponse);

// const modelId = 'YOUR_MODEL_ID';
// const evaluationId = 'YOUR_EVALUATION_ID';
// const project = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION';

// Imports the Google Cloud Model Service Client library
const {ModelServiceClient} = require('@google-cloud/aiplatform');

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: 'us-central1-aiplatform.googleapis.com',
};

// Instantiates a client
const modelServiceClient = new ModelServiceClient(clientOptions);

async function getModelEvaluationImageObjectDetection() {
  // Configure the name resources
  const name = `projects/${project}/locations/${location}/models/${modelId}/evaluations/${evaluationId}`;
  const request = {
    name,
  };

  // Create get model evaluation request
  const [response] = await modelServiceClient.getModelEvaluation(request);

  console.log('Get model evaluation image object detection response');
  console.log(`\tName : ${response.name}`);
  console.log(`\tMetrics schema uri : ${response.metricsSchemaUri}`);
  console.log(`\tCreate time : ${JSON.stringify(response.createTime)}`);
  console.log(`\tSlice dimensions : ${response.sliceDimensions}`);

  const modelExplanation = response.modelExplanation;
  console.log('\tModel explanation');
  if (modelExplanation === null) {
    console.log('\t\t{}');
  } else {
    const meanAttributions = modelExplanation.meanAttributions;
    if (meanAttributions === null) {
      console.log('\t\t\t []');
    } else {
      for (const meanAttribution of meanAttributions) {
        console.log('\t\tMean attribution');
        console.log(
          `\t\t\tBaseline output value : \
            ${meanAttribution.baselineOutputValue}`
        );
        console.log(
          `\t\t\tInstance output value : \
            ${meanAttribution.instanceOutputValue}`
        );
        console.log(
          `\t\t\tFeature attributions : \
            ${meanAttribution.featureAttributions}`
        );
        console.log(`\t\t\tOutput index : ${meanAttribution.outputIndex}`);
        console.log(
          `\t\t\tOutput display name : \
            ${meanAttribution.outputDisplayName}`
        );
        console.log(
          `\t\t\tApproximation error : \
            ${meanAttribution.approximationError}`
        );
      }
    }
  }
}
getModelEvaluationImageObjectDetection();

Python

Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.

from google.cloud import aiplatform


def get_model_evaluation_image_object_detection_sample(
    project: str,
    model_id: str,
    evaluation_id: str,
    location: str = "us-central1",
    api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
    """
    To obtain evaluation_id run the following commands where LOCATION
    is the region where the model is stored, PROJECT is the project ID,
    and MODEL_ID is the ID of your model.

    model_client = aiplatform.gapic.ModelServiceClient(
        client_options={
            'api_endpoint':'LOCATION-aiplatform.googleapis.com'
            }
        )
    evaluations = model_client.list_model_evaluations(parent='projects/PROJECT/locations/LOCATION/models/MODEL_ID')
    print("evaluations:", evaluations)
    """
    # The AI Platform services require regional API endpoints.
    client_options = {"api_endpoint": api_endpoint}
    # Initialize client that will be used to create and send requests.
    # This client only needs to be created once, and can be reused for multiple requests.
    client = aiplatform.gapic.ModelServiceClient(client_options=client_options)
    name = client.model_evaluation_path(
        project=project, location=location, model=model_id, evaluation=evaluation_id
    )
    response = client.get_model_evaluation(name=name)
    print("response:", response)

Mostrar todos los sectores de evaluación

El método projects.locations.models.evaluations.slices.list muestra todos los sectores de evaluación de tu modelo. Debes tener el ID de evaluación del modelo, que puedes obtener cuando consultes las métricas de evaluación agregadas.

Puedes usar los segmentos de evaluación de modelos para determinar el rendimiento del modelo en una etiqueta específica. El campo value indica a qué etiqueta corresponden las métricas.

En el caso de la métrica de cuadro delimitador, Vertex AI devuelve una matriz de valores de métrica con diferentes valores de umbral de IoU (entre 0 y 1) y de umbral de confianza (entre 0 y 1). Por ejemplo, puedes centrarte en las métricas de evaluación con un umbral de IoU de 0,85 y un umbral de confianza de 0,8228. Si consultas estos diferentes valores de umbral, puedes ver cómo afectan a otras métricas, como la precisión y la recuperación.

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION: región en la que se encuentra el modelo. Por ejemplo, us-central1.
  • PROJECT: .
  • MODEL_ID: el ID de tu modelo.
  • EVALUATION_ID: ID de la evaluación del modelo que contiene los segmentos de evaluación que se van a mostrar.

Método HTTP y URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations/EVALUATION_ID/slices

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations/EVALUATION_ID/slices"

PowerShell

Ejecuta el comando siguiente:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations/EVALUATION_ID/slices" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

Java

Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.


import com.google.cloud.aiplatform.v1.ModelEvaluationName;
import com.google.cloud.aiplatform.v1.ModelEvaluationSlice;
import com.google.cloud.aiplatform.v1.ModelEvaluationSlice.Slice;
import com.google.cloud.aiplatform.v1.ModelServiceClient;
import com.google.cloud.aiplatform.v1.ModelServiceSettings;
import java.io.IOException;

public class ListModelEvaluationSliceSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // To obtain evaluationId run the code block below after setting modelServiceSettings.
    //
    // try (ModelServiceClient modelServiceClient = ModelServiceClient.create(modelServiceSettings))
    // {
    //   String location = "us-central1";
    //   ModelName modelFullId = ModelName.of(project, location, modelId);
    //   ListModelEvaluationsRequest modelEvaluationsrequest =
    //   ListModelEvaluationsRequest.newBuilder().setParent(modelFullId.toString()).build();
    //   for (ModelEvaluation modelEvaluation :
    //     modelServiceClient.listModelEvaluations(modelEvaluationsrequest).iterateAll()) {
    //       System.out.format("Model Evaluation Name: %s%n", modelEvaluation.getName());
    //   }
    // }
    String project = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    String evaluationId = "YOUR_EVALUATION_ID";
    listModelEvaluationSliceSample(project, modelId, evaluationId);
  }

  static void listModelEvaluationSliceSample(String project, String modelId, String evaluationId)
      throws IOException {
    ModelServiceSettings modelServiceSettings =
        ModelServiceSettings.newBuilder()
            .setEndpoint("us-central1-aiplatform.googleapis.com:443")
            .build();

    // 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 (ModelServiceClient modelServiceClient = ModelServiceClient.create(modelServiceSettings)) {
      String location = "us-central1";
      ModelEvaluationName modelEvaluationName =
          ModelEvaluationName.of(project, location, modelId, evaluationId);

      for (ModelEvaluationSlice modelEvaluationSlice :
          modelServiceClient.listModelEvaluationSlices(modelEvaluationName).iterateAll()) {
        System.out.format("Model Evaluation Slice Name: %s\n", modelEvaluationSlice.getName());
        System.out.format("Metrics Schema Uri: %s\n", modelEvaluationSlice.getMetricsSchemaUri());
        System.out.format("Metrics: %s\n", modelEvaluationSlice.getMetrics());
        System.out.format("Create Time: %s\n", modelEvaluationSlice.getCreateTime());

        Slice slice = modelEvaluationSlice.getSlice();
        System.out.format("Slice Dimensions: %s\n", slice.getDimension());
        System.out.format("Slice Value: %s\n\n", slice.getValue());
      }
    }
  }
}

Node.js

Antes de probar este ejemplo, sigue las Node.js instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

/**
 * TODO(developer): Uncomment these variables before running the sample
 * (not necessary if passing values as arguments). To obtain evaluationId,
 * instantiate the client and run the following the commands.
 */
// const parentName = `projects/${project}/locations/${location}/models/${modelId}`;
// const evalRequest = {
//   parent: parentName
// };
// const [evalResponse] = await modelServiceClient.listModelEvaluations(evalRequest);
// console.log(evalResponse);

// const modelId = 'YOUR_MODEL_ID';
// const evaluationId = 'YOUR_EVALUATION_ID';
// const project = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION';

// Imports the Google Cloud Model Service Client library
const {ModelServiceClient} = require('@google-cloud/aiplatform');

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: 'us-central1-aiplatform.googleapis.com',
};

// Instantiates a client
const modelServiceClient = new ModelServiceClient(clientOptions);

async function listModelEvaluationSlices() {
  // Configure the parent resources
  const parent = `projects/${project}/locations/${location}/models/${modelId}/evaluations/${evaluationId}`;
  const request = {
    parent,
  };

  // Get and print out a list of all the evaluation slices for this resource
  const [response] =
    await modelServiceClient.listModelEvaluationSlices(request);
  console.log('List model evaluation response', response);
  console.log(response);
}
listModelEvaluationSlices();

Python

Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.

from google.cloud import aiplatform


def list_model_evaluation_slices_sample(
    project: str,
    model_id: str,
    evaluation_id: str,
    location: str = "us-central1",
    api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
    """
    To obtain evaluation_id run the following commands where LOCATION
    is the region where the model is stored, PROJECT is the project ID,
    and MODEL_ID is the ID of your model.

    model_client = aiplatform.gapic.ModelServiceClient(
        client_options={
            'api_endpoint':'LOCATION-aiplatform.googleapis.com'
            }
        )
    evaluations = model_client.list_model_evaluations(parent='projects/PROJECT/locations/LOCATION/models/MODEL_ID')
    print("evaluations:", evaluations)
    """
    # The AI Platform services require regional API endpoints.
    client_options = {"api_endpoint": api_endpoint}
    # Initialize client that will be used to create and send requests.
    # This client only needs to be created once, and can be reused for multiple requests.
    client = aiplatform.gapic.ModelServiceClient(client_options=client_options)
    parent = client.model_evaluation_path(
        project=project, location=location, model=model_id, evaluation=evaluation_id
    )
    response = client.list_model_evaluation_slices(parent=parent)
    for model_evaluation_slice in response:
        print("model_evaluation_slice:", model_evaluation_slice)

Obtener métricas de una sola porción

Para ver las métricas de evaluación de una sola porción, usa el método projects.locations.models.evaluations.slices.get. Debes tener el ID del segmento, que se proporciona cuando muestras todos los segmentos. El siguiente ejemplo se aplica a todos los tipos de datos y objetivos.

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION: región en la que se encuentra el modelo. Por ejemplo, us-central1.
  • PROJECT: .
  • MODEL_ID: el ID de tu modelo.
  • EVALUATION_ID: ID de la evaluación del modelo que contiene el sector de evaluación que se va a obtener.
  • SLICE_ID: ID de un segmento de evaluación que se va a obtener.
  • PROJECT_NUMBER: el número de proyecto que se genera automáticamente.
  • EVALUATION_METRIC_SCHEMA_FILE_NAME: nombre de un archivo de esquema que define las métricas de evaluación que se van a devolver, como classification_metrics_1.0.0.

Método HTTP y URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations/EVALUATION_ID/slices/SLICE_ID

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el comando siguiente:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations/EVALUATION_ID/slices/SLICE_ID"

PowerShell

Ejecuta el comando siguiente:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID/evaluations/EVALUATION_ID/slices/SLICE_ID" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la siguiente:

Java

Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.


import com.google.cloud.aiplatform.v1.ModelEvaluationSlice;
import com.google.cloud.aiplatform.v1.ModelEvaluationSlice.Slice;
import com.google.cloud.aiplatform.v1.ModelEvaluationSliceName;
import com.google.cloud.aiplatform.v1.ModelServiceClient;
import com.google.cloud.aiplatform.v1.ModelServiceSettings;
import java.io.IOException;

public class GetModelEvaluationSliceSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // To obtain evaluationId run the code block below after setting modelServiceSettings.
    //
    // try (ModelServiceClient modelServiceClient = ModelServiceClient.create(modelServiceSettings))
    // {
    //   String location = "us-central1";
    //   ModelName modelFullId = ModelName.of(project, location, modelId);
    //   ListModelEvaluationsRequest modelEvaluationsrequest =
    //   ListModelEvaluationsRequest.newBuilder().setParent(modelFullId.toString()).build();
    //   for (ModelEvaluation modelEvaluation :
    //     modelServiceClient.listModelEvaluations(modelEvaluationsrequest).iterateAll()) {
    //       System.out.format("Model Evaluation Name: %s%n", modelEvaluation.getName());
    //   }
    // }
    String project = "YOUR_PROJECT_ID";
    String modelId = "YOUR_MODEL_ID";
    String evaluationId = "YOUR_EVALUATION_ID";
    String sliceId = "YOUR_SLICE_ID";
    getModelEvaluationSliceSample(project, modelId, evaluationId, sliceId);
  }

  static void getModelEvaluationSliceSample(
      String project, String modelId, String evaluationId, String sliceId) throws IOException {
    ModelServiceSettings modelServiceSettings =
        ModelServiceSettings.newBuilder()
            .setEndpoint("us-central1-aiplatform.googleapis.com:443")
            .build();

    // 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 (ModelServiceClient modelServiceClient = ModelServiceClient.create(modelServiceSettings)) {
      String location = "us-central1";
      ModelEvaluationSliceName modelEvaluationSliceName =
          ModelEvaluationSliceName.of(project, location, modelId, evaluationId, sliceId);

      ModelEvaluationSlice modelEvaluationSlice =
          modelServiceClient.getModelEvaluationSlice(modelEvaluationSliceName);

      System.out.println("Get Model Evaluation Slice Response");
      System.out.format("Model Evaluation Slice Name: %s\n", modelEvaluationSlice.getName());
      System.out.format("Metrics Schema Uri: %s\n", modelEvaluationSlice.getMetricsSchemaUri());
      System.out.format("Metrics: %s\n", modelEvaluationSlice.getMetrics());
      System.out.format("Create Time: %s\n", modelEvaluationSlice.getCreateTime());

      Slice slice = modelEvaluationSlice.getSlice();
      System.out.format("Slice Dimensions: %s\n", slice.getDimension());
      System.out.format("Slice Value: %s\n", slice.getValue());
    }
  }
}

Node.js

Antes de probar este ejemplo, sigue las Node.js instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

/**
 * TODO(developer): Uncomment these variables before running the sample
 * (not necessary if passing values as arguments). To obtain evaluationId,
 * instantiate the client and run the following the commands.
 */
// const parentName = `projects/${project}/locations/${location}/models/${modelId}`;
// const evalRequest = {
//   parent: parentName
// };
// const [evalResponse] = await modelServiceClient.listModelEvaluations(evalRequest);
// console.log(evalResponse);

// const modelId = 'YOUR_MODEL_ID';
// const evaluationId = 'YOUR_EVALUATION_ID';
// const sliceId = 'YOUR_SLICE_ID';
// const project = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION';

// Imports the Google Cloud Model Service client library
const {ModelServiceClient} = require('@google-cloud/aiplatform');
// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: 'us-central1-aiplatform.googleapis.com',
};
// Specifies the location of the api endpoint
const modelServiceClient = new ModelServiceClient(clientOptions);

async function getModelEvaluationSlice() {
  // Configure the parent resource
  const name = `projects/${project}/locations/${location}/models/${modelId}/evaluations/${evaluationId}/slices/${sliceId}`;
  const request = {
    name,
  };

  // Get and print out a list of all the endpoints for this resource
  const [response] =
    await modelServiceClient.getModelEvaluationSlice(request);

  console.log('Get model evaluation slice');
  console.log(`\tName : ${response.name}`);
  console.log(`\tMetrics_Schema_Uri : ${response.metricsSchemaUri}`);
  console.log(`\tMetrics : ${JSON.stringify(response.metrics)}`);
  console.log(`\tCreate time : ${JSON.stringify(response.createTime)}`);

  console.log('Slice');
  const slice = response.slice;
  console.log(`\tDimension :${slice.dimension}`);
  console.log(`\tValue :${slice.value}`);
}
getModelEvaluationSlice();

Python

Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.

from google.cloud import aiplatform


def get_model_evaluation_slice_sample(
    project: str,
    model_id: str,
    evaluation_id: str,
    slice_id: str,
    location: str = "us-central1",
    api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
    """
    To obtain evaluation_id run the following commands where LOCATION
    is the region where the model is stored, PROJECT is the project ID,
    and MODEL_ID is the ID of your model.

    model_client = aiplatform.gapic.ModelServiceClient(
        client_options={
            'api_endpoint':'LOCATION-aiplatform.googleapis.com'
            }
        )
    evaluations = model_client.list_model_evaluations(parent='projects/PROJECT/locations/LOCATION/models/MODEL_ID')
    print("evaluations:", evaluations)
    """
    # The AI Platform services require regional API endpoints.
    client_options = {"api_endpoint": api_endpoint}
    # Initialize client that will be used to create and send requests.
    # This client only needs to be created once, and can be reused for multiple requests.
    client = aiplatform.gapic.ModelServiceClient(client_options=client_options)
    name = client.model_evaluation_slice_path(
        project=project,
        location=location,
        model=model_id,
        evaluation=evaluation_id,
        slice=slice_id,
    )
    response = client.get_model_evaluation_slice(name=name)
    print("response:", response)

Iterar el modelo

Las métricas de evaluación de modelos proporcionan un punto de partida para depurar tu modelo cuando no cumple tus expectativas. Por ejemplo, si las puntuaciones de precisión y recuperación son bajas, puede que tu modelo necesite más datos de entrenamiento o que tenga etiquetas incoherentes. Una precisión y una recuperación perfectas pueden indicar que los datos de prueba son demasiado fáciles de predecir y que es posible que no se generalicen bien.

Puedes iterar en tus datos de entrenamiento y crear un nuevo modelo. Después de crear un modelo, puedes comparar las métricas de evaluación del modelo anterior con las del nuevo.

Las siguientes sugerencias pueden ayudarte a mejorar los modelos que etiquetan elementos, como los modelos de detección de objetos:

  • Te recomendamos que añadas más ejemplos o una gama más amplia de ejemplos a tus datos de entrenamiento. Por ejemplo, en el caso de un modelo de detección de objetos de imagen, puedes incluir imágenes con un ángulo más amplio, con una resolución más alta o más baja, o con diferentes puntos de vista. Para obtener más información, consulta Preparar datos.
  • Te recomendamos que quites las clases o las etiquetas que no tengan muchos ejemplos. Si no hay suficientes ejemplos, el modelo no podrá hacer predicciones sobre esas clases o etiquetas de forma coherente y con confianza.
  • Las máquinas no pueden interpretar el nombre de tus clases o etiquetas y no entienden las diferencias entre ellas, como "puerta" y "puerta_con_pomo". Debes proporcionar datos para ayudar a las máquinas a reconocer estos matices.
  • Aumenta tus datos con más ejemplos de verdaderos positivos y verdaderos negativos, sobre todo ejemplos que estén cerca de un límite de decisión, para mitigar la confusión del modelo.
  • Especifica tu propia división de datos (entrenamiento, validación y prueba). Vertex AI asigna elementos aleatoriamente a cada conjunto. Por lo tanto, los casi duplicados se pueden asignar a los conjuntos de entrenamiento y de validación, lo que podría provocar un sobreajuste y, por lo tanto, un rendimiento deficiente en el conjunto de pruebas. Para obtener más información sobre cómo configurar tu propia división de datos, consulta el artículo Acerca de las divisiones de datos para los modelos de AutoML.
  • Si las métricas de evaluación de tu modelo incluyen una matriz de confusión, puedes ver si el modelo confunde dos etiquetas, es decir, si predice una etiqueta concreta con mucha más frecuencia que la etiqueta real. Revisa tus datos y asegúrate de que los ejemplos estén etiquetados correctamente.
  • Si el tiempo de entrenamiento ha sido breve (un número máximo de horas de nodo bajo), puedes obtener un modelo de mayor calidad si le permites entrenar durante más tiempo (un número máximo de horas de nodo más alto).