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 anotaciones a la imagen en función de los objetos que identificó el modelo.
La vida útil máxima de un modelo personalizado es de 18 meses. Debes crear y entrenar un modelo nuevo para seguir anotando contenido después de ese tiempo.
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 ubicación 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 de una imagen en Google Cloud Storage. Por ejemplo:
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/IOD926615623331479552", "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 (IOD926615623331479552
, 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/IOD926615623331479552", "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 la detección de objetos 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 detección de objetos 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 detección de objetos de AutoML Vision para Ruby.
Archivos JSONL de salida
Una vez que la tarea de predicción por lotes se completa, el resultado de la predicción se almacena en la ubicación de Google Cloud Storage que especificaste en el comando.
En la ubicación de almacenamiento del resultado (con el prefijo de objeto que elegiste), se crearán los archivos image_object_detection_1.jsonl
, image_object_detection_2.jsonl
e image_object_detection_N.jsonl
, en los que N puede ser 1 y depende de la cantidad total de anotaciones y predicciones de imágenes realizadas de forma correcta.
Una imagen se enumerará una sola vez con todas las 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”: “<id_value>” de la imagen seguido de una lista de cero o más archivos .proto AnnotationPayload
(llamados anotaciones), que tienen un detalle imageObjectDetection
propagado.
Archivo JSONL de ejemplo (un solo archivo .jsonl con 2 líneas o anotaciones de archivo):
image_object_detection_0.jsonl
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 Bibliotecas cliente.
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 la detección de objetos 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 detección de objetos 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 detección de objetos de AutoML Vision para Ruby.