您當前的位置:首頁 > 書法

信筆塗鴉,風景如畫——Hackathon演算法介紹

作者:由 一點資訊技術團隊 發表于 書法時間:2021-08-18

​一、前言

一點資訊第二屆Hackathon前段時間已經落下帷幕,其中神筆馬良戰隊帶來的專案「塗丫」給觀眾留下了深刻印象,該專案集成了“草圖變風景畫”“影象橡皮擦”“手繪人臉”等AI演算法能力,聚焦於草圖生成網際網路影象的新方向。該專案的出發點是透過草稿與使用者進行互動,使用者不需要超高的繪畫、PS技巧,即可輕鬆的生成想要的影象內容,以此賦能普通使用者,為他們帶來無可比擬的參與感和創造性!今天,我們將揭秘「塗丫」其中一個功能“草圖變風景畫”背後的演算法能力。

信筆塗鴉,風景如畫——Hackathon演算法介紹

圖1-1 塗丫專案草圖變風景畫

信筆塗鴉,風景如畫——Hackathon演算法介紹

圖1-2 塗丫專案影象橡皮擦

信筆塗鴉,風景如畫——Hackathon演算法介紹

圖1-3 塗丫專案手繪人臉

二、草圖變風景演算法介紹

該演算法是一個基於生成對抗性網路(GAN)的影象生成器,使用者只需點選幾下即可繪製出近乎真實的影象,能夠立即將幾行草草勾勒的輪廓圖,變成華麗的高山湖泊藍天白雲。在給定一張語義分割圖時合成對應的實際真實影象,這個任務被稱為semantic image synthesis。因為語義分割圖一般都是由簡單的線條組成,因此繪畫起來比較容易,這也是為什麼這個戰隊被稱之為“神筆馬良”的原因。

信筆塗鴉,風景如畫——Hackathon演算法介紹

圖2 效果展示

2.1 網路整體結構

該網路基於GAN來實現條件影象合成任務(conditional image synthesis task)。GAN網路一般包含一個生成器(Generator)和一個判別器(Discriminator),其中generator的目標是生成真實的影象,使得Discriminator無法區分該影象是生成影象還是真實影象。Generator和Discriminator的目標相反,在訓練過程中相互對抗,所以該演算法稱為生成對抗網路。其整體結構如下:

信筆塗鴉,風景如畫——Hackathon演算法介紹

圖2-1 網路整體結構

從上圖可知,網路包含了

Encoder

Generator

Discriminator

三個模組,後面將分別介紹這三個模組。

2.2 Encoder模組

Encoder用於從真實影象中獲取與其分佈有關均值和方差,結構主要是一些卷積層的堆疊,最後透過2個全連線層輸出均值和方差值,這樣就得到了一個數據分佈,基於這個資料分佈得到的向量就包含了輸入影象的風格資訊。

信筆塗鴉,風景如畫——Hackathon演算法介紹

圖2-2-1 Encoder網路結構

方差和高斯分佈產生的向量做反歸一化操作,最終得到一個包含真實影象資訊的隨機向量。這個包含了輸入影象風格特徵的向量做Generator的輸入,可以實現下圖不同風格轉換的展示效果。

信筆塗鴉,風景如畫——Hackathon演算法介紹

圖2-2-2 生成不同風格的影象

這裡,在Hackathon的比賽中,由於開發時間有限,「塗丫」專案簡化了Encoder,因此沒有風格影象的選擇功能,可在後續開發中完善。

2.3 Generator模組

Generator目的是學習一個對映函式,它可以將輸入語義分割掩碼(對應圖2-1中的左圖)對映為照片級的真實影象(對應圖2-1中的右圖)。Generator接收上一步產生的隨機向量來生成影象,在生成的過程中會不斷地使用多個尺度的語義圖來提供上下文資訊。透過在不同的尺度上使用語義對映,實現從粗到細的影象生成。Generator的整體結構如下圖所示:

信筆塗鴉,風景如畫——Hackathon演算法介紹

圖2-3-1 生成器的結構

在Generator中,為了防止Batch Normalization(BN)削減輸入影象的語義資訊,Generator使用了SPatially-Adaptive DEnormalization(SPADE),SPADE模組輸入是上一層的輸出和不同尺度的語義圖,上一層的輸出經過BN,語義圖經過resize後透過一個卷積層,然後再分別透過兩個卷積層,這兩個卷積層輸出的結果分別和BN的結果做wise乘法以及加法得到輸出,如圖2-4所示。SPADE能彌補BN帶來的語義資訊的丟失,使得生成的影象能夠更加逼真,因為語義圖經過卷積層處理後得到的是表示語義資訊的方差和均值,然後經過反歸一化操作就向生成的影象中添加了語義資訊。

信筆塗鴉,風景如畫——Hackathon演算法介紹

圖2-3-2 SPADE模組結構

SPADE模組經過類似殘差連線的結構,形成SPADE-ResBlock,SPADE-ResBlock模組疊堆並上取樣,最終構成Generator的網路結構。

2.4 Discriminator

Discriminator接收的是語義圖與影象連線產生的張量,經過一系列的處理會輸出判斷結果。這裡模型使用的Discriminator結構類似於pix2pixHD中採用的PatchGAN的形式,不同於普通的GAN判別器。普通的Discriminator對影象的真假的鑑別只輸出一個評價值,表徵影象整體的“真”“假”,PatchGAN設計成全卷積的形式,將輸入對映為NxN的patch,每個patch對應不同區域的感受野,表徵了不同區域的“真”“假”。對於要求高解析度、高畫質細節的影象領域中,PatchGAN的結構更能關注影象細節,其結構如圖下圖所示:

信筆塗鴉,風景如畫——Hackathon演算法介紹

經過生成器和判別器的不斷博弈訓練,最終我們輸入一個語義圖,生成器會生成與該語義圖相對應的真實影象。

三、後續展望

信筆塗鴉,風景如畫——Hackathon演算法介紹

該演算法可以為建築師、城市規劃者、景觀設計師、遊戲開發者、廣告設計師… 等各種和影象相關的職業在建立虛擬世界時提供強大的工具。透過人工智慧瞭解現實世界的外觀,這些專業人員可以更好地製作想法原型並快速更改合成場景,能讓設計師可以在頭腦風暴的階段,就直接產出高保真原型。

文章來自一點資訊演算法團隊

標簽: 影象  語義  generator  生成  SPADE