機器學習(7) PASCAL VOC2012資料集
因為最近在做語義分割,需要用到這個資料集。而通過對於官網的檢視和了解,發現這個資料集的用途非常的多,特此詳細記錄一下。
下載地址:點選下載
這個資料集的檔案目錄如下:
- Annotation
- *.xml
- ImageSets
- Action
- *_train.txt
- *_trainval.txt
- *_val.txt
- Layout
- train.txt
- trainval.txt
- val.txt
- Main
- *_train.txt
- *_trainval.txt
- *_val.txt
- Segmentation
- train.txt
- trainval.txt
- val.txt
- Action
- JPEGImages
- *.jpg
- SegmentationClass
- *.png
- SegmentationObject
- *.png
Annotation
Annotations資料夾中存放的是xml格式的標籤檔案,每一個xml檔案都對應於JPEGImages資料夾中的一張圖片。格式如下,我們以2007_000033.xml為例。
<annotation>
<folder>VOC2012</folder>
<filename>2007_000033.jpg</filename> //檔名
<source> //檔案來源
<database >The VOC2007 Database</database>
<annotation>PASCAL VOC2007</annotation>
<image>flickr</image>
</source>
<size> //圖片的長,寬,通道數
<width>500</width>
<height>366</height>
<depth> 3</depth>
</size>
<segmented>1</segmented> //可否用於語義分割任務,1表示可以,也就是這張圖片在SegmentationClass/Object裡面有
<object> //檢測的目標,如果有多個會有多個<object>標籤
<name>aeroplane</name> //目標類別
<pose>Unspecified</pose> //拍攝角度
<truncated>0</truncated> //是否被截斷, 0表示完整
<difficult>0</difficult> //目標是否難以識別, 0表示容易識別
<bndbox> //bounding-box, 包含左下角和右上角xy座標
<xmin>9</xmin>
<ymin>107</ymin>
<xmax>499</xmax>
<ymax>263</ymax>
</bndbox>
</object>
<object>
<name>aeroplane</name>
<pose>Left</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>421</xmin>
<ymin>200</ymin>
<xmax>482</xmax>
<ymax>226</ymax>
</bndbox>
</object>
<object>
<name>aeroplane</name>
<pose>Left</pose>
<truncated>1</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>325</xmin>
<ymin>188</ymin>
<xmax>411</xmax>
<ymax>223</ymax>
</bndbox>
</object>
</annotation>
ImageSets
ImageSets存放的是每一種型別的challenge對應的影象資料。
ImageSets下的四個資料夾:
- Action下存放的是人的動作(running、jumping等等)
- Layout下存放的是人體部位(head、hand、feet等等)
- Main下存放的是影象物體識別的資料,總共分為20類。
- Segmentation下存放的是可用於分割的圖片的編號。
*_train中存放的是訓練集的圖片編號。
*_val中存放的是驗證集的圖片編號。
*_trainval是上面兩者的合併集合。
train和val包含的圖片沒有交集。
JPEGImages
JPEGImages資料夾中包含了PASCAL VOC所提供的所有的圖片,共有17125張。圖片均以“年份_編號.jpg”格式命名。圖片的尺寸大小不一,所以在後面訓練的時候需要對圖片進行resize操作。具體resize方式可以看最下面github連結裡data.py(覺得好的話拜託star一下~)
SegmentationClass
這裡麵包含了2913張圖片,每一張圖片都對應JPEGImages裡面的相應編號的圖片。這裡面的圖片的畫素顏色共有20種,對應20類物體。比如所有飛機都會被標為紅色。
SegmentationObject
這裡面同樣包含了2913張圖片,圖片編號都與Class裡面的圖片編號相同。這裡面的圖片和Class裡面圖片的區別在於,這是針對Object的。在Class裡面,一張圖片裡如果有多架飛機,那麼會全部標註為紅色。而在Object裡面,同一張圖片裡面的飛機會被不同顏色標註出來。
AlexNet轉成FCN進行segmentation task的程式碼實現: