作者:Longway
來源:公眾號@3D視覺工坊
代碼地址:https://github.com/elliottwu/unsup3d項目地址:https://elliottwu.com/projects/unsup3d/測試地址:http://www.robots.ox.ac.uk/~vgg/blog/unsupervised-learning-of-probably-symmetric-deformable-3d-objects-from-images-in-the-wild.html?image=004_face&type=human
概述
作者提出了一種從原始單目圖像學習三維形變物體的方法,並且沒有額外的監督信號。這個方法是基於自編碼器的架構,將輸入的圖像轉換為深度、反射率、視角和照明信息。為了分解這些沒有監督的組件,作者使用了這樣一個事實,即在大體上很多物體都是一個對稱結構。對照明的推理允許我們去發掘潛在的對稱,盡管由於陰影等原因外表不是對稱的。實驗表明這個方法能夠從單目圖像中恢復效果非常好的人臉、貓臉和汽車的三維形狀。簡介 理解圖像的3D結構在很多計算機視覺應用中是非常關鍵的,很多深度網絡都是在2D平面上理解圖像,3D建模能夠去除自然圖像中的變化性並且提高圖像的理解。和其他一些方式類似,作者考慮從可變形物體學習3D模型(注:就是通過改變物體的形狀來生成模型,比如說mesh表示的球體,通過改變頂點的位置即可生成另外一個物體)。作者在兩個挑戰性的條件下研究這個問題,第一個是沒有2D或者3D的真值,第二個是算法必須使用無約束的單目圖像集合——特別地,不需要相同實例的多個視角圖像,這是因為在很多應用中從一張圖像是非常重要的。基於上面兩個問題,該算法能夠從一張圖像中建立該物體的三維形狀,如下圖所示:
首先用一個自編碼器將圖像分解成反射率、深度、光照和視角信息,並且對於這些信息沒有直接的監督。但是,這是一個不適定問題,為了最小化這個問題,作者注意到大多數的物體都是對稱的。由此可以通過簡單的鏡像對稱獲得一個虛擬的第二視角,如果能夠找到這兩張圖像之間的聯系,三維重建就能夠通過立體重建實現。
但是對於一個物體來說,由於各種原因,並不是完全對稱的。作者從兩個方面解決這個問題,第一個方法是利用確定的光照模型來發掘潛在的對稱性,第二個方式是增大這個模型去推理物體潛在的對稱性缺失。作者將上面的組件集成到一個端到端的學習框架中,包括置信圖,都是從原始圖像生成的。同時還發現,對稱可以通過翻轉內部表示來實現,這對於概率性的對稱推理特別有用。最后實驗表面,該方法在很多數據集上面都表現出了很好的效果,並且超過了目前最先進的技術(可直接看最后的實驗結果和視頻)。相關工作為了評估該方法對於基於圖像的三維重建文獻的貢獻,作者考慮了以下三個方面的內容:信息的使用,假設和輸出。下表顯示了相比於之前的作品,作者基於上述三個因素的貢獻:
SFM:傳統的方法例如sfm能夠從單個嚴格的場景中重建三維結構,盡管單目重建方法能夠從單個圖像中表現出很好的效果,但是需要多個視角或者視頻進行訓練。還有一個方法叫做Non-Rigid SfM (NRSfM),能夠學習重建可變形的物體,但是需要標注好的2D關鍵點作為監督。
Shape from X:其他的一些線索被選擇或者作為sfm的補充來恢復形狀,例如輪廓、紋理、對稱等。特別地,本文的方法受到從對稱和明暗情況恢復形狀的影響,前者使用鏡像圖像作為虛擬第二視角重建對稱物體,后者假設一個陰影模型,如蘭伯氏反射率,並通過利用非均勻光照重建表面。特殊種類的重建:基於圖像的方法最近被廣泛應用,不管是原始圖像還是2D關鍵點。盡管這是一個不適定問題,但是可以通過從訓練數據中學習合適的對象來解決。除了直接使用3D真值,一些作者考慮使用視頻、立體對,還有一些方法使用2D關鍵點標注或者圖像mask。對於人體或者人臉來說,有些方法直接從原始圖像學習重建通過一些預先定義的模型。這些模型是由一些特殊的軟件或者其他方法生成的,但是這對於一些動物來說比較難獲得,限制了形狀的細節部分。最近才有作者嘗試着從原始單目圖像中學習物體類別的幾何紋理,但是都有一定的缺陷或者不足,將會在后面做一個詳細的比較。因為要從3D模型恢復圖像進行比較,所以一個很重要的組件是可微渲染器。現在已經提出了很多渲染方法,這里使用了Neural 3d mesh renderer(公眾號里面有一篇文章專門講這個)。方法給定一個對象類別的圖像集合,例如人臉,我們的目標是學習一個模型Φ,將輸入的圖像分解成3D形狀、反射率、照明和視角,如下圖所示:
因為只有原始圖像可以學習,所以首先從圖像中恢復前面提到的四個因素。還有一個事實是,大部分物體都是對稱的,但是由於其它原因,對於每一個實例來說不一定是完全對稱的。為了解決這個問題,作者明確建立了非對稱光照模型,並且對於輸入圖像中的每個像素,都有一個置信值,用於解釋該像素在圖像中具有對稱對等物的概率(上圖conf)。下面將詳細介紹各部分的內容。1、照片自編碼:一張圖像可以表示成3xWxH的網格,假設圖像大部分都是以感興趣對象為中心,我們的目標是學習一個函數Φ,實現神經網絡,將輸入轉換為四個要素(d,a,w,l)。這四個要素分別事深度圖d,反照率圖像a,光方向l和視角w。然后由這四個要素分兩步重建物體,光照Λ和投影Π,如下所示:
光照功能Λ從一個規范角度生成基於深度圖d、光方向l和反射率a的物體,視點w表示規范視點和實際輸入圖像I的視點之間的轉換。然后投影函數Π基於變化的角度、規范的深度和光照功能產生的模型,生成另外一幅圖像,和輸入圖像求重建損失。
2、可能對稱的物體:利用對稱進行三維重建需要在圖像中識別對稱的物體點,這里作者假設深度和反照率在一個標准坐標系中重建,是關於一個固定的垂直面對稱的。這能夠幫助模型發現“規范視圖”,這對重建來說非常重要。為了實現上述目標,作者考慮了一個操作器沿着水平軸翻轉圖,d≈flipd和a≈flipa。雖然這些限制可以通過在學習目標中添加相應的損失函數來強制執行,但它們很難平衡。為此,作者通過獲得翻轉后重建的模型來達到相同效果,如下圖所示:
然后分別考慮兩個模型重建后生成圖像的損失,因為它們是相稱的,很容易平衡和共同訓練。更重要的是,這個方法能夠允許我們更容易的推理對稱的概率。原始圖像和生成的圖像之間的損失如下所示:
其中L1,uv是像素之間的L1損失,σ是由網絡建立的置信圖,表達了模型的任意不確定性。這種損失可以解釋為重構殘差的拉普拉斯分布的負對數似然性。優化可能性使模型自我校准,學習有意義的置信圖。更重要的是,作者從相同的圖像中,利用網絡來估計第二個置信圖。這個置信圖表示輸入圖像的哪些部分可能是不對稱的。例如第二章圖像中人臉上面的頭發不是對稱的,第二個置信圖在不滿足對稱假設的頭發區域,可指定較高的重建不確定性。總的來說,作者結合兩種重構誤差給出了學習目標:
3、成像模型:圖像是由一個相機在特定的角度拍攝得到的,如果我們用P表示一個在攝像機參考系中表示的3D點,它通過以下投影映射到像素P=(u,v,1):
這個模型假設一個透視相機的視野(FOV) θFOV。假設物體與攝像機的標稱距離約為1米。考慮到這些圖像是圍繞一個特定的物體剪裁的,假設一個相對狹窄的FOV,如θFOV=10°。深度圖d將深度值duv與標准視圖中的每個像素(u, v)關聯起來,通過倒轉相機模型,作者發現這與三維點相對應:
4、感知損失:上面提到的圖像之間的損失對小的幾何缺陷比較敏感,可能會導致模糊的重建。作者添加了一個感知損失項來緩解這個問題,在圖像編碼器的第k層預測一個表示e(I),這個特性編碼器不必接受監督任務的訓練,和上個損失函數相似,假設為高斯分布,感知損失為:
其中
表示第k層的每個像素指數uv。更加詳細的損失介紹見論文。 結果展示
面部,貓臉和汽車的重建
人臉的重建
與SOTA的效果比較
抽象貓臉的重建效果本文僅做學術分享,如有侵權,請聯系刪文。