三维重建
形状重建
- 自阴影重建形状(英文:shape from shading)
- 自边界重建形状(英文:shape from silhouette)
深度學習的方法
概論
因為三維的形狀比二維影像有更多資訊,因此直接從二維影像推測三維形狀對計算機而言並不是容易的工作,但對人類來說,對於生活中常見到的物體,我們常常可以從單一角度看,就可以推測經驗上物體的整個形狀(在三維空間中的樣子),人類之所以能做到這樣是因為長久經驗的累積,因此對於計算機而言,如果學習過夠多二維影像以及三維形狀的資訊,理論上也能夠做到,因此近來有不少利用深度學習的三維重建方法,利用大量的訓練資料(例如:影像以及相對應的三維形狀)來訓練深度神經網路或是卷積神經網路建構的模型,達到由單張或多張二維影像作為輸入,推測三維形狀。此外,有些大量三維模型的資料庫[1]也在近年被建立,以便於這些深度學習模型的訓練與相互比較的基礎。
常用資料型態
體素與點雲的比較
體素與二維的像素一樣,具有規律性的排列,可以直接套用卷積神經網路,因此把現成處理二維影像的模型架構進行適當的修改,就能夠應用在三維重建的問題上。點雲則是資料點的集合,沒有規律性的排列,因此無法套用卷積神經網路,要使用其他的方法。不過體素相較於點雲有一個很大的缺點就是龐大的記憶量與運算量,對於一個立體空間,我們所在意的物件可能佔此空間的比例不大,其他部份都是空的,但體素還是要在空的地方儲存值為零。而點雲只要記錄有物體所在的點的座標就好,因此比較節省記憶體與運算量(高解析度下),也比較適合表示高解析度的三維資料。
不同類型的輸入二維資料類型
- 使用二維RGB影像作為輸入
- 使用深度圖做為輸入
不同數量的輸入影像
- 使用同一物件的單張影像作為輸入
- 使用同一物件的多張影像(由不同視角所拍攝)作為輸入
利用自編碼器
TL網路[2]
訓練時,先使用三維形狀的資料(以體素表示),訓練三維資料的自編碼器,接著在訓練一個的二維影像編碼器,這個影像編碼器的目的是讓二維影像編碼出來的向量與三維體素的自編碼器中利用相對應的三維體素編碼出來的向量越接近越好。測試時只有二維的影像,並不知道其三維的形狀。输入影像經由二維影像的編碼器,得到特徵向量,再使用訓練好的三維體素的解碼器(即是自編碼器中的解碼器)即可得到此二維影像所對應的三維體素。
利用生成對抗網絡
三維生成對抗網路[3]
生成對抗網路常被用在二維影像的生成,但也可以用在三維形狀的生成(資料一樣以體素表示),採用一個二維影像的編碼器,一個三維體素的解碼器(即是生成對抗網絡中的生成器),還有一個生成對抗網路的判別器。二維的影像被編碼成特徵向量後,被三維體素的解碼器解碼,再由判別器來幫助生成三維形狀的品質。
參考資料
- ^ ShapeNet, https://www.shapenet.org/ (页面存档备份,存于互联网档案馆)
- ^ Learning a Predictable and Generative Vector Representation for Objects, https://arxiv.org/abs/1603.08637/ (页面存档备份,存于互联网档案馆)
- ^ 3D GAN, http://3dgan.csail.mit.edu/ (页面存档备份,存于互联网档案馆)