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 データセットを完全にダウンロードして前処理し、Google Cloud Storage バケットにアップロードするには、約 2 時間を要します。

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

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

    gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
    
  3. Compute Engine VM インスタンスを起動します。

    この VM インスタンスは、COCO データセットのダウンロードと前処理にのみ使用されます。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.12.0
    

    コマンドフラグの説明

    vm-only
    VM のみを作成します。デフォルトでは、gcloud compute tpus execution-groups コマンドは VM と Cloud TPU を作成します。
    name
    作成する Cloud TPU の名前。
    zone
    Cloud TPU を作成するゾーン
    disk-size
    gcloud compute tpus execution-groups コマンドで作成された VM のハードディスクのサイズ(GB)。
    machine-type
    作成する Compute Engine VM のマシンタイプ
    tf-version
    Tensorflow gcloud compute tpus execution-groups のバージョンが VM にインストールされます。
  4. 自動的に Compute Engine インスタンスにログインしない場合は、次の ssh コマンドを実行してログインします。VM にログインすると、シェル プロンプトが username@projectname から username@vm-name に変わります。

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

  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 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"
    
  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 に変換した後、gsutil コマンドを使用して、ローカル ストレージから Cloud Storage バケットに変換後のデータをコピーします。アノテーション ファイルもコピーする必要があります。アノテーション ファイルは、モデルのパフォーマンスの検証に利用できます。

    (vm)$ gsutil -m cp ./data/dir/coco/*.tfrecord ${DATA_DIR}
    (vm)$ gsutil cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
    
  9. VM リソースをクリーンアップする

    COCO データセットが TFRecord に変換され、Cloud Storage バケットの DATA_DIR にコピーされたら、Compute Engine インスタンスを削除できます。

    Compute Engine インスタンスから接続を切断します。

    (vm)$ exit
    

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

  10. Compute Engine インスタンスを削除します。

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