# 三維視覺期末報告 論文名稱: Unsupervised Learning of Probably Symmetric Deformable 3D Objects from Images in the Wild [Github](https://github.com/elliottwu/unsup3d) [論文](https://arxiv.org/pdf/1911.11130.pdf) ## 這篇論文想解決甚麼問題 現有的3D重建方法,有使用監督式學習,但是在現實生活中,不可能每張圖都有ground truth,使用單視圖與非監督式學習來進行3D重建更適合應用在現實面,這篇論文展示出精確度高的人臉、貓臉及卡通汽車重建。 ## Abstract 此論文提出使用自編碼器將單視角圖像分解為深度、反射率、視點和光照等組成部分,並利用物體類別的對稱性以及對光照情況的推斷,從而無需監督地學習3D物體的可變形類別。該方法可以預測可能但不確定對稱的物體的對稱概率映射,並且在實驗中表現出比同類方法更高的準確率。 ## Intro ![](https://hackmd.io/_uploads/SkRc1kuB2.png) 這篇論文討論學習可變形物體類別的三維模型,這對於許多計算機視覺應用非常重要。作者提出了兩個挑戰: (1)不使用2D或3D的ground truth (2)僅使用單視角圖像。 為了解決這個問題,作者提出了一種自編碼器方法,該方法內部將圖像分解為反照率,深度,照明和視點,但不對任何這些因素進行直接監督。 另外,這篇論文提出了一種利用物體對稱性約束圖像分解的方法。作者聲明:對稱的物體可以通過鏡像圖像獲得第二視圖,可以通過此視圖實現三維重建。但是,在實際情況下,特定的物體實例從形狀到外觀都不是完全對稱的。為了解決這個問題,作者提出了兩種方法: (1)通過显式建模照明,利用對稱性對形狀進行推理 (2)將模型擴展到推理物體缺乏對稱性的情況,模型可以預測對稱性缺失的概率密度圖。所有元素都從原始RGB數據中進行學習,包括confidence mapping。 作者在人臉,貓臉和卡通汽車的數據集上展示了方法的有效性,並與其他方法進行了比較。 ## 先前的非監督式3D重建方法 在數量繁多的重建方法中,作者從3個面向來進行分類 (1)使用到甚麼資料(data, supervision) (2)先進行甚麼假設 (3)輸出是甚麼(goals) ![](https://hackmd.io/_uploads/BJBZ2rGU3.png) 人臉的3D重建是一種ill-posed problem,輸出圖像並不唯一,在上圖那麼多的方法中作者根據data及supervision選擇2種類似的重建方法,分別是 (1)UNSUPERVISED GENERATIVE 3D SHAPE LEARNING FROM NATURAL IMAGES [論文](https://arxiv.org/pdf/1910.00287.pdf) ![](https://hackmd.io/_uploads/rk-e4yIIh.png) (2)Lifting AutoEncoders: Unsupervised Learning of a Fully-Disentangled 3D Morphable Model Using Deep Non-Rigid Structure From Motion [論文](https://openaccess.thecvf.com/content_ICCVW_2019/papers/GMDL/Sahasrabudhe_Lifting_AutoEncoders_Unsupervised_Learning_of_a_Fully-Disentangled_3D_Morphable_Model_ICCVW_2019_paper.pdf) ![](https://hackmd.io/_uploads/By6-E1LUh.png) 三者皆屬於非監督式學習, 第1種方法使用對抗訓練來重建人臉的3D網格,但是沒有定量去評估其結果 第2種方法使用Deforming AutoEncoder (DAE) 得到Keypoint及紋理,進一步將紋理分解成albedo及光照 ### 原理 假設物體完全對稱,簡單透過圖像的鏡像可取得同一物體第2個視角的圖像 如果可取得成對鏡像物體之間的對應關係,可以透過stereo reconstruction實現3D重建 ### 現實解決方法 現實是物體不可能完全對稱,本文提出2個解決方向 1. 藉由光照的建模,作為重建形狀的額外線索 2. 模型預測一個confidence map包含每個像素具有對稱對應物的概率 ### 此法優點 1. 因為是無監督式學習,沒有收集image annotation的困難 2. 與其他無須2D/3D ground truth的重建方法相比,實現更高的重建精準度 3. 對人臉繪畫和卡通圖像也可進行重建,證明了模型的泛化效果 ## Method 目標:學習一個模型,將物體的圖像分解成3D形狀、albedo image(一個物體表面的材質漫反射部分的數值表示)、光照和viewpoint。 方法:使用自編碼器(autoencoder)學習,並且不需要對任何分解因素進行監督式學習。通過學習非監督式重建,模型可以將四個分解因素合併成為輸入圖像。 特色:利用物體的對稱性進行模型訓練,但物體的外觀總是存在不完全對稱性。為了解決這個問題,模型首先會考慮非對稱性的光照,並為每個像素估計一個置信度分數,以解釋像素在圖像中具有對稱對應物的概率。 Method主要分為四個部分,分別為:(1)photo-geometric自編碼器,(2)對稱性建模,(3)圖像生成細節,(4)感知損失。 以下針對自編碼器作詳細介紹 ### photo-geometric自編碼器 ![](https://hackmd.io/_uploads/B1hWly_H3.png) Autoencoder將輸入圖像分解為confidence map, albedo image, depth map, viewpoint, light,將depth map與albedo image 做水平翻轉,depth map與light產生shading,shading又與albedo image產生人臉的canonical view(標準視圖),最後viewpoint, depth map, canonical view經過渲染器產生重建圖像。 左邊的confidence map表示模型的任意不確定性,右邊的confidence map讓模型了解輸入圖像的哪些部分可能不對稱。 輸入圖像與重建圖像比較,並考慮confidence map,算出重建損失,利用重建損失進行訓練。重建損失的公式如下 ![](https://hackmd.io/_uploads/Sy9wwi2S2.png) ## Experiment dataset: CelebA(人臉)、貓臉使用2篇先前論文的數據集、ShapeNet(卡通汽車) 網路設置: 為了將輸入圖像分解為5個元素,depth, albedo與confidence map使用encoder-decoder網路,viewpoint及light用encoder網路 depth, albedo, viewpoint and lighting的激活函數是tanh,confidence map是softplus 限制:左右深度圖的兩個邊界像素被限制在最大深度以避免邊界問題 作者使用Adam算法對64個大小為64×64像素的輸入圖像進行批次訓練。輸出的depth和albedo的大小也是64×64。他們進行了約50,000次迭代的訓練。 ### 成果 ![](https://hackmd.io/_uploads/SyM__J883.png) ![](https://hackmd.io/_uploads/SJbYu1II2.png) 上圖是對人臉、貓臉及車子的3D重建 為了近一步測試泛化效果,將藝術作品中的人臉作為輸入圖像,如上圖所示,也有很好的重建人臉 ### 與先前方法的成果比較 ![](https://hackmd.io/_uploads/H17xt1ULh.png) 為了進行並列比較,作者裁剪了2篇論文中報告的範例,並將作者的結果與它們進行了比較。作者的方法比這兩種方法都能產生更高質量的重建結果,可以捕捉到面部表情的細節,而之前提到的第二種方法的3D形狀恢復效果較差,第一種方法則生成了不自然的形狀。值得一提的是,第一種方法使用的是unconditional GAN,它能夠從隨機噪聲生成高分辨率的3D人臉,但無法從圖像中恢復3D形狀。 ## limitation ![](https://hackmd.io/_uploads/rJOOFJLUn.png) 儘管作者的方法在許多具有挑戰性的場景中表現出了良好效果(例如極端的面部表情、抽象繪畫),但作者也觀察到了一些失敗案例,如上圖所示。 在訓練過程中,作者假設光照為一個簡單的蘭伯特模型,忽略了陰影和光澤,這導致在極端光照條件(圖a) 或高度非蘭伯特表面下的重建不準確。 >蘭伯特光照模型(不管照明分布為何,蘭伯特模型在所有表面方向上接收並發散所有入射照明) 重建混合的暗色紋理和陰影圖像(圖b)也是模型無法達成的。 在極端姿勢(側臉)下(圖8c),重建質量較低,部分原因是側視圖的重建損失信號較差。 ## Conclusion 模型基於重建損失進行訓練,光照及物體的對稱性在這個方法中為重要訊息,使用深度圖從標準視角表示3D形狀 目前模型適用簡單凸形狀和自然標準視角的物體(如人臉) ## 程式執行結果 * 人臉 輸入: ![](https://hackmd.io/_uploads/HJsKMADrh.png) 三維重建: ![](https://hackmd.io/_uploads/H14Tz0DBn.png =450x450) ![](https://hackmd.io/_uploads/S1UxX0DB3.png =450x450) * 動物臉(貓) 輸入: ![](https://hackmd.io/_uploads/HJy7mRvSn.png) 三維重建: ![](https://hackmd.io/_uploads/H1utjAPHn.png =450x450) ![](https://hackmd.io/_uploads/HJajsRPH3.png =450x450) * 卡通動物臉(貓) 輸入: ![](https://hackmd.io/_uploads/BypuvCPrh.png) 三維重建: ![](https://hackmd.io/_uploads/Skl1h0PH3.png =450x450) ![](https://hackmd.io/_uploads/HJGx3RDBn.png =450x450) * 卡通汽車 輸入: ![](https://hackmd.io/_uploads/Hk3KARDHn.png) 三維重建: ![](https://hackmd.io/_uploads/SkIRAAvrh.png =450x450) ![](https://hackmd.io/_uploads/HkHk1ydB2.png =450x450) ## 新增功能 新增可以使用webcam當作圖片輸入的功能: webcam輸入:![](https://hackmd.io/_uploads/Bkt5g3ur2.png) 重建結果: ![](https://hackmd.io/_uploads/B1ipl3OHh.png =450x450) ![](https://hackmd.io/_uploads/Sk0Cl2dr3.png =450x450) ## 組員分工 宋祐安(M113010198):書面報告撰寫、口頭報告ppt製作。 邱德倫(M113010070):程式碼運行測試、程式功能新增、口頭報告。