안경잡이개발자

728x90
반응형

  FiftyOne 라이브러리는 COCO 데이터셋을 관리하기에 매우 편리한 라이브러리 중 하나입니다. FiftyOne 라이브러리의 공식 웹 사이트에서 제공하고 있는 COCO 데이터셋 관리 튜토리얼은 다음과 같습니다. 본 포스팅은 아래의 튜토리얼을 참고하여 작성되었습니다.

 

  ▶ FiftyOne 공식 웹 사이트: https://voxel51.com/docs/fiftyone/integrations/coco.html

 

COCO Integration — FiftyOne 0.11.1 documentation

COCO Integration With support from the team behind the COCO dataset, we’ve made it easy to dowload, visualize, and evaluate on the COCO dataset natively in FiftyOne! Note Check out this tutorial to see how you can use FiftyOne to evaluate a model on COCO

voxel51.com

 

※ FiftyOne 라이브러리 설치 ※

 

  FiftyOne 라이브러리는 다음과 같은 명령어로 설치를 진행할 수 있습니다.

 

!pip install fiftyone

 

※ COCO 2017 데이터셋에서 200개의 데이터만 가지고 오기 ※

 

  COCO 2017 validation 데이터셋에서 특정 개수의 이미지만 가지고 오고 싶다면 어떻게 하면 될까요? 예를 들어 200개의 이미지만 가지고 오고 싶다면, 다음과 같이 하면 됩니다.

 

import fiftyone as fo
import fiftyone.zoo as foz


dataset = foz.load_zoo_dataset(
    "coco-2017",
    split="validation",
    max_samples=200,
    shuffle=True,
)

 

  그러면 자동으로 서버에서 annotations 데이터와 이미지 200개를 다운로드하여 가져오게 됩니다. 참고로 COCO 2017의 validation 데이터셋은 총 5,000개의 이미지로 구성되어 있기 때문에, 만약에 max_samples의 값으로 5,000 이상의 값을 넣으면 전체 이미지 개수인 5,000장까지만 다운로드가 진행됩니다.

 

※ dataset 객체를 다시 파일로 저장하기 ※

 

  그렇다면 fiftyone.core.dataset 객체에 포함된 이미지를 어떻게 다시 폴더로 내보내기할 수 있을까요? 한 번 [링크] dataset 객체 설명 페이지에 접속해 봅시다. 페이지에 접속하여 export() 함수에 대한 설명을 확인할 수 있습니다. 설명을 확인해 보면 export_dir에 이미지 파일들이 저장되고, labels_path에 레이블에 대한 정보가 담기게 됩니다.

 

dataset.export(
    export_dir='./my_coco_val2017_200/',
    dataset_type=fo.types.COCODetectionDataset,
    label_field="ground_truth",
    labels_path="./annotations/instances.json",
)

 

  실제로 위 코드를 실행하면 다음과 같은 형태로 이미지와 레이블 정보가 기록됩니다.

 

 

  이러한 폴더를 압축하여 내보내고 싶다면 다음과 같이 할 수 있습니다.

 

!zip -r my_coco_val2017_200.zip ./my_coco_val2017_200/*

 

※ (참고) COCO 형식의 폴더로부터 데이터셋 불러오기 ※

 

  COCO 형식의 데이터셋 폴더로부터 dataset 객체를 불러오는 방법을 확인해 봅시다. 이 또한 굉장히 간단합니다. 자세한 내용은 [링크] FiftyOne 디스크로부터 데이터셋 불러오기 튜토리얼 페이지에서 확인할 수 있습니다.

 

# 이미지를 포함하고 있는 폴더 경로
data_path = "/path/to/images"

# COCO 레이블 JSON 파일이 포함된 경로
labels_path = "/path/to/coco-labels.json"

# 데이터셋 불러오기
dataset = fo.Dataset.from_dir(
    dataset_type=fo.types.COCODetectionDataset,
    data_path=data_path,
    labels_path=labels_path,
)
728x90
반응형