Pascal VOC2012作為基準數據之一,在對象檢測、圖像分割網絡對比實驗與模型效果評估中被頻頻使用,但是如果沒有製作過此格式的數據集就會忽略很多細節問題,今天我們一起來從頭到尾扒一扒Pascal VOC2012 數據集各種細節問題。
Pascal VOC2012數據集主要是針對視覺任務中監督學習提供標籤數據,它有二十個類別:
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
主要有四個大類別,分別是人、常見動物、交通車輛、室內家具用品。主要為圖像分類、對象檢測識別、圖像分割三類任務服務。
圖像分類與檢測
分類:在測試圖像預測是否為二十個分類之一,正確分類
檢測:在測試圖像上預測二十個分類對象的有無與位置信息
圖像分割
分割:對每個對象與類別生成像素級別的分割標籤,確定像素是為目標20個分類或者背景。
此外Pascal VOC還提供一些很有意思的標註數據包括行為識別、人體Layout分析等。
行為識別數據:預測圖像中人的行為動作
Person Layout標註,檢測人與其各個身體組成部分,如果手、腳、頭等
Pascal VOC2012的文件結構如下:
Annotations
裡面是圖像對應的XML標註信息描述,每張圖像有一個與之對應同名的描述XML文件,XML前面部分聲明圖像數據來源,大小等元信息,舉例如下:
上面表示圖像對應路徑為VOC2012/JPEGImages/2007_000033.jpg,來自flickr網站上,大小為WxHxC=500x366x3,是三通道的彩色圖像,其中segmented為1有分割標註,0表示沒有分割標註。後面的是對象檢測的每個BOX標籤信息極其描述信息,圖示如下:
其中每個object標籤是表示單獨的box信息與對象描述,一張圖像可以有多個object標籤(boxes),
-name 表示對象類別
-pose 表示採用是從什麼視角,常見的有Left、Right、Frontal、rear,
-difficult 是否被標記為很難識別對稱,0表示不是,1表示是
-truncated 是否被標記為截斷,0表示沒有,1表示是
-Bndbox 標籤描述box框在圖像上的 位置
ImageSets
裡面是標註類別的每個文件列表信息,Action中是所有具有Action標註信息圖像文件名的txt文件列表,Layout中的txt文件表示包含Layout標註信息的圖像文件名列表,Main文件夾中包含20個類別每個類別一個txt文件,每個txt文件都是包含該類別的圖像文件名稱列表,Segmentation則是包含語義分割信息圖像文件的列表。
train.txt表示是的訓練數據集合
val.txt 表示驗證集數據
trainval.txt表示訓練與驗證集數據
test.txt表示測試集數據
Pascal VOC2012 Main中統計的訓練、驗證、驗證與訓練、測試圖像如下:
可以看出訓練圖像有5717張,目標數13609個。
在main中針對每個類別都有個三個文件,分別為:
CLASSNAME_train.txt
CLASSNAME_trainval.txt
CLASSNAME_val.txt
以CLASSNAME = aeroplane為例,main中的三個文件分別為:
aeroplane_train.txt
aeroplane_trainval.txt
aeroplane_val.txt
每個類別txt文件裡面的內容格式為
圖像文件名 + 空格 + 標記,以aeroplane_train.txt中的舉例如下:
2008_000290 0
2008_000291 1
2008_000297 -1
其中2008_000290、2008_000291、2008_000297表示三張圖像文件名
0 表示圖像中包含aeroplane對象但是難識別樣本
1 表示圖像中包含aeroplane
-1 表示圖像中不包含aeroplane
JPEGImages
所有的原始圖像文件,格式必須是JPG格式,這個要特別注意!如果你打算使用VOC2012格式生成數據,那麼原始圖像格式在採樣時候請用JPG格式保存,避免後期生成使用tensorflow工具生成的時候出錯。
SegmentationClass
所有分割的圖像標註,分割圖像安裝每個類別標註的數據
SegmentationObject
所有分割的圖像標註,分割圖像安裝每個類別每個對象不同標註的數據