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 Thema wird beschrieben, wie Sie das COCO -Dataset für Modelle vorbereiten, die in 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 Google 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:

    gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
    
  3. Starten Sie eine Compute Engine-VM-Instanz.

    Diese VM-Instanz wird ausschließlich zum Herunterladen und Vorverarbeiten des COCO-Datasets verwendet. Geben Sie in instance-name einen Namen Ihrer Wahl ein.

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

    Beschreibung der Befehls-Flags

    vm-only
    Erstellen Sie nur eine VM. Standardmäßig werden mit dem Befehl gcloud compute tpus execution-groups eine VM und eine Cloud TPU erstellt.
    name
    Der Name der zu erstellenden Cloud TPU.
    zone
    Die Zone, in der Sie Ihre Cloud TPU erstellen möchten.
    disk-size
    Die Größe der Festplatte in GB der mit dem Befehl gcloud compute tpus execution-groups erstellten VM.
    machine-type
    Der Maschinentyp der Compute Engine-VM, die erstellt werden soll.
    tf-version
    Die Tensorflow-Version gcloud compute tpus execution-groups wird auf der VM installiert.
  4. Wenn Sie nicht automatisch bei der Compute Engine-Instanz angemeldet werden, melden Sie sich mit dem folgenden ssh-Befehl an. Wenn Sie bei der VM angemeldet sind, ändert sich die Shell-Eingabeaufforderung von username@projectname in username@vm-name:

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

  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 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. Führen Sie das Skript download_and_preprocess_coco.sh aus, um das COCO-Dataset in einen Satz von TFRecords (*.tfrecord) zu konvertieren, der von der Trainingsanwendung erwartet wird.

    (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 verschiedene *.tfrecord-Dateien in Ihr lokales Datenverzeichnis ausgegeben. Der COCO-Download und das Ausführen des Konvertierungsskripts dauern ungefähr eine Stunde.

  8. Daten in den Cloud Storage-Bucket kopieren

    Nachdem Sie die Daten in TFRecords konvertiert haben, kopieren Sie sie mit dem Befehl gsutil aus dem lokalen Speicher in den Cloud Storage-Bucket. Die Annotationsdateien müssen ebenfalls kopiert werden. Diese Dateien helfen dabei, die Leistung des Modells zu validieren.

    (vm)$ gsutil -m cp ./data/dir/coco/*.tfrecord ${DATA_DIR}
    (vm)$ gsutil cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
    
  9. Bereinigen Sie die VM-Ressourcen.

    Nachdem das COCO-Dataset in TFRecords konvertiert und in DATA_DIR in Ihrem Cloud Storage-Bucket kopiert wurde, können Sie die Compute Engine-Instanz löschen.

    Trennen Sie die Verbindung zur Compute Engine-Instanz:

    (vm)$ exit
    

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

  10. Löschen Sie die Compute Engine-Instanz.

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