# **HoloGAN: Unsupervised Learning of 3D Representations From Natural Images** --- # **Abstract** 大部分生成模型通常只關注2D平面上的像素,而沒有考慮到物體在真實的三維空間中的形狀和位置。因此,當需要處理複雜的3D任務,例如合成新的視角時,這些模型往往會生成模糊或有瑕疵的圖像。 相比之下,HoloGAN則是從另一個角度出發,它學習物體在3D世界中表示的方式,並以逼真的方式展示出來。這意味著它能夠考慮到物體的真實形狀和位置,生成更精確、更真實的圖像。不僅如此,通過控制這些三維特徵,我們還能夠生成具有不同姿態和位置的圖像。 通過學習圖像的3D特徵,HoloGAN能夠理解三維姿態和身份之間的關係,並將其進一步分解為形狀和外觀。這使得它能夠生成視覺質量相似或更高的圖像,相比其他生成模型更為出色。 <center> ![](https://i.imgur.com/rfEalcW.gif) </center> --- # **1. Introduction** 1. GAN 在生成高品質圖像以及在圖像轉換和編輯等方面的有很好的進展。然而,由於GAN無法對生成圖像中的屬性進行明確控制,因此在其應用上還存在一定的限制。同時,有條件的GAN需要在訓練期間使用標籤,但標籤不總是可用。 2. 如Fig1所示,ConditionGAN的pose需要有標籤,Discriminator才能存取資訊。而HoloGAN不需要有pose標籤,Discriminator不需要存取任何pose資訊,讓應用可以更靈活。 ***Fig1:*** <center> ![](https://i.imgur.com/uqRIpGe.png) </center> 3. HoloGAN是個無監督生成圖像模型,它可以學習到既具有物體在3D世界中表示的方式,同時也具有語義表達能力,可以直接從未標記的自然圖像中學習而來,而不需要標記物體的姿勢、3D形狀、多個視角或幾何經驗等,並可以在生成圖像模型中實現視角、形狀和外觀的直接操縱。 4. HoloGAN同時使用3D和2D特徵生成圖像。看到Fig1,首先透過conv3D學習3D表示,然後透過3D translation將其轉換到目標位置,再用Project unit投影到2D特徵,並渲染生成最終圖像。 5. 與其他使用 Handcrafted differentiable renderers 不同,HoloGAN使用投影單元來學習渲染過程,使模型能夠掌握圖像的生成過程,不用依賴先前的幾何經驗。 * Handcrafted differentiable renderers是基於先前的3D幾何建模知識以及一些經驗法則而手工製作的。這些渲染器可以將3D場景轉換為2D圖像,並且可以在GAN中使用以進行生成圖像。 6. 為了生成同一場景的新視角,我們使用**剛體變換**的方法,將已經學習到的特徵應用到同一場景的圖片上,從而生成新的圖片。同時,我們利用神經網路來進行圖像的渲染,讓生成的圖像看起來更加真實。 * **剛體變換**:對物體進行平移、旋轉和縮放等操作 7. 相比於在**高維潛在向量空間**中執行3D變換,直接對3D特徵進行3D剛體變換後再進行視覺化可以得到更加清晰的結果,因為在高維空間中會因維度增加導致數據之間的距離變大,導致進行變換會造成數據分佈的稀疏性,所以HoloGAN的方法產生的結果更加清晰。 * **高維潛在向量**:GAN模型的潛在空間,其中每個點都代表著一個特定的圖像或特徵的向量表示。 8. 總結: * HoloGAN是一種新穎的架構,結合對3D世界的嘗試理解和預設偏好與生成模型互相結合,從圖像中學習3D物體中具有姿態,形狀和外觀的表示。 * 第一個允許視角操作的uncondition GAN,並且不需要label就可以學習出不同的姿態,形狀和外觀。 --- # **2. Related work** **2.1 Generative adversarial networks(GAN)** 1. GAN(生成對抗網路)可以學習將隨機向量映射到看起來像真實數據的樣子,讓判別器網路無法區分真實和虛擬數據。目前對 GAN 架構的研究主要集中在提高訓練穩定性和生成圖像的視覺真實度,像是multi-resolution GANs和self-attention gentors。 2. 然而,現今的 GAN 架構很少實現以無監督分離方式學習並允許對生成圖像的屬性進行控制。 3. StyleGAN透過在每個卷積層中注入隨機噪聲並調整圖像的“風格”,可以將圖像中的細微變化(例如頭髮、雀斑等)與高層次特徵(例如姿勢、身份等)分離開來。不過,這種方法並不能直接控制圖像的細節和高層次特徵,缺乏對這些元素的顯式控制。因此,HoloGAN的作者希望可以對姿態、形狀和外觀分離開來,並直接對這些元素操控。 **2.2 3D-aware neural image synthesis** 1. 最近在neural image synthesis(用神經網路來生成圖像)和novel-view synthesis(從現有的圖像產生新的視角)方面的工作已經發現成功地提高了三維感知網絡生成的圖像的保真度。使用幾何形狀作為模板的工作極大地提高了圖像的保真度,但不能很好地推廣到無法用模板描述的複雜場景或形狀變化。 2. 作者提了不同的方法和技術用於進行3D形狀的可視化和圖像合成。其中包括RenderNet、learn 3D embedding、visual object networks(VONs)等。這些方法各有不同的特點和限制,例如RenderNet在訓練過程中需要3D形狀和相應的渲染圖像,而learn 3D embedding可以生成新視圖但需要多個視圖和姿勢信息作為輸入,而VONs需要提供明確的3D形狀、姿態或深度信息進行訓練,只適用於簡單的背景下的單目標圖像。 3. 跟HoloGAN相似的方法為Pix2Scene,都是用非監督的方式從圖像中學習3D場景表示。但是,Pix2Scene使用的渲染器需額外先定義好參數(材質、光照、相機參數等),所以只能處理簡單的合成圖像。相比之下,HoloGAN學習從頭開始進行渲染,因此可以處理更複雜的自然圖像。此外,Pix2Scene使用了surfels表示方法,而HoloGAN則使用了深度體素 **2.3 Disentangled representation learning** 1. 分離式表示學習(disentangled representation learning)是學習一種分解表示方法,當對其中一個因素的更改時,僅影響生成圖像中對應的元素,並且對其他因素保持不變。大部分分離式學習的方法都是利用資料集提供的標籤或多個圖像、多個視角的監督資訊來進行學習。 2. 非監督式分離式學習的方法β-VAE和InfoGAN因為無法控制學習哪些因素,所以不能保證所學的分離因素在語義上有意義。 3. 此外,β-VAE的設計存在權衡問題。它在優化生成圖像質量和分離度之間需要做出折衷。在某些情況下,它可能會產生低質量的圖像,而分離度會更好。在另一些情況下,它可能會產生高質量的圖像,但是分離度會受到影響。 4. 相比之下,HoloGAN通過重新設計生成器網絡的架構,成功地分離了姿態、形狀和外觀,並提供了明確的姿態控制。 --- # **3. Method** 1. HoloGAN將對3D世界的**強烈歸納偏差**放入GAN來擴展傳統的Uncondition GAN(傳統的需事先標記label),使模型更好學習3D特徵,並學習3D的表示方式來產生圖片去欺騙Discriminator。 * **強烈歸納偏差**: 當我們觀察一個物體時,我們會自然地認知到它的3D形狀,包括物體的大小、形狀、位置和姿勢等等,這些信息對於辨識該物體非常重要。HoloGAN 的架構將這些對三維世界的先驗知識整合到生成器模型中,從而使生成器能夠更好地學習3D物體的表示,進而生成逼真的2D圖像。 2. HoloGAN透過conv3d學習到3D的特徵,並直接對這些特徵進行3D剛體變換,可以實現對同一場景的不同視角生成。其他GAN是通過將噪聲向量z直接映射到2D特徵來生成圖像的。 * 以下圖的DCGAN(Deep Convolutional GAN)為例,生成器網絡接受一個噪聲向量z,並透過一系列的2D卷積層生成一個2D圖像。過程中,生成器網絡並不知道這些特徵在3D空間中的具體含義。 ![](https://i.imgur.com/Oo6qily.png) 3. 下圖說明了HoloGAN在生成器的架構。 首先透過3D convolution去學習3D表示,再用3D transform把學習出的3D表示轉換成特定姿勢,利用投影單元進行投影和可視化計算,最後使用2D卷積為每個像素計算陰影顏色值,生成最終圖像。 ![](https://i.imgur.com/XTFHUcp.png) 4. 作者使用**隨機姿態擾動**來幫助生成器網絡學習一種解耦表徵,這種表徵既適用於三維變換,也適用於生成可以欺騙判別器的圖像。此外,作者假設每個圖像都有一個對應的全局姿態(pose),並證明這個假設適用於多目標的圖像,並使用顯式rigid-body轉換的新視圖合成已證明能產生更清晰的圖像與更少的假影。 * **隨機姿態擾動**:指的是在訓練期間,從一個均勻分布中採樣隨機姿態,並使用這些姿態轉換三維特徵,然後將它們渲染成圖像的過程。 **3.1 Learning 3D representation** 1. HoloGAN使用一個已學習的常數張量來生成3D表示,而不是像其他GAN一樣直接將隨機噪聲向量z映射到2D圖像。相反,z被當作“風格”控制器,並在每個卷積之後使用多層感知器(MLP)f:z→γ(z),σ(z)將其映射為自適應實例規範化(AdaIN)的仿射參數。 AdaIN的定義如下圖: <center> ![](https://i.imgur.com/Y7ezae8.png) </center> 2. HoloGAN使用一個學習到的常數張量作為模板,然後通過AdaIN,將不同卷積層的特徵與訓練圖像的特徵的平均值和標準差進行匹配,從而生成圖像。可以被看作是將每一層通過模板進行變換來生成圖像,使用AdaIN來匹配不同層級上的特徵,進而達到生成具有不同風格的圖像的目的。 3. HoloGAN從StyleGAN中繼承了style-based的策略,但有兩個重要的不同之處: * HoloGAN從一個4D的tensor去學習3D的特徵,再投影到2維。而StyleGAN只學習2D的特徵,會導致生成的圖像在形狀上可能不太一致或不合理。 * HoloGAN在訓練時結合 3D 特徵和剛體變換來學習一個解耦表示,並且可以對新的未見過的姿勢進行旋轉和平移。而 StyleGAN 則在每個卷積層中注入獨立的隨機噪聲,可以生成具有高頻細節的高質量圖像,例如頭髮和眼睛的細節,所以StyleGAN的表示是更加細緻。 **3.2 Learning with view-dependent mappings** 1. 除了採用3D卷積來學習3D特徵外,在訓練過程中,也透過將這些學習到的特徵轉換到隨機的姿勢中,再投影到2D圖像中,引入更多有關3D世界的偏見。這種隨機姿勢變換對於保證HoloGAN學習到一個可以從所有可能的視角渲染的解耦3D表示非常重要。 2. **Rigid-body transformation**: 作者使用了一個虛擬的針孔相機來將3D特徵投影到2D平面上,相機位於與3D特徵對齊且相機的位置和方向為固定的。旋轉變換是通過繞著全局y軸(方向為向上)和x軸(方向為從右到左)進行的。除了旋轉變換外,還有縮放和三線性重採樣(對3維空間的votex進行插值)。 3. **Projection unit**: HoloGAN 針對從 2D 圖像中學習有意義的 3D 表示,使用了可微分的投影單元,推斷出不同視角下的幾何形狀來解決遮蔽問題。Projection unit由兩個模塊組成: * 把通道維度與深度維度連接在一起,將4D張量(W×H×D×C)降維為3D張量(W×H×(D·C)),可以讓我們在保持圖像信息的同時,更好地處理和學習3D信息。 * 一個帶有非線性激活函數的 MLP,用於學習遮蔽的特徵,提高模型的表達能力和學習能力。 **3.3 Loss function** **3.3.1 Identity regulariser** : 1. 為了生成更高分辨率(128x128像素)的圖像,HoloGAN增加了一個identity正則化器*Lidentity*,以確保由生成的圖像中重建的向量與生成器G中使用的潛在向量z匹配,鼓勵HoloGAN只使用z向量就可以表示物體的種類和外觀且不會隨著pose改變而改變,有助於模型學習數據集中所有姿勢的完整變化。 2. 我們引入一個編碼器網絡F,它共享discriminator的大部分卷積層,但使用額外的全連接層來預測重建的潛在向量,來實現Identity regulariser。 <center> ![](https://i.imgur.com/977hKp7.png) </center> **3.3.2 Style discriminator** : 1. 我們的生成器被設計成能夠在不同層次上匹配訓練圖像的“風格”,這有效地控制了不同尺度上的圖像特徵。因此,鑑別器除了將圖像分類為真實或虛假之外,我們還提出了Style discriminator,在特徵層面上執行相同的任務。 2. Style discriminator主要目的是將每一層次的特徵圖像的均值µ(Φl)和標準差σ(Φl)進行分類,讓風格鑑別器可以學習不同層次之間的差異,並幫助生成器產生更具多樣性和真實感的圖像。另外,風格鑑別器還有助於防止模式崩潰(讓生成器可以產生多樣化的風格),並且能夠實現更長時間的訓練。 3. 下圖為style loss的計算方式。對於每一層次 l,使用Style discriminator對圖像的均值和標準差進行分類,得到風格鑑別器的輸出![](https://i.imgur.com/ISmW2gi.png),再針對生成器的圖像 G(z),計算style loss ![](https://i.imgur.com/AHfHZl9.png),其中 z 為噪聲向量。 <center> ![](https://i.imgur.com/vHRAygA.png) </center> 4. Total loss可以被寫成 ![](https://i.imgur.com/QQgt20v.png)。作者使用了相同的權重 λi=λs=1.0,並且採用了 DC-GAN 的生成對抗損失 LGAN(G)。 <center> ![](https://i.imgur.com/EEZOVwt.gif) </center> --- # **4. Result** **4.1 Data** 1. HoloGAN使用了多樣的dataset,包含了CelbaA,Cats,Chairs,Cars和LSUN bedroom。其中Cats和Chairs的解析度為64x64 pixels,CelbaA和Cars和LSUN bedroom的解析度為128x128 pixels **4.2 Implementation detail** 1. 我們使用AdaIN 作為生成器的一部分,使生成的圖像更具多樣性和變化性。spectral normalization作為判別器的一部分,來穩定判別器的訓練,這可以使得訓練更加穩定,避免了梯度消失或爆炸等問題。並使用Adam來優化生成器和判別器的參數。 2. 在訓練過程中,從均勻分佈中隨機採樣了噪聲z(範圍介於1~-1之間),並從一個均勻分佈中隨機採樣了不同的姿態。對於128×128的汽車圖像,作者設置了|z|=200,而對於其他圖像,也設置了|z|=200。 **4.3 Qualitative evaluation** 1. 下幾張圖展示了在保持多個不同數據集的同一身份的情況下,HoloGAN可以沿方位角和仰角變化姿勢。LSUN數據集包含多個物體的各種複雜佈局。這使得從物體身份中學習解開姿勢變得非常具有挑戰性。 <center> ![](https://i.imgur.com/ZWm0yh3.gif) </center> <center> ![](https://i.imgur.com/TMYcwhZ.gif) </center> <center> ![](https://i.imgur.com/ZhQBgZJ.gif) </center> <center> ![](https://i.imgur.com/iJR0Ka5.gif) </center> 2. 以下圖為例,作者比較了HoloGAN和InfoGAN在分離身份和姿態方面的表现,结果表明HoloGAN在控制對象姿態方面更好,能夠更好地控制目標的身份和方位角 <center> ![](https://i.imgur.com/kk35l10.png) </center> **4.4 Quantitative results** 1. 為了評估生成圖像的視覺保真度,我們使用Kernel Inception Distance(KID),計算真實圖片和生成圖片的距離來衡量差異性。KID得分越低,生成圖像的視覺質量就越好。但是,KID不能直接衡量是否學到不同的姿態和身分。 2. 下表為作者跟最近的GAN模型在3種datasets上進行比對,作者沒有對不同數據調整超參數,且針對每個數據集採樣20000張圖片來計算分數。從表中可以看出,HoloGAN在Chairs(外觀差異大)和Cars(複雜的背景和照光條件)等等具有挑戰性的datasets上表現得比其他生成模型好。 <center> ![](https://i.imgur.com/eugkU4g.png) </center> 3. HoloGAN 的架構比其他架構穩健,能夠在不同數據集上使用相同的超參數(除方位角範圍外)一致地生成高視覺保真度的圖像。此外,HoloGAN 還學習到一種解耦表示法,可以操縱生成的圖像。因此,HoloGAN 的優點在於能夠生成高質量的圖像並且學習到更加具有解釋性和可操縱性的特徵表示。 **4.5 Deep 3D representation vs. 3D geometry** 1. 下圖比較HoloGAN和 visual object networks(VON)在生成汽車圖像任務上的比較。 <center> ![](https://i.imgur.com/iLATFCM.png) </center> 2. HoloGAN不需要依賴於3D形狀和silhouette masks(標示物體輪廓)進行訓練,而VON需要。HoloGAN可以生成具有複雜背景和陰影的高保真度汽車圖像,並且可以保持汽車在所有視圖中的身份。此外,HoloGAN使用深度voxel表示,可以在空間上更加緊湊和富有表現力,可以在360度視圖下生成汽車圖像,而VON在從後面視圖生成圖像中效果不好。 **4.6 Disentangling shape and appearance** 1. 除了學習姿勢以外,HoloGAN還學會了把身份進一步區分為形狀和外觀。作者們採樣了兩個潛在編碼,z1和z2,並通過HoloGAN進行處理。z1控制3D特徵(在透視變形和投影之前),z2控制2D特徵(在投影之後)。 <center> ![](https://i.imgur.com/Mx8idEq.gif) </center> 2. 下圖展示了在相同姿勢和相同z1的情況下,使用不同的z2生成的圖像。可以看出,雖然3D特徵控制對象的形狀,但2D特徵控制外觀(顏色和照明)。這表明HoloGAN從未標記的圖像中直接學習將形狀與外觀分離開來,從而實現這些因素的操縱。 <center> ![](https://i.imgur.com/L2mdO10.gif) ![](https://i.imgur.com/thyEQqo.gif) ![](https://i.imgur.com/uxzduP4.gif) </center> **4.7 Ablation studies** 1. 以下進行一些研究,證明網路設計和訓練方法的有效性 2. 從下圖可以看出,在HoloGAN的訓練中,少了三維變換訓練的模型在姿態變化時無法生成有意義的圖像。因此,HoloGAN的訓練策略鼓勵學習身份和姿態之間的解耦表示。 <center> ![](https://i.imgur.com/6zj5lFK.png) </center> 3. 從下圖可以看出,將噪聲向量z傳遞到生成器網絡的第一層會導致模型在姿態和身份之間混淆。 <center> ![](https://i.imgur.com/afYgAtW.png) </center> # **5. Discussion** 1. HoloGAN有能力區分姿勢和身份取決於訓練數據集中包含的姿勢的變化和分佈,我們採用的是均勻分布。如果訓練集中的姿勢分布不均勻,可能會導致生成的圖像質量下降,因為模型可能更傾向於生成訓練集中姿勢出現頻率較高的圖像。 2. 未來的工作可以探索以非監督的方式學習訓練數據中姿勢的分佈,以解決姿勢分佈不均勻的問題,並進一步探索物體外觀(如紋理和照明)的區分。 # **6. HoloGAN應用** **6.1 Additional qualitative results** 1. 本文只有討論在CelbaA,Cats,Chairs,Cars和LSUN bedroom上的成果。因此,我們嘗試在Basel Face dataset上訓練,下圖為訓練結果。 <center> ![](https://hackmd.io/_uploads/rJDkACOH2.png) </center> <center> ![](https://hackmd.io/_uploads/Hk5-ARdBh.png) </center> **6.2 Linear interpolation** 1. 線性插值在HoloGAN中的應用可以產生一系列連續的圖像,用於創造視覺上的漸變效果。例如,在潛在空間的兩個端點之間進行插值,可以生成具有不同角度、位置或大小的物體的圖像序列。這樣的插值可以讓我們觀察到物體外觀的演變過程,從而獲得更多關於物體的視覺信息。 ![](https://hackmd.io/_uploads/r1BnW3DH2.png) # **7. References** 1. [HoloGAN: Unsupervised Learning of 3D Representations From Natural Images](https://openaccess.thecvf.com/content_ICCVW_2019/papers/NeurArch/Nguyen-Phuoc_HoloGAN_Unsupervised_Learning_of_3D_Representations_From_Natural_Images_ICCVW_2019_paper.pdf) 2. [Website](https://www.monkeyoverflow.com/#/hologan-unsupervised-learning-of-3d-representations-from-natural-images/) 3. [論文筆記](https://www.cnblogs.com/wanghui-garcia/p/13684330.html) 4. [Github](https://github.com/thunguyenphuoc/HoloGAN) # **8. 組員貢獻** 劉東霖:論文研究、整理論文 孟于伶:論文研究、ppt、報告