系統(tǒng)框架:
其中損失網(wǎng)絡是在imgnet上預訓練過的vgg16,訓練過程中參數(shù)保持不變;
變換網(wǎng)絡fw是深度殘差網(wǎng)絡(deep residual cnn);
損失網(wǎng)絡對比生成網(wǎng)絡生成的圖片與每一幅訓練集中的目標圖片,
于是損失函數(shù)可表示為:
網(wǎng)絡細節(jié)的設計大體遵循DCGAN中的設計思路:
1.不使用pooling層,而是使用strided和fractionally strided卷積來做downsampling和upsampling,
2.使用了五個residual blocks
深度殘差網(wǎng)絡(resnet):理論上網(wǎng)絡深度越深能夠提供更好的特征表示,然而梯度彌散/爆炸成為訓練深層次的網(wǎng)絡的障礙,導致無法收斂。有一些方法可以彌補,如歸一初始化,各層輸入歸一化,使得可以收斂的網(wǎng)絡的深度提升為原來的十倍。然而,雖然收斂了,但網(wǎng)絡卻開始退化了,即增加網(wǎng)絡層數(shù)卻導致更大的誤差。深度殘差網(wǎng)絡采用的解決方法是讓網(wǎng)絡F(x)學習殘差y-x,基于的理論是至少讓誤差不會變得更大。
殘差連接可以幫助網(wǎng)絡學習到一致性(identity function),而生成模型也要求結(jié)果圖像和生成圖像共享某些結(jié)構,因而,殘差連接能夠更好地對應DCGAN的生成模型。
3.除了輸出層之外的所有的非residual blocks后面都跟著spatial batch normalization和ReLU的非線性激活函數(shù)。
4.輸出層使用一個scaled tanh來保證輸出值在[0, 255]內(nèi)。
5.第一個和最后一個卷積層使用9×9的核,其他卷積層使用3×3的核。
損失函數(shù)構建:
損失函數(shù)與gatys的定義類似,具體有,
1. 感知損失并不是直接構建在生成圖與目標圖之間,而是通過損失網(wǎng)絡的二者響應之間
2.特征重構損失(內(nèi)容損失):
3.風格重構損失:
結(jié)論:
與gatys的原文相比,最大的特點是快!一次訓練,終身搞定!(當然訓練的速度如狗屎一般慢)