风格迁移理论
算法論述
- 風格遷移,就是將兩幅畫給融合在一起。
如果說是把兩幅畫融合在一起呢?
現在假設三幅畫:
- 一幅畫表示的是風格畫,設為A
- 一幅畫表示的是內容畫,設為B
- 一幅畫表示的是輸出畫,設為C
我們要做的其實很簡單。
兩件事:
- 讓C和A的內容很相近。
- 讓C和B的風格很相近。
所以說,只需要給出內容差異度和風格差異度兩個度量值之后,我們再降低這兩個值就好了。
現在難點來了。如何度量呢?
關于內容的差異度:
- 兩幅畫的每個像素點的數值距離。 (常見的有絕對值,差的平方)
關于風格的差異度:
(這是一個難點,有個大神提出了使用Gram矩陣來解決這個問題。[^1])
- 一張圖片在經過卷積網絡之后,就可以得到一個特征圖,Gram就是在這個圖上定義出來的。[^1]
Gram定義:
圖片的shape一般是:[C, M, N]
- C:通道數(也有人喜歡稱這個為高)
- M, N表示是圖片的長寬
Gram矩陣計算
- Gram矩陣規模: [C, C]
- 其實就是每一個色層的圖像之間的關系。這是合理的,因為,我們認知的風格這里很大程度上是考慮的是顏色變化的風格。 (要是不想要有特征的方式,那就用別的風格距離的定義唄。)
- Gram(i,j) 就是把這兩層的矩陣提出來,即有兩個[M, N]的矩陣。然后,讓這兩個矩陣對應的位置做乘法之后,再做加法。(卷積的過程)
其實就是不同色層的卷積來構成的矩陣。
之后,用上面的內容的矩陣的變化方式來計算就好了。
代碼
(本來打算也放代碼的。但是發現網上的這些代碼只用CPU的話實在是太慢了。。)
https://blog.csdn.net/q295684174/article/details/79065032
這個鏈接上的代碼是可以跑的,就是特別慢。
https://www.jianshu.com/p/8f8fc2aa80b3
總結
- 上一篇: 基于MNIST的GANs实现【Pytor
- 下一篇: 【解决方案】Expected objec