深度学习图像分割(一)——PASCAL-VOC2012数据集(vocdevkit、Vocbenchmark_release)详细介绍
PASCAL-VOC2012數據集介紹官網:
- http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html
前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。
數據集下載地址:benchmark_RELEASE:下載地址 voc2012:下載地址
VOC2012數據集分為20類,包括背景為21類,分別如下:
- 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
這里只說與圖像分割(segmentation)有關的信息,VOC2012中的圖片并不是都用于分割,用于分割比賽的圖片實例如下,包含原圖以及圖像分類分割和圖像物體分割兩種png圖。圖像分類分割是在20種物體中,ground-turth圖片上每個物體的輪廓填充都有一個特定的顏色,一共20種顏色,比如摩托車用紅色表示,人用綠色表示。而圖像物體分割則僅僅在一副圖中生成不同物體的輪廓顏色即可,顏色自己隨便填充。
在FCN這篇論文中,我們用到的數據集即是基本的分割數據集,一共有兩套分別是benchmark_RELEASE和VOC2012。
兩套都包含了用于分割圖片以及label信息。
###1、首先看benchmark_RELEASE中的數據:
上圖中紅線標注的信息是我們需要用到的信息,其余的是一些備用信息和說明文檔,在dataset中我們可以cls、img、inst分別為 圖像分類分割 .mat 格式標注信息 、分割圖像以及 圖像物體分割 .mat標注信息。
下圖為img中的圖片:
至于什么是mat格式的信息,看后綴就可以看出是matlab中文件的一種格式,該格式的文件包含了對應分割圖片的label位置信息以及圖片的其他一些基礎信息,下圖是cls中挑取一個的信息:
打開上面的字段:
可以看到CategoriesPresent為12,表示該圖片上的物體的分類標號是12,而Segmentation是500 × 375 的 uint8的數據,打開如下:
也就是說背景為0,而分割目標物體的像素點事12,注意這相當于一個一通道的灰度圖,灰度值0-20分別表示圖片中的各種物體標號(背景為0)
然后我們從inst中也挑選與cls對應分割圖的信息出來:
可以看到與之前的cls中的一樣,分類表示同樣是12,但是打開segmentation看一下就會發現不同:
相應的像素點變為了1而不是12,說明在inst中的label信息是為了實現圖像物體分割,只要在一幅圖中將不同物體分割顯示出來即可而不是對不同的物體進行類別標記。
再看從inst中取出的另一個例子:
可以看到有4,4,15,15,15,說明圖片中有兩類物體(在圖像分類分割中,20類中的2類),然后我們打開segmentation看一下:
顯然,像素點的范圍是0-5,0代表背景,1-5代表圖中的五個物體,但這里僅僅是分離出來這幾個物體,但并不進行分類標記,如果從cls中打開的label,那么上面的1-5應該對應為4,4,15,15,15,要求標出具體的類別。
2、其次看一下VOC2012中的數據
VOC2012中的數據比較規整一些,其中Annotation中包含了對應圖片的xml信息:
我們以下面的2007_000032.jpg為例
其Annotation中對應的xml信息為:
xml信息包含了該圖片的基本信息,xml語言很易讀,我們從中可以輕易得出這幅圖片的一些基本信息,其中segmented一欄為1,這里的意思是這幅圖用于分割(因為VOC2012中一共有10000+圖,但并不都用于分割任務,有的用以物體標識或者動作識別等),若這一欄為0說明這幅圖不是用于圖像分割的。
因為VOC2012中的圖片并不是都用于分割,所以需要txt文件信息來標記處哪些圖片可以用于分割,寫程序的時候就可以利用信息 train.txt 對圖片進行挑選。train和val中的圖片加一起一共2913張圖。
SegmentationClass中的png圖用于圖像分割分類,下圖中有兩類物體,人和飛機,其中飛機和人都對應著特定的顏色,注意該文件夾中的圖片為三通道彩色圖,與之前單通道的灰度圖不同。png圖中對物體的分類像素不是0-20,而是對應著不同的RGB分量:
而SegmentationClass中precoded中的圖片為:
為什么說是precoded,我們可以看到這幅圖也是png格式的,我們可以大概看到分類物體的輪廓填充信息,但是沒有之前的清晰,我們分析一下其中的像素值:
可以發現這里的RGB都是同一個值,其中人代表的RGB值為(15,15,15),而飛機代表的為(1,1,1),也就是說,precoded中的圖片相比于之前的png圖將不同類別代表的顏色(假如飛機為(0,255,255))“變為”了1而人代表15,和benchmark中的數據集分類的表示方式就類似了。
而SegmentationObject中的png圖則僅僅對圖中不同的物體進行的分割,不對其物體所屬的類別進行標注:
顯然,上面的很多人都被標記了不同的顏色,當然僅僅是為了分離出來。
JPEGimages則放了我們需要的圖片,這些圖片一共有17125張,我們并不是都使用,我們僅對train.txt和val.txt中列出的圖像進行使用,而其他的圖像則用于不同的任務中。
總結
圖像分割的數據集一般都是采用上面說明的VOC2012挑戰數據集,有人說benchmark_LELEASE為增強數據集,具體原因我不清楚,可能是因為benchmark_LELEASE的圖片都是用于分割(一共11355張),而VOC2012僅僅部分圖片適用于分割(2913張)吧。
我們自己制作數據集的時候,只需要圖像的json、xml分割信息就可以通過程序生成對應的png輪廓圖,下一節中說明如何制作自己的適用于FCN、deeplab算法的圖像分割數據集。
如果你與我志同道合于此,很愿意與你交流
如果你喜歡我的內容,歡迎關注和支持
微信公眾號 : oldpan博客
丟給你一個神秘鏈接: oldpan.me
總結
以上是生活随笔為你收集整理的深度学习图像分割(一)——PASCAL-VOC2012数据集(vocdevkit、Vocbenchmark_release)详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视频监控安防平台-国标35114(GB3
- 下一篇: 深入学习华为云IOT云平台与LiteOS