10秒搞定建筑日夜景轉換,還自帶中秋月光
10秒內完成日夜景轉換,讓建筑菜鳥也能快速擁有合格效果圖(內有體驗)。
建筑設計會經常遇到出夜景效果圖的時候,日夜景的效果轉換,臨摹勾勒、渲染出圖、后期加工...工序繁多。除了對制作工具的熟練,更關鍵的是需依靠經驗判斷建筑明暗、光影和顏色等在白天和夜晚的不同狀態。
圖 | 來源:未來建筑實驗室
近日,AI建筑研究團隊未來建筑實驗室運用之前一項深度學習成果,做到10秒內完成日夜景轉換,讓建筑菜鳥也能快速擁有合格效果圖。
三步實現日夜景秒速轉換
圖 | 來源:未來建筑實驗室
第一步,選擇一張日景圖S(source);
第二步,再選擇一張目標的夜景圖R(reference);
第三步,基于深度學習的色彩算法將在兩張圖片上對具有相似語義結構(sementic structures)的部分進行顏色遷移,秒速生成一張新的圖片T(target)。它有著S的結構和內容,同時具有R的顏色風格(即R+S=T)。
圖 | 中秋版Demo演示,來源:未來建筑實驗室
正值月圓時,研究團隊特別推出中秋版Demo。該版本在完成顏色遷移的基礎上,更通過算法在夜景圖中添上了一輪明月。
建筑顏色遷移黑科技簡介:
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")。
· 如何做到日夜景秒速轉換?
NCT采用經典圖片分類的多層卷積神經網絡(CNN)模型VGG19。
VGG19是在ImageNet上,1000個分類的共計約120萬張圖片上預訓練的(http://image-net.org/challenges/LSVRC/2014/browse-synsets)。這個模型有非常強的泛用性,被普遍應用于圖片特征提取。
隨著模型的層數由淺到深(下圖從左到右),VGG19可以抽取從圖片的低級細節(對顏色敏感)到高級的語義信息(對顏色不敏感)。
圖 | 圖片分類的多層卷積神經網絡(CNN)模型VGG19 結構圖(https://www.mathworks.com/help/deeplearning/ref/vgg19.html)
對于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算法
(http://vis.berkeley.edu/courses/cs294-69-fa11/wiki/images/1/18/05-PatchMatch.pdf)
但當L>1時,特征圖的尺寸小于原圖,將導致映射關系發生變化。重構的圖片在形狀、同語義像素等方面添加額外的約束后通過線性回歸,可進行局部顏色遷移,以解決丟失部分原有一致性的問題。如尺寸還小于原圖,將采用快速導向濾波Fast Guided Filter(https://arxiv.org/pdf/1505.00996.pdf) 盡可能實現對細節的保留。
圖 | 來源:未來建筑實驗室
· 如何做到更細節化的表現效果?
前面也提到,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。
目前,未來建筑實驗室初步完成對建筑日夜景轉換的研發,還將陸續研發和開放更多的應用場景。
體驗:AI日夜景轉換-中秋版Demo
關于AI日夜景轉換的完整研究文章,可通過右側鏈接:https://blog.xkool.ai/?p=1253查看。
最后,記得關注微信公眾號:鎂客網(im2maker),更多干貨在等你!
硬科技產業媒體
關注技術驅動創新
