前面已经介绍了如何利用神经网络进行风格迁移,参见博客深度学习之风格迁移(一)——Neural Style(Gatys) 。该文介绍了怎么把艺术作品的风格迁移到真实图片中去,生成的图片是带有艺术色彩的绘画作品。那么现在给定两个真实的图片,一张作为风格图片,一张作为内容图片,现在希望把风格照片的风格迁移到内容照片中去,那么我们肯定希望得到的图片类似真实的照片。但是如果采用Gatys提出的方法,会导致即使两张图片都是真实照片,生成的图片也是绘画风格的,如下图所示:
本文旨在解决Gatys风格迁移导致的照片失真问题。算法改进体现在损失函数上,模型结构并没有改变。
那么怎么保证内容图片不失真呢?
作者认为可以通过增加约束以限制生成图片是真实图片。而这个约束来自于仅在颜色空间中对内容图片进行局部仿射变换,说通俗点,就是尽量只改变照片的颜色,而不改变纹理等特征。而进行“局部”仿射变换可以满足空间多样性的要求,比如天空从蓝色变成黑色,建筑从白色变成金色(灯火)。这个约束在模型中体现为下列正则损失项:
在向内容照片中融入风格照片的风格时,要保证场景匹配,比如天空对应天空,摩天大楼对应摩天大楼。但是在Gatys的方法中,由于表示风格的Gram矩阵表示的是整个图片上的整体分布,而内容图片中的场景可能比风格图片中的对应场景小,这样就会导致风格溢出情况,比如天空中出现了摩天大楼。
为了解决这个问题,在风格迁移之前会对内容照片和风格照片进行语义分割,并且风格损失现在变为
其中 C 是分割类别数, Ml,c[⋅] 表示 l 层的第 c 个分割的掩码。公式(2b)相当于计算每个分割对应的特征映射。
语义分割只进行一次,其他层的掩码是通过对初始掩码进行采样以使其大小和该层的特征映射匹配得到的。作者在其论文实现[3]的介绍中表示,语义分割可以通过手动的方式进行,比如Photoshop,也可以通过算法自动实现,如DilatedNet([4])。并且在分割时,为了减少内容照片中的孤儿(即该分割标记在风格图片中不存在),内容照片中的分割标签从风格照片的风格标签中选择得到。
内容损失和Gatys风格迁移算法一样,没有改变。所以把几个损失函数结合起来,得到下面的总损失函数:
本文的实验取 Γ=100 , λ=104 。
[1] Deep Photo Style Transfer. Fujun Luan, Sylvain Paris, Eli Shechtman, Kavita Bala. CVPR 2017.
[2] Supplementary. Fujun Luan.
[3] deep-photo-styletransfer in Github by Fujun Luan.
[4] A closed form solution to natural image matting. Anat Levin, Dani Lischinski, and Yair Weiss. PAMI 2008.
[5] DilatedNet. Liang-Chieh Chen, George Papandreou, Iasonas Kokkinos, Kevin Murphy, Alan L. Yuille. arxiv, 2016.