本科生新算法打敗NeRF,不用神經網絡照片也能動起來,提速100倍
本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。
萬萬沒想到,把照片變3D這件事,離了神經網絡也是這般絲滑。

而在此之前,新視角合成這方面的“大牛”,是近兩年大火的NeRF (神經輻射場)。
它是一個簡單的全連接神經網絡,使用2D圖像的信息作為訓練數據,還原擁有體積的3D場景。
但最近,來自伯克利大學的研究人員提出了一個叫做Plenoxels的方法。
不需要神經網絡,僅僅通過梯度下降和正則化便實現了同樣的效果,而且速度還快了100倍!
那么他們是如何做到這點的呢?
由NeRF到Plenoxels的進化
為了幫助大家理解Plenoxels,我們先來簡單介紹一下NeRF模型。


要準備NeRF的數據,我們首先需要一部相機。
拍了很多張各個角度的照片后,沿相機射線將每一張2D圖片的坐標與視圖方向構成一個5D向量 (x, y, z, θ, φ)作為mlp (多層全連接神經網絡)的輸入。

我們從圖(b)上可以看到,射線上的點有了顏色,每點的顏色c = (r, g, b)和密度(σ)就是輸出向量。
接著NeRF使用體積渲染技術將得到的顏色與密度進行3D渲染。
由于渲染函數是可導的,我們可以最小化合成效果與實際效果的誤差,從而進行神經網絡參數的優化。
其中mlp使用的參數多可達到5MB,實際訓練起來就會發現訓練時間十分漫長,通常要1-4天。
這個速度與Plenoxels的11分鐘相比確實是無法接受的。
2D圖片變3D,聽起來不是個小工程,Plenoxels不用神經網絡是如何實現的呢?其實并不復雜。

Plenoxels發現NeRF成功的秘訣其實是它的體積渲染方程,與其最耗時的神經網絡關系不大。
那么你一定會好奇這個體積渲染方程究竟是何方神圣,我們就先來看一下。

σi代表不透明度,ci代表顏色,δi代表距離。Ti代表有多少光經過射線上的點i,是通過密度和距離計算的。
這個體積渲染方程其實就是將射線上每個點的顏色,不透明度,光,還有距離進行了一個整合處理。
體積渲染方程介紹過了,那么不需要神經網絡的Plenoxels是如何表示圖片的呢?

Plenoxels首先重建了一個稀疏的體素表格,每個被占用的體素都帶有不透明度和球諧系數。

我們的顏色信息就存儲在這些球諧系數中,每個顏色通道需要9個系數表示,一共有三個顏色,那么每個體素就需要27個球諧系數來表示它的顏色。
相機射線經過的每個點的顏色和不透明度,就是通過其最近處的8個體素的三線性插值計算的。
接著與NeRF一樣,使用體積渲染技術將得到的顏色與不透明度進行3D渲染。


Plenoxels通過對渲染的像素的平均平方誤差 (MSE)進行最小化,來優化體素的不透明度和球諧系數,并且使用TV正則化幫助消除噪聲。

我們可以看出,是否使用TV正則化的效果區別還是很大的!
提速100倍,僅需11分鐘
我們用最直觀的方法對比一下兩個模型速度上的差距。

看到了嗎,只用幾秒Plenoxels就可以達到一個比較清晰的效果,而NeRF只有一個模糊的影子。
同樣是單個場景,NeRF使用型號為v100的單個GPU訓練需要耗時1-2天,而Plenoxels使用單個GPU通常只需要11分鐘。
這時有一個問題一定縈繞在你的腦海里,速度提升了這么多,效果真的不會受影響嗎?
空口無憑,我們還是要用數據說話。

PSNR (峰值信噪比):是最普遍,最廣泛使用的評鑒畫質的客觀量測法,PSNR值越大,就代表失真越少。
SSIM (結構相似性):衡量實際圖像和合成圖像的相似度,當兩張圖像一模一樣時,SSIM的值等于1。
LPIPS (學習感知圖像塊相似度):用于度量實際圖像和合成圖像之間的差別,值越低代表圖片越相似。
可以看到Plenoxels對比其他模型的表現不說樣樣最好,但也絕不落后他人,關鍵在于它的速度整整快了兩個數量級!

正因為Plenoxels速度上的大幅提升,使得一些目前處于瓶頸的下游應用變得可能,例如多次反射照明 (multi-bounce lighting)和大型場景的3D建模 (3D generative models)。
如果能在相機和體素散列上進行有效優化,模型甚至可以讓端到端三維重建成為擁有pipeline的實際應用。
相信Plenoxels的潛力不僅于此,讓我們一起期待它落地后的成果吧!
UC伯克利本科生一作
效果強勁的Plenoxels來自UC伯克利的學生團隊,一作Alex Yu還是一名本科生。
在大學里,他不僅同時學習計算機和應用數學兩門專業,還在伯克利的BAIR ( Berkeley Artificial Intelligence Research)實驗室進行3D計算機視覺的相關研究。

Alex計劃在2022的秋季開始他的PhD旅程,讓人不禁感嘆AI界真是人才輩出。
在未來經過PhD的學習后,他又會迸發出怎樣的能量呢,讓我們一起拭目以待吧!
GitHub代碼開源
目前,Plenoxels項目的代碼已經在GitHub上開源。

小伙伴們要注意的是,拍攝照片的時候要盡可能環繞物體,并且嘗試不同的高度哦。
快來試試效果如何吧!