DeepLearning/Computer Vision

[Object Detection] Image Annotation Formats

yooj_lee 2021. 3. 17. 13:53
300x250

Image Annotation Formats

 Object Detection 시 pascal voc, coco 등 annotation format이 있다. 모델에 넣을 인풋을 세팅할 때 이런 포맷을 지정해줘야함.


COCO

 COCO 포맷은 object detection, keypoint detection, stuff segmentation, panoptic segmentation, image captioning의  5개의 annotation 타입이 있다. Annotation은 JSON 파일 형식으로 저장되어 있다. 아래는 object detection의 경우 COCO 포맷 JSON파일의 예시이다.

annotation{
"id" : int,
"image_id": int,
"category_id": int,
"segmentation": RLE or [polygon],
"area": float,
"bbox": [x,y,width,height],
"iscrowd": 0 or 1,
}
categories[{
"id": int,
"name": str,
"supercategory": str,
}]

 

 

PASCAL VOC

PASCAL VOC 포맷은 XML 파일 형태로 저장이 되어 있다. object detection에 대한 PASCAL VOC 포맷 예시는 다음과 같다.

<annotation> 
  <folder>Train</folder> 
  <filename>01.png</filename>      
  <path>/path/Train/01.png</path> 
  <source>  
    <database>Unknown</database> 
  </source>
  <size>  
    <width>224</width>  
    <height>224</height>  
    <depth>3</depth>   
  </size> 
  <segmented>0</segmented> 
  <object>  
    <name>36</name>  
    <pose>Frontal</pose>  
    <truncated>0</truncated>  
    <difficult>0</difficult>  
    <occluded>0</occluded>  
    <bndbox>   
      <xmin>90</xmin>   
      <xmax>190</xmax>   
      <ymin>54</ymin>   
      <ymax>70</ymax>  
    </bndbox> 
  </object>
</annotation>

 

YOLO

 YOLO 포맷은 각 이미지 파일 당 같은 파일명의 txt 파일로 라벨이 저장되어 있다는 것이 특징이다. 이때 두 파일은 같은 디렉토리에 저장이 되어야 한다. 각 txt 파일은 아래와 같은 정보를 갖는다.

<object-class> <x> <y> <width> <height>

여러 개의 object가 있는 경우 line by line으로 기록되어 있다. 아래는 2가지의 object가 탐지된 예시이다.

0 45 55 29 67
1 99 83 28 44

 


어느 모델을 사용할 것인가에 따라 데이터셋의 annotation 포맷을 변경해줄 필요가 있다. 예를 들어 yolo 모델을 사용하여 학습이나 추론을 진행할 경우, 데이터셋이 pascal voc 혹은 coco 포맷이라면 각각 xml과 json 파일을 파싱하여 yolo 포맷에 맞게 txt 파일을 생성해야할 것이다.

 

 

Reference

towardsdatascience.com/image-data-labelling-and-annotation-everything-you-need-to-know-86ede6c684b1

300x250