Descargar, preprocesar y subir el conjunto de datos COCO
COCO es un conjunto de datos a gran escala para la detección, la segmentación y la descripción de objetos. Entre los modelos de aprendizaje automático que usan el conjunto de datos COCO se incluyen los siguientes:
- Mask-RCNN
- Retinanet
- ShapeMask
Antes de entrenar un modelo en una TPU de Cloud, debes preparar los datos de entrenamiento.
En este documento se describe cómo preparar el conjunto de datos COCO para los modelos que se ejecutan en TPUs de Cloud. El conjunto de datos COCO solo se puede preparar después de crear una máquina virtual de Compute Engine. La secuencia de comandos que se usa para preparar los datos, download_and_preprocess_coco.sh
, se instala en la VM y debe ejecutarse en ella.
Después de preparar los datos ejecutando la download_and_preprocess_coco.sh
secuencia de comandos, puedes activar la TPU de Cloud y ejecutar el entrenamiento.
Se tarda aproximadamente 2 horas en descargar, preprocesar y subir por completo el conjunto de datos COCO a un segmento de Cloud Storage.
En Cloud Shell, configura
gcloud
con el ID de tu proyecto.export PROJECT_ID=project-id gcloud config set project ${PROJECT_ID}
En Cloud Shell, crea un segmento de Cloud Storage con el siguiente comando:
gcloud storage buckets create gs://bucket-name --project=${PROJECT_ID} --location=us-central2
Crea una VM de Compute Engine para descargar y preprocesar el conjunto de datos. Para obtener más información, consulta el artículo Crear e iniciar una instancia de Compute Engine.
$ 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
Conéctate a la máquina virtual de Compute Engine mediante SSH:
$ gcloud compute ssh vm-name --zone=us-central2-b
Cuando te conectes a la VM, el prompt de shell cambiará de
username@projectname
ausername@vm-name
.Configura dos variables: una para el segmento de almacenamiento que has creado antes y otra para el directorio que contiene los datos de entrenamiento (
DATA_DIR
) en el segmento de almacenamiento.(vm)$ export STORAGE_BUCKET=gs://bucket-name
(vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
Instala los paquetes necesarios para preprocesar los datos.
(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
Ejecuta la secuencia de comandos
download_and_preprocess_coco.sh
para convertir el conjunto de datos COCO en un conjunto de archivos TFRecord (*.tfrecord
) que espera la aplicación de entrenamiento.(vm)$ git clone https://github.com/tensorflow/tpu.git (vm)$ sudo -E bash tpu/tools/datasets/download_and_preprocess_coco.sh ./data/dir/coco
De esta forma, se instalan las bibliotecas necesarias y se ejecuta la secuencia de comandos de preprocesamiento. Genera archivos
*.tfrecord
en tu directorio de datos local. El script de descarga y conversión de COCO tarda aproximadamente una hora en completarse.Copia los datos en tu segmento de Cloud Storage.
Una vez que hayas convertido los datos al formato TFRecord, cópialos del almacenamiento local al segmento de Cloud Storage mediante la CLI de gcloud. También debes copiar los archivos de anotaciones. Estos archivos ayudan a validar el rendimiento del modelo.
(vm)$ gcloud storage cp ./data/dir/coco/*.tfrecord ${DATA_DIR} (vm)$ gcloud storage cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
Limpieza
Sigue estos pasos para limpiar tus recursos de Compute Engine y Cloud Storage.
Desconéctate de la máquina virtual de Compute Engine con el siguiente comando:
(vm)$ exit
Elimina tu máquina virtual de Compute Engine:
$ gcloud compute instances delete vm-name \ --zone=us-central2-b
Elimina tu segmento de Cloud Storage y su contenido:
$ gcloud storage rm -r gs://bucket-name $ gcloud storage buckets delete gs://bucket-name