본문 바로가기
인공지능/머신러닝

[ML] dataset이란? coco dataset 란? Pascal VOC 란? (dataset 종류)

by 도토리묵 :D 2022. 9. 5.

오늘은 데이터셋의 대표적인 형태인 coco와 pascal voc 에 대해 알아봅시다.

 

데이터셋이란?

데이터셋은 특정 작업을 위해 데이터를 모아둔것 입니다.

 

 

computer vision 에서 가장 중요한 작업 중 하나는 데이터에 라벨을 지정하는 것입니다. 머신러닝 (특히 지도학습) 에서 이 라벨링을 한 데이터셋은 매우 중요합니다. 데이터셋에 따라 학습의 결과가 천차만별이 될 수 있기 때문입니다.

 

데이터셋은 다양한 형태로 존재할 수 있습니다.

coco dataset 부터 알아보겠습니다.

 

 

COCO Dataset이란?

coco dataset은 공식홈페이지의 정의에 따르면 object detection, segmentation, keypoint detection 등을 위한 데이터 포맷형식 이라고 명시되어 있습니다.

 

https://cocodataset.org/#home

 

COCO - Common Objects in Context

 

cocodataset.org

 

COCO Dataset 형태

coco의 구체적인 형태는 json형태로 구성되어 있습니다.

크게 5가지의 정보를 가지고 있는데 하나씩 예시를 보겠습니다.

 

1)  Info는 데이터셋에 대한 데이터셋  버전, 설명, 생성 날짜 등의 정보를 포함하고 있습니다.

"info":{ 
    "year":"2022",
    "version":"1",
    "description":"Exported from roboflow.ai",
    "contributor":"",
    "url":"https://public.roboflow.ai/object-detection/undefined",
    "date_created":"2022-09-05T06:29:40+00:00"
    }

 

 

2) license 는 전체 이미지의 라이센스 정보가 들어있습니다.

"licenses":[
	{
    	"id":1,
    	"url":"https://creativecommons.org/licenses/by/4.0/",
    	"name":"CC BY 4.0"
        }
 ]

 

3) category는 데이터셋의 카테고리 종류에 대한 정보가 들어있습니다.

"categories":[
	{
    	"id":0,
        "name":"house",
        "supercategory":"none"
        },
     {
     	"id":1,
        "name":"house",
        "supercategory":"house"
        },
     {
     	"id":2,
     	"name":"tree",
     	"supercategory":"house"
        }
  ]

 

4) Images 는 전체 이미지들의 정보가 들어있습니다. 이미지 아이디, 이름, 크기, 생성날짜 등의 정보가 들어있습니다.

"images":[
{
	"id":0,
    "license":1,
    "file_name":"33_PNG.rf.2b2db04dbc7c943f9bf058bf1e6fca6f.jpg",
    "height":640,
    "width":640,
    "date_captured":"2022-09-05T06:29:40+00:00"
    },
 {
    "id":1,
    "license":1,
    "file_name":"59_PNG.rf.2b261dff547c6daffe3ce854abca69cd.jpg",
    "height":640,
    "width":640,
    "date_captured":"2022-09-05T06:29:40+00:00"
    }, ....
]

5) annotations 은 바운딩 박스의 정보가 들어 있습니다. 객체별로 하나씩 존재하며 바운딩 박스의 좌표 카테고리 정보 영역 등의 정보가 들어있습니다.

 

"annotations":[
{
	"id":0,
    "image_id":0,
    "category_id":1,
    "bbox":[48,171,198.5,450.5],
    "area":89424.25,
    "segmentation":[],
    "iscrowd":0
    },
{
	"id":1,
    "image_id":0,
    "category_id":2,
    "bbox":[238,294,84,337],
    "area":28308,
    "segmentation":[],
    "iscrowd":0
},
{	
	"id":2,
    "image_id":0,
    "category_id":2,
    "bbox":[504,267,131,367.5],
    "area":48142.5,
    "segmentation":[],
    "iscrowd":0
    }
}
]

 

 

Pascal VOC 란

Pascal VOC 는 Object Detection 의 대표적인 dataset 중 하나의 형태로 XML 형태로 구성되어 있습니다.

 

 

Pascal VOC 구조

 

Pascal VOC는 XML 형태의 데이터 이다 

<annotation>
	<folder></folder>
	<filename>1_PNG.rf.ab9fe9b5f010ab562b3aa01dd4d41d39.jpg</filename>
	<path>1_PNG.rf.ab9fe9b5f010ab562b3aa01dd4d41d39.jpg</path>
	<source>
		<database>roboflow.ai</database>
	</source>
	<size>
		<width>640</width>
		<height>640</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>house</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<occluded>0</occluded>
		<bndbox>
			<xmin>133</xmin>
			<xmax>417</xmax>
			<ymin>230</ymin>
			<ymax>534</ymax>
		</bndbox>
	</object>
	<object>
		<name>tree</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<occluded>0</occluded>
		<bndbox>
			<xmin>316</xmin>
			<xmax>641</xmax>
			<ymin>81</ymin>
			<ymax>564</ymax>
		</bndbox>
	</object>
</annotation>
  • Annotations : 가장 상위 태그로 JPEG Images 폴더 속 원본 이미지와 같은 이름들의 xml파일들이 존재합니다.
  • Folder:  이미지가 포함된 폴더
  • filename: 이미지 파일 이름
  • size: 너비, 높이 깊이 측면에서 이미지의 크기 정보 입니다. 이미지가 흑백이면 깊이가 1이고 컬러이면 3입니다.
  • object: 객체 세부 정보를 포함합니다. 세부 하위 태그로 name, pose, truncated, difficult, occluded, bndbox가 포함되어 있습니다.
  • name: 객체의 이름입니다.
  • truncated: 객체에 대해 지정된 바운딩 박스가 객체 전체범위와 일치하지 않음을 나타냅니다. 객체가 이미지에서 부분저그올 보이면 1 객체가 완전히 보이면 0으로 설정합니다.
  • difficult: 물체를 인식하기 어려운 것으로 간주되면 1 그렇지 않으면 0 으로 설정됩니다.
  • bndbox: 이미지에 표시되는 바운딩 박스의 좌표에 대한 정보를 가지고 있습니다.

 

 

 

 

COCO VS Pascal VOC

 

coco 데이터셋과 Pascal VOC 의 차이점에 대해 알면 이해하는것에 도움이 더 될것입니다.

 

  • Pascal VOC는 JSON 파일이 있는 COCO와 달리 XML 파일입니다.
  • Pascal VOC에서는 데이터 셋의 각 이미지에 대한 파일을 생성합니다. COCO에는 교육, 테스트 및 검증을 위한 전체 데이터 세트에 대해 각각 하나의 파일이 있습니다.
  • Pascal VOC 및 COCO 데이터 형식의 경계 상자가 다릅니다.

COCO 바운딩 박스: ( x-상단 왼쪽, y-상단 왼쪽, 너비, 높이 )

파스칼 VOC 바운딩 박스:( xmin-상단 왼쪽, ymin-상단 왼쪽, xmax-하단 오른쪽, ymax-하단 오른쪽 )

 

 

참고한 블로그

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

 

COCO data format for Object detection

In this article we will understand two popular data formats : COCO data format and Pascal VOC data formats. These data formats are used…

towardsdatascience.com

 

댓글