目前深度學(xué)習(xí)已經(jīng)在2D計算機(jī)視覺領(lǐng)域取得了非凡的成果,比如使用一張圖像進(jìn)行目標(biāo)檢測,語義分割,對視頻當(dāng)中的物體進(jìn)行目標(biāo)跟蹤等任務(wù)都有非常不錯的效果。傳統(tǒng)的3D計算機(jī)視覺則是基于純立體幾何來實現(xiàn)的,而目前我們使用深度學(xué)習(xí)在3D計算機(jī)視覺當(dāng)中也可以得到一些不錯的效果,目前甚至有超越傳統(tǒng)依靠立體幾何識別準(zhǔn)確率的趨勢。因此咱們現(xiàn)在來介紹一下深度學(xué)習(xí)在3D計算機(jī)視覺當(dāng)中的應(yīng)用吧!本博文參考了前幾天斯坦福大學(xué)最新出的CS231n課程(2020/8/11新出),新課增加了3D計算機(jī)視覺和視頻/動作分類的lecture,同時豐富了生成對抗網(wǎng)絡(luò)(GAN)的內(nèi)容,暫時國內(nèi)還無人翻譯,因此小編將其翻譯整理成博文的形式供大家參考,如有錯誤之處,請大家見諒,同時歡迎大家討論。
一.3D計算機(jī)視覺的圖像表示方法
在3D計算機(jī)視覺當(dāng)中,我們可以采用于訓(xùn)練的模型共有以上幾種,分別是:
1.Depth Map(深度圖)
2.Voxel Grid(翻譯過來很奇怪,因此就保留原英語)
4.PointCloud(三維點云)
5.Mesh
如下圖所示:
二.Depth Map(深度圖)
深度圖的圖像如下所示:
在左上角有一張關(guān)于斯坦福大學(xué)寢室的圖片,我們可以將其轉(zhuǎn)化為右上角的深度圖,其中深度圖當(dāng)中不同的顏色表示了不同物體距離攝像頭的距離,距離攝像頭的距離越大,則顯示出來的顏色則越紅。我們假設(shè)有一個神經(jīng)網(wǎng)絡(luò),我們只需要輸入一張圖片,就可以得到圖片當(dāng)中的所有位置距離攝像頭的距離,這樣是不是很酷呢?那么我們?nèi)绾问褂蒙窠?jīng)網(wǎng)絡(luò)對一系列的圖片訓(xùn)練成為深度圖的形式呢?一些研究人員便立馬想到可以使用全卷積神經(jīng)網(wǎng)絡(luò)(Fully convolutional Network)來實現(xiàn)這個過程,全卷積神經(jīng)網(wǎng)絡(luò)(Fully convolutional Network)是我們之前在2D計算機(jī)視覺當(dāng)中所采用的用于圖像分割的神經(jīng)網(wǎng)絡(luò),之前圖像分割得到的是每一個像素點顯示的是屬于某一個物體類別的概率值,而現(xiàn)在我們把同樣的神經(jīng)網(wǎng)絡(luò)用于深度圖當(dāng)中就可以得到圖像當(dāng)中某一個像素距離攝像頭的遠(yuǎn)近大小。這樣就可以完美得到咱們的深度圖訓(xùn)練模型了,我們甚至可以把這個全卷積神經(jīng)網(wǎng)絡(luò)替換成U-net以期在一些特定數(shù)據(jù)集上得到更好的效果。模型如下所示:
這個模型首先也是輸出一個3通道的彩色圖片,經(jīng)過一個全卷積神經(jīng)網(wǎng)絡(luò)(FCN)然后對深度圖進(jìn)行估計,輸出的深度圖僅僅具有兩個通道,因為第三個通道的維度為1,意味著我們輸出的深度圖實際上是黑白的,用黑色或者白色的深度來表示距離攝像頭的距離,圖像當(dāng)中使用了彩色僅僅是因為看起來更加方便。同時這里的loss使用了L2距離進(jìn)行損失函數(shù)的編寫。
但是!!!!細(xì)心的同學(xué)肯定會發(fā)現(xiàn)其中有一定的問題,那就是同一個物體,擁有不同的大小,他們?nèi)绻麅H僅通過一張圖片來判定他們離攝像頭的距離是不一定準(zhǔn)確的。因為圖片當(dāng)中并沒有包含物體有關(guān)深度的信息。
比如我們有兩只形狀完全相同的鳥,但是其中一只鳥是另一只鳥大小的2倍,我們把小鳥放到離攝像頭更近的位置,將大鳥放到離攝像頭更遠(yuǎn)的位置,那么僅僅通過一張圖片我們就會認(rèn)為這兩只鳥離我們的攝像頭距離是一樣大的!如下圖所示:
那么這樣我們又該如何解決呢?聰明的研究人員設(shè)計了一個具有尺寸不變特征的的loss function來解決了這個問題,這個loss function的寫法如下:
至于這個公式為什么會讓圖片的深度信息得以保留,這里不再贅述,感興趣的同學(xué)可以翻看一下提出這個loss的論文,在2016年的世界頂級人工智能會議論文NIPS上發(fā)表,于紐約大學(xué)(New York University)提出,論文的鏈接如下:https://papers.nips.cc/paper/5539-depth-map-prediction-from-a-single-image-using-a-multi-scale-deep-network.pdf
同時呢,在深度圖當(dāng)中還有一種圖叫做垂直表面法向量圖,它的圖像如下所示:
最后輸出圖像當(dāng)中的不同顏色代表了這個物體的表面所朝空間當(dāng)中的方向,比如綠色代表這個物體的表面是朝向右邊的,而紅色則代表這個物體的表面是朝向左邊的。我們也可以使用全卷積神經(jīng)網(wǎng)絡(luò)(Fully convolutional Network)對這種輸出的圖像進(jìn)行處理,其中的結(jié)構(gòu)如下所示:
最后的Loss采用了(x*y)/(|x|*|y||)的方法,因為我們所預(yù)測的圖像具備圖像的方向和深度的信息,而圖像的方向和大小正好可以由向量表示,豈不美哉?每一個訓(xùn)練集當(dāng)中的圖片的其中一個像素點都可以由一個向量來表示,同時具備深度(長度)和方向的信息。而原圖當(dāng)中某個像素點的大小可以表示為向量x,通過神經(jīng)網(wǎng)絡(luò)推測之后的同一個像素點則可以表示為向量y,因此我們可以使用公式(x*y)/(|x|*|y||)來衡量這兩個向量之間的差距,其中(x*y)中的乘法使用了點乘,因此上下相除可得cos(theta)也就是圖片當(dāng)中某個像素點所具備的loss的大小,將整個圖片當(dāng)中所有像素點的大小加起來則可以得到整個圖像當(dāng)中l(wèi)oss的大小了。
三.Voxel Grid網(wǎng)格表示法
如下圖所示,我們可以將一張二維的圖片轉(zhuǎn)為一張三維的Mesh圖,什么是Mesh圖呢?Voxels grid圖就是在一個三維的,大小為V*V*V的空間立體當(dāng)中,由一系列1*1*1正方體網(wǎng)格堆砌出來的三維立體圖形,Voxels grid圖當(dāng)中的每一個網(wǎng)格只具有兩個值,1或者0,1表示這個地方有正方體,0表示這個地方?jīng)]有正方體。一個Voxels grid圖當(dāng)中只保留物體的形狀和大小信息,而不保留物體的顏色以及紋理的信息。
我們先來看一個有趣的問題,用什么方法可以對三維Voxels grid圖進(jìn)行分類呢?我們暫時不考慮將二維圖像恢復(fù)到三維Voxels grid圖的情況的話,常見的手段是使用立體3D卷積,如下圖所示:
3D立體卷積和我們的2D卷積有一點不同之處,那就是卷積核的神奇之處是它竟然一個正立方體!而不是一個二維的平面!在上圖當(dāng)中,我們的輸入是一個四通道的1*30*30*30的Mesh圖,輸入的圖像可能是一個椅子,也可能是一個床。我們通過三維卷積,不斷地進(jìn)行卷積以及池化的操作,接著使用全連接神經(jīng)網(wǎng)絡(luò)將其展開,最后使用softmax函數(shù)將其繼續(xù)擰分類。我們使用3D卷積能夠?qū)αⅢw圖像的特征進(jìn)行更為有效的檢測,因為一個立體的圖像不僅僅有長和寬上面的信息,還有其有關(guān)深度的相關(guān)信息,因此需要采用3D卷積。3D卷積的動態(tài)圖如下所示,這個例題動態(tài)圖當(dāng)中卷積核的大小為3*3*3:
再回到我們剛才的問題,如何將一個二維的圖像轉(zhuǎn)化為Voxels grid圖呢,我們可以采用的卷積神經(jīng)網(wǎng)絡(luò)如下所示:
首先我們將二維的圖像首先送入到一個2D卷積神經(jīng)網(wǎng)絡(luò)當(dāng)中,用于提取這個二維圖像的特征,然后通過全連接神經(jīng)網(wǎng)絡(luò)或者Flatten層將其展平一個一維的向量,這樣就可以更加方便地轉(zhuǎn)化reshape為四通道進(jìn)行三維卷積的形式,前面我們已經(jīng)說過三維卷積能夠更好地抽象地還原和提取到圖像在三維空間上的個特征,因此我們對剛才二維圖像抽象出來的特征通過三維卷積進(jìn)行還原,這是一個通過三維卷積進(jìn)行上采樣的過程。最后輸出的結(jié)果就可以得到我們的Voxels grid圖啦!
但是使用三維卷積常常就會用更為昂貴的代價來換取更為準(zhǔn)確的結(jié)果,因為三維卷積使用的參數(shù)過多,如下圖所示:
我們僅僅儲存1024^3個Voxels grid網(wǎng)格就需要電腦4GB的顯存,實在是太大了!好多電腦的顯存還沒有這么大呢!因此有些研究人員則直接使用二維卷積對圖像進(jìn)行三維的還原,當(dāng)然效果肯定沒這么好啦,如下圖所示:
這個思想就很和我們的自編碼器(Auto-Encoders)很像了。
四.采用3D點云
采用3D點云應(yīng)該是目前比較靠譜的方案,
在3D點云當(dāng)中每一個點,都有三個參數(shù),分別是每個點在x,y,z軸上的位置,對3D點云進(jìn)行分類的話和對Mesh分類的方法差不多,也是經(jīng)過一定的神經(jīng)網(wǎng)絡(luò)再經(jīng)過softmax函數(shù)就可以得到最后的分類了!如下圖所示:
這就是今天小編給大家分享的全部內(nèi)容啦!
責(zé)任編輯:lq
-
3D
+關(guān)注
關(guān)注
9文章
2959瀏覽量
110623 -
計算機(jī)視覺
+關(guān)注
關(guān)注
9文章
1708瀏覽量
46743 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5560瀏覽量
122746
原文標(biāo)題:一門入門當(dāng)今最火的3D計算機(jī)視覺
文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
3D視覺引領(lǐng)工業(yè)變革

Arm KleidiCV與OpenCV集成助力移動端計算機(jī)視覺性能優(yōu)化
【小白入門必看】一文讀懂深度學(xué)習(xí)計算機(jī)視覺技術(shù)及學(xué)習(xí)路線

ARMxy嵌入式計算機(jī)在機(jī)器視覺中的卓越表現(xiàn)

計算機(jī)視覺有哪些優(yōu)缺點
圖像處理器與計算機(jī)視覺有什么關(guān)系和區(qū)別
計算機(jī)視覺中的圖像融合

評論