Antes de comenzar la evaluación continua

Para poder usar la evaluación continua, primero debes completar las dos siguientes tareas:

  • Capacitar y, luego, implementar una versión del modelo en AI Platform Prediction para su evaluación
  • Habilitar las API de Google Cloud necesarias para la evaluación continua

Implementa una versión del modelo en AI Platform Prediction

Con el Servicio de etiquetado de datos de AI Platform, solo se puede realizar la evaluación continua en los modelos de aprendizaje automático que hayas implementado en AI Platform Prediction. Cuando creas un trabajo de evaluación, lo adjuntas a una versión del modelo de AI Platform Prediction. Cada versión del modelo solo puede tener un trabajo de evaluación conectado.

Para obtener una introducción sobre el entrenamiento de un modelo de aprendizaje automático y su implementación como una versión del modelo en AI Platform Prediction, consulta la guía de introducción al entrenamiento y la predicción con Keras.

Requisitos de la versión del modelo

En la evaluación continua, se admiten varios tipos de modelos de aprendizaje automático:

Tipos de modelos
Clasificación de imágenes Un modelo en el que se toma una imagen como entrada y se muestran una o más etiquetas como resultado. La imagen de entrada se puede proporcionar como una imagen codificada en base64 o una ruta de acceso a un archivo de Cloud Storage.
Clasificación de texto Un modelo en el que se toma texto como entrada y se muestran una o más etiquetas como salida.
Clasificación general Un modelo en el que se toma un arreglo o string arbitrarios como entrada y se muestran una o más etiquetas como resultado.

Con el Servicio de etiquetado de datos no se pueden asignar revisores manuales a fin de proporcionar etiquetas de verdad fundamental para la clasificación general. Si configuras la evaluación continua para un modelo de clasificación general, debes etiquetar tú mismo las etiquetas de verdad fundamental.
Detección de objetos de imagen Un modelo en el que se toma una imagen como entrada y se muestran uno o más cuadros de límite etiquetados como resultado. Con estos cuadros de límite, se predicen las ubicaciones de los objetos en la imagen.

En función de la tarea que realice tu modelo de aprendizaje automático, debes entrenarlo de forma que la versión del modelo implementada acepte la entrada de la predicción en línea y produzca la salida de esta predicción en un formato específico compatible con la evaluación continua.

Ten en cuenta que, con las especificaciones de la siguiente sección, se extienden los requisitos del cuerpo JSON para las respuestas y solicitudes de la predicción en línea en AI Platform Prediction. En la actualidad, con la evaluación continua solo se realiza un muestreo de las predicciones en línea; no se toman muestras de las predicciones en lote. Obtén más información sobre las diferencias entre las predicciones en línea y en lote.

Los campos destacados en los ejemplos son obligatorios para la evaluación continua. Puedes incluir campos adicionales en la entrada y la salida de la predicción, pero el Servicio de etiquetado de datos los ignorará cuando les asigne tu entrada a los revisores manuales para el etiquetado de verdad fundamental y cuando calcule las métricas de evaluación.

Las claves de los campos destacados (yourDataKey, yourLabelKey, yourScoreKey y yourBoundingBoxKey) se pueden reemplazar por cualquier string que elijas, siempre que en las strings no se incluya el carácter /. Debes especificar cuáles son estas strings cuando creas tu trabajo de evaluación.

En la sección siguiente, se describen los requisitos de cada tipo de modelo:

Clasificación de imágenes

Formato de entrada

En tu modelo, se deben recibir solicitudes de predicción en línea con el siguiente formato:

{
  "instances": [
    {
      "yourDataKey": <image input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

<image input (string)> puede ser una de las siguientes opciones:

  • Una imagen codificada en base64
  • El URI de una imagen almacenada en Cloud Storage. A fin de garantizar que el Servicio de etiquetado de datos tenga permiso para leer la imagen, el depósito de Cloud Storage debe estar en el mismo proyecto de Google Cloud en el que creas el trabajo de evaluación.
Ejemplo codificado en base64

En el siguiente ejemplo, se muestra un cuerpo de solicitud de predicción en línea con una imagen codificada en base64:

{
  "instances": [
    {
      "image_bytes": {
        "b64": "iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAhUlEQVR4AWOAgZeONnHvHcXiGJDBqyDTXa+dVC888oy51F9+eRdY8NdWwYz/RyT//znEsAjEt277+syt5VMJw989DM/+H2MI/L8tVBQk4d38xcWp7ctLhi97ZCZ0rXV6yLA4b6dH59sjTq3fnji1fp4AsWS5j7PXstRg+/b3gU7N351AQgA8+jkf43sjaQAAAABJRU5ErkJggg=="
      }
    }
  ]
}

Ten en cuenta que, en este ejemplo, los datos de entrada están anidados en el campo image_bytes. Si en tu modelo se aceptan entradas de predicción como esta, asegúrate de especificar la estructura anidada cuando crees tu trabajo de evaluación.

Ejemplo de referencia de Cloud Storage

En el siguiente ejemplo, se muestra un cuerpo de solicitud de predicción en línea con una referencia a una imagen en Cloud Storage:

{
  "instances": [
    {
      "image_path": "gs://cloud-samples-data/datalabeling/image/flower_1.jpeg"
    }
  ]
}

Formato de resultado

En tu modelo, se deben mostrar predicciones en línea con el siguiente formato:

{
  "predictions": [
    {
      "yourLabelKey": [
        <label (string)>,
        <additional label (string)>,
        ...
      ],
      "yourScoreKey": [
        <score (number)>,
        <additional score (number)>,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

Los arreglos de etiquetas y de puntuaciones deben tener la misma longitud. Si en tu modelo se realiza la clasificación con una sola etiqueta, debe haber una etiqueta y una puntuación. Si en tu modelo se realiza la clasificación con varias etiquetas, cada etiqueta en el arreglo debe corresponder a la puntuación del mismo índice en el arreglo de puntuaciones.

Las puntuaciones son obligatorias. En ellas se representan la confianza o probabilidad que tu modelo de aprendizaje automático asigna a sus predicciones. Por lo general, en los modelos se selecciona una etiqueta mediante la comparación entre la puntuación calculada para una entrada en particular y un umbral de clasificación.

Ejemplo de resultado de clasificación

En el siguiente ejemplo, se muestra un cuerpo de respuesta de predicción en línea para la clasificación:

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

Clasificación de texto

Formato de entrada

En tu modelo, se deben recibir solicitudes de predicción en línea con el siguiente formato:

{
  "instances": [
    {
      "yourDataKey": <text input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
Ejemplo de entrada de texto

En el siguiente ejemplo, se muestra un cuerpo de solicitud de predicción en línea con datos de texto:

{
  "instances": [
    {
      "text": "If music be the food of love, play on;"
    }
  ]
}

Formato de resultado

En tu modelo, se deben mostrar predicciones en línea con el siguiente formato:

{
  "predictions": [
    {
      "yourLabelKey": [
        <label (string)>,
        <additional label (string)>,
        ...
      ],
      "yourScoreKey": [
        <score (number)>,
        <additional score (number)>,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

Los arreglos de etiquetas y de puntuaciones deben tener la misma longitud. Si en tu modelo se realiza la clasificación con una sola etiqueta, debe haber una etiqueta y una puntuación. Si en tu modelo se realiza la clasificación con varias etiquetas, cada etiqueta en el arreglo debe corresponder a la puntuación del mismo índice en el arreglo de puntuaciones.

Las puntuaciones son obligatorias. En ellas se representan la confianza o probabilidad que tu modelo de aprendizaje automático asigna a sus predicciones. Por lo general, en los modelos se selecciona una etiqueta mediante la comparación entre la puntuación calculada para una entrada en particular y un umbral de clasificación.

Ejemplo de resultado de clasificación

En el siguiente ejemplo, se muestra un cuerpo de respuesta de predicción en línea para la clasificación:

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

Clasificación general

Formato de entrada

En tu modelo, se deben recibir solicitudes de predicción en línea con el siguiente formato:

{
  "instances": [
    {
      "yourDataKey": <input data (string or array)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
Ejemplo de entrada general

En el siguiente ejemplo, se muestra un cuerpo de solicitud de predicción en línea con un arreglo de datos de entrada que contiene strings y números:

{
  "instances": [
    {
      "weather": [
        "sunny",
        72,
        0.22
      ]
    }
  ]
}

Formato de resultado

En tu modelo, se deben mostrar predicciones en línea con el siguiente formato:

{
  "predictions": [
    {
      "yourLabelKey": [
        <label (string)>,
        <additional label (string)>,
        ...
      ],
      "yourScoreKey": [
        <score (number)>,
        <additional score (number)>,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

Los arreglos de etiquetas y de puntuaciones deben tener la misma longitud. Si en tu modelo se realiza la clasificación con una sola etiqueta, debe haber una etiqueta y una puntuación. Si en tu modelo se realiza la clasificación con varias etiquetas, cada etiqueta en el arreglo debe corresponder a la puntuación del mismo índice en el arreglo de puntuaciones.

Las puntuaciones son obligatorias. En ellas se representan la confianza o probabilidad que tu modelo de aprendizaje automático asigna a sus predicciones. Por lo general, en los modelos se selecciona una etiqueta mediante la comparación entre la puntuación calculada para una entrada en particular y un umbral de clasificación.

Ejemplo de resultado de clasificación

En el siguiente ejemplo, se muestra un cuerpo de respuesta de predicción en línea para la clasificación:

{
  "predictions": [
    {
      "sentiments": [
        "happy"
      ],
      "confidence": [
        "0.8"
      ]
    }
  ]
}

Detección de objetos de imagen

Formato de entrada

En tu modelo, se deben recibir solicitudes de predicción en línea con el siguiente formato:

{
  "instances": [
    {
      "yourDataKey": <image input (string)>,
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

<image input (string)> puede ser una de las siguientes opciones:

  • Una imagen codificada en base64
  • El URI de una imagen almacenada en Cloud Storage. A fin de garantizar que el Servicio de etiquetado de datos tenga permiso para leer la imagen, el depósito de Cloud Storage debe estar en el mismo proyecto de Google Cloud en el que creas el trabajo de evaluación.
Ejemplo codificado en base64

En el siguiente ejemplo, se muestra un cuerpo de solicitud de predicción en línea con una imagen codificada en base64:

{
  "instances": [
    {
      "image_bytes": {
        "b64": "iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAhUlEQVR4AWOAgZeONnHvHcXiGJDBqyDTXa+dVC888oy51F9+eRdY8NdWwYz/RyT//znEsAjEt277+syt5VMJw989DM/+H2MI/L8tVBQk4d38xcWp7ctLhi97ZCZ0rXV6yLA4b6dH59sjTq3fnji1fp4AsWS5j7PXstRg+/b3gU7N351AQgA8+jkf43sjaQAAAABJRU5ErkJggg=="
      }
    }
  ]
}

Ten en cuenta que, en este ejemplo, los datos de entrada están anidados en el campo image_bytes. Si en tu modelo se aceptan entradas de predicción como esta, asegúrate de especificar la estructura anidada cuando crees tu trabajo de evaluación.

Ejemplo de referencia de Cloud Storage

En el siguiente ejemplo, se muestra un cuerpo de solicitud de predicción en línea con una referencia a una imagen en Cloud Storage:

{
  "instances": [
    {
      "image_path": "gs://cloud-samples-data/datalabeling/image/flower_1.jpeg"
    }
  ]
}

Formato de resultado

En tu modelo, se deben mostrar predicciones en línea con el siguiente formato:

{
  "predictions": [
    {
      "yourBoundingBoxKey": [
        {
          "top_left": {
            "x": <left coordinate for first box>,
            "y": <top coordinate for first box>
          },
          "bottom_right": {
            "x": <right coordinate for first box>,
            "y": <bottom coordinate for first box>
          },
        },
        ...
      ],
      "yourLabelKey": [
        <label for first box>,
        ...
      ],
      "yourScoreKey": [
        <score for first box,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}

Todos los arreglos de cuadros de límite, de etiquetas y de puntuaciones deben tener la misma longitud. Cada entrada en el arreglo de cuadros de límite debe estar etiquetada por una etiqueta del mismo índice en el arreglo de etiquetas y corresponder a una puntuación del mismo índice en el arreglo de puntuaciones. Por ejemplo, la entrada yourBoundingBoxKey[0] está etiquetada por yourLabelKey[0] y tiene una puntuación de yourScoreKey[0].

Las puntuaciones son obligatorias. En ellas se representan la confianza o probabilidad que tu modelo de aprendizaje automático asigna a sus predicciones. Por lo general, en los modelos se selecciona una etiqueta mediante la comparación entre la puntuación calculada para una entrada en particular y un umbral de clasificación.

Formato de salida alternativo

Si usas la string detection_boxes en yourBoundingBoxKey, la string detection_classes en yourLabelKey y la string detection_scores en yourScoreKey, puedes usar el siguiente formato para tu resultdo de predicción en lugar del formato estándar:

{
  "predictions": [
    {
      "detection_boxes": [
        {
          "x_min": <left coordinate for first box>,
          "y_min": <top coordinate for first box>,
          "x_max": <right coordinate for first box>,
          "y_max": <bottom coordinate for first box>
        },
        ...
      ],
      "detection_classes": [
        <label for first box>,
        ...
      ],
      "detection_scores": [
        <score for first box,
        ...
      ],
      <optional additional key>: <any JSON data type>,
      ...
    },
    ...
  ]
}
Ejemplo de salida de detección de objetos

En el siguiente ejemplo, se muestra un cuerpo de respuesta de predicción en línea para la detección de objetos:

{
  "predictions": [
    {
      "bird_locations": [
        {
          "top_left": {
            "x": 53,
            "y": 22
          },
          "bottom_right": {
            "x": 98,
            "y": 150
          }
        }
      ],
      "species": [
        "rufous hummingbird"
      ],
      "probability": [
        0.77
      ]
    }
  ]
}

Habilita las API

Debes habilitar varias API de Google Cloud antes de poder usar la evaluación continua. En los pasos siguientes, se supone que ya habilitaste la API de entrenamiento y predicción de AI Platform en el mismo proyecto cuando implementaste una versión del modelo en AI Platform Prediction.

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En la página de selección de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página de selección de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  4. Habilita las API de Data Labeling Service and BigQuery.

    Habilita las API

Próximos pasos

Lee la guía para crear un trabajo de evaluación a fin de comenzar a usar la evaluación continua.