☞ 문서의 내용은 가장 하단 참고문헌 및 사이트를 참고하여 필자가 보기 쉽도록 정리한 내용입니다.
☞ 틀린 내용 및 저작권 관련 문의가 있는 경우 문의하시면 수정 및 삭제 조치하겠습니다.
PASCAL VOC는 대표적인 Object Detection Dataset 중 하나이다. PASCAL Dataset은 기본적으로 홈페이지에서 다운로드 받을 수 있다. 하지만 Pytorch 등과 같이 코드를 통해 간단히 다운로드 받을 수 도 있다. 다운로드 홈페이지는 PASCAL VOC 공식 홈페이지에 접속하여 다운로드 받을 수 있으며 공식 홈페이지에 접속이 안된다면 PASCAL VOC Dataset Mirror 사이트에 방문하여 설치할 수 있다.
PASCAL VOC Dataset의 구조는 아래와 같다. Object Detection을 할 때는 주로 Annotations, JPEGImages, ImageSets 폴더가 사용된다.
VOC2007
├── Annotations
├── ImageSets
├── JPEGImages
├── SegmentationClass
└── SegmentationObject
- Annotations : JPEGImages의 정답 데이터 xml파일 (class명, 이미지 크기, Bounding box 크기 등)
- ImageSets: 특정 클래스가 어떤 이미지에 있는지 등에 대한 정보를 포함하는 폴더 (test, train, val ,car ...)
- JPEGImages : jpg 확장자를 가진 이미지 파일
- SegmentationClass : Semantic Segmentation을 학습하기 위한 label 이미지들
- SegmentationObject : Instance segmentation을 학습하기 위한 label 이미지들
VOC 2007의 Datas set은 1GB 정도로 크기가 크지 않다. class의 개수는 총 22개로 종류는 아래와 같다. DataSet에는 총 9,963개의 주석이 달린(annotated) 이미지가 포함되어 있다. 이 중에서 5,011개가 학습 데이터(training data)이다. 기본적인 PASCAL VOC 2007은 학습 : 평가 : 테스트 = 1: 1 : 2 정도의 비율을 가진다는 점이 특징이다. (학습 데이터가 테스트 데이터보다 더 작다)
person, bird, cat, cow, dog, horse, sheep ,aeroplane,
bicycle, boat, bus, car, motorbike, train, bottle,
chair, dining, table, potted, plant, sofa, tv/monitor
xml 파일 구조
아래는 000001.jpg 이미지의 정보를 저장한 xml 파일 코드이다.
<annotation>
<folder>VOC2007</folder>
<filename>000001.jpg</filename>
<source>
<database>The VOC2007 Database</database>
<annotation>PASCAL VOC2007</annotation>
<image>flickr</image>
<flickrid>341012865</flickrid>
</source>
<owner>
<flickrid>Fried Camels</flickrid>
<name>Jinky the Fruit Bat</name>
</owner>
<size>
<width>353</width>
<height>500</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>dog</name>
<pose>Left</pose>
<truncated>1</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>48</xmin>
<ymin>240</ymin>
<xmax>195</xmax>
<ymax>371</ymax>
</bndbox>
</object>
<object>
<name>person</name>
<pose>Left</pose>
<truncated>1</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>8</xmin>
<ymin>12</ymin>
<xmax>352</xmax>
<ymax>498</ymax>
</bndbox>
</object>
</annotation>
xml파일 안에는 많은 tag들이 존재하지만, Object Detection 모델을 학습하기 위해 사용되는 tag들은 정해져 있다. 아래는 Object Detection에서 사용하는 tag들과 설명이다.
<filename>000001.jpg</filename>
<size> /*xml파일과 대응되는 이미지의 width, height, channels 정보에 대한 tag입니다.*/
<width>353</width> /*xml파일에 대응되는 이미지의 width값입니다.*/
<height>500</height> /*xml파일에 대응되는 이미지의 height값입니다.*/
<depth>3</depth> /*xml파일에 대응되는 이미지의 channels값입니다.*/
</size>
<object> /*xml파일과 대응되는 이미지속에 object의 정보에 대한 tag입니다.*/
<name>dog</name> /*오브젝트의 클래스가 무엇인지*/
<pose>Left</pose> /*각각의 오브젝트의 방향성 정보*/
<truncated>1</truncated> /*오브젝트가 해당 이미지에 온전히 표현되지 못하고 잘려나갔는지*/
<difficult>0</difficult> /*인식하기 어려운지*/
<bndbox> /*해당 object의 바운딩상자의 정보에 대한 tag입니다.*/
<xmin>48</xmin> /*object 바운딩상자의 왼쪽상단의 x축 좌표값입니다.*/
<ymin>240</ymin> /*object 바운딩상자의 왼쪽상단의 y축 좌표값입니다.*/
<xmax>195</xmax> /*object 바운딩상자의 우측하단의 x축 좌표값입니다.*/
<ymax>371</ymax> /*object 바운딩상자의 우측하단의 y축 좌표값입니다.*/
</bndbox>
</object>
위의 tag에서 설명한 Bounding box에 대한 좌표 값을 시각적으로 표현하면 아래 이미지와 같다.
참고자료