前面的系列文章里提過(guò),TAO 工具將模型訓(xùn)練的絕大部分技術(shù)難題都進(jìn)行抽象化處理,大幅度減輕開(kāi)發(fā)人員的負(fù)擔(dān),唯獨(dú)數(shù)據(jù)集的收集與整理仍須由人工自行處理,這幾乎是留給操作人員的最后工作了。
大部分關(guān)于數(shù)據(jù)集的問(wèn)題就是標(biāo)注格式的轉(zhuǎn)換,包括 Pascal VOC、OpenImages、COCO 這些影響力較大的數(shù)據(jù)集,個(gè)別使用 .xml、.csv、.json 等不同的文件格式,包括標(biāo)注欄位的內(nèi)容與順序也都不盡相同,這通常是困擾使用者的第一個(gè)門(mén)檻。
好在這些格式之間的轉(zhuǎn)換,只需要一些簡(jiǎn)單的 Python 小工具就能完成,雖然繁瑣但也沒(méi)有什么技術(shù)難度。
在https://docs.nvidia.com/tao/tao-toolkit/text/data_annotation_format.html里,提供 TAO 工具針對(duì)不同應(yīng)用類型所支持的格式,簡(jiǎn)單整理如下:
圖像分類:目錄結(jié)構(gòu)格式
物件檢測(cè):KITTI 與 COCO 格式
實(shí)例分割:COCO 格式
語(yǔ)義分割:UNet 格式
體態(tài)識(shí)別:COCO 格式
其他:自定義格式
這里只將使用率較高的圖像分類與物件檢測(cè)兩種應(yīng)用的數(shù)據(jù)格式進(jìn)行說(shuō)明,其他應(yīng)用的數(shù)據(jù)格式請(qǐng)自行參照前面提供的說(shuō)明鏈接。
1、圖像分類的“目錄結(jié)構(gòu)”格式:
這是以“圖像”為單位的分類應(yīng)用,每張圖片只會(huì)有一個(gè)分類屬性,因此格式相對(duì)簡(jiǎn)單,只要將圖片根據(jù)目錄結(jié)構(gòu)的規(guī)則進(jìn)行分類就可以。

為了配合模型訓(xùn)練的工作,我們需要將數(shù)據(jù)集切割成 “train”、“val”、“test” 三大類,分別作為訓(xùn)練、校驗(yàn)與測(cè)試用途。
在每個(gè)數(shù)據(jù)集下面再延伸出“分類屬性”子目錄,例如做早期用于識(shí)別 0~9 手寫(xiě)數(shù)字的 MNIST 數(shù)據(jù)集,就得在 train/val/test 下面各添加 “0”~“9” 共 10 個(gè)子目錄,合計(jì)是 2 層 33 個(gè)目錄結(jié)構(gòu)。

如果是使用 ILSVRC 競(jìng)賽的 1000 分類 ImageNet 數(shù)據(jù)的話,就得根據(jù)這 1000 個(gè)分類在三個(gè)目錄下創(chuàng)建 1000 個(gè)分類屬性子目錄,例如 dog、cat、person 等等,雖然很繁瑣但也不復(fù)雜,對(duì)模型訓(xùn)練工具而言,圖像文件名稱是無(wú)所謂的。
數(shù)據(jù)來(lái)源通常是兩大類,第一種是自行從網(wǎng)上收集與手動(dòng)拍攝,第二種是從現(xiàn)成數(shù)據(jù)集進(jìn)行提取,包括 ImageNet、Pascal VOC、COCO、OpenImages 這些知名的通用數(shù)據(jù)集,都有非常豐富的資源。
但現(xiàn)在的最大問(wèn)題是,如何從這些數(shù)據(jù)集中提取所需要的圖像,并根據(jù)“目錄結(jié)構(gòu)”存放成 TAO 所支持的格式?
這個(gè)部分需要使用者自行研究所需要的數(shù)據(jù)集的結(jié)構(gòu),撰寫(xiě)簡(jiǎn)單的提取工具。例如 TAO 提供的 classification 圖像分類模型訓(xùn)練范例項(xiàng)目中,使用 Pascal VOC 2012 數(shù)據(jù)集來(lái)進(jìn)行圖像分類的模型訓(xùn)練,但是這個(gè)數(shù)據(jù)集使用下圖左的路徑分布方式,與 TAO 所支持的“目錄結(jié)構(gòu)”格式并不相同,那么該如何處理?

我們必須對(duì)這個(gè)數(shù)據(jù)集的相關(guān)資源有進(jìn)一步了解。在 VOC 數(shù)據(jù)集的 ImageSets/Main 里存放 63個(gè).txt 文件,刨去 train.txt、trainval.txt 與 val.txt 三個(gè)文件,其余 60 個(gè)分屬于數(shù)據(jù)集的 20 個(gè)圖像類別的三種用途,例如 xxx_trainval.txt、xxx_train.txt、xxx_val.txt,其中前者的內(nèi)容是后面兩個(gè)文件的合并。
在 classification.ipynb 腳本中提供兩段數(shù)據(jù)格式轉(zhuǎn)換的 Python 代碼(請(qǐng)自行查閱),在 “A.Split the dataset into train/val/test” 的環(huán)節(jié),執(zhí)行以下處理:
(1) 將存放在上圖左邊 “JPEGImages” 里面的圖像文件,借助 xxx_trainval.txt 分類列表的協(xié)助,復(fù)制到上圖右方的 “formated” 下的 20 個(gè)分類子目錄; (2) 從 “formated” 的每一類圖像數(shù)據(jù),分別切割出 train/val/test 三大分類,放到 “split” 目錄下,作為后面轉(zhuǎn)換成 tfrecords 的數(shù)據(jù)源。
經(jīng)過(guò)兩次轉(zhuǎn)換處理后,在這里的數(shù)據(jù)內(nèi)容就該有 3 份相同的圖像數(shù)據(jù),只不過(guò)使用不同的路徑結(jié)構(gòu)去存放而已。如果不想浪費(fèi)存儲(chǔ)空間的話,可以將 VOCdeckit 與 formatted 兩個(gè)目錄刪除,只需要保留 split 目錄的結(jié)構(gòu)就足夠。
至于其他數(shù)據(jù)的轉(zhuǎn)換,也需要使用者對(duì)該數(shù)據(jù)集有充分的了解,畢竟學(xué)習(xí)數(shù)據(jù)轉(zhuǎn)換的精力要遠(yuǎn)遠(yuǎn)低于自行收集的時(shí)間,絕對(duì)是劃算的。
2、物件檢測(cè)的 KITTI 格式:
絕大部分通用數(shù)據(jù)集為了提高普及度,都提供多種應(yīng)用類別的標(biāo)注 (annotations) 內(nèi)容,其中 “物件位置 (location)” 是最基本的數(shù)據(jù),其他還有與人體相關(guān)的骨骼結(jié)構(gòu)標(biāo)注、語(yǔ)義分割的材質(zhì)標(biāo)注、場(chǎng)景描述的標(biāo)注等等,每種數(shù)據(jù)集都有其側(cè)重點(diǎn),因此內(nèi)容種類與格式也都不盡相同,這是大伙要使用數(shù)據(jù)集的第一個(gè)門(mén)檻。
物件檢測(cè)是比圖像分類更進(jìn)一步的深度學(xué)習(xí)應(yīng)用,要在一張圖像中找出符合條件的物件,數(shù)量沒(méi)有限定,就看訓(xùn)練出來(lái)的模型具備哪些分類功能。
每個(gè)數(shù)據(jù)集的差異,就是將所包含的圖像,都進(jìn)行不同功能與不同細(xì)膩度的標(biāo)注內(nèi)容,這些動(dòng)輒數(shù)萬(wàn)張到上千萬(wàn)張的圖像、分類數(shù)量從20到數(shù)千的不同數(shù)據(jù)集,也都使用不同的文件格式去儲(chǔ)存這些標(biāo)注內(nèi)容,有些是圖像文件與標(biāo)注文件一一對(duì)應(yīng),有些則是將上千萬(wàn)張的標(biāo)注內(nèi)容全部存在一個(gè)巨大的標(biāo)注文件里。
例如 COCO 數(shù)據(jù)集將數(shù)百萬(wàn)張的標(biāo)注存放在上百兆的 .json 文件里、 OpenImages 數(shù)據(jù)集上千萬(wàn)張的標(biāo)注存放在 1.3GB 的 .csv 文件中,而 Pascal VOC 與 ImageNet 的標(biāo)注文件則提供一對(duì)一對(duì)應(yīng)的 .txt 與 .xml 格式,莫衷一是。
事實(shí)上對(duì)應(yīng)物件檢測(cè)的應(yīng)用,我們只需要標(biāo)注文件中最基本的元素,包括“類別”與“位置”這兩組共 5 個(gè)欄位數(shù)據(jù)就可以。類別部分有的數(shù)據(jù)集直接使用“類別名”,有的數(shù)據(jù)集只提供“類別編號(hào)”,然后再到類別文件中尋找對(duì)應(yīng);位置信息部分,有些提供“左上角”與“右下角”坐標(biāo)位置,有些使用“起點(diǎn)坐標(biāo)”與“長(zhǎng)寬”來(lái)表示,都是一組 4 個(gè)浮點(diǎn)值。
因此,要從龐大的數(shù)據(jù)集中,提取我們所需要的類別與位置標(biāo)注,就必須對(duì)個(gè)別標(biāo)注結(jié)構(gòu)進(jìn)行研究,才能得到我們想要的結(jié)果,這個(gè)步驟是跳不過(guò)去的。網(wǎng)上雖然有很多標(biāo)注格式轉(zhuǎn)換的功能,但是通用性受限制,還是需要進(jìn)行局部修改。
現(xiàn)在來(lái)看看 TAO 工具在物件檢測(cè)模型訓(xùn)練所支持KITTI格式內(nèi)容,主要欄位如下:

其標(biāo)注文件是 .txt 純文字格式,在文件內(nèi)的表達(dá)方式如下:

熟悉物件檢測(cè)應(yīng)用的人,可能會(huì)覺(jué)得這個(gè) KITTI 標(biāo)注格式中,有一半以上的欄位是用不上的,為何英偉達(dá)卻十分偏好這個(gè)格式呢?
如果將視野放大到自動(dòng)駕駛與 3D 應(yīng)用領(lǐng)域的話,就能理解英偉達(dá)選擇這個(gè)格式的理由,因?yàn)?KITTI 數(shù)據(jù)集是由德國(guó)卡爾斯魯厄理工學(xué)院和豐田美國(guó)技術(shù)研究院聯(lián)合創(chuàng)辦,是目前國(guó)際上最大的自動(dòng)駕駛場(chǎng)景下的計(jì)算機(jī)視覺(jué)算法評(píng)測(cè)數(shù)據(jù)集。
在物件檢測(cè)應(yīng)用中只需要用到“類名”與“邊界框坐標(biāo)”這兩部分,如果從其他數(shù)據(jù)集提取數(shù)據(jù)時(shí)只要找出這 5 個(gè)數(shù)據(jù),如果坐標(biāo)格式為“起點(diǎn)坐標(biāo)+長(zhǎng)寬”的格式,也能簡(jiǎn)單轉(zhuǎn)換成“起點(diǎn)坐標(biāo)+重點(diǎn)坐標(biāo)”形式,寫(xiě)入對(duì)應(yīng)的 KITTI 標(biāo)注文件中,其他欄位的內(nèi)容 “補(bǔ) 0” 就可以,所以整個(gè)轉(zhuǎn)換過(guò)程還不是太麻煩。
在 TAO 的視覺(jué)項(xiàng)目中的 face-mask-detection/data_utils 里,提供大約 4 轉(zhuǎn)換成 KITTI 格式的工具,能提供大家作為參考。
只要能將不同數(shù)據(jù)集之間的格式轉(zhuǎn)換弄通,就能非常高效的從龐大的數(shù)據(jù)集資源中,輕松獲取我們所需要的類別數(shù)據(jù),進(jìn)一步訓(xùn)練出自己專屬的模型,因此這個(gè)過(guò)程對(duì)使用深度學(xué)習(xí)的工程師是很重要的基本工作。
原文標(biāo)題:NVIDIA Jetson Nano 2GB 系列文章(58):視覺(jué)類的數(shù)據(jù)格式
文章出處:【微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5444瀏覽量
108602 -
檢測(cè)
+關(guān)注
關(guān)注
5文章
4744瀏覽量
93650 -
數(shù)據(jù)格式
+關(guān)注
關(guān)注
0文章
31瀏覽量
9127
原文標(biāo)題:NVIDIA Jetson Nano 2GB 系列文章(58):?視覺(jué)類的數(shù)據(jù)格式
文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
ADI GMSL技術(shù)兩種視頻數(shù)據(jù)傳輸模式的區(qū)別
兩種散熱路徑的工藝與應(yīng)用解析
LPC55S28修改音頻數(shù)據(jù)格式后USB Aduio類異常的原因?
用FPGA配置TVP5150,把PAL制標(biāo)準(zhǔn)視頻轉(zhuǎn)換成BT656數(shù)據(jù)格式,能否把數(shù)據(jù)流直接給SAA7121?
基于FPGA的圖像邊緣檢測(cè)設(shè)計(jì)
使用RDATAC指令后,ADS131E04傳送的數(shù)據(jù)格式以及內(nèi)容是怎樣的?
AMC1204有兩種封裝,SOIC-8和SOIC-16,功能一樣嗎?為什么要推出兩種封裝?
ads1158讀取數(shù)據(jù),得到的數(shù)據(jù)格式是什么樣的???
API接口有哪些常見(jiàn)的安全問(wèn)題
FP8數(shù)據(jù)格式在大型模型訓(xùn)練中的應(yīng)用

圖像分類與物件檢測(cè)兩種應(yīng)用的數(shù)據(jù)格式
評(píng)論