神经风格迁移

神经风格转移的第一篇文章是15年的A Neural Algorithm of Artistic Style

1 任务概述

输入一张原图,一张风格图,得到一张内容是原图、风格是风格图的新图片

或者说,用一张噪声图片去逼近原图的内容和风格图的风格

2 内容匹配

CNN各层的feature map实际上编码了图像的信息。那么2个图像经过CNN生成的2套feature map就可以用来做匹配

假设第l层有N个feature map,每个feature map维度是M=hxw,则该层的feature map可以表示为$F \in R^{N\times M}$,对2个图像在该层的内容损失可以定义为

$$\mathcal L^l_{content} = \frac{1}{2}\sum(F_{ij}-P_{ij})^2$$

其中P是原图在该层的feature map,F是随机噪声图片在该层的feature map

较高层的feature map比较适合作为内容匹配的选择

3 风格匹配

一组向量的格拉姆矩阵由该向量的内积定义,衡量了向量间的两两相关性。风格损失使用格拉姆矩阵构建。对噪声图片第l层N个feature map可以算出NxN维的格拉姆矩阵G,若风格图像在l层的格拉姆矩阵为A,则风格损失定义为:

$$
\mathcal L^l_{style} = \frac{1}{4M^2N^2}(G_{ij}-A_{ij})^2
$$

多层feature map每层加权就可以得到总体的风格损失

所以总体损失$\mathcal L= \alpha \mathcal L_{content}+\beta \mathcal L_{style}$

4 模型

网络使用预训练好的VGG19,参数是固定的,变化的是噪声图片。所以模型训练过程是更新噪声图片的像素点的值

显然,这个过程是在线的,对不同的输入原图和风格图都必须重新训练模型才能得到结果。tensorflow版本实现,512分辨率图片,GTX TITANX需要跑不到2分钟。

离线版提出了图像转移网络+损失网络的架构,避免了重新训练,速度提升巨大,还能做超分辨率。

神经风格迁移发展迅速,在线、离线、多风格、混合风格、内容保真、笔触大小等花样层出不穷。这里是个一直在更新最新相关研究论文和代码的汇总仓库