前言
在研究风格迁移领域的同学们,如果研究此论文的时候会发现官方的代码是基于torch写的,采用C语言版本,需要装在lua的编译器,并不能在我们常用的Pycharm上面进行很好的实施,因此根据论文的原理以及询问作者修改的点进行了复现这篇论文的代码,这篇论文总体上是在Universal Style Transfer via Feature Transforms[CVPR,2017]基础上进行了优化,想要了解的同学可以移步改论文
论文地址:PDF下载地址
code地址:本人的复现、官方源码
一、论文的原理
论文中所述整体的结构框图
不要慌,不要一上来被这个复杂的结构框图吓住,其实就是在Universal Style Transfer via Feature Transforms基础上加上了作者提出的深度扰动环节,具体看我下面的分析,其实在下述这个图中,VGG在总体上可以看成五层,以上的经验都是这么用的,如果如果觉得太啰嗦了其实只用一层VGG,一层解码也是可以的,只是VGG的不同层可以得到不同的细节特征用这么多层的效果进行累加才能得到更好的效果。
首先对初学者讲一下下面这个运算方式,
其实这种矩阵就是指的是格拉姆矩阵,运算方式如下所示,该矩阵就是通过自身矩阵乘上一个转置,在风格迁移中,可以讲内容图做一次格拉姆矩阵运算,风格图也做一次格拉姆矩阵的运算,然后零这个两个矩阵的差值最小,就是在令内容图片的风格向风格图片的风格靠近,我是这么理解的,大家可以阅读论文A Neural Algorithm of Artistic Style,格拉姆矩阵和VGG网络使用的论文都是有这篇开山之作的影子。
这里的公式看着不要慌,其实Fc就是一个对内容图片提取特征后的一个矩阵,前面的这里是和Universal Style Transfer via Feature Transforms论文中的一样的,通过这种运算方式可以去除内容图片的风格,保留特征。
下面这一步原理就是通过矩阵运算的方式,对内容图片添加风格图片的风格
论文中的创新点就是在这里了,这个添加的Z就是作者所说的扰动,实际上我觉得作者在这里的描述就是想说明该方法插入扰动后依然能够保持论文前面提出格拉姆矩阵的有效性。
在公式8和公式9里面,实际上就是想对内容图矩阵和风格图矩阵进行按照一定比例的融合。
二、实验结果
总结
只要能够理解Universal Style Transfer via Feature Transforms的基础上再理解这篇论文是不难的,这篇博客我写的也不是很细致,主要是因为对比实验的时候用到了这篇论文,大家有什么经验补充可以留言交流。