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 tema, 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 o procesar por completo el conjunto de datos COCO y subirlo a un bucket de almacenamiento de Google Cloud, se tarda alrededor de 2 horas.

  1. En Cloud Shell, configura gcloud con el ID del proyecto.

    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:

    gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
    
  3. Inicia una instancia de VM de Compute Engine.

    Esta instancia de VM solo se usará para descargar y procesar previamente el conjunto de datos COCO. Completa instance-name con el nombre que desees.

    $ gcloud compute tpus execution-groups create \
     --vm-only \
     --name=instance-name \
     --zone=europe-west4-a \
     --disk-size=300 \
     --machine-type=n1-standard-16 \
     --tf-version=2.12.0
    

    Descripciones de las marcas de comandos

    vm-only
    Crea solo una VM. De forma predeterminada, el comando gcloud compute tpus execution-groups crea una VM y una Cloud TPU.
    name
    Es el nombre de la Cloud TPU que se creará.
    zone
    La zona en la que planeas crear la Cloud TPU.
    disk-size
    Es el tamaño del disco duro en GB de la VM que creó el comando gcloud compute tpus execution-groups.
    machine-type
    El tipo de máquina de la VM de Compute Engine que se creará.
    tf-version
    La versión gcloud compute tpus execution-groups de TensorFlow se instala en la VM.
  4. Si no accediste de forma automática a la instancia de Compute Engine, ejecuta el siguiente comando de ssh para acceder. Cuando accedas a la VM, el indicador de shell cambiará de username@projectname a username@vm-name:

      $ gcloud compute ssh instance-name --zone=europe-west4-a
      

  5. Configura dos variables, una para el bucket de almacenamiento que creaste antes 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 install -y python3-tk && \
      pip3 install --user Cython matplotlib opencv-python-headless pyyaml Pillow && \
      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 TFRecords (*.tfrecord), que son compatibles con la aplicación de entrenamiento.

    (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. Como resultado, se muestra una serie de archivos *.tfrecord en tu directorio de datos local. La secuencia de comandos de conversión y descarga de COCO tarda alrededor de 1 hora en completarse.

  8. Copia los datos en tu bucket de Cloud Storage

    Después de convertir los datos en TFRecords, cópialos desde el almacenamiento local a tu depósito de Cloud Storage con el comando gsutil. También debes copiar los archivos de anotaciones. Estos archivos ayudan a validar el rendimiento del modelo.

    (vm)$ gsutil -m cp ./data/dir/coco/*.tfrecord ${DATA_DIR}
    (vm)$ gsutil cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
    
  9. Limpia los recursos de VM

    Una vez que el conjunto de datos COCO se haya convertido en TFRecords y se haya copiado en DATA_DIR en tu bucket de Cloud Storage, puedes borrar la instancia de Compute Engine.

    Desconéctate de la instancia de Compute Engine:

    (vm)$ exit
    

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

  10. Borra tu instancia de Compute Engine.

      $ gcloud compute instances delete instance-name
        --zone=europe-west4-a