Télécharger, prétraiter et importer l'ensemble de données COCO

COCO est un ensemble de données de détection d'objets, de segmentation et de sous-titrage à grande échelle. Les modèles de machine learning qui utilisent l'ensemble de données COCO sont les suivants :

  • Mask-RCNN
  • Retinanet
  • ShapeMask

Avant de pouvoir entraîner un modèle, vous devez préparer les données d'entraînement.

Cet article explique comment préparer l'ensemble de données COCO pour les modèles exécutés sur Cloud TPU. Vous ne pouvez suivre cette procédure qu'après avoir créé une VM Compute Engine. Le script utilisé pour préparer les données, download_and_preprocess_coco.sh, est installé sur la VM et doit être exécuté sur celle-ci.

Après avoir préparé les données en exécutant le script download_and_preprocess_coco.sh, vous pouvez faire intervenir la ressource Cloud TPU et exécuter l'entraînement.

Le téléchargement/prétraitage complet et l'importation de l'ensemble de données COCO sur un bucket de stockage Google Cloud prennent environ deux heures.

  1. Dans Cloud Shell, créez un bucket Cloud Storage à l'aide de la commande suivante:

    gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
    
  2. Lancez une instance de VM Compute Engine.

    Cette instance de VM ne sera utilisée que pour télécharger et prétraiter l'ensemble de données COCO. Renseignez le nom de votre choix avec le paramètre instance-name.

    $ 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
    

    Description des options de commande

    vm-only
    Pour créer une VM uniquement. Par défaut, la commande gcloud compute tpus execution-groups crée une VM et un Cloud TPU.
    name
    Nom de la ressource Cloud TPU à créer.
    zone
    Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
    disk-size
    Taille du disque dur en Go de la VM créée par la commande gcloud compute tpus execution-groups.
    machine-type
    Type de machine de la VM Compute Engine à créer.
    tf-version
    La version de Tensorflow que gcloud compute tpus execution-groups installe sur la VM.
  3. Si vous n'êtes pas automatiquement connecté à l'instance Compute Engine, connectez-vous en exécutant la commande ssh suivante. Lorsque vous êtes connecté à la VM, votre invite d'interface système passe de username@projectname à username@vm-name:

      $ gcloud compute ssh instance-name --zone=europe-west4-a
      

  4. Configurez deux variables, une pour le bucket de stockage que vous avez créé précédemment et une pour le répertoire contenant les données d'entraînement (DATA_dir) sur le bucket de stockage.

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    
    (vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
  5. Installez les packages nécessaires au prétraitement des données.

    (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"
    
  6. Exécutez le script download_and_preprocess_coco.sh pour convertir l'ensemble de données COCO en fichiers TFRecord (*.tfrecord), ce qui correspond au format attendu par l'application d'entraînement.

    (vm)$ git clone https://github.com/tensorflow/tpu.git
    (vm)$ sudo bash tpu/tools/datasets/download_and_preprocess_coco.sh ./data/dir/coco
    

    Cela installe les bibliothèques requises et exécute le script de prétraitement. Il génère un certain nombre de fichiers *.tfrecord dans votre répertoire de données local. L'exécution du script de téléchargement et de conversion COCO prend environ une heure.

  7. Copier les données dans votre bucket Cloud Storage

    Après avoir converti les données en TFRecord, copiez-les depuis le stockage local vers votre bucket Cloud Storage à l'aide de la commande gsutil. Vous devez également copier les fichiers d'annotation. Ces fichiers vous aident à valider les performances du modèle.

    (vm)$ gsutil -m cp ./data/dir/coco/*.tfrecord ${DATA_DIR}
    (vm)$ gsutil cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
    
  8. Nettoyer les ressources de la VM

    Une fois l'ensemble de données COCO converti au format TFRecord et copié dans l'ensemble de données DATA_dir dans votre bucket Cloud Storage, vous pouvez supprimer l'instance Compute Engine.

    Déconnectez-vous de l'instance Compute Engine:

    (vm)$ exit
    

    Votre invite devrait maintenant être username@projectname, indiquant que vous êtes dans Cloud Shell.

  9. Supprimez votre instance Compute Engine.

      $ gcloud compute instances delete instance-name
        --zone=europe-west4-a