Download, preelaborazione e caricamento del set di dati COCO

COCO è un set di dati di grandi dimensioni per il rilevamento, la segmentazione e l'inserimento di didascalie degli oggetti. I modelli di machine learning che utilizzano il set di dati COCO includono:

  • Mask-RCNN
  • Retinanet
  • ShapeMask

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

Questo documento 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 aver creato una VM 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 avviare Cloud TPU ed eseguire l'addestramento.

Per scaricare, pre-elaborare e caricare completamente il set di dati COCO in un bucket Cloud Storage, sono necessarie circa 2 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:

    gcloud storage buckets create gs://bucket-name --project=${PROJECT_ID} --location=us-central2
  3. Crea una VM Compute Engine per scaricare e pre-elaborare il set di dati. Per ulteriori informazioni, consulta Creare e avviare un'istanza 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
  4. Connettiti alla VM Compute Engine tramite SSH:

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

    Quando ti connetti alla VM, il prompt della shell cambia da username@projectname a username@vm-name.

  5. Configura due variabili, una per il bucket di archiviazione 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 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"
  7. Esegui lo script download_and_preprocess_coco.sh per convertire il set di dati COCO in un insieme di file TFRecord (*.tfrecord) previsti dall'applicazione di addestramento.

    (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 preelaborazione. Genera file *.tfrecord nella directory dei dati locali. Lo script di download e conversione COCO richiede circa un'ora.

  8. Copia i dati nel tuo bucket Cloud Storage.

    Dopo aver convertito i dati nel formato TFRecord, copiali dallo spazio di archiviazione locale nel bucket Cloud Storage utilizzando gcloud CLI. Devi anche copiare i file di annotazioni. Questi file consentono di convalidare le prestazioni del modello.

    (vm)$ gcloud storage cp ./data/dir/coco/*.tfrecord ${DATA_DIR}
    (vm)$ gcloud storage cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
  9. Disconnettiti dalla VM di Compute Engine:

    (vm)$ exit

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

  10. Elimina la VM di Compute Engine:

    $ gcloud compute instances delete vm-name \
    --zone=us-central2-b