機器學習:利用卷積神經網路實現影象風格遷移 (一)
相信很多人都對之前大名鼎鼎的 Prisma 早有耳聞,Prisma 能夠將一張普通的影象轉換成各種藝術風格的影象,今天,我們將要介紹一下Prisma 這款軟體背後的演算法原理。就是發表於 2016 CVPR 一篇文章,
“ Image Style Transfer Using Convolutional Neural Networks”
演算法的流程圖主要如下:
總得來說,就是利用一個訓練好的卷積神經網路 VGG-19,這個網路在ImageNet 上已經訓練過了。
給定一張風格影象
content representation
在建立目標函式之前,我們需要先給出一些定義: 在CNN 中, 假設某一 layer 含有
所以,我們可以給出 content 的 cost function:
style representation
為了建立風格的representation,我們先利用 Gram matrix 去表示每一層各個 feature maps 之間的關係,
利用 Gram matrix,我們可以建立每一層的關於 style 的 cost :
結合所有層,可以得到總的cost
最後將 content 和 style 的 cost 相結合,最終可以得到:
下一篇部落格裡,我們將介紹基於 TensorFlow 的程式碼實現。