PASCAL VOC Dataset 다운로드와 구성요소

☞    문서의 내용은 가장 하단 참고문헌 및 사이트를 참고하여 필자가 보기 쉽도록 정리한 내용입니다.

☞    틀린 내용 및 저작권 관련 문의가 있는 경우 문의하시면 수정 및 삭제 조치하겠습니다.


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에 대한 좌표 값을 시각적으로 표현하면 아래 이미지와 같다.

 


참고자료

 

 

Pytorch로 구현한 R-CNN 모델

이번 포스팅에서는 R-CNN 모델을 pytorch를 통해 구현한 코드를 살펴보도록 하겠습니다. 아직 코드 구현에 익숙치 않아 object-detection-algorithm님의 github 저장소에 올라온 R-CNN 모델 구현 코드를 분석했

herbwood.tistory.com

 

01). PASCAL VOC · GitBook

No results matching ""

deepbaksuvision.github.io

 

PASCAL VOC 2007 데이터셋 다운로드 및 확인 방법

PASCAL VOC는 대표적인 Object Detection 데이터셋 중 하나입니다. 논문을 읽다 보면 특히나 Object Detection 태스크에서 자주 등장하는 기본적인 데이터셋입니다. 그중에서도 PASCAL VOC 2007을 다운로드하는

ndb796.tistory.com