風(fēng)格遷移重要的兩步就是風(fēng)格圖像的風(fēng)格提取和內(nèi)容圖像的內(nèi)容提取。
紋理合成
紋理能夠描述一個(gè)圖像的風(fēng)格,所以風(fēng)格的提取可以使用紋理合成。
將神經(jīng)網(wǎng)絡(luò)的特性應(yīng)用在紋理合成中,使用VGG19,抽取它們?cè)诰矸e網(wǎng)絡(luò)某層的卷積特征。假設(shè)我們的卷積特征體積為CxHxW,可以把它看作HxW的空間網(wǎng)格,在網(wǎng)格上每一點(diǎn)都有C維的特征向量來描述圖像在這點(diǎn)的外觀。我們將通過使用網(wǎng)格中不同點(diǎn)所對(duì)應(yīng)的特征向量,取它們的平均值,然后得到一個(gè)1xC的向量,從而得到一個(gè)CxC的格拉姆矩陣(是內(nèi)積的對(duì)稱矩陣),此格拉姆矩陣就可以看做紋理的統(tǒng)計(jì)模型。紋理合成的具體步驟如下:
1、使用隨機(jī)噪聲初始化輸出圖像。
2、輸入一張圖像,使它通過卷積神經(jīng)網(wǎng)絡(luò),計(jì)算在各層上的格拉姆矩陣和輸出圖像格拉姆矩陣之間的L2范數(shù)加權(quán)總和。
3、進(jìn)行反向傳播,計(jì)算輸出圖像的像素梯度。
4、根據(jù)梯度上升,一點(diǎn)點(diǎn)更新圖像的像素
重復(fù)以上步驟
特征提取
內(nèi)容圖像將引導(dǎo)我們的生成圖像主題,同樣將內(nèi)容圖像通過VGG19物體識(shí)別模型,直接把卷積神經(jīng)網(wǎng)絡(luò)的局部特征看作是圖像的內(nèi)容。
以上就得到了圖像的風(fēng)格和圖像的內(nèi)容,剩下的就是把一個(gè)圖片的內(nèi)容和另一個(gè)圖片的風(fēng)格合起來。
風(fēng)格遷移
選取風(fēng)格圖像和內(nèi)容圖像,然后共同做特征識(shí)別,通過最小化內(nèi)容圖像的特征重構(gòu)損失和風(fēng)格圖像的格拉姆矩陣損失,然后我們就得到了新風(fēng)格的圖像。
