圖片風格遷移:基於實例緩解細節丟失、人臉風格化失敗問題


​​摘要:本文介紹的基於實例的方法可以很好的緩解細節丟失、人臉風格化失敗等問題並得到高質量的風格轉換圖像。

 

本文分享自華為雲社區《基於實例的風格遷移》,作者:檸檬柚子茶加冰 。

 

基於神經網絡的風格遷移方法雖然生成了令人驚艷的風格轉換圖,然而目前的大部分方法只能學到一些類似顏色分布,整體結構等,對於局部區域的紋理細節等,並不具備很好的學習能力,在這些細節區域還會帶來扭曲和變形。本文介紹的基於實例的方法可以很好的緩解以上問題並得到高質量的風格轉換圖像。

 

 

注:風格指的是圖片顏色、紋理的變化等,部分論文認為內容(content)也是一種風格。

前言:

 

目前的風格遷移幾乎大部分都是在 GAN(生成對抗網絡)的基礎上組合 AdaIn(適應性實體正則化),加上 vgg 網絡構成的感知損失(contentloss)等來進行優化;還有較為經典的 pixel2pixel、cyclegan 等利用成對數據或者 cycle loss 進行圖像翻譯(ImageTranslation)任務等。基於神經網絡的風格遷移方法雖然生成了令人驚艷的風格轉換圖,然而目前的大部分方法只能學到一些類似顏色分布,整體結構等,對於局部區域的紋理細節等,並不具備很好的學習能力,在這些細節區域還會帶來扭曲和變形。尤其最近嘗試了許多方法,進行人臉風格化等,包括(u-gat-it, stylegan 等)都這些基於神經網絡的方法在對一些類似油畫、水彩等風格都不具備很好的效果。

 

下面首先介紹兩篇效果較好的基於神經網絡的風格遷移方法:其中,U-GAT-IT 在二次元人臉上具有較好的效果,whitebox 在風景類圖片上具有較好的效果。

 

U-GAT-IT: UNSUPERVISEDGENERATIVE ATTENTIONAL NETWORKS WITH ADAPTIVE LAYERINSTANCE NORMALIZATION FORIMAGE-TO-IMAGE TRANSLATION

 

u-gat-it 適用於形變較大的人臉到二次元風格的 Image to Image Translation 任務。作者將注意力模塊引入到整個框架的生成器和判別器部分,使模型專注於一些語義上重要的區域而忽略一些微小的區域。作者還組合了實體正則化(Instance Normalization)和層正則化(LayerNormalization)提出了自適應層實體正則化(Adaptive layer InstanceNormalization)AdaLIN。AdaLIN 公式幫助注意力模塊更好的控制形狀和紋理的改變。

 

 

整個模型結構如圖,包括兩個生成器 G_{s->t}Gs−>t​和 G_{t->s}Gt−>s​和兩個判別器 D_sDs​和 D_tDt​,以上結構圖為 G_{s->t}Gs−>t​和 D_tDt​的結構,表示 source 到 target(真實到二次元),G_{t->s}Gt−>s​和 D_sDs​則和它相反。

 

整個生成器的流程為:不成對的數據輸入生成器模塊,經過降采樣和殘差塊等提取 K 個特征圖 E,輔助分類器用來學習這 k 個特征的權重 W(類似於 CAM,利用全局平均池化和全局最大池化得到權重 w),最終得到注意力特征圖 a = w ∗ sa=ws。特征圖再輸入到一個全連接層獲取均值和方差,通過論文提出的 AdaLIn 函數得到最終 normalize 后的特征圖,將此特征圖輸入解碼器后得到轉換后的圖片。

 

 

判別器的話就是通過一個二分類網絡來生成特定損失,約束生成的圖片和訓練數據分布一致。

 

實際訓練中,Ugatit 訓練速度較慢,雖然會生成部分較好的二次元風格圖片,但是這種沒有利用人臉關鍵點等信息的方法會造成部分生成的圖片人物形變誇張,達不到工業應用標准。

 

whitebox: Learning toCartoonize Using White-box Cartoon Representations 適合風格:真實人物 -> 偏真實的目標風格不適合風格:油畫等抽象風格主要貢獻:模擬人類繪畫行為的三種表示(the surface representation, thestructure representation, and the texture representation.)來構成相關的損失函數。

 

網絡結構如上,結構較為簡單,主要是各種 loss:

1.預訓練的 VGG 網絡提取高維和低維特征構成 structureloss 和 content loss;

2.surface representation 模擬繪畫的抽象水彩畫等(通過一個濾波器得到);

3.the texture representation 則類似於素描風格,通過一個 color shift 算法生成;

4.structure representation 由 KMeans 聚類得到,得到結構化的色塊分布。

 

總結:該方法可以生成效果很好的宮崎駿等類似的日本動畫風格,但是對於人物等風格轉換會帶來細節的丟失。本文模擬人類畫師而提出的多種 representation 產生的 loss 等具有很好的參考意義。

基於實例合成的人臉風格遷移

 

以上介紹的風格遷移方法,其實都可以歸為一類,都是使用神經網絡通過學習一大批風格類似的數據來學習對應的風格。這種方法在風景類圖片或者細節較少的人臉圖像上(二次元)等可以取的較好的結果,然而對於具有豐富信息的風格圖,這種方法大都只能學習到一些顏色分布等,產生的風格圖會丟失大量的局部細節。尤其人臉風格化,僅僅使用注意力(U-GAT-IT)仍然會產生大量的失敗風格轉換圖,雖然有論文(LandmarkAssisted CycleGAN for Cartoon Face Generation)利用人臉關鍵點約束來達到一個較為穩定的轉換效果,但是對於較為復雜的風格圖,這些方法仍然有些能力不足。此時,基於實例合成的風格遷移就可以很好的緩解這些問題(細節丟失、人臉風格化失敗等)。

 

Example-Based Synthesis of Stylized Facial Animations 效果對比:

 

 

上圖中第二列的圖片就是一種基於神經網絡的風格化方法,包括以上介紹的 whitebox 方法,都試着平滑最終轉換圖片的局部紋理,以達到繪畫效果。然而結果就是對於具有豐富紋理的風格圖,這些方法都差強人意。

 

本文的方法,通過輸入一張富含紋理的人臉風格圖 S,一段視頻幀 T,可以得到一段風格化后的人臉視頻幀 O。

 

 

文章的具體方法思想倒是挺簡單:通過輸入的風格圖和關鍵幀(待轉換圖),得到一系列引導圖(Gseg,Gpos, Gapp, Gtemp),運用 Fišer 在 2016 年提出的運用引導圖合成數據的算法(StyLit:Illumination-Guided Example-Based Stylization of 3D Renderings)。重點是多種引導圖的構建與意義。

 

 

分割圖(Gseg):目的:由於風格圖不同區域有不同的筆觸,因此將人臉區域划分為眼睛、頭發、眉毛、鼻子、嘴等區域。具體得到該圖的方法如下圖:

 

 

簡單的解釋下上圖,為了得到原始人臉 a 的的三分圖 b,作者先得到了一個粗糙的頭像分割圖 c,接着使用人臉關鍵點(下巴關鍵點),得到一個封閉的掩碼 e。為了得到皮膚區域 f,作者使用了一個皮膚的統計模型來篩選屬於皮膚的像素,得到圖 h。最后,為了得到人臉其它區域的分割圖(人眼等),使用人臉關鍵點,並為了防止關鍵點不准確,通過模糊相關區域得到最終的圖 i。

 

位置指導圖(Gpos):像素坐標歸一化到 0-1,接着使用原圖和目標的人臉關鍵點,並使用"movingleast squares deformation",最終得到目標圖相對原圖的坐標點形變圖。

 

外觀指導圖(Gapp):轉換為灰度圖,修改對比度等。

 

時序指導圖(Gtemp):利用之前研究的手繪的序列在低頻區域具有時序一致性,通過模糊風格參考圖 S 和前一幀合成的風格轉換圖 O,得到時序指導圖。

 

合成得到以上的指導圖后,作者使用 StyLit 方法得到合成后的風格圖;另外,人眼和嘴巴區域通過額外的較之前的 Gseg 更為嚴格的掩碼(d)來合成,如下圖:

 

 

結果展示: 第一行為風格參考圖,第二行為轉換后的風格圖。

 

 

Real-Time Patch-Based Stylization of Portraits Using GenerativeAdversarialNetwork

以上介紹的方法合成風格圖時准備工作太多,需要生成(Gseg, Gpos,Gapp, Gtemp)等四種圖,且會存在部分失敗的步驟(關鍵點獲取失敗、分割失敗等)就會導致風格轉換失敗;然而不可否認,上文介紹的基於實例的合成方法生成的風格圖質量極高,本文的作者提出使用 GAN 來結合這種方法,能生成高質量風格圖,且利用 GPU 來達到較高的推理速度。

 

方法也及其簡單,利用上文的方法生成質量較高的風格化數據,並使用常用的對抗損失、顏色損失(風格圖參考圖和轉換后的風格圖之前求 L1 距離),感知損失(預訓練 VGG 提取風格參考圖和轉換后的風格圖的特征求 L2 距離);

 

網絡結構方面,作者在以前研究者的基礎上增加了殘差連接,殘差塊等,如下圖:

 

 

總結:本文整體沒有特別出彩的地方,但是給我們提供了一個思路,利用效果較好但是速度較慢的方法生成高質量的大規模訓練集,使用以上架構(GAN+常見風格遷移 loss 等),可以得到效果較好且速度較快的風格遷移方法。

 

FaceBlit: Instant Real-time Example-based StyleTransfer to Facial Videos 本文同樣是一種基於實例的風格遷移方法,作者對比了以上兩篇論文,其中以上介紹的第一篇論文 Example-BasedSynthesis of Stylized Facial Animations 雖然具備非常高的質量,然而這個方法在合成前的准備工作太多,完成一張圖片的風格化需要數十秒。第二篇論文 Real-TimePatch-Based Stylization of Portraits Using Generative Adversarial Network 雖然在 gpu 上具有較快的速度,然而需要很長的訓練與資源消耗。以下為作者與兩者的結果對比:

 

 

其中,a 是風格圖,b 和 c 分別是以上的兩篇論文的結果,d 是原圖。

 

作者首先改進了第一篇論文中使用的指導圖,第一篇論文中使用了四種指導圖(分割圖、外觀指導圖、位置指導圖、時序指導圖),本文作者將以上的四種指導圖壓縮為位置指導圖 Gpos 和外觀指導圖 Gapp 兩種,並且改變了他們的生成指導圖的算法,最終數十毫秒即可生成指導圖。

 

位置指導圖(Positional Guide)首先是獲取人臉關鍵點,對於風格圖,使用預訓練的算法提前生成即可。對於真實人臉圖片,作者通過在輸入人臉檢測器前降低其分辨率到之前的一半來獲得較快速度的檢測(對於精度的影響可以忽略)。獲取到人臉關鍵點后,通過將這些坐標信息嵌入 RGB 三通道,R 是關鍵點 x,G 是 y;然后使用第一篇論文中使用的"moving least-squaresmethod"來計算從原圖到風格圖的關鍵點變形;對於最后剩下的一個 B 通道用來存儲分割圖,其中風格圖的分割圖可以預先生成,而原圖的掩碼則使用以下方法生成:

 

 

簡單來說,通過將關鍵點連線和繪制一個橢圓區域,得到一個部分人臉區域,最后通過分析皮膚的顏色分布來擴張這個區域邊界,最終得到整個人臉的掩碼。

 

外觀指導圖(Appearance Guide)首先將原圖轉換為灰度圖,使用該灰度圖減去高斯模糊后的灰度圖:

 

 

得到以上兩幅圖后,作者通過以下公式構建了一個表,來記錄多個坐標之間的距離。

 

 

並將這個表輸入到 StyleBlit(一種基於實例的快速合成算法,下面介紹)

 

StyleBlit: Fast Example-Based Stylization with Local Guidance 以上的文章,其實主要都是在構建各種指導圖,或者已有算法得到高質量的數據集進行訓練,核心的風格遷移生成算法為本文類似的方法。本文介紹的方法是當前最優(根據給出的指導圖的不同)、速度最快的基於實例或者叫指導圖的風格化合成方法。至於速度有多快,原文中是這樣說的:在單核 CPU 上,我們可以以每秒 10 幀的速度處理 100 萬像素的圖像,而在普通 GPU 上,我們可以以以每秒 100 幀的速度處理 4K 超高清分辨率視屏。

 

這里只簡單闡述論文的思想,后續會詳細的從 stylit 到 styleblit 介紹。StyleBlit 的想法並不復雜,假設我們有兩幅圖像或者兩個風格不同的物體(3d 或者 2d),算法的核心思想是將原始圖像的像素值通過某種映射粘貼到目標圖像上((通過類似打補丁的方式)。假設原始圖像的像素集合為{p1,p2…pn},目標圖像的像素為{q1,q2,…qn},我們有一個額外的表,表的值為{p,q,error},也就是上文介紹的類似如下的關於原始像素和目標像素坐標,且兩者之間錯誤率的表:

 

 

我們的目標是風格化或者渲染目標圖像,因此需要遍歷目標圖像所有像素{q1,q2,…qn},在找到對應的原始圖像中最近的像素點后,計算二者的錯誤率,如果低於某個閾值,那么就將原始像素的顏色等復制到目標圖像。

 

當然還有一些細節,比如作者將像素點分層,通過從頂層到低層這種優先級計算錯誤率,尋找最合適的原圖像素點(紅色點為目標圖像素點,黑色和藍色為原圖像素點,藍色為最近的三個層級的像素點):

 

 

最終算法偽代碼如下:

 

 

結果展示:風格參考物體為圓球,目標物體為人形建模

 

 

結論:只要有合適的引導圖,從 2d 到 3d、人臉風格轉換等,該方法都可以快速高效的生成高質量的目標圖像。從實驗結果來看,優於絕大多數基於神經網絡的風格遷移。

 

注:圖像翻譯: 有研究者認為圖像翻譯應該是比風格遷移更為寬泛的一個概念,比如白天黑夜的圖像轉換,線條圖上色、春到冬、馬到斑馬、2D 到 3D 轉換、超分辨率重建、缺失圖像修復、風格化等,這些都屬於 Image to Image Translation 任務。總體可以總結為將輸入圖轉換為目標圖,輸入圖和目標圖都符合其特定的數據分布。本文主要講的是最近看的一些風格遷移論文。

 

AdaIn: AdaIN 的思路為,它致力於從一張圖片由 VGG16 輸出的特征圖中分別提取內容和風格信息,並且將這兩個信息分離開來;原始圖片經過減去均值和除以方差 normalize 后可以減去風格,加上風格圖提取的均值方差反向 normalize 可完成風格遷移;

 

 

想了解更多的 AI 技術干貨,歡迎上華為雲的 AI 專區,目前有 AI 編程 Python 等六大實戰營供大家免費學習。

 

點擊關注,第一時間了解華為雲新鮮技術~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM