# 三維視覺期末報告
論文名稱:
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

這篇論文討論學習可變形物體類別的三維模型,這對於許多計算機視覺應用非常重要。作者提出了兩個挑戰:
(1)不使用2D或3D的ground truth
(2)僅使用單視角圖像。
為了解決這個問題,作者提出了一種自編碼器方法,該方法內部將圖像分解為反照率,深度,照明和視點,但不對任何這些因素進行直接監督。
另外,這篇論文提出了一種利用物體對稱性約束圖像分解的方法。作者聲明:對稱的物體可以通過鏡像圖像獲得第二視圖,可以通過此視圖實現三維重建。但是,在實際情況下,特定的物體實例從形狀到外觀都不是完全對稱的。為了解決這個問題,作者提出了兩種方法:
(1)通過显式建模照明,利用對稱性對形狀進行推理
(2)將模型擴展到推理物體缺乏對稱性的情況,模型可以預測對稱性缺失的概率密度圖。所有元素都從原始RGB數據中進行學習,包括confidence mapping。
作者在人臉,貓臉和卡通汽車的數據集上展示了方法的有效性,並與其他方法進行了比較。
## 先前的非監督式3D重建方法
在數量繁多的重建方法中,作者從3個面向來進行分類
(1)使用到甚麼資料(data, supervision)
(2)先進行甚麼假設
(3)輸出是甚麼(goals)

人臉的3D重建是一種ill-posed problem,輸出圖像並不唯一,在上圖那麼多的方法中作者根據data及supervision選擇2種類似的重建方法,分別是
(1)UNSUPERVISED GENERATIVE 3D SHAPE LEARNING FROM NATURAL IMAGES
[論文](https://arxiv.org/pdf/1910.00287.pdf)

(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)

三者皆屬於非監督式學習,
第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自編碼器

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,算出重建損失,利用重建損失進行訓練。重建損失的公式如下

## 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次迭代的訓練。
### 成果


上圖是對人臉、貓臉及車子的3D重建
為了近一步測試泛化效果,將藝術作品中的人臉作為輸入圖像,如上圖所示,也有很好的重建人臉
### 與先前方法的成果比較

為了進行並列比較,作者裁剪了2篇論文中報告的範例,並將作者的結果與它們進行了比較。作者的方法比這兩種方法都能產生更高質量的重建結果,可以捕捉到面部表情的細節,而之前提到的第二種方法的3D形狀恢復效果較差,第一種方法則生成了不自然的形狀。值得一提的是,第一種方法使用的是unconditional GAN,它能夠從隨機噪聲生成高分辨率的3D人臉,但無法從圖像中恢復3D形狀。
## limitation

儘管作者的方法在許多具有挑戰性的場景中表現出了良好效果(例如極端的面部表情、抽象繪畫),但作者也觀察到了一些失敗案例,如上圖所示。
在訓練過程中,作者假設光照為一個簡單的蘭伯特模型,忽略了陰影和光澤,這導致在極端光照條件(圖a) 或高度非蘭伯特表面下的重建不準確。
>蘭伯特光照模型(不管照明分布為何,蘭伯特模型在所有表面方向上接收並發散所有入射照明)
重建混合的暗色紋理和陰影圖像(圖b)也是模型無法達成的。
在極端姿勢(側臉)下(圖8c),重建質量較低,部分原因是側視圖的重建損失信號較差。
## Conclusion
模型基於重建損失進行訓練,光照及物體的對稱性在這個方法中為重要訊息,使用深度圖從標準視角表示3D形狀
目前模型適用簡單凸形狀和自然標準視角的物體(如人臉)
## 程式執行結果
* 人臉
輸入:

三維重建:


* 動物臉(貓)
輸入:

三維重建:


* 卡通動物臉(貓)
輸入:

三維重建:


* 卡通汽車
輸入:

三維重建:


## 新增功能
新增可以使用webcam當作圖片輸入的功能:
webcam輸入:
重建結果:


## 組員分工
宋祐安(M113010198):書面報告撰寫、口頭報告ppt製作。
邱德倫(M113010070):程式碼運行測試、程式功能新增、口頭報告。