COCO Dataset 이란?
머신러닝을 위한 일종의 데이터 포맷의 유형 하나로, COCO Dataset은 object detection, segmentation, keypoint dectection을 위한 데이터 포맷 형식이다.
Deteection, segmentation 등 task를 위한 bounding box의 좌표, segmentation mask 픽셀 등 필요한 정보들(annotation)을 json형태로 제공합니다.
Json file은 Info, Licences, Images, Categories, Annotaions, 크게 5가지로 구분된 정보를 가지고 있습니다. 이를 바탕으로 Licences를 제외한 4개의 정보에 대한 설명을 하겠습니다.
- Info) 데이터 셋에 대한 데이터 셋 버전, 설명, 생성 날짜 등의 정보를 포함하고 있습니다.
- 데이터 셋에 존재하는 Category에 대한 정보가 담겨 있습니다.
- 데이터 셋에 속하는 이미지 정보를 가져옵니다. 이미지의 filename, width, heigth등의 정보가 포함되어 있습니다.
- 한 이미지에 대응하는 여러객체들을 한개씩 나누어 image_id, category_id , box_boundary 등에 대한 정보를 저장하고 있습니다.
이때 해당 cocodatset으로 이뤄진 json file을 읽어오는 방법에 대해 알아보겠습니다.
from pycocotools.coco import COCO
class 별칭(torch.utils.data.Dataset):
self.coco = COCO("파일경로/_annotations.coco.json"
해당 위 형식과 같이 annotations.coco.json file이 있는 경로를 입력하여 해당 정보들을 가져올 수 있습니다.
이때 개별적으로 id, category,annotation에 대한 정보를 가져오려면 해당 명령어를 통해 진행합니다.
id
coco.loadImgs(self.coco.getImgIds(idx)) # Imgs의 정보 한덩어리
category
coco.loadCats(self.coco.getCatIds(idx)) # Imgs의 정보 한덩어리
annotation
coco.loadAnns(self.coco.getAnnIds(idx)) # annotation의 정보 한덩어리
- load@@은 @@의 id를 input으로 @@ dict전체를 retrun하는 함수입니다.
- get@@Ids는 해당 @@을 input으로 그에 해당하는 @@ id를 return하는 함수입니다.
해당 dataset을 보다 손쉽게 만들기 위해 해외 사이트를 하나 가져왔습니다.
project를 만든후 데이터 라벨링을 하여 손수 데이터를 만드는 방법이 있고, 다른 사람들이 만든 project를 바탕으로 데이터를 불러 올 수도 있습니다.
위 링크를 걸며 이만 마치겠습니다. 감사합니다 (_ _)
'AI > Computer vision' 카테고리의 다른 글
Yolov5 Deep learning (2) (0) | 2022.07.07 |
---|---|
Detectron 2 with custom dataset (0) | 2022.07.06 |
Detectron2 공부하기 (0) | 2022.07.05 |
YOLOv5 Deep learning (1) (0) | 2022.07.01 |