Después de crear (entrenar) un modelo, puedes realizar una solicitud de predicción asíncrona para un lote de imágenes mediante el método batchPredict
. El método batchPredict
aplica etiquetas a la imagen según el objeto principal de esta que predice tu modelo.
La duración máxima de un modelo personalizado es de 18 meses a partir de la versión que estará disponible al público general. Debes crear y entrenar un modelo nuevo para seguir anotando contenido después de ese momento.
Predicción por lotes
Puedes solicitar anotaciones (predicciones) para las imágenes mediante el comando batchPredict
. El comando batchPredict
toma, como entrada, un archivo CSV almacenado en tu bucket de Google Cloud Storage que contiene las rutas de acceso a las imágenes que se anotarán. En cada línea se especifica una ruta de acceso independiente a una imagen en Google Cloud Storage.
batch_prediction.csv
:
gs://my-cloud-storage-bucket/prediction_files/image1.jpg gs://my-cloud-storage-bucket/prediction_files/image2.jpg gs://my-cloud-storage-bucket/prediction_files/image3.jpg gs://my-cloud-storage-bucket/prediction_files/image4.jpg gs://my-cloud-storage-bucket/prediction_files/image5.jpg gs://my-cloud-storage-bucket/prediction_files/image6.png
Según la cantidad de imágenes que especificaste en el archivo CSV, la tarea de predicción por lotes puede tomar un tiempo en completarse. Incluso en una pequeña cantidad de imágenes, la predicción por lotes tomará al menos 30 minutos en completarse.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: El ID del proyecto de GCP
- location-id: Un identificador de ubicación válido. Por el momento, debes usar el siguiente valor:
us-central1
- model-id: Es el ID del modelo, que se muestra en la respuesta que recibiste cuando lo creaste. El ID es el último elemento del nombre del modelo.
Por ejemplo:
- Nombre del modelo:
projects/project-id/locations/location-id/models/IOD4412217016962778756
- ID del modelo:
IOD4412217016962778756
- Nombre del modelo:
- input-storage-path: Es la ruta de acceso a un archivo CSV almacenado en Google Cloud Storage. El usuario que realice la solicitud debe tener, como mínimo, permiso de lectura en el bucket.
- output-storage-bucket: Es un depósito o directorio de Google Cloud Storage para guardar archivos de salida, que se expresa en el siguiente formato:
gs://bucket/directory/
. El usuario que realice la solicitud debe tener permiso de escritura en el bucket.
Consideraciones específicas del campo:
params.score_threshold
: Es un valor entre 0.0 y 1.0. Solo se mostrarán resultados con puntuaciones superiores o iguales a este valor.
Método HTTP y URL:
POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID:batchPredict
Cuerpo JSON de la solicitud:
{ "inputConfig": { "gcsSource": { "inputUris": [ "INPUT_STORAGE_PATH" ] } }, "outputConfig": { "gcsDestination": { "outputUriPrefix": "OUTPUT_STORAGE_BUCKET" } }, "params": { "score_threshold": "0.0" } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID:batchPredict"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID:batchPredict" | Select-Object -Expand Content
Debería ver un resultado similar al siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/ICN926615623331479552", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-06-19T21:28:35.302067Z", "updateTime": "2019-06-19T21:28:35.302067Z", "batchPredictDetails": { "inputConfig": { "gcsSource": { "inputUris": [ "INPUT_STORAGE_PATH" ] } } } } }
Puedes usar el ID de operación (ICN926615623331479552
, en este caso) para obtener el estado de la tarea. Para ver un ejemplo, consulta Trabaja con operaciones de larga duración.
Una vez que la operación se completa, el state
se muestra como DONE
, y los resultados se escriben en el archivo de Google Cloud Storage que especificaste:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/ICN926615623331479552", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-06-19T21:28:35.302067Z", "updateTime": "2019-06-19T21:57:18.310033Z", "batchPredictDetails": { "inputConfig": { "gcsSource": { "inputUris": [ "INPUT_STORAGE_PATH" ] } }, "outputInfo": { "gcsOutputDirectory": "gs://STORAGE_BUCKET_VCM/SUBDIRECTORY/prediction-8370559933346329705-YYYY-MM-DDThh:mm:ss.sssZ" } } }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.automl.v1.BatchPredictResult" } }
Consulta la sección Archivos JSONL de salida para ver un archivo de salida de muestra.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración para este lenguaje en la página Bibliotecas cliente.
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración para este lenguaje en la página Bibliotecas cliente.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración para este lenguaje en la página Bibliotecas cliente.
Idiomas adicionales
C#: sigue las instrucciones de configuración de C# en la página Bibliotecas cliente y, luego, visita la documentación de referencia de AutoML Vision para .NET.
PHP: sigue las instrucciones de configuración de PHP en la página Bibliotecas cliente y, luego, visita la documentación de referencia de AutoML Vision para PHP.
Ruby: sigue las instrucciones de configuración de Ruby en la página Bibliotecas cliente y, luego, visita la documentación de referencia de AutoML Vision para Ruby.
Archivos JSONL de salida
Cuando se completa la tarea de predicción por lotes, el resultado de la predicción se almacena en el bucket de Google Cloud Storage que especificaste en el comando.
En el depósito de salida (si corresponde, en el directorio especificado) se crearán los archivos image_classification_1.jsonl
, image_classification_2.jsonl
,…, image_classification_N.jsonl
, en los que N puede ser 1 y depende de la cantidad total de imágenes y anotaciones que se predijeron con éxito.
Una imagen se enumerará una sola vez con todas sus anotaciones, y estas nunca se dividirán entre los archivos.
Cada archivo JSONL contendrá, por línea, una representación JSON de un proto que une el “ID” de la imagen: “<id_value>” seguido de una lista de cero o más archivos proto AnnotationPayload (llamados anotaciones), que tienen detalles de clasificación propagados.
Ejemplo de un archivo JSONL:
image_image_classification_0.jsonl
: un solo archivo .jsonl con 4 líneas, cada una correspondiente a una anotación de archivo de imagen JSON.
Trabajar con operaciones de larga duración
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- project-id: El ID del proyecto de GCP.
- operation-id: Es el ID de la operación. El ID es el último elemento del nombre de tu operación. Por ejemplo:
- Nombre de la operación:
projects/project-id/locations/location-id/operations/IOD5281059901324392598
- ID de la operación:
IOD5281059901324392598
- Nombre de la operación:
Método HTTP y URL:
GET https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID
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-id" \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID"
PowerShell
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID" | Select-Object -Expand Content
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2018-10-29T15:56:29.176485Z", "updateTime": "2018-10-29T16:10:41.326614Z", "importDataDetails": {} }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
Deberías ver un resultado similar al siguiente para una operación de creación de modelo completada:
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-07-22T18:35:06.881193Z", "updateTime": "2019-07-22T19:58:44.972235Z", "createModelDetails": {} }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.automl.v1.Model", "name": "projects/PROJECT_ID/locations/us-central1/models/MODEL_ID" } }
Go
Antes de probar esta muestra, sigue las instrucciones de configuración para este lenguaje en la página API y referencia > Bibliotecas cliente.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración para este lenguaje en la página API y referencia > Bibliotecas cliente.
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración para este lenguaje en la página API y referencia > Bibliotecas cliente.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración para este lenguaje en la página API y referencia > Bibliotecas cliente.
Idiomas adicionales
C#: sigue las instrucciones de configuración de C# en la página Bibliotecas cliente y, luego, visita la documentación de referencia de AutoML Vision para .NET.
PHP: sigue las instrucciones de configuración de PHP en la página Bibliotecas cliente y, luego, visita la documentación de referencia de AutoML Vision para PHP.
Ruby: sigue las instrucciones de configuración de Ruby en la página Bibliotecas cliente y, luego, visita la documentación de referencia de AutoML Vision para Ruby.