論文閱讀 ECCV 2020 — House-GAN: Relational Generative Adversarial Networks for Graph-constrained House Layout Generation
該論文嘗試在住宅設計的迭代過程中,將 Deep Learning 應用於平面圖生成的環節,並提出新穎的模型架構,稱為「 House-GAN 」。作者們將建築設計上常用來表達空間鄰接關係的 Bubble diagram 轉化為 Graph structure data,並定義為 Constrained image generation 任務上的約束條件,神經網路架構則善用 Conv-MPN 來做設計,讓模型能更有效、合理地推理出住宅平面圖。
作者與出處:
Introduction
「 購買住宅 」是人生中一個重要的抉擇,多數人都會希望住得安全、舒服,且環境是美觀的。
然而要透過合理的預算來設計出能滿足所有需求的住宅,是相當具有挑戰性的。而常見的情況是:只有少數的 住宅持有者 擁有 足夠的預算 來僱用建築師做出客製化的住宅設計。
住宅設計是個昂貴、耗時的迭代過程,常見的流程描述如下:
- 繪製「 Bubble diagram 」來描述有幾個空間、機能為何、空間連接關係為何
- 產出住宅平面圖並與雇主討論後得到反饋
- 回到「 Bubble diagram 」的階段,修正空間關係並使之更完善
- 不斷迭代上述過程
在有限的預算與時間之下,建築師和他的雇主常需要在設計的品質上做出「 妥協 」。因此,自動化生成住宅平面圖的技術,在建築、營造、不動產等產業中,有著相當大的需求、發展潛力。
該論文提出一種新穎的住宅平面圖生成問題,主要是探討透過「 Bubble diagram 」生成多組合理、真實的住宅平面圖,示意圖如下:
「 Bubble diagram 」會透過 Graph 的形式進行重現,Nodes 表示空間及其機能類型,Edges 表示空間的鄰接關係。
而住宅平面圖則是以一組軸向上對齊的 Bounding Boxes 做重現,可參考下圖的 ( f ):
近年發展出的 GAN ( Generative Adversarial Networks ) 已經被視為電腦視覺領域的一種突破,可用來生成非常逼真的人臉、街景。
這類模型架構也在 Constrained image generation 任務上被證實有效,例如:透過一張斑馬影像 ( 算是種 Constrain ) 在姿勢相同的馬影像上生成斑馬紋,又或是在一張場景影像上給定範圍框 ( 也算是種 Constrain ) 即可生成特定種類物件。而生成住宅平面圖則是個新挑戰:以 Graph 作為一種 Constrain 。
該論文提出一個新穎的模型架構「 House-GAN 」,作者們善用 Conv-MPN 作為 Generator 和 Discriminator,它和一般的 Graph Convolutional Networks ( GCNs ) 的差異如下:
- 以 Feature volume 作為空間的重現,不像 Graph-based 作法是用 1 維的 Latent vector
- Convolution 是在設計空間中更新特徵,並不像 Graph-based 作法是用 Multi-layer perceptron
這種架構可以更有效、合理地推理出平面圖的構成,並驗成其空間鄰接關係。
最後的實驗有在超過 11.7 萬張真實的平面圖做定性、定量分析,並證明 House-GAN 有能力生成更多樣的真實平面圖,而其空間關聯性和一開始輸入的 Bubble diagram 是相吻合的,並且比現有的其他方法更有競爭力。
Related work
Procedural layout generation
這種生成 Layout 的任務在多個領域上都是個活躍的研究方向,除了本篇論文所探討的住宅平面圖之外,也有為了遊戲做生成的研究。這邊舉幾個例子:
- 《 Computing Layouts with Deformable Templates 》:
這篇論文設計了一個 Framework 是讓演算法以空間的可及性、美學作為 Constrains ,並透過可變形的 Room templates 以任意形狀拼接成平面圖 - 《 Game Level Layout from Design Specification 》:
這篇論文是以一組 2D 的多邊形作為 Building blocks 的重現,輔以 Graph 表達這些 Blocks 的鄰接關係,透過兩者作為演算法輸入,並生成遊戲環境中的平面圖。
這類傳統方法都是基於人工定義的 Energy minimization 做優化,而 House-GAN 為了讓演算法更強健,嘗試探索 Data-driven techniques ( i.e., deep neural architecture ) 。
Data-driven space planning
至於這種 Data-driven 的相關作法,在過去也有論文探討針對室內/室外場景生成的方法,這邊簡單說明一下:
- 《 Data-driven interior plan generation for residential buildings 》:
這篇論文提出一種自動化生成住宅平面圖的方法,輸入資料是住宅的外輪廓,該算法會從客廳開始逐一定位不同空間屬性的房間要座落在哪個位置,最終透過 Encoder-decoder 架構生成隔間位置。 - 《 LayoutVAE : Stochastic Scene Layout Generation From a Label Set 》:
設計了 Variational autoenconder 架構,可在影像中透過物件 Label 來件生成對應的 Bounding Box 。 - 《 LayoutGAN : Generating graphic layouts with wireframe discriminators 》:
在 GAN 的架構上的 Generator 引入 Self-attention 機制,讓模型在透過 Random input 生成 Class probabilities 和 Geometric parameters 的 Quility 可以更好;並在 Discriminator 部份有著 Wireframe rendering 的設計,讓模型可以像人類用視覺觀點來評判生成結果並進行優化 。
以上這些方法雖然都能做出不錯的成果,但都無法將 Graph 作為 Input constraint 。
Graph-constrained layout generation
以 Graph 作為 Constrain 的研究,過去也曾被探討過,這邊簡單說明:
- 《 PlanIT : Planning and Instantiating Indoor Scenes with Relation Graph and Spatial Prior Networks 》:
將一個室內場景中的物間關係以 Graph 做重現,並透過 CNN 引導 3D Model 放入場景的位置。 - 《 Computer-Generated Residential Building Layouts 》:
利用 Bayesian Networks 取得多組候選的 Bubble diagrams,再結合「 空間數量 」、「 空間類型 」、「 約略空間尺寸 」等高階條件,透過 Metropolis algorithm 生成平面圖。 - 另外還有兩篇論文是以 Scene Graph ( 場景描述建構的 Graph ) 作為 GCNs 輸入,並生成合成出的場景照片
而這篇論文提出 House-GAN 的創新之處在於:該架構 Input data 的 Constrain 是種 Graph structure 。
Graph-constrained house layout generation problem
Dataset
資料集採用的是 Lifull home’s dataset ,一共有 5 百萬張真實的住宅平面圖。該論文從中抽取出 117,587 筆資料,並縮放為 256 × 256 的解析度,並採用 Floorplan vectorization algorithm 來做 Bubble diagram 的轉換。
Bubble diagram 會以 Graph 做重現,每個 Node 就是一個空間,而對應的機能就是 Node 的 Property 。而相鄰的條件是兩空間 Bounding Box 的 Manhattan Distance 小於 8 像素 ,最終輸出的住宅平面圖會是對齊軸向的 Bounding Box,例如:
Metrics
為了驗證模型的泛化能力,有將所有的 Sample 依造空間數量切分成 5 組 ( 1–3, 4–6, 7–9, 10–12, 13+ ),並採用 k-fold 的作法 ( k = 5 ) 做驗證:當要生成某一組數量的平面圖時,會用其他四組的資料進行訓練。
至於 Test 的部份,隨機選取一種 Layout 來生成 10 組結果,並評估其真實性與多樣性;同時也會以生成 1 組的過程評估匹配性、運算成本 。
- 真實性評估:
將生成結果和 Ground-truth 同時提供給 User 做評分,評分標準是讓 User 從 4 種描述來做選擇:Better (+1) , Worse (-1) , Equally-good (+1) , Equally-bad (-1) 。 - 多樣性評估:
將輸出結果做點陣化處理,並以 FID Score 評估。點陣化過程會將背景設定為白色,並依造面積對空間做降冪排序,再給予每種空間一個特定顏色 ( 可參考上面的圖 3 ) - 匹配性評估:
將推論結果建立 Bubble diagram 並與原先輸入的 Bubble diagram 計算 Graph editing distance 。
Assumptions
對比於真實的設計過程,作者們建立了以下 3 個假設:
- 一個 Node 無法帶有空間尺寸的資訊
- 空間形狀只能是矩形
- Edge 無法反映「 門 」與空間的關係
以上假設會使演算法的能力受限,目的是先對這問題有個初步的雛型,未來會再提出改善方法。
House-GAN
House layout generator
Generator 的輸入是以房間為單位的 Noise vector 加上一組 Bubble diagram,並生成一組與軸向對齊的矩形空間。這過程可分成 3 步驟來說明:
- Input graph:
依造 Bubble diagram 的空間鄰接關係建構 Conv-MPN ,使其具備對應的 Relational graph structure 。並對每個 Node 生成 128 維的 Noise vector ( 從Normal distribution 做 Sampling ),再串接 10 維的 Room type vector ( One-hot encoding ):
Conv-MPN 在輸出 Design space 的時候是以 3D tensor 的形式儲存特徵的,這部份有採用了一個 Shared linear layer 來把 g_r 升維成 8 × 8 × 16 的 Feature volume:
後續會透過 Conv-MPN module 做兩次 Upsampling 操作,使維度變成 32 × 32 × 16,並以上標 l=3 進行表示。
- Conv-MPN/Upsampling:
Conv-MPN module 在更新一組 Graph 上的各空間特徵時,採用的是「 Convolutional message passing 」作法,可分為 3 個步驟來說明:
- 將 Graph 上有連結到的空間特徵做加總後串接
- 將 Graph 上無連結到的空間特徵做加總後串接
- 用 CNN 做特徵抽取
公式如下:
CNN 則採用 Transposed convolution 做到 Upsampling,超參數設定如下:
- Kernel:4
- Stride:2
- Padding:1
( Channel 數維持一致 )
在 Generator 的設計上,有 2 組 Conv-MPN module + Upsampling ,所以最終的特徵維度為 32 × 32 × 16 。
- Output layout:
將特徵轉換為平面圖的部份,是一組共享的 3 層 CNN,並將維度壓縮為 Mask 的 Size ( 32 × 32 × 1 )。
這組表示空間分佈的 Graph 會在訓練過程送入 Discriminator 做訓練,在推論過程則是會以 0 作為 Threshold 過濾那些經過 Tanh function 的 Output ( 值域會介於 1 ~ -1 之間 ),並以對齊軸向的 Bounding box 做 Fitting 後,生成住宅平面圖。
House layout discriminator
Discriminator 的設計剛好和 Generator 相反,輸入是可表示空間分佈的 Graph,但來源可能是 真實平面圖 或 神經網路生成的結果 ( Fit 成平面圖之前的特徵 )
為了同時考量空間類型的資訊 ( 那組 10 維的 One-hot encoding ),這部份還有設計了一層 Linear layer 將其轉換為 8192 維的向量,並 Reshape 成 32 × 32 × 8 ,再串接於 Mask 之後。
接著透過 3 層共享的 CNN 將特徵轉換為 32 × 32 × 16 ,並接上 2 組 Conv-MPN module + Downsampling,這邊 Donwsampling 的超參數有些微差異,Kernel size 是 3 ,Stride 和 Padding 和前面一樣是 2 & 1。
最終透過 3 層 CNN 將空間特徵轉換回 128 維 ( d_r ),再經過 Sum-pool 和一層 Linear layer 轉換為 Scalar ( d ),公式如下:
並判別該輸入為 Ground-truth 還是神經網路生成的結果。
Loss 的部份採用 WGAN-GP loss,Gradient penalty 設定為 10 ( 線性、均等地在真偽樣本上做內插,有助於固定 Graph 的結構性,細節請參考原論文 )。
Full architectural specification
整體架構配置的細節如下:
Experimental Results
在真實性、多樣性、匹配性等評估指標底下,作者們有將 House-GAN 和另外兩組 Baseline 、兩種方法 做比較,這邊稍微說明一下這兩種做法:
- CNN-only:
先將空間數量上限設定為 40,依造空間中心點的 X 座標做排序後,將 Bubble diagram 轉換成固定維度的編碼 ( 780 維,可用 C40 取 2 來想 ),再串接 128 維的 Noise vector 和每個空間 10 維的類型編碼,最終取得 1308 維 ( 128 + ( 10 * 40 ) + 780 ) 的向量。( Missing room 會用 Zero padding 來處理 )
在 Generator 的部分,這組 1308 維的向量會透過兩組 CNN & Upsampling 將其轉換為 Room mask ( 一組 32 × 32 × 40 的 Feature volume );至於 Discriminator 的部分,就是以相同邏輯做 Inverse operation 。 - GCN:
Generator 的輸入是每個空間有 128 維 Noise vector 串接 10 維空間類型向量,透過兩組 GCN 的操作後,將特徵向量用共享的 CNN 模組解碼成 Room mask。
Discriminator 則會將這些空間分布及其對應的類型做 Merge 之後,一樣透過兩組 GCN 操作之後,會經過 Sum-pooling 和 Linear layer 轉換成 Scalar 。 - Ashual 等人、Johnson 等人提出的方法:
在把 Bubble diagram 和平面圖轉換成 Representation 之後,作者們有稍微修改這兩種方法來進行訓練,這邊說明一下改法:
1. 限制 Scene-graphs 只能有兩種連結:「 Adjacent 」、「 Not adjacent 」
2. 對 Bounding Box 上色,並使顏色對應空間類型
The main quantitative evaluations
上方的 Table 3 是主要的實驗結果,整體來看的話,House-GAN 有比其他作法好,那接著就不同評估指標進行說明:
- 真實性
這部份的實驗是請 12 位研究生與 10 位專業建築師來做的,每個人會比較 75 組 House-GAN 的輸出、其他方法的成果和 Ground truth 的關係 。在這方面,House-GAN 表現的最好。下圖是方法上的 Pairwise 比較:
上圖的每個分數是對個別評分做平均後再相減,數值大小的定義是:受測者說其中一種方法比另一種方法好 ( Better ) 就得 2 分。仍可看出,House-GAN 在各別比較上,也是較優的。( Ground truth 除外,可參考下圖的比較結果 )
Ashual 等人的方法並沒有得到令人信服的結果,因為這方法比較專注在真實的影像生成,並需要物件的大致定位來作為輸入。
Johnson 等人的作法只有在同組影像包含在訓練集的時候表現比較好,因為這種方法會讓模型去「 記答案 」。但作者們覺得,這方法在面對沒看過的場景時,會缺乏泛化能力 。
- 多樣性
這方面的能力是 House-GAN 的另一個強項,可以在不同 Group 的分數上看出,多數情況都是表現最好的方法。
評估的作法是在每個 Group 當中隨機抽取 5000 組 Bubble diagrams,並讓每種方法對它生成 10 組平面圖,再將結果點陣化為平面圖,並計算 FID Score 。
Ashual 等人的方法需要透過調整輸入的 Graph 才能讓輸出結果具備多樣性 ( 例如:Apple-right-orange 改成 Orange-left-apple ),雖然作者們有參考類似的邏輯來輸入 Room1-adjacent-room2 、Room2-adjacent-room1 等資訊,但結果並沒有產生有趣的多樣性。
Johnson 等人的作法也在這方面比較遜色,作者們認為,這方法上的 Noise vector 太晚作用在整個神經網路的架構上,所以就比較難在生成結果有其多樣性。
而 House-GAN 在空間數最少的 Group 上表現較差的原因是,Graph 的多樣性會因為空間數量而受到另一種限制,所以就比較難在輸出結果上有更好的多樣性。
下圖是以同組 Input 生成的結果:
和其他方法相較之下,不難看出其多樣性。
- 匹配性
在這方面的實驗中,各種方法表現的比較接近,但真實的挑戰是:確保匹配性的同時展現多樣性。而 House-GAN 是唯一有這種特性的方法,可參考下圖可視化的結果:
為了進一步驗證 House-GAN 的有效性,該論文有額外做了一組實驗是去增加 Input constraint information ( Room count 、Room type、Room connectivity ):
實驗結果證明,若在 Graph 的 Node 上增加更多和空間相關的資訊,就能增加生成結果的批配性。
上方 圖8 主要是在嘗試固定 Noise vector 並逐一增加空間節點的過程,可以觀察到一個有趣的過程:House-GAN 有時會大幅改變平面圖配置來符合空間鄰接關係 ( 第 4 Column ~ 第 5 Column ) 。
More results and discussion
上方 圖9 呈現幾組有趣的失敗/成功案例。相對於 Ground truth 而言,專業建築師評價右邊三組成果為「 Equally good 」,而左邊三組成果為「 Worse 」。
舉例來說,左一的其中一個陽台 ( Balcony ) 就只能經過廁所( Bathroom ) 來到達;左二的廚房切成兩塊;左三則呈現了該方法主要會失敗的幾點:
- 不適當的空間大小 ( 房間太小 或 廁所太大 )
- 沒有對齊的空間
- 無法到達的房間 ( 入口完全被衣櫥擋住 )
未來的改善方法會是整合空間尺寸、門的標注等資訊來解決以上問題。
最後,下方 圖10 呈現尚未經過 Fitting 的原始輸出,空間的形狀常會被預測為矩形的原因是該論文採用的資料集中,空間是以軸向對齊的矩形構成。這也引導出了另一個未來改善的方向,就是讓生成結果可以有非矩形空間。
Conclusion
該論文提出一個「 住宅平面圖生成的問題 」對應的解法是 Graph-constrained relational generative adversarial network 。
作者們定義了「 真實性 」、「 多樣性 」、「 匹配性 」等評估指標,驗證該論文提出的方法確實有效,並超越了其他的相關研究與 Baseline。
作者們認為,這篇論文在電腦輔助設計住宅平面圖的進程中,邁出了重要的一步 。