所謂風格遷移,其實就是提供一幅畫(Reference style image),將任意一張照片轉化成這個風格,並盡量保留原照的內容(Content)。之前比較火的修圖軟件Prisma就提供了這個功能。我覺得這一說法可以改成風格遷移,將一張圖的風格遷移到另一張圖片上,也可以理解為生成問題,根據兩種圖片,生成第三種(風格)圖片,具體看怎么理解怎么做吧(不喜勿噴,純個人觀點)。比如下圖,把一張圖片的風格“遷移”到另一張圖片上:
論文地址:https://arxiv.org/pdf/1508.06576v2.pdf 然而,原始的風格遷移的速度是非常慢的。在GPU上,生成一張圖片都需要10分鍾左右,而如果只使用CPU而不使用GPU運行程序,甚至需要幾個小時。這個時間還會隨着圖片尺寸的增大而迅速增大。這其中的原因在於,在原始的風格遷移過程中,把生成圖片的過程當做一個“訓練”的過程。每生成一張圖片,都相當於要訓練一次模型,這中間可能會迭代幾百幾千次。如果你了解過一點機器學習的知識,就會知道,從頭訓練一個模型要比執行一個已經訓練好的模型要費時太多。而這也正是原始的風格遷移速度緩慢的原因。(出處:https://zhuanlan.zhihu.com/p/24383274)
幾種模型匯總一下:
1、可以理解為生成模型:
簡單來說便是輸入一張隨機噪音構成的底圖,通過計算Style Loss和Content Loss,迭代update底圖,使其風格紋理上與Style Image相似,內容上與原照片相似。正常的訓練過程是通過loss反向傳播更新網絡參數,這里則是用一個已經訓練好的VGG16作為backbone,鎖住參數,更新輸入的底圖。具體的Style Loss和Content Loss計算過程可以參考:https://zhuanlan.zhihu.com/p/57564626,這種模型的缺點就是慢。
2、一次成型的Feedforward-based method
論文地址:https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1603.08155.pdf
也是比較直接的一個想法,增加了一個Autoencoder形狀的Feedforward Net 來擬合風格遷移的過程。仍然是之前的Content Loss+Style loss,用另一個網絡來計算並統一在一起稱之為 Perceptual Loss。
3、One network, multiple styles
論文地址:https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1703.09210.pdf
微軟亞研這篇的模型由三部分組成,Encoder E, StyleBank Layer K, Decoder D. 作者希望將content和style的生成分離,即 E+D負責重建Content,不同的K則控制不同style的風格,每個模型可以有多達50個不同的K。
(個人覺得這種方法可能需要很大的網絡結構才能實現,並且如果同時存儲所有風格,模型切換實現起來可能有問題),這種方法已經做到了做到Multi-style single model。
4、接着,設計一種丟進去什么新的style都可以實時進行transfer,而無需重新訓練
論文:Exploring the Structure of a Real-time, Arbitrary Neural Artistic Stylization Network
Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization
一文中利用Normalization component來實現不同的style transfer,這篇文章提出了Adaptive Instance Normalization,也就是適應性的IN。
上圖兩個Encoder均為pre-trained VGG19,訓練過程中參數不再更新。
Training和Inference過程中,Content和Style image同時傳入Encoder,得到兩組feature map, 然后通過AdaIN,對content image進行變換,轉換所用的參數由計算得到,然后再傳給decoder生成最終圖片。需要注意的是 Content loss和之前paper定義的有所不同,如圖所示,用的是經過AdaIN變換過的feature map計算L2 loss,而非encoder的輸出。
自己的想法:
目標還是對之前的Content Loss+Style loss進行優化,但是增加一個offset來對Fx進行二次優化,並且將output styleM輸出單獨存儲在一個張量M中,每次需要什么風格就單獨選取Mi,實現Multi-style single model而且參數也不會隨着其他風格進行更新。具體實現代碼正在進行編寫,正在准備中期,找工作,可能比較慢,有效果再更新。
再次感謝:https://zhuanlan.zhihu.com/p/57564626,https://zhuanlan.zhihu.com/p/24383274