1. 程式人生 > >機器學習(7) PASCAL VOC2012資料集

機器學習(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
  • 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的程式碼實現: