Transferir, pré-processar e carregar o conjunto de dados COCO

O COCO é um conjunto de dados de deteção de objetos, segmentação e legendagem em grande escala. Os modelos de aprendizagem automática que usam o conjunto de dados COCO incluem:

  • Mask-RCNN
  • Retinanet
  • ShapeMask

Antes de poder preparar um modelo numa TPU do Google Cloud, tem de preparar os dados de preparação.

Este documento descreve como preparar o conjunto de dados COCO para modelos executados no Cloud TPU. O conjunto de dados COCO só pode ser preparado depois de ter criado uma VM do Compute Engine. O script usado para preparar os dados, download_and_preprocess_coco.sh, é instalado na VM e tem de ser executado na VM.

Depois de preparar os dados executando o script download_and_preprocess_coco.sh, pode apresentar a TPU na nuvem e executar a preparação.

A transferência, o pré-processamento e o carregamento completos do conjunto de dados COCO para um contentor do Cloud Storage demoram aproximadamente 2 horas.

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

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

    gcloud storage buckets create gs://bucket-name --project=${PROJECT_ID} --location=us-central2
  3. Crie uma VM do Compute Engine para transferir e pré-processar o conjunto de dados. Para mais informações, consulte Crie e inicie 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 \
        --scopes=https://www.googleapis.com/auth/cloud-platform
  4. Estabeleça ligação à VM do Compute Engine através de SSH:

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

    Quando se liga à VM, o comando da shell muda de username@projectname para username@vm-name.

  5. Configure duas variáveis, uma para o contentor de armazenamento que criou anteriormente e outra para o diretório que contém os dados de preparação (DATA_DIR) no contentor 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" && \
      pip3 install protobuf==3.19.0 tensorflow==2.11.0 numpy==1.26.4
  7. Execute o script download_and_preprocess_coco.sh para converter o conjunto de dados COCO num conjunto de ficheiros TFRecord (*.tfrecord) que a aplicação de preparação espera.

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

    Isto instala as bibliotecas necessárias e, em seguida, executa o script de pré-processamento. Gera ficheiros *.tfrecord no diretório de dados local. O script de transferência e conversão do COCO demora aproximadamente uma hora a ser concluído.

  8. Copie os dados para o seu contentor do Cloud Storage.

    Depois de converter os dados para o formato TFRecord, copie os dados do armazenamento local para o seu contentor do Cloud Storage através da CLI gcloud. Também tem de copiar os ficheiros de anotações. Estes ficheiros ajudam a validar o desempenho do modelo.

    (vm)$ gcloud storage cp ./data/dir/coco/*.tfrecord ${DATA_DIR}
    (vm)$ gcloud storage cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}

Limpar

Siga estes passos para limpar os recursos do Compute Engine e do Cloud Storage.

  1. Desligue-se da VM do Compute Engine:

    (vm)$ exit
  2. Elimine a sua VM do Compute Engine:

    $ gcloud compute instances delete vm-name \
        --zone=us-central2-b
  3. Elimine o contentor do Cloud Storage e o respetivo conteúdo:

    $ gcloud storage rm -r gs://bucket-name
    $ gcloud storage buckets delete gs://bucket-name