腦補出新視角,一個統一的NeRF程式庫框架已開源
假設一個物體你看了幾張照片後,能想像出其它角度看上去的感覺嗎?人是可以做到的,我們能自行推測出沒見過的部分,或者說沒見過的角度是什麼樣的。模型其實也有辦法做到,給定一些場景圖片,它也能腦補出一些未看過角度的影像。
渲染新視角,近來最引人注目的就是ECCV 2020 最佳論文榮譽提名的NeRF (Neural Radiance Field)了,它不需要以前複雜的三維重建過程,只需要幾張照片及拍攝此照片時相機的位置,就能合成新視角下的影像。 NeRF 驚豔的效果吸引了許多視覺方面的研究者,後續做出了一系列優秀的工作。
但困難的地方在於,這樣的模型建構起來比較複雜,目前也沒有一個統一的程式碼庫框架來實現它們,這無疑會阻礙該領域的進一步探索與發展。為此,OpenXRLab 渲染生成平台建構出高度模組化的演算法庫 XRNeRF,幫助快速實作 NeRF 類別模型的建置、訓練與推理。
#開源位址:https://github.com/openxrlab/xrnerf
什麼是NeRF 類模型
NeRF 類任務,一般指的是在已知視角下捕獲場景信息, 包括拍攝到的圖像,以及每張圖像對應的內參外參,從而合成新視角下的影像。借助 NeRF 論文中的圖,我們能很清楚地理解這種任務。
選自 arxiv: 2003.08934。
NeRF 在收集影像時會同時收集 5 維場景訊息,即一張影像對應一個三維座標值及另外兩個光線輻射角度。這樣的場景會透過多層感知機建模為Radiance Field,也就是說該多層感知機將輸入三維座標點並映射為該點的Density 和RGB 顏色,從而利用體素渲染(Volume Rendering)將Radiance Field 渲染為照片級的虛擬視角。
如上圖所示,透過一些圖片建構 Radiance Field 後,就能產生新視角下架子鼓的圖像。因為NeRF 並不需要明確地進行三維重建就能得到想要的新視角,所以它提供了一種基於深度學習的三維隱式表徵範式,僅使用2D 的posed images 資料就能訓練出包含3D 場景資訊的深度神經網路。
自NeRF 之後,類NeRF 的模型就層出不窮:Mip-NeRF 利用椎體而不是射線從而優化精細結構的生成效果;KiloNeRF 採用數以千計的微型多層感知機而不是單一大型多層感知機,降低計算量,實現即時渲染能力;此外AniNeRF 和Neural Body 等模型從簡短視訊幀中學習人體視角變換,得到很好的視角合成和驅動效果;此外,GN 'R 模型利用稀疏視角圖片與幾何先驗,實現不同ID 間可泛化的人體渲染。
GN'R 提出的可泛化人體隱式場表徵,實現的單模型人體渲染效果
為NeRF 裝上輪子
儘管目前NeRF 類別演算法在研究領域具有非常高的熱度,但是畢竟屬於比較新的方法,所以模型實作上肯定是要麻煩一些的。如果是用 PyTorch 或 TensorFlow 這樣常規的框架,那就先得找個相近的 NeRF 模型,再在其基礎上修改。
這樣做會帶來幾個明顯的問題,首先即我們得完全讀懂一份實現,才能在其基礎上改成我們想要的樣子,這一部分其實工作量還是不小的;其次因為不同論文的官方實現並不統一,對比不同NeRF 類模型源碼時就會消耗比較大的精力,畢竟誰也不知道某篇論文的訓練過程中是不是有一些新穎的Trick;最後如果沒有一套統一的程式碼,驗證新模型的新想法無疑會慢很多。
為了解決眾多問題,OpenXRLab 為 NeRF 類別模型建構出一個統一的、高度模組化的程式碼庫框架 XRNeRF。
XRNeRF 實現了眾多 NeRF 模型,上手更為容易,可輕鬆復現對應論文的實驗結果。 XRNeRF 將這些模型分成 datasets、mlp、network、embedder 和 render 這 5 個模組。 XRNeRF 的易用性在於,只需要透過 config 機制即能組裝不同模組而構成完整模型,極為簡單易用,同時也大幅增加了復用性。
在保證易用性的基礎上,同時還需要靈活性,XRNeRF 透過另一套註冊器機制,能客製化不同模組的具體特性或實現,從而使XRNeRF解耦性更強,程式碼也更易於理解。
此外,XRNeRF 所有實現的演算法都是採用Pipeline 的模式,數據上的Pipeline 讀取原始數據,經過一系列處理後獲得模型的輸入,模型的Pipeline 則對輸入的資料進行處理,獲得對應的輸出。這樣的 Pipeline 將 config 機制與註冊機機制串起來,組成了完整的架構。
XRNeRF 實現了眾多核心 NeRF 模型,並透過如上三大機制將它們都串起來,建構出既易用又靈活的高度模組化程式碼框架。
XRNeRF 的核心特性
XRNeRF 是基於 Pytorch 框架的 NeRF 類別 演算法庫,目前已經復現了 scene 和 body 兩個方向的 8 篇經典論文。相較於直接建模,XRNeRF 在搭模型效率、成本和彈性上都有顯著提升,而且有完善的使用文件、範例和 Issue 回饋機制,概括來說,XRNeRF 的核心特性大概有以下 5 點。
1. 實現了眾多主流和核心的演算法
例如開山之作NeRF,CVPR 2021 Best Paper Candidate (NeuralBody)、ICCV 2021 Best Paper Honorable Mention (Mip-NeRF) 與Siggraph 2022 Best Paper (Instant NGP)。
在實現了這些模型的基礎上,XRNeRF 也能保證復現效果和論文中的基本一致。如下圖所示,從客觀的 PSNR 和 SSIM 指標來看,其能很好地重現原版程式碼的效果。
#2.模組化設計
XRNeRF 將整個程式碼框架進行了模組化設計,最大程度地提升了程式碼的可重複使用性,以便研究者對現有程式碼進行閱讀和修改。透過分析現有的NeRF 類別模型方法,XRNeRF 設計的具體模組流程如下圖所示:
模組化的優點在於,假設我們需要修改資料格式,那隻需要修改Dataset 模組下的邏輯,假設我們需要修改渲染影像的邏輯,那就只需要修改Render model 模組。
3. 標準資料處理管線
#針對NeRF 類別演算法資料預處理較為複雜且多樣的問題,XRNeRF 提供了一套標準資料處理流程。其由多個資料處理操作序列得到,僅需修改 config 設定檔中的 data pipeline 部分,即可完成資料處理流暢搭建。
NeRF 設定資料流程部分。
XRNeRF 中已經實作了多個資料集所需的資料處理op,只需要將這些op 在config 中依照順序定義好,即可完成資料處理流程的搭建。如果後續有新的 op 需要加入,也只需要在對應資料夾中完成新 op 的實現,即可一行程式碼加入整個資料處理流程當中。
4. 模組化網路建構方式
XRNeRF 中的模型主要由embedder、MLP 和render model組成,並透過network 連接,這幾者之間可以互相解耦,由此可以實現不同演算法之間不同模組的替換。
其中embedder 輸入點的位置和視角,輸出embedded 特徵資料;MLP 使用embedder 的輸出作為輸入,輸出取樣點的Density 和RGB 顏色;render model 則輸入MLP 的輸出結果,沿著射線上的點進行積分等操作,從而獲得影像上一個像素點的RGB 值。這三大模組再透過標準的 network 模組連接就構成了完整的模型。
自訂 network 模組的程式碼結構。
5. 良好的復現效果
#支援最快60 秒訓練網絡,30幀每秒即時渲染,支援高清晰度、抗鋸齒、多尺度場景及人體影像渲染。無論是從客觀的 PSNR 和 SSIM 指標或主觀的 demo 展示效果來看,XRNeRF 都能很好地重現原版程式碼的效果。
XRNeRF 的使用
XRNeRF 框架看起來有非常好的特性,其使用起來也很簡單便捷。比如說安裝過程,XRNeRF 依賴的開發環境還是比較多的,PyTorch、CUDA 環境、視覺方面的處理庫等等。但是 XRNeRF 提供了 Docker 環境,透過 DockerFile 能直接建構鏡像檔。
我們試了一下,相較於一步步配置各種運行環境與包,只需docker build 一行命令的配置方式顯然要方便太多了。另外建置 Docker 映像檔時,DockerFile 裡面配置了國內映像位址,所以速度還是很快的,基本上不用擔心網路問題。
在建置完映像,並從該映像啟動容器後,我們就能將專案程式碼,以及資料都透過 docker cp 指令傳到容器內。不過也可以直接在建立容器時透過 -v 參數直接將項目位址對應到容器內部。不過這裡要注意的是,資料集是需要放到確定位置的(否則需要改 config 檔案),例如 XRNeRF 專案下的 data 資料夾。
一般而言,下載完資料後,大概資料夾結構如下圖所示:
現在,環境、資料與程式碼三者都準備好了,只需簡短的一行程式碼,就能執行NeFR 模型的訓練與驗證:
python run_nerf.py --config configs/nerf/nerf_blender_base01.py --dataname lego
其中 dataname 表示資料目錄下的特定資料集,config 表示模型的具體設定檔。因為 XRNeRF 採用的是高度模組化的設計,其 config 使用字典來構建,雖然乍一看可能會覺得有一點點繁瑣,但實際理解了 XRNeRF 的設計結構之後,閱讀起來就非常簡單了。
主觀看上去,config 設定檔(nerf_blender_base01.py)包含了訓練模型所有必要的信息,優化器、分散式策略、模型架構、資料預處理與迭代等等,甚至許多影像處理相關的配置也都包含在內。總結來說,除了具體的程式碼實現,config 設定檔描述了整個訓練、推理過程。
描述模型結構部分的 Config 配置。
總的體驗起來,XRNeRF 從基礎的運行環境搭建到最終執行訓練任務都是比較流暢的。況且透過配置 config 文件,或是實現具體的 OP,同樣也能獲得非常高的建模彈性。相較於直接使用深度學習框架建模,XRNeRF 無疑將減少大量的開發工作,研究者或演算法工程師也能花更多時間在模型或任務創新上。
NeRF 類別模型目前仍是電腦視覺領域的研究重點,XRNeRF 這樣統一的程式碼庫,就像HuggingFace 的Transformer 庫一樣能聚集越來越多的優秀研究工作,聚集越來越多的新程式碼與新想法。反過來 XRNeRF 同樣也將大大加快研究者對 NeRF 類模型探索的腳步,便於將這一新領域應用到新場景與新任務中,NeRF 的潛力也將由此加速展開。
以上是腦補出新視角,一個統一的NeRF程式庫框架已開源的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

想像一下,一個人工智慧模型,不僅擁有超越傳統運算的能力,還能以更低的成本實現更有效率的效能。這不是科幻,DeepSeek-V2[1],全球最強開源MoE模型來了。 DeepSeek-V2是一個強大的專家混合(MoE)語言模型,具有訓練經濟、推理高效的特點。它由236B個參數組成,其中21B個參數用於啟動每個標記。與DeepSeek67B相比,DeepSeek-V2效能更強,同時節省了42.5%的訓練成本,減少了93.3%的KV緩存,最大生成吞吐量提高到5.76倍。 DeepSeek是一家探索通用人工智

AI,的確正在改變數學。最近,一直十分關注這個議題的陶哲軒,轉發了最近一期的《美國數學學會通報》(BulletinoftheAmericanMathematicalSociety)。圍繞著「機器會改變數學嗎?」這個話題,許多數學家發表了自己的觀點,全程火花四射,內容硬核,精彩紛呈。作者陣容強大,包括菲爾茲獎得主AkshayVenkatesh、華裔數學家鄭樂雋、紐大電腦科學家ErnestDavis等多位業界知名學者。 AI的世界已經發生了天翻地覆的變化,要知道,其中許多文章是在一年前提交的,而在這一

谷歌力推的JAX在最近的基準測試中表現已經超過Pytorch和TensorFlow,7項指標排名第一。而且測試並不是JAX性能表現最好的TPU上完成的。雖然現在在開發者中,Pytorch依然比Tensorflow更受歡迎。但未來,也許有更多的大型模型會基於JAX平台進行訓練和運行。模型最近,Keras團隊為三個後端(TensorFlow、JAX、PyTorch)與原生PyTorch實作以及搭配TensorFlow的Keras2進行了基準測試。首先,他們為生成式和非生成式人工智慧任務選擇了一組主流

波士頓動力Atlas,正式進入電動機器人時代!昨天,液壓Atlas剛「含淚」退出歷史舞台,今天波士頓動力就宣布:電動Atlas上崗。看來,在商用人形機器人領域,波士頓動力是下定決心要跟特斯拉硬剛一把了。新影片放出後,短短十幾小時內,就已經有一百多萬觀看。舊人離去,新角色登場,這是歷史的必然。毫無疑問,今年是人形機器人的爆發年。網友銳評:機器人的進步,讓今年看起來像人類的開幕式動作、自由度遠超人類,但這真不是恐怖片?影片一開始,Atlas平靜地躺在地上,看起來應該是仰面朝天。接下來,讓人驚掉下巴

本月初,來自MIT等機構的研究者提出了一種非常有潛力的MLP替代方法—KAN。 KAN在準確性和可解釋性方面表現優於MLP。而且它能以非常少的參數量勝過以更大參數量運行的MLP。例如,作者表示,他們用KAN以更小的網路和更高的自動化程度重現了DeepMind的結果。具體來說,DeepMind的MLP有大約300,000個參數,而KAN只有約200個參數。 KAN與MLP一樣具有強大的數學基礎,MLP基於通用逼近定理,而KAN基於Kolmogorov-Arnold表示定理。如下圖所示,KAN在邊上具

特斯拉機器人Optimus最新影片出爐,已經可以在工廠裡打工了。正常速度下,它分揀電池(特斯拉的4680電池)是這樣的:官方還放出了20倍速下的樣子——在小小的「工位」上,揀啊揀啊揀:這次放出的影片亮點之一在於Optimus在廠子裡完成這項工作,是完全自主的,全程沒有人為的干預。而且在Optimus的視角之下,它還可以把放歪了的電池重新撿起來放置,主打一個自動糾錯:對於Optimus的手,英偉達科學家JimFan給出了高度的評價:Optimus的手是全球五指機器人裡最靈巧的之一。它的手不僅有觸覺

目標偵測在自動駕駛系統當中是一個比較成熟的問題,其中行人偵測是最早得以部署演算法之一。在多數論文當中已經進行了非常全面的研究。然而,利用魚眼相機進行環視的距離感知相對來說研究較少。由於徑向畸變大,標準的邊界框表示在魚眼相機當中很難實施。為了緩解上述描述,我們探索了擴展邊界框、橢圓、通用多邊形設計為極座標/角度表示,並定義一個實例分割mIOU度量來分析這些表示。所提出的具有多邊形形狀的模型fisheyeDetNet優於其他模型,並同時在用於自動駕駛的Valeo魚眼相機資料集上實現了49.5%的mAP

寫在前面項目連結:https://nianticlabs.github.io/mickey/給定兩張圖片,可以透過建立圖片之間的對應關係來估計它們之間的相機姿態。通常,這些對應關係是二維到二維的,而我們估計的姿態在尺度上是不確定的。一些應用,例如隨時隨地實現即時增強現實,需要尺度度量的姿態估計,因此它們依賴外部的深度估計器來恢復尺度。本文提出了MicKey,這是一個關鍵點匹配流程,能夠夠預測三維相機空間中的度量對應關係。透過學習跨影像的三維座標匹配,我們能夠在沒有深度測試的情況下推斷度量相對
