Download, pre-elaborazione e caricamento del set di dati COCO

COCO è un set di dati di rilevamento, segmentazione e sottotitoli su larga scala. I modelli di machine learning che utilizzano il set di dati COCO includono:

  • Maschera-RCNN
  • Retinanet
  • ShapeMask

Prima di poter addestrare un modello su una Cloud TPU, devi preparare i dati di addestramento.

Questo argomento descrive come preparare il set di dati COCO per i modelli eseguiti su Cloud TPU. Il set di dati COCO può essere preparato solo dopo che hai creato una VM di Compute Engine. Lo script utilizzato per preparare i dati, download_and_preprocess_coco.sh, è installato sulla VM e deve essere eseguito sulla VM.

Dopo aver preparato i dati eseguendo lo script download_and_preprocess_coco.sh, puoi visualizzare Cloud TPU ed eseguire l'addestramento.

Per scaricare/preelaborare completamente e caricare il set di dati COCO in un bucket di archiviazione Google Cloud, sono necessarie circa due ore.

  1. In Cloud Shell, configura gcloud con l'ID progetto.

    export PROJECT_ID=project-id
    gcloud config set project ${PROJECT_ID}
    
  2. In Cloud Shell, crea un bucket Cloud Storage utilizzando il seguente comando:

    gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
    
  3. Avvia un'istanza VM di Compute Engine.

    Questa istanza VM verrà utilizzata solo per scaricare e preelaborare il set di dati COCO. Compila il campo instance-name con un nome a tua scelta.

    $ 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.6.0
    

    Descrizioni flag comando

    vm-only
    Crea solo una VM. Per impostazione predefinita, il comando gcloud compute tpus execution-groups crea una VM e una Cloud TPU.
    name
    Il nome della Cloud TPU da creare.
    zone
    La zona in cui prevedi di creare Cloud TPU.
    disk-size
    Le dimensioni del disco rigido in GB della VM creata dal comando gcloud compute tpus execution-groups.
    machine-type
    Il tipo di macchina della VM di Compute Engine da creare.
    tf-version
    La versione di Tensorflow gcloud compute tpus execution-groups viene installata sulla VM.
  4. Se non hai eseguito automaticamente l'accesso all'istanza Compute Engine, esegui l'accesso eseguendo questo comando ssh. Dopo aver eseguito l'accesso alla VM, il prompt di shell cambia da username@projectname a username@vm-name:

      $ gcloud compute ssh instance-name --zone=europe-west4-a
      

  5. Configura due variabili, una per il bucket di archiviazione che hai creato in precedenza e una per la directory che contiene i dati di addestramento (DATA_DIR) nel bucket di archiviazione.

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    
    (vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
  6. Installa i pacchetti necessari per pre-elaborare i dati.

    (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"
    
  7. Esegui lo script download_and_preprocess_coco.sh per convertire il set di dati COCO in un set di TFRecord (*.tfrecord) previsto.

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

    Vengono installate le librerie richieste ed eseguito lo script di pre-elaborazione. Nella directory dei dati locali viene restituito un numero di file *.tfrecord. Lo script COCO per il download e la conversione richiede circa un'ora.

  8. Copia i dati nel tuo bucket Cloud Storage

    Dopo aver convertito i dati in TFRecord, copiali dallo spazio di archiviazione locale nel tuo bucket Cloud Storage utilizzando il comando gsutil. Devi anche copiare i file delle annotazioni. Questi file consentono di convalidare le prestazioni del modello.

    (vm)$ gsutil -m cp ./data/dir/coco/*.tfrecord ${DATA_DIR}
    (vm)$ gsutil cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
    
  9. Pulisci le risorse VM

    Dopo aver convertito il set di dati COCO in TFRecords e copiato nel DATA_DIR nel tuo bucket Cloud Storage, puoi eliminare l'istanza di Compute Engine.

    Disconnetti dall'istanza Compute Engine:

    (vm)$ exit
    

    Il tuo prompt dovrebbe ora essere username@projectname, a indicare che ti trovi in Cloud Shell.

  10. Elimina la tua istanza di Compute Engine.

      $ gcloud compute instances delete instance-name
        --zone=europe-west4-a