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 스토리지 버킷에 완전히 다운로드/사전 처리하고 업로드하려면 약 2시간 정도 걸립니다.
Cloud Shell에서 프로젝트 ID로
gcloud
를 구성합니다.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.11.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
앞에서 만든 스토리지 버킷용 변수와 스토리지 버킷에 학습 데이터(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 데이터 세트를 학습 애플리케이션에 필요한 TFRecords(*.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 데이터 세트가 TFRecords로 변환되고 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