俞超 盧山富
摘 要: 風(fēng)格遷移是一項困難的專注于渲染不同風(fēng)格的圖像內(nèi)容處理任務(wù),深度神經(jīng)網(wǎng)絡(luò)已被廣泛應(yīng)用于該任務(wù)中并取得了顯著的性能。然而,先前的方法將圖像內(nèi)容與風(fēng)格分開缺少一些明確的語義表達。文章介紹了一種簡單而有效的深度學(xué)習(xí)方法來提取圖像風(fēng)格和內(nèi)容,從而實現(xiàn)風(fēng)格的轉(zhuǎn)換。具體來說,就是使用對抗分支來解碼圖像中的風(fēng)格和內(nèi)容,然后利用自動編碼器將一個圖像的風(fēng)格和另一個圖像的內(nèi)容進行重建構(gòu)成新圖像。通過實驗驗證了算法的可靠性。
關(guān)鍵詞: 風(fēng)格遷移; 深度學(xué)習(xí); Info-autoencoder; 圖像處理
中圖分類號:TP391 文獻標志碼:A 文章編號:1006-8228(2019)03-45-04
Image style transfer based on Info-autoencoder
Yu Chao, Lu Shanfu
(Hangzhou Dianzi University School of Computer, Hangzhou, Zhejiang 310018, China)
Abstract: Style transfer is a difficult image processing task which focuses on rendering image contents in different styles. Deep neural networks have been widely used in this task and obtained remarkable performance. However, the previous methods lack certain explicit semantic expressions to separate the image content from the style. To address this issue, this paper introduces a simple but effective deep learning method to extract image style and content and thus realize style transfer. Specifically, an adversarial branch is used to decode the pure style and content of images. Then an auto-encoder is utilized to reconstruct a new image based on the style of one image and the content of another. The reliability of the algorithm is verified by experiments.
Key words: style transfer; deep learning; Info-autoencoder; image processing
0 引言
圖像風(fēng)格遷移是將圖像風(fēng)格從一個圖像轉(zhuǎn)移到另一個圖像的任務(wù),這也稱為圖像 - 圖像轉(zhuǎn)換,這是圖像處理中的常見問題。例如,通過選擇適當(dāng)?shù)娘L(fēng)格畫面,我們可以輕松改變天氣和時間等因素。隨著卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展,風(fēng)格遷移得到了很大的發(fā)展。例如,圖像絎縫算法引入了包括目標圖片的相對映射,例如用于約束紋理合成過程的圖片強度。Leon A[1]展示了高性能卷積網(wǎng)絡(luò)如何學(xué)習(xí)通用特征的重復(fù)分析,以此來實現(xiàn)內(nèi)容和風(fēng)格的損失函數(shù)共同優(yōu)化研究。
盡管先前的工作取得了一些進展,但現(xiàn)有方法仍然存在一些缺點。例如,它們在對神經(jīng)網(wǎng)絡(luò)中傳遞的內(nèi)容受到限制,并且它們通常專注于將整個圖像轉(zhuǎn)換成相應(yīng)的風(fēng)格。
為了解決這個問題,我們提出了一種簡單有效的信息自動編碼器,它專注于解開風(fēng)格和內(nèi)容元素,然后根據(jù)圖像風(fēng)格和特定內(nèi)容重建圖像。
我們的貢獻如下:我們提出了一種新的結(jié)構(gòu)來獲得圖像風(fēng)格和可以廣泛應(yīng)用的風(fēng)格轉(zhuǎn)移算法,該算法可以重建具有給定風(fēng)格和內(nèi)容的新圖像。通過實驗測試,驗證了所提算法的有效性和魯棒性。
本文的結(jié)構(gòu)如下:第一節(jié)簡要回顧一下風(fēng)格轉(zhuǎn)移任務(wù);第二節(jié)專門討論相關(guān)工作;第三節(jié)介紹了我們的模型結(jié)構(gòu),并解釋它如何工作;第四節(jié)是實驗結(jié)果和分析;第五節(jié)是本文的總結(jié)。
1 相關(guān)工作
在本節(jié)中,我們將簡要回顧自動編碼器和Adam的相關(guān)領(lǐng)域知識。
1.1 自動編碼器
自動編碼器的概念首先由Rumelhart [2]提出。在結(jié)構(gòu)上,最簡單的自動編碼器形式是前饋非遞歸神經(jīng)網(wǎng)絡(luò),非常類似于多層感知機(MLP),它具有輸入層,輸出層和連接它們的一個或多個隱藏層,輸出層具有與輸入層相同數(shù)量的節(jié)點,目的是重建它自己的輸入(而不是在給定輸入X的情況下預(yù)測目標值Y)。 因此,自動編碼器是無監(jiān)督學(xué)習(xí)模型。自動編碼器由兩部分組成,即編碼器和解碼器,它們可以定義為轉(zhuǎn)換,例如:
傳統(tǒng)上,自動編碼器已被用于降維或特征學(xué)習(xí)。自動編碼器神經(jīng)網(wǎng)絡(luò)試圖學(xué)習(xí)h(w,b)(x)≈x函數(shù)。換句話說,它試圖逼近一個恒等函數(shù),使輸出接近輸入x。但在編碼神經(jīng)網(wǎng)絡(luò)時我們添加了一些限制,比如隱藏神經(jīng)元的數(shù)量有限,我們就可以從輸入數(shù)據(jù)中找到一些有趣的結(jié)構(gòu)。例如,假設(shè)自編碼神經(jīng)網(wǎng)絡(luò)的輸入x是10×10個圖像的像素灰度值(總共100個像素),因此n=100,隱藏層中有50個隱藏的神經(jīng)元。由于只有50個隱藏神經(jīng)元,我們強制編碼神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)輸入數(shù)據(jù)。
如果網(wǎng)絡(luò)的輸入數(shù)據(jù)是完全隨機的,例如每個輸入都是與其他特征無關(guān)的完全獨立的高斯隨機變量,那么將很難學(xué)習(xí)。但是如果輸入數(shù)據(jù)中嵌入了某些結(jié)構(gòu),例如某些相互關(guān)聯(lián)的輸入特性,則該算法可以在輸入數(shù)據(jù)中找到這些相關(guān)性。實際上,這種簡單的自動編碼器神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)低維的輸入數(shù)據(jù),這與主要分量分析(PCA)的結(jié)果非常相似。
1.2 Deep Auto Encoder
Hinton對原始自動編碼器結(jié)構(gòu)進行了改進,然后生成DAE,在無監(jiān)督訓(xùn)練情況下,逐步采用貪心算法完成隱藏層之前的訓(xùn)練,然后利用反向傳播算法系統(tǒng)地對神經(jīng)網(wǎng)絡(luò)進行參數(shù)優(yōu)化和調(diào)整,大大提高了神經(jīng)網(wǎng)絡(luò)的性能指標,有效地改善了BP算法的缺點。簡單來說,DAE增加了深度,提高了學(xué)習(xí)能力,并且比原始的自動編碼器更有利于數(shù)據(jù)訓(xùn)練。
1.3 Adaptive Moment Estimation
Adam最初由Diederik P. Kingma提出。Adam是一階優(yōu)化算法,可以取代傳統(tǒng)的隨機梯度下降過程。它可以根據(jù)訓(xùn)練數(shù)據(jù)更新神經(jīng)網(wǎng)絡(luò)的權(quán)重。Adam的算法不同于傳統(tǒng)的梯度下降。隨機梯度下降保持單個學(xué)習(xí)率(即alpha)以此來更新所有權(quán)重,并且在訓(xùn)練過程中學(xué)習(xí)率不會改變。而Adam通過計算梯度的第一動量估計和二階動量估計,為不同參數(shù)設(shè)計了獨立的自適應(yīng)學(xué)習(xí)率。
Adam算法還吸取了AdaGrad[3]和RMSProp[4]算法的優(yōu)點。Adam不僅像RMSProp算法那樣基于一階動量均值計算自適應(yīng)參數(shù)學(xué)習(xí)率,而且還充分利用梯度的二階動量均值(即存在偏差/單一方差)。尤其是該算法計算梯度的指數(shù)移動平均值,并且參數(shù)β1和β2控制這些移動平均值的衰減率。Adam在深度學(xué)習(xí)中是非常常用的算法,因此它可以很快得出理想的成果。實驗結(jié)果表明,Adam算法在實踐中具有優(yōu)異的性能,與其他類型的隨機優(yōu)化算法相比具有很大的優(yōu)勢。
2 方法
我們的風(fēng)格提取器基于卷積神經(jīng)網(wǎng)絡(luò)和自動編碼器。源域的兩個圖片作為網(wǎng)絡(luò)輸入,由目標域生成的圖像作為網(wǎng)絡(luò)的輸出。我們的目標是提取圖片A中的風(fēng)格,提取圖片B的內(nèi)容,使生成的圖片同時具有A的風(fēng)格和B的內(nèi)容。模型訓(xùn)練過程可歸納如下:首先,通過卷積網(wǎng)絡(luò)和自動編碼器來處理需要提取風(fēng)格的A圖片,然后到淺層網(wǎng)絡(luò)處理需要提取內(nèi)容的B圖片或者我們可以直接給出內(nèi)容。 最后使用一系列操作將兩者組合形成另一網(wǎng)絡(luò)。通過最小化損失函數(shù),生成目標圖片。
2.1 風(fēng)格表征
為了獲得源圖像表示的風(fēng)格,我們使用復(fù)雜的自動編碼器設(shè)計來捕獲紋理信息,通過這個網(wǎng)絡(luò)我們可以提取源域圖像風(fēng)格,深度編碼器由一系列卷積神經(jīng)網(wǎng)絡(luò)和反卷積網(wǎng)絡(luò)組成,在每次卷積后使用激活函數(shù)RELU來激活。用于風(fēng)格提取的損失函數(shù)如公式⑴所示,并通過最小化均方誤差(mse)來逐漸逼近原始圖像。
⑴
一般來說,圖像風(fēng)格可以看作圖片紋理,因為相關(guān)性是利用隨機變量來表示另一組隨機變量的線性近似過程,它是一種線性關(guān)系,所以它與表示的風(fēng)格有關(guān)。我們的風(fēng)格提取網(wǎng)絡(luò)如圖1所示。在內(nèi)容和風(fēng)格分離的過程中。從圖1(b)可以看到我們需要使用另一個輔助模型(圖1(b)右側(cè)),通過使用類別丟失和最小化mse損失函數(shù)來優(yōu)化圖1(a.b)中的網(wǎng)絡(luò)模型(圖1(b)左側(cè))。通過這個輔助模型的約束,我們可以保留原始圖片的風(fēng)格,去除多余內(nèi)容。例如,在MNIST數(shù)據(jù)集上,可以使用圖1(b)右側(cè)的輔助模型b刪除類別信息(0-9)。
2.2 內(nèi)容表達
在神經(jīng)網(wǎng)絡(luò)中,通常,隨著網(wǎng)絡(luò)結(jié)構(gòu)的深入,模型也變得更加復(fù)雜,提取的特征也相對增多。在訓(xùn)練過程中,每層網(wǎng)絡(luò)都可以提取一些信息,如何設(shè)置合適的網(wǎng)絡(luò)來提取內(nèi)容信息對于風(fēng)格轉(zhuǎn)移的任務(wù)就顯得至關(guān)重要。在相關(guān)的現(xiàn)有文獻中提到,內(nèi)容提取和風(fēng)格提取相比不需要深層網(wǎng)絡(luò),我們可以將其視為淺層表達。當(dāng)然,這里的內(nèi)容可能不準確,我們可以認為這是圖片的相對低頻部分。
當(dāng)卷積神經(jīng)網(wǎng)絡(luò)用于訓(xùn)練對象時,Hinton GE[5]提出了一種圖像表示方法,隨著處理級別的增加,對象信息更加明顯。 因此,沿著網(wǎng)絡(luò)的處理層次,源域輸入到目標域圖像中的圖像的實際內(nèi)容也將變得越來越敏感,但其準確的表達也將相對恒定。由此可以看出,網(wǎng)絡(luò)中的較高層可以基于對象及其輸入圖片的排列來捕獲高級內(nèi)容信息,而來自較低層的信息也可以通過重建,再現(xiàn)原始圖像值的精確像素。
在某種程度上,內(nèi)容信息可以被視為一種信息。例如,在MNIST數(shù)據(jù)集中,內(nèi)容是數(shù)字[0~9],可以將其視為類別。這同樣適用于SVHN,因為門牌號可以與內(nèi)容信息區(qū)分開來。因此,我們的內(nèi)容提取可以從以下公式導(dǎo)出:
⑵
其中n代表類別。y是真實值,f(x)是預(yù)測值。由于我們的模型主要是解決風(fēng)格提取相關(guān)的問題,故不對內(nèi)容提取做過多的討論。如果數(shù)據(jù)集很復(fù)雜,我們可以使用自動編碼器加在網(wǎng)絡(luò)末端,很容易將內(nèi)容提取。由于內(nèi)容信息比較容易表達,所以在MNIST數(shù)據(jù)集上不需要自動編碼器,如圖1(b)所示。
2.3 圖像生成
通過將原始圖像A的風(fēng)格轉(zhuǎn)移到圖像B來,我們生成一個新的圖像,同時匹配B的內(nèi)容和A的風(fēng)格,我們通過將提取風(fēng)格的網(wǎng)絡(luò)和內(nèi)容的網(wǎng)絡(luò)連接在一起,使每個網(wǎng)絡(luò)的表征特征相互融合。
⑶
相應(yīng)的目標圖像通過最小化損失函數(shù)生成,我們使用的損失函數(shù)如公式3所示。λ是一個系數(shù)。 本文通過線性組合兩個損失函數(shù)來訓(xùn)練我們的模型。為體現(xiàn)風(fēng)格提取器的提取效果,我們可以主動提供內(nèi)容,這是為了加快網(wǎng)絡(luò)培訓(xùn),使之更簡單方便,也突出了風(fēng)格提取器的有效性。
3 實驗
所提出的網(wǎng)絡(luò)在兩個廣泛使用的名為MNIST和SVHN的基準數(shù)據(jù)集上進行實驗評估。MNIST數(shù)據(jù)集包含60000個訓(xùn)練樣本和10000個測試樣本,樣本大小為28x28。SVHN是一個真實世界的圖像數(shù)據(jù)集,用于開發(fā)機器學(xué)習(xí)和目標識別算法,對數(shù)據(jù)預(yù)處理和格式化的要求最低。它與MNIST的風(fēng)格相似(例如圖像是小的裁剪數(shù)字),但是包含更多標記數(shù)據(jù)的數(shù)量級(超過600,000個數(shù)字圖像)并且來自更難的、未解決的實際問題(識別自然場景圖像中的數(shù)字和數(shù)字),SVHN是從Google街景圖像中的門牌號碼獲得的。
網(wǎng)絡(luò)結(jié)構(gòu)由網(wǎng)絡(luò)A和網(wǎng)絡(luò)B兩部分組成,如圖1(b)所示。在MNIST和SVHN方面,網(wǎng)絡(luò)A首先是使用兩個5×5,步幅為2的卷積網(wǎng)絡(luò);然后通過一個3×3,步幅為2的卷積操作,使用RELU激活函數(shù)。再通過Flatten和兩個全連接層,合并來自內(nèi)容信息的圖層;最后使用三個步幅為2的conv2DTranspose層,通道分別為128,64,32,激活函數(shù)為RELU。網(wǎng)絡(luò)B的前半部分來自A的全連接層,然后經(jīng)過自定義Flip-
GradientBuilder層及兩個全連接層處理后,獲得輸出。
實驗的學(xué)習(xí)率設(shè)定為0.001。Diederik P[5]使用Adam將損失函數(shù)設(shè)置為均方誤差。兩個基準數(shù)據(jù)集使用卷積自動編碼器架構(gòu)來分析數(shù)據(jù)。
如圖2所示,我們在MNIST上進行實驗。 我們處理多個手寫數(shù)字以形成圖A,然后制作另一個類似于epch0的圖,打亂數(shù)字。我們將epoch設(shè)置為300,隨著迭代次數(shù)的增加,我們發(fā)現(xiàn)變換后的圖像風(fēng)格越來越接近A. 在圖3中我們對SVHN進行了實驗,SVHN的輸入維數(shù)是32×32。
在這項工作中,我們的算法由python實現(xiàn)。 配備英特爾雙核2.5GHZ,GPU是 GTX 1060,6 GB,的PC,300輪迭代運行時間約一小時。
4 結(jié)論
本文研究了一種基于自動編碼器的風(fēng)格遷移算法——一種更簡單、更有效的算法,可以處理風(fēng)格遷移問題。探討如何提取特征,并使用卷積神經(jīng)網(wǎng)絡(luò)中的特征值表示來傳遞圖像風(fēng)格。雖然我們?nèi)〉昧瞬诲e的實驗結(jié)果,但仍有一些問題需要改進。圖像中的分離內(nèi)容或風(fēng)格不是定義明確的問題,原因可能是我們很難把握好圖像的風(fēng)格。在我們的工作中,我們認為風(fēng)格遷移只有在生成的圖像看起來既有風(fēng)格圖像特點,也有內(nèi)容圖像的特點時才算成功。盡管如此,它也沒有精確定義圖像風(fēng)格的表示,但訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)可以自動學(xué)習(xí)圖像,至少在某種程度上是風(fēng)格和圖像內(nèi)容的分離,是可行的。本文的研究內(nèi)容在現(xiàn)實生活中非常實用。由于網(wǎng)絡(luò)的訓(xùn)練可以提取圖像的風(fēng)格,并且它可以生成另一種具有這種風(fēng)格的圖像,這極大地提高了生物視覺之間的相似性[6-9],所以我們相信神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)人類(生物)大腦信息的一部分,但仍需要進一步的科學(xué)證據(jù)。
接下來,我們將擴展網(wǎng)絡(luò)以滿足更加復(fù)雜的場景及更多的數(shù)據(jù)。我們計劃將我們的模型擴展到深層次的框架中,并將其用于各種不同的應(yīng)用。
參考文獻(References):
[1] Gatys L A, Ecker A S, Bethge M. Image Style Transfer
Using Convolutional Neural Networks[C]// 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE Computer Society,2016.
[2] Rumelhart D E , Hinton G E , Williams R J . Learning
representations by back-propagating errors[J],1986.
[3] Duchi J, Hazan E, Singer Y, et al. dearly. Adaptive
Subgradient Methods Adaptive Subgradient Methods for Online Learning and Stochastic Optimization[J]. Journal of Machine Learning Research,2011.12(7):257-269
[4] Tieleman, T. and Hinton, G. Lecture 6.5-RMSProp,
COURSERA: Neural Networks for Machine Learning. Technical report,2012.
[5] Hinton G E, Salakhutdinov R R. Reducing the
Dimensionality of Data with Neural Networks[J]. Science,313.
[6] Cadieu C F , Hong H , Yamins D L K , et al. Deep Neural
Networks Rival the Representation of Primate IT Cortex for Core Visual Object Recognition[J].Plos Computational Biology,2014.10(12):e1003963
[7] Umut, Gü?lü, Gerven M A J V . Deep Neural Networks
Reveal a Gradient in the Complexity of Neural Representations across the Ventral Stream[J]. Journal of Neuroscience the Official Journal of the Society for Neuroscience, 2015.35(27):10005-14
[8] Khalighrazavi S M , Kriegeskorte N . Deep Supervised, but
Not Unsupervised, Models May Explain IT Cortical Representation[J]. Plos Computational Biology,2014.10(11):e1003915
[9] Yamins D L K, Hong H, Cadieu C, et al.
Performance-optimized hierarchical models predict neural responses in higher visual cortex[J].Proceedings of the National Academy of Sciences of the United States of America,2014.111(23):8619-24