Descarga, procesamiento previo y carga del conjunto de datos COCO

COCO es un conjunto de datos de subtitulado, segmentación y detección a gran escala. Estos son algunos de los modelos de aprendizaje automático que usan el conjunto de datos de COCO:

  • Mask-RCNN
  • Retinanet
  • ShapeMask

Antes de entrenar un modelo en una Cloud TPU, debes preparar los datos de entrenamiento.

En este documento, se describe cómo preparar el conjunto de datos COCO para los modelos que se ejecutan en Cloud TPU. El conjunto de datos COCO solo se puede preparar después de crear una VM de Compute Engine. La secuencia de comandos que se usa para preparar los datos, download_and_preprocess_coco.sh, se instala en la VM y se debe ejecutar en ella.

Después de preparar los datos mediante la ejecución de la secuencia de comandos download_and_preprocess_coco.sh, puedes poner en marcha la Cloud TPU y ejecutar el entrenamiento.

Para descargar, procesar previamente y subir por completo el conjunto de datos de COCO a una El bucket de Cloud Storage tarda unas 2 horas.

  1. En Cloud Shell, configura gcloud con tu proyecto. ID.

    export PROJECT_ID=project-id
    gcloud config set project ${PROJECT_ID}
    
  2. En Cloud Shell, crea un bucket de Cloud Storage con el siguiente comando:

    gcloud storage buckets create gs://bucket-name --project=${PROJECT_ID} --location=us-central2
    
  3. Crear una VM de Compute Engine para descargar y preprocesar el conjunto de datos Para ver más información, consulta Crea y, luego, inicia una instancia de Compute Engine.

    $ gcloud compute instances create vm-name \
        --zone=us-central2-b \
        --image-family=ubuntu-2204-lts \
        --image-project=ubuntu-os-cloud \
        --machine-type=n1-standard-16 \
        --boot-disk-size=300GB
    
  4. Conéctate a la VM de Compute Engine mediante SSH:

    $ gcloud compute ssh vm-name --zone=us-central2-b
    

    Cuando te conectas a la VM, el símbolo del sistema de la shell cambia de De username@projectname a username@vm-name.

  5. Configura dos variables, una para el bucket de almacenamiento que creó anteriormente y otra para el directorio que contiene los datos de entrenamiento (DATA_DIR) en el bucket de almacenamiento

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    
    (vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
  6. Instala los paquetes necesarios para procesar los datos con anterioridad.

    (vm)$ sudo apt-get update && \
      sudo apt-get install python3-pip && \
      sudo apt-get install -y python3-tk && \
      pip3 install --user Cython matplotlib opencv-python-headless pyyaml Pillow numpy absl-py tensorflow && \
      pip3 install --user "git+https://github.com/cocodataset/cocoapi#egg=pycocotools&subdirectory=PythonAPI"
    
  7. Ejecuta la secuencia de comandos download_and_preprocess_coco.sh para convertir el conjunto de datos COCO en un conjunto de archivos TFRecord (*.tfrecord) que el entrenamiento espera la aplicación.

    (vm)$ git clone https://github.com/tensorflow/tpu.git
    (vm)$ sudo bash tpu/tools/datasets/download_and_preprocess_coco.sh ./data/dir/coco
    

    Esto instala las bibliotecas necesarias y ejecuta la secuencia de comandos de procesamiento previo. Genera archivos *.tfrecord en tu directorio de datos local. La secuencia de comandos de conversión y descarga de COCO tarda aproximadamente una hora en completarse.

  8. Copia los datos en tu bucket de Cloud Storage.

    Después de convertir los datos al formato TFRecord, cópialos desde el almacenamiento local a tu bucket de Cloud Storage con gcloud CLI. Debes copia los archivos de anotación. Estos archivos ayudan a validar rendimiento.

    (vm)$ gcloud storage cp ./data/dir/coco/*.tfrecord ${DATA_DIR}
    (vm)$ gcloud storage cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
    
  9. Desconéctate de la VM de Compute Engine:

    (vm)$ exit
    

    El mensaje ahora debería mostrar username@projectname, que indica que estás en Cloud Shell.

  10. Borra tu VM de Compute Engine:

    $ gcloud compute instances delete vm-name \
    --zone=us-central2-b