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