COCO データセットのダウンロード、前処理、アップロード

COCO は、オブジェクト検出、セグメンテーション、およびキャプション生成のための大規模なデータセットです。COCO データセットを使用する機械学習モデルには次のものがあります。

  • Mask RCNN
  • RetinaNet
  • ShapeMask

Cloud TPU でモデルをトレーニングするには、その前に、トレーニング データを準備する必要があります。

このドキュメントでは、Cloud TPU で実行するモデルの COCO データセットを準備する方法について説明します。Compute Engine VM を作成した後でのみ、COCO データセットを準備できます。データの準備に使用するスクリプト download_and_preprocess_coco.sh は、VM にインストールされ、VM で実行する必要があります。

download_and_preprocess_coco.sh スクリプトを実行してデータを準備したら、Cloud TPU を起動してトレーニングを実行できます。

COCO データセット全体をダウンロードして前処理し、Cloud Storage バケットにアップロードするには、約 2 時間を要します。

  1. Cloud Shell で、gcloud をプロジェクト ID で構成します。

    export PROJECT_ID=project-id
    gcloud config set project ${PROJECT_ID}
  2. Cloud Shell で、次のコマンドを使用して Cloud Storage バケットを作成します。

    gcloud storage buckets create gs://bucket-name --project=${PROJECT_ID} --location=us-central2
  3. Compute Engine VM を作成し、データセットをダウンロードして前処理します。詳細については、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
  4. SSH を使用して Compute Engine VM に接続します。

    $ gcloud compute ssh vm-name --zone=us-central2-b

    VM に接続すると、シェル プロンプトが username@projectname から username@vm-name に変わります。

  5. 2 つの変数を設定します。1 つは以前に作成したストレージ バケット用であり、もう 1 つはストレージ バケット上のトレーニング データ(DATA_DIR)を保持するディレクトリ用です。

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    (vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
  6. データの前処理に必要なパッケージをインストールします。

    (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"
  7. download_and_preprocess_coco.sh スクリプトを実行して、COCO データセットをトレーニング アプリケーションで想定される一連の TFRecord ファイル(*.tfrecord)に変換します。

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

    これにより、必要なライブラリがインストールされ、前処理スクリプトが実行されます。ローカルのデータ ディレクトリに *.tfrecord ファイルが出力されます。COCO のダウンロードと変換スクリプトが完了するまでには約 1 時間かかります。

  8. データを Cloud Storage バケットにコピーする

    データを TFRecord 形式に変換してから、gcloud CLI を使用してローカル ストレージから Cloud Storage バケットにデータをコピーします。アノテーション ファイルもコピーする必要があります。アノテーション ファイルは、モデルのパフォーマンスの検証に利用できます。

    (vm)$ gcloud storage cp ./data/dir/coco/*.tfrecord ${DATA_DIR}
    (vm)$ gcloud storage cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
  9. Compute Engine VM との接続を解除します。

    (vm)$ exit

    プロンプトが username@projectname に変わります。これは、現在、Cloud Shell 内にいることを示しています。

  10. Compute Engine VM を削除します。

    $ gcloud compute instances delete vm-name \
    --zone=us-central2-b