NeRF,即Neural Radiance Fields(神經輻射場)的縮寫。研究員來自UCB、Google和UCSD。
Title:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
Paper:https://arxiv.org/pdf/2003.08934.pdf
Code:https://github.com/bmild/nerf
寫這篇文章的動機是,一方面NeRF實在太重要了代表著計算機視覺、圖像學結合的未來重要方向;另一方面NeRF對于計算機視覺背景的同學有一定的理解門檻,這篇文章試圖以最小背景知識補充、最少理解成本為前提介紹NeRF。
整體介紹
NeRF的研究目的是合成同一場景不同視角下的圖像。方法很簡單,根據給定一個場景的若干張圖片,重構出這個場景的3D表示,然后推理的時候輸入不同視角就可以合成(渲染)這個視角下的圖像了。
「3D表示」有很多種形式,NeRF使用的是輻射場,然后用「體渲染」(Volume Rendering)技術,給定一個相機視角,把輻射場渲染成一張圖像。選用輻射場+體渲染的原因很簡單,全程可微分。這個過程很有意思,可以理解為把一個空間朝一個方向上拍扁,空間中的顏色加權求和得到平面上的顏色。
輻射場
體渲染
所謂體渲染,直觀地說,我們知道相機的焦點,焦點和像素的連線可以連出來一條射線,我們可以對這條射線上所有的點的顏色做某種求和就可以得到這個像素的顏色值。
理論上,我們可以對這條射線經過空間上的每個點的密度(只和空間坐標相關)和顏色(同時依賴空間坐標和入射角)進行某種積分就可以得到每個像素的顏色。當每個像素的顏色都計算出來,那么這個視角下的圖像就被渲染出來了。如下圖所示:
從相機焦點出發,往一個像素連出一條射線,獲取射穿過空間中每個點的屬性,進行積分得到這個像素的顏色
為了順利完成上面過程,我們可能需要維護碩大無朋Tensor來表示輻射場,查表獲取RGB和密度。這里一個問題是空間有多大表就有多大,同時只能是離散表示的。NeRF要做的事情是用一個神經網絡來建模輻射場,這樣無論空間有多大,不影響我們表示輻射場的所需要的存儲量,而且這個輻射場表示是連續的:?Θ:(?,?,?,?,?)→(?,?,?,?
用神經網絡來代替查表的方式表示輻射場
整體過程
因為神經網絡是可微分的,選取的體渲染方法是可微分;體渲染得到的圖片和原圖計算MSE Loss。整個過程可端到端地用梯度回傳來優化非常漂亮。整個訓練Pipeline如下圖所示:
看到這,讀者就已經大致理解NeRF的原理了,后面章節是NeRF的具體細節。
用輻射場做體渲染
前面我們已經大致理解體渲染的過程是怎么做了??墒窃趺囱刂渚€對空間中的顏色進行積分呢?如果我們把射線看作是光線,可以直觀得到這個積分要滿足的兩個條件:
1、一個點的密度越高,射線通過它之后變得越弱,密度和透光度呈反比
2、一個點的密度越高,這點在這個射線下的顏色反應在像素上的權重越大
而實際渲染過程,我們只能把射線平均分成N個小區間,每個區間隨機采樣一個點,對采樣得到的點的顏色進行某種加權求和:
神經輻射場的兩項優化點
Positional encoding
類似Transformer的做法,把坐標和視角用更高維度的表示作為網絡輸入,來解決渲染圖像比較糊的問題:
Hierachical volume sampling
Architecture
私貨
無論從方法的開創性,還是發表后兩年多的影響力來看。在筆者心目中,ECCV 2020的Best Paper沒給NeRF,不得不說是一個遺憾。
審核編輯 :李倩
-
3D
+關注
關注
9文章
2862瀏覽量
107324 -
神經網絡
+關注
關注
42文章
4762瀏覽量
100535 -
RGB
+關注
關注
4文章
798瀏覽量
58386
原文標題:都2023年了,我不允許你還不懂NeRF
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論