COCO-Dataset herunterladen, vorverarbeiten und hochladen

COCO ist ein umfangreiches Dataset für Objekterkennung, Segmentierung und Untertitelung. Unter anderem verwenden folgende Modelle für maschinelles Lernen das COCO-Dataset:

  • Mask RCNN
  • RetinaNet
  • ShapeMask

Bevor Sie ein Modell auf einer Cloud TPU trainieren können, müssen Sie die Trainingsdaten vorbereiten.

In diesem Dokument wird beschrieben, wie Sie das COCO-Dataset für die die auf Cloud TPU ausgeführt werden. Das COCO-Dataset kann erst vorbereitet werden, nachdem Sie eine Compute Engine-VM erstellt haben. Das Skript zur Vorbereitung der Daten download_and_preprocess_coco.sh ist auf der VM installiert und muss auf der VM ausgeführt werden.

Nachdem Sie die Daten mit dem Skript download_and_preprocess_coco.sh vorbereitet haben, können Sie die Cloud TPU aufrufen und das Training ausführen.

Das vollständige Herunterladen, Vorverarbeiten und Hochladen des COCO-Datasets in einen Cloud Storage-Bucket dauert ungefähr zwei Stunden.

  1. Konfigurieren Sie gcloud in Cloud Shell mit Ihrer Projekt-ID.

    export PROJECT_ID=project-id
    gcloud config set project ${PROJECT_ID}
  2. Erstellen Sie in Ihrer Cloud Shell mit folgendem Befehl einen Cloud Storage-Bucket:

    gcloud storage buckets create gs://bucket-name --project=${PROJECT_ID} --location=us-central2
  3. Erstellen Sie eine Compute Engine-VM, um das Dataset herunterzuladen und vorzuverarbeiten. Weitere Informationen finden Sie unter Compute Engine-Instanz erstellen und starten

    $ 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. Stellen Sie eine SSH-Verbindung zur Compute Engine-VM her:

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

    Wenn Sie eine Verbindung zur VM herstellen, ändert sich die Shell-Eingabeaufforderung von username@projectname in username@vm-name.

  5. Richten Sie zwei Variablen ein, eine für den zuvor erstellten Storage-Bucket und eine für das Verzeichnis, das die Trainingsdaten (DATA_DIR) im Storage-Bucket enthält.

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    (vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
  6. Installieren Sie die Pakete, die für die Vorverarbeitung der Daten erforderlich sind.

    (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. Zum Umwandeln das Skript download_and_preprocess_coco.sh ausführen COCO-Dataset in eine Reihe von TFRecord-Dateien (*.tfrecord) aufteilt, die die Anwendung erwartet.

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

    Dadurch werden die erforderlichen Bibliotheken installiert und das Skript für die Vorverarbeitung ausgeführt. Dann werden *.tfrecord-Dateien in Ihr lokales Datenverzeichnis ausgegeben. Der COCO-Download und das Ausführen des Konvertierungsskripts dauern ungefähr eine Stunde.

  8. Kopieren Sie die Daten in Ihren Cloud Storage-Bucket.

    Nachdem Sie die Daten in das TFRecord-Format konvertiert haben, kopieren Sie sie aus dem lokalen Speicher mit der gcloud CLI in Ihren Cloud Storage-Bucket. Die Anmerkungsdateien müssen ebenfalls kopiert werden. Diese Dateien helfen dabei, die Leistung des Modells zu validieren.

    (vm)$ gcloud storage cp ./data/dir/coco/*.tfrecord ${DATA_DIR}
    (vm)$ gcloud storage cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
  9. Trennen Sie die Verbindung zur Compute Engine-VM:

    (vm)$ exit

    Die Eingabeaufforderung sollte nun username@projectname lauten und angeben, dass Sie sich in Cloud Shell befinden.

  10. Löschen Sie Ihre Compute Engine-VM:

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