风格迁移的格拉姆矩阵

2024 年 8 月 29 日 | 阅读 3 分钟

之前我们提取了内容图像和风格图像的所有相关特征。卷积神经网络在从任何输入其中的图像中提取内容元素方面做得很好。

提取的风格特征需要一个额外的预处理步骤才能更有用。研究人员使用格拉姆矩阵进行更有效的风格特征提取,并使其成为一个重要步骤。从卷积网络中提取的任何特征仍然包含与内容相关的信息,例如对象结构和定位。

通过将格拉姆矩阵应用于这些提取的特征,消除了这种与内容相关的信息,并且它不会影响风格信息。从图像中提取风格本身就是一个广泛的话题。将格拉姆矩阵应用于从卷积神经网络中提取的特征,有助于创建与数据相关的纹理信息。

格拉姆矩阵使用以下简单公式定义

                  Gram=V^T V

这里,V 是一个任意向量,并乘以其转置。

定义 gram_matrix() 函数

将 gram_matrix() 函数应用于风格特征

我们有特征提取函数和格拉姆矩阵函数来完成风格迁移的过程。现在,我们将 gram_matrix() 函数应用于我们之前提取的风格特征。

现在我们将为风格格创建一个字典,并将每一层映射到其对应特征的格拉姆矩阵。我们字典的键将是一个特定层。而值将包含该层对应风格特征的格拉姆矩阵。之后,我们将遍历风格特征字典中的每一层,以获取我们之前提取的所有特征的格拉姆矩阵。

风格权重字典的初始化

我们拥有所有提取的特征和一个包含所有提取特征的相应格拉姆矩阵的字典。我们选择了五层来提取特征,并提供了多种重建图像风格的方式,这也为定制留下了空间。我们将通过将某些权重参数与每一层相关联来选择优先考虑某些层而不是其他层。

注意: 靠近模型开始的层通常在重新创建风格特征方面有效,而后面的层则提供了风格元素的额外多样性。

我们需要定义的另一个权重参数是我们在内容图像和风格图像之间确定的平衡量。这允许我们通过定义风格与内容的比例来定制我们的最终目标图像。

现在,我们将使用风格和内容图像数据来优化我们的目标图像。所以我们将从我们的原始目标图像开始。我们的目标图像将从内容 .clone 语句获取,如下所示

现在,我们拥有所有三张图像,稍后将执行优化过程。