小白AI:VOC數(shù)據(jù)集史上最實用的介紹和使用(2)

上期介紹了VOC數(shù)據(jù)集的一些基本知識,相信有需要的小伙伴已經下載從百度網盤下載了VOC的數(shù)據(jù)。今天筆者就帶領大家一起對VOC進行深入的研究和學習。

【題外話:有的人可能認為第一篇文章太過于簡單,干貨不夠。但是筆者認為,要想掌握一門知識,合理的知識陡峭程序很重要。如果一上來筆者直接介紹VOC數(shù)據(jù)在各類模型中的使用,恐怕對于剛剛接觸到VOC的小伙伴們來說簡直是如墜云里霧里。所以筆者堅持由簡單到復雜,希望給大家?guī)韺崒嵲谠诘膸椭?/p>

下面全部的操作都是在Win10中。

1.VOC數(shù)據(jù)集

下載下來的VOC數(shù)據(jù)如下圖所示:

1.下載下來的壓縮的VOC數(shù)據(jù)集

可以看到,分為3個獨立的tar壓縮文件,分別是VOCtest_06-Nov-2007.tar,VOCtrainval_06-Nov-2007.tar和VOCtrainval_11-May-2012.tar。

VOCtest_06-Nov-2007.tar:測試集合(2007

VOCtrainval_06-Nov-2007.tar:訓練集合和驗證集合(2007

VOCtrainval_11-May-2012.tar:訓練集合和驗證集合(2012

【注意:這里并沒有缺少文件,根據(jù)官方的說法,VOC2012是沒有提供測試集的,即沒有test集合】

好了,下面我們把這3個tar文件解壓到該文件夾下。這里有個小技巧,選中全部的3個tar,然后選擇解壓到當前文件夾下。

(1)選中3個tar->(2)右鍵解壓到當前文件夾(X) 【注意:這里不要選解壓每個壓縮文件到到單獨的文件夾(s)】




3.解壓進行中

因為本身VOC的數(shù)據(jù)集也不是很大,幾分鐘就可以解壓完畢。


4.解壓完成

好了,這個VOCdevkit就是我們需要的。為了看起來清爽,這里我們可以直接把下面的3個tar壓縮文件刪除了。其實也是筆者一直倡導的理念,學習不僅要知其然,更要知其所以然。這里我們的目的就是為了得到解壓后的VOC數(shù)據(jù)庫,顯然tar就不再需要了。所以明白每一步其實很重要,而不是機械的生搬硬套。我們只保留VOCdevkit文件夾即可。


5.只保留VOCdevkit

OK,終于得到她!讓我們一睹芳容。



6.VOC2007和VOC2012

VOC2007:2007年發(fā)布的VOC數(shù)據(jù)集

VOC2012:2012年發(fā)布的VOC數(shù)據(jù)集

這里我們以VOC2007為例,來看一下到底VOC數(shù)據(jù)集包含哪些部分?


7.VOC2007的數(shù)據(jù)集結構

(1)Annotations:標注信息。這里所謂的標注信息,實際上是圖片中物體(instances)的位置坐標和。文件的形式是xml,并且是1個xml和1張圖片相對應。

8.Annotations文件夾

一共有9963個xml文件,意味著會有9963張圖片,也即VOC2007全部的數(shù)據(jù)集有9963張。

打開其中的任意一個xml,比如000001.xml


9.標注文件000001.xml

這里有很多的干貨,這里我們逐一來解析:

首先,該xml文件是以<annotation> 開頭,</annotation>結尾的。在<annotation> ...</annotation>包裹的范圍內,

有如下幾個關鍵的信息:

<size>:代表圖片的分辨率,以該xml為例,對應的圖片寬度是353pixel,高度是500pixel,通道數(shù)是3.

<object>:代表物體,里面有name,pose和bndbox。其中比較重要的是name和bndbox。name是指物體屬于的類別,bndbox是標注框的信息

? ? ? ? ? ? ? ?顯然這里的xml里面有2個物體(instances),分別是dog和person。

? ? ? ? ? ? ? ? 以dog的bndbox為例:

? ??????????????<bndbox>

????????????????????????????????<xmin>48</xmin>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<ymin>240</ymin>

????????????????????????????????<xmax>195</xmax>

????????????????????????????????<ymax>371</ymax>

????????????????</bndbox>

xmin和ymin構成了bndbox的左上角,xmax和ymax構成了bndbox的右下角。那么有人肯定要問了:什么是bndbox?

其實bndbox是boundingbox縮寫,深度學習的模型檢測出了目標之后,會畫一個框框,標定這個框內的東西,認為是一個object。

例如:


10.在圖片上繪制bndbox

上面我們說到,00001.xml這個標注文件對應的圖片中有2個instances,分別是dog和person。那么我們現(xiàn)在來看下,是不是這樣的。

首先我們先找到這張圖片,請大家記住,VOC數(shù)據(jù)集中,圖片的名稱和xml文件的名稱是一致的,除了后綴名不一樣。例如這里的000001.xml,其對應的圖片是:000001.jpg


11.圖片000001.jpg

經過觀察,該圖片中確實如xml中描述的那樣,有2個instances,分別是person和dog。

(2)ImageSets:

????????Layout下存放的是具有人體部位的數(shù)據(jù)(人的head、hand等)

????????Segmentation下存放的是可用于分割的數(shù)據(jù)。

????????Main下存放的是圖像物體識別的數(shù)據(jù),總共分為20類。

????????我們主要關注Main下面的文件.


12.ImageSets下的txt文件

可以看到,在Main下有很多的txt文件,一共是再仔細觀察會發(fā)現(xiàn),每個類別有4個txt文件,比如aeroplane(飛機)就有4個txt文件,

分別是:aeroplane_test.txt/aeroplane_train.txt/aeroplane_trainval.txt/aeroplane_val.txt

其他的,比如bicycle,也是有4個txt。


我們來看下:aeroplane_trainval.txt

1代表正樣本,-1代表負樣本





由于VOC一共有20個類別,所以這里的4*20=80。那么另外的4個txt是什么呢?

其實是train.txt/val.txt/trainval.txt/test.txt,里面記錄的是訓練和驗證以及測試的樣本的名稱。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容