Como fazer o download, o pré-processamento e o upload do conjunto de dados COCO

O COCO é um conjunto de dados de detecção, segmentação e legendagem de objetos em grande escala. Os modelos de aprendizado de máquina que usam o conjunto de dados COCO incluem:

  • Máscara RCNN
  • RetinaNet
  • ShapeMask

Antes de treinar um modelo em um Cloud TPU, você precisa preparar os dados de treinamento.

Este documento descreve como preparar o conjunto de dados COCO para que são executados no Cloud TPU. O conjunto de dados COCO só pode ser preparado depois que você cria uma VM do Compute Engine. O script usado para preparar os dados, download_and_preprocess_coco.sh, é instalado na VM e precisa ser executado nela.

Depois de preparar os dados executando o script download_and_preprocess_coco.sh, você poderá abrir o Cloud TPU e executar o treinamento.

Fazer o download, o pré-processamento e o upload completos do conjunto de dados COCO para um em um bucket do Cloud Storage, que leva aproximadamente 2 horas.

  1. No Cloud Shell, configure o gcloud com seu projeto ID.

    export PROJECT_ID=project-id
    gcloud config set project ${PROJECT_ID}
  2. No Cloud Shell, crie um bucket do Cloud Storage usando o seguinte comando:

    gcloud storage buckets create gs://bucket-name --project=${PROJECT_ID} --location=us-central2
  3. Crie uma VM do Compute Engine para fazer o download e o pré-processamento do conjunto de dados. Para mais informações, consulte Criar e iniciar uma instância do 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. Conecte-se à VM do Compute Engine usando SSH:

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

    Quando você se conecta à VM, o prompt do shell muda de username@projectname para username@vm-name.

  5. Configure duas variáveis, uma para o bucket de armazenamento e outra para o diretório que contém os dados de treinamento (DATA_DIR) no bucket de armazenamento.

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    (vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
  6. Instale os pacotes necessários para pré-processar os dados.

    (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. Execute o script download_and_preprocess_coco.sh para converter o conjunto de dados COCO em um conjunto de arquivos TFRecord (*.tfrecord) que o treinamento esperado pelo aplicativo.

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

    Isso instala as bibliotecas necessárias e executa o script de pré-processamento. Ele gera arquivos *.tfrecord no diretório de dados locais. O script de download e conversão do COCO leva aproximadamente uma hora para ser concluído.

  8. Copie os dados para o bucket do Cloud Storage.

    Depois de converter os dados para o formato TFRecord, copie-os do armazenamento local para o bucket do Cloud Storage usando a CLI gcloud. Você deve copiar os arquivos de anotação. Esses arquivos ajudam a validar o comportamento desempenho.

    (vm)$ gcloud storage cp ./data/dir/coco/*.tfrecord ${DATA_DIR}
    (vm)$ gcloud storage cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
  9. Encerre a conexão com a VM do Compute Engine:

    (vm)$ exit

    Agora, o prompt precisa ser username@projectname, mostrando que você está no Cloud Shell.

  10. Exclua a VM do Compute Engine:

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