来源:Coursera吴恩达深度学习课程
要构建一个神经风格迁移系统,需要为生成的图像定义一个成本函数/代价函数(cost function),通过最小化成本函数,可以生成你想要的任何图像。
重新描述一下问题:给定一个内容图像C和一个风格图片S,目标是生成一个新图片G。为了实现神经风格迁移,定义一个关于G的成本函数J(G)来评判生成图像的好坏,然后使用梯度下降法最小化J(G)来生成新的图像G。定义成本函数的公式如下:
第一部分被称作内容代价(content cost),这是一个关于内容图片和生成图片的函数,它是用来度量生成图片G的内容与内容图片C的内容有多相似。第二部分是风格代价函数(style cost),是关于S和G的函数,用来度量图片G的风格和S的风格的相似度。同时两者之间的权重使用两个超参数来确定。Andrew觉得一个超参数似乎就够了,但提出神经风格迁移的原始作者使用了两个不同的超参数。
关于神经风格迁移算法的接下来几段视频中展示的,是基于Leon Gatys, Alexandra Ecker和Matthias Bethge的这篇论文。Leon A. Gatys, Alexander S. Ecker, Matthias Bethge, (2015). A Neural Algorithm of Artistic Style
论文不是很难读懂,推荐看看论文。
如上图,为了生成一个新图像,要做的是(1)随机初始化生成图像G,它可能是100×100×3,可能是500×500×3,又或者是任何你想要的尺寸。(2)使用梯度下降法使成本函数J(G)最小化,更新公式:
在这个步骤中,实际上更新的是图像G的像素值,也就是100×100×3。
看上图的这个例子。假设你从这张内容图片(编号1)和风格(编号2)图片(毕加索画作)开始,当你随机初始化G,随机初始化的生成图像可能就是这张随机选取像素的白噪声图(编号3)。接下来运行梯度下降算法,最小化代价函数J(G),逐步处理像素,这样慢慢得到一个生成图片(编号4、5、6),越来越像用风格图片的风格画出来的内容图片。
以上内容我们看到了神经风格迁移算法的概要(overall outline),定义一个生成图片G的代价函数,并将其最小化。接下来我们需要了解怎么去定义内容代价函数和风格代价函数,在之后的文章介绍。
说明:记录学习笔记,如果错误欢迎指正!转载请联系我。