본문 바로가기
머신러닝, 딥러닝/컴퓨터비전

COCO, Pascal VOC data format (Object detection)

by 고경수 2023. 4. 21.

COCO Dataset : JSON

Pascal VOC : XML

COCO Dataset format

COCO JSON 형식

각 섹션에 대해 살펴보자.

info : 

데이터 세트에 대한 정보를 제공

licenses :

데이터 세트에 사용된 다양한 이미지 라이선스 목록을 제공

categories :

각 카테고리 ID는 고유해야한다. 범주는 상위 범주에 속할 수 있다. 예를 들어, 꽃과 과일을 식별하는 데이터 세트가 있는 경우 꽃은 슈퍼 카테고리가 될 것이고 장미, 백합, 튤립은 detect 하고자 하는 꽃의 이름이 될 것 이다.

Images :

데이터 세트의 모든 이미지 목록을 포함한다. 이미지 ID는 고유해야 한다.

flickr_url, coco_url, data_captured는 선택사항이다.

annotations :

데이터 세트에 있는 모든 단일 이미지의 각 개별 객체 annotation 목록을 포함한다.

object detection을 위한 bounding box output 또는 object segmentation을 포함하는 섹션이다.

 

이미지에 감지하려는 4개의 개체가 있는 경우 4개 개체 모두에 대한 annotation이 있다.

 

전체 데이터 세트가 150개의 이미지로 구성되고 총 200개의 개체가 있는 경우 200개의 annotation이 있다.

 

segmentation : segmentation mask에 대한 모든 객체 인스턴스 주변의 다각형 정점에 대한 x 및 y 좌표를 포함한다.

area : bounding box의 면적이다. 픽셀값이다.

iscrowd : 단일 객체 분할인 경우 iscrowd = 0,  이미지에 여러개의 개체가 있는 경우엔  iscrowd = 1로 설정하며 이 경우 RLE가 사용된다.

RLE는 Run Length Encoding 이다. iscrowd = 1 일때, segmentation 섹션에 counts와 size 속성을 추가한다.

 

만약 가려진 경우 단일 객체 (iscrowd = 0)는 multiple polygons가 필요할 수 있다.

image_id : annotation을 지정하는 객체를 포함하는 이미지의 ID이다. image_id는 이미지 섹션에 있는 id에 해당한다.

bbox : COCO의 bounding box는 왼쪽 상단의 x 및 y 좌표와 height 및 width이다.

COCO의 bounding box : (x-top left, y-top left, width, height)

Pascal VOC의 bounding box : (x-top left, y-top left, x-bottom right, y-bottom right)

category_id : category 섹션에서 지정한 객체의 카테고리 이다.

id : annotation의 고유 ID이다.

RLE란 무엇인가? : 반복되는 값을 반복 횟수로 대체하여 작동하는 압축 방법이다.

ex) 0 11 0111 00 은 1 2 1 3 2 가 된다.

COCO Data format은 위의 segmentation 섹션에 포시된 대로 모든 개체 인스턴스에 대한 segmentation mask를 제공한다. 이로 인해 효율성 문제가 발생한다.

- mask를 컴팩트하게 보관하고

- mask 계산을 효율적으로 수행한다.

RLE 체계를 사용하여 두 가지 문제를 모두 해결한다.

RLE 표현의 크기는 마스크의 경계 픽셀 수에 비례한다. 영역, 합집합, 교차와 같은 작업은 RLE에서 효율적으로 계산된다.


Pascal VOC Dataset format

Pascal VOC는 객체 감지를 위한 표준화된 이미지 데이터 세트를 제공한다.

 

COCO와 Pascal VOC 데이터 형식의 차이점은 두 데이터 형식을 빠르게 이해하는 데 도움이 된다.

  • Pascal VOC는 JSON 형식인 COCO와 달리 XML 이다.
  • Pascal VOC에서는 데이터 세트의 각 이미지에 대한 파일을 만든다. COCO에는 train, test 및 validation을 위한 전체 데이터 세트에 대해 각각 하나의 파일이 있다.
  • Pascal VOC 및 COCO data format의 bounding box가 다르다.

COCO의 bounding box : (x-top left, y-top left, width, height)

Pascal VOC의 bounding box : (x-top left, y-top left, x-bottom right, y-bottom right)

folder : 이미지가 들어있는 폴더

filename : 폴더에 존재하는 물리적 파일의 이름

size : width, height, depth 에서 이미지 크기를 포함한다. 이미지가 흑백이면 깊이는 1이다. 컬러는 깊이가 3이다.

object : 개체 세부 정보를 포함한다. annotation이 여러 개인 경우 내용이 포함된 개체 태그가 반복된다. 개체 태그의 구성 요소는 다음과 같다.

  • name : 식별하려는 개체의 이름이다.
  • truncated : 객체에 지정된 경계 상자가 객체의 전체 범위와 일치하지 않음을 나타낸다. 예를 들어 객체가 이미지에서 부분적으로 보이면 truncated를 1로 설정한다. 객체가 완전히 보이면 truncated를 0으로 설정한다.
  • difficult : 개체가 인식하기 어려운 것으로 간주되면 개체가 어려운 것으로 표시된다. 물체를 인식하기 어렵다면 1로, 그렇지 않으면 0으로 설정한다.
  • bndbox : 이미지에 보이는 개체의 범위를 지정하는 Axis-aligned rectangle.

 

 

Object Detection Label을 이미지 위에 시각화 하기

https://deepbaksuvision.github.io/Modu_ObjectDetection/posts/02_01_PASCAL_VOC.html


참고 사이트

https://towardsdatascience.com/coco-data-format-for-object-detection-a4c5eaf518c5