這個博客寫的不要太好,強烈推薦並轉載。【https://zhuanlan.zhihu.com/p/158657861】
AdaIN 筆記
計算機視覺練習生,中國科學院大學碩士在讀
論文Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization的閱讀筆記
ICCV 2017的一篇論文,有點老,不過是一篇很棒的論文,做了非常多的實驗,靠譜、實在,對我的研究也有非常大的幫助。
風格遷移主要3個指標,遷移速度,風格類別數、遷移結果的質量(這個憑肉眼觀測的屬性感覺還是比較主觀),作者說,作爲成年人,我全都要。之前的研究要麼就是比較慢,要麼就是可供前的風格數量有限,這篇論文的主要目標是實現實時的、任意風格的風格遷移(style transfer),主要方法就是自適應實例標準化(Adaptive Instance Normalization,AdaIN),將內容圖像(content image)特徵的均值和方差對齊到風格圖像(style image)的均值和方差。此外,這個方法還給用戶非常多的控制權,包括內容和風格的折中(trade off),風格插值(混合風格遷移),是否保留顏色,對圖像的哪個區域進行風格遷移[1]。
話不多說,先上圖感受一下效果,第一行爲content image,提供內容,第一列爲style image,提供風格,其餘爲風格遷移得到的結果,效果還是很不錯的。
Fig.1 遷移結果,From reference [1]
一、背景知識
論文中的方法主要跟標準化(normalization)有關,這裏對各種標準化操作進行一個介紹。
1、Batch Normalization
Ioffe 和 Szegedy[2]引入Batch Normalization(BN),大大簡化了前向神經網絡的訓練。Radford等[3]發現BN在圖像生成模型中也非常有效。Batch Normalization就是對一個batch中的數據進行標準化,就是每一個值減去batch的均值,除以batch的標準差,計算公式如下:
From reference [1]
From reference [1]
From reference [1]
其中, 分別表示計算均值和標準差,是仿射變換的兩個參數。
2、Instance Normalization
Ulyanov等[4]發現,將BN替換爲Instance Normalization(IN),可以提升風格遷移的性能。IN的操作跟BN類似,就是範圍從一個batch變成了一個instance,計算公式如下:
From reference [1]
From reference [1]
From reference [1]
3、Conditional Instance Normalization
Dumoulin等[5]提出了Conditional Instance Normalization(CIN),計算公式如下:
From reference [1]
乍一看好像沒啥變化,其實不然,它在訓練中會學習不同的 對(pair)。令人驚喜的是,對於同一張content image,同一個遷移網絡,使用相同的卷積層參數,使用不同的 對,可以得到不同風格的遷移結果。爲什麼!先賣個關子,咱後頭慢慢講。
二、爲什麼Instance Normalization可以這麼厲害!!!
(Conditional)Instance Normalization取得了巨大的成功,這到底是爲什麼呢?是道德的淪喪,還是人性的扭曲......偏了偏了,讓我們一起走進實驗,探索其中的奧祕。
Ulyanov等[4]將其歸因於IN對content image的對比度的不變性。作者覺得,不,它不是這樣的。二話不說,擼起袖子就是幹,讓實驗結果說話
Fig.2, 實驗結果,From reference [1]
作者分別用原圖和對比度標準化後的圖像對網絡進行訓練,結果(Loss收斂的速度,值)如圖2中的(a)和(b)所示,可以發現並沒有什麼不同,IN對contrast normalized的圖像依舊比BN更有效,所以對比度它不是答案的關鍵。
衆所周知(我之前就不知道,孤陋寡聞如我),DNN提取的特徵的統計特性可以代表圖像的風格[6-8]。Gatys等[9]使用二階統計特性作爲優化目標;Li等[10]發現,對其他統計特性,如channel-wise的均值和方差,進行匹配,對風格遷移也是很有效的。基於上述觀察,作者提出,instance normalization通過對特徵的統計特性(均值和方差)進行標準化,實現了某種形式的風格標準化(style normalization)。特徵的均值和方差就代表着圖像的風格!爲了驗證自己的想法,作者又做了一個實驗,先將圖像遷移到同一個風格(不是目標風格),然後再進行一次風格遷移(到目標風格),結果如圖2中的(c)所示,IN和BN的性能差異減小了很多。遷移到同一個風格後,BN的均值和方差和IN的均值和方差就差不多了(差多少取決於遷移的性能),所以BN和IN的性能就差不多了。沒錯了,是它,是它,就是它!實錘了,特徵的均值和方差就代表着圖像的風格!這也就解釋了爲什麼CIN使用不同的 對,可以得到不同風格的遷移結果。
三、重點來了:Adaptive Instance Normalization
在BN,IN,CIN中,網絡會學習仿射變換參數,作者提出的AdaIN則無需學習這兩個參數,直接用style image的特徵的均值和標準差代替這兩個參數,公式如下:
From reference [1]
其中, 分別表示content image的特徵的均值和標準差, 分別表示style image的特徵的均值和標準差。這個公式可以理解爲,先去風格化(減去自身均值再除以自身標準差),再風格化到style image的風格(乘style image的標準差再加均值 )。
網絡結構如圖3所示
Fig.3 網絡框架,From reference [1]
訓練時,先用VGG提取content image和style image的特徵,然後在AdaIN模塊進行式(8)的操作,然後用於VGG對稱的Decoder網絡將特徵還原爲圖像,然後將還原的圖像再輸入到VGG提取特徵,計算content loss和style loss,計算公式如式(11-13)所示,style loss會對多個層的特徵進行計算。VGG的參數在訓練過程中是不更新的,訓練的目的是爲了得到一個好的Decoder。
From reference [1]
From reference [1]
From reference [1]
四、實驗結果
1、跟其他方法的比較
圖4是遷移的結果,個人覺得效果最好的是Chen and Schmidt那個,但是它速度慢了些,比這篇論文慢50倍左右(見圖5)。Loss我覺得這篇論文倒是降得挺低的,訓練200多次迭代後就比其他都低了,但效果我感覺其實沒別人的好(這件事比較主觀),這說明,loss不能充分反映最後的效果會這樣
Fig.4 遷移結果,From reference [1]
Fig.5 遷移速度、風格數量,From reference [1]
Fig.6 兩個Loss,From reference [1]
2、看看其他方法效果怎麼樣
Enc-AdaIN-Dec: 論文中的方法
Enc-Concat-Dec: 將AdaIN替換爲串聯操作,即把content image會和style image的特徵簡單串聯起來
Enc-AdaIN-BNDec: 在DEcoder中加入BN
Enc_AdaIN-INDec: 在DEcoder中加入IN
圖7(d)中可以看到(a)中鴨子的輪廓,說明網絡沒能把style image的style和content解耦好,與圖8中content loss很大相對應;(e)和(d)效果很差,style loss也很大,(e)效果尤其差。這也在此驗證了作者的想法,Normalization會將風格進行標準化(或者說,去風格化),這與我們想生成不同風格圖像的目標相左,所以效果自然不好。
Fig.7 不同方法的遷移結果,From reference [1]
Fig.8 不同方法的Loss,From reference [1]
3、content和style的折中
用戶可以通過參數 來控制content和style的折中, 越大,風格遷移得越好,但內容的保存得越少,如圖9所示
Fig.9 content與style的折中,From reference [1]
4、多風格的混合
如圖10所示,四個頂點是4張style image,中間是遷移結果,混合了4張圖像的style,離style image越近,風格也越靠近該圖
Fig.10 多風格混合遷移,From reference [1]
5、色彩控制
如圖11所示,左半邊大圖爲content image,右上角小圖爲style image,如果直接遷移,得到的圖的顏色跟style image會很像,通過色彩控制選項,可以保存原圖的色彩,效果如圖11右半邊所示
Fig.11 色彩控制,From reference [1]
6、空間控制
將一張圖像的不同區域遷移到不同風格,效果如圖12所示
Fig.12 空間控制,From reference [1]
Reference
[1] Huang, Xun, and Serge Belongie. "Arbitrary style transfer in real-time with adaptive instance normalization." InProceedings of the IEEE International Conference on Computer Vision, pp. 1501-1510. 2017.
[2] S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In JMLR, 2015
[3] A. Radford, L. Metz, and S. Chintala. Unsupervised representation learning with deep convolutional generative adversarial networks. In ICLR, 2016.
[4] D. Ulyanov, A. Vedaldi, and V. Lempitsky. Improved texture networks: Maximizing quality and diversity in feed-forward stylization and texture synthesis. In CVPR, 2017.
[5] V. Dumoulin, J. Shlens, and M. Kudlur. A learned representation for artistic style. In ICLR, 2017.
[6] L. A. Gatys, A. S. Ecker, andM. Bethge. Image style transfer using convolutional neural networks. In CVPR, 2016.
[7] C. Li and M. Wand. Combining markov random fields and convolutional neural networks for image synthesis. In CVPR, 2016.
[8] Y. Li, N. Wang, J. Liu, and X. Hou. Demystifying neural style transfer. arXiv preprint arXiv:1701.01036, 2017.
[9] L. A. Gatys, A. S. Ecker, andM. Bethge. Image style transfer using convolutional neural networks. In CVPR, 2016.
[10]Y. Li, N. Wang, J. Liu, and X. Hou. Demystifying neural style transfer. arXiv preprint arXiv:1701.01036, 2017.