1. 程式人生 > >綜述:影象風格化演算法最全盤點 | 內附大量擴充套件應用

綜述:影象風格化演算法最全盤點 | 內附大量擴充套件應用

作者丨靜永程

學校 | 浙江大學碩士生

導師 | 宋明黎教授、俞益洲教授

研究方向丨紋理合成、計算攝影

前言

這篇文章可以看做是我之前放在 arXiv 上的一篇綜述文章 Neural Style Transfer: A Review(v4 最新版更新於 2018 年 4 月 26 日)的中文精簡版,對應的專案主頁詳見下方,有興趣的同學建議去看英文的完整版。 

■ 論文 | Neural Style Transfer: A Review

■ 連結 | https://www.paperweekly.site/papers/1926

■ 主頁 | https://github.com/ycjing/Neural-Style-Transfer-Papers

非常感謝在準備這篇綜述文章的過程中大牛 @Xun Huang @張航 @愛可可-愛生活 老師的幫助,以及感謝 @機器之心 的翻譯總結神經風格遷移研究概述:從當前研究到未來方向,和淘寶AI Team的 @黃真川 哥在專案落地上的支援和幫助。 希望這篇文章能夠對後面打算做風格化相關研究的同學有所幫助。

下面我將以風格化簡介—前傳—起源—發展—應用的順序依次對相關內容進行介紹。

簡介

首先,第一個問題,什麼是影象風格化(Neural Style Transfer)?

簡單來講,影象風格化是將一張照片渲染成有藝術風格的畫作。影象風格化演算法的輸入有二,分別是內容圖和風格圖,輸出有一個,為風格遷移後的結果圖。舉個例子:

上面這張表示影象風格化演算法將輸入的一張長城的照片作為內容圖,將富春山居圖作為風格圖,將長城的內容保留,風格替換成中國山水畫的風格,創作出一張新的藝術作品。

ok,基本的概念有了,下面我們來嘮一嘮風格化前傳。

前傳

影象風格化演算法說白了其實就是一個影象渲染的過程。看到上面長城那張圖,第一反應,圖形學的一大分支——非真實感圖形學,不也是幹這件事的嘛。

沒錯,大體來說,在非真實感圖形學領域,影象藝術風格渲染技術可以大體分為基於筆觸渲染的方法(Stroke-based Rendering)、基於影象類比的方法(Image Analogy)、基於影象濾波的方法(Image Filtering)。

但為啥這些基於圖形學的技術沒有大規模落地,出現 Prisma,Ostagram 之類風靡全球的應用呢?咱們一個一個分析一下。

首先,基於筆觸渲染的方法,他在演算法設計的之前首先會確定某一種風格,也就是說每一個基於筆觸渲染的方法一般只對應於一種風格,而不能簡單地擴充套件到其他風格的遷移;影象類比方法需要很多成對兒的原圖和風格結果圖作為訓練集,然而對所有風格圖找到這些成對兒的資料集貌似不太現實。

而通過影象濾波的方法速度快、效果穩定,可滿足工業界落地的需求(之前很火的時光相簿出的“你的名字”濾鏡估計就是演算法工程師用這種方式不斷調整出來的),但是基於影象濾波的方法能模擬出來的風格種類很有限。 

而在基於統計學的計算機視覺領域,影象藝術風格遷移也有很多大牛前輩研究過了。在視覺領域,影象藝術風格渲染一般被認為是紋理合成的一個擴充套件問題。紋理合成是給定一個源紋理圖,然後去合成更多的類似的紋理結構,最終組成一個大的紋理圖(關於紋理合成的相關工作這裡就不詳細說了,有興趣的同學可以去看這個部落格)。

風格遷移中的風格圖其實可以看成是一種紋理,由此,假如我們在合成紋理圖的時候去刻意保留一些語義資訊,那不就是風格遷移的結果嘛。

沒錯,但那個年代管這個問題不叫風格遷移,而叫紋理遷移(texture transfer),換湯不換藥,意思是差不多的。

但是呢,為啥紋理遷移在那會兒沒有流行起來呢?因為那會兒紋理遷移是基於低層次的影象特徵來做的,沒有考慮語義資訊,所以很多結果不那麼得盡如人意。 

是時候祭出下面這張圖了:

起源

由前傳中的介紹,我們可以發現現有的影象藝術風格渲染方法照著大規模落地還有一段距離。而正好在這個時代,有著很多前人所做的紮實的基礎研究。很多新的研究都是站在巨人的肩膀上開拓和完成的,Neural Style Transfer 也不例外。 

譬如咱們說紋理建模方法(Visual Texture Modelling),主要研究如何表示一種紋理,是紋理合成技術的核心。

以往的紋理合成方法可以分為兩大類:基於統計分佈的引數化紋理建模方法(Parametric Texture Modelling with Summary Statistics)基於 MRF 的非引數化紋理建模方法(Non-parametric Texture Modelling with MRFs)

基於統計分佈的引數化方法主要將紋理建模為 N 階統計量,而基於 MRF 的方法一個經典套路是用 patch 相似度匹配進行逐點合成。而咱們之前提到過,風格可以看成一種紋理。

那我們能不能直接把紋理建模這一套方法用於風格圖中的風格建模?Bingo,這就是影象風格化遷移演算法(Neural Style Transfer)的起源和基石之一(到後面風格化發展章節中的現有風格化演算法分類時大家對此會有更深的體會)。

紋理建模方法的相關研究解決了影象風格化遷移的第一個大問題:如何對風格圖中的風格特徵進行建模和提取

▲ Image credited to Kaijian Gao from Brown University

好了,成功把風格圖中的風格抽出來後,如何和內容混合然後還原成一個相應的風格化結果呢?這就到了另一個領域——影象重建(Image Reconstruction)了。

影象重建的輸入是特徵表達,輸出是特徵表達對應的影象。他其實和咱們通常的輸入影象提特徵的過程相反,是把某個特徵逆向重建為原來的影象(重建結果不唯一)。

那這有啥用呢?以往影象重建主要是用來理解某些特徵表達的。就比如說 CNN 特徵,CNN 是黑盒子,某個 CNN 特徵具體包含哪些特徵,這誰也不敢下定論。

然後影象重建提供了一個可以加深特徵理解的途徑。假如說給定一張猴子的某個影象分類特徵,我們重建出來的不同結果中猴子的五官位置均正確保留,而其他的比如顏色等不同結果不太一樣,那麼我們可以理解成此分類網路在分類猴子這個類別的影象的時候,會參考五官的位置來與其他類別進行區分。

下面附上我兩年前在課題組講 seminar 時候畫的一張圖以幫助大家理解:

而通過重建預訓練的分類網路(如 VGG)中的高層特徵,發現重建結果保留了_高層語義資訊_而摒棄了低層的顏色等資訊。

此時此刻,結合咱們剛說的_風格建模_,拍腦門一想,假如我在影象重建時候加上個保留給定風格資訊的約束,那不就可以讓重建出的結果既有我們想要的內容圖的_高層語義資訊_,又有給定風格圖中包含的_風格資訊_嗎?

一個嶄新的領域——影象風格化遷移(Neural Style Transfer)由此誕生。圍繞影象風格化遷移技術,學術界和工業界風起雲湧,英雄倍出。

三部曲之二

上文主要和大家討論了影象風格化遷移的簡介、前傳和起源,目的是想讓大家對風格化這個領域有一個初步的認識。其中起源這一部分比較重要,這裡再做一個簡單回顧以及補充。 

影象風格化遷移源於兩個其他領域:紋理建模(Visual Texture Modelling)和影象重建。 

其中紋理建模(Visual Texture Modelling)又分為兩類: 

(a) 基於統計分佈的引數化紋理建模方法(Parametric Texture Modelling with Summary Statistics)

(b) 基於MRF的非引數化紋理建模方法(Non-parametric Texture Modelling with MRFs)

紋理建模解決了如何對風格特徵進行提取的問題。 

影象重建解決的則是如何將給定的特徵表達重建還原為一張影象。上篇文章中沒有提到的一點是影象重建演算法其實也可以分為兩類: 

(a) 基於線上影象優化的慢速影象重建方法(Slow Image Reconstruction based on Online Image Optimisation)

(b) 基於離線模型優化的快速影象重建方法(Fast Image Reconstruction based on Offline Model Optimisation) 

由名字也可以看出這種分類方式的主要依據是影象重建的速度。第一類影象重建的方法 (a) 是在影象畫素空間做梯度下降來最小化目標函式。

這一類演算法的過程可以理解為:由隨機噪聲作為起始圖,然後不斷迭代改變圖片的所有畫素值來尋找一個目標結果圖 x' ,這個目標結果圖的特徵表達和我們作為重建目標的目標特徵表達 Φ(x) 相似,即畫素迭代的目標為 Φ(x')≈Φ(x) 。

由於每個重建結果都需要在畫素空間進行迭代優化很多次,這種方式是很耗時的(幾百乘幾百的圖需要幾分鐘),尤其是當需要的重建結果是高清圖的時候,佔用的計算資源以及需要的時間開銷很大。

為了加速這一過程,一個直接的想法是我們能不能設計一個前向網路,用資料驅動的方式,餵給它很多訓練資料去提前訓練它,訓練的目標就是給定一個特徵表達作為輸入,這個訓練好的網路只需要一次前向就能輸出一張重建結果影象。

Bingo,這種方式最終被一些德國研究者在一篇 CVPR 論文中證明了其有效性,即第二類方法 (b) 。後續這些德國研究者又融入了生成對抗網路(Generative Adversarial Network)的思想,進一步提升了效果,這個工作發表在了一篇 NIPS 上。 

下面用這張圖總結一下影象風格化演算法的起源和基石,本文剩下部分全是建立在這些內容之上的:

圖1:影象風格化遷移之起源

ok,下面開始這篇文章的重頭戲——影象風格化遷移(Neural Style Transfer)的發展

發展

前面提到,影象風格化遷移演算法=影象重建演算法+紋理建模演算法,而影象重建和紋理建模又各自可以分為兩類方法。於是乎,我們可以很自然地想到,如果將兩類影象重建演算法和兩類紋理建模方法進行排列組合,不就可以得到一系列的影象風格化遷移演算法嘛?

事實上,粗略來講,在影象風格化這一領域大家也確實都是這麼做的。下面我先給出一個現有影象風格化遷移的分類方法,大家可以和前面的圖 1 放在一塊看,影象風格化遷移這一領域的研究脈絡和套路即可瞭然於胸。

▲ 圖2:影象風格化遷移演算法分類方法

下面咱們一起對每一類影象風格化演算法做具體介紹和優缺點分析。為了討論方便,涉及具體演算法時直接採用上面這張圖中的引用序號進行表示。

1. 基於線上影象優化的慢速影象風格化遷移演算法(Slow Neural Method Based On Online Image Optimisation)

1.1. 基於統計分佈的引數化慢速風格化遷移演算法(Parametric Slow Neural Method with Summary Statistics)

通過名字就可以看出,這一類風格化演算法是由基於線上影象優化的慢速影象重建方法和基 於統計分佈的引數化紋理建模方法結合而來。

其中,影象風格化遷移這一領域的祖師爺 Gatys 的開山大作 [4] 就是屬於這一類方法的。在此之前,祖師爺自己先發了一篇 NIPS 提出了一個新的基於 CNN 的紋理建模方法[27] Texture Synthesis Using Convolutional Neural Networks

[27] 的核心思想是在影象經過預訓練的 VGG 網路時的特徵表達(feature map)上計算 Gram 矩陣,利用得到的 Gram 矩陣來表示一種紋理。

Gram 矩陣的計算方式是先將預訓練 VGG 某一層的特徵表達reshape 成,然後用 reshape 後的特徵表達和其轉置矩陣相乘,最後得到的 Gram 矩陣維度為

祖師爺發現這個 Gram 矩陣可以很好地表示大多數紋理。結合咱們在上一篇博文討論的內容,這個 Gram 矩陣的紋理表示方法其實是利用了二階統計量來對紋理進行建模。

祖師爺之後用 Gram 矩陣來對影象中的風格進行建模和提取,再利用慢速影象重建方法,讓重建後的影象以梯度下降的方式更新畫素值,使其 Gram 矩陣接近風格圖的 Gram 矩陣(即風格相似),然後其 VGG 網路的高層特徵表達接近內容圖的特徵表達(即內容相似),實際應用時候經常再加個總變分 TV 項來對結果進行平滑,最終重建出來的結果圖就既擁有風格圖的風格,又有內容圖的內容 Image Style Transfer Using Convolutional Neural Networks

除了 Gram 矩陣外,還有一些其他方式對風格進行建模。[37] 裡 @Naiyan Wang 老師在 IJCAI2017 的文章中從 Domain Adaption 的角度對風格化遷移進行解釋和分析,並提出了一些其他的用於風格建模的方法 Demystifying Neural Style Transfer

這裡簡單解釋一下,Domain Adaption 指的是當訓練資料和測試資料屬於不同的域時,我們通過某種手段利用源域有標籤的訓練資料訓練得到的模型,去預測無標籤的測試資料所在的目標域中的資料。

Domain Adaption 其中一個套路就是以最小化統計分佈差異度量 MMD 的方式,讓目標域中的資料和源域中的資料建立起一種對映轉換關係。

@Naiyan Wang 老師通過公式推導發現,最小化重建結果圖和風格圖的 Gram 統計量差異其實等價於最小化兩個域統計分佈之間的基於二階核函式的 MMD。換言之,風格遷移的過程其實可以看做是讓目標風格化結果圖的特徵表達二階統計分佈去儘可能地逼近風格圖的特徵表達二階統計分佈。

由此可以很自然地想到,既然是衡量統計分佈差異,除了有二階核函式的 MMD 外,其他的 MMD 核函式例如一階線性核函式、高階核函式、高斯核函式,也可能達到和 Gram 統計量類似的效果。實驗證明也確實如此。這些計算風格特徵的方式其實都是在特徵表達(feature map)的所有 channel 上進行計算的。

除了這些貢獻外, @Naiyan Wang 老師還提出了一個新的用 channel-wise 的 BN 統計量去對風格進行建模的方法,即利用 VGG 某些層的特徵表達的每一個channel的均值和方差(channel-wise)來表示風格。表示 VGG 中第 l 層的 feature map 的第 c 個 channel,並取得了很好的效果,後續有很多研究者 follow 了這種風格建模的方式。

看到這裡大家可以發現一點的是,以往風格化演算法在提取特徵的時候都是在高層次的 CNN 特徵空間(feature space)中完成的,雖然這樣做的效果在感知效果上(perceptually)優於利用傳統的在畫素空間(pixel space)計算的特徵,但由於特徵空間是對影象的一種抽象表達,會不可避免丟失一些低層次的如邊緣等的圖形資訊這會導致風格化結果圖中有一些不是很漂亮的變形等。 

@李韶華 老師為解決這一問題,在 ACM MM2017 的一篇文章中 [40] Laplacian-Steered Neural Style Transfer,提出在風格化遷移的過程中同時考慮畫素空間和特徵空間

具體做法為在畫素空間中將內容圖的拉普拉斯運算元的濾波結果和風格化重建結果圖的濾波結果之間的差異作為一個新的 loss,加到祖師爺 Gatys 提出的損失函式上面。這樣的話就彌補了抽象特徵空間丟失低層次影象資訊的缺點。

1.2. 基於MRF的非引數化慢速風格化遷移演算法(Non-parametric Slow Neural Method with MRFs)

另外一類慢速風格化演算法就是利用基於 MRF 的非引數化紋理建模方法對風格資訊進行建模了。代表性工作由浙大出身、德國美茵茨大學 Postdoc Chuan Li 學長完成並發表於 CVPR 2016 [41] Combining Markov Random Fields and Convolutional Neural Networks for Image Synthesis

其核心思想是提出了一個取代 Gram 損失的新的 MRF 損失。思路與傳統的 MRF 非引數化紋理建模方法相似,即先將風格圖和重建風格化結果圖分成若干 patch,然後對於每個重建結果圖中的 patch,去尋找並逼近與其最接近的風格 patch。

與傳統 MRF 建模方法不同之處在於,以上操作是在 CNN 特徵空間中完成的。另外還需要加一個祖師爺 Gatys 提出的內容損失來保證不丟失內容圖中的高層語義資訊。

這種基於 patch 的風格建模方法相比較以往基於統計分佈的方法的一個明顯優勢在於,當風格圖不是一幅藝術畫作,而是和內容圖內容相近的一張攝影照片(Photorealistic Style),這種基於 patch 匹配(patch matching)的方式可以很好地保留影象中的區域性結構等資訊。

2. 基於離線模型優化的快速影象風格化遷移演算法(Fast Neural Method Based On Offline Model Optimisation)

ok,咱們前面介紹的都是用慢速影象重建方法對風格化結果進行重建的,所以速度肯定是比較慢的,而且很吃資源,在工業界落地的成本肯定是很高的。

所以另外一個大的影象風格化遷移演算法分支——快速影象風格化遷移演算法主要解決速度問題,核心思想就是利用基於離線模型優化的快速影象重建方法對風格化結果進行重建,基預先訓練前向網路來解決計算量大、速度慢的問題。

根據一個訓練好的前向網路能夠學習到多少個風格作為分類依據,我們將快速影象風格化遷移演算法分為單模型單風格(PSPM)單模型多風格(MSPM)單模型任意風格(ASPM)的快速風格化遷移演算法。

下面先放一張不同快速風格化方法的對比圖:

2.1. 單模型單風格的快速風格化遷移演算法(Per-Style-Per-Model Fast Neural Method)

單模型單風格的快速風格化遷移演算法是最早的一類快速風格化演算法。主要想法是針對每一個風格圖,我們去訓練一個特定(style specific)的前向模型,這樣當測試的時候,我們只需要向前向模型扔進去一張內容圖,就可以前向出一個風格化結果了。

如此這般,工業化落地就非常方便了,直接將模型打包,做成一個 API,使用者上傳資料後直接把資料扔進去返回結果就好了(模型大小也不大,在淘寶 AI Team 的 @黃真川 哥指導下對模型進行優化並打包,最終用的時候一個 tf 模型才 0.99MB)。 

這一類演算法(簡稱PSPM)其實可以再分成兩類:(1)一類是基於統計分佈的引數化快速風格化PSPM演算法以及(2)基於MRF的非引數化PSPM演算法

(1)這一小類演算法代表性工作主要有兩個,一個由斯坦福的 Justin Johnson 提出(CS231n 的大神 lecture)[42] Perceptual Losses for Real-Time Style Transfer and Super-Resolution,另一個由俄羅斯成立不久的 Skolkovo 科技研究所的 Ulyanov 提出(Deep Image Prior 的作者)[43] Texture Networks: Feed-forward Synthesis of Textures and Stylized Images

這兩個工作的思想相同,都是用一個前向網路求學一個風格。訓練資料可以用 COCO 的 8 萬張圖,損失函式和祖師爺 Gatys 的慢速風格化演算法相同,用 Gram 統計量來進行風格建模。

不同之處在於兩個工作的具體網路框架設計不同,一個基於當時最新的殘差網路設計的,一個是設計了多尺度的網路(我實驗發現基於殘差網路的設計能更好地最小化風格化損失函式,感興趣的同學可以去看我 arXiv 上 Review 的實驗部分)。

Ulyanov 後來又在 CVPR 2017 上對其之前的工作做了改進,他們發現 Instance NormalizationBatch Normalization 能夠更快、更好地使模型達到收斂(其實就是把 batch normalization 的 batch size 設成 1),但其實 Instance Normalization 的 idea 最早是由 @Naiyan Wang 老師在 [1603.04779] Revisiting Batch Normalization For Practical Domain Adaptation 中提出的 ,即文章中的 Adaptive Batch Normalization (AdaBN)

(2)第二小類基於 MRF 的快速 PSPM 風格化演算法也是由 Chuan Li 學長提出的 [47] Precomputed Real-Time Texture Synthesis with Markovian Generative Adversarial Networks,他們將自己之前提出的基於 patch 的慢速風格化演算法進行了加速。同樣是訓練一個前向網路,Chuan Li 學長進一步利用 GAN 中的判別網路的想法來取代他們慢速風格化演算法中的 patch 匹配(patch matching)過程。

這一工作的最終效果雖然不是特別理想(由我個人的審美來看),但這篇文章的理論價值很大,其想法在另一篇具有開創意義的文章,清華出身、BAIR PhD 的大牛朱儁彥的 Image-to-Image Translation with Conditional Adversarial Networks 中被進一步延伸和發展。

2.2. 單模型多風格的快速風格化遷移演算法(Multiple-Style-Per-Model Fast Neural Method)

樓上的單模型單風格的快速風格化遷移演算法對於每一個風格都要訓練一個模型,這個就很不便利了,而且如果在工業落地的時候,有幾百個風格的話還好說,要是有上萬、百萬的風格的話,所有模型佔用的巨大空間開銷就肯定會被產品經理拎出來說了。於是乎,學術圈的很多研究者開始研究咋利用一個模型去學習很多個風格,即單模型多風格的快速風格化遷移演算法(下面簡稱 MSPM)。

大家可以設身處地想一下這個問題,要是需要咱們自己去解決這個問題,可以怎麼去想。

首先把多個風格整合到一個模型中,理論上是合理的。比如咱們就說中國山水畫,有很多著名山水畫作品,但不同山水畫雖然風格不盡相同,但是還是有很多相似的地方的(相似特徵),所以對每一幅山水畫訓練得到的網路之間理論上是有共享的部分的。

於是乎在這種情況下,對每個風格都學習一個網路本來就是一件很冗餘、浪費資源的事情。沿著這個思路想,我們能不能發掘出不同風格網路之間共享的部分,然後對於新的風格只去改變其有差別的部分,共享的部分保持不變呢?

Bingo,這個就是 Google Brain 的眾大佬們研究出來的一個 MSPM 演算法的基本思路[48] A Learned Representation for Artistic Style。他們發現在訓練好的一個風格化網路基礎上,只通過在 Instance Norlization 層上做一個仿射變換(他們起了個名字叫 Conditional Instance Normalization,簡稱 CIN),就可以得到一個具有完全不同風格的結果。

這下好了,我們只需要把 CIN 層中仿射變換的很少的引數與每一個風格進行繫結,每個新風格只需要去訓練這些引數,其餘部分保持不變就 ok 了。

最後實驗效果顯著。但說實話這個有點類似科學發現的意味,CIN 層 work 的理由現在也沒有嚴格的推導證明。一個大概的解釋是 CIN 能夠進行一種 style normalization,能夠將影象中的風格直接 normalize 成另外一種風格。

另一個由 @微軟亞洲研究院 與中科大的聯合培養博士生 @陳鼕鼕 哥提出的 MSPM 法 [49] StyleBank: An Explicit Representation for Neural Image Style Transfer 與 Google Brain 這篇思路有異曲同工之妙,核心思想為把風格化網路中間的幾層單獨拎出來(文章中起了個名字叫 StyleBank 層),與每個風格進行繫結,對於每個新風格只去訓練中間那幾層,其餘部分保持不變。這裡也有一篇 @微軟亞洲研究院 的介紹文章:AI 創造藝術風格化:從圖片到視訊 [1]。 其中特別感謝 @陳鼕鼕 哥幫我 forwarding 演算法結果

ok,上面倆工作的共同點都是把網路的一部分拿出來與每個風格進行繫結,從而實現 MSPM,雖然隨著風格的增加,模型大小不會大很多,但總歸還是會跟著變大。所以呢,另外有一些研究者想,咱能不能試試完全用一個網路,看它能不能學到多個風格。

這時候需要考慮的問題是既然只用一個網路,那就需要給網路一個訊號,我們需要風格化成哪一個風格。這一思路最早由 Amazon AI 的 @張航 在 2017 年 3 月提出 [51] Multi-style Generative Network for Real-time Transfer。 

該演算法的核心思想是把通過 VGG 網路提取到的風格特徵與風格化網路中的多個尺度的中間層的 feature map 通過提出的 Inspiration Layer 結合在一起,相當於將風格特徵作為訊號輸入到網路中來決定要風格化成哪一個風格。

最終演算法的效果非常顯著,由我自己實驗結果來看 [51] 是質量上最接近 PSPM 演算法結果的 MSPM 方法。在 @張航 的博文裡有對這個方法更詳細的介紹:多風格生成網路——實時風格轉換 [2]在此非常感謝 @張航 哥在訓練模型上給予我的幫助

另外除了把風格特徵作為訊號外,另一個選擇是把影象畫素作為訊號輸入進去風格化網路。這一想法的可行性在浙大李一君學長的工作 [50] 中得到了證明 Diversified Texture Synthesis With Feed-Forward Networks。李一君學長首先將每一張風格圖與一個隨機產生的噪聲圖進行繫結,然後將噪聲圖與風格化網路中間層的 feature map 進行 concat,作為網路進行風格選擇的訊號。

2.3. 單模型任意風格的快速風格化遷移演算法(Arbitrary-Style-Per-Model Fast Neural Method)

有了上面的介紹,現在咱們已經能夠做到用一個網路遷移多個風格了,雖然模型大小的問題一定程度上解決了,不過對於新的一組風格,我們仍然有額外訓練時間的開銷。於是有學者開始想,我們能不能搞一個模型出來,做到 Zero-shot Fast Style Transfer,即來一個新風格不需要訓練,我們就可以很快速地把風格化結果輸出來?(這裡我們稱之為單模型任意風格,簡稱 ASPM)。

最早的 ASPM 演算法由多倫多大學的 Tian Qi Chen(不是 UW 的明星博士生陳天奇)提出的 [52] Fast Patch-based Style Transfer of Arbitrary Style。這個演算法是基於 patch 的,可以歸到基於 MRF 的非引數化 ASPM 演算法

基本思想是在 CNN 特徵空間中,找到與內容 patch 匹配的風格 patch 後,進行內容 patch 與風格 patch 的交換(Style Swap),之後用快速影象重建演算法的思想對交換得到的 feature map 進行快速重建。但由於 style swap 需要一定的時間開銷,[52] 沒有達到實時。

第一篇能達到實時的 ASPM 演算法由康奈爾的大牛 @Xun Huang 提出 [46] Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization[46] 中的工作主要受到 MSPM 的 CIN 層啟發,提出一個 Adaptive Instance Normalization (AdaIN)

AdaIN 的輸入是通過 VGG 提取的風格和內容特徵,用資料驅動的方式,通過在大規模風格和內容圖上進行訓練,讓 AdaIN 能夠直接將影象中的內容 normalise 成不同的風格。這一工作錄用為 ICCV 2017 的 Oral。在此非常感謝 @Xun Huang 哥在實驗過程中給予的幫助

另外一個數據驅動的 ASPM 方法由 CIN 的提出者——Google Brain 提出 [53] Exploring the Structure of a Real-time, Arbitrary Neural Artistic Stylization Network

[53] 可以看做是 [48] 的一個 follow-up 的工作,既然通過改變 CIN 層中仿射變換的引數,就可以得到不同的 style,換言之,只要任意給一個風格,我們只需要知道他的 CIN 層中的仿射變換的引數就可以了。

沿著這個思路,Google Brain 的研究者設計和訓練了一個 style prediction network 去專門預測每個 style 的仿射變換的引數,style prediction network 需要大規模 style 和 content 圖來進行訓練。

這個方法的缺點也很明顯,資料驅動的方式不可避免地導致風格化效果與訓練資料集中 style 的種類和數量非常相關。

由以上資料驅動 ASPM 演算法的侷限性,李一君學長進一步思考能不能用一種不需要學習訓練的方式(style learning-free),而是單純使用一系列特徵變換來進行 ASPM 風格遷移 [54]

相關推薦

綜述影象風格演算法盤點 | 大量擴充套件應用

作者丨靜永程學校 | 浙江大學碩士生導師 | 宋明黎教授、俞益洲教授研究方向丨紋理

影象演算法 -- 混合圖層演算法(原始碼)

混合圖層演算法 本文中的混合圖層跟PhotoShop中完全一致。 1正常模式:混合色*不透明度+(100%-混合色不透明度) 2溶解模式:溶解模式下混合色的不透明度及填充都是100%的話,我們就看不到基色圖層。降低混合色圖層的不透明度後,我們就會發現結果色中出現了很多細小

AI行業快報人工智能最新資訊!

編輯機器人 寫作機器人 資訊機器人 大家好,我是寫作機器人小智,這是我自己寫的文章哦!所有AI行業快報1秒生成~AI行業動態近日,阿聯酋駐華大使與搜狗公司IoT事業部產品總監,就中阿人工智能發展、未來合作等話題展開了交流。期間,搜狗旅行翻譯寶直接承擔了同傳的角色。搜狗旅行翻譯寶的中英離線功能可以保

七面阿里現在分享一下阿里面試120道題目

貌似這一點適應的行業最廣,但是我可以很肯定的說:當你從事Java一年後,重新找工作時,才會真實的感受到這句話。 工作第一年,往往是什麼都充滿新鮮感,什麼都學習,衝勁十足的一年;WEB行業知識更新特別快,今天一個框架的新版本,明天又是另一個新框架,有時往往根據專案的需要來不斷學習新東西;所有,

數字訊號處理曲線擬合演算法-----小二乘法

在迴歸分析中,一般任意的資料都可以用一條曲線來表示,這個曲線可以用某一個高次方的代數多項式 y= a + b*x + c*(x)2 + ...來描述,其中 a , b , ...是常數。但是這樣通過每個點的曲線是沒意義的,也不能表示y和x的真實的相關關係。趨勢

七面阿里現在分享一下阿里面試116題阿里天貓、螞蟻金服、阿里巴巴面試題含答案

貌似這一點適應的行業最廣,但是我可以很肯定的說:當你從事Java一年後,重新找工作時,才會真實的感受到這句話。 工作第一年,往往是什麼都充滿新鮮感,什麼都學習,衝勁十足的一年;WEB行業知識更新特別快,今天一個框架的新版本,明天又是另一個新框架,有時往往根據專案的需要來

C# 影象處理影象模糊

/// <summary>          /// 影象模糊化          /// </summary>          /// <param name="bitmap">原始影象</param>         

(教你徹底理解)網路流基本概念與演算法 大流小割

一.網路流:流&網路&割 1.網路流問題(NetWork Flow Problem): 給定指定的一個有向圖,其中有兩個特殊的點源S(Sources)和匯T(Sinks),每條邊有指定的容量(Capacity),求滿足條件的從S到T的最大流(Max

反向傳播演算法解讀,機器學習進階必看!

目前網路上關於反向傳播演算法的教程已經很多,那我們還有必要再寫一份教程嗎?答案是‘需要’。 為什麼這麼說呢?我們教員Sanjeev最近要給本科生上一門人工智慧的課,儘管網上有很多反向傳播演算法的教程,但他卻找不到一份令他滿意的教程,因此我們決定自己寫一份關於反向傳播演

必火微服務寫的的一篇文章

今年有人提出了2018年微服務將瘋狂至死,可見微服務的爭論從未停止過。在這我將自己對微服務的理解整理了一下,希望對大家有所幫助。 什麼是微服務 1)一組小的服務(大小沒有特別的標準,只要同一團隊的工程師理解服務的標識一致即可) 2)獨立的程序(java的

Java序列總結()

概念   實現 Serializable 介面, 它只是一個標記介面,不實現也能夠進行序列化 RMI: 遠端方法呼叫 RPC: 遠端過程呼叫 序列化ID 解決了序列化與反序列出現程式碼不一致的問題, 不一致將導致序列化失敗 private static final long

SpringBoot的外部配置解析!

[toc] # SpringBoot中的配置解析【Externalized Configuration】 ## 本篇要點 - 介紹各種配置方式的優先順序。 - 介紹各種外部化配置方式。 - 介紹yaml的格式及原理。 - 介紹如何繫結並測試型別安全的屬性配置。 - 介紹@ConfigurationPro

Java程式設計師從入門到進階技術書籍推薦十個系列50+本閱讀技術書方法論(珍藏版)

轉載自某大佬部落格:https://pymlovelyq.github.io/2018/10/26/java/ 前言:技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特

Java從入門SE到進階EE技術書籍推薦50+本閱讀技術書方法論

轉載自某大佬部落格:https://pymlovelyq.github.io/2018/10/26/java/ 前言:技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特

史上前端面試知識點(答案)

一.html & js & css 1.AMD和CMD是什麼?它們的區別有哪些? AMD和CMD是二種模組定義規範。現在都使用模組化程式設計,AMD,非同步模組定義;CMD,通用模組定義。AMD依賴前置,CMD依賴就近。CMD的API職責單一,沒有全域性

開源 | 語音識別商用開原始碼與免費開放平臺盤點分析

轉自:http://soundonline.org/2016/01/76.html 聲學線上前幾日盤點了語音識別業界相關的公司和技術,引起了眾多朋友的關注。不少朋友都在諮詢聲學線上關於技術細節問題,因此,我們打算春節期間連續釋出幾篇深度文章,希望從語音識別領域的公司、技

nginx常用功能揭祕(福利~~)

本文旨在用最通俗的語言講述最枯燥的基本知識 nginx作為一個高效能的web伺服器,想必大家垂涎已久,蠢蠢欲動,想學習一番了吧,語法不多說,網上一大堆。下面博主就nginx的非常常用的幾個功能做一些講述和分析,學會了這幾個功能,平常的開發和部署就不是什麼問題了。因此希

SpringBoot+zk+dubbo架構實踐(五)搭建微服務電商架構(GitHub地址)

往期回顧前言我們的sb+zk+dubbo微服務架構實踐就要完結了。最後完成2件事情。 1、Spring boot + zk + dubbo 整合 mybatis 和 swagger 2、實現登入使用者的 增刪改查業務,附帶一個pagehelpe實現的分頁查詢功能。 目的是

BAT演算法面試130題阿里、百度、騰訊、京東、美團、今日頭條

【百度、阿里、騰訊、京東、美團、今日頭條】等公司都會必考關於演算法的面試題目,今天總結演算法和題目如下: 演算法基礎: 第一:複雜度估算和排序演算法(上) 1) 時間複雜度和空間複雜度 2)認識對數器 3)氣泡排序 4)選擇排序 5)插入排序 6)如何

史上Java面試266題演算法+快取+TCP+JVM+搜尋+分散式+資料庫

JAVA基礎 JAVA中的幾種基本資料型別是什麼,各自佔用多少位元組。 String類能被繼承嗎,為什麼。 String,Stringbuffer,StringBuilder的區別。 ArrayList和LinkedList有什麼區別。 講講類的例項化順序,比如父類