目錄
- 整體思路
- 優化點:Adaptive Instance Normalization(AdaIN)
- 網絡結構
- 損失函數
- 論文實驗結果
這篇文章是2017年發表的,在Gatys的2015年論文《A Neural Algorithm of Artistic Style》基礎上,做了不少改進工作,當然也吸收了其他論文中的部分,比如嘗試去訓練一個前向傳播的神經網絡提高遷移速度,吸收IN(Instance normalization)層的思想,去掉Gram矩陣,修改損失函數,從而大大提高了分割遷移速度和質量。因此也順利被cvpr收入。原論文地址:https://arxiv.org/pdf/1703.06868.pdf
一、整體思路
文章大體沿用之前風格遷移的思想,損失函數的定義依舊使用內容損失和風格損失。其中風格網絡設計較之前有些復雜,但是只使用了前向網絡,速度反而加快了,整體計算變得更加簡單。
風格網絡使用encode-decode和AdaIN層組成,其中encode-decode是使用對稱的VGG -19網絡,標定內容特征的均值和方差到對應的風格特征上,產生目標圖片t
一個隨機的初始化的解碼器g被訓練去映射t到圖片空間。生成有了風格的圖片T(c,s)
最終生成圖片的函數(不同alpha下的生成圖片可見下圖):
二、優化點:Adaptive Instance Normalization(AdaIN)
2.1 Batch Normalization-歸一化一批樣例
簡介:以一個單一風格為中心。對一批樣例進行計算每通道的均值和方差。BN layers在訓練和測試時采用的是不同的數據集,訓練時是采用小批數據。Gatys等人的方法Gram matrix因為需要循環optimization,生成一張圖要很久,Ulyanov等人提出用一個前饋神經網絡替代這個optimization的過程,也就是訓練一個generator,這個generator中用了BN。
公式如下:
BN 在訓練的時候利用 mini-batch 統計來學習,在 inference 的階段就用流行的統計來替換他們,這樣就導致了 training 和 inference 的不一致。后來也有很多對該問題的改進。
2.2 Instance Normalization -每個樣例規范化
簡介:每個通道都獨立計算均值、方差。IN layers在訓練以及測試時使用相同的數據統計。歸一化每個樣例到一個單一的風格。Ulyanov等人發現只需將BN替換為instance normalization (IN)即可大幅提升收斂速度。BN和IN的區別在於BN用的mean和variance是從一個batch中所有的圖片統計的,而IN的mean和variance是從單張圖片中統計的。注意 γ和 β對每個channel都是不同的。
公式如下:
2.3 Conditional Instance Normalization-條件實例歸一化
簡介:Dumoulin等人發現在進行IN的時候,使用不同的 γ和 β即可生成出風格不同的圖像,提出了conditional instance normalization(CIN)
公式如下:
驚奇的是,該方法可以產生完全不同 style 的圖像,但是用的是同一組網絡參數,僅僅是 IN layer 的 affine parameters 不同。兩個參數也是學習而來,Dumoulin等人的方法遷移有限種的風格,想遷移新的的風格則需要訓練新的模型。
2.4 Adaptive Instance Normalization-自適應實例歸一化
簡介:既然 IN 可以根據 affine parameters 將輸入歸一化為 single style,那么,有沒有可能,我們給定多種自適應的 affine transformations 來生成任意給定類型的圖像呢?基於該動機,黃勛等人對 IN 的技術進行了拓展,提出了 Adaptive Instance Normalization (AdaIN)。AdaIN 接收一張內容圖X 和一張風格圖 Y,不引入參數,自動計算出其均值和方差,只需使用一次前向網絡,即可完成風格網絡的生成,將大大提高執行速度。與 BN, IN, CIN 不同,AdaIN 沒有可學習的 affine parameters。其根據輸入的 style image,自適應的生成 affine parameters:
三、網絡結構
網絡結構主要分為兩部分:生成網絡以及計算損耗網絡兩個網絡。計算損耗網絡是用來訓練時約束的。生成網絡是一個前向網絡,后期用來進行風格轉換網絡。風格轉換生成網絡由Encoder-AdaIN-Decoder這3部分組成。
1、Encoder 部分是采用預訓練好的VGG網絡,只使用到了Relu4_1部分,將風格和內容圖的圖像都從圖像空間轉到特征空間。
2、AdaIN層是對內容圖進行歸一化,這里是通過對齊內容圖的每通道的feature map的均值和方差來匹配風格圖每通道feature map的均值和方差。在不同層進行AdaIN測試(relu2_1、relu3_1、relu4_1)。在越高的層數上使用AdaIN風格化越明顯,層數越低效果也越不明顯。
3、Decoder部分是一個將feature空間轉成圖像空間的網絡,這部分網絡一般是采用和encoder對稱的網絡結構,整個網絡中需要訓練的就是這部分網絡的權重參數信息,初始可以隨機一些初始化參數,通過梯度下降可以不斷進行更新參數以使整個損耗函數比較小、網絡逐漸收斂。池化層一般是替換成采用最近鄰上采樣的方式來防止棋盤效應,在encoder 和 decoder部分的padding一般都是采用反射填充避免邊界artifacts。decoder中沒有使用歸一化層,因為IN/BN這些實例歸一化和批歸一化都是針對單個風格的。
整個生成網絡的時間花費基本是content encoding、style encoding、decoding各占三分之一時間。
四、損失函數
損失函數分析轉自:https://zhuanlan.zhihu.com/p/57875010