PASCAL 全稱為 Pattern Analysis, Statistical Modelling and Computational Learning ,即 模式分析,統計建模和計算學習。VOC 全稱為 Visual Object Classes ,即視覺對象類。
PASCAL VOC 大賽是一項世界級的計算機視覺挑戰賽,該挑戰賽由 Mark Everingham、Luc Van Gool、Chris Williams、John Winn 和 Andrew Zisserman 發起,並在 2005 至 2012 年期間舉辦,比賽項目包括圖像分類、目標檢測、目標分割、人體關節點識別、動作識別幾大類。2012年,Mark Everingham去世,VOC比賽也隨之終止。
PASCAL VOC 官方網站:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html
PASCAL VOC2012數據集簡介
PASCAL VOC2012挑戰賽主要目的是對真實場景中的物體進行識別,這是一個監督學習問題,即提供圖片以及對應的標簽,利用這些數據,實現圖像的分類、目標檢測識別、圖像分割三種任務。在這些圖片中,一共包含了四個大類、20個小類的物體,他們是:
- Person: person
- Animal: bird, cat, cow, dog, horse, sheep
- Vehicle: aeroplane, bicycle, boat, bus, car, motorbike, train
- Indoor: bottle, chair, dining table, potted plant, sofa, tv/monitor
該挑戰賽的競賽項目主要包括 圖像分類與檢測(Classification/Detection Competitions)、圖像分割(Segmentation Competition)、人體動作分類(Action Classification Competition)、人體部位檢測(Person Layout Taster Competition)等四項主要的視覺挑戰賽。
圖像分類與檢測競賽
在圖像分類與檢測競賽中,分類的主要任務是預測圖像中是否存在上述提到的二十個分類之一,並正確分類;檢測的主要任務則是從包含二十個分類的圖像中預測出每個類別物體的位置和標簽。
圖像分割競賽
在圖像分割競賽中,需要對圖像的每個像素按照對應的二十個類別進行分類,否則划分為“背景”。圖像分割又可以細分為實例分割(區分同類中的不同個體)和語義分割(不區分同類中不同個體)。
人體動作分類競賽
在人體動作分類競賽中,主要任務是對於包含了人的圖片,檢測出人的位置,並分析出該人正在做什么動作,例如跳躍、打電話、讀書、騎車、騎馬、跑步等等。
人體部位檢測競賽
在人體部位檢測競賽中,需要對包含人的圖片做檢測,框出人的頭、手、腳等部位的位置,並給出標簽。這項競賽屬於嘗試性的競賽,與前面的主要比賽是分離的。
數據集下載
由於官方網站訪問非常慢,這里提供一個鏡像網站 https://pjreddie.com/projects/pascal-voc-dataset-mirror/
在網頁里包括了VOC 2007 以及 VOC 2012 完整的訓練/驗證數據集、測試數據集、相關的開發組件 以及說明書。
可以復制下載鏈接,在迅雷里進行下載,這樣可以獲得大概 3M/s 的下載速度。
下載完畢后,得到 VOCtrainval_11-May-2012.rar
壓縮包文件。
數據集解讀
將壓縮包解壓,VOCtrainval_11-May-2012目錄下的文件結構如下:
└─VOCdevkit
└─VOC2012
├─Annotations
├─ImageSets
│ ├─Action
│ ├─Layout
│ ├─Main
│ └─Segmentation
├─JPEGImages
├─SegmentationClass
└─SegmentationObject
下面對每個文件夾的作用進行解釋。當然,你也可以自行下載上面的 PDF Documentation ,從而獲取數據集的說明書,對數據進行解讀。
要弄懂數據集中的文件的來歷和用途,可以按照制作數據集的流程來進行解讀,所以下面按照這種思路依次解讀各個文件。
原始圖像收集
在 JPEGImages 文件夾中,一共提供了 17,125 張不同尺寸的 jpg 圖片,這些圖片涵蓋了人、動物、交通工具、室內家具用品四大類、以及其下子類,總計20個類別的圖片(正如前面所介紹的)。這些就是競賽中的原始圖片。因為比賽從2005年起開始舉辦,圖片一直在積累,所以圖片的文件名命名方式為 年份_編號.jpg
,圖片橫跨了2007-2012年。
圖像標注
對於 JPEGImages 文件夾中圖片。按照比賽任務分別進行了目標檢測標注、語義分割標注、實例分割標注,標注產生了下面幾個文件夾:
- Annotations
- SegmentationClass
- SegmentationObject
我們以 JPEGImages 中一張為 2007_000042.jpg
的圖片為例。
該圖像經過標注后,得到與之同名的語義分割標注掩模圖,存放到 SegmentationClass 文件夾下,以及與之同名的實例分割標注掩模圖,存放到 SegmentationObject 文件夾下。為了直觀感受,將原始圖、語義分割、實例分割三張圖片放到了一起,如下圖所示:
可以看到同樣是火車,語義分割顏色為同色,實例分割則為異色。
由於數據集涉及到20個類別,加上背景,因此分割的顏色有21個色值與之對應,具體如下:
為了兼顧目標檢測相關的任務,圖像標注后,還會生成與之同名的xml文件,用來記錄標注信息。同樣的,我們打開 2007_000042.jpg
圖片的xml文件,內容如下:
<annotation>
<folder>VOC2012</folder>
<filename>2007_000042.jpg</filename>
<source>
<database>The VOC2007 Database</database>
<annotation>PASCAL VOC2007</annotation>
<image>flickr</image>
</source>
<size>
<width>500</width>
<height>335</height>
<depth>3</depth>
</size>
<segmented>1</segmented>
<object>
<name>train</name>
<pose>Unspecified</pose>
<truncated>1</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>263</xmin>
<ymin>32</ymin>
<xmax>500</xmax>
<ymax>295</ymax>
</bndbox>
</object>
<object>
<name>train</name>
<pose>Unspecified</pose>
<truncated>1</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>1</xmin>
<ymin>36</ymin>
<xmax>235</xmax>
<ymax>299</ymax>
</bndbox>
</object>
</annotation>
xml是一種非常簡單的標記語言,用一對標簽包裹文字,來記錄信息。更多與xml相關的知識可以訪問 菜鳥教程 。
在上面的xml文件中,包含了一系列與圖片標注相關的信息。這里僅對比較重要的做出解釋:
-
size
size下包括了與圖片尺寸相關的信息,其中 :
- width為寬度
- height為高度
- depth為圖片的通道數(彩色圖像為3通道,灰度圖為1通道)。
-
segmented
表示圖像是否進行分割,1表示是,0表示否。
-
object
object下包括的是目標檢測的相關信息,object可以出現多個。其中:
- name表示物體的名字
- pose表示拍攝的角度
- truncated表示目標檢測的框是否被截斷,1表示是,0表示否
- difficult 表示目標是否難以識別,1表示是,0表示否
- bndbox 下包括的是目標檢測框的位置信息
- xmin,ymin 表示檢測框的左上角
- xmax,ymax 表示檢測框的右下角
數據集制作
圖像標注完畢后,需要將一系列的圖片進行分組,並且根據比賽中的四項主要競賽任務,划分對應的訓練集、測試集。數據集的相關內容統一存放到了 ImageSets 文件夾下。正如前面介紹的,一共有四項比賽,所以文件夾下包含了四個子文件夾:
- Action
- Layout
- Main
- Segmentation
在上述的每個文件夾下都包含有下面三種類型的txt文件:
- 以
*_train.txt
命名的表示存儲了訓練集相關的圖片列表 - 以
*_val.txt
命名的表示存儲了驗證集相關的圖片列表 - 以
*_trainval.txt
命名的表示存儲了訓練集與驗證集合並后的相關圖片列表
Action
Action文件夾存儲的是人體動作識別競賽中相關的數據集圖片列表。
在人體動作識別競賽中,一共划分了11類動作,具體數據集的划分如下圖所示:
對於每一個類別,都包含 *_train.txt
、*_val.txt
、*_trainval.txt
三種文件。
每個txt文件的內容格式如下:
圖片名 類別序號 樣本屬性
其中圖片名即為圖片的名字,類別序號為上表中的序號,樣本屬性取1表示正類樣本;取-1表示負類樣本。
例如,jumping_train.txt 文件中的一行:
2011_003285 4 -1
表示 2011_003285.jpg
屬於第4類 Reading 的 負類樣本
Layout
Layout文件夾存儲的是人體部位識別競賽中相關的數據集圖片列表。
該文件夾下僅有train.txt
、val.txt
、trainval.txt
三個文件。
每個txt文件的內容格式如下:
圖片名 包含人數
其中圖片名即為圖片的名字,包含人數表示圖片中有幾個人。
例如:
2007_003091 2
表示 2007_003091.jpg
圖片中包含2個人。
Main
Main文件夾存儲的是圖像分類與檢測競賽中相關的數據集圖片列表。
包含了20個不同類別,具體數據集的划分如下圖所示:
對於每一個類別,都包含 *_train.txt
、*_val.txt
、*_trainval.txt
三種文件。
每個txt文件的內容格式如下:
圖片名 識別難易程度
其中圖片名即為圖片的名字,識別難易程度取1表示圖片包含文件名上的對象;取0表示圖片包含文件名上的對象,但是難以識別,取-1表示圖片不包含文件名上的對象。
例如 aeroplane_train.txt
中的一行:
2008_000008 -1
表示 2008_000008.jpg
中不包含 aeroplane
Segmentation
Segmentation文件夾存儲的是圖像分割競賽中相關的數據集圖片列表。
該文件夾下僅有train.txt
、val.txt
、trainval.txt
三個文件。
每個txt文件的內容格式如下:
圖片名
其中圖片名即為圖片的名字。
以上內容搜集整理自網絡,難免存在問題,歡迎批評指正!讀者若想深入了解VOC數據集可直接訪問VOC官網下載並閱讀開發文檔。