FiftyOne 라이브러리를 이용해 COCO 2017 validation 데이터셋에서 원하는 개수의 이미지만 가져와 작은 크기의 데이터셋 구축하기
FiftyOne 라이브러리는 COCO 데이터셋을 관리하기에 매우 편리한 라이브러리 중 하나입니다. FiftyOne 라이브러리의 공식 웹 사이트에서 제공하고 있는 COCO 데이터셋 관리 튜토리얼은 다음과 같습니다. 본 포스팅은 아래의 튜토리얼을 참고하여 작성되었습니다.
▶ FiftyOne 공식 웹 사이트: https://voxel51.com/docs/fiftyone/integrations/coco.html
※ 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,
)
'기타' 카테고리의 다른 글
fvcore를 이용해 NumPy 형식의 이미지를 Random Transformation하는 방법 (RandomRotation, RandomFlip, RandomContrast, RandomBrightness, RandomSaturation 등) (0) | 2021.07.29 |
---|---|
TestDome (해외 및 국내 코딩 테스트 사이트) 소개 및 TestDome에서 예제 문제 풀어보기 (0) | 2021.07.28 |
학교 계정 원드라이브(OneDrive) 저장소에서 남은 용량 확인하는 방법 (0) | 2021.07.27 |
COCO 데이터셋 설명 및 다운로드 방법 정리 (1) | 2021.07.27 |
한국투자증권을 이용한 카카오 뱅크 공모주 청약 방법 (2021년 7월 27일까지) (0) | 2021.07.26 |