題目:使用馬爾可夫生成對抗網絡進行預先計算的實時紋理合成
- 文章地址:《Precomputed Real-Time Texture Synthesis with Markovian Generative Adversarial Networks》 arXiv.1604.04382
(轉載請注明出處:http://www.lxweimin.com/p/6054799d7bb1 ,謝謝!)
Abstract
本論文提出了馬爾可夫生成對抗網絡(MGANs),一種訓練能有效地進行紋理合成的生成神經網絡的方法.當深度神經網絡的方法最近已經在合成效果上展示出了顯著成果的同時,它們依然帶來了相當大的計算代價(低分辨率圖片的運行分鐘數).我們的論文處理了這個效率問題.比起之前的工作中使用大量的反卷積層,我們預計算了一個前饋的,步幅卷積(strided convolutional)網絡,它對馬爾可夫碎片(Markovian patches)的紋理數據進行捕獲,并且可以直接生成任意維度的輸出.這個網絡可以直接把棕色噪聲(brown noise)解碼成逼真的紋理,或者把照片轉化為藝術圖像.通過對抗訓練,我們得到的品質可以與最近的神經紋理合成方法相媲美.而且由于生成時不再需要優化,我們的運行時間的表現(0.25M pixel images at 25Hz)在很大的數量級上(至少快500倍)超越了之前的神經紋理合成器.我們將這個想法應用到紋理合成,風格轉換,和視頻風格化上.
keywords:紋理合成,生成對抗網絡
**1.Introduction **
圖像合成是計算機圖像和視覺上的一個經典問題.它關鍵的挑戰在于要用簡潔明了的方式捕獲到復雜類型的圖片的結構,可學習的模型,以及去找到一個有效的算法來學習這樣的模型并且合成新的圖像數據.大多數傳統的"紋理合成"方法使用馬爾可夫隨機場的方法處理錯綜復雜的約束,而馬爾可夫隨機場是通過像素值的局部碎片區域描繪圖像特征的。
最近,以深度神經網絡為基礎的生成模型已經在圖像合成上展現了令人激動的新視點,深層結構對表現在物體類型(object classes)上的變化的捕獲能力已經超過了像素水平上的方法.但是,至于能從有限的訓練數據上到底能學到多少結構,仍然有很大的局限性.我們目前面臨著兩種主要的"深度"生成模型:1) 全圖像模型(full-image models),生成整體圖像;2)馬爾可夫模型(Markovian models),同樣可以合成紋理。
第一種類型,全圖像模型,經常被設計成專門的訓練好的自編碼器.結果非常令人映象深刻但局限于細節上保真度有限的小圖片(約64*64).第二種類型,深度馬爾可夫模型,捕獲了局部的數據并且把它們集合成高分辨率的圖片.因此,有好的細節保真度,但是如果需要生成特殊的全局結構的話,還需要附加指引.我們的論文正是提出了深度馬爾可夫紋理合成的第二種方法.
之前這種類型的神經學習方法是建立在一個反卷積網絡結構上的.這自然得提供了碎片的混合以及得以再利用巨大的,有區別的訓練好的神經網絡比如VGG生成的錯綜復雜的,自然發生的多層次的紋理展現,再把它們用到圖像合成上.說句題外話,我們不久會觀察到這對于高質量的結果其實很關鍵.Gatys et al. 最先使用了這一方法,他用一個全局的高維特征向量的高斯模型來對碎片數據建模,而Li ey al.利用了神經網絡激活層(neural activation),權衡了視覺與現實的擴展的局部碎片(patchs).
深度馬爾可夫模型能夠產生出色的視覺效果,尤其是比起傳統的像素水平上的馬爾可夫方法,不幸的是,反卷積方法所產生的運行時間代價仍然非常高,因為為了估計預圖像(pre-image)的特征激活層(更高的網絡層)需要迭代的反向傳播.在大多數昂貴的建立MRF的高層特征碎片的情況下,一個高端的GPU也需要好幾分鐘來合成一個低分辨率的圖像(512*512).
因此我們論文的目標就是要改善深度馬爾可夫紋理合成的效率.關鍵思想在預計算網絡的反向,這用一個步長的卷積網絡(strided convolutional network)[注:一個步長卷積網絡因此用在訓練過程中學習池化過程的子采樣卷積過濾器代替了池化層(eg.雙層均值池化和取樣于一半分辨率的模糊的卷積核是等價的)]來擬合網絡的反向過程,單純得在前饋模式中處理.盡管由固定大小的Patch訓練,結果得到的網絡可以在任意維上生成連續的(continuous)圖像,而且不需要任何附加的優化和混合,就可以得到一個高質的針對特定風格并且表現很好的紋理生成器.
我們用對抗訓練的方法訓練了一個卷積網絡,它可以維持和原圖差不多的圖像質量,高昂的優化方法.結果,我們獲得了一個重大的提速:我們的GPU設備計算512*512的圖片耗時在40ms內(nvidia titanX).關鍵的局限,當然,是為每一個紋理風格預計算前饋卷積網絡.不必說,對于很多有潛力的應用,這仍然是一種有吸引力的平衡,比如說在藝術化圖片或者是風格化視頻方面.我們在實驗中找到了一些相關的應用.
2.Related Work
反卷積神經網絡已經被介紹用于可視化深層特征和物體分類.............
.............
.............(待整理)
3.Model
讓我們首先概念性地說明提出這一方法的動機.基于方法[Gatys, L.A(就是最原始的那篇論文 )., Ulyanov]的數據顯示,源(輸入圖片或者是噪聲)和目標圖片(紋理)的分布符合高斯模型(上圖左1).一旦兩分布匹配后它們不再有更好的改善.但是,現實世界中的數據并不總是遵守高斯分布的.比如,它可能會按照一個復雜的非線性復寫(manifold).對抗訓練可以識別出這樣的復寫以及它的識別網絡(上圖左2),并且在復寫時用一個投影加強他生成的效能(power)(上圖右2).我們用上下文關聯的馬爾可夫碎片(patches)改進了對抗訓練(上圖右1).這就允許了讓學習專注于(focus on)繪制同一上下文的不同描述,而不是上下文和描述的混合.
圖2具現了我們的流程,它擴展了Li et al.的基于碎片的合成算法.我們首先連續的識別網絡D(綠)代替了他們的碎片字典(包括迭代最鄰近搜索),他學習從沒有合適合成的特征碎片中辨別出真實的特征碎片(on VGG_19 Relu3_1,紫).第二個比較(D下方的流圖)是同一張圖片的VGG19編碼,可以選用更高更抽象的Relu5_1層.如果我們運行VGG網絡的反卷積,就會獲取一個反卷積的圖像合成器,我們稱為馬爾可夫反卷積對抗網絡(MDANs).
MDANs仍然非常得慢,因此,我們將一個額外的生成網絡G(藍,步長卷各積網絡)作為目標.他需要VGG_19的Relu4_1層的圖像編碼,并且直接把它解碼為合成圖片的像素.在整個訓練期間我們不需要改變VGG19網絡(灰),并且只需要優化D和G.重要的是,無論是D還是G都是為了最大化G的效果而同時訓練的;D在這里作為G的對手.我們用馬爾可夫生成對抗網絡(MGANs)表示了整個結構.
3.1 馬爾可夫反卷積對抗網絡(MDANs)
我們的MDANs用一個由對抗訓練驅動的反卷積過程合成圖片:一個被訓練于辨別從合成圖像取樣和的和示例圖片取樣的"神經碎片"識別網絡D(綠).我們使用有規律地從Vgg19
的Relu3_1
層的輸出的取樣.對于每一個神經碎片它輸出分類分數 s=+1/-1
,來表示碎片有多"真"(s=1意味真).對于從每一個從合成圖片取樣的神經碎片,1-s就是它要最小化的紋理Loss.這個反卷積過程把這個損失反向傳播到像素值上.跟Radford et al.一樣我們使用批量正則化(BN
)和Leaky ReLU(LReLU
)來改進D的訓練.
這里的si表示對于第i個神經碎片的分類得分(classifica score),并且N是O(x)中取樣碎片的總數.這個對抗網絡在運行中得到訓練:它的參數是隨機初始化的,并且之后在每次反卷積后被更新,因此它當合成結果改進的時候它也不斷變得更加智能.
(1)式中附加的正則項r(x)是已有的使像素值更平滑的技術,使用Et和r(x)可以合成隨機紋理(圖3),通過最小化額外的內容損失Ec,網絡可以生成上下文關聯的與指示圖片相關的合成圖(圖4).內容損失是在兩特征圖O(x)和 O(xc)之間的平均平方誤 差(Mean Squared Error).我們把權值設為a1=1, a2=0.0001,并且式1使用ADAM方法計算反向傳播(學習率0.02,動量值0.5).注意每個神經碎片 接收它自己的通過D的反向傳播生成的梯度.為了在鄰近的碎片間有一個合理的過渡,我們混合了他們的輸出坡度,和紋理優化做的一樣( Kwatra, V., Essa, I., Bobick, A., Kwatra, N.: Texture optimization for example-based synthesis. Siggraph 24(3), 795{802 (2005)).
** 3.2 馬爾可夫生成對抗網絡(MGANs) **
MDANs 需要很多次的迭代并且要為每一個輸出圖片單獨運行一次.我們現在訓練一個可變的自動編碼器(VAE variational auto-encoder)來直接把特征圖譜解碼為像素值.目標示例(紋理后的照片)是從MDANs中得到的.我們的生成器G(藍,圖2)需要 VGG_19
的Relu4_1
層作為輸入,并且通過一個緊接著級聯的步長很小的卷積層(FS Conv)的原始的卷積層來解碼圖片.盡管是由固定大小的輸入訓練的,這個生成器自然地擴展到了任意大小的圖片. 正如Dosovitskiy el al.指出的,為訓練一個自動編碼器找到一個好的度量值是十分重要的:使用合成后圖片和目標圖片在像素水平上(圖5,pixel VAE)的歐幾里得距離生成了一個過于平滑的圖片.與之相比神經編碼水平改進了結果(圖5,neural VAE),而且對抗訓練更進一步地改善了對于目的風格的復刻(圖5,MGANs) .
我們的方法和經典的生成對抗網絡(GANs)是相似的,主要的不同在于操作的不是全圖,而是同一張圖片的神經碎片.這樣做利用了碎片間的上下文聯系,并且 使得學習更加容易,更加有效,相比于學習一個物體類(objet class)的分布,或者是在上下文無關的數據間進行映射.
另外地,我們也用一個最大的邊緣標準(鉸鏈損失Hinge Loss)代替了sigmoid函數和二進制交叉熵標準.這就避免了在學習D時消失的坡度.這在我們這里造成了更大的困難,比起Radfort el al.因為我們的訓練數據中多樣性更少.因此,sigmoid更容易飽和. 圖5(MGANs)展示了訓練來生成畢加索自畫像風格的網絡的結果.為了訓練,我們隨機挑選了75張來自CelebA數據集( Liu, Z., Luo, P., Wang, X., Tang, X.: Deep learning face attributes in the wild. In:ICCV (2015) )的人臉圖片,額外又加上25張公共領域的非名人圖片.
我們改變了所有照片的大小因此最大的維度是384像素值.我們通過為每張照片生成9份不同旋轉和 尺 寸的拷貝來擴大訓練數據集.并且有規律地采樣128*128的剪切圖片的子窗口用作批量處理.總共我們就有了24,506份訓練實例,每一個都作為一份訓 練圖片,它的(where)神經碎片取樣自它的rely3_1層,并編碼作為D的輸入. 圖5(MGANs)展示了我們的生成網絡為一個訓練照片的解碼結果.最下面的一行展示的網絡生成了好的測試數據.不必說,用G直接解碼產生的很好的逼近.MDANs和MGANs主要的不同在于:MDANs更好地保護了輸入圖片的內容,而MGANs生成的結果更加風格化.這是因為MGANs是由很多圖片訓練的,因此學習了最常見的特征.另一個值得注意的不同是MDANs生成了更加自然的背景(比如有著平滑顏色的區域),這要歸功于它迭代的改進.盡管有著這樣的瑕疵,MGANs模型生成的可與之媲美的結果在速度上要快25,000倍.
圖 6展示了MGANs的一些中間結果.很清楚得看到訓練更多時解碼器效果越好.在處理過100批量(batch)后,這個網絡已經可以學習到整體的顏色, 以及有明顯對比度的區域.300批后,這個網絡開始產生涂抹的描邊(brush strokes)的紋理.1000批過后,它學會怎樣畫眼睛.更多的訓練可以改進結果中的一些幽靈偽影(ghosting artifacts).注意模型對于測試集生成效果也好(右).
4 實驗分析
我們用我們的模型進行了實際的實驗:我們研究了參數影響(分類層,批量大小(patch size))和模型的復雜性(網絡的層數,每一層的通道數).然而可能不存在一個對于所有紋理通用的最適宜的設計,我們的研究闡明了模型在不同的情況下的行為.為了做公正的比較,我們采用的示例紋理圖片的大小在實驗中是固定的(128*128),并且生成的合成圖片都是256*256的.
可視化解碼器的特征圖:我們具象化了在解碼器G中學習的過濾器(圖7).這些特征是直接從one-hot輸入向量解碼得到的.個體的patch是相似的,但是并沒有準確地符合原圖.不必說,這些人造圖反應上的相似性對于合成新圖應該是足夠的.
參數:接下來,我們研究了改變識別網絡的輸入層的影響.為此我們在引導識別網絡D時不使用VGG19的relu2_1,relu3_1作為輸入.我們分別使用的大小為16,8,和4的patch,它們對地32像素的圖片有相同的感受域(大約;忽略padding),圖8的前三圖展示了這樣三個設置的結果.更低的層次(relu2_1)生生的表現更為銳利(sharper),但是在損失紋理的結構和格式(form).更高的層次(relu4_1)更好地保留了大顆粒的結構(比如說規律)但對于指引的前景(scenarios)卻過于死板.relu3_1在質量和彈性上提供了一個好的平衡.我們之后展示了patch大小的影響:我們將D的輸入層固定為relu3_1,并且用大小為16和4的patch和默認的8比較.圖8的后兩圖展示了這樣的改變同樣可以影響到模型的嚴格程度(rigidty):更小的patch,彈性更好,而更大的patch更好地保留了結構.
復雜性:我們現在研究這些的影響:1)網絡的層數;2)每一層的通道數.我們首先通過移除卷積層的方法改變D.這樣做可以減少網絡的深度并最終改變了合成圖片的結果(圖9,第一列).重新引入這個卷積層產生了更平滑的合成結果(圖9,第2列).但是,在這些例子中,增加額外的層次并沒有明顯得改善圖片的質量(圖9,第3列).
用4,64,128的通道的卷積導來測試D,我們觀察到通常來說減少通道數會帶來更壞的結果(圖9,每4列),但是在128和64個通道間并沒有太大的差別.需求的復雜性同樣依賴于實際上的紋理.比如說,"ivy"紋理是一個很簡單的MRF,所以4通道和64通道的差別很微小,不像其他兩個例子.
接下來,我們固定了識別網絡,然后改變生成網絡.我們注意到當從解碼器中移除第一個卷積層時會帶來質量上的損失,或者是有減小所有層的通道數目時,而且一個更復雜的設計只有極有限的改進.這可能是由于整個網絡是由識別網絡驅動的,而對于更好的改進的阻力表明在反卷積的過程中有一些重要的信息是一個前饋過程不能修復的.特別的,一點點步長的卷積層不能模擬最大池化層的非線性行為,因此經常產生另外的(alias)模式.這在相似的,紋理少的時候變得可見.為了減少失真并增加紋理的可變性,我們可以選擇性得在輸入圖片中加入Perlin噪聲.
初始化:通常來說,都是用隨機值初始的網絡.然而,我們發現D有著特定的生成能力.因此,為了用MDANs用同一種紋理轉化不同的圖片,一個之前訓練的網絡可以用來初始化.圖10展示了用一個預訓練的識別網絡(已經轉化過50張人臉的圖片)初始化可以在50次迭代中產生更好的效果.與之相比,就算是經過了最開始的500次迭代,隨機初始化也沒有產生可以與之相比的結果.這對于用一個可以直接解碼輸入特征到原始輸入圖片的自編碼器來初始化G是非常有用的.這樣做可以基本上接近反轉vgg_19的過程,并且使得整個對抗網絡被更穩定得訓練.
VGG的角色:我們同樣確認了預訓練網絡VGG_19的重要性.如圖10的最后兩張圖展示的那樣,從零開始訓練識別網絡的效果非常地不好.Ulyanov et al.同樣觀察到了這一點.我們的解釋是,VGG_19在為各種各樣的圖片生成可共享的特征圖上有很大的統計上的作用(power),因此要比一個由有限張圖片訓練結果更接近人類視覺概念.
5.結果
這個部分展示了我們的MGANs合成的結果.我們用100張從ImageNet隨機選擇的圖片來訓練每一個模型,以及一張示例紋理.我們開始用MDANs模型產生了100張轉化過的圖片,然后定期地取樣128*128的剪切圖片作為MGASs的訓練數據.對于每一個模型,我們一共有大約16k的采樣.訓練每次迭代需要12分鐘.每次迭代最小的batch包括隨機順序后的所有sample.我們每個紋理迭代5次.
圖11比較了我們的合成圖片和之前方法的結果.首先,比使用全局數據的方法相比我們的方法有一個非常不同的特征:我們的方法轉化紋理更為協調,比如說Lena的頭發可以一致地映射到暗色的紋理. 相反,高斯模型在保持這樣的一致性則比較失敗,并且很難轉化復雜的圖片內容.....(總之講了一下和其他方法的比較).
圖12進一步得討論了以高斯為基礎的方法和我們的方法的不同.通常來說,它的結果更忠實的遵守了原始與風格相關的顏色分布,而且紋理背景更好,這是由于在學習中抒噪聲映射到高斯分布上.另一方面,我們的方法產生更一致的紋理轉化并且不需要承受一些復雜前景不滿足高斯分布的狀況.比如說在這兩個例子中的建筑.與之相比,在復雜區域產生了更多或者更少的紋理.
圖13展示了使用訓練過的模型來解碼噪聲圖,不指引的紋理合成也是有效的.在這種情況下,Perlin噪聲圖在VGG_19中向前計算并為解碼器生成了特征圖.讓我們驚異的是,由隨機Imagenet中的圖片訓練的模型可以將特征圖解碼成合理的紋理.這再一次展示了我們模型的泛化能力.最后,圖13展示了我們的示視解碼結果.作為一個前饋過程我們的方法不僅更快而且也相當程度上時間上比反卷積方法更為一致.
最后,我們提供了我們方法的 時間/內存占用 的細節.時間的計算是以標準基準框架為基礎的(圖15):我們的速度和Ulyanov的工作相同,他使用了前饋方法,比之間的反卷積方法要快更多.....(然后詳細介紹了速度)... More precisely, both our method and Ulyanov et al. [32] are able to decode 512-by-512 images at 25Hz (Figure 15,left), while [32] leads the race by a very small margin. The time cost of both methods scale linearly with the number of pixels in the image. For example,our method cost 10 ms for a 256-by-256 image, 40 ms for a 512-by-512 image, and 160 ms for a 1024-by-1024 image. Both methods show a very signicant improvement in speed over previous deconvolutional methods such as Gatys et al. [8] and Li et al. [21] (Figure 15 right): about 500 times faster than Gatys et al. [8], and 5000 times faster than Li et al. [21]. In the meantime our method is also faster than most traditional pixel based texture synthesizers (which rely on expensive nearest-neighbor searching). A possible exceptions would be a GPU implementation of \Patch Match" [1], which could run at comparable speed.However, it provides the quality bene ts (better blending, invariance) of a deep-neural-network method.
...(和內存占用)...
Memory-wise, our generative model takes 70 Mb memory for its parameters(including the VGG network till layer Relu4_1). At runtime, the required memory to decode a image linearly depends on the image's size: for a 256-by-256 picture it takes about 600 Mb, and for a 512-by-512 picture it requires about 2.5 Gb memory. Notice memory usage can be reduced by subdividing the input photo into blocks and run the decoding in a scanline fashion. However, we do not further explore the optimization of memory usage in this paper.
6.局限
我們現在的方法在非紋理數據上表現的不好.比如說,它不能在兩張不同面部照片間轉化面部特征.這是因為面部特征不能看做紋理,并且需要語義上的理解(比如說表情,姿勢和性別).一個可能的解決方案是把我們的模型和學習物體識別結合起來(couple) 這樣本地的數據就可以被更好得被制約(conditioned).為了合生更有照片真實感的紋理,Li et al.可以獲得更好的效果要歸功于它沒有參數化(non-sampling)的抽樣可以防止數據走樣.我們的方法可變形的紋理上做得更好,并且快很多.
我們的模型有一個和以高斯為基礎的方法更不同的特征.通過對全局特征分布的捕捉,這些其他的方法可以更好保留那些示例圖片全局上的"形狀和感受".相反,我們的方法可能偏離了示例紋理,比如說,全局的顏色分布.然而,這樣的偏離可能不總是壞的比如說當內容圖需要占一個重要的角色時.
因為我們的模型學習了同一張內容的映射時的不同敘述,它需要特征上很不相同的特征.因為這個原因我們使用了VGG_19.這使得我們的方法在解決很穩定的背景(天空,沒有聚焦的區域)時顯得很弱.我們觀察,從大多數數據來看,在區域上生成更好的紋理的方法在內容上經較弱,而我們的方法在包含可識別的特征的區域上做得很好.我們相信這對于未來結合這兩種方法的長處是有價值的.
7 結論
這篇論文最關鍵的見識在于對抗生成網絡可以被用馬爾可夫方法應用并且學習怎么用同一內容到不同敘述的映射.我們創造了個同一張紋理圖和隨機從ImageNet中選取的圖片訓練的生成網絡.一旦被訓練,我們的模型可以將棕色噪聲解碼成現實紋理,或者是把照片解碼成畫作.我們展示了我們的模型在給復雜的圖片內容保留一致的紋理的一些優點.一旦訓練(每個例子大概占用我們一小時的時間),合成會變得很快并且在風格轉化上有很好的不變性.
我們的方法在學習生成模型上只是一小步,但是在未來工作的路上,可能是在更多的數據上學習更寬闊的框架,不僅是馬爾可夫模型,也同樣包括大顆粒規模的結構模型.這額外的在圖片布局上的不變性可能,作為一個副作用,開啟了用更多訓練數據訓練馬爾可夫模型之路,因此允許了更復雜在更多的類型上有更好的生成兼容性的解碼器.終極目標可能是直接解碼,在真實世界的圖片上對于大分類有生產力的圖片模型.
(文中部分地方由于某些原因沒有完全翻譯,以后再補上,不好意思!)
(注:感謝您的閱讀,希望本文對您有所幫助。如果覺得不錯歡迎分享轉載,但請先點擊 這里 獲取授權。本文由 版權印 提供保護,禁止任何形式的未授權違規轉載,謝謝!)