萬萬沒想到,把照片變 3D 這件事,離了神經(jīng)網(wǎng)絡(luò)也是這般絲滑。
而在此之前,新視角合成這方面的“大?!保墙鼉赡甏蠡鸬?NeRF (神經(jīng)輻射場(chǎng))。它是一個(gè)簡(jiǎn)單的全連接神經(jīng)網(wǎng)絡(luò),使用 2D 圖像的信息作為訓(xùn)練數(shù)據(jù),還原擁有體積的 3D 場(chǎng)景。
但最近,來自伯克利大學(xué)的研究人員提出了一個(gè)叫做 Plenoxels 的方法。不需要神經(jīng)網(wǎng)絡(luò),僅僅通過梯度下降和正則化便實(shí)現(xiàn)了同樣的效果,而且速度還快了 100 倍!那么他們是如何做到這點(diǎn)的呢?
由 NeRF 到 Plenoxels 的進(jìn)化
為了幫助大家理解 Plenoxels,我們先來簡(jiǎn)單介紹一下 NeRF 模型。
要準(zhǔn)備 NeRF 的數(shù)據(jù),我們首先需要一部相機(jī)。
拍了很多張各個(gè)角度的照片后,沿相機(jī)射線將每一張 2D 圖片的坐標(biāo)與視圖方向構(gòu)成一個(gè) 5D 向量 (x, y, z, θ, φ)作為 mlp (多層全連接神經(jīng)網(wǎng)絡(luò))的輸入。
我們從圖 (b) 上可以看到,射線上的點(diǎn)有了顏色,每點(diǎn)的顏色 c = (r, g, b)和密度(σ)就是輸出向量。接著 NeRF 使用體積渲染技術(shù)將得到的顏色與密度進(jìn)行 3D 渲染。
由于渲染函數(shù)是可導(dǎo)的,我們可以最小化合成效果與實(shí)際效果的誤差,從而進(jìn)行神經(jīng)網(wǎng)絡(luò)參數(shù)的優(yōu)化。其中 mlp 使用的參數(shù)多可達(dá)到 5MB,實(shí)際訓(xùn)練起來就會(huì)發(fā)現(xiàn)訓(xùn)練時(shí)間十分漫長(zhǎng),通常要 1-4 天。這個(gè)速度與 Plenoxels 的 11 分鐘相比確實(shí)是無法接受的。
2D 圖片變 3D,聽起來不是個(gè)小工程,Plenoxels 不用神經(jīng)網(wǎng)絡(luò)是如何實(shí)現(xiàn)的呢?其實(shí)并不復(fù)雜。
Plenoxels 發(fā)現(xiàn) NeRF 成功的秘訣其實(shí)是它的體積渲染方程,與其最耗時(shí)的神經(jīng)網(wǎng)絡(luò)關(guān)系不大。那么你一定會(huì)好奇這個(gè)體積渲染方程究竟是何方神圣,我們就先來看一下。
σi 代表不透明度,ci 代表顏色,δi 代表距離。Ti 代表有多少光經(jīng)過射線上的點(diǎn) i,是通過密度和距離計(jì)算的。這個(gè)體積渲染方程其實(shí)就是將射線上每個(gè)點(diǎn)的顏色,不透明度,光,還有距離進(jìn)行了一個(gè)整合處理。
體積渲染方程介紹過了,那么不需要神經(jīng)網(wǎng)絡(luò)的 Plenoxels 是如何表示圖片的呢?
Plenoxels 首先重建了一個(gè)稀疏的體素表格,每個(gè)被占用的體素都帶有不透明度和球諧系數(shù)。
我們的顏色信息就存儲(chǔ)在這些球諧系數(shù)中,每個(gè)顏色通道需要 9 個(gè)系數(shù)表示,一共有三個(gè)顏色,那么每個(gè)體素就需要 27 個(gè)球諧系數(shù)來表示它的顏色。
相機(jī)射線經(jīng)過的每個(gè)點(diǎn)的顏色和不透明度,就是通過其最近處的 8 個(gè)體素的三線性插值計(jì)算的。接著與 NeRF 一樣,使用體積渲染技術(shù)將得到的顏色與不透明度進(jìn)行 3D 渲染。
Plenoxels 通過對(duì)渲染的像素的平均平方誤差 (MSE)進(jìn)行最小化,來優(yōu)化體素的不透明度和球諧系數(shù),并且使用 TV 正則化幫助消除噪聲。
我們可以看出,是否使用 TV 正則化的效果區(qū)別還是很大的!
提速 100 倍,僅需 11 分鐘
我們用最直觀的方法對(duì)比一下兩個(gè)模型速度上的差距。
看到了嗎,只用幾秒 Plenoxels 就可以達(dá)到一個(gè)比較清晰的效果,而 NeRF 只有一個(gè)模糊的影子。
同樣是單個(gè)場(chǎng)景,NeRF 使用型號(hào)為 v100 的單個(gè) GPU 訓(xùn)練需要耗時(shí) 1-2 天,而 Plenoxels 使用單個(gè) GPU 通常只需要 11 分鐘。
這時(shí)有一個(gè)問題一定縈繞在你的腦海里,速度提升了這么多,效果真的不會(huì)受影響嗎?
空口無憑,我們還是要用數(shù)據(jù)說話。
PSNR (峰值信噪比):是最普遍,最廣泛使用的評(píng)鑒畫質(zhì)的客觀量測(cè)法,PSNR 值越大,就代表失真越少。
SSIM (結(jié)構(gòu)相似性):衡量實(shí)際圖像和合成圖像的相似度,當(dāng)兩張圖像一模一樣時(shí),SSIM 的值等于 1。
LPIPS (學(xué)習(xí)感知圖像塊相似度):用于度量實(shí)際圖像和合成圖像之間的差別,值越低代表圖片越相似。
可以看到 Plenoxels 對(duì)比其他模型的表現(xiàn)不說樣樣最好,但也絕不落后他人,關(guān)鍵在于它的速度整整快了兩個(gè)數(shù)量級(jí)!
正因?yàn)?Plenoxels 速度上的大幅提升,使得一些目前處于瓶頸的下游應(yīng)用變得可能,例如多次反射照明 (multi-bounce lighting)和大型場(chǎng)景的 3D 建模 (3D generative models)。
如果能在相機(jī)和體素散列上進(jìn)行有效優(yōu)化,模型甚至可以讓端到端三維重建成為擁有 pipeline 的實(shí)際應(yīng)用。
相信 Plenoxels 的潛力不僅于此,讓我們一起期待它落地后的成果吧!
UC 伯克利本科生一作
效果強(qiáng)勁的 Plenoxels 來自 UC 伯克利的學(xué)生團(tuán)隊(duì),一作 Alex Yu 還是一名本科生。在大學(xué)里,他不僅同時(shí)學(xué)習(xí)計(jì)算機(jī)和應(yīng)用數(shù)學(xué)兩門專業(yè),還在伯克利的 BAIR ( Berkeley Artificial Intelligence Research)實(shí)驗(yàn)室進(jìn)行 3D 計(jì)算機(jī)視覺的相關(guān)研究。
Alex 計(jì)劃在 2022 的秋季開始他的 PhD 旅程,讓人不禁感嘆 AI 界真是人才輩出。在未來經(jīng)過 PhD 的學(xué)習(xí)后,他又會(huì)迸發(fā)出怎樣的能量呢,讓我們一起拭目以待吧!
GitHub 代碼開源
目前,Plenoxels 項(xiàng)目的代碼已經(jīng)在 GitHub 上開源。
小伙伴們要注意的是,拍攝照片的時(shí)候要盡可能環(huán)繞物體,并且嘗試不同的高度哦。
快來試試效果如何吧!
參考鏈接:
[1]https://alexyu.net/plenoxels/?s=09
[2]https://github.com/sxyu/svox2
[3]https://www.casualganpapers.com/eccv-3d-novel-view-synthesis-differentiable-rendering-implicit-representation/NeRF-explained.html
[4]https://www.casualganpapers.com/nerf-3d-voxels-without-neural-networks/Plenoxels-explained.html
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。