<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          都2022年了,我不允許你還不懂NeRF

          共 2851字,需瀏覽 6分鐘

           ·

          2022-12-02 22:33

          作者丨mathfinder@知乎

          https://zhuanlan.zhihu.com/p/569843149

          NeRF,即Neural Radiance Fields(神經(jīng)輻射場(chǎng))的縮寫。研究員來自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

          寫這篇文章的動(dòng)機(jī)是,一方面NeRF實(shí)在太重要了代表著計(jì)算機(jī)視覺、圖像學(xué)結(jié)合的未來重要方向;另一方面NeRF對(duì)于計(jì)算機(jī)視覺背景的同學(xué)有一定的理解門檻,這篇文章試圖以最小背景知識(shí)補(bǔ)充、最少理解成本為前提介紹NeRF。

          整體介紹

          NeRF的研究目的是合成同一場(chǎng)景不同視角下的圖像。方法很簡(jiǎn)單,根據(jù)給定一個(gè)場(chǎng)景的若干張圖片,重構(gòu)出這個(gè)場(chǎng)景的3D表示,然后推理的時(shí)候輸入不同視角就可以合成(渲染)這個(gè)視角下的圖像了。

          「3D表示」有很多種形式,NeRF使用的是輻射場(chǎng),然后用「體渲染」(Volume Rendering)技術(shù),給定一個(gè)相機(jī)視角,把輻射場(chǎng)渲染成一張圖像。選用輻射場(chǎng)+體渲染的原因很簡(jiǎn)單,全程可微分。這個(gè)過程很有意思,可以理解為把一個(gè)空間朝一個(gè)方向上拍扁,空間中的顏色加權(quán)求和得到平面上的顏色。

          輻射場(chǎng)

          所謂輻射場(chǎng), 我們可以把它看做是一個(gè)函數(shù):如果我們從一個(gè)角度向一個(gè)靜態(tài)空間發(fā)射一條射線, 我們可以查詢到這條射線在空間中每個(gè)點(diǎn)  的密度 , 以及該位置在射線角度  下 呈現(xiàn)出來的顏色 , 即  。其中密度是 用來計(jì)算權(quán)重的, 對(duì)點(diǎn)上的顏色做加權(quán)求和就可以呈現(xiàn)像素顏色。實(shí)際上, 對(duì)于輻射場(chǎng)我們只要維 護(hù)一個(gè)表, 給定一個(gè)  直接查表獲得RGB值和密度, 給體渲染方法用就好了。而 NeRF提出了更好的方法:用神經(jīng)網(wǎng)絡(luò)來建模這個(gè)映射。

          體渲染

          所謂體渲染,直觀地說,我們知道相機(jī)的焦點(diǎn),焦點(diǎn)和像素的連線可以連出來一條射線,我們可以對(duì)這條射線上所有的點(diǎn)的顏色做某種求和就可以得到這個(gè)像素的顏色值。

          理論上,我們可以對(duì)這條射線經(jīng)過空間上的每個(gè)點(diǎn)的密度(只和空間坐標(biāo)相關(guān))和顏色(同時(shí)依賴空間坐標(biāo)和入射角)進(jìn)行某種積分就可以得到每個(gè)像素的顏色。當(dāng)每個(gè)像素的顏色都計(jì)算出來,那么這個(gè)視角下的圖像就被渲染出來了。如下圖所示:

          img

          從相機(jī)焦點(diǎn)出發(fā),往一個(gè)像素連出一條射線,獲取射穿過空間中每個(gè)點(diǎn)的屬性,進(jìn)行積分得到這個(gè)像素的顏色

          為了順利完成上面過程,我們可能需要維護(hù)碩大無朋Tensor來表示輻射場(chǎng),查表獲取RGB和密度。這里一個(gè)問題是空間有多大表就有多大,同時(shí)只能是離散表示的。NeRF要做的事情是用一個(gè)神經(jīng)網(wǎng)絡(luò)來建模輻射場(chǎng),這樣無論空間有多大,不影響我們表示輻射場(chǎng)的所需要的存儲(chǔ)量,而且這個(gè)輻射場(chǎng)表示是連續(xù)的:.

          img

          用神經(jīng)網(wǎng)絡(luò)來代替查表的方式表示輻射場(chǎng)

          整體過程

          因?yàn)?strong>神經(jīng)網(wǎng)絡(luò)是可微分的,選取的體渲染方法是可微分;體渲染得到的圖片和原圖計(jì)算MSE Loss。整個(gè)過程可端到端地用梯度回傳來優(yōu)化非常漂亮。整個(gè)訓(xùn)練Pipeline如下圖所示:

          img

          看到這,讀者就已經(jīng)大致理解NeRF的原理了,后面章節(jié)是NeRF的具體細(xì)節(jié)。

          用輻射場(chǎng)做體渲染

          前面我們已經(jīng)大致理解體渲染的過程是怎么做了。可是怎么沿著射線對(duì)空間中的顏色進(jìn)行積分呢?如果我們把射線看作是光線,可以直觀得到這個(gè)積分要滿足的兩個(gè)條件:

          1. 一個(gè)點(diǎn)的密度越高,射線通過它之后變得越弱,密度和透光度呈反比
          2. 一個(gè)點(diǎn)的密度越高,這點(diǎn)在這個(gè)射線下的顏色反應(yīng)在像素上的權(quán)重越大

          因此, 我們?nèi)绻麖慕裹c(diǎn)到一個(gè)像素上連的射線為:, 其中  是原點(diǎn),  是時(shí)間。時(shí) 間起點(diǎn) (near bound) 和時(shí)間終點(diǎn) (far bound) 為  和  。我們有沿著這條射線積分得到像素顏色的公式如下:

          img

          觀察這個(gè)式子積分里面是  、密度  和顏色  的乘積, 其中  是累積透光率, 表示光線射到這"還剩多少光"。

          因此對(duì)于這個(gè)像素的顏色, 這個(gè)點(diǎn)的顏色的權(quán)重為 , 即光線射到這個(gè)點(diǎn)還剩多少光, 以及這個(gè)點(diǎn)的密度是多少。

          那么, 我們繼續(xù)觀察  的表示, 它是密度在射線上的積分后, 取反后, 取指數(shù)。直觀上也是比較好理解的, 前面經(jīng)過的點(diǎn)密度越高, 后面剩余的光越少。嚴(yán)格的推導(dǎo)在這里不再贅述, 感興趣的讀者可以查看文獻(xiàn)《Ray tracing volume densities》。

          而實(shí)際渲染過程,我們只能把射線平均分成N個(gè)小區(qū)間,每個(gè)區(qū)間隨機(jī)采樣一個(gè)點(diǎn),對(duì)采樣得到的點(diǎn)的顏色進(jìn)行某種加權(quán)求和:

          img
          img

          其中,  。這里值得注意的是, 原來積分的權(quán)重是 , 這里的求和權(quán)重是  。而  和密度  是呈正比的。具體的推導(dǎo)過程參考: 《Optical models for direct volume rendering》。

          神經(jīng)輻射場(chǎng)的兩項(xiàng)優(yōu)化點(diǎn)

          Positional encoding

          類似Transformer的做法,把坐標(biāo)和視角用更高維度的表示作為網(wǎng)絡(luò)輸入,來解決渲染圖像比較糊的問題:

          img

          Hierachical volume sampling

          因?yàn)榭臻g中的密度分布是不均勻的,射線均勻隨機(jī)采樣的話,渲染效率會(huì)比較低:射線射了半天可能經(jīng)過高密度的點(diǎn)比較少。從上面的分析我們可以看到,整個(gè)渲染過程無非是對(duì)射線上的采樣點(diǎn)的顏色進(jìn)行加權(quán)求和。其中權(quán)重  .

          我們可以用渲染公式中對(duì)顏色加權(quán)權(quán)重  作為在對(duì)應(yīng)區(qū)間采樣的概率。我們訓(xùn)練兩個(gè)輻射場(chǎng)網(wǎng)絡(luò), 一個(gè)粗糙網(wǎng)絡(luò) (Coares) 一個(gè)精細(xì)網(wǎng)絡(luò) (Fine)。粗糙網(wǎng)絡(luò)是在均勻采樣得到比較少  )的點(diǎn)進(jìn)行渲染并訓(xùn)練的網(wǎng)絡(luò), 用來輸出  進(jìn)行采樣概率估計(jì)。對(duì)  進(jìn)行歸一化, 把它看作是概率值:

          img
          img

          以  為概率分布采樣  個(gè)點(diǎn), 用  個(gè)點(diǎn)來訓(xùn)練精細(xì)網(wǎng)絡(luò)。

          Architecture

          如下圖所示, 把坐標(biāo)  映射出60維的向量, 輸入到全連接網(wǎng)絡(luò)得到密度 ; 視角  映射得到的24維向量和  的前一層輸出特征拼接在一起, 經(jīng)過兩層MLP得到RGB值。值得注意的是, 為了加強(qiáng)坐標(biāo)信信, 坐標(biāo)的信息會(huì)在網(wǎng)絡(luò)中間再輸入一次。這里的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)體現(xiàn)了, 密度和視角無關(guān), 顏色和視角相關(guān)。


          DASOU學(xué)習(xí)圈】已經(jīng)成立,旨在分享AI算法崗的最強(qiáng)八股文(覆蓋數(shù)學(xué),機(jī)器學(xué)習(xí)基礎(chǔ),機(jī)器學(xué)習(xí)模型,NLP,CV),各大廠的面經(jīng),簡(jiǎn)歷修改。同時(shí)提供一對(duì)一提問,幫你更好的入門深度學(xué)習(xí),拿到更好的算法崗offer。

          感興趣的可以戳這里了解,或者直接掃描下方二維碼加入。


          瀏覽 96
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人精品无码四虎 | 亚洲青青草视频 | 国产视频swag | 成人视频网站在线观看 | 大黑逼伊人 |