10秒搞定建築日夜景轉換,還自帶中秋月光

  • 2019 年 10 月 4 日
  • 筆記

by未來建築實驗室

作者:未來建築實驗室

編輯:唐里

建築設計會經常遇到出夜景效果圖的時候,日夜景的效果轉換,臨摹勾勒、渲染出圖、後期加工…工序繁多。除了對製作工具的熟練,更關鍵的是需依靠經驗判斷建築明暗、光影和顏色等在白天和夜晚的不同狀態。

近日,AI建築研究團隊未來建築實驗室運用之前一項深度學習成果,做到10秒內完成日夜景轉換,讓建築菜鳥也能快速擁有合格效果圖。

1. 三步實現日夜景秒速轉換

第一步,選擇一張日景圖S(source);

第二步,再選擇一張目標的夜景圖R(reference);

第三步,基於深度學習的色彩演算法將在兩張圖片上對具有相似語義結構(sementic structures)的部分進行顏色遷移,秒速生成一張新的圖片T(target)。它有著S的結構和內容,同時具有R的顏色風格(即R+S=T)。

2. 建築顏色遷移:Neural Color Transfer

Neural Color Transfer(下稱NCT)是基於語義資訊的對應(correspondence)進行匹配和顏色的遷移,NCT使用了卷積神經網路來對圖片提取特徵以便於後續的匹配。在匹配完成後,NCT使用了一個線性模型,在滿足局部和整體一致性的情況下進行優化。

在匹配完成後,為了顏色遷移在局部變化和整體上的一致性,NCT使用了一個線性模型在同時滿足局部和整體的約束下進行優化。

輸入的圖片S和R共享很多語義上相關的(semantically-related)內容,同時在展示上又有很大的不同。

S和R中都包含建築,但分別為日景和夜景。要在兩張存在很大色差的圖片上建立語義的對應是一個非常棘手的問題,尤其是傳統的特徵提取演算法是無法有效的提取出圖片的語義資訊。

因此使用預訓練好的深度學習模型來提取特徵成為解決這個問題的有效途徑, 這也符合遷移學習(transfer learning)的思想:

「Transfer learning is a research problem in machine learning that focuses on storing knowledge gained while solving one problem and applying it to a different but related problem.」

(West, Jeremy; Ventura, Dan; Warnick, Sean (2007). "Spring Research Presentation: A Theoretical Foundation for Inductive Transfer")。

3. 如何做到日夜景秒速轉換?

NCT採用經典圖片分類的多層卷積神經網路(CNN)模型VGG19。

VGG19是在ImageNet上,1000個分類的共計約120萬張圖片上預訓練的(http://image-net.org/challenges/LSVRC/2014/browse-synsets)。這個模型有非常強的泛用性,被普遍應用於圖片特徵提取。

隨著模型的層數由淺到深(下圖從左到右),VGG19可以抽取從圖片的低級細節(對顏色敏感)到高級的語義資訊(對顏色不敏感)。

圖片分類的多層卷積神經網路(CNN)模型VGG19 結構圖

對於S和R兩張圖片,分別提取VGG19在relu1_1, relu2_1, relu3_1, relu4_1和relu5_1五個層的輸出作為這兩張圖片在5個層級(L = 1, 2, 3, 4, 5)的特徵圖。

當處於某個層級L時,可通過VGG19提取出圖片S和R對應的特徵圖FLS和FLR,對S和R建立映射。又通過利用概率進行快速匹配的PatchMatch演算法(https://gfx.cs.princeton.edu/pubs/Barnes_2009_PAR/) ,分別建立了FLS到FLR的映射 ϕLS→R和FLR到FLS的映射ϕLR→S。

PatchMatch演算法

但當L>1時,特徵圖的尺寸小於原圖,將導致映射關係發生變化。重構的圖片在形狀、同語義像素等方面添加額外的約束後通過線性回歸,可進行局部顏色遷移,以解決丟失部分原有一致性的問題。如尺寸還小於原圖,將採用快速導向濾波Fast Guided Filter(https://arxiv.org/pdf/1505.00996.pdf) 儘可能實現對細節的保留。

4. 如何做到更細節化的表現效果?

前面也提到,VGG19是一個泛用模型, 在某些情況下難以提取有效的語義資訊,對於細部還原還有待提升。於是,針對NCT我們進行了兩方面的改進:1. 特徵標準化;2. 增加特徵維度。

1)特徵歸一化(normalization)

圖片S對應的特徵圖FLS形狀為(高, 寬, 通道),某種意義上,FLS的每個通道代表圖片S的某一個特徵。經過實際對比後發現,在每一個通道上像素值的變化範圍出現巨大差異,例如有的通道像素點取值範圍在[-500, +100],有的只在[-1, +1]之間。

這可能會導致的情況:特徵圖FLS的某一通道提取出一種很重要的語義資訊,但由於其變化範圍過小,從而在PatchMatch過程中對結果的影響很小,導致並未在原圖S和R上建立有效映射。

標準正態分布(Standard Normal Distribution)就是解決這個問題的方法之一,對於特徵圖的每一個通道進行如下操作:

z = (x – μ) / σ

x 為該通道每個像素的值

μ 是該通道所有像素的平均值

σ 為該通道所有像素值的標準差

2)增加特徵維度

為了更好地建立S和R之間的映射,增加額外特徵也是一種有效方法。聚類和語義分割都是補充圖片特徵的有效方法。

聚類

S為建築日景圖,R為建築夜景圖,層級L為1,聚類產生的簇的數量(number of clusters)為3。

用FCLS和FCLR代替原來的FLS和FLR,且僅在L = 1時做一次遷移的效果如下:

vs

通過上面兩組圖的對比可以看到在加入聚類特徵後,僅在最低的層級做一次顏色遷移的效果要比原來從高到低在5個層級上做遷移的效果還要好。

語義分割(semantic segmentation)

語義分割模型的作用方式和聚類相似,但它使用了語義分割模型的輸出替代了聚類圖CLS和CLR。我們使用的語義分割模型為基於MIT的ADE20K數據集訓練的PSPNet模型(https://github.com/Vladkryvoruchko/PSPNet-Keras-tensorflow)。

這種方法的優點在於可以採用訓練好的、適用於特定應用場景的語義分割模型,給顏色遷移提供方向性的指導。

越是針對某個垂直領域的應用場景就越需要一個專門針對該場景的語義分割模型。因為不管是在ImageNet數據集上訓練的VGG19還是在ADE20K數據集上訓練的PSPNet相對都是比較泛用的模型,很難滿足專業需求。

針對複雜辦公場景還需進行更細緻的採集和標註,積累到一定的數據量後再選擇合適的語義分割模型進行訓練,將其作為特徵提取模型加入(或者取代)VGG19。

中秋版Demo