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 時間を要します。
Cloud Shell で、
gcloud
をプロジェクト ID で構成します。export PROJECT_ID=project-id gcloud config set project ${PROJECT_ID}
Cloud Shell で、次のコマンドを使用して Cloud Storage バケットを作成します。
gcloud storage buckets create gs://bucket-name --project=${PROJECT_ID} --location=us-central2
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
SSH を使用して Compute Engine VM に接続します。
$ gcloud compute ssh vm-name --zone=us-central2-b
VM に接続すると、シェル プロンプトが
username@projectname
からusername@vm-name
に変わります。2 つの変数を設定します。1 つは以前に作成したストレージ バケット用であり、もう 1 つはストレージ バケット上のトレーニング データ(
DATA_DIR
)を保持するディレクトリ用です。(vm)$ export STORAGE_BUCKET=gs://bucket-name
(vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
データの前処理に必要なパッケージをインストールします。
(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"
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 時間かかります。データを 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}
Compute Engine VM との接続を解除します。
(vm)$ exit
プロンプトが
username@projectname
に変わります。これは、現在、Cloud Shell 内にいることを示しています。Compute Engine VM を削除します。
$ gcloud compute instances delete vm-name \ --zone=us-central2-b