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.
Neste tópico, descrevemos como preparar o conjunto de dados COCO para modelos 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.
O download/pré-processamento completo e o upload do conjunto de dados COCO para um bucket de armazenamento do Google Cloud levam aproximadamente duas horas.
No Cloud Shell, configure
gcloud
com o ID do projeto.export PROJECT_ID=project-id gcloud config set project ${PROJECT_ID}
No Cloud Shell, crie um bucket do Cloud Storage usando o seguinte comando:
gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
Inicie uma instância de VM do Compute Engine.
Essa instância de VM só será usada para fazer o download e o pré-processamento do conjunto de dados COCO. Preencha instance-name com o nome de sua escolha.
$ 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.11.0
Descrições de sinalizações de comando
vm-only
- Crie somente uma VM. Por padrão, o comando
gcloud compute tpus execution-groups
cria uma VM e uma Cloud TPU. name
- O nome do Cloud TPU a ser criado.
zone
- A zona em que você planeja criar a Cloud TPU.
disk-size
- O tamanho do disco rígido em GB da VM criada pelo comando
gcloud compute tpus execution-groups
. machine-type
- O tipo de máquina da VM do Compute Engine a ser criada.
tf-version
- A versão do Tensorflow
gcloud compute tpus execution-groups
é instalada na VM.
Se você não for conectado automaticamente à instância do Compute Engine, faça login executando o seguinte comando
ssh
. Quando você faz login na VM, o prompt do shell muda deusername@projectname
parausername@vm-name
:$ gcloud compute ssh instance-name --zone=europe-west4-a
Configure duas variáveis, uma para o bucket de armazenamento criado anteriormente 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
Instale os pacotes necessários para pré-processar os dados.
(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"
Execute o script
download_and_preprocess_coco.sh
para converter o conjunto de dados COCO em um conjunto de TFRecords (*.tfrecord
) esperado pelo aplicativo de treinamento.(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. A saída são alguns arquivos
*.tfrecord
no diretório de dados. O script de download e conversão do COCO leva aproximadamente 1 hora para ser concluído.Copiar os dados para o bucket do Cloud Storage
Depois de converter os dados para TFRecords, use o comando
gsutil
para copiá-los do armazenamento local para o bucket do Cloud Storage. Também é preciso copiar os arquivos de anotação. Eles ajudam a validar o desempenho do modelo.(vm)$ gsutil -m cp ./data/dir/coco/*.tfrecord ${DATA_DIR} (vm)$ gsutil cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
Limpar os recursos da VM
Depois que o conjunto de dados COCO for convertido em TFRecords e copiado para o DATA_DIR no bucket do Cloud Storage, será possível excluir a instância do Compute Engine.
Desconecte-se da instância do Compute Engine:
(vm)$ exit
Agora, o prompt precisa ser
username@projectname
, mostrando que você está no Cloud Shell.Exclua a instância do Compute Engine.
$ gcloud compute instances delete instance-name --zone=europe-west4-a