Part 1:
Style Transfer是AI将不同风格和内容结合在一起从而创造出新艺术作品的技术。如Figure 1所示,将相机拍摄下的街景照片分别与梵高的《星空》、蒙克的《尖叫》以及透纳的《牛头人的沉船》结合在一起,创造出对应风格的油画作品。
以梵高的《星空》为例,图c的内容和原始图像相近,除此之外天空中还呈现了《星空》中的月亮和星星,而绘画笔法上也继承了梵高的粗笔触,画面的整体色调和《星空》一致。可以看出,算法对提供绘画素材的街景图片和提供绘画风格素材的《星空》两者的处理方式是不同的,对前者着重保留画面内容,对后者则是要剔除掉其内容而保留绘画风格。
该模型出自 A Neural Algorithm of Artistic Style,是最早的关于Artistic Style Transfer的paper,也被认为是现在最有效的算法,本文就是要讲解如何实现该算法。
Figure 2是模型的核心思想,通过从输入图片中提取出内容表征(Content Representations)和风格表征(Style Resentations),并用提取出的content和style表征来生成一幅内容和风格分别与原始图片相近但又不完全相同的新图片。
如Figure 3的草图所示,模型的Input包括:
- content image
- style image
- output image
Input通过loss function通过计算content/style和output的差异,将求导得到的梯度用于修正output image的pixels。从前文已经知道,模型对content和style的处理是不同的,所以需要两个loss function: content loss和style loss。
content loss
从公式可以看出,content loss function就是MSE。 p ⃗ \vec p p表示content image, x ⃗ \vec x x则表示output image, F i j l F_{ij}^l Fijl和 P i j l