下载、预处理和上传 COCO 数据集
COCO 是一种大规模的对象检测、细分和字幕数据集。使用 COCO 数据集的机器学习模型包括:
- Mask-RCNN
- Retinanet
- ShapeMask
在 Cloud TPU 上训练模型之前,您必须先准备训练数据。
本文档介绍了如何准备 COCO 数据集,
可在 Cloud TPU 上运行的多个模型只有在创建 Compute Engine 虚拟机后,才能准备 COCO 数据集。用于准备数据的脚本 download_and_preprocess_coco.sh
安装在虚拟机上,并且必须在虚拟机上运行。
通过运行 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 虚拟机以下载和预处理数据集。如需了解详情,请参阅创建和启动 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 虚拟机:
$ gcloud compute ssh vm-name --zone=us-central2-b
连接到虚拟机时,Shell 提示符会从
username@projectname
至username@vm-name
。设置两个变量,一个用于 另一个是之前创建的目录 存储桶上的训练数据 (
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 下载和转换脚本大约需要一个小时才能完成。将数据复制到您的 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)$ exit
您的提示符现在应为
username@projectname
,表明您位于 Cloud Shell 中。删除您的 Compute Engine 虚拟机:
$ gcloud compute instances delete vm-name \ --zone=us-central2-b