深度学习笔记35 样式迁移


首先,奠基性工作——基于CNN的样式迁移

 这里有三个三层的卷积神经网络,一个输入为内容,一个输入为样式,中间那个是合成图,这个神经网络训练的竟然不是权重,而是这个合成图。它的思想就是我要训练这张合成图,让他既匹配内容图片的CNN的某一层的输出,又匹配样式图片CNN的某一层的输出,这样我们就认为这张图片又有内容,又有风格。

这确实是一个比较好玩的东西,他竟然训练的是一张图,而不是W。

这里不仅有三个卷积,而且有三个损失函数,content、style和TV(降噪损失)

content loss,内容损失,我们需要匹配我们生成图片的输出和content image的输出,我们直接用均值做即可;

style loss,样式损失,常常用normalization之后的gram与自己生成的目标样式做差的均值;

tv loss,tv降噪损失,检测每个像素点周围的像素差别不要太大,因为太大的话很可能是噪点。

除此之外,还有一个重点,就是我们要用卷积的哪一层的输出去比较?

首先是样式,我们可以多选几层,比如第一层,我们能够拿到最细微的最局部的样式;第3层,能拿到稍微大一些的局部信息;等等,也可以选最后一层,拿到全局的宏观的样式。

然后是内容,内容直接选最后面的某一层即可。

Q&A

1、除了合成图片之外,我们不要对网络更新,即Y.detach()

2、TV损失其实做的就是一个图像平滑技术。