📜  样式转移概述(深度协调)

📅  最后修改于: 2021-04-16 06:08:15             🧑  作者: Mango

自人类开始对周围世界进行教育以来,绘画一直是表达情感和理解的重要方式。例如,下面的老虎图像具有真实老虎中的老虎内容。但是请注意,纹理和着色的样式取决于创建者。

神经网络中的样式转换是什么?
假设您有从手机拍摄的照片(P)。您想要如下所示使您的照片风格化。

取一个图像(P)的内容和另一图像(A)的样式以生成与P的内容和A的样式匹配的图像(X)的过程称为样式转移或深度协调。您不能通过简单地将P和A重叠来获得X。

架构与算法
Gatys等人在2015年指出,可以分离图像的内容和样式,因此可以组合不同图像的内容和样式。他使用了卷积神经网络(CNN),称为vgg-19(vgg代表视觉几何组),它的深度为19层(具有16个CONV层和3个FC层)。
vgg-19由Stanford University的Standford Vision Lab在ImageNet数据集上进行了预训练。步态使用平均池,没有FC层。
池化通常用于减少特征向量的空间量。这有助于减少计算量。共有两种池,如下所示:

MAX&AVG池

合并过程

样式转移中的损失:

  • 内容损失
    让我们在vgg-19中选择一个隐藏层(L)来计算内容损失。令p:原始图像,x:生成的图像。假设P l和F l表示与L层相对应的各个图像的特征表示。然后,将内容损失定义为:
    L _{\text {content}}(\rho, x, L)=\frac{1}{2} \sum_{i j}\left(F_{i j}^{l}-P_{i j}^{l}\right)^{2}
  • 风格损失
    为此,我们首先必须计算Gram Matrix 。不同滤波器/通道之间的相关性计算涉及层1的矢量化特征图i和j之间的点积。如此获得的矩阵称为克矩阵(G)。样式损失是样式图像的Gram矩阵与生成的图像的Gram矩阵之间的差的平方。
    G_{i j}^{l}=\sum_{k} F_{i k}^{l} F_{j k}^{l}
  • 总体损耗
    由以下公式定义(其中α和β是根据要求设置的超参数)。
    L_{\text {total}}(P, A, X)=\alpha \times L_{\text {content}}+\beta \times L_{\text {style}}

    理论上,生成的图像X使得内容损失和样式损失最小。这意味着X同时匹配P的内容和A的样式。这样做将生成所需的输出。

注意:由于硬件优化,与CUDA(计算统一设备体系结构)的并行性以及英特尔的超线程概念,这使得这一令人兴奋的新领域成为可能。
代码与输出
您可以在__CA__的Github Repo上找到Style Transfer的全部代码,数据文件和输出(粘连的好处:它也具有音频样式的代码!)。