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시간 정도 걸립니다.

  1. Cloud Shell에서 프로젝트 ID로 gcloud를 구성합니다.

    export PROJECT_ID=project-id
    gcloud config set project ${PROJECT_ID}
    
  2. Cloud Shell에서 다음 명령어를 사용하여 Cloud Storage 버킷을 만듭니다.

    gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
    
  3. 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에 설치됩니다.
  4. Compute Engine 인스턴스에 자동으로 로그인되지 않으면 다음 ssh 명령어를 실행하여 로그인합니다. VM에 로그인하면 셸 프롬프트가 username@projectname에서 username@vm-name으로 변경됩니다.

      $ gcloud compute ssh instance-name --zone=europe-west4-a
      

  5. 앞에서 만든 스토리지 버킷용 변수와 스토리지 버킷에 학습 데이터(DATA_DIR)가 포함된 디렉터리용 변수를 설정합니다.

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    
    (vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
  6. 데이터를 사전 처리하는 데 필요한 패키지를 설치합니다.

    (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"
    
  7. 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시간 정도 걸립니다.

  8. 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}
    
  9. VM 리소스 삭제

    COCO 데이터 세트가 TFRecords로 변환되고 Cloud Storage 버킷의 DATA_DIR에 복사되면 Compute Engine 인스턴스를 삭제할 수 있습니다.

    Compute Engine 인스턴스에서 연결을 해제합니다.

    (vm)$ exit
    

    프롬프트가 username@projectname으로 바뀌면 Cloud Shell에 있는 것입니다.

  10. Compute Engine 인스턴스 삭제

      $ gcloud compute instances delete instance-name
        --zone=europe-west4-a