PASCAL VOC數據集分析
PASCAL VOC為圖像識別和分類提供了一整套標准化的優秀的數據集,從2005年到2012年每年都會舉行一場圖像識別challenge。
本文主要分析PASCAL VOC數據集中和圖像中物體識別相關的內容。
在這里采用PASCAL VOC2012作為例子。下載地址為:點擊打開鏈接。(本文中的系統環境為ubuntu14.04)
下載完之后解壓,可以在VOCdevkit目錄下的VOC2012中看到如下的文件:

其中在圖像物體識別上着重需要了解的是Annotations、ImageSets和JPEGImages。
①JPEGImages
JPEGImages文件夾中包含了PASCAL VOC所提供的所有的圖片信息,包括了訓練圖片和測試圖片。
這些圖像都是以“年份_編號.jpg”格式命名的。
圖片的像素尺寸大小不一,但是橫向圖的尺寸大約在500*375左右,縱向圖的尺寸大約在375*500左右,
基本不會偏差超過100。(在之后的訓練中,第一步就是將這些圖片都resize到300*300或是500*500,所有原始圖片不能離這個標准過遠。)
這些圖像就是用來進行訓練和測試驗證的圖像數據。
②Annotations
Annotations文件夾中存放的是xml格式的標簽文件,每一個xml文件都對應於JPEGImages文件夾中的一張圖片。
xml文件的具體格式如下:(對於2007_000392.jpg)
- <annotation>
- <folder>VOC2012</folder>
- <filename>2007_000392.jpg</filename> //文件名
- <source> //圖像來源(不重要)
- <database>The VOC2007 Database</database>
- <annotation>PASCAL VOC2007</annotation>
- <image>flickr</image>
- </source>
- <size> //圖像尺寸(長寬以及通道數)
- <width>500</width>
- <height>332</height>
- <depth>3</depth>
- </size>
- <segmented>1</segmented> //是否用於分割(在圖像物體識別中01無所謂)
- <object> //檢測到的物體
- <name>horse</name> //物體類別
- <pose>Right</pose> //拍攝角度
- <truncated>0</truncated> //是否被截斷(0表示完整)
- <difficult>0</difficult> //目標是否難以識別(0表示容易識別)
- <bndbox> //bounding-box(包含左下角和右上角xy坐標)
- <xmin>100</xmin>
- <ymin>96</ymin>
- <xmax>355</xmax>
- <ymax>324</ymax>
- </bndbox>
- </object>
- <object> //檢測到多個物體
- <name>person</name>
- <pose>Unspecified</pose>
- <truncated>0</truncated>
- <difficult>0</difficult>
- <bndbox>
- <xmin>198</xmin>
- <ymin>58</ymin>
- <xmax>286</xmax>
- <ymax>197</ymax>
- </bndbox>
- </object>
- </annotation>
③ImageSets
ImageSets存放的是每一種類型的challenge對應的圖像數據。
在ImageSets下有四個文件夾:
其中Action下存放的是人的動作(例如running、jumping等等,這也是VOC challenge的一部分)
Layout下存放的是具有人體部位的數據(人的head、hand、feet等等,這也是VOC challenge的一部分)
Main下存放的是圖像物體識別的數據,總共分為20類。
Segmentation下存放的是可用於分割的數據。
在這里主要考察Main文件夾。
Main文件夾下包含了20個分類的***_train.txt、***_val.txt和***_trainval.txt。
這些txt中的內容都差不多如下:
前面的表示圖像的name,后面的1代表正樣本,-1代表負樣本。
_train中存放的是訓練使用的數據,每一個class的train數據都有5717個。
_val中存放的是驗證結果使用的數據,每一個class的val數據都有5823個。
_trainval將上面兩個進行了合並,每一個class有11540個。
需要保證的是train和val兩者沒有交集,也就是訓練數據和驗證數據不能有重復,在選取訓練數據的時候 ,也應該是隨機產生的。
④SegmentationClass和SegmentationObject
這兩個文件夾下保存了物體分割后的圖片,在物體識別中沒有用到,在這里不做詳細展開。
接下來需要研究的是如何自己生成訓練數據和測試數據,將在下一篇中闡述。
轉自:http://blog.csdn.net/zhangjunbob/article/details/52769381
