基於GAN的高分辨率圖像合成方法介紹

圖像合成有不同的方式,比如像素或者補丁級別的、基於紋理模版的、基於模版梯度的、以及基於運動模版的。

現在討論如何基於深度學習模型去實現這些合成模式,其中GAN起着非常重要的作用。

後面針對兩個特別的領域介紹一下:一是高分辨率說話臉(talking face)合成,二是人體姿態(pose)和運動(movement)合成。

生成圖像的三種主要方法是直接法,迭代法和分層法,如圖所示。直接法只用一個生成器和一個鑑別器來完成所有操作,而另外兩種方法有多個生成器和鑑別器。 分層法通常使用兩層GAN,其中一個GAN與另一個GAN起着根本不同的作用。然而,迭代法有多個執行相同任務但分辨率不同的GAN。

• 直接法

該類方法都遵循用一個發生器和一個鑑別器的原理,並且發生器和鑑別器的結構是直接的,沒有分支。如GAN,DCGAN,ImprovedGAN,InfoGAN,f-GAN和GAN-INT-CLS。 其中,DCGAN是最經典的之一(見第二章介紹),其結構被許多後來的模型使用。與分層法和迭代法相比,這種方法設計和實現相對更直接,並且通常可以獲得良好的結果。

• 分層法

與直接法相反,分層法的算法在其模型中使用兩個發生器和兩個鑑別器,其中不同的發生器具有不同的目的。想法是將圖像分成兩部分,如“樣式(style)和結構(structure)”和“前景和背景”。兩個發生器之間的關係可以是並聯的或串聯的。

SS-GAN建議使用兩個GAN,一個Structure-GAN用於從隨機噪聲zˆ生成表面法線圖,另一個Style-GAN同時生成表面法線圖和噪聲z ̃輸入,然後輸出圖像。 Structure-GAN使用與DCGAN相同的構建塊,而Style-GAN略有不同。對於樣式生成器,生成的表面法線圖和噪聲向量分別經過幾個卷積和轉置卷積層,然後將結果連接成一個張量通過樣式生成器中的剩下層。對於樣式鑑別器,每個表面法線圖及其對應的圖像在通道維度連接在一起,形成鑑別器的單個輸入。

另外,SS-GAN假定,應該使用良好的合成圖像來重建良好的表面法線圖。在此假設下,SS-GAN設計了一個全連接網絡,將圖像轉換到其表面法線圖,並使用逐像素損失強制重建的曲面法線逼近真實曲面法線。 SS-GAN的一個主要限制是它需要使用Kinect來獲得表面法線圖的基礎事實(GT)。

下圖是SS-GAN的示意圖,(a)生成流水線:Structure-GAN生成表面法線圖作爲輸出,然後將該表面法線圖作爲輸入給Style-GAN輸出圖像;(b)生成的表面法線圖和圖像例子;(c)Style-GAN作繪製引擎。

作爲一個特例,LR-GAN(Layered Recurrent GAN)選擇使用不同的生成器生成前景和背景內容,但是隻有一個鑑別器用於判斷圖像,而遞推圖像生成過程與迭代方法有關。儘管如此,LR-GAN的實驗表明,可以分離前景和背景內容的生成併產生更清晰的圖像。

LR-GAN是分層法,前景層同時模擬三個主要變化因素:外觀f,形狀m和姿態a。LR-GAN中的生成器是遞歸的,圖像使用遞推網絡遞歸構造。每個遞歸步驟的分層包括一個“粘貼”到生成圖像的目標層。在時間步t的目標層由三個成分參數化 - “規範”的外觀ft,形狀(或掩碼)mt,以及用於粘貼圖像合成之前將目標變形的姿態(或仿射變換)at。

該模型具有用於變形目標的顯式變換變量,因此它可以學習規範的目標表示,該表示可以被重新用於生成場景,其中目標僅僅做一些如尺度變化或旋轉的變換。通過分解外觀、形狀和姿態,目標生成器可以分別捕獲這三個構成目標因素的規則性。

如圖是LR-GAN展開到3個時間步的結構圖。用不同形狀來指示不同類的層(卷積,分數卷積,非線性和線性等),模型由兩個主要部分組成,背景生成器Gb和前景生成器Gf。Gb和Gf不共享參數。 Gb計算僅發生一次,而Gf隨時間重複,即所有目標生成器共享相同的參數。

• 迭代法

迭代法有兩點區別於分級法:
1)不使用兩個執行不同角色的不同生成器,此類模型具有相似或甚至相同結構的多個生成器,並且它們生成從粗到精的圖像,每個生成器都會細化來自上一代生成器的結果細節;
2)在生成器中使用相同的結構時,迭代法可以在生成器之間使用權重共享,而分層法通常不能。

LAPGAN是第一個使用迭代法通過拉普拉斯金字塔生成從粗到細圖像的GAN模型,如圖是LAPGAN的樣本生成程序。

下圖是LAPGAN的訓練流程。LAPGAN的多個生成器執行相同的任務:從先前的生成器獲取圖像並將噪聲向量作爲輸入,然後輸出當添加到輸入圖像時能使圖像更清晰的細節(殘差圖像)。這些發生器結構的唯一區別在於輸入/輸出的大小,而一個例外是最底層發生器僅輸入噪聲向量輸出圖像。 LAPGAN優於原始GAN 並且表明迭代法可以生成比直接法更清晰的圖像。

StackGAN作爲一種迭代法,只有兩層生成器。第一個生成器輸入(z,c),輸出模糊圖像,顯示粗糙的形狀和目標的模糊細節,而第二個生成器採用(z,c)和前一代生成的圖像做輸入,然後輸出更大的圖像,更具照片般逼真的細節。如圖是StackGAN的架構圖,以文本到圖像的生成爲目的,過程分爲兩個階段:階段I,根據給定的文本描述繪製對象的原始形狀和基本顏色,並從隨機噪聲向量繪製背景圖,生成低分辨率圖像;階段 II,再次閱讀文本描述,糾正第I階段低分辨率圖像的缺陷,並完成目標的詳細信息,生成高分辨率照片逼真圖像。

迭代法的另一個例子是SGAN(Stacked generative adversarial networks),如圖所示。(a) 原GAN;(b) 訓練SGAN 的工作流程,其中每個生成器 Gi 試圖生成合理的特徵以欺騙相應的表示鑑別器 Di。在獨立訓練階段每個生成器接收編碼器的條件輸入,在聯合訓練階段發生器接收條件輸入;© 向每個發生器 Gi 提供隨機噪聲,從 SGAN(在測試期間)生成新圖像。

SGAN的堆疊生成器,將較低級的特徵作爲輸入並輸出較高級的特徵,而底部生成器將噪聲向量作爲輸入並且頂部生成器輸出圖像。對不同級特徵使用單獨生成器的必要性是SGAN關聯編碼器、鑑別器和Q網絡(預測熵最大化的後驗概率P(zi | hi),其中hi是發生器第i層的輸出特徵),以便約束和改善這些特徵的質量。

使用權重共享的一個例子是GRAN(Generative Recurrent Adversarial Networks)模型,它是DRAW(Deep Recurrent Attentive Writer)模型的擴展,基於變分自動編碼器(VAE)。

如下圖是VAE(左邊)和DRAW(右邊)的框架比較。與DRAW一樣,GRAN以遞推方式生成圖像,將前一步的輸出提供給模型,當前步的輸出將作爲下一步的輸入反饋。所有步驟都使用相同的生成器,因此權重在它們之間共享,就像經典的遞推神經網絡(RNN)一樣。

人臉表情或者動作合成,最直接的應用就是說話臉(Talking Face)。下面通過論文【6】和【7】展開對深度學習在這個方面的應用討論。
【6】

說話面生成旨在合成對應於語音剪輯的一系列面部圖像,如圖所示:給定目標人物的單個面部圖像,任務是在基於視頻或音頻表示的語音信息生成說話視頻。這是一個有挑戰性的問題,因爲面部外觀變化和語音語義耦合後表現在談話臉上區域的微妙運動。現有方法要麼在特定主角上構建特定的面部外觀模型,要麼模擬脣部運動和語音之間的變換。【6】結合了這兩種方法,通過學習分解的視-聽信息實現任意主角的說話臉生成。

說話面序列實際上是主角相關信息和語音相關信息的組合。【6】通過一個聯想和對抗(associative-and-adversarial)的訓練過程明確地解耦這兩個空間。這種分解表示的優點是,音頻和視頻都可以作爲生成的輸入。如圖所示,通過使用標籤來指導信息流,以確保空間包含的是相互消除的鑑別性語義信息。假設Word-ID空間在視覺和音頻信息之間共享,模型可以基於視頻或音頻重建面部細節。

實現這個技術路線的關鍵是視-聽語音識別(又稱脣讀)作爲視-聽信息關聯的任務,利用對抗學習來解開裏面主題相關和語音相關的信息。首先,學習一個聯合的視-聽空間,其中說話臉序列及其相應音頻嵌入在一起;這是通過強制從說話面獲得的脣讀取結果與從音頻獲得的語音識別結果對齊來實現的。接下來,進一步利用脣讀通過對抗學習分解主題相關和語音相關的信息。

視-聽解藕系統(DAVS)是一個端到端的可訓練網絡【6】,通過學習分解的視-聽表示實現說話臉生成,下圖是其框架圖:編碼器Evp編碼從視覺源到pid(Person-ID space)空間的個人-身份(Person-ID)信息,Evw和Eaw是單詞-身份(Word-ID)編碼器,分別從視頻和音頻提取語音內容信息到wid空間。解碼器G從pid空間和wid(Word-ID space)空間取任意特徵組合生成臉。Dseq是計算GAN損失的鑑別器。對抗訓練部分包含兩個額外的分類器Cwp和Cpw。

整個流水線的想法是:首先學習視-聽聯合空間wid,然後將其與pid空間解藕,最後結合兩個空間的特徵來獲得生成結果。爲了學習wid空間,採用了三個監督信號:有共享分類器Cw的單詞-身份標籤監督,表示語義的聽覺和視覺信號; 對比性損失LC,用於拉近成對的視頻和音頻樣本;對音頻和視頻特徵的對抗訓練監督,使其難區分。至於pid空間,採用額外標註面部數據得到的個人-身份標籤。爲了解藕wid和pid空間,採用了對抗訓練。而生成部分,引入L1-範數的重建損失LL1和時域GAN損失LGAN用於清晰度和連續性量度。

視-聽語音識別有助於共享潛在空間的實現,通過視頻和音頻映射到文字標籤創建一個鑑別空間,如圖是視-聽共享空間wid嵌入的示意圖。

確保特徵拋棄了所有有關語音信息的方法是,在發送到分類器Cwp之後爲所有類產生相同的預測。如圖是從pid空間去除wid信息的對抗訓練程序,左邊是分類器訓練,右邊是編碼器訓練。

將pid特徵fpv與視頻wid特徵fwv或音頻wid特徵fwa結合,系統可以從解碼器G生成說話臉的圖像幀。

在【7】中提出一種級聯(cascade)GAN方法來生成說話臉視頻,不是直接學習從音頻到視頻幀的映射,而是先將音頻轉換爲高級結構(即面部關鍵點),然後生成基於關鍵點的視頻幀。與直接的音頻到圖像方法相比,級聯法避免了擬合與語音內容無關的視聽信號之間的虛假相關。爲了避免像素抖動問題並強制網絡專注於視聽相關區域,採用一種帶注意機制的動態可調像素損失。此外,爲了生成同步良好面部運動的清晰圖像,採用一種基於迴歸的鑑別器結構,同時考慮序列級和幀級的信息。

下圖是網絡架構圖,分爲兩部分:音頻轉換網絡(AT-net)和視覺生成網絡(VG-net)。藍色部分是AT-net,圖中顯示基礎網絡是LSTM,將音頻信號傳輸到低維關鍵點表示;綠色部分是VG-net,圖中顯示基礎網絡是CRNN,生成基於關鍵點的視頻幀。在訓練期間,VG-net輸入是GT關鍵點(p1:T);推理時,輸入是AT-net產生的虛假關鍵點(pˆ 1:T)。AT-net和VG-net分別訓練可避免誤差積累。

如圖顯示的是生成圖像質量和關鍵點(a)和頭部姿態(b)的關係。在推理時在生成的關鍵點處添加具有不同標準偏差的高斯噪聲,並對生成視頻做用戶研究。 如果增加標準偏差,圖像質量會下降(見圖(a))。 這種現象也表明AT-net可以輸出有希望的中間關鍵點。用相同的音頻測試不同的姿態圖像,如圖(b)的結果證明對不同的姿態角算法的魯棒性。

【8】

一種姿態引導的人體生成網絡(Pose Guided Person Image Generation,PG2)在【8】提出,基於該人的圖像和姿態合成任意姿態的人物圖像。生成框架PG2明確地利用姿態信息,包括兩個關鍵階段:姿態集成和圖像細化。在第一階段,條件圖像和目標姿態饋送到類似U-Net的網絡,生成具有目標姿態的人體初始但粗略的圖像。然後,在第二階段,通過對抗方式訓練類似U-Net的生成器來細化初始和模糊的結果。如圖是PG2架構圖。

在階段I,條件人體圖像IA與目標姿態PB整合以產生粗略結果IˆB,捕獲目標圖像IB的人體整體結構。

爲了避免姿態註釋任務,應用姿態估計器(part affinity fields,PAF)獲得近似的人體姿態。姿態估計器生成18個關鍵點座標。直接依此作爲模型輸入則需要模型學習將關鍵點映射到人體位置。因此,姿勢PB編碼爲18個熱圖。每個熱圖在相應的關鍵點4像素爲半徑的周圍填充值1,在其他地方填充值0(參見下圖,目標姿態)。將IA和PB連接起來作爲模型的輸入。這樣,通過卷積層直接整合這兩種信息。

第一階段的生成器,類似U-Net的架構,即帶跳連接的卷積自動編碼器,如圖11-16所示。具體來說,使用幾個堆疊卷積層從小的局部鄰域到大的局部領域集成IA和PB,這樣外觀信息可以整合並轉移到鄰近的身體部位。然後,使用全連接層,使得遠端身體部位之間的信息也可以交換。之後,解碼器由一組堆疊的卷積層組成,這些卷積層與編碼器對稱以生成圖像。第一階段的結果表示爲IˆB1。在U-Net,編碼器和解碼器之間的跳連接有助於圖像信息直接從輸入傳播到輸出。此外,使用殘差塊作爲基本組件可以提高生成的性能。特別地,簡化原始殘差塊,其中僅保留兩個連續的conv-relu。

爲比較生成IˆB1與目標圖像IB,採用L1距離作爲階段I的生成損失。然而,由於僅僅讓條件圖像和目標姿勢作爲輸入,如果目標圖像具有與條件圖像不同的背景,則模型難以生成背景的樣子。因此,爲了減輕背景變化的影響,將姿態掩模MB添加到L1損失,使得人體被賦予比背景更多的權重,例子見上圖所示。

第一階段模型已經合成了一個粗略但接近目標圖像的姿態和RGB圖像,在第二階段,糾正錯誤或缺失來集中精力生成更多細節,其中用條件DCGAN的變型作爲基本模型。

考慮到初始結果和目標圖像已經在結構上相似,第二階段的生成器G2旨在生成使初始結果更接近目標圖像的外觀差別圖(appearance difference map)。用類似於第一階段的U-Net計算差別圖,但是初始結果IˆB1和條件圖像IA作爲輸入。不同之處在於,從U-Net移除全連接層。這有助於在輸入保留更多細節,因爲全連接層會壓縮輸入的信息。在模型訓練中,差異圖加速了收斂,因爲模型側重於學習缺失的外觀細節而不是從頭開始合成目標圖像。特別是,訓練從合理的結果開始。G2的整體架構如前面PG2架構圖所示。

鑑別器區分真實的GT圖像和僞造的圖像(由隨機噪聲產生)。但是,在這個條件網絡中,G2將條件圖像IA而不是隨機噪聲作爲輸入。因此,真實圖像不僅是自然的,而且還滿足特定的要求。否則,G2會誤導直接輸出本身自然的IA,而不是改善第一階段IˆB1的粗略結果。爲了解決這個問題,將G2輸出與條件圖像配對,以使鑑別器D識別對的僞造,即(IˆB2,IA)vs(IB,IA)。這在圖11-16中示出。這個成對輸入鼓勵D學習IˆB2和IB之間的區別,而不僅僅是合成圖像和自然圖像之間的區別。

與傳統GAN的另一個不同之處是,由於生成器以圖像IA爲條件,因此不再需要噪聲。 因此,對鑑別器D和發生器G2有以下損失函數。

其中Lbce表示二值交叉熵損失。在這裏,使用與第一階段相同的掩碼L1損失,比背景更注重目標人體的外觀,即

下圖是實驗結果例子:在兩個方面測試G1:
(1)三種姿態嵌入方法,即座標嵌入(coordinate embedding,CE),熱圖嵌入(heatmap embedding,HME)和G1-L1的姿態熱圖串聯。
(2)兩種損失, poseMaskLoss 和標準的L1損失。 第7, 8和9列顯示了一期的幾個差別(G1),一期對抗模型(G1 + D)和兩階段對抗模型(G1 + G2 + D)之間的差異。 請注意,這三個都使用poseMaskLoss。 在拆分數據集時隨機分配ID。

【9】

這是一種“像我一樣(Do as I do)”運動轉移【9】的簡單方法:給定一個人跳舞的源視頻,可以在目標主體執行標準動作的幾分鐘後將該表現轉移到一個新的(業餘)目標。問題定義爲具有時空平滑的逐幀“圖像到圖像”的轉換。姿態檢測作爲源和目標之間的中間表示,學習從姿態圖像到目標主體外觀的映射。該方法也用於時域視頻生成,包括逼真的面部合成。

設計的姿態棒圖(stick figure)見下圖所示:

整個流水線劃分爲三個階段:姿勢檢測、全局姿態歸一化以及從標準化姿態棒圖到目標主體的映射。在姿勢檢測階段,給定來自源視頻的幀,用預訓練的姿態檢測器狀態來創建姿態棒圖。 全局姿態歸一化階段考慮源體和目標體在形狀與幀內位置之間的差異。 最後,一個系統學習從歸一化化的姿態棒圖到對抗訓練的目標人體圖像之間的映射。

如下圖上半部分給出了系統訓練的框圖:給定原始目標視頻的幀y,姿態檢測器P獲得相應的姿態棒圖x = P(y);在訓練期間,(x,y)對學習映射G,將給定姿態棒圖x合成目標人物的圖像。採用預訓練的VGGNet,進行鑑別器D和感知重建損失dist的對抗訓練,優化所生成的輸出G(x)逼近GT目標主體幀y。 D試圖區分“真實”圖像對,即(姿態棒圖x,GT圖像y),和“假”圖像對,即(姿態棒圖x,模型輸出G(x))。

運動轉移顯示在給出的下圖下半部分。與訓練過程類似,姿態檢測器P從源幀y’提取姿態信息,產生姿態棒圖x’。爲了使源姿態更好地與目標的拍攝朝向對齊,用全局姿態歸一化Norm將源的原始姿態x’變換後與目標視頻x姿態一致。 然後,將歸一化化的姿態棒圖x傳遞到訓練的模型G中,以獲得目標人物的圖像G(x),其對應於源y’的原始圖像。

將pix2pixHD模型的對抗訓練設置修改一下:(1)時間連貫的視頻幀,(2)合成相關的人臉圖像。修改單個圖像生成設置以強制相鄰幀之間的時間一致性,如圖所示:

預測兩個連續幀,而不是生成單個幀,其中第一個輸出G(xt-1)取決於相應的姿態棒圖xt-1和零圖像z(一個佔位符,因爲之前時刻t - 2沒有生成幀),第二個輸出G(xt)取決於對應的姿態棒圖xt和第一個輸出G(xt-1)。 因此,鑑別器的任務是確定“假”序列(xt-1,xt,G(xt-1),G(xt))和“真實”序列(xt-1,xt,yt-1,yt)之間的真實性和時間一致性的差異。這個時域平滑體現在更新的目標函數中

一個專門的GAN模型,旨在爲面部區域添加更多細節和真實感,如圖所示。用主生成器G生成場景的完整圖像之後,輸入以面G(x)F爲中心的較小部分圖像和以相同方式分割的輸入姿態棒圖xF到另一個生成器Gf,其輸出的殘差r = Gf(xF,G(x)F)。 最終輸出是添加具有原始面部區域r G(x)F的殘差,該變化反映在完整圖像的相關區域中。

然後,鑑別器Df嘗試從“假”面對(xF,r+G(x)F)辨別“真實”面對(xF,yF),即(輸入姿態棒圖的面部區域,GT目標人物圖像的面部區域),與原始pix2pix目標類似的目標函數是:


最後整個圖像GAN目標函數是:

而人臉GAN的目標函數是:

下圖是一些運動轉移的結果。頂行顯示源視頻主體,中間行顯示歸一化的姿態棒圖,底行顯示目標人體的模型輸出。

作者介紹

黃浴,奇點汽車美研中心總裁和自動駕駛首席科學家,上海大學兼職教授。曾在百度美研自動駕駛組、英特爾公司總部、三星美研數字媒體研究中心、華爲美研媒體網絡實驗室,和法國湯姆遜多媒體公司普林斯頓研究所等工作。發表國際期刊和會議論文30餘篇,申請30餘個專利,其中13個獲批准。

原文鏈接

注:本文源自黃浴的知乎:https://zhuanlan.zhihu.com/p/79080156

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章