Coursera 笔记

Module 04 · Special Applications: Face recognition & Neural Style Transfer

Cost Function代价函数

Coursera ↗

要构建一个神经风格迁移(Neural Style Transfer)系统,我们需要为生成的图像定义一个 代价函数(Cost Function)。通过最小化这个代价函数,你可以生成你所希望的图像。

问题定义

  • 你会得到 一张内容图像 C 和 一张风格图像 S。
  • 你的目标是生成一张新的图像 G,使得它能够在保持内容图像的内容特征的同时,模仿风格图像的风格。

代价函数定义

为了实现神经风格迁移,你需要定义一个代价函数 J(G) 来衡量生成图像的质量。我们将通过 梯度下降(Gradient Descent) 方法来最小化这个代价函数,从而生成期望的图像。

代价函数包含两个部分

  1. 内容代价函数(Content Cost) 💡
  • 该函数是内容图像 C 和生成图像 G 的一个函数,旨在衡量生成图像的内容与内容图像的内容的相似度。
  1. 风格代价函数(Style Cost) 🎨
  • 该函数是风格图像 S 和生成图像 G 的一个函数,旨在衡量生成图像的风格与风格图像的风格的相似度。

加权系数

  • 我们将通过两个超参数 α 和 β 来加权内容代价和风格代价。
  • 虽然只用一个超参数来指定相对权重似乎已经足够,但原始的神经风格迁移算法作者使用了两个不同的超参数,我将在这里遵循他们的约定。

神经风格迁移算法的原始作者:

  • Leon Gatys, Alexander Ecker, 和 Matthias Bethge。
  • 他们的论文不难理解,观看完这几个视频后,如果你有兴趣,可以阅读他们的论文深入了解。

算法运行步骤

为了实际生成新的图像,算法将按照以下步骤运行:

  1. 初始化生成图像 G:
  • 你将随机初始化生成图像 G,例如它的尺寸可以是 100 × 100 × 3 或 500 × 500 × 3 等,具体尺寸可根据需求调整。
  1. 定义代价函数 J(G):
  • 代价函数定义已经在前面提到。
  1. 梯度下降优化:
  • 使用梯度下降算法最小化代价函数 J(G),更新图像 G 的像素值。
  • 更新规则为:
  • 在这个过程中,你会逐步更新图像 G 的像素值,使其逐渐逼近目标图像,既保留了内容图像的内容,又模仿了风格图像的风格。


实际示例:从随机噪声到风格图像

假设你开始时有这张 内容图像 和这张 风格图像。通过随机初始化 G,你得到的初始图像可能是纯白噪声,图像中的每个像素值都是随机选择的。

过程:

  • 随着梯度下降的进行,代价函数 J(G) 会不断被最小化,从而逐步更新图像 G 的像素值。
  • 最终,你将得到一张图像,它看起来越来越像 内容图像,但同时又呈现出 风格图像 的风格。🎨

总结:神经风格迁移的框架

在本视频中,我们概述了 神经风格迁移算法 的框架:

  • 定义了 生成图像 G 的代价函数 J(G)。
  • 通过 梯度下降 来最小化这个代价函数,最终生成你所期望的图像。

接下来,我们将深入探讨如何具体定义 内容代价函数 和 风格代价函数。请期待下个视频,我们将开始详细讲解这些内容!📹