深度学习可以做哪些有趣的事情?(2)--Perceptual Losses for Real-Time Style Transfer and Super-Resolution

系统框架:


深度学习可以做哪些有趣的事情?(2)--Perceptual Losses for Real-Time Style Transfer and Super-Resolution_第1张图片

其中损失网络是在imgnet上预训练过的vgg16,训练过程中参数保持不变;

变换网络fw是深度残差网络(deep residual cnn);

损失网络对比生成网络生成的图片与每一幅训练集中的目标图片,

于是损失函数可表示为:

深度学习可以做哪些有趣的事情?(2)--Perceptual Losses for Real-Time Style Transfer and Super-Resolution_第2张图片

网络细节的设计大体遵循DCGAN中的设计思路:

1.不使用pooling层,而是使用strided和fractionally strided卷积来做downsampling和upsampling,

2.使用了五个residual blocks


深度残差网络(resnet):理论上网络深度越深能够提供更好的特征表示,然而梯度弥散/爆炸成为训练深层次的网络的障碍,导致无法收敛。有一些方法可以弥补,如归一初始化,各层输入归一化,使得可以收敛的网络的深度提升为原来的十倍。然而,虽然收敛了,但网络却开始退化了,即增加网络层数却导致更大的误差。深度残差网络采用的解决方法是让网络F(x)学习残差y-x,基于的理论是至少让误差不会变得更大。

残差连接可以帮助网络学习到一致性(identity function),而生成模型也要求结果图像和生成图像共享某些结构,因而,残差连接能够更好地对应DCGAN的生成模型。

深度学习可以做哪些有趣的事情?(2)--Perceptual Losses for Real-Time Style Transfer and Super-Resolution_第3张图片
深度学习可以做哪些有趣的事情?(2)--Perceptual Losses for Real-Time Style Transfer and Super-Resolution_第4张图片

深度学习可以做哪些有趣的事情?(2)--Perceptual Losses for Real-Time Style Transfer and Super-Resolution_第5张图片

3.除了输出层之外的所有的非residual blocks后面都跟着spatial batch normalization和ReLU的非线性激活函数。

4.输出层使用一个scaled tanh来保证输出值在[0, 255]内。

5.第一个和最后一个卷积层使用9×9的核,其他卷积层使用3×3的核。

损失函数构建:

损失函数与gatys的定义类似,具体有,

1. 感知损失并不是直接构建在生成图与目标图之间,而是通过损失网络的二者响应之间

2.特征重构损失(内容损失):

深度学习可以做哪些有趣的事情?(2)--Perceptual Losses for Real-Time Style Transfer and Super-Resolution_第6张图片

3.风格重构损失:

深度学习可以做哪些有趣的事情?(2)--Perceptual Losses for Real-Time Style Transfer and Super-Resolution_第7张图片
与前文相同,Gram矩阵
深度学习可以做哪些有趣的事情?(2)--Perceptual Losses for Real-Time Style Transfer and Super-Resolution_第8张图片
各层Gram矩阵二阶欧氏距离差之和

结论:

gatys&ours

与gatys的原文相比,最大的特点是快!一次训练,终身搞定!(当然训练的速度如狗屎一般慢)


你可能感兴趣的:(深度学习可以做哪些有趣的事情?(2)--Perceptual Losses for Real-Time Style Transfer and Super-Resolution)