- 深入理解計算機視覺:在邊緣端構建高效的目標檢測應用
- 張晨然
- 3504字
- 2023-12-13 15:56:58
1.2 PASCAL VOC競賽和數據集
PASCAL的全稱為Pattern Analysis,Statistical Modelling and Computational Learning,即模式分析、統計建模和計算學習。VOC的全稱為Visual Object Classes,即視覺對象類。PASCAL VOC競賽是一項世界級的計算機視覺挑戰賽,該挑戰賽由Everingham、Van Gool、Williams、Winn和Zisserman發起,并在2005—2012年期間舉辦。2012年,Everingham去世,PASCAL VOC競賽也隨之終止。PASCAL VOC數據集大小適中,適合在計算機視覺算法驗證階段使用。
? 1.2.1 PASCAL VOC競賽任務和數據集簡介
PASCAL VOC競賽任務包括圖像分類與檢測競賽、圖像分割競賽、動作分類競賽、人體各部位輪廓檢測競賽。相應地,PASCAL VOC也提供與競賽內容對應的監督數據集。PASCAL VOC監督數據集提供3種標注方式:矩形框(Bounding Box)、種類分割(Segment Class)、實例分割(Segment Instance)。其中,矩形框標注使用矩形框標注出人、羊、狗等多種物體;種類分割標注使用蒙版(Mask)按照像素標注出人、羊、狗等多種物體的像素范圍,蒙版是一幅與原圖尺寸完全一致的圖像,相同種類的物體在蒙版上的顏色是一樣的;實例分割標注雖然也是使用蒙版按照像素標注出多種物體的像素范圍,但即便是相同種類的不同物體,由于是不同的實例,因此也用不同顏色進行了標注。目標檢測中最為常見的是矩形框標注方式,常見的標注方式如表1-1所示。
表1-1 常見的標注方式

有了這些圖像和標注,就可以完成多種目標檢測任務了。目標檢測任務主要使用的是PASCAL VOC數據集的圖片和種類框選信息。
PASCAL VOC競賽從2005年的第一屆到2012年的最后一屆,一共舉辦了8屆。這8屆競賽的數據集并非每年全部更換,也并非一成不變,而是呈現出一個演化的過程。
2005年的競賽只提供了4個類別(bicycle,cars,motorbikes,people)的1578張圖片,包含了2209個標注目標,但訓練集、驗證集、測試集這3個數據集都有公開;2007年的競賽提供了全新的數據集,有20個類別的9963張圖片,包含了24640個標注目標,訓練集、驗證集、測試集這3個數據集都有公開。
2008—2012年的5屆競賽,除2008年的競賽提供了一套全新的數據集以外,以后每年只是在前一年的數據集基礎上增加新數據,將其作為當年的數據集。以此類推,前一年的數據是后一年數據的子集。2011年、2012年的競賽中,用于分類、檢測和人體各部位輪廓檢測任務的數據集的數據量沒有改變,主要針對分割和動作識別任務,完善了相應的數據子集及標注信息。將PASCAL VOC競賽提供的數據集按照時間線展開,其演化脈絡如圖1-5所示。

圖1-5 PASCAL VOC各年份數據集的演化脈絡
根據PASCAL VOC數據集的演化脈絡,PASCAL VOC2007和PASCAL VOC2012數據集的合集就是PASCAL VOC的數據全集,因此重點介紹這兩個年份的數據集。
PASCAL VOC2007數據集擁有9963張圖片,這些圖片被分為兩部分:訓練和驗證(trainval)集、測試(test)集。其中,trainval部分有5011張圖片,test部分有4952張圖片,二者大約各占數據總量的50%。其中,trainval其實是train和validation的簡稱,訓練集有2501張圖片,驗證集有2510張圖片,二者大約各占trainval部分的50%。PASCAL VOC2007數據集的9963張圖片含有24640個已標注的對象,平均每張圖片大約包含2.5個對象。PASCAL VOC2007數據集的測試集在競賽階段是保密的,但隨著時間的推移,測試集最終得以公開。
PASCAL VOC2012數據集擁有23080張圖片,其中,trainval部分有11540張圖片,test部分有11540張圖片,二者各占數據總量的50%。訓練集有5717張圖片,驗證集有5823張圖片,二者大約各占trainval部分的50%。PASCAL VOC2012數據集的23080張圖片含有54900個已標注的對象,由于測試集未公布,因此重點關注訓練和驗證集。訓練和驗證集有11540張圖片,含有27450個已標注的對象,平均每張圖片大約包含2.4個對象。PASCAL VOC2012數據集一直沒有給出測試集。
PASCAL VOC2007數據集和PASCAL VOC2012數據集的對象總共分為20類,占比最高的為person。PASCAL VOC2007數據集的9963張圖片和24640個已標注的對象,以及PASCAL VOC2012數據集的11540張圖片和27450個已標注的對象,在訓練集、驗證集中的分布情況如圖1-6所示。

圖1-6 PASCAL VOC2007和PASCAL VOC2012數據集的對象統計情況
現在的目標檢測和圖像分割的研究基本上都是在PASCAL VOC2007和PASCAL VOC2012數據集基礎上進行的。
? 1.2.2 PASCAL VOC2007數據集探索
下面以PASCAL VOC2007數據集為例,介紹數據集的結構和內容。數據集一般有3個壓縮包:訓練和驗證集壓縮包,其文件名為VOCtrainval_06-Nov-2007.tar;測試集壓縮包,其文件名為VOCtest_06-Nov-2007.tar;開發工具DevKit壓縮包,其文件名為VOCdevkit_08-Jun-2007.tar。
以PASCAL VOC2007數據集的訓練和驗證集壓縮包VOCtrainval_06-Nov-2007.tar為例,解壓后有5個文件夾,如圖1-7所示。
其中的Annotations文件夾中存放目標檢測任務所需要的標注文件,標注文件是文本文件,文件名與圖片名一一對應,文本內容以XML格式進行組織。ImageSets文件夾中包含3個子文件夾,分別為Layout、Main、Segmentation,其中,Main文件夾中存放的是分類和檢測數據集分割文件。JPEGImages文件夾中存放JPG格式的圖片文件。SegmentationClass文件夾中存放按照種類分割的標注圖片。SegmentationObject文件夾中存放按照實例分割的標注圖片。

圖1-7 PASCAL VOC2007數據集結構
目標檢測任務主要關注的是JPEGImages文件夾和Annotations文件夾。打開這兩個文件夾,可以發現JPEGImages文件夾用于存放全部的圖片,該文件夾中有5011張圖片;Annotations文件夾用于存放全部的標注,該文件夾中有5011個存儲了標注信息的XML文件;二者的文件名一一對應。圖片文件夾和目標檢測標注文件夾如圖1-8所示。

圖1-8 圖片文件夾和目標檢測標注文件夾
打開序號為42的圖片,可以看到這是一張有兩個火車頭的圖片,打開存儲著目標檢測標注信息的XML文件,也可以看到兩個矩形框的絕對坐標值,它們用<object>和</object>關鍵字作為起止符號。根據這兩個矩形框的絕對坐標值可以畫出兩個矩形框,如圖1-9所示。
種類分割任務主要關注SegmentationClass文件夾。該文件夾中存放著用于種類分割任務的標注信息。打開該文件夾可以看到422張特殊圖片。每張圖片都可在JPEGImages文件夾中找到與其同名的圖片。查看SegmentationClass文件夾中的這些圖片,其每個像素點都代表種類的標注信息。顯然,種類分割采用的是像素級別的標注,比目標檢測對象標注的標注成本高得多。圖片文件夾和種類分割標注文件夾如圖1-10所示。

圖1-9 圖片文件和目標檢測標注文件的對應關系

圖1-10 圖片文件夾和種類分割標注文件夾
根據PASCAL VOC系列數據集標準,不同種類的分割采用不同顏色進行區分。查看其中序號為42的圖片,可以發現圖片中火車部分的像素全部都被RGB像素值為[128,192,0]的顏色像素標記,而背景部分的像素全部都被標記為[0,0,0],如圖1-11所示。

圖1-11 圖片文件和種類分割標注文件的對應關系
實際上,由于PASCAL VOC系列數據集一共有20個種類,加上背景分類合計21個種類,所以PASCAL VOC系列數據集采用21種RGB顏色組合。PASCAL VOC系列數據集的不同種類與顏色的對應關系表如表1-2所示。
表1-2 PASCAL VOC系列數據集的不同種類與顏色的對應關系表

實例分割任務主要關注SegmentationObject文件夾。該文件夾中存放著用于實例分割任務的標注信息。打開該文件夾可以看到422張特殊圖片。每張圖片都可在JPEGImages文件夾中找到與其同名的圖片。查看SegmentationObject文件夾中的這些圖片,其每個像素點都代表一個實例的標注信息,如圖1-12所示。

圖1-12 圖片文件夾和實例分割標注文件夾
實例分割任務與種類分割任務的共同點是,它們的標注都是像素級別的;不同點是,對于實例分割任務而言,對每個種類的每個實例都要分別標注出來,但對于種類分割任務而言,只需要將同一種類的不同實例標注為一個種類即可。以序號為42的圖片文件為例,雖然兩列火車的火車頭屬于同一種物體,但分屬于不同實例,因此也需要用不同顏色進行標注,如圖1-13所示。

圖1-13 圖片文件和實例分割標注文件的對應關系
最后一個和三大任務無關的文件夾是ImageSets文件夾,該文件夾中不包含任何任務樣本信息,只包含樣本數據集的不同分割方式。ImageSets文件夾下有3個子文件夾:Layout、Main、Segmentation。其中的Main文件夾中有63個txt文件。
Main文件夾中的train.txt、val.txt和trainval.txt這3個文本文件中存儲了整個數據集的3個子集的文件名索引。由于PASCAL VOC2007數據集擁有全部5011張圖片,trainval.txt中存放了數據集全集的圖片文件名,因此有5011個文件名。train.txt中存放了用于訓練集的圖片名(它是全集的一個子集),有2501行,指出用于訓練的2501張圖片的文件名。val.txt中存放了用于驗證集的圖片名(它也是全集的一個子集),有2510行,指出用于驗證的2510張圖片的文件名。PASCAL VOC數據集的拆分索引文件如圖1-14所示。

圖1-14 PASCAL VOC數據集的拆分索引文件
Main文件夾中其余的60個文本文件分別對應20個物體分類,每個分類有3個文件。3個文件名分別以類別名為前綴,命名規則為xxx_train.txt、xxx_val.txt和xxx_trainval.txt。例如,對于飛機這一分類,有aeroplane_train.txt、aeroplane_val.txt和aeroplane_trainval.txt這3個文件,分別指示飛機這個分類在訓練集、驗證集和全數據集內的哪些圖片中出現。指示方式為:-1表示沒有出現,1表示有出現,0表示只露出了一個部分。打開訓練集關于飛機這一分類的數據集分割文檔aeroplane_train.txt,從截取的文本片段看,在訓練集的全部圖片文件中,飛機只出現在序號為32、33的圖片文件中。PASCAL VOC飛機分類的數據集拆分索引文件如圖1-15所示。
SegmentationClass文件夾下有3個txt文件。SegmentationClass文件夾中的trainval.txt有422行,指示著全部的422張支持分割任務的圖片(支持種類分割和實例分割的圖片剛好都是422張)。其中的train.txt有209行,val.txt有213行,表示422張支持分割任務的圖片中的209張圖片用于訓練,213張圖片用于驗證。支持分割任務的圖片數據集拆分如圖1-16所示。
Layout文件夾中的train.txt、val.txt和trainval.txt這3個文本文件中存儲著Layout任務的相關文件名索引,目前使用較少。

圖1-15 PASCAL VOC飛機分類的數據集拆分索引文件

圖1-16 支持分割任務的圖片數據集拆分