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 de 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, está instalada en la VM y debe ejecutarse en la VM.

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.

La descarga completa, el procesamiento previo y la carga del conjunto de datos de COCO a un bucket de almacenamiento de Google Cloud tarda alrededor de 2 horas.

  1. 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
    
  2. Inicia una instancia de VM de Compute Engine.

    Esta instancia de VM solo se usará para descargar y preprocesar el conjunto de datos COCO. Completa el elemento 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.6.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
    El nombre de la Cloud TPU para crear.
    zone
    Es la zona en la que deseas crear la Cloud TPU.
    disk-size
    El tamaño del disco duro en GB de la VM creada con 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 de Tensorflow gcloud compute tpus execution-groups se instala en la VM.
  3. Si no accedes automáticamente a la instancia de Compute Engine, accede mediante la ejecución del siguiente comando de ssh. Cuando accedes a la VM, la solicitud de shell cambia de username@projectname a username@vm-name:

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

  4. 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
  5. 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"
    
  6. 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.

  7. 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}
    
  8. 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.

  9. Borra tu instancia de Compute Engine.

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