En la siguiente sección, se incluye información sobre los requisitos de datos, el archivo de esquema de entrada/salida y el formato de los archivos de importación de datos (líneas JSONL y CSV) que el esquema define.
Object Detection
Requisitos de los datos
Requisitos generales de imagen | |
---|---|
Tipos de archivos admitidos |
|
Tipos de imágenes | Los modelos de AutoML están optimizados para fotografías de objetos del mundo real. |
Tamaño del archivo de imagen de entrenamiento (MB) | Tamaño máximo: 30 MB. |
Tamaño del archivo de imagen de predicción* (MB) | Tamaño máximo: 1.5 MB. |
Tamaño de la imagen (píxeles) | 1,024 por 1,024 píxeles como máximo sugerido. En imágenes mucho más grandes que 1,024 píxeles por 1,024 píxeles, puede perderse cierta calidad durante el proceso de normalización de imágenes de Vertex AI. |
Requisitos de cuadro de límite y etiquetas | |
---|---|
Los siguientes requisitos se aplican a los conjuntos de datos que se usan para entrenar modelos de AutoML. | |
Etiqueta instancias para entrenamiento | 10 anotaciones (instancias) como mínimo. |
Requisitos de anotación | Para cada etiqueta, debes tener al menos 10 imágenes, cada una con al menos una anotación (cuadro de límite y etiqueta). Sin embargo, para entrenar los modelos, se recomienda el uso de alrededor de 1,000 anotaciones por etiqueta. En general, mientras más imágenes tengas por etiqueta, mejor funcionará el modelo. |
Proporción de etiquetas (de la etiqueta más común a la menos común): | El modelo funciona mejor cuando hay, como máximo, 100 veces más imágenes destinadas a la etiqueta más común que a la menos común. Para el rendimiento del modelo, se recomienda quitar las etiquetas de muy baja frecuencia. |
Longitud perimetral del cuadro de límite | Al menos 0.01 * longitud de un lado de la imagen. Por ejemplo, una imagen de 1,000 * 900 píxeles requeriría cuadros de límite de al menos 10 * 9 píxeles. Tamaño mínimo del cuadro de límite: 8 píxeles por 8 píxeles. |
Los siguientes requisitos se aplican a los conjuntos de datos usados para entrenar modelos de AutoML o modelos personalizados. | |
Cuadros de límite por imagen distinta | Máximo de 500. |
Cuadros de límite que se muestran en una solicitud de predicción | 100 (de forma predeterminada), 500 como máximo. |
Datos de entrenamiento y requisitos de los conjuntos de datos | |
---|---|
Los siguientes requisitos se aplican a los conjuntos de datos que se usan para entrenar modelos de AutoML. | |
Características de la imagen de entrenamiento | Los datos de entrenamiento deben parecerse lo máximo posible a los datos sobre los que se harán las predicciones. Por ejemplo, si tu caso práctico implica imágenes desenfocadas y de baja resolución (como las de una cámara de seguridad), los datos de entrenamiento deben estar compuestos por imágenes con esas características. En general, se recomienda proporcionar imágenes de entrenamiento con varios ángulos, resoluciones y fondos. Por lo general, los modelos de Vertex AI no pueden predecir las etiquetas que las personas no pueden asignar. Por lo tanto, si no se puede entrenar a una persona para que asigne etiquetas con tan solo mirar la imagen durante 1 o 2 segundos, es probable que tampoco se pueda entrenar al modelo para que lo haga. |
Procesamiento previo de imágenes internas | Después de que se importan las imágenes, Vertex AI realiza el procesamiento previo de los datos. Las imágenes procesadas de forma previa son los datos reales que se usaron para entrenar el modelo. El procesamiento previo de imágenes (cambio de tamaño) se produce cuando el borde más pequeño de la imagen es mayor que 1,024 píxeles. En el caso en el que el lado más pequeño de la imagen sea superior a 1,024 píxeles, ese tamaño más pequeño se reduce a 1024 píxeles. Los cuadros de límite especificados y el lado más grande se reducen la misma cantidad que el lado más pequeño. Por lo tanto, las anotaciones reducidas (cuadros de límite y etiquetas) se quitan si tienen menos de 8 x 8 píxeles. Las imágenes con un lado inferior menor o igual que 1,024 píxeles no están sujetas a cambios de tamaño del preprocesamiento. |
Los siguientes requisitos se aplican a los conjuntos de datos usados para entrenar modelos de AutoML o modelos personalizados. | |
Imágenes en cada conjunto de datos | 150,000 como máximo |
Total de cuadros de límite anotados en cada conjunto de datos | 1,000,000 como máximo |
Número de etiquetas en cada conjunto de datos | 1 como mínimo, 1,000 como máximo |
Archivo del esquema YAML
Usa el siguiente archivo de esquema de acceso público para importar anotaciones de detección de objetos en imágenes (cuadros de límite y etiquetas). Este archivo de esquema dicta el formato de los archivos de entrada de datos. La estructura de este archivo sigue el esquema de OpenAPI.
gs://google-cloud-aiplatform/schema/dataset/ioformat/image_bounding_box_io_format_1.0.0.yaml
Archivo del esquema completo
title: ImageBoundingBox description: > Import and export format for importing/exporting images together with bounding box annotations. Can be used in Dataset.import_schema_uri field. type: object required: - imageGcsUri properties: imageGcsUri: type: string description: > A Cloud Storage URI pointing to an image. Up to 30MB in size. Supported file mime types: `image/jpeg`, `image/gif`, `image/png`, `image/webp`, `image/bmp`, `image/tiff`, `image/vnd.microsoft.icon`. boundingBoxAnnotations: type: array description: Multiple bounding box Annotations on the image. items: type: object description: > Bounding box anntoation. `xMin`, `xMax`, `yMin`, and `yMax` are relative to the image size, and the point 0,0 is in the top left of the image. properties: displayName: type: string description: > It will be imported as/exported from AnnotationSpec's display name, i.e. the name of the label/class. xMin: description: The leftmost coordinate of the bounding box. type: number format: double xMax: description: The rightmost coordinate of the bounding box. type: number format: double yMin: description: The topmost coordinate of the bounding box. type: number format: double yMax: description: The bottommost coordinate of the bounding box. type: number format: double annotationResourceLabels: description: Resource labels on the Annotation. type: object additionalProperties: type: string dataItemResourceLabels: description: Resource labels on the DataItem. type: object additionalProperties: type: string
Archivos de entrada
Líneas JSON
JSON en cada línea:
{ "imageGcsUri": "gs://bucket/filename.ext", "boundingBoxAnnotations": [ { "displayName": "OBJECT1_LABEL", "xMin": "X_MIN", "yMin": "Y_MIN", "xMax": "X_MAX", "yMax": "Y_MAX", "annotationResourceLabels": { "aiplatform.googleapis.com/annotation_set_name": "displayName", "env": "prod" } }, { "displayName": "OBJECT2_LABEL", "xMin": "X_MIN", "yMin": "Y_MIN", "xMax": "X_MAX", "yMax": "Y_MAX" } ], "dataItemResourceLabels": { "aiplatform.googleapis.com/ml_use": "test/train/validation" } }
Notas de campos:
imageGcsUri
: es el único campo obligatorio.annotationResourceLabels
: puede contener cualquier cantidad de pares de strings de clave-valor. El único par clave-valor reservado por el sistema es el siguiente:- "aiplatform.googleapis.com/annotation_set_name": "value"
En el ejemplo anterior, value es uno de los nombres de visualización de los conjuntos de anotaciones existentes en el conjunto de datos.
dataItemResourceLabels
: puede contener cualquier cantidad de pares de strings de clave-valor. El único par clave-valor reservado por el sistema es el siguiente, que especifica el conjunto de uso del aprendizaje automático del elemento de datos:- "aiplatform.googleapis.com/ml_use" : "training/test/validation"
Ejemplo de líneas JSON (object_detection.jsonl
):
{"imageGcsUri": "gs://bucket/filename1.jpeg", "boundingBoxAnnotations": [{"displayName": "Tomato", "xMin": "0.3", "yMin": "0.3", "xMax": "0.7", "yMax": "0.6"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}} {"imageGcsUri": "gs://bucket/filename2.gif", "boundingBoxAnnotations": [{"displayName": "Tomato", "xMin": "0.8", "yMin": "0.2", "xMax": "1.0", "yMax": "0.4"},{"displayName": "Salad", "xMin": "0.0", "yMin": "0.0", "xMax": "1.0", "yMax": "1.0"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}} {"imageGcsUri": "gs://bucket/filename3.png", "boundingBoxAnnotations": [{"displayName": "Baked goods", "xMin": "0.5", "yMin": "0.7", "xMax": "0.8", "yMax": "0.8"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}} {"imageGcsUri": "gs://bucket/filename4.tiff", "boundingBoxAnnotations": [{"displayName": "Salad", "xMin": "0.1", "yMin": "0.2", "xMax": "0.8", "yMax": "0.9"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "validation"}} ...
CSV
Formato CSV:
[ML_USE],GCS_FILE_PATH,[LABEL],[BOUNDING_BOX]*
ML_USE
(opcional). Para la división de datos con el entrenamiento de un modelo. Usa TRAINING, TEST o VALIDATION. Para obtener más información sobre la división manual de datos, consulta Información acerca de las divisiones de datos para modelos de AutoML.GCS_FILE_PATH
. Este campo contiene el URI de Cloud Storage para la imagen. Los URI de Cloud Storage distinguen entre mayúsculas y minúsculas.LABEL
. Las etiquetas deben comenzar con una letra y solo deben contener letras, números y guiones bajos.BOUNDING_BOX
: Un cuadro de límite de un objeto en la imagen. La especificación de un cuadro de límite involucra más de una columna.
A.X_MIN
,Y_MIN
B.X_MAX
,Y_MIN
C.X_MAX
,Y_MAX
D.X_MIN
,Y_MAX
Cada vértice se especifica mediante valores de coordenadas x, y. Las coordenadas son valores de punto flotante normalizados [0,1]; 0.0 es X_MIN o Y_MIN, 1.0 es X_MAX o Y_MAX.
Por ejemplo, un cuadro de límite para toda la imagen se expresa como (0.0,0.0,,,1.0,1.0,,) o (0.0,0.0,1.0,0.0,1.0,1.0,0.0,1.0).
El cuadro de límite de un objeto se puede especificar de las siguientes dos maneras:
- Dos vértices (dos conjuntos de coordenadas x,y) que son puntos diagonales opuestos del rectángulo:
A.X_MIN
,Y_MIN
C.X_MAX
,Y_MAX
como se muestra en este ejemplo:
A,,C,X_MIN,Y_MIN,,,X_MAX,Y_MAX,,
. - Los cuatro vértices especificados como se muestra en:
X_MIN,Y_MIN,X_MAX,Y_MIN, X_MAX,Y_MAX,X_MIN,Y_MAX,
Si los cuatro vértices especificados no forman un rectángulo paralelo a los bordes de la imagen, Vertex AI especifica los vértices que forman ese rectángulo.
- Dos vértices (dos conjuntos de coordenadas x,y) que son puntos diagonales opuestos del rectángulo:
Ejemplo de CSV: object_detection.csv
test,gs://bucket/filename1.jpeg,Tomato,0.3,0.3,,,0.7,0.6,, training,gs://bucket/filename2.gif,Tomato,0.8,0.2,,,1.0,0.4,, gs://bucket/filename2.gif gs://bucket/filename3.png,Baked goods,0.5,0.7,0.8,0.7,0.8,0.8,0.5,0.8 validation,gs://bucket/filename4.tiff,Salad,0.1,0.2,,,0.8,0.9,, ...