如何做到從圖像識(shí)別到物體識(shí)別
在增強(qiáng)現(xiàn)實(shí)(AR)與自動(dòng)駕駛的時(shí)代來(lái)臨之際,3D數(shù)據(jù)呈現(xiàn)爆炸式增長(zhǎng)。在不久的將來(lái),處理3D數(shù)據(jù)的算法將應(yīng)用于像機(jī)器人自動(dòng)巡航、基于AR的智能用戶(hù)界面等應(yīng)用程序上。受此啟發(fā),我們?cè)贛atroid公司所著的論文提出了FusionNet,這一框架用于在一個(gè)名為Princeton ModelNet的標(biāo)準(zhǔn)數(shù)據(jù)集上做3D CAD物體分類(lèi)。
FusionNet的核心是全新的、應(yīng)用于3D物體的三維卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)。我們必須在多個(gè)方面調(diào)整傳統(tǒng)的CNN以使其有效。為了解釋得清楚些,我們不妨先看一下用于圖像分類(lèi)的二維CNN。這個(gè)思路是,機(jī)器學(xué)習(xí)研究者會(huì)構(gòu)建數(shù)個(gè)隱層形成的模型,每一層與前一層都以不同的形式連接。在第一層,你會(huì)擁有一個(gè)在二維圖像上滑動(dòng)的一塊窗口區(qū)域作為輸入。因?yàn)檫@個(gè)區(qū)域執(zhí)行了卷積操作——在窗口滑動(dòng)時(shí)它交疊其上,因此它被稱(chēng)為卷積層。其后還有幾層不同形式的隱層,最后一層用于預(yù)測(cè)潛在的輸出;每一種輸出對(duì)應(yīng)著圖像標(biāo)注中的某種分類(lèi)。在ModelNet40 Challenge數(shù)據(jù)集中,存在40個(gè)分類(lèi),因此模型中最后一層有40個(gè)神經(jīng)元。第一類(lèi)可能是“貓”,第二類(lèi)可能是“車(chē)輛”,以此類(lèi)推遍歷數(shù)據(jù)集包含的所有分類(lèi)。如果第一個(gè)神經(jīng)元在40個(gè)中激發(fā)的最厲害,那么輸入樣本就會(huì)被判別為第一類(lèi),一只貓。
整個(gè)模型假設(shè)輸入是圖片形式,即二維數(shù)據(jù)。你該如何將它拓展到三維呢?一種可能的方法是,就像顯示器顯示三維物體那樣,先把物體通過(guò)投影處理成二維圖像,然后在其上運(yùn)行標(biāo)準(zhǔn)的二維CNN算法。實(shí)際上,現(xiàn)在在Princeton ModelNet Challenge數(shù)據(jù)集上已提交的最優(yōu)算法的思路是,把任何3D物體在多個(gè)角度上對(duì)物體進(jìn)行一組2D投影進(jìn)行“像素表達(dá)”,然后使用卷積神經(jīng)網(wǎng)絡(luò)。FusionNet確實(shí)也基于像素表達(dá)使用了CNN,但關(guān)鍵是,它同時(shí)還增加了一種新式的三維CNN。
與在二維圖像上滑動(dòng)一個(gè)區(qū)域不同的是,我們可以在物體上滑動(dòng)一塊三維空間了!在這種表達(dá)之下,沒(méi)有必要做投影這一步。這種方法用“體積表達(dá)”來(lái)處理物體。
在我們的體積表達(dá)中,3D物體被離散化為30*30*30的體素(譯者注:volumepixel,文中簡(jiǎn)稱(chēng)voxel)網(wǎng)格。如果物體的任何部分位于1*1*1的體素中,就給體素賦值為1,反之則賦值為0. 與之前的工作不同的是,我們?cè)趯W(xué)習(xí)物體特征的過(guò)程中同時(shí)用到了像素表達(dá)和體素表達(dá),這種方法對(duì)分類(lèi)3D CAD物體而言,比單獨(dú)使用其中一種要好。其中一些例子如下:
圖 1. 兩種表達(dá)。 左圖:浴缸、高腳凳、坐便器與衣櫥的2D投影。右圖:體素化之后的浴缸、高腳凳、坐便器與衣櫥。 感謝Reza Zadeh提供圖片
我們建立了兩種處理體素?cái)?shù)據(jù)的卷積神經(jīng)網(wǎng)絡(luò)(V-CNN I與V-CNN II),以及一種處理像素?cái)?shù)據(jù)的網(wǎng)絡(luò)(MV-CNN)。 下圖顯示了這些網(wǎng)絡(luò)是如何結(jié)合在一起工作,并給出對(duì)于物體分類(lèi)的最終判斷的。處理2D圖像的標(biāo)準(zhǔn)CNN就不一樣了,它們只能從圖像中學(xué)到一些空間局部特征。
圖2. FusionNet是三種神經(jīng)網(wǎng)絡(luò)的混合,它們分別是V-CNN I, V-CNN II, and MV-CNN (最后一種神經(jīng)網(wǎng)絡(luò)是基于AlexNet結(jié)構(gòu)構(gòu)建的,并經(jīng)過(guò)ImageNet數(shù)據(jù)集預(yù)訓(xùn)練過(guò) ) 這三種網(wǎng)絡(luò)在評(píng)分層進(jìn)行了融合,通過(guò)計(jì)算打分的線性組合找到最終所預(yù)測(cè)的分類(lèi)。前兩個(gè)網(wǎng)絡(luò)使用了體素化的CAD模型,最后一種網(wǎng)絡(luò)則使用2D投影作為輸入。感謝Reza Zadeh提供圖片
我們使用了標(biāo)準(zhǔn)預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型(AlexNet)作為2D網(wǎng)絡(luò)MV-CNN的基礎(chǔ),對(duì)3D物體2D投影的網(wǎng)絡(luò)進(jìn)行暖啟動(dòng)(warm-start)預(yù)訓(xùn)練基于大規(guī)模2D像素圖片數(shù)據(jù)集ImageNet。受預(yù)訓(xùn)練影響,許多用于2D圖像分類(lèi)的特征不需要從頭開(kāi)始訓(xùn)練了。下圖所描繪的框架是我們使用的V-CNN之一種(V-CNN I):
圖 3. 感謝Reza Zadeh提供圖片
V-CNN I所使用的框架受到GoogLeNet(www.cs.unc.edu/~wliu/papers/GoogLeNet.pdf)啟發(fā), 使用了IncepTIon模塊。IncepTIon模塊對(duì)不同大小的核處理結(jié)果進(jìn)行了拼接,它有助于神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)不同尺度的特征,并在緊接著IncepTIon模塊的下一層卷積層中共享參數(shù)。
概括來(lái)說(shuō),F(xiàn)usionNet是三種神經(jīng)網(wǎng)絡(luò)的融合,其中一種基于像素表達(dá),兩種基于物體的體素化表達(dá)。它利用了每一種網(wǎng)絡(luò)的強(qiáng)項(xiàng),提高了分類(lèi)器性能。FusionNet中的每一個(gè)網(wǎng)絡(luò)組分都在對(duì)物體分類(lèi)之前以多個(gè)角度、方向觀察物體。盡管從直覺(jué)來(lái)說(shuō),對(duì)物體的多角度觀察確實(shí)能比單角度觀察帶來(lái)更多信息,但是將信息整合到一起以提高預(yù)測(cè)精度并不顯而易見(jiàn)。我們使用了20個(gè)像素表達(dá)特征與60個(gè)CAD物體體素表達(dá)特征這么多信息用于進(jìn)行物體分類(lèi)。FusionNet的效果超越了在Princeton ModelNet 40類(lèi)數(shù)據(jù)集榜單上排名第一的提交方案,展示了其獨(dú)到的能力。