【翻译】AdaIN:Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization
文章目錄
- Abstract
- 1、緒論
- 2、相關(guān)工作
- 3、背景介紹
- 3.1. 批量歸一化(BN)
- 3.2. 實例歸一化(IN)
- 3.3. 條件性實例歸一化(CIN)
- 4、解釋實例歸一化(IN)
- 5、自適應(yīng)實例歸一化(AdaIN)
- 6、實驗設(shè)置
- 6.1. 構(gòu)建
- 6.2. 訓(xùn)練
- 7、結(jié)果
- 7.1. 與其他方法的比較
- 7.2. 額外的實驗
- 7.3. 運行時控制
- 8、討論與結(jié)論
Abstract
Gatys等人最近引入了一種神經(jīng)算法,以另一圖像的風(fēng)格渲染內(nèi)容圖像,實現(xiàn)所謂的風(fēng)格轉(zhuǎn)移。然而,他們的框架工作需要一個緩慢的迭代優(yōu)化過程,這限制了其實際應(yīng)用。有人提出用前饋神經(jīng)網(wǎng)絡(luò)進行快速逼近,以加快神經(jīng)風(fēng)格轉(zhuǎn)移的速度。不幸的是,速度的提高是有代價的:網(wǎng)絡(luò)通常被綁在一套固定的風(fēng)格上,不能適應(yīng)任意的新風(fēng)格。在本文中,我們提出了一個簡單而有效的方法,首次實現(xiàn)了實時的任意風(fēng)格轉(zhuǎn)移。我們的方法的核心是一個新穎的自適應(yīng)實例規(guī)范化(AdaIN)層,它將內(nèi)容特征的平均值和方差與風(fēng)格特征的平均值和方差相一致。我們的方法實現(xiàn)了與現(xiàn)有最快的方法相媲美的速度,而且不受預(yù)先定義的風(fēng)格集的限制。此外,我們的方法允許靈活的用戶控制,如內(nèi)容-風(fēng)格權(quán)衡、風(fēng)格插值、顏色和空間控制,所有這些都使用一個前饋神經(jīng)網(wǎng)絡(luò)。
1、緒論
Gatys等人的開創(chuàng)性工作[16]表明,深度神經(jīng)網(wǎng)絡(luò)(DNNs)不僅可以編碼圖像的內(nèi)容,還可以編碼圖像的風(fēng)格信息。此外,圖像的風(fēng)格和內(nèi)容在某種程度上是可分離的:在保留圖像內(nèi)容的同時,有可能改變其風(fēng)格。[16]的風(fēng)格轉(zhuǎn)移方法足夠靈活,可以結(jié)合任意圖像的內(nèi)容和風(fēng)格。然而,它依賴于一個優(yōu)化過程,其速度非常慢。
人們在加速神經(jīng)風(fēng)格轉(zhuǎn)移方面做了大量的工作。[24, 51, 31]試圖訓(xùn)練前饋神經(jīng)網(wǎng)絡(luò),通過單一的for-ward pass來完成風(fēng)格化。大多數(shù)前饋方法的一個主要限制是,每個網(wǎng)絡(luò)都被限制在一個單一的風(fēng)格。最近有一些作品解決了這個問題,但它們要么仍然局限于有限的樣式集[11, 32, 55, 5],要么比單一樣式轉(zhuǎn)移方法慢得多[6]。
在這項工作中,我們提出了第一個神經(jīng)風(fēng)格轉(zhuǎn)移算法,解決了這個基本的靈活性速度困境。我們的方法可以實時轉(zhuǎn)移任意的新風(fēng)格,結(jié)合了基于優(yōu)化的框架[16]的靈活性和類似于最快的前饋方法[24, 52]的速度。我們的方法受到了實例規(guī)范化(IN)[52, 11]層的啟發(fā),它在前饋式傳輸中的效果令人驚訝。為了解釋實例歸一化的成功,我們提出了一個新的解釋,即實例歸一化通過歸一化特征統(tǒng)計來執(zhí)行風(fēng)格歸一化,這些特征統(tǒng)計已經(jīng)被發(fā)現(xiàn)攜帶了一個圖像的風(fēng)格信息[16, 30, 33]。在我們的解釋的激勵下,我們引入了對IN的簡單擴展,即自適應(yīng)實例規(guī)范化(AdaIN)。給定一個內(nèi)容輸入和一個風(fēng)格輸入,AdaIN簡單地調(diào)整了內(nèi)容輸入的平均值和方差,使其與風(fēng)格輸入相匹配。通過實驗,我們發(fā)現(xiàn)AdaIN通過轉(zhuǎn)移特征統(tǒng)計數(shù)據(jù)有效地結(jié)合了前者和后者的風(fēng)格。然后學(xué)習(xí)一個解碼器網(wǎng)絡(luò),通過將AdaIN的輸出倒轉(zhuǎn)回圖像空間來生成最終的風(fēng)格化圖像。我們的方法比[16]快了近三個數(shù)量級,而且沒有犧牲將輸入轉(zhuǎn)移到任意的新樣式的靈活性。此外,我們的方法在運行時提供豐富的用戶控制,而不需要對訓(xùn)練過程進行任何修改。
2、相關(guān)工作
風(fēng)格轉(zhuǎn)移。風(fēng)格轉(zhuǎn)移的問題起源于非攝影現(xiàn)實的渲染[28],并與紋理合成和轉(zhuǎn)移密切相關(guān)[13, 12, 14]。一些早期的方法包括線性濾波響應(yīng)的直方圖匹配[19]和非參數(shù)采樣[12, 15]。這些方法通常依賴于低級別的統(tǒng)計數(shù)字,而且不能捕捉語義結(jié)構(gòu)。Gatys等人[16]通過在DNN的卷積層中匹配特征統(tǒng)計數(shù)據(jù),首次展示了令人印象深刻的風(fēng)格轉(zhuǎn)移結(jié)果。最近,有人提出了對[16]的若干改進。Li和Wand[30]在深度特征空間中引入了一個基于馬爾科夫隨機場(MRF)的框架來執(zhí)行局部模式。Gatys等人[17]提出了控制顏色保存、空間位置和風(fēng)格轉(zhuǎn)移規(guī)模的方法。Ruder等人[45]通過施加時間限制,提高了視頻風(fēng)格傳輸?shù)馁|(zhì)量。
Gatys等人[16]的框架是基于一個緩慢的優(yōu)化過程,迭代更新圖像以最小化內(nèi)容損失和由損失網(wǎng)絡(luò)計算的風(fēng)格損失。即使使用現(xiàn)代的GPU,它也需要幾分鐘的時間來收斂。因此,在移動應(yīng)用中的設(shè)備上處理速度太慢,不實用。一個常見的變通方法是用一個前饋神經(jīng)網(wǎng)絡(luò)取代優(yōu)化過程,該網(wǎng)絡(luò)被訓(xùn)練成最小化相同的目標[24, 51, 31]。這些前饋式轉(zhuǎn)移方法比基于優(yōu)化的方法快三個數(shù)量級,為實時應(yīng)用打開了大門。Wang等人[53]用多分辨率結(jié)構(gòu)增強了前饋式傳輸?shù)念w粒度。Ulyanov等人[52]提出了提高生成樣本的質(zhì)量和多樣性的方法。然而,上述前饋方法的局限性在于,每個網(wǎng)絡(luò)都被束縛在一個固定的風(fēng)格上。為了解決這個問題,Dumoulin等人[11]引入了一個能夠編碼32種風(fēng)格及其插值的單一網(wǎng)絡(luò)。在我們的工作中,Li等人[32]提出了一個前饋架構(gòu),可以合成多達300種紋理和轉(zhuǎn)換16種風(fēng)格。但是,上述兩種方法仍然不能適應(yīng)訓(xùn)練期間沒有觀察到的任意風(fēng)格。
最近,Chen和Schmidt[6]介紹了一種前饋方法,該方法可以通過風(fēng)格互換層來轉(zhuǎn)移任意風(fēng)格。鑒于內(nèi)容和風(fēng)格圖像的特征激活,風(fēng)格互換層以逐個補丁的方式將內(nèi)容特征替換為最匹配的風(fēng)格特征。然而,他們的風(fēng)格互換層創(chuàng)造了一個新的計算瓶頸:對于512×512的輸入圖像,95%以上的計算都花在風(fēng)格互換上。我們的方法也允許任意的風(fēng)格轉(zhuǎn)換,同時比[6]快1-2個數(shù)量級。
風(fēng)格轉(zhuǎn)換的另一個核心問題是使用何種風(fēng)格損失函數(shù)。Gatys等人[16]的原始框架是通過匹配特征激活之間的二階統(tǒng)計學(xué)來匹配風(fēng)格的,由Gram 矩陣捕獲。其他有效的損失函數(shù)也被提出,如MRF損失[30],對抗性損失[31],直方圖損失[54],CORAL損失[41],MMD損失[33],以及通道均值和方差之間的距離[33]。請注意,所有上述損失函數(shù)的目的是在風(fēng)格圖像和合成圖像之間匹配一些特征統(tǒng)計。
深度生成性圖像建模。有幾個用于圖像生成的替代框架,包括變化的自動編碼器[27]、自動回歸模型[40]和生成對抗網(wǎng)絡(luò)(GANs)[18]。值得注意的是,GANs已經(jīng)取得了最令人印象深刻的視覺質(zhì)量。對GAN框架的各種改進已經(jīng)被提出,如條件生成[43,23],多階段處理[9,20],以及更好的訓(xùn)練目標[46,1]。GANs也被應(yīng)用于風(fēng)格轉(zhuǎn)移[31]和跨領(lǐng)域的圖像生成[50, 3, 23, 38, 37, 25] 。
3、背景介紹
3.1. 批量歸一化(BN)
Ioffe和Szegedy[22]的開創(chuàng)性工作引入了批量歸一化(BN)層,通過歸一化特征統(tǒng)計,大大緩解了前饋網(wǎng)絡(luò)的訓(xùn)練。批量歸一化層最初是為了加速判別性網(wǎng)絡(luò)的訓(xùn)練,但在生成性圖像建模中也被發(fā)現(xiàn)很有效[42]。給定一個輸入批次x∈RN×C×H×W,BN將每個單獨的特征通道的平均值和標準差歸一化:
其中,γ、β∈RC是從數(shù)據(jù)中學(xué)習(xí)的仿射參數(shù);μ(x)、σ(x)∈RC是平均數(shù)和標準差,在每個特征通道的批次大小和空間維度上獨立地計算:
BN在訓(xùn)練過程中使用小批量的統(tǒng)計數(shù)據(jù),在推理過程中用流行的統(tǒng)計數(shù)據(jù)取代它們,引入了訓(xùn)練和推理之間的差異。最近提出了批量再歸一化[21],通過在訓(xùn)練期間逐漸使用流行的統(tǒng)計數(shù)據(jù)來解決這個問題。作為BN的另一個有趣的應(yīng)用,Li等人[34]發(fā)現(xiàn)BN可以通過重新計算目標域中的流行統(tǒng)計數(shù)據(jù)來緩解域的轉(zhuǎn)移。最近,人們提出了幾種替代性的歸一化方案,以將BN的有效性擴展到遞歸架構(gòu)[35, 2, 47, 8, 29, 44] 。
3.2. 實例歸一化(IN)
在最初的前饋風(fēng)格化方法[51]中,風(fēng)格轉(zhuǎn)移網(wǎng)絡(luò)在每個卷積層之后包含一個BN層。令人驚訝的是,Ulyanov等人[52]發(fā)現(xiàn),僅僅通過用IN層取代BN層就可以實現(xiàn)顯著的改進:
與BN層不同,這里的μ(x)和σ(x)是對每個通道和每個樣本獨立進行跨空間維度的計算:
另一個區(qū)別是,IN層在測試時的應(yīng)用是不變的,而BN層通常是用群體統(tǒng)計來取代小批量統(tǒng)計。
3.3. 條件性實例歸一化(CIN)
Dumoulin等人[11]提出了一個條件實例規(guī)范化(CIN)層,而不是學(xué)習(xí)單一的仿生參數(shù)γ和β,該層為每種風(fēng)格s學(xué)習(xí)不同的參數(shù)γs和βs:
在訓(xùn)練過程中,一個風(fēng)格圖像和它的索引s是從一個固定的風(fēng)格集合s∈{1,2,…,S}中隨機選擇的。(在他們的實驗中S=32)。然后,該圖像被一個風(fēng)格轉(zhuǎn)移網(wǎng)絡(luò)處理,其中相應(yīng)的γs和βs被用于CIN層。令人驚訝的是,通過在IN層使用相同的卷積參數(shù)和不同的仿生參數(shù),該網(wǎng)絡(luò)可以生成完全不同風(fēng)格的圖像。
與沒有歸一化層的網(wǎng)絡(luò)相比,帶有CIN層的網(wǎng)絡(luò)需要2FS的額外參數(shù),其中F是網(wǎng)絡(luò)中特征圖的總數(shù)量[11]。由于額外參數(shù)的數(shù)量與樣式的數(shù)量呈線性關(guān)系,因此,將他們的方法擴展到對大量樣式(如數(shù)萬種)進行建模是一個挑戰(zhàn)。此外,他們的方法不能適應(yīng)任意的新風(fēng)格而不重新訓(xùn)練網(wǎng)絡(luò)。
4、解釋實例歸一化(IN)
盡管(條件)實例規(guī)范化取得了巨大成功,但它們在風(fēng)格遷移方面特別有效的原因仍然難以捉摸。 Ulyanov等人[52]將IN的成功歸功于它對內(nèi)容圖像的對比度的不變性。然而,IN是在特征空間發(fā)生的,因此它應(yīng)該比像素空間的簡單對比度歸一化有更深遠的影響。也許更令人驚訝的是,IN中的仿生參數(shù)可以完全改變輸出圖像的風(fēng)格。
眾所周知,DNN的卷積特征統(tǒng)計可以捕捉圖像的風(fēng)格[16, 30, 33]。雖然Gatys等人[16]使用二階統(tǒng)計量作為他們的優(yōu)化目標,但Li等人[33]最近表明,匹配許多其他統(tǒng)計量,包括通道均值和方差,也對風(fēng)格轉(zhuǎn)移有效。在這些觀察的啟發(fā)下,我們認為實例規(guī)范化通過規(guī)范化特征統(tǒng)計,即均值和方差,執(zhí)行一種風(fēng)格規(guī)范化的形式。盡管DNN在[16, 33]中充當(dāng)了圖像描述符,但我們認為生成器網(wǎng)絡(luò)的特征統(tǒng)計也可以控制生成圖像的風(fēng)格。
我們運行改進的紋理網(wǎng)絡(luò)[52]的代碼來執(zhí)行單式轉(zhuǎn)移,有IN或BN層。正如預(yù)期的那樣,帶有IN的模型比BN的模型收斂得更快(圖1(a))。為了測試[52]中的解釋,我們隨后通過對亮度變化進行直方圖均衡化,將所有訓(xùn)練圖像歸一到相同的對比度。如圖1(b)所示,IN仍然有效,說明[52]的解釋是不完整的。為了驗證我們的假設(shè),我們使用[24]提供的預(yù)先訓(xùn)練好的風(fēng)格轉(zhuǎn)移網(wǎng)絡(luò)將所有訓(xùn)練圖像歸一到相同的風(fēng)格(與目標風(fēng)格不同)。根據(jù)圖1?,當(dāng)圖像已經(jīng)被歸一化時,IN帶來的改進變得更小。這種差距可以解釋為[24]的風(fēng)格規(guī)范化并不完美。另外,在風(fēng)格規(guī)范化的圖像上訓(xùn)練的BN模型可以和在原始圖像上訓(xùn)練的IN模型一樣快速收斂。我們的結(jié)果表明,IN確實進行了一種風(fēng)格歸一化。
圖1. 為了理解IN在風(fēng)格轉(zhuǎn)換中的有效性,我們用(a)MS-COCO[36]中的原始圖像,(b)對比度歸一化的圖像,以及(c)使用預(yù)先訓(xùn)練好的風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)[24]的風(fēng)格歸一化圖像來訓(xùn)練IN模型和BN模型。即使所有的訓(xùn)練圖像都被歸一化為相同的對比度,IN帶來的改進仍然很明顯,但當(dāng)所有的圖像都被(近似)歸一化為相同的風(fēng)格時,改進就小得多。我們的結(jié)果表明,IN執(zhí)行的是一種風(fēng)格歸一化。
由于BN對一批樣本而不是單個樣本的特征統(tǒng)計進行了歸一化處理,因此可以直觀地理解為將一批樣本歸一化為以單個樣式為中心的統(tǒng)計。然而,每個單一的樣本仍然可能有不同的風(fēng)格。當(dāng)我們想把所有的圖像轉(zhuǎn)移到相同的風(fēng)格時,這是不可取的,就像最初的前饋風(fēng)格轉(zhuǎn)移算法[51]那樣。盡管卷積層可能會學(xué)習(xí)彌補批次內(nèi)的風(fēng)格差異,但它給訓(xùn)練帶來了額外的挑戰(zhàn)。另一方面,IN可以將每個樣本的風(fēng)格歸一到目標風(fēng)格。由于網(wǎng)絡(luò)的其他部分可以專注于內(nèi)容操作,而放棄原始風(fēng)格的形成,因此訓(xùn)練變得更加容易。CIN成功背后的原因也很清楚:不同的仿射參數(shù)可以將特征統(tǒng)計量歸一到不同的值,從而將輸出圖像歸一到不同的風(fēng)格。
5、自適應(yīng)實例歸一化(AdaIN)
如果IN將輸入規(guī)范化為由仿生參數(shù)指定的單一風(fēng)格,那么是否有可能通過使用自適應(yīng)仿生變換使其適應(yīng)任意給定的風(fēng)格?在這里,我們提出一個對IN的簡單擴展,我們稱之為自適應(yīng)實例規(guī)范化(AdaIN)。AdaIN接收一個內(nèi)容輸入x和一個風(fēng)格輸入y,并簡單地調(diào)整x的通道的平均值和方差以匹配y的平均值和方差。與 BN、IN 或 CIN 不同,AdaIN 沒有可學(xué)習(xí)的仿射參數(shù)。相反,它從風(fēng)格輸入中自適應(yīng)地計算仿射參數(shù):
其中,我們只是用σ(y)對歸一化的內(nèi)容輸入進行縮放,并用μ(y)對其進行移動。與IN類似,這些統(tǒng)計數(shù)字是跨空間位置計算的。
直觀地說,讓我們考慮一個檢測某種風(fēng)格的筆觸的特征通道。具有這種筆觸的風(fēng)格圖像會對該特征產(chǎn)生較高的平均激活度。AdaIN產(chǎn)生的輸出將對這一特征產(chǎn)生同樣高的平均激活,同時保留了內(nèi)容圖像的空間結(jié)構(gòu)。筆觸特征可以通過前饋解碼器倒置到圖像空間,與[10]類似。這個特征的變化可以編碼更微妙的風(fēng)格信息,這些信息也被轉(zhuǎn)移到AdaIN的輸出和最終的輸出圖像。
簡而言之,AdaIN通過轉(zhuǎn)移特征統(tǒng)計,特別是通道平均數(shù)和方差,在特征空間中進行風(fēng)格轉(zhuǎn)移。我們的AdaIN層扮演著與[6]中提出的風(fēng)格互換層類似的角色。雖然風(fēng)格互換操作非常耗時和耗內(nèi)存,但我們的AdaIN層和IN層一樣簡單,幾乎不增加任何計算成本。
6、實驗設(shè)置
圖2顯示了我們基于提議的AdaIN層的風(fēng)格轉(zhuǎn)換網(wǎng)的概況。代碼和預(yù)先訓(xùn)練好的模型(在Torch 7[7]中)可在以下網(wǎng)站獲得:https://github.com/xunhuang1995/AdaIN-style
圖2. 我們的風(fēng)格轉(zhuǎn)換算法的概述。我們使用一個固定的VGG-19網(wǎng)絡(luò)的前幾層來編碼內(nèi)容和風(fēng)格圖像。一個AdaIN層被用來在特征空間中進行風(fēng)格轉(zhuǎn)換。一個解碼器被用來將AdaIN的輸出反轉(zhuǎn)到圖像空間。我們使用相同的VGG編碼器來計算內(nèi)容損失Lc(公式12)和風(fēng)格損失Ls(公式13)。
6.1. 構(gòu)建
我們的風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)T將一個內(nèi)容圖像c和一個任意的風(fēng)格圖像s作為輸入,并合成一個將前者的內(nèi)容和后者的風(fēng)格重新組合的輸出圖像。我們采用一個簡單的編碼器-解碼器架構(gòu),其中編碼器f被固定在預(yù)先訓(xùn)練好的VGG-19[48]的前幾層(最多到4 1)。在對特征空間中的內(nèi)容和風(fēng)格圖像進行編碼后,我們將兩個特征圖送入AdaIN層,將內(nèi)容特征圖的平均值和方差與風(fēng)格特征圖的平均值和方差對齊,產(chǎn)生目標特征圖t:
一個隨機初始化的解碼器g被訓(xùn)練為將t映射回圖像空間,生成風(fēng)格化的圖像T(c, s):
解碼器主要反映了編碼器的情況,所有的池化層被最近的上采樣所取代,以減少棋盤效應(yīng)。我們在f和g中使用反射填充以避免邊界偽影。另一個重要的架構(gòu)選擇是解碼器是否應(yīng)該使用實例、批量或無規(guī)范化層。正如第4節(jié)所討論的,IN將每個樣本歸一化為單一風(fēng)格,而BN將一批樣本歸一化為以單一風(fēng)格為中心。當(dāng)我們希望解碼器生成風(fēng)格迥異的圖像時,這兩種方法都是不可取的。因此,我們在解碼器中不使用歸一化層。在第7.1節(jié)中,我們將表明解碼器中的IN/BN層確實會損害性能。
6.2. 訓(xùn)練
我們使用MS-COCO[36]作為內(nèi)容圖像,從WikiArt[39]收集的繪畫數(shù)據(jù)集作為風(fēng)格圖像來訓(xùn)練我們的網(wǎng)絡(luò),并按照[6]的設(shè)置。每個數(shù)據(jù)集大約包含80,000個訓(xùn)練實例。我們使用adam優(yōu)化器[26]和8個內(nèi)容-風(fēng)格圖像對的批量大小。在訓(xùn)練過程中,我們首先將兩幅圖像的最小尺寸調(diào)整為512,同時預(yù)留長寬比,然后隨機裁剪尺寸為256×256的區(qū)域。由于我們的網(wǎng)絡(luò)是完全卷積的,因此在測試過程中,它可以應(yīng)用于任何尺寸的圖像。
與[51, 11, 52]類似,我們使用預(yù)先訓(xùn)練好的VGG- 19[48]來計算損失函數(shù)來訓(xùn)練解碼器:
它是內(nèi)容損失Lc和風(fēng)格損失Ls的加權(quán)組合,風(fēng)格損失權(quán)重為λ。內(nèi)容損失是目標特征和輸出圖像特征之間的歐氏距離。我們使用AdaIN輸出t作為內(nèi)容目標,而不是常用的內(nèi)容圖像的特征響應(yīng)。我們發(fā)現(xiàn)這將導(dǎo)致更快的收斂,并且與我們反轉(zhuǎn)AdaIN輸出t的目標相一致。
由于我們的AdaIN層只傳輸風(fēng)格特征的平均值和標準偏差,我們的風(fēng)格損失只與這些統(tǒng)計數(shù)據(jù)相匹配。盡管我們發(fā)現(xiàn)常用的Gram矩陣損失可以產(chǎn)生類似的結(jié)果,但我們與IN的統(tǒng)計數(shù)據(jù)相匹配,因為它在概念上更簡潔。Li等人[33]也對這種風(fēng)格損失進行了探討。
其中,每個φi表示VGG-19中用于計算風(fēng)格損失的一個層。在我們的實驗中,我們使用具有相同權(quán)重的relu1 1, relu2 1, relu3 1, relu4 1層。
7、結(jié)果
7.1. 與其他方法的比較
在本小節(jié)中,我們將我們的方法與三種類型的風(fēng)格轉(zhuǎn)換方法進行比較:1)靈活但緩慢的基于優(yōu)化的方法[16],2)限制于單一風(fēng)格的快速前饋方法[52],以及3)中等速度的基于靈活補丁的方法[6]。如果沒有特別提到,所比較的方法的結(jié)果是通過在默認配置下運行其代碼得到的。對于[6],我們使用了由作者提供的預(yù)先訓(xùn)練好的逆向網(wǎng)絡(luò)。作者提供的預(yù)訓(xùn)練網(wǎng)絡(luò)。所有測試圖像的尺寸為512×512。
定性的例子。在圖4中,我們展示了由比較方法產(chǎn)生的風(fēng)格轉(zhuǎn)移結(jié)果的例子。請注意,所有的測試風(fēng)格圖像在我們的模型訓(xùn)練過程中從未被觀察過,而[52]的結(jié)果是通過對每個測試風(fēng)格擬合一個網(wǎng)絡(luò)得到的。即便如此,我們的風(fēng)格化圖像的質(zhì)量與[52]和[16]的許多圖像(例如,第1、2、3行)相比還是很有競爭力。在其他一些情況下(如第5行),我們的方法稍微落后于[52]和[16]的質(zhì)量。這并不意外,因為我們認為在速度、靈活性和質(zhì)量之間有一個三方權(quán)衡。與[6]相比,我們的方法似乎在大多數(shù)對比的圖像上更忠實地傳遞了風(fēng)格。最后一個例子清楚地說明了[6]的一個主要局限性,它試圖將每個內(nèi)容補丁與最相近的風(fēng)格補丁相匹配。然而,如果大多數(shù)內(nèi)容補丁與少數(shù)不代表目標風(fēng)格的風(fēng)格補丁相匹配,風(fēng)格轉(zhuǎn)換就會失敗。因此,我們認為匹配全局特征統(tǒng)計是一個更普遍的解決方案,盡管在某些情況下(如第3行),[6]的方法也能產(chǎn)生吸引人的結(jié)果。
量化評價。我們的算法是否為了更高的速度和靈活性而犧牲了一些質(zhì)量,如果是的話,犧牲了多少?為了定量地回答這個問題,我們將我們的方法與基于優(yōu)化的方法[16]和快速單一風(fēng)格轉(zhuǎn)移方法[52]在內(nèi)容和風(fēng)格損失方面進行比較。因為我們的方法使用了基于IN統(tǒng)計的風(fēng)格損失,所以我們也相應(yīng)地修改了[16]和[52]中的損失函數(shù),以進行公平的比較(他們在圖4中的重新結(jié)果仍然是用默認的 Gram 損失得到的)。這里顯示的內(nèi)容損失與[52, 16]中的相同。報告的數(shù)字是在WikiArt數(shù)據(jù)集[39]和MS-COCO[36]的測試集中隨機選擇的10張風(fēng)格圖片和50張內(nèi)容圖片的平均值。
圖4. 風(fēng)格轉(zhuǎn)移結(jié)果的例子。所有測試的內(nèi)容和風(fēng)格圖像在訓(xùn)練過程中從未被我們的網(wǎng)絡(luò)觀察到。
如圖3所示,我們合成的圖像的平均內(nèi)容和風(fēng)格損失略高,但與Ulyanov等人[52]的單一風(fēng)格轉(zhuǎn)移方法相當(dāng)。 特別是,我們的方法和[52]在50到100次迭代優(yōu)化之間都獲得了與[16]類似的風(fēng)格損失。考慮到我們的網(wǎng)絡(luò)在訓(xùn)練期間從未見過測試風(fēng)格,而[52]的每個網(wǎng)絡(luò)都是在測試風(fēng)格上專門訓(xùn)練的,這表明我們的方法具有很強的泛化能力。另外,請注意,我們的風(fēng)格損失比原始內(nèi)容圖像的損失小得多。
圖3. 不同方法在風(fēng)格和內(nèi)容損失方面的定量比較。數(shù)字是在我們的測試集中隨機選擇的10張風(fēng)格圖片和50張內(nèi)容圖片的平均值。
速度分析。我們的大部分計算都花在了content編碼、style編碼和解碼上,每一項大概都要花三分之一的時間。在一些應(yīng)用場景中,如視頻處理,風(fēng)格圖像只需要編碼一次,AdaIN可以使用存儲的風(fēng)格統(tǒng)計數(shù)據(jù)來處理所有后續(xù)圖像。在其他一些情況下(例如,將相同的內(nèi)容轉(zhuǎn)移到不同的樣式),花在內(nèi)容編碼上的計算可以被共享。
在Tab. 1 我們將我們的方法與以前的方法[16, 52, 11, 6]進行比較。不包括樣式編碼的時間,我們的算法對256×256和512×512的圖像分別以56和15FPS的速度運行,這使得我們可以實時處理用戶上傳的任意樣式。在適用于任意樣式的算法中,我們的方法比[16]快3個數(shù)量級,比[6]快1-2個數(shù)量級。與[6]相比,速度的提高對于更高分辨率的圖像來說尤其重要,因為[6]中的樣式交換層不能很好地擴展到高分辨率的樣式圖像。此外,我們的方法實現(xiàn)了與僅限于少數(shù)風(fēng)格的前饋方法相媲美的速度[52, 11]。我們的方法的處理時間稍長,主要是由于我們的基于VGG的網(wǎng)絡(luò)較大,而不是方法上的限制。如果有一個更有效的結(jié)構(gòu),我們的速度可以進一步提高。
表1. 256×256和512×512圖像的速度比較(以秒計)。我們的方法實現(xiàn)了與僅限于少數(shù)風(fēng)格的方法相媲美的速度[52, 11],同時比其他適用于任意風(fēng)格的現(xiàn)有算法快得多[16, 6]。我們顯示了不包括和包括(括號內(nèi))樣式編碼程序的處理時間。結(jié)果是用Pascal Titan X GPU獲得的,并對100張圖片進行了平均。
7.2. 額外的實驗
在本小節(jié)中,我們進行了實驗來證明我們重要的架構(gòu)選擇。我們把第6節(jié)中描述的方法稱為Enc-AdaIN-Dec。我們對一個名為Enc-Concat-Dec的模型進行了實驗,該模型用連接法取代了AdaIN,這是一個自然的基線策略,將內(nèi)容和風(fēng)格圖像的信息結(jié)合起來。此外,我們在解碼器中運行帶有BN/IN層的模型,分別表示為Enc-AdaIN-BNDec和Enc-AdaIN-INDec的再光譜。其他訓(xùn)練設(shè)置保持不變。
在圖5和圖6中,我們展示了比較方法的例子和訓(xùn)練曲線。在Enc-Concat-Dec基線生成的圖像中(圖5(d)),可以清楚地觀察到風(fēng)格圖像的物體輪廓,這表明該網(wǎng)絡(luò)工作未能將風(fēng)格信息與風(fēng)格圖像的內(nèi)容分開。這也與圖6一致,Enc-Concat-Dec可以達到低風(fēng)格損失,但不能減少內(nèi)容損失。帶有BN/IN層的模型也獲得了質(zhì)量上更差的結(jié)果,而且損失始終較高。帶有IN層的結(jié)果尤其差。這再次驗證了我們的主張,即IN層傾向于將輸出歸一化為單一風(fēng)格,因此當(dāng)我們想要生成不同風(fēng)格的圖像時,應(yīng)該避免。
圖5. 與基線的比較。在融合內(nèi)容和風(fēng)格信息方面,AdaIN比連接法的效率高得多。此外,重要的是不要在解碼器中使用BN或IN層。
圖6. 風(fēng)格和內(nèi)容損失的訓(xùn)練曲線。
7.3. 運行時控制
為了進一步突出我們方法的靈活性,我們展示了我們的風(fēng)格轉(zhuǎn)換網(wǎng)絡(luò)允許用戶控制風(fēng)格化的程度,在不同的風(fēng)格之間進行插值,在保留顏色的同時轉(zhuǎn)換風(fēng)格,以及在不同的空間區(qū)域使用不同的風(fēng)格。請注意,所有這些控制都是在運行時使用同一個網(wǎng)絡(luò)進行的,不需要對訓(xùn)練程序做任何修改。
內(nèi)容-風(fēng)格的權(quán)衡。風(fēng)格轉(zhuǎn)換的程度可以在訓(xùn)練中通過調(diào)整公式中的風(fēng)格權(quán)重λ來控制。11. 此外,我們的方法還允許在測試時通過插值將特征圖送入解碼器來進行內(nèi)容風(fēng)格的權(quán)衡。請注意,這相當(dāng)于在AdaIN的仿生參數(shù)之間進行插值。
當(dāng)α=0時,該網(wǎng)絡(luò)試圖忠實地重建內(nèi)容圖像,而當(dāng)α=1時,則試圖合成最風(fēng)格化的圖像。如圖7所示,通過將α從0變?yōu)?,可以觀察到內(nèi)容相似性和風(fēng)格相似性之間的平穩(wěn)過渡。
圖7. 內(nèi)容-風(fēng)格的權(quán)衡。在運行時,我們可以通過改變Equ.14 中的權(quán)重α來控制內(nèi)容和風(fēng)格之間的平衡。
風(fēng)格插值。為了在一組具有相應(yīng)權(quán)重w1, w2, …, wK的K風(fēng)格圖像s1, s2, …, sK之間進行插值,使∑K k=1 wk = 1,我們同樣在特征圖之間進行插值(結(jié)果見圖8)。
圖8. 風(fēng)格插值。通過AdaIN(等式15)向解碼器提供轉(zhuǎn)入不同風(fēng)格的特征圖的錐形組合,我們可以在任意的新風(fēng)格之間進行插值。
空間和顏色控制。Gatys等人[17]最近介紹了用戶對顏色信息和風(fēng)格轉(zhuǎn)移的空間位置的控制,這可以很容易地納入我們的框架中。為了保留內(nèi)容圖像的顏色,我們首先將風(fēng)格圖像的顏色分布與內(nèi)容圖像的顏色分布相匹配(類似于[17]),然后使用顏色對齊的風(fēng)格圖像作為樣式輸入,進行正常的樣式轉(zhuǎn)移。例子的結(jié)果顯示在圖9中。
圖9. 顏色控制。左圖:內(nèi)容和樣式圖像。右圖:保留顏色的樣式轉(zhuǎn)移結(jié)果。
在圖10中,我們展示了我們的方法可以將內(nèi)容圖像的不同區(qū)域轉(zhuǎn)換為不同風(fēng)格。這是通過對內(nèi)容特征圖中的不同區(qū)域分別進行AdaIN,使用來自不同風(fēng)格輸入的統(tǒng)計數(shù)據(jù)來實現(xiàn)的,與[4, 17]類似,但完全是前饋式的。雖然我們的解碼器只對具有同質(zhì)風(fēng)格的輸入進行訓(xùn)練,但它可以自然地推廣到不同區(qū)域具有不同風(fēng)格的輸入中。
圖10. 空間控制。左:內(nèi)容圖像。中間:兩個帶有相應(yīng)掩碼的樣式圖像。右圖:風(fēng)格轉(zhuǎn)移的結(jié)果。
8、討論與結(jié)論
在本文中,我們提出了一個簡單的自適應(yīng)實例歸一化(AdaIN)層,它首次實現(xiàn)了實時的任意風(fēng)格遷移。除了引人入勝的應(yīng)用之外,我們相信這項工作還有助于我們理解一般的深度圖像表示。
考慮我們的方法和以前基于特征統(tǒng)計的神經(jīng)風(fēng)格轉(zhuǎn)移方法之間的概念差異是很有趣的。Gatys等人[16]采用了一個優(yōu)化過程來操作像素值以匹配特征統(tǒng)計。在[24, 51, 52]中,優(yōu)化過程被前饋神經(jīng)網(wǎng)絡(luò)取代。盡管如此,網(wǎng)絡(luò)仍被訓(xùn)練為修改像素值以間接匹配特征統(tǒng)計。我們采用了一種非常不同的方法,在一個鏡頭中直接對準特征空間中的統(tǒng)計數(shù)據(jù),然后將特征反轉(zhuǎn)回像素空間。
鑒于我們方法的簡單性,我們認為仍有很大的改進空間。在未來的工作中,我們計劃探索更先進的網(wǎng)絡(luò)結(jié)構(gòu),如殘差結(jié)構(gòu)[24]或與編碼器[23]的附加跳過連接的結(jié)構(gòu)。我們還計劃研究更復(fù)雜的訓(xùn)練方案,如增量訓(xùn)練[32]。此外,我們的AdaIN層只對準了最基本的特征統(tǒng)計(均值和方差)。用相關(guān)性對齊[49]或直方圖匹配[54]來取代AdaIN有可能通過轉(zhuǎn)移高階統(tǒng)計數(shù)據(jù)來進一步提高質(zhì)量。另一個有趣的方向是將AdaIN應(yīng)用于紋理合成。
總結(jié)
以上是生活随笔為你收集整理的【翻译】AdaIN:Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动态规划——硬币找零思路
- 下一篇: 《从零开始学Swift》学习笔记(Day