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.
Konfigurieren Sie
gcloud
in Cloud Shell 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:
gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
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.
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 vonusername@projectname
inusername@vm-name
:$ gcloud compute ssh instance-name --zone=europe-west4-a
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 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"
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.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}
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.Löschen Sie die Compute Engine-Instanz.
$ gcloud compute instances delete instance-name --zone=europe-west4-a