3
本文作者: AI研習(xí)社-譯站 | 2018-08-23 10:22 |
雷鋒網(wǎng)按:本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 An introduction towards 3D Computer Vision, Jian Shi。
翻譯 | 江舟 校對(duì) | Lamaric 整理 | MY
隨著 AR / VR 技術(shù)和自動(dòng)駕駛汽車技術(shù)的發(fā)展,3D 視覺(jué)問(wèn)題變得越來(lái)越重要,它提供了比 2D 更豐富的信息。本文將介紹兩種用于 3D 場(chǎng)景分析的基本深度學(xué)習(xí)模型:VoxNet 和 PointNet。
3D 圖像介紹
3D 圖像會(huì)多包含一個(gè)維度,即深度。有兩種最廣泛使用的 3D 格式:RGB-D 和點(diǎn)云。
RGB-D
RGB-D 格式圖像就像一堆單值圖像,每個(gè)像素都有四個(gè)屬性,紅色,綠色,藍(lán)色和深度。
在普通的基于像素的圖像中,我們可以通過(guò)(x,y)坐標(biāo)定位任何像素,然后就可以分別獲得三種顏色屬性(R,G,B)。而在 RGB-D 圖像中,每個(gè)(x,y)坐標(biāo)將對(duì)應(yīng)于四個(gè)屬性(深度,R,G,B)。RGB-D 和點(diǎn)云之間的唯一區(qū)別在于,在點(diǎn)云中,(x,y)坐標(biāo)反映了其在現(xiàn)實(shí)世界中的實(shí)際值,而不是簡(jiǎn)單的整數(shù)值。
點(diǎn)云
網(wǎng)上的點(diǎn)云樣例
點(diǎn)云可以由 RGB-D 圖像構(gòu)建。如果你有已掃描的 RGB-D 的圖像,并且還知道掃描相機(jī)的內(nèi)在參數(shù),那么你可以以 RGB-D 圖像創(chuàng)建點(diǎn)云,方法是通過(guò)使用相機(jī)內(nèi)在參數(shù)計(jì)算真實(shí)世界的點(diǎn)(x,y)。這個(gè)過(guò)程被稱為相機(jī)校準(zhǔn)。因此,到目前為止,你知道了 RGB-D 圖像是網(wǎng)格對(duì)齊的圖像,而點(diǎn)云是更稀疏的結(jié)構(gòu)。
3D 視覺(jué)
就像 2D 問(wèn)題一樣,我們想要檢測(cè)并識(shí)別 3D 掃描圖像中的所有對(duì)象。但與 2D 圖像不同的是,為了充分使用 CNNs 方法的數(shù)據(jù),它的最佳輸入格式該是什么就成了一個(gè)需要解決的問(wèn)題。
體素化網(wǎng)格
體素化網(wǎng)格是將 3D 對(duì)象擬合到網(wǎng)格中的最直觀的方法,為了使其看起來(lái)像是像素圖像,我們?cè)谶@里將其稱為體素。在這種情況下,3D 圖像由(x,y,z)坐標(biāo)描述,它看起來(lái)就會(huì)像樂(lè)高一樣。
VoxNet 架構(gòu)來(lái)自“VoxNet:一個(gè)用于實(shí)時(shí)物體識(shí)別的 3D 卷積神經(jīng)網(wǎng)絡(luò)”,作者:Daniel Maturana 和 Sebastian Scherer。
VoxNet 是一種基于深度學(xué)習(xí)的框架,它使用占據(jù)網(wǎng)格方法對(duì) 3D 點(diǎn)云進(jìn)行分類,VoxNet 在分類問(wèn)題上非常有效。
例如,如果我們將點(diǎn)云擬合到 32x32x32 的體素化網(wǎng)格,我們可以構(gòu)建一個(gè)全部填充為零的 32x32x32 的數(shù)組。然后縮放點(diǎn)云來(lái)計(jì)算每個(gè)體素內(nèi)的有多少個(gè)點(diǎn)。
在獲得體素化網(wǎng)格后,我們接下來(lái)執(zhí)行 3D 卷積計(jì)算,這有效地在基于體素的圖像上滑動(dòng)立方體(譯者注: 3D 卷積是通過(guò)堆疊多個(gè)連續(xù)的幀組成一個(gè)立方體,然后在立方體中運(yùn)用 3D 卷積核)。
我們將掃描擴(kuò)展到相同的基礎(chǔ)。我們?cè)O(shè)想如果我們進(jìn)行大規(guī)模掃描,每個(gè)物體將只是一個(gè)會(huì)導(dǎo)致一些問(wèn)題的體素。而且,由于那些上采樣操作,不容易確定每個(gè)體素的 RGB 顏色。
對(duì)于簡(jiǎn)單的數(shù)據(jù)集(具有相似的點(diǎn)數(shù),相似的掃描比例),VoxNet 可能是一個(gè)簡(jiǎn)單而效果好的方法。但如果遇到復(fù)雜的數(shù)據(jù)集,它可能并不是一個(gè)好的選擇。
點(diǎn)
雖然基于體素化的方法可以在分類問(wèn)題上展現(xiàn)很好地工作效率,但它為上采樣操作犧牲了大量信息。因此,我們希望能夠在點(diǎn)上來(lái)訓(xùn)練有更好效果的網(wǎng)絡(luò)。
第一個(gè)問(wèn)題是點(diǎn)的順序,我們知道點(diǎn)云對(duì)點(diǎn)的順序是不變的。
點(diǎn)云文件可以在不更改實(shí)際渲染的情況下被更改。
處理此問(wèn)題(PointNet)有三種策略:
對(duì)點(diǎn)進(jìn)行排序。
輸入為 RNN 的序列,此序列通過(guò)增加各種排列來(lái)增大。
使用對(duì)稱函數(shù)來(lái)聚合來(lái)自每個(gè)點(diǎn)的信息。在此對(duì)稱函數(shù)中,+ 或 * 是對(duì)稱的二元函數(shù)。
在 PointNet 的論文中,文中說(shuō)第一種方法會(huì)產(chǎn)生一定的計(jì)算強(qiáng)度,第二種方法則不夠健壯。因此,在這里將使用最大池和對(duì)稱函數(shù)。而最大池是這里的主要操作。
整個(gè)框架如下文所述,你也可以去 GitHub 參見(jiàn)完整的實(shí)現(xiàn)過(guò)程。
PointNet 的架構(gòu)中,mlp 代表多層感知器。T-Net 是一個(gè)微小的變換網(wǎng)絡(luò)。
通常,它是卷積、完全連接和最大池化層的一種靈活使用方式。我發(fā)現(xiàn)一開(kāi)始可能會(huì)很難理解這些,因此我們可以直接看代碼去更好地理解。
首先,我將給出一個(gè)示例點(diǎn)云,它每行是(x,y,z,r,g,b)。其中每行代表一個(gè)點(diǎn)。假設(shè)我們?cè)谶@個(gè)例子中有 n 個(gè)點(diǎn)。
注意:PointNet 的實(shí)際輸入使用標(biāo)準(zhǔn)化 RGB 色域,基點(diǎn)的 x,y 在空間的中心是對(duì)齊的。為了不與浮點(diǎn)數(shù)之間發(fā)生混亂,在這里我沒(méi)有這樣做。
PointNet 中的分類
第一步操作是進(jìn)行 2d 卷積,其內(nèi)核大小為(1,6),它用來(lái)聚合一個(gè)點(diǎn)的相關(guān)信息(x,y,z,r,g,b;總共六個(gè))。此處的輸出應(yīng)為(n,1,64)。
注意:每層都有批量標(biāo)準(zhǔn)化,我將其刪除以簡(jiǎn)化演示過(guò)程。此外,原始 PointNet 使用 9 個(gè)特征作為輸入(x,y,z,r,g,b,normalized_x,normalized_y,normalized_z)。
這里是幾個(gè) 1x1 卷積運(yùn)算以逐個(gè)像素點(diǎn)的方式檢測(cè)這些特征。因此,我們將在這之后產(chǎn)生一個(gè)(n,1,1024)的數(shù)組。
接下來(lái)是最重要的步驟,最大池會(huì)選擇所有點(diǎn)中最顯著的特征。這就是函數(shù)對(duì)點(diǎn)的順序不變的原因。由于我們?cè)谙惹暗膱D層中有 1024 個(gè)過(guò)濾器,因此該圖層將輸出 1024 個(gè)特征。
......
想要繼續(xù)閱讀,請(qǐng)移步至我們的AI研習(xí)社社區(qū):https://club.leiphone.com/page/TextTranslation/737
更多精彩內(nèi)容盡在 AI 研習(xí)社。
不同領(lǐng)域包括計(jì)算機(jī)視覺(jué),語(yǔ)音語(yǔ)義,區(qū)塊鏈,自動(dòng)駕駛,數(shù)據(jù)挖掘,智能控制,編程語(yǔ)言等每日更新。
雷鋒網(wǎng)雷鋒網(wǎng)(公眾號(hào):雷鋒網(wǎng))
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。