Download, pre-elaborazione e caricamento del set di dati COCO
COCO è un set di dati di rilevamento, segmentazione e sottotitoli su larga scala. I modelli di machine learning che utilizzano il set di dati COCO includono:
- Maschera-RCNN
- Retinanet
- ShapeMask
Prima di poter addestrare un modello su una 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 che hai 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.
Per scaricare/preelaborare completamente e caricare il set di dati COCO in un bucket di archiviazione Google Cloud, sono necessarie circa due 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 seguente comando:
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 preelaborare il set di dati COCO. Compila il campo 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.6.0
Descrizioni flag 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 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 Compute Engine, esegui l'accesso eseguendo questo comando
ssh
. Dopo aver eseguito l'accesso alla VM, il prompt di shell cambia dausername@projectname
ausername@vm-name
:$ gcloud compute ssh instance-name --zone=europe-west4-a
Configura due variabili, una per il bucket di archiviazione che hai 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
) previsto.(vm)$ git clone https://github.com/tensorflow/tpu.git (vm)$ sudo bash tpu/tools/datasets/download_and_preprocess_coco.sh ./data/dir/coco
Vengono installate le librerie richieste ed eseguito lo script di pre-elaborazione. Nella directory dei dati locali viene restituito un numero di file
*.tfrecord
. Lo script COCO per il download e la conversione richiede circa un'ora.Copia i dati nel tuo bucket Cloud Storage
Dopo aver convertito i dati in TFRecord, copiali dallo spazio di archiviazione locale nel tuo bucket Cloud Storage utilizzando il comando
gsutil
. Devi anche copiare i file delle annotazioni. 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}
Pulisci le risorse VM
Dopo aver convertito il set di dati COCO in TFRecords e copiato nel DATA_DIR nel tuo bucket Cloud Storage, puoi eliminare l'istanza di Compute Engine.
Disconnetti dall'istanza Compute Engine:
(vm)$ exit
Il tuo prompt dovrebbe ora essere
username@projectname
, a indicare che ti trovi in Cloud Shell.Elimina la tua istanza di Compute Engine.
$ gcloud compute instances delete instance-name --zone=europe-west4-a