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

Neste tópico, você verá como fazer o download, o pré-processamento e o upload do conjunto de dados do ImageNet para usar com a Cloud TPU. Os modelos de machine learning que usam o conjunto de dados ImageNet incluem:

  • ResNet
  • AmoebaNet
  • EfficientNet
  • MNASNet
O ImageNet é um banco de dados de imagens. As imagens do banco de dados são organizadas hierarquicamente, com cada nó da hierarquia representado por centenas e milhares de imagens.

O tamanho do banco de dados do ImageNet significa que o treinamento de um modelo pode levar um tempo considerável. Uma alternativa é usar uma versão de demonstração do conjunto de dados, chamada de fake_imagenet. Essa versão de demonstração permite testar o modelo e, ao mesmo tempo, reduzir os requisitos de armazenamento e tempo normalmente associados ao uso do banco de dados completo do ImageNet.

Como pré-processar todo o conjunto de dados do ImageNet

Verificar requisitos de espaço

Você precisa de cerca de 300 GB de espaço disponível na sua máquina local ou VM para usar o conjunto de dados completo do ImageNet.

É possível aumentar o tamanho do disco da VM usando um dos seguintes métodos:

  • Especifique a sinalização --disk-size-gb na linha de comando ctpu up com o tamanho, em GB, que você quer alocar.
  • Siga o guia do Compute Engine para adicionar um disco à VM.
    • Defina Ao excluir uma instância como Excluir disco para garantir que o disco seja removido quando você excluir a VM.
    • Anote o caminho do novo disco. Por exemplo, /mnt/disks/mnt-dir.

Fazer o download dos dados do ImageNet e convertê-los

  1. Inscreva-se em uma conta do ImageNet (link em inglês). Lembre-se do nome de usuário e senha que você usou para criar a conta.

  2. Configure uma variável de ambiente DATA_DIR que aponta para um caminho no intervalo do Cloud Storage:

    (vm)$ export DATA_DIR=gs://storage-bucket
    
  3. No GitHub, faça o download do script imagenet_to_gcs.py:

    $ wget https://raw.githubusercontent.com/tensorflow/tpu/master/tools/datasets/imagenet_to_gcs.py
    
  4. Defina uma variável SCRATCH_DIR para conter os arquivos de trabalho do script. A variável precisa especificar um local na máquina local ou na VM do Compute Engine. Por exemplo, na sua máquina local:

    $ SCRATCH_DIR=./imagenet_tmp_files
    

    Ou se você estiver processando os dados na VM:

    (vm)$ SCRATCH_DIR=/mnt/disks/mnt-dir/imagenet_tmp_files
    
  5. Execute o script imagenet_to_gcs.py para fazer o download, formatar e fazer upload dos dados do ImageNet para o intervalo. Substitua [USERNAME] e [PASSWORD] pelo nome de usuário e senha que você usou para criar a conta do ImageNet.

    $ pip install google-cloud-storage
    $ python imagenet_to_gcs.py \
      --project=$PROJECT \
      --gcs_output_path=$DATA_DIR \
      --local_scratch_dir=$SCRATCH_DIR \
      --imagenet_username=[USERNAME] \
      --imagenet_access_key=[PASSWORD]
    

Opcionalmente, se os dados brutos, no formato JPEG, já tiverem sido salvos, será possível fornecer um caminho raw_data_directory direto. Se um diretório de dados brutos para dados de treinamento ou validação for fornecido, ele precisará estar no formato:

Os nomes dos subdiretórios de treinamento (por exemplo, n03062245) são "IDs do WordNet" (wnid). A API ImageNet (em inglês) mostra o mapeamento de IDs do WordNet para seus rótulos de validação associados no arquivo synset_labels.txt. Uma sincronia nesse contexto é um grupo visualmente semelhante de imagens.

Observação: o download e o pré-processamento dos dados podem levar 10 horas ou mais, dependendo da velocidade da rede e do computador. Não interrompa o script.

Quando o script terminar o processamento, uma mensagem como esta será exibida:

2018-02-17 14:30:17.287989: Finished writing all 1281167 images in data set.

O script produz vários diretórios para treinamento e validação do formulário:

${DATA_DIR}/train-00000-of-01024
${DATA_DIR}/train-00001-of-01024
 ...
${DATA_DIR}/train-01023-of-01024

e

${DATA_DIR}/validation-00000-of-00128
S{DATA_DIR}/validation-00001-of-00128
 ...
${DATA_DIR}/validation-00127-of-00128

Depois que os dados forem enviados para seu intervalo do Cloud, execute seu modelo e defina --data_dir=${DATA_DIR}.

Como pré-processar o conjunto de dados fake_imagenet

A Cloud TPU fornece uma versão de demonstração do conjunto de dados ImageNet, conhecido como fake_imagenet. Este conjunto de dados contém imagens selecionadas aleatoriamente. É possível usar esse conjunto de dados quando quiser testar como um modelo funciona, mas o conjunto de dados completo do ImageNet não é necessário.

O conjunto de dados fake_imagenet está disponível no seguinte intervalo do Cloud Storage:

gs://cloud-tpu-test-datasets/fake_imagenet

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.