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.
No Cloud Shell, configure o
gcloud
com o ID do projeto.export PROJECT_ID=project-id gcloud config set project ${PROJECT_ID}
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
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
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
parausername@vm-name
.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
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
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.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.
Desligue-se da VM do Compute Engine:
(vm)$ exit
Elimine a sua VM do Compute Engine:
$ gcloud compute instances delete vm-name \ --zone=us-central2-b
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