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 時間を要します。
Cloud Shell で、
gcloud
をプロジェクト ID で構成します。export PROJECT_ID=project-id gcloud config set project ${PROJECT_ID}
Cloud Shell で、次のコマンドを使用して Cloud Storage バケットを作成します。
gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
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 にインストールされます。
自動的に Compute Engine インスタンスにログインしない場合は、次の
ssh
コマンドを実行してログインします。VM にログインすると、シェル プロンプトがusername@projectname
からusername@vm-name
に変わります。$ gcloud compute ssh instance-name --zone=europe-west4-a
2 つの変数を設定します。1 つは以前に作成したストレージ バケット用であり、もう 1 つはストレージ バケット上のトレーニング データ(DATA_DIR)を保持するディレクトリ用です。
(vm)$ export STORAGE_BUCKET=gs://bucket-name
(vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
データの前処理に必要なパッケージをインストールします。
(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"
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 に変換した後、
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}
VM リソースをクリーンアップする
COCO データセットが TFRecord に変換され、Cloud Storage バケットの DATA_DIR にコピーされたら、Compute Engine インスタンスを削除できます。
Compute Engine インスタンスから接続を切断します。
(vm)$ exit
プロンプトが
username@projectname
に変わります。これは、現在、Cloud Shell 内にいることを示しています。Compute Engine インスタンスを削除します。
$ gcloud compute instances delete instance-name --zone=europe-west4-a