
1. 簡介
PASCAL VOC-Pattern Analysis Statical Modeling and Computational Learning
很多優秀的計算機視覺模型比如分類,定位,檢測,分割,動作識别等模型都是基于PASCAL VOC挑戰賽及其資料集上推出的,尤其是一些目标檢測模型(比如大名鼎鼎的R CNN系列,以及後面的YOLO,SSD等)
2. 資料集
2.1 資料集分類PASCAL VOC資料集共有4大類,vehicle ,household, animal, person,20小類,下圖中黑色加粗字型所示
資料集主要關注分類和檢測任務
現在研究常用的資料集是VOC2007和VOC2012,VOC07包含9963張圖檔,總共24640物體,VOC12包含23080張圖檔,總共54900物體,兩者對比如下:
黑色字型所示數字是官方給定的,由于VOC2012資料集中 test 部分沒有公布,是以紅色字型所示數字為估計資料,按照PASCAL 通常的劃分方法,即 trainval 與test 各占總資料量的一半
3. 标注資訊格式
标注資訊,采用xml檔案格式組織如下,參考官網标注資訊官網
<annotation>
- filename 檔案名
- size 圖檔尺寸
- segmented 是否分割
- object 表明是否是一個目标,包含了目标的詳細資訊
- name 20類别之一
- pose 拍攝角度 left right front rear unspecified
- truncated 目标是否被截斷()比如在圖檔之外),或者被遮擋(超過15%)
- difficult 檢測難易程度,主要依據目标大小,光照變化,圖檔品質來判斷的, 圖中用虛線dashed來辨別
- bndbox bounding box左上角和右下角的4個坐标值
4. 送出格式
4.1 classfication task每一類都有一個txt檔案,裡面每一行都是測試集中的一張圖檔,前面一列是圖檔名稱,後面一列是預測的分數。
comp1_cls_test_car.txt:
000004 0.702732
000006 0.870849
000008 0.532489
000018 0.477167
000019 0.112426
4.2 object detection task 裡面每一行都是測試集中的一張圖檔,每行的格式按照如下方式組織,confidence用來計算mAP
<image identifier> <confidence> <left> <top> <right> <bottom>
comp3_det_test_car.txt:
000004 0.702732 89 112 516 466
000006 0.870849 373 168 488 229
000006 0.852346 407 157 500 213
000006 0.914587 2 161 55 221
000008 0.532489 175 184 232 201
5. 評估标準
PASCAL的評估名額是mAP
PASCAL官方給了評估腳本mAP的腳本和示例代碼development kit code and documentation,是用MATLAB寫的
6. 資料集組織形式
資料集下載下傳# Download the data.
cd $HOME/data
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
# Extract the data.
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
或者支直接點選下面連結下載下傳:
- Download the training/validation data (450MB tar file)
- Download the annotated test data (430MB tar file)
上面的解壓指令會将VOC2007的trainval和test解壓到一塊,資料會混在一起,如果不想,可以自己指定解壓路徑。以VOC 2007 為例,解壓後的檔案:
.
├── Annotations 進行detection 任務時的 标簽檔案,xml檔案形式
├── ImageSets 存放資料集的分割檔案,比如train,val,test
├── JPEGImages 存放 .jpg格式的圖檔檔案
├── SegmentationClass 存放 按照class 分割的圖檔
└── SegmentationObject 存放 按照 object 分割的圖檔
Annotation檔案夾,以xml 檔案的形式,存放标簽檔案,檔案内容如前述,檔案名與圖檔名是一樣的,6位整數
.
├── 000001.xml
├── 000002.xml
├── 000003.xml
├── 000004.xml
……
……
……
├── 009962.xml
└── 009963.xml
ImageSets檔案夾,包含三個子檔案夾,Layout, Main, Segmentation, 其中Main檔案夾存放的是用于分類和檢測的資料集分割檔案,Layout檔案夾用于 person layout任務,Segmentation用于分割任務
.
├── Layout
│ ├── test.txt
│ ├── train.txt
│ ├── trainval.txt
│ └── val.txt
├── Main
│ ├── aeroplane_test.txt
│ ├── aeroplane_train.txt
│ ├── aeroplane_trainval.txt
│ ├── aeroplane_val.txt
│ ├── bicycle_test.txt
│ ├── bicycle_train.txt
│ ├── bicycle_trainval.txt
│ ├── bicycle_val.txt
│ ├── bird_test.txt
│ ├── bird_train.txt
│ ├── bird_trainval.txt
│ ├── bird_val.txt
│ ├── boat_test.txt
│ ├── boat_train.txt
│ ├── boat_trainval.txt
│ ├── boat_val.txt
│ ├── bottle_test.txt
│ ├── bottle_train.txt
│ ├── bottle_trainval.txt
│ ├── bottle_val.txt
│ ├── bus_test.txt
│ ├── bus_train.txt
│ ├── bus_trainval.txt
│ ├── bus_val.txt
│ ├── car_test.txt
│ ├── car_train.txt
│ ├── car_trainval.txt
│ ├── car_val.txt
│ ├── cat_test.txt
│ ├── cat_train.txt
│ ├── cat_trainval.txt
│ ├── cat_val.txt
│ ├── chair_test.txt
│ ├── chair_train.txt
│ ├── chair_trainval.txt
│ ├── chair_val.txt
│ ├── cow_test.txt
│ ├── cow_train.txt
│ ├── cow_trainval.txt
│ ├── cow_val.txt
│ ├── diningtable_test.txt
│ ├── diningtable_train.txt
│ ├── diningtable_trainval.txt
│ ├── diningtable_val.txt
│ ├── dog_test.txt
│ ├── dog_train.txt
│ ├── dog_trainval.txt
│ ├── dog_val.txt
│ ├── horse_test.txt
│ ├── horse_train.txt
│ ├── horse_trainval.txt
│ ├── horse_val.txt
│ ├── motorbike_test.txt
│ ├── motorbike_train.txt
│ ├── motorbike_trainval.txt
│ ├── motorbike_val.txt
│ ├── person_test.txt
│ ├── person_train.txt
│ ├── person_trainval.txt
│ ├── person_val.txt
│ ├── pottedplant_test.txt
│ ├── pottedplant_train.txt
│ ├── pottedplant_trainval.txt
│ ├── pottedplant_val.txt
│ ├── sheep_test.txt
│ ├── sheep_train.txt
│ ├── sheep_trainval.txt
│ ├── sheep_val.txt
│ ├── sofa_test.txt
│ ├── sofa_train.txt
│ ├── sofa_trainval.txt
│ ├── sofa_val.txt
│ ├── test.txt
│ ├── train_test.txt
│ ├── train_train.txt
│ ├── train_trainval.txt
│ ├── train.txt
│ ├── train_val.txt
│ ├── trainval.txt
│ ├── tvmonitor_test.txt
│ ├── tvmonitor_train.txt
│ ├── tvmonitor_trainval.txt
│ ├── tvmonitor_val.txt
│ └── val.txt
└── Segmentation
├── test.txt
├── train.txt
├── trainval.txt
└── val.txt
3 directories, 92 files
主要介紹一下Main檔案夾中的組織結構,先來看以下這幾個檔案:
├── Main
│ ├── train.txt 寫着用于訓練的圖檔名稱 共2501個
│ ├── val.txt 寫着用于驗證的圖檔名稱 共2510個
│ ├── trainval.txt train與val的合集 共5011個
│ ├── test.txt 寫着用于測試的圖檔名稱 共4952個
裡面的檔案内容是下面這樣的:以train.txt檔案為例
000012
000017
000023
000026
000032
000033
000034
000035
000036
000042
……
……
009949
009959
009961
就是對資料庫的分割,這一部分圖檔用于train,其他的用作val,test等。
Main中剩下的檔案很顯然就是每一類别在train或val或test中的ground truth,這個ground truth是為了友善classification 任務而提供的;如果是detection的話,使用的是上面的xml标簽檔案。
├── Main
│ ├── aeroplane_test.txt 寫着用于訓練的圖檔名稱 共2501個,指定正負樣本
│ ├── aeroplane_train.txt 寫着用于驗證的圖檔名稱 共2510個,指定正負樣本
│ ├── aeroplane_trainval.txt train與val的合集 共5011個,指定正負樣本
│ ├── aeroplane_val.txt 寫着用于測試的圖檔名稱 共4952個,指定正負樣本
……
……
裡面檔案是這樣的(以aeroplane_train.txt為例):
000012 -1
000017 -1
000023 -1
000026 -1
000032 1
000033 1
000034 -1
000035 -1
000036 -1
000042 -1
……
……
009949 -1
009959 -1
009961 -1
前面一列是訓練集中的圖檔名稱,這一列跟train.txt檔案中的内容是一樣的,後面一列是标簽,即訓練集中這張圖檔是不是aeroplane,是的話為1,否則為-1.
其他所有的 (class)_(imgset).txt 檔案都是類似的。
- (class)_train 存放的是訓練使用的資料,每一個class都有2501個train資料。
- (class)_val 存放的是驗證使用的資料,每一個class都有2510個val資料。
- (class)_trainval 将上面兩個進行了合并,每一個class有5011個資料。
- (class)_test 存放的是測試使用的資料,每一個class有4952個test資料。
所有檔案都 指定了正負樣本,每個class的實際數量為正樣本的數量,train和val兩者沒有交集。
VOC2012 的資料集組織結構是類似的,不一樣的地方在于VOC2012 中沒有 test類的圖檔和以及相關标簽和分割檔案,因為這部分資料 VOC2012沒有公布。
參考檔案
Pascal VOC 資料集介紹blog.csdn.net Pascal VOC 資料集介紹blog.csdn.net