#38 神經輻射場初探
Jack Rooney: Holy shit. This is fucking mental.
ー 3 Body Problem, 2024
Jack Rooney 戴上虛擬實境 (virtual reality, VR) 裝置後,感受到一個真實的新世界,一陣驚呼之後隨即嚐到鮮血的味道。且不提三體人的 VR 技術比人類先進一百五十年,現代的 VR 裝置要讓人能身歷實境至少還得面對兩個難題:影像真實度和雙眼視覺。光線追蹤 (ray tracing) 技術能提供影像真實度,但是需要強力的運算資源,以致於三維遊戲流行超過二十年的現在,遊戲畫面仍舊無法以光線追蹤技術渲染,而 VR 對雙眼視覺的需求更直接讓運算效能的要求加倍。2020 年在頂級電腦視覺會議 ECCV 發表的神經輻射場 (Neural Radiance Field, NeRF) 提出實景渲染的新方法,雖然目前一樣面臨運算效能的瓶頸,但不需要如光線追蹤技術般先建立實景的立體模型。本期電子報將從 NeRF 的原理出發,為探究新視角生成 (novel view synthesis) 的應用開路。
NeRF, Neural Radiance Field
新視角生成技術想要解決的問題是:如果已經取得 A 與 B 視角的照片,能不能生成 C 視角的照片?新視角生成技術可應用在虛擬實境或三維地圖上,近幾年才因為機器學習的進步而有所突破,接下來要介紹的 NeRF 是目前最成功的方法之一。
新視角生成的傳統做法是先做逆向渲染 (inverse rendering) 再重新渲染。比如要從任意角度渲染一隻貓時,首先取得這隻貓多個角度的照片 (在牠的身邊擺一堆相機,然後同時按快門) ,接著用這些資料建立貓的三維模型,取得貓的形狀、貼圖與材質,最後利用取得的三維性質從新視角渲染, NeRF 則完全擺脫這些步驟。
攝影的原理可以看做是從焦點向感光原件上的每個像素發出一條射線,每條射線第一個碰上的物體顏色會被記錄在這個像素上,當每個像素都按照一樣的方式取得顏色後,攝影師就得到一張照片。如果近物是半透明的,那它的最終顏色還會受到更遠的物體顏色影響 (Alpha 混合, Alpha blending) 。所以,相機的焦距、位置、物體的位置、顏色跟透明度決定每個像素最終的顏色。
就如同二維影像由像素組成一樣, 三維空間可以看作由許多有色的小方塊組成,這種小方塊叫作「體素」 (voxel) 。賦與每個體素顏色跟透明度的性質,看起來就像精細版本的 Minecraft (空氣的部份則是完全透明的體素) 。從這個方向出發,攝影的原理就是從焦點向感光原件上的每個像素發出射線,接著將射線上所有的體素做 Alpha blending ,計算出每個像素應有的顏色。而體素的顏色可以看作該體素發出的輻射,所有的體素組合起來就像一個輻射場,這個觀點就是神經輻射場的出發點。
為什麼這個技術跟神經有關呢?因為神經輻射場企圖用神經網路記住所有體素的顏色及透明度,當要渲染 (攝影) 景物時,每一條從焦點通過像素的射線會穿過這個輻射場,用一條射線上所有體素的位置詢問神經網路:「這個位置上的體素是什麼顏色?有多透明?」然後 Alpha blend 所有的結果,就能得出一個像素的顏色,得到所有像素的顏色就取得一張照片。整個流程約略如下:
如果知道一張照片是在哪個位置拍攝的,就能計算出所有打算取樣的體素位置。
拿所有位置詢問神經網路體素的顏色與透明度。
用取得的體素顏色與透明度合成圖片。
這張圖片必需跟第一步的照片一模一樣!
現今訓練神經網路的基本要求:所有的計算都必需是可以微分的 (一個數學性質,讓神經網路有依據資料微調的能力) 。對 NeRF 來說,即查詢體素顏色、體素透明度及像素顏色合成的過程必需是可微分的。如果用夠多的照片訓練神經網路,讓神經網路能猜出每個體素的顏色與透明度,那就能合成新視角的圖片了。
跟舊的方法相比, NeRF 不需要先建立整體場景的立體模型、貼圖與材質,也不再局限於小範圍的新視角生成。但是渲染速度與重新打光仍是挑戰。
Novel View Synthesis 大小事
Novel View Synthesis A to Z
逆向渲染 (inverse rendering) :渲染的方式 (如三維電子遊戲) 是將三維模型根據各個部份的性質 (如形狀、漫射、反射等) 填到圖像上。逆向渲染則是根據渲染結果 (照片) 推算三維模型的各種性質。
Alpha 混合 (Alpha blending) :計算半透明物體顏色的方式。比如藍色的 50% 透明的瓶子裝上咖啡色的不透明液體後,結果會是 50% 的藍色加上 50% 的咖啡色。