What is neural style transfer?
notation
- C:content image
- S:style image
- G:generated image
What are deep ConvNets learning?
- 畫出前九張可以讓該 layer 的 neuron activation 最大的圖片
Layer 1
Layer 2
Layer 3
Layer 4
Layer 5
Cost Function
- 理論上只要一個 hyperparameter 就夠了,不過論文原作者使用了兩個
步驟
- 隨機初始化 G
- 使用 gradient descent 來最小化
Content Cost Function
Content cost function
選擇第 層 hidden layer 來計算 content loss
- 選擇靠前面的層 ( 很小)來計算 content loss,則會迫使生成圖片 在 pixel 的層級上很像 content image C
- 選擇靠後面的層 ( 很大)來計算 content loss,則只會確保生成的圖片裡面有該 neuron 想偵測的東西 (例如 狗) 就好
- 因此通常選擇靠中間的層來計算 content loss
步驟
- 拿一個 pre-trained ConvNet (例如 VGG)
- 分別是 C 和 G 的第 層 output
- 若 很接近,則兩個 image 有類似的 content
Style Cost Function
- 觀察不同 channel (即 neuron) 間的 activations 有多相關
- 可以理解成 提取的 feature,同時出現的機率
- ex: filter1 偵測橘紅色,filter2 偵測直條紋,它們相關度高表示橘紅色&直條紋常常一起出現;相關度低表示不常一起出現
- 可以理解成 提取的 feature,同時出現的機率
Style Matrix
矩陣 衡量任意兩個 channel 之間的相關度,可以用來表示該圖片的 style
- 詳細來說,其實是 unnormalized cross-covariance
- 如此就可以計算 以及
- 在線性代數中,G 也稱做 Gram matrix (格拉姆矩陣)
- Frobenius Norm,矩陣所有元素的平方和
- 乘個 normalize 用的常數 也可以
Style cost function
- 可以不只一層
- 如此可以同時考慮高階&低階特徵的相關度