Download, pre-elaborazione e caricamento del set di dati COCO
COCO è un set di dati di rilevamento, segmentazione e sottotitolaggio di oggetti su larga scala. I modelli di machine learning che utilizzano il set di dati COCO includono:
- Maschera- rete multicanale
- Retinanet
- ShapeMask
Prima di poter addestrare un modello su Cloud TPU, devi preparare i dati di addestramento.
Questo argomento 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 di 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 visualizzare Cloud TPU ed eseguire l'addestramento.
Il download/pre-elaborazione e il caricamento del set di dati COCO in un bucket di archiviazione Google Cloud richiedono circa 2 ore.
In Cloud Shell, configura
gcloud
con l'ID progetto.export PROJECT_ID=project-id gcloud config set project ${PROJECT_ID}
In Cloud Shell, crea un bucket Cloud Storage utilizzando il comando seguente:
gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
Avvia un'istanza VM di Compute Engine.
Questa istanza VM verrà utilizzata solo per scaricare e pre-elaborare il set di dati COCO. Inserisci il instance-name con un nome a tua scelta.
$ 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
Descrizioni dei flag di comando
vm-only
- Crea solo una VM. Per impostazione predefinita, il comando
gcloud compute tpus execution-groups
crea una VM e una Cloud TPU. name
- Il nome della Cloud TPU da creare.
zone
- La zona in cui prevedi di creare la tua Cloud TPU.
disk-size
- Le dimensioni del disco rigido in GB della VM creata dal comando
gcloud compute tpus execution-groups
. machine-type
- Il tipo di macchina della VM di Compute Engine da creare.
tf-version
- La versione di Tensorflow
gcloud compute tpus execution-groups
viene installata sulla VM.
Se non hai eseguito automaticamente l'accesso all'istanza di Compute Engine, accedi eseguendo il comando
ssh
seguente. Dopo aver eseguito l'accesso alla VM, il prompt della shell passa dausername@projectname
ausername@vm-name
:$ gcloud compute ssh instance-name --zone=europe-west4-a
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
Installa i pacchetti necessari per pre-elaborare i dati.
(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"
Esegui lo script
download_and_preprocess_coco.sh
per convertire il set di dati COCO in un set di TFRecord (*.tfrecord
) che l'applicazione di addestramento prevede.(vm)$ git clone https://github.com/tensorflow/tpu.git (vm)$ sudo bash tpu/tools/datasets/download_and_preprocess_coco.sh ./data/dir/coco
Questo installa le librerie richieste ed esegue lo script di pre-elaborazione. Restituisce un numero di file
*.tfrecord
nella directory dei dati locali. Il completamento dello script di download e conversione COCO richiede circa un'ora.Copia i dati nel bucket Cloud Storage
Dopo aver convertito i dati in TFRecords, copiali dallo spazio di archiviazione locale al bucket Cloud Storage utilizzando il comando
gsutil
. Devi anche copiare i file di annotazione. Questi file consentono di convalidare le prestazioni del modello.(vm)$ gsutil -m cp ./data/dir/coco/*.tfrecord ${DATA_DIR} (vm)$ gsutil cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
Esegui la pulizia delle risorse VM
Dopo aver convertito il set di dati COCO in TFRecords e copiato in DATA_DIR nel tuo bucket Cloud Storage, puoi eliminare l'istanza di Compute Engine.
Disconnettiti dall'istanza di Compute Engine:
(vm)$ exit
La richiesta dovrebbe essere
username@projectname
, a indicare che sei in Cloud Shell.Elimina l'istanza di Compute Engine.
$ gcloud compute instances delete instance-name --zone=europe-west4-a