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 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 Script zur Vorbereitung der Daten, download_and_preprocess_coco.sh
, ist auf der VM installiert und muss auch dort ausgeführt werden.
Nachdem Sie die Daten mit dem Script 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.
Konfigurieren Sie in Ihrer Cloud Shell
gcloud
mit Ihrer Projekt-ID.export PROJECT_ID=project-id gcloud config set project ${PROJECT_ID}
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
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 \ --scopes=https://www.googleapis.com/auth/cloud-platform
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
inusername@vm-name
.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
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" && \ pip3 install protobuf==3.19.0 tensorflow==2.11.0 numpy==1.26.4
Führen Sie das Script
download_and_preprocess_coco.sh
aus, um das COCO-Dataset in einen Satz von TFRecord-Dateien (*.tfrecord
) zu konvertieren, der von der Trainingsanwendung erwartet wird.(vm)$ git clone https://github.com/tensorflow/tpu.git (vm)$ sudo -E bash tpu/tools/datasets/download_and_preprocess_coco.sh ./data/dir/coco
Dadurch werden die erforderlichen Bibliotheken installiert und das Script für die Vorverarbeitung ausgeführt. Dann werden
*.tfrecord
-Dateien in Ihr lokales Datenverzeichnis ausgegeben. Der COCO-Download und das Ausführen des Konvertierungsscripts dauern ungefähr eine Stunde.Kopieren Sie die Daten in den Cloud Storage-Bucket.
Nachdem Sie die Daten in das TFRecord-Format konvertiert haben, kopieren Sie sie mit der gcloud CLI 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)$ gcloud storage cp ./data/dir/coco/*.tfrecord ${DATA_DIR} (vm)$ gcloud storage cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
Bereinigen
Führen Sie die folgenden Schritte aus, um Ihre Compute Engine- und Cloud Storage-Ressourcen zu bereinigen.
Trennen Sie die Verbindung zur Compute Engine-VM:
(vm)$ exit
Löschen Sie die Compute Engine-VM:
$ gcloud compute instances delete vm-name \ --zone=us-central2-b
Löschen Sie den Cloud Storage-Bucket und seinen Inhalt:
$ gcloud storage rm -r gs://bucket-name $ gcloud storage buckets delete gs://bucket-name