文章目錄
- 主要解決什么問題?
- 結構設計以及為什么有效果?
- 個人想法。
主要解決什么問題?
本文主要想要解決的問題是 如何使用uncalibrated的照片來進行Nerf重建。雖然說現在已經有了一些方式可以對相機位姿進行估計和優化,但是他們限制很多,且必須要有一個合理的初始化區間。在優化未知位姿的時候,對正面的場景也只能在short camera trajectories的優化。本文提出的方式,首先是不需要一個大致的相機位姿的初始化,只需要有一個大致的相機位姿分布,且可以在較大的軌跡內進行優化。
結構設計以及為什么有效果?
文中使用的結合了GAN結構的Fframework。一共分成了兩個階段,其實就是coarse-to-fine的樣子,第一個階段大致的輸出一個粗糙的nerf estimation 以及 相機相機位姿,然后第二個階段開始聯合優化 (nerf estimation和相機的位姿。)
具體是怎么做的呢,又為什么會這么要這么做呢?
首先生成器的輸入是一個相機pose,這個Pose是從事先定義好的分布中采樣得來的。那么生成器會根據提供的相機位姿,去生成假的照片,然后對這些假的照片進行渲染(這里就就和一般的nerf一樣)。假照片會被打散成patch然后拿去給判別器識別。這里文中提到了一個 動態采樣的概念, 簡單來說是 圖像的大小不變,但是他的scale和offset是動態變化的。我估計使用動態采樣的目的是為了讓判別器更加的魯棒。上述的結構的訓練就是和一般的GAN一樣。這只能讓模型學習一個大概的Nerf和相機位姿。
為了要更加精確的相機位姿,文中還訓練了一個inversion network,那么他的主要目的是從原始圖像中采樣一些image patches然后重新映射會相機位姿空間。就是說要根據相片去估計他們的位姿。這個過程和之前的過程是反著的,所以我猜這也是為什么叫inversion的原因。所以這個inversion 網絡的輸入數據是原始圖像的一些samples,輸出的結果是對應的相機位姿。通過這個方法可以學習到真照片個和相機位姿之間的關系。而且inversion 網絡是用自監督的形式來進行訓練的。
前面說的是A階段,B 階段主要是一個nerf表示和相機位姿一個聯合優化,主要是優化photometric loss。
關于訓練方式,這篇文章也有一些創新,比如regularized learning strategy, 他主要是通過階段A和階段B的交替進行來同時提高nerf 預測和 位姿預測的準確性。
個人想法。
讀完首先給我的感覺是這個網絡設計不是特別好訓練,而且GAN缺陷可能會導致這個方式沒法用到特別大的數據上。網絡結果設計還是很巧妙,個人認為主要是以工程設計的創新為主。