前言
將A圖片的風(fēng)格轉(zhuǎn)移到B圖片上,指的是將A圖片的抽象藝術(shù)風(fēng)格(如線條、色彩等等)和B圖片的內(nèi)容框架合成為一幅圖。自然地,A圖片稱(chēng)為風(fēng)格圖,而B(niǎo)圖片就稱(chēng)為內(nèi)容圖。就像這樣:
左側(cè)圖作為風(fēng)格, 右側(cè)圖作為內(nèi)容,中間合成圖。 (上圖是我用Gatys迭代法得到的結(jié)果)。
最近做了一段時(shí)間風(fēng)格轉(zhuǎn)移的文獻(xiàn)調(diào)研,故寫(xiě)此小結(jié)以順?biāo)悸?。圖片風(fēng)格轉(zhuǎn)移在傳統(tǒng)圖像處理中有不少研究,本文只涉及基于神經(jīng)網(wǎng)絡(luò)的方法。個(gè)人總結(jié)到目前主要有以下4個(gè)技術(shù)階段:
迭代合成法。合成圖片質(zhì)量高,且可以進(jìn)行任意風(fēng)格轉(zhuǎn)移,但速度慢;
前饋網(wǎng)格法。合成速度快,但一個(gè)網(wǎng)絡(luò)只能進(jìn)行一種風(fēng)格轉(zhuǎn)移(風(fēng)格單一),且合成圖片質(zhì)量一般;
使用IN層替換BN層,提升了合成圖片的質(zhì)量,加速了網(wǎng)絡(luò)訓(xùn)練,但網(wǎng)絡(luò)的風(fēng)格還是單一或局限于幾種;
使用IN層μμ和σσ匹配的網(wǎng)絡(luò)前饋法,最終實(shí)現(xiàn)任意風(fēng)格的快速轉(zhuǎn)移。
本文將對(duì)這四個(gè)階段進(jìn)行回顧,之后再涉及另一種風(fēng)格轉(zhuǎn)移方法:基于GAN的圖片集合風(fēng)格轉(zhuǎn)移。 最后,回顧技術(shù),展望下未來(lái)的發(fā)展方向。
Stage1:iterative image style transfer (IST)
文章:
Image style transfer using convolutional neural networks,Gatys etc.
一句話(huà)總結(jié):這篇文章為風(fēng)格轉(zhuǎn)移提供了量化標(biāo)度,提出使用 Gram矩陣來(lái)量化圖片的風(fēng)格。并提出了基于VGG網(wǎng)絡(luò)的迭代式圖片合成方法。圖片生成質(zhì)量較高。
將一幅圖片的風(fēng)格轉(zhuǎn)移到另一幅畫(huà)上,首先要解決的問(wèn)題自然是如何提取風(fēng)格?*(也有不需要量化風(fēng)格的,下面Extra章會(huì)講到)*Gatys 在這篇文章中提出用feature map的Gram矩陣來(lái)量化一幅圖片的風(fēng)格。具體來(lái)說(shuō) ,一幅圖片結(jié)過(guò)網(wǎng)絡(luò)后,在第k層有M個(gè)feature map
,每個(gè)feature map的維度為H×W, 那么第kk層的Gram矩陣值為:
即第k層的Gram矩陣維度為M x M的矩陣, 其坐標(biāo)(i,j)(i,j)處的元素值為與點(diǎn)乘后元素求和再歸一化得來(lái)??梢曰\統(tǒng)認(rèn)為Gram矩陣是同層的feature map之間的相似關(guān)系。
這個(gè)量化方法到底能多大程度上提取風(fēng)格呢? 一種驗(yàn)證的途徑是根據(jù)一張圖xGram矩陣G,如果能重建出具有風(fēng)格x的圖片,則說(shuō)明G對(duì)風(fēng)格提取有一定作用(但不是充要條件,最終還是要看用來(lái)最后的合成過(guò)程中是否能指導(dǎo)圖像的生成),這種重建圖像的方法其實(shí)也是Gatys最后用于生成合成圖片的方法。不管怎么樣,先實(shí)驗(yàn)起來(lái)吧。
驗(yàn)證實(shí)驗(yàn)是基于VGG網(wǎng)絡(luò)進(jìn)行的,VGG網(wǎng)絡(luò)在圖片分類(lèi)任務(wù)中已經(jīng)取得了公認(rèn)的成果,所以一般認(rèn)為其各個(gè)輸出層的feature map應(yīng)該是較好地提取了圖像的語(yǔ)義。VGG網(wǎng)絡(luò)的過(guò)程可以抽象表示為函數(shù),x為輸入,yy為輸出,xx可以是所有層的輸出,也可以是其子集。將yy進(jìn)一步根據(jù)上面的定義運(yùn)算得到Gram矩陣的Vgg_G表示。Gatys提出了以迭代方式梯度下降的方法根據(jù)VGG網(wǎng)絡(luò)輸出重建圖片的方法,即:如果需要兩幅圖相同,需要兩幅圖經(jīng)過(guò)VGG網(wǎng)絡(luò)后的輸出也相同。以vggvgg為例,步驟如下:
KaTeX parse error: Expected '}', got '_' at position 12: \textbf{vgg_?G}
先以隨機(jī)值生成圖像x′x,它經(jīng)過(guò)網(wǎng)絡(luò)輸出為 y′。目標(biāo)圖片為xx, 經(jīng)過(guò)風(fēng)格的輸出為yy。待重建的目標(biāo)圖片x與x′的距離以來(lái)表示。那么以
x′=x′?η??y′?Lvgg(y,y′)
的方式對(duì)x′x進(jìn)行更新,其實(shí)就是以vgg函數(shù)作為指引逼近目標(biāo)x的過(guò)程,最終穩(wěn)定后得到的就是重建的圖像。注意在迭代過(guò)程中網(wǎng)絡(luò)函數(shù)vggvgg不變,即VGG網(wǎng)絡(luò)的模型參數(shù)保持不變。
進(jìn)行更新,其實(shí)就是以vggvgg
Gatys分別使用了vgg和vggG對(duì)圖片進(jìn)行了重建。分別使用VGG網(wǎng)絡(luò)的第1到第5層的輸出指引重建,結(jié)果如下,上面星空?qǐng)D是使用vggGvggG進(jìn)行實(shí)驗(yàn), 下面建筑圖使用vggvgg進(jìn)行重建:vgg
和vggGvggG
可以看出,在下面一排用vgg進(jìn)行重建的實(shí)驗(yàn)組中,重建的圖像風(fēng)格相似,但內(nèi)容框架已經(jīng)完全錯(cuò)亂了,所以確實(shí)可以理解為它更側(cè)重于保留風(fēng)格而不注重框架。
我個(gè)人猜想Gram矩陣的想法是實(shí)驗(yàn)驅(qū)動(dòng)的。雖然不一定是對(duì)風(fēng)格最好的量化(畢竟風(fēng)格是很主觀的東西,也很難有最優(yōu)答案),但Gatys提出的量度還是開(kāi)創(chuàng)性且可用的。
有了上面的實(shí)驗(yàn),自然就會(huì)有這樣一個(gè)想法:如果既使用vggG將x′風(fēng)格約束到一幅圖A,同時(shí)又使用vggvgg將x′內(nèi)容框架約束到另一幅圖B,那重建出來(lái)的不就是“合成了” A與B嗎? 下面的圖就是描述的這個(gè)過(guò)程:
將x
上圖乍看挺復(fù)雜,其實(shí)思想很簡(jiǎn)單。就是把vgg或者vggG的距離整合,可以看到圖中衡量距離的loss是將content與 style按比例系數(shù)αα和ββ整合到一起了,所以這兩個(gè)系數(shù)也會(huì)決定最終的生成圖片是更接近風(fēng)格圖片還是更接近內(nèi)容圖片。另外Gayts還發(fā)現(xiàn)由于這里的變量只有一個(gè)x′上面的梯度下降迭代可以用L-BFGS迭代來(lái)替換以更快地找到最優(yōu)點(diǎn)。vggvggx′
或者vggGvggGGatys的工作提出了量化圖像風(fēng)格的方法,并迭代地逼近一幅滿(mǎn)意的結(jié)果圖。這種方法的優(yōu)點(diǎn)是生成的圖質(zhì)量好,缺點(diǎn)是速度慢,每次要合成時(shí)都要迭代運(yùn)算多次。
對(duì)于Gram矩陣能引導(dǎo)風(fēng)格轉(zhuǎn)移的內(nèi)在機(jī)理,Yanghao Li等人進(jìn)行了研究,在下面Stage4.2中會(huì)敘及。
Stage2: fast IST
如上述,Gatys的方法生成圖片質(zhì)量高,但在速度上不盡人意。我們知道一般神經(jīng)網(wǎng)絡(luò)都是先訓(xùn)練好,之后使用時(shí)只進(jìn)行一次前饋推理即可,即 feed-forward one pass,而推理的速度是很快的,所以很自然地,神經(jīng)網(wǎng)絡(luò)的研究者們馬上對(duì)這種方案的可行性進(jìn)行了研究,并得到了令人滿(mǎn)意的結(jié)果 。以Johnson的文章作為代表進(jìn)行總結(jié)。
文章:
Johnson, etc. Perceptual Losses for Real-Time Style Transfer and Super-Resolution
上圖是來(lái)自原文的截圖。 首先,他們將使用VGG 輸出作為衡量距離的loss起了個(gè)正式名字,叫perceptual loss。其實(shí)在Gatys的方法中用的正是這種loss,只不過(guò)沒(méi)有起名字。但后來(lái)的研究者就稱(chēng)這種loss叫perceptual loss。
這篇文章要完成的任務(wù)很明確,給定一幅圖輸入圖x,網(wǎng)絡(luò)一次前饋就能給出具有風(fēng)格的x。比較重要的一點(diǎn)是,這里網(wǎng)絡(luò)的是固定的,也就是說(shuō),一旦網(wǎng)絡(luò)訓(xùn)練好,無(wú)論輸入x是什么,輸出的所有圖片都會(huì)被施以同一種風(fēng)格變換。
從架構(gòu)圖上看以看到,訓(xùn)練時(shí)輸入圖x經(jīng)過(guò)一個(gè)變換網(wǎng)絡(luò)得到一個(gè)這里的變換網(wǎng)絡(luò)是一個(gè)ResNet,變換網(wǎng)絡(luò)的結(jié)構(gòu)在這里并不重要,所以這里沒(méi)有畫(huà)出。后面通過(guò)兩個(gè)loss來(lái)約束之間通過(guò)vgg后的loss,這里要說(shuō)下為什么會(huì)有的名字。在原文中,上面的架構(gòu)圖其實(shí)可以作兩個(gè)用途,一個(gè)是風(fēng)格轉(zhuǎn)移,一個(gè)是單幀圖片超分辨。用作風(fēng)格轉(zhuǎn)移的時(shí),訓(xùn)練時(shí)是x的高分辨圖label,且此時(shí)
所以,在大量的x訓(xùn)練后,變換網(wǎng)絡(luò)將學(xué)習(xí)到如何將x
訓(xùn)練后,變換網(wǎng)絡(luò)將學(xué)習(xí)到如何將y
總結(jié)一下這一階段的研究,就是使用前饋的方式大大提升了風(fēng)格轉(zhuǎn)換的速度,但是引入了一個(gè)妥協(xié):一個(gè)網(wǎng)絡(luò)只能變換一種風(fēng)格。很自然的問(wèn)題,為什么不設(shè)計(jì)成xx和ys都是可變的, 直接前饋輸出具有風(fēng)格的?xx?的網(wǎng)絡(luò)? 我覺(jué)得這種想法一定有人嘗試過(guò),但是這樣的作法要求網(wǎng)絡(luò)擬合的東西太多(不同的內(nèi)容,不同的風(fēng)格本質(zhì)是對(duì)應(yīng)的數(shù)據(jù)分布都不一樣,所以要求網(wǎng)絡(luò)在不同的數(shù)據(jù)分布上都得到好結(jié)果,也許這根本就不符合神經(jīng)網(wǎng)絡(luò)的理論模型),導(dǎo)致網(wǎng)絡(luò)無(wú)法訓(xùn)練成功。但下面?Stage4?會(huì)講到將x和都可變的這一目標(biāo)最終被完成了,得益于加入了一些人工的先驗(yàn)知識(shí)。
Stage3: fast, high quality IST
Stage2的工作將風(fēng)格轉(zhuǎn)移的迭代工作方式變?yōu)榱饲梆伾墒?,速度得到極大改善。但這種方法與Gatys迭代法產(chǎn)生的結(jié)果圖的質(zhì)量上有較大差距,畢竟Gatys方法可以按照l(shuí)oss函數(shù)實(shí)時(shí)逼近需求,而前饋網(wǎng)絡(luò)一旦訓(xùn)練好則不可避免存在泛化能力的限制問(wèn)題。所以如何在速度與質(zhì)量較好地平衡? D.Ulyanov在這方面作了重要的推動(dòng)(Stage2中也有他的重要工作,是基于GAN的思想)。他將傳統(tǒng)前饋網(wǎng)絡(luò)中的BatchNoramlization替換為InstanceNormalization,得到了高于Stage2的風(fēng)格轉(zhuǎn)移效果。
文章:
1.Instance Normalization: The missing ingredient for fast stylization
2.Improved Texture Networks: Maximizing Quality and Diversity in Feed-forward Stylization and Texture Synthesis
3.1 Instance Normalization (IN)
為了兼顧效率與準(zhǔn)確度,batch訓(xùn)練是比較常用的一種訓(xùn)練方法,即一次從訓(xùn)練集空間中選擇多個(gè)訓(xùn)練樣本進(jìn)行訓(xùn)練。Batch Normalization (BN)是Google的研究人員提出的一種神經(jīng)網(wǎng)絡(luò)訓(xùn)練技巧,它引入被證實(shí)可以有效抑制梯度消失,達(dá)到更好的訓(xùn)練效果,至少在分類(lèi)網(wǎng)絡(luò)中效果較明顯。它的有效性在《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》中有詳細(xì)實(shí)驗(yàn)。BatchNormalization是將一層網(wǎng)絡(luò)的輸出值重新分布,使其不至于過(guò)于集中,而且可以抑制由于網(wǎng)絡(luò)隨機(jī)初始值所造成的數(shù)值數(shù)量級(jí)的差別。它的算法為:
上圖截取自Google研究人員發(fā)表的文章。其中是batch中的樣本在同一channel(或dimension的)的集合。注意最后數(shù)據(jù)在重分布后再施加一個(gè)線性拉伸和位移的操作,其參數(shù)是可訓(xùn)練的(γ與$\beta $)。所以BN是按batch、按channel為單位做歸一化的數(shù)據(jù)重分布操作。 與BN相比,IN的算法數(shù)學(xué)表達(dá)基本一致,唯一不同的是,IN的操作單位是按樣本、按channel為單位的。下圖形象表示了BN與IN的區(qū)別:
圖中C為Channel, N為Batch, HW為高寬。
3.2 fast, high quality IST
為什么要提出IN ? Ulyanov沒(méi)有說(shuō)明提出的思想過(guò)程。以下是個(gè)人理解。在Stage1中,衡量一幅圖風(fēng)格的Gram矩陣表征一個(gè)樣本在同一網(wǎng)絡(luò)層不同 feature map之間的相似性,而B(niǎo)N是會(huì)在樣本與樣本之間串?dāng)_,和風(fēng)格屬性的獨(dú)立性不兼容。而B(niǎo)N在分類(lèi)網(wǎng)絡(luò)中效果較好是因?yàn)樗诓煌瑯颖鹃g提取了不變的共性的東西,過(guò)濾了無(wú)關(guān)內(nèi)容導(dǎo)致的分類(lèi)變化,但這種思想對(duì)風(fēng)格轉(zhuǎn)移并不是太適用。IN歸一化時(shí)只考慮自身的樣本分布,可能對(duì)風(fēng)格轉(zhuǎn)移有提升作用。 Ulyanov利用Stage2中Johnson的工作中的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了實(shí)驗(yàn)(即僅將原始網(wǎng)絡(luò)中的BN替換為IN),并證實(shí)了這一點(diǎn):
第一列是內(nèi)容圖,最后一列是風(fēng)格圖。 StyleNet是指Johnson的網(wǎng)絡(luò)結(jié)構(gòu),由于其使用的歸一化是BN,所以這里為了區(qū)分用StyleNet BN來(lái)指示, StyleNet IN是指保持其它結(jié)構(gòu)不變,僅將BN換作IN的網(wǎng)絡(luò)結(jié)構(gòu)。 第四列是Gatys迭代法的結(jié)果(一般將其結(jié)果作為風(fēng)格轉(zhuǎn)移的最優(yōu)結(jié)果來(lái)看待)。 可以看到IN的加入確實(shí)對(duì)風(fēng)格轉(zhuǎn)移網(wǎng)絡(luò)的訓(xùn)練結(jié)果產(chǎn)生的明顯正向的影響。
總結(jié): 這個(gè)階段將BN改為了IN,提升了風(fēng)格轉(zhuǎn)移的圖片質(zhì)量。但此階段的網(wǎng)絡(luò)依然是只能在特定的風(fēng)格上進(jìn)行轉(zhuǎn)換,多個(gè)風(fēng)格轉(zhuǎn)換需要訓(xùn)練多個(gè)網(wǎng)絡(luò)。 這里將IN單列為一個(gè)階段是因?yàn)楹竺姘l(fā)現(xiàn)IN的內(nèi)涵其實(shí)是豐富的,對(duì)風(fēng)格轉(zhuǎn)移作用巨大。
Stage4: fast, high quality, various IST
IN替換掉BN使得風(fēng)格轉(zhuǎn)換的質(zhì)量提升,實(shí)驗(yàn)結(jié)論簡(jiǎn)單但其內(nèi)在原理待人挖掘。這個(gè)階段的工作對(duì)IN的作用進(jìn)行了細(xì)致的研究。另外4.2的工作對(duì)Gatys方法的原理進(jìn)行了探索,也得到好很有意義的結(jié)果。這些工作的互相啟發(fā)最終達(dá)到了可以實(shí)現(xiàn)任意風(fēng)格轉(zhuǎn)移的網(wǎng)絡(luò)。
4.1 Conditional Instance Normalization(CIN)
文章:
A learned representation for artistic style (Vincent Dumoulin, etc)
單一風(fēng)格的風(fēng)格轉(zhuǎn)移網(wǎng)絡(luò)雖然可以完成風(fēng)格轉(zhuǎn)移的任務(wù),但占用空間大,N種風(fēng)格需要準(zhǔn)備N(xiāo)套全量網(wǎng)絡(luò)參數(shù)。Dumoulin認(rèn)為這種架構(gòu)浪費(fèi)了一些信息的內(nèi)在聯(lián)系。比如很多印象派畫(huà)家的筆法其實(shí)是相似的,只是選色有區(qū)別。所以他認(rèn)為各種風(fēng)格之間是有一定的共享計(jì)算維度的。繼續(xù)深入研究,他們發(fā)現(xiàn)了一個(gè)讓人驚訝的現(xiàn)象: 僅僅通過(guò)IN層中參數(shù)就足以對(duì)不同的風(fēng)格建模! Domoulin沒(méi)有介紹發(fā)現(xiàn)的過(guò)程,結(jié)論是直接給出的。
這個(gè)發(fā)現(xiàn)意味著:可以訓(xùn)練一個(gè)對(duì)多種風(fēng)格進(jìn)行轉(zhuǎn)移的網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)中除IN層之外的參數(shù)皆為共享,而在IN層操作中只需根據(jù)目標(biāo)風(fēng)格選擇其對(duì)應(yīng)的,這種方法形象地被稱(chēng)作conditional instance normalization(CIN)。如下圖:
根據(jù)CIN的思想,很容易進(jìn)行網(wǎng)絡(luò)訓(xùn)練。Domoulin也利用上文Johnson的網(wǎng)絡(luò)結(jié)構(gòu)作相應(yīng)的微小改動(dòng)即進(jìn)行了訓(xùn)練:1)預(yù)定N種風(fēng)格圖片,在訓(xùn)練時(shí)隨機(jī)從內(nèi)容圖片與風(fēng)格圖片中選取作為訓(xùn)練輸入; 2)網(wǎng)絡(luò)的每個(gè)IN層有N套 γ 和$ \beta$ 訓(xùn)練參數(shù),根據(jù)選擇的風(fēng)格只對(duì)相應(yīng)的γ β進(jìn)行訓(xùn)練更新,其它的γ β保持不變。
一個(gè)可以容納N種風(fēng)格的網(wǎng)絡(luò),假設(shè)其IN層操作的輸入有C個(gè)通道,需要γ β數(shù)組個(gè)數(shù)為2NC個(gè),這個(gè)數(shù)據(jù)量比起Stage2中訓(xùn)練NN套網(wǎng)絡(luò)要小得多,大大節(jié)約了空間。使用CIN的風(fēng)格轉(zhuǎn)移效果如何呢? Domoulin在論文中的結(jié)論是與進(jìn)行單一風(fēng)格轉(zhuǎn)移的網(wǎng)絡(luò)效果相近。結(jié)果如下圖:
上圖是Domoulin從一個(gè)能夠進(jìn)行32種風(fēng)格轉(zhuǎn)換的網(wǎng)絡(luò)中選出的5種展示。可見(jiàn)確實(shí)進(jìn)行了風(fēng)格轉(zhuǎn)移,且效果明顯。 還是應(yīng)該提一下,與Stage2不同的是,上圖中的圖像都是一個(gè)網(wǎng)絡(luò)產(chǎn)生的,對(duì)于不同的風(fēng)格轉(zhuǎn)移任務(wù),僅僅從訓(xùn)練好的γβ組中選擇相應(yīng)的組作用到IN層即可。γ
ββ
4.2 variance and mean determines the style
文章:
Demystifying Neural Style Transfer, Yanghao Li, etc.
Li這篇文章的主旨是將風(fēng)格轉(zhuǎn)移任務(wù)看作是分布匹配(distribution alignment)任務(wù),這是領(lǐng)域自適應(yīng)過(guò)程(domain adaptation)的核心,所以領(lǐng)域自適應(yīng)的知識(shí)可以拿過(guò)來(lái)分析風(fēng)格轉(zhuǎn)移問(wèn)題。由此出發(fā),文章同時(shí)對(duì)Gatys方法的原理也進(jìn)行了研究。Li 經(jīng)過(guò)推導(dǎo)發(fā)現(xiàn)將Gram矩陣匹配作為網(wǎng)絡(luò)訓(xùn)練的目標(biāo)等價(jià)于最小化“最大均值偏差” ( Maximum Mean Discrepancy, MMD)。 MMD在領(lǐng)域自適應(yīng)中被用于衡量?jī)蓚€(gè)數(shù)據(jù)分布的距離,而風(fēng)格本質(zhì)就是一幅圖的數(shù)據(jù)分布特點(diǎn),所以也可以衡量風(fēng)格的相似性,故Gram矩陣是有效的。這讓我們從另一個(gè)維度看到了Gram矩陣的能力的原因所在。
文章另一個(gè)重要的點(diǎn),也是與本小結(jié)密切相關(guān)的,是提出了用另一種風(fēng)格度量來(lái)指導(dǎo)風(fēng)格轉(zhuǎn)移(文章一共給了4種指導(dǎo)風(fēng)格轉(zhuǎn)移的衡量方法,這里我們只關(guān)注其中的BN層分布匹配方法)。上面講到,文章的基本出發(fā)點(diǎn)是將風(fēng)格轉(zhuǎn)移以領(lǐng)域自適應(yīng)的方法作對(duì)比。文章認(rèn)為風(fēng)格轉(zhuǎn)移就是域匹配,BN層的數(shù)據(jù)分布,即以$\mu $與σ表示的分布,就包有著“域”的信息,所以匹配此兩者也可能匹配風(fēng)格。于是Li做了實(shí)驗(yàn),即:將Gatys方法中以Gram矩陣為匹配目標(biāo)的改為以μ和σ為匹配目標(biāo):
很顯然,這樣的loss將會(huì)迭代出一幅與風(fēng)格圖的每一層μ和σ都相近的合成圖。下面是根據(jù)這種匹配規(guī)則的實(shí)驗(yàn)結(jié)果,確實(shí)也可以進(jìn)行風(fēng)格轉(zhuǎn)移。
和σσ
但本文的重點(diǎn)在于研究風(fēng)格轉(zhuǎn)移任務(wù)的本質(zhì),而沒(méi)有做一個(gè)任意風(fēng)格轉(zhuǎn)移的網(wǎng)絡(luò)。其方法還是迭代的,在速率上自然也不是實(shí)時(shí)的。
4.3 arbitrary IST in one net
文章:
Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization, Xun Huang, etc.
受4.1和4.2的啟發(fā),Huang等人最終做了一個(gè)任意風(fēng)格、前向?qū)崟r(shí)轉(zhuǎn)移的網(wǎng)絡(luò)。
4.2的工作可以確認(rèn)網(wǎng)絡(luò)層的數(shù)據(jù)分布特征就是與風(fēng)格密切相關(guān),但Huang還是繼續(xù)做了一些實(shí)驗(yàn)工作。在Stage3中,IN替換掉BN能提高風(fēng)格轉(zhuǎn)移的效果,Ulyanov給出的解釋為IN層對(duì)不同的內(nèi)容圖片的對(duì)比度變化有魯棒性。為了驗(yàn)證這種說(shuō)法,Huang將應(yīng)用IN到網(wǎng)絡(luò)后的一些網(wǎng)訓(xùn)練細(xì)節(jié)數(shù)據(jù)做了實(shí)驗(yàn)。實(shí)驗(yàn)在Stage3文章2的網(wǎng)絡(luò)結(jié)構(gòu)上進(jìn)行。結(jié)果比較圖中 (a)的訓(xùn)練集是原始訓(xùn)練集;(b)的訓(xùn)練集是將原始訓(xùn)練集圖片做了對(duì)比度統(tǒng)一預(yù)處理; ? 是將原始訓(xùn)練集利用風(fēng)格轉(zhuǎn)移方法先進(jìn)行了風(fēng)格統(tǒng)一預(yù)處理(但不是統(tǒng)一到目標(biāo)風(fēng)格上),再進(jìn)行訓(xùn)練。
可以看到,IN實(shí)際是比BN更快地降低風(fēng)格loss,從而達(dá)到更好的訓(xùn)練效果,這種優(yōu)勢(shì)在(a)和(b)中都較明顯,所以 Ulyanov的解釋并不全對(duì)(由于對(duì)比度已經(jīng)統(tǒng)一化,按照Ulyanov的解釋此時(shí)應(yīng)該沒(méi)有明顯收益)。 而更有趣的是,在風(fēng)格統(tǒng)一化的圖片集上,IN與BN對(duì)style loss的貢獻(xiàn)差別變得很小。這可以理解為風(fēng)格已經(jīng)統(tǒng)一化后的訓(xùn)練數(shù)據(jù)已經(jīng)在數(shù)據(jù)分布上沒(méi)有太多可學(xué)習(xí)的東西,所以IN與BN效果差別不大。
既然已經(jīng)發(fā)現(xiàn)一幅的風(fēng)格與它經(jīng)過(guò)卷積層后的數(shù)據(jù)分布(μ和σ)強(qiáng)相關(guān),如何將這種信息利用起來(lái)得到一個(gè)可以轉(zhuǎn)移任意風(fēng)格的網(wǎng)絡(luò)?首先,Huang提出了一種自適應(yīng)重分布的nomalization方法(Adaptive Normalization,, 簡(jiǎn)稱(chēng)AdaIN):
與σσ
假設(shè)一幅內(nèi)容圖與風(fēng)格圖經(jīng)過(guò)網(wǎng)絡(luò)某層的輸出為x和y,對(duì)應(yīng)分布特征分別為為(μ(x),σ(x))(μ(x),σ(x)),(μ(y),σ(y))(μ(y),σ(y))。 則AdaIN的做法是:x
和yy
即:將內(nèi)容圖輸出x重分布到風(fēng)格圖輸出y的均值和方差上去。
這意味著什么?4.1和4.2中的工作已經(jīng)提到,對(duì)μ和σ的變換就會(huì)導(dǎo)致風(fēng)格的變換。AdaIN操作等價(jià)于直接將風(fēng)格信息加到了內(nèi)容圖片的輸出上去。但是這些風(fēng)格信息與內(nèi)容圖紋理信息如何有機(jī)地結(jié)合恢復(fù)成最終的合成圖?這還是未知的。為解決該問(wèn)題,Huang給出了如下網(wǎng)絡(luò)架構(gòu)進(jìn)行任意風(fēng)格轉(zhuǎn)移:
和μμ
這里將VGG網(wǎng)絡(luò)當(dāng)作編碼器使用。將內(nèi)容圖與風(fēng)格圖先經(jīng)過(guò)VGG網(wǎng)絡(luò)編碼到feature map空間,接著將風(fēng)格圖的feature map的分布特點(diǎn)按照AdaIN的方法施加到內(nèi)容圖feature上去,得到一個(gè)兼有風(fēng)格與內(nèi)容的feature map。 之后該feature map經(jīng)過(guò)解碼器恢復(fù)成一張圖。解碼器正是為了解決如果有機(jī)結(jié)合風(fēng)格信息與內(nèi)容信息,所以是需要被訓(xùn)練的。網(wǎng)絡(luò)最后,VGG再次被用作編碼器是為了進(jìn)行紋理和風(fēng)格的loss計(jì)算。
下面就欣賞下該方案的效果吧:
圖中同列同內(nèi)容,同行同風(fēng)格。
終于,一個(gè)網(wǎng)絡(luò),前向一次就可以搞定任意風(fēng)格轉(zhuǎn)移!
Extra: Set to Set style transfer
文章:
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, Junyan Zhu, etc.
這篇文章主要的思想其實(shí)是提出了一種新的GAN的工作方式,使用cycle-consistent約束避免普通GAN網(wǎng)絡(luò)的模式單一化問(wèn)題,下面稱(chēng)cycle-gan。
一般GAN網(wǎng)絡(luò)的流程是源樣本集X結(jié)過(guò)的生成器G生成假的目標(biāo)集,之后接一個(gè)判別器DD?用于鑒別真假目標(biāo)集?YY和經(jīng)過(guò)生成器與判別器多輪博弈訓(xùn)練,達(dá)到理想平衡的結(jié)果是GG生成的可以以假亂真。但這樣的網(wǎng)絡(luò)結(jié)構(gòu)有模式單一化的風(fēng)險(xiǎn),即任何來(lái)自XX的樣本都生成相同的x∈X,生成的
圖中,G和F是生成器,是判別器??梢钥吹剑赾ycle-gan中,有兩個(gè)生成器、兩個(gè)判別器。它們相互作用保證生成的圖片以假亂真,且保證生成樣本的多樣性。架構(gòu)中有兩個(gè)轉(zhuǎn)換循環(huán):
為了保證多樣性,架構(gòu)中加入了consistent-loss(如mse loss),比如一個(gè)樣本x∈X,經(jīng)過(guò)循環(huán)1后返回得到,應(yīng)該有?x==
cycle-gan能夠達(dá)到的效果是將一個(gè)集合X中的樣本變換后達(dá)到與另外一個(gè)集合Y 真假難辨的程度。所以它自然可以風(fēng)格轉(zhuǎn)移(但其用途遠(yuǎn)不止風(fēng)格轉(zhuǎn)移),比如我們將一些普通照片放在XX,將梵高的作品集放入YY中,則最終達(dá)到的效果是XX經(jīng)過(guò)變換后的YY集合, 這樣μσ匹配法,cycle-gan的過(guò)程比較黑盒。X,
Conclusion
本文回顧了從最笨重的Gram矩陣匹配迭代生成到任意風(fēng)格前饋式風(fēng)格的發(fā)展,這中間有一些偶然的發(fā)現(xiàn)使得任意風(fēng)格前饋合成變?yōu)榭赡埽行┰S巧合但也有一定的理論解釋。風(fēng)格轉(zhuǎn)移從最初的Gram矩陣指引到normalization層的μ和σ匹配,深刻了人們對(duì)圖片中什么是“風(fēng)格”什么是“內(nèi)容”的認(rèn)知。但是局限于深度學(xué)習(xí)的“可解釋性”,我們對(duì)“風(fēng)格”轉(zhuǎn)移基本還是實(shí)驗(yàn)主義的。 神經(jīng)網(wǎng)絡(luò)的輸出也一直被稱(chēng)為“feature”, 這是一個(gè)很抽象朦朧的名字。如何將一幅圖的風(fēng)格獨(dú)立出來(lái),也絕不會(huì)止于Gram矩陣和μμσσ的相似性,當(dāng)我們對(duì)feature層的含義有更深層了解的時(shí)候,就會(huì)有更準(zhǔn)確的對(duì)風(fēng)格的刻化。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100766
原文標(biāo)題:一文讀懂基于神經(jīng)網(wǎng)絡(luò)的圖片風(fēng)格轉(zhuǎn)移
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論