蔡春兵
(貝殼找房(北京)科技有限公司,基礎研發線大前端研發中心, 北京 100089)
如今對于真實世界的三維展示在各個行業的需求不斷增大,很多三維制作軟件都能制作出非常逼真的場景,但要實現高精度場景的制作需要的人工成本和時間成本都很高。如何通過程序自動處理模型生成過程中的一些環節,提高場景制作效率顯得尤為重要。對于一個城市目標區域的三維建模,其周邊的道路、建筑、水系、山脈等都是基于GIS數據進行一定程度的從二維到三維的還原重建。但像綠化之類沒有數據依據又必不可少的部分,都是由美術人員以人工設計來繪制綠化區域,再生成樹木等綠化,此過程通常需要大量美術人員參與,效率低下。
近年來人工智能在工業生產、金融、醫療、教育等領域大放異彩。而生成對抗網絡(Generative Adversarial Networks, GAN)[1]的出現,使得一直被奉為不可替代的藝術創作不可避免地受到人工智能的沖擊。2016年,微軟、代爾夫特理工大學、莫瑞泰斯皇家美術館以及阿姆斯特丹倫勃朗博物館利用人工智能技術歷時18個月完成的“The Next Rembrandt”項目成功復制了倫勃朗的畫作;2017年,由羅格斯大學藝術與人工智能實驗室發明的創造性對抗網絡(Creative Adversarial Networks, CAN)生成[2]的藝術作品《Edmond de Belamy》在佳士得藝術品拍賣會上以35萬美元的高價成交;2020年,谷歌公司[3]提出的聯合雙邊實時風格遷移算法可對圖像進行快速藝術化遷移。可見,利用深度學習方法進行藝術創作已是大勢所趨。對于本文綠化區域的繪制,依靠美術人員進行人工創作太過低效,考慮到GAN模型強大的學習創作的能力,因此使用預訓練的pix2pix[4]模型來自動生成綠化區域。
2014年,Goodfellow等人[1]受博弈論的啟發提出了生成對抗網絡。如圖1所示,其模型由生成器G和判別器D組成,其中G的目的是學習真實樣本的分布,生成和真實樣本逼近的樣本,而判別器D則是努力區分生成樣本和真實樣本。

圖1 GAN網絡模型結構示意圖
生成器G和判別器D通過不斷的對抗訓練,使D能最大概率地正確判別訓練樣本來源,同時使G生成的生成數據與真實數據的相似度最大化。在訓練優化D時,當D的輸入為真實樣本x時,希望D(x)趨于1,當輸入為生成樣本G(z)時,則希望D(G(z))趨于0,即希望1-D(G(z))趨于1,故需極大化模型D。在訓練優化G時,輸入只有噪聲z,此時希望生成樣本G(z)通過D后的概率值為1,即希望D(G(z))趨于 1,也就是說希望1-D(G(z))趨于0,故需極小化模型G。這個優化過程可以歸結為一個“二元極小極大博弈”問題,式(1)為其優化函數:
minGmaxD VG,D=Ex~Px(x)[log Dx]+Ez~Pz(z)[log1-DGz]
(1)
在訓練模型G和D時,先固定判別模型D,調整G的參數,再固定生成模型G,調整D的參數,以此交替迭代,最終達到模型穩定。
原始GAN對于生成器沒有任何約束,無法指導圖像的生成。CGAN(Conditional GAN)[5]在原始GAN的基礎上增加了約束條件,控制了GAN過于自由的問題,使網絡朝著既定的方向生成樣本。DCGAN(Deep Convolutional GAN)的提出又將卷積神經網絡和GAN結合起來,使得生成的圖片質量和多樣性得到了保證。而后更多的生成對抗網絡,如pix2pix、CycleGAN、BigGAN、StackGAN等如雨后春筍般涌現出來。
1.2.1 網絡模型
pix2pix實質是一個CGAN框架,用于圖像到圖像的翻譯。其與原始GAN的主要區別在于生成假圖像時,將隨機變量z和圖片x一同作為生成器G的輸入,來生成一張由圖片x翻譯后的假圖G(x,z)。
訓練大致過程如圖2所示。圖片x作為此cGAN的條件,需要輸入到G和D中。G的輸入是{x,z}(其中,z是隨機噪聲,x是需要轉換的圖片),輸出是生成的圖片G(x,z)。D則需要分辨出{x,G(x,z)}和{x,y}。

圖2 pix2pix網絡模型結構示意圖
1.2.2 優化目標函數
pix2pix的優化目標包含兩個部分。一部分是CGAN的優化目標,如式(2)所示:
LcGANG,D=Ex,y[log Dx,y]+Ex,y[log1-Dx,Gx,z]
(2)
另一部分是L1距離,如式(3):
LL1G=Ex,y,zy-Gx,z1
(3)
增加L1距離的目的是用來約束生成圖像G(x,z)和真實圖像y之間的差異,減少生成圖像的模糊,所以結合條件對抗損失和L1距離約束,pix2pix最終的優化目標函數如式(4):
G*=arg minGmaxD LcGANG,D+λLL1G
(4)
其中,生成器G的目標是最小化式(4),判別器D的目的是最大化式(4),兩者相互對抗,直到平衡。
1.2.3 生成器結構
在pix2pix模型中,生成器的結構并未使用傳統的Encoder-decoder(編解碼器)的模式,而是使用了U-Net[6]。U-Net網絡結構如圖3所示。

圖3 U-Net網絡結構
U-Net是德國Freiburg大學提出的一種全卷積網絡結構,其與常見的先降采樣到低維度,再升采樣到原始分辨率的編解碼結構的網絡相比,區別是加入了跳層連接。U-Net將同樣大小的降采樣的特征圖和升采樣的特征圖按通道拼一起,用來保留不同分辨率下像素級的細節信息,能夠充分融合特征,達到更好的分割效果,因此U-Net是在圖像分割領域應用非常廣泛的網絡結構。
1.2.4 判別器結構
pix2pix使用L1損失讓生成的圖片與真實圖片盡量相似,用GAN構建高頻部分的細節。既然GAN只用于構建細節,那么就不需要判別器對整張圖片進行判斷,只需讓判別器對圖像的每個大小為N×N的patch做出真假判別,因此pix2pix使用一種叫做patchGAN的結構來作為判別器。
patchGAN在進行判別時,將對一張圖片切割成不同的N×N大小的patch,并對每一個patch做真假判別,最后將所有patch的結果取平均值作為最終的判別器輸出。這樣不僅D的輸入變小,使得計算量小,訓練速度快。并且因為G是全卷積的,對圖像尺度沒有限制,而D按照patch去處理圖像,也對圖像大小沒有限制,這樣就使得整個pix2pix框架對輸入圖像大小沒有限制,使得pix2pix可以處理不同大小的輸入圖像,增加了其框架的可擴展性。
對于室外某一10公里直徑范圍內的場景構建,通過訪問開源地圖OSM(Open Street Map)獲得的地圖圖像,對其進行預處理生成的8 000×8 000像素的二值圖像,如圖4所示。其中黑色像素區域為道路、河流和建筑等不能綠化的區域,白色像素區域為可綠化的區域。

圖4 二值地圖圖像
目前,對于綠化區域的確定還是依靠美術人員,按照美術要求對可綠化的區域進行繪制,以使綠化后的圖像具有一定的美觀性。綠化區域的繪制需遵循以下三個原則:
1) 必須避開道路樓棟等建筑區域;
2) 綠化區域要具有美工效果,而不是生硬的直線連接;
3) 綠化區域盡量連成片,以保證后續在三維空間中植樹后的美觀性。
容易發現對綠化區域的繪制,也是一個圖像翻譯的過程。如圖5(a)所示,即從包括道路、建筑等的二值圖像A,翻譯為自動避開黑色像素B,在白色像素區域內生成具有美術效果的綠化區域圖像C。
如圖5(b)所示,本文通過訓練pix2pix模型,學習從A到B的映射,再通過A加上B來得到C,而不是直接學習A到C的映射,簡化了學習任務,使得生成的綠化區域效果更好。

(a)
雖然pix2pix模型對于輸入的圖像大小沒有限制,但是若直接對一副具有8 000×8 000像素大小的圖像進行推理會導致內存占用過大,并且目標生成圖像的效果較差,既不能滿足硬件條件限制,也達不到美術要求。
觀察到圖4中的二值地圖圖像明顯被道路、河流等劃分成了許多獨立的區域,可以對這些獨立區域單獨進行圖像翻譯,最后再融合各個單獨區域生成的綠化區域以達到對整個地圖翻譯的目的。
本文通過使用計算機視覺庫OpenCV對二值地圖圖像的輪廓邊緣進行檢測,實現了獨立區域的劃分,圖4中的crop 1~3就是劃分后提取出的圖像。獨立區域的劃分為后續訓練數據集的建立和對單個獨立區域進行快速推理,奠定基礎。
可靠的數據集對于模型的訓練至關重要,對于本文所要解決的任務并沒有公開數據集可供使用,因此本文數據集依靠美術人員人工創建。
由于在地圖圖像中,各獨立區域大小不一,為了在推理時讓網絡適應不同大小的區域,將制作不同大小的數據對模型進行訓練。本文由人工制作了像素范圍在[256,1 024]之間,包括了1 000幅訓練圖像、200幅驗證圖像和300幅測試圖像的數據集。部分數據集示例,如圖6所示,其中A為源圖像,B為目標圖像。


圖6 數據集示例
雖然GAN的衍生模型有很多,但其生成樣本的質量一直難以被評估,其常用的評價指標分為客觀評價和主觀評價。
常用的客觀評價指標包括Inception Score(IS)和Fréchet Inception Distance (FID)[7]。其基本原理是對生成樣本與真實樣本提取特征,然后在特征空間做距離度量,綜合評價圖片的質量以及多樣性。
主觀評價采用的是人為評價方法,通過人直接對生成的圖像進行質量評分,簡單、實用且有效。針對本文所生成綠化區域的特殊性,采用主觀評價法對生成圖像進行評價。主觀評價滿意度指標如式(5):
D=NA×B
(5)
其中,A代表參加評價的人數,B為測試圖像數量,N為用戶評價的滿意度指標數量。
本文基于python編程語言和Pytorch深度學習框架,將pix2pix模型部署到Windows 10系統和顯卡NVIDIA GeForce RTX2080Ti GPU上進行訓練。訓練時,權重初始化為均值為0,標準差為0.02的高斯分布,學習率設為0.001,并使用Adam優化器進行權值更新。
為了適應不同大小像素的獨立區域圖像,制作了大小不一的數據集,又因在模型訓練時同一batch的數據大小必須相同,因此本文將網絡訓練的batch設置為1。
為驗證生成模型的可靠性,使用300張測試圖像對預訓練模型進行測試,測試示例如圖7所示,其中A為源圖像,B為美術人員設計的目標圖像,fakeB為由pix2pix模型翻譯生成的綠化區域圖像。
為了對圖像翻譯的結果進行評價,由專業美術人員、普通員工和學生組成的50人團隊,對300張測試圖像的翻譯結果進行了評價。評價標準如表1所示。

表1 主觀評價標準
如表2所示的評價結果表明,本文通過訓練pix2pix所生成的綠化區域,其合格率已達到93.8%,已能較好滿足實際應用需求。
對于生成的結果,將采用計算機視覺庫OpenCV對其進行平滑化處理后將綠化區域數據存儲為json文件,并將對json文件進一步處理,生成可在3DS Max軟件中導入的fbx類型數據。通過3DS Max軟件中的插件工具在綠化區域內隨機生成樹木,達到了室外場景建模中綠化區域的自動還原重建。

表2 評價結果
綠化區域的構建是大范圍室外三維場景展示中不可或缺的一部分,本文通過利用深度學習算法強大的學習能力,生成了以往需美術人員手動繪制的綠化區域,實現了對人工的替代。在實際工作中,將美術人員從煩瑣、機械的繪圖工作中解放出來,提高了工作的質量和效率。