Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization
2019-10-10 10:50:19
Officical Torch Code: https://github.com/xunhuang1995/AdaIN-style
Unofficial PyTorch Code: https://github.com/naoto0804/pytorch-AdaIN
Unofficial PyTorch Code: https://github.com/irasin/Pytorch_Adain_from_scratch
1. Background and Motivation:
本文提出一種快速的可以適應任何一種 style 的圖像轉換技術。首先先來回歸一下常見的幾種 Normalization 技術:
1). Batch Normalization:
給定輸入的一個 batch x,BN 對每一個特征通道進行歸一化操作:
其中,gamma 和 beta 是從數據中學習的仿射參數,mu 和 delta 是均值和方差,是分別沿着 batch size 和 spatial dimension 方向對每一個特征通道進行的操作:
BN 在訓練的時候利用 mini-batch 統計來學習,在 inference 的階段就用流行的統計來替換他們,這樣就導致了 training 和 inference 的不一致。后續也有很多對該問題的改進。
2). Instance Normalization:
后來出現的 IN layers 可以顯著的改善 style transfer 的性能,即:
與 BN layer 不同的是,此處的均值和方差是分別對 channel 和 each sample 沿着空間維度計算得到的:
另外的一個與 BN 的不同之處是:training 和 inference 是一致的。
3). Conditional Instance Normalization:
該方法對每一種 style 都學習一種參數,即:
驚奇的是,該方法可以產生完全不同 style 的圖像,但是用的是同一組網絡參數,僅僅是 IN layer 的 affine parameters 不同。
2. Interpreting Instance Normalization:
略
3. Adaptive Instance Normalization:
既然 IN 可以根據 affine parameters 將輸入歸一化為 single style,那么,有沒有可能,我們給定多種自適應的 affine transformations 來生成任意給定類型的圖像呢?基於該動機,作者對 IN 的技術進行了拓展,提出了 Adaptive Instance Normalization (AdaIN)。AdaIN 接收一張 content input X 和 一張 style input Y,並且簡單地對 X 進行 channel wise mean and variance 使其可以匹配 Y。與 BN, IN, CIN 不同,AdaIN 沒有可學習的 affine parameters。其根據輸入的 style image,自適應的生成 affine parameters:
本文將 normalized content input 進行 scale 處理,然后用 \mu(y) 進行 shift。這些統計都是沿着 spatial locations 進行的。
4. Experimental Results: