下載、預先處理,及上傳 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 中,使用專案 ID 設定 gcloud

    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 \
        --scopes=https://www.googleapis.com/auth/cloud-platform
  4. 使用 SSH 連線至 Compute Engine VM:

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

    連線至 VM 時,殼層提示會從 username@projectname 變更為 username@vm-name

  5. 設定兩個變數,一個用於先前建立的儲存空間值區,另一個用於儲存空間值區中儲存訓練資料 (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" && \
      pip3 install protobuf==3.19.0 tensorflow==2.11.0 numpy==1.26.4
  7. 執行 download_and_preprocess_coco.sh 指令碼,將 COCO 資料集轉換為訓練應用程式預期會接收到的一組 TFRecord 檔案 (*.tfrecord)。

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

    該指令碼會安裝所需的程式庫,並執行預先處理指令碼,然後在您的本機資料目錄中輸出 *.tfrecord 檔案。下載及轉換 COCO 的指令碼大約需要 1 小時才能執行完畢。

  8. 將資料複製到 Cloud Storage 值區。

    將資料轉換為 TFRecord 格式後,請使用 gcloud 命令列將資料從本機儲存空間複製到 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 和 Cloud Storage 資源。

  1. 中斷 Compute Engine VM 連線:

    (vm)$ exit
  2. 刪除 Compute Engine VM:

    $ gcloud compute instances delete vm-name \
        --zone=us-central2-b
  3. 刪除 Cloud Storage 值區及其內容:

    $ gcloud storage rm -r gs://bucket-name
    $ gcloud storage buckets delete gs://bucket-name