Anota imágenes con la función ML.ANNOTATE_IMAGE

En este instructivo, se explica cómo usar la función ML.ANNOTATE_IMAGE para extraer estadísticas a partir de datos de imágenes no estructurados. Cuando trabajas con grandes repositorios de imágenes, es posible que debas categorizar los archivos automáticamente, detectar objetos específicos o extraer propiedades de las imágenes para que el conjunto de datos se pueda buscar. Si creas un modelo remoto de BigQuery ML que se conecta a la API de Cloud Vision, puedes realizar estas tareas de análisis de imágenes directamente en una tabla de objetos de BigQuery con SQL estándar, lo que elimina la necesidad de mover archivos o compilar canalizaciones de datos complejas.

Objetivos

  • Crea un conjunto de datos y una conexión de recursos.
  • Crea una tabla de objetos para los archivos de imágenes almacenados en Cloud Storage.
  • Crea un modelo remoto que se conecte a la API de Cloud Vision.
  • Anota imágenes con la función ML.ANNOTATE_IMAGE.

Costos

En este documento, usarás los siguientes componentes facturables de Cloud de Confiance by S3NS:

Antes de comenzar

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Enable the BigQuery, BigQuery Connection API, and Cloud Vision API APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Roles obligatorios

Si quieres obtener los permisos que necesitas para completar este instructivo, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Crea un conjunto de datos

Para crear un conjunto de datos de BigQuery, selecciona una de las siguientes opciones:

Console

  1. En la consola de Cloud de Confiance , ve a la página BigQuery.

    Ir a BigQuery

  2. En el panel de la izquierda, haz clic en Explorar.

    Botón destacado del panel Explorador.

    Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.

  3. En Explorador, expande tu proyecto y, luego, haz clic en Conjuntos de datos.

  4. En la página Conjuntos de datos, haz clic en Crear conjunto de datos.

  5. En el panel Crear conjunto de datos, haz lo siguiente:

    • En ID del conjunto de datos, ingresa bqml_tutorial.

    • En Ubicación de los datos, selecciona US.

    Deja el resto de la configuración predeterminada como está.

  6. Haz clic en Crear conjunto de datos.

bq

Para crear un conjunto de datos nuevo, usa el comando bq mk --dataset.

  1. Crea un conjunto de datos llamado bqml_tutorial con la ubicación de los datos establecida en US:

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. Confirma que se haya creado el conjunto de datos:

    bq ls

API

Llama al método datasets.insert con un recurso de conjunto de datos definido:

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

Crea una tabla de objetos

Crea una tabla de objetos llamada my_object_table que tenga contenido de imágenes. La tabla de objetos permite analizar las imágenes sin transferirlas desde Cloud Storage.

El bucket de Cloud Storage que usa la tabla de objetos debe estar en el mismo proyecto en el que planeas crear el modelo y llamar a la función ML.ANNOTATE_IMAGE. Si deseas llamar a la función ML.ANNOTATE_IMAGE en un proyecto diferente al que contiene el bucket de Cloud Storage que usa la tabla de objetos, debes otorgar la función de administrador de almacenamiento en a nivel del bucket.

Crear un modelo

Crea un modelo remoto llamado my_model con un REMOTE_SERVICE_TYPE de CLOUD_AI_VISION_V1:

CREATE OR REPLACE MODEL
`PROJECT_ID.bqml_tutorial.my_model`
REMOTE WITH CONNECTION DEFAULT
OPTIONS (REMOTE_SERVICE_TYPE = 'CLOUD_AI_VISION_V1');

Reemplaza PROJECT_ID con el ID del proyecto.

Anotar imágenes

Usa la función ML.ANNOTATE_IMAGE con tus características preferidas para anotar imágenes en la tabla de objetos.

  1. Para etiquetar los elementos que se muestran en las imágenes, usa la función ML.ANNOTATE_IMAGE con la función label_detection:

    SELECT *
    FROM ML.ANNOTATE_IMAGE(
    MODEL `PROJECT_ID.bqml_tutorial.my_model`,
    TABLE `PROJECT_ID.bqml_tutorial.my_object_table`,
    STRUCT(['label_detection'] AS vision_features)
    );

    Reemplaza PROJECT_ID con el ID del proyecto.

  2. Para detectar los rostros que se muestran en las imágenes y devolver atributos de imagen, como los colores predominantes, usa la función ML.ANNOTATE_IMAGE con las funciones face_detection y image_properties:

    SELECT *
    FROM ML.ANNOTATE_IMAGE(
    MODEL `PROJECT_ID.bqml_tutorial.my_model`,
    TABLE `PROJECT_ID.bqml_tutorial.my_object_table`,
    STRUCT(['face_detection', 'image_properties'] AS vision_features)
    );

    Reemplaza PROJECT_ID con el ID del proyecto.

Realiza una limpieza

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Borra el proyecto

Console

  1. En la Cloud de Confiance consola, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

gcloud

    Borra un Cloud de Confiance proyecto:

    gcloud projects delete PROJECT_ID

Borra los recursos individuales

Si planeas conservar el proyecto que usaste para este instructivo, puedes evitar que se apliquen cargos adicionales borrando los recursos individuales que creaste:

  1. Borra el conjunto de datos: Si borras el conjunto de datos, también se quitarán el modelo remoto y la tabla de objetos que creaste en él.

    • En la consola de Cloud de Confiance , ve a BigQuery Studio.
    • En el panel Explorador, expande tu proyecto y selecciona el conjunto de datos que creaste.
    • Haz clic en Ver acciones y, luego, en Borrar.
    • En el diálogo, escribe delete y, luego, haz clic en Borrar.
  2. Borra la conexión:

    • En el panel Explorador, expande el nombre de tu proyecto y haz clic en Conexiones.
    • Haz clic en el ícono Ver acciones junto a la conexión que creaste y selecciona Borrar.
    • En el diálogo, haz clic en Borrar para confirmar.

¿Qué sigue?