티스토리 뷰

DeepLearning

Vision Annotation Format

Hewii 2021. 12. 16. 14:59

Annotation / Labelling

딥러닝은 분석을 위한 기본 파이프라인에 학습할 수있는 데이터를 Input하고, 정해져 있는 파이프라인을 통해 학습을 한다. 기본적으로 지도학습은 데이터와 해당 데이터의 분류 정보를 넣어줘야 한다. 

 

따라서 Vision 관련 AI에서 Object Detection의 경우는 이미지와 분류 하고자 하는 물체를 이미지내에서 영역을 지정해줘야 이를 학습 할 수 있다. 이미지의 원하는 물체의 영역 값을 알려주고 해당 물체를 식별할 수 있는 코드를 알려줘야 하는데 오픈되어있는 여러 데이터셋중 CoCo Dataset과 PascalVOC의 Annotation Format을 분석 해보고자 한다.

 

 

-coco dataset 

:json 기준으로 되어 있으며, 한개의 json 파일 안에 이미지 정보, annotation 정보등 모든 정보가 들어있다

 

.format

{
"info": {
    "description": "COCO 2014 Dataset",
    "url": "http://cocodataset.org",
    "version": "1.0",
    "year": 2014,
    "contributor": "COCO Consortium",
    "date_created": "2017/09/01"
}

"annotations":[
{
    "segmentation": [
        [329.88,211.23,337.63,211.93,341.51,210.17,341.86,206.65,340.1,202.77,335.52,199.6,335.52,197.13,335.52,190.44]],
        "num_keypoints": 16,
        "area": 3817.67415,
        "iscrowd": 0,
        "keypoints": [311,101,2,315,98,2,308,97,2,324,97,2,304,96,1,329,110,2,299,109,2,336,134,2,288,126],
        "image_id": 57870,
        "bbox": [273.14,82.25,72.6,129.68],
        "category_id": 1,
        "id": 183022
},
]

"images":[
{
    "license": 5,
    "file_name": 
    "COCO_train2014_000000057870.jpg",
    "coco_url": "http://images.cocodataset.org/train2014/COCO_train2014_000000057870.jpg",
    "height": 480,
    "width": 640,
    "id": 57870
},
]

"categories": [
    {
        "supercategory": "person",
        "id": 1,
        "name": "person",
        "keypoints": [
            "nose","left_eye",....  
        ],
        "skeleton": [
            [16,14],[14,12]
 		]
    }
]
}

 

Pascal VOC

:xml을 기본으로 이미지파일과 xml 파일의 1:1 구조로 이루어 진다

 

.format

 

<annotation>
 <folder>[image의 폴더이름]</folder>
 <filename>[해당 annotation이 참조 하는 이미지 이름]</filename>
<path>[해당 annotation이 참조하는 이미지의 경로]</path>
 <source>
   <database>Unknown</database>
 </source>
 <size>
   <width>[참조 이미지의 가로길이]</width>
   <height>[참조 이미지의 세로 길이]</height>
   <depth>[참조 이미지의 채널]</depth>
 </size>
 <segmented>0</segmented>
 <object>
   <name>[OBJECT의 이름]</name>
   <pose>[OBJECT의 Pose Flag]</pose>
   <truncated>0</truncated>
   <difficult>[Object의 분석 난이도 여부]</difficult>
   <bndbox>
     <xmin>[오브젝트 박스의 시작점 x좌표]</xmin>
     <ymin>[오브젝트 박스의 시작점 y좌표]</ymin>
     <xmax>[오브젝트 박스의 끝점 x좌표]</xmax>
     <ymax>[오브젝트 박스의 끝점 y좌표]</ymax>
   </bndbox>
 </object>
</annotation>
댓글