Esta página foi traduzida pela API Cloud Translation.
Switch to English

Como avaliar modelos

Depois de treinar um modelo, a classificação do AutoML Video Intelligence usa itens do conjunto TEST para avaliar a qualidade e a acurácia desse modelo.

Na classificação do AutoML Video Intelligence, há um conjunto agregado de métricas de avaliação que indicam o desempenho geral do modelo e outras para cada rótulo de categoria que especificam o desempenho do modelo para o rótulo.

  • AuPRC: área sob a curva de recall/precisão (em inglês), também conhecida como "precisão média". Normalmente entre 0,5 e 1. Valores mais altos indicam modelos mais precisos.

  • As curvas de limite de confiança mostram como diferentes limites de confiança afetam a precisão, o recall e as taxas de resultados verdadeiros e falsos positivos. Leia sobre o relacionamento de precisão e recall.

Use esses dados para avaliar a prontidão do seu modelo. Baixa pontuação de AUC ou baixas pontuações de precisão e recall podem indicar que o modelo precisa de dados de treinamento extras ou tem rótulos inconsistentes. Uma pontuação de AUC muito alta e precisão e recall perfeitos poderiam indicar que os dados são fáceis demais e têm pouca capacidade de generalização.

Conseguir valores de avaliação do modelo

IU da Web

  1. Abra a página Modelos na IU do AutoML Video.

  2. Clique na linha do modelo que você quer avaliar.

  3. Clique na guia Avaliar.

    Se o treinamento do modelo tiver sido concluído, o AutoML Video mostrará as métricas de avaliação.

    Guia "Avaliar" com informações do modelo
  4. Para visualizar as métricas de um rótulo específico, selecione o nome dele na lista na parte inferior da página.

REST e LINHA DE CMD

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • model-name: o nome completo do modelo, com base na resposta de quando você o criou. O nome completo tem o formato: projects/project-number/locations/location-id/models/model-id

Método HTTP e URL:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Execute o comando a seguir:

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

PowerShell

Execute o comando a seguir:

$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
A resposta inclui um recurso ModelEvaluation para o modelo geral, por exemplo: 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
    )
)

Iterar o modelo

Se você não estiver satisfeito com os níveis de qualidade, volte às etapas anteriores para melhorá-los:

  • Talvez seja necessário adicionar diferentes tipos de vídeos (por exemplo, ângulo amplo, resolução maior ou menor, pontos de vista diferentes).
  • Remova todos os rótulos se não houver vídeos de treinamento suficientes.
  • Lembre-se de que a máquina não consegue ler o nome do rótulo. É apenas uma string aleatória de letras para ela. Se você tem um rótulo que diz "porta" e outro que diz "porta_com_maçaneta", a máquina não tem como descobrir a nuance além dos vídeos fornecidos.
  • Aumente seus dados com mais exemplos de positivos e negativos verdadeiros. Exemplos especialmente importantes são aqueles que estão próximos da fronteira de decisão.

Depois de fazer as alterações, treine e avalie um novo modelo até atingir um nível de qualidade alto o suficiente.