相信很多人都对之前大名鼎鼎的 Prisma 早有耳闻,Prisma 能够将一张普通的图像转换成各种艺术风格的图像,今天,我们将要介绍一下Prisma 这款软件背后的算法原理。就是发表于 2016 CVPR 一篇文章,
“ Image Style Transfer Using Convolutional Neural Networks”
算法的流程图主要如下:
总得来说,就是利用一个训练好的卷积神经网络 VGG-19,这个网络在ImageNet 上已经训练过了。
给定一张风格图像 a 和一张普通图像 p ,风格图像经过VGG-19 的时候在每个卷积层会得到很多 feature maps, 这些feature maps 组成一个集合 A ,同样的,普通图像 p 通过 VGG-19 的时候也会得到很多 feature maps,这些feature maps 组成一个集合 P ,然后生成一张随机噪声图像 x , 随机噪声图像 x 通过VGG-19 的时候也会生成很多feature maps,这些 feature maps 构成集合 G 和 F 分别对应集合 A 和 P , 最终的优化函数是希望调整 x 让 随机噪声图像 x 最后看起来既保持普通图像 p 的内容, 又有一定的风格图像 a 的风格。
content representation
在建立目标函数之前,我们需要先给出一些定义: 在CNN 中, 假设某一 layer 含有 Nl 个 filters, 那么将会生成