【实现】在浏览器中快速进行任意风格迁移

2018 年 11 月 20 日 论智
来源:GitHub
编译:Bot

风格迁移一直是很多读者感兴趣的内容之一,近日,网友Reiichiro Nakano公开了自己的一个实现:用TensorFlow.js在浏览器中部署可进行任意图像风格迁移的模型。让我们一起去看看吧!

GitHub:github.com/reiinakano/arbitrary-image-stylization-tfjs

小工具:reiinakano.github.io/arbitrary-image-stylization-tfjs/

迁移效果

所谓风格迁移,指的是神经网络通过迁移算法,用另一种风格(通常是画)重新“绘制”一张图像中的内容(通常是照片)。现如今,能在浏览器中实时进行风格迁移的项目有很多,但它们中的大多数都需要针对每种风格训练独立的神经网络,所以用户的选择大大受限。

Reiichiro Nakano提供的模型突破了以往模型的局限,它能将任何风格图像分解为表示其风格的100维向量,然后把这些向量结合照片信息一起馈送到另一个神经网络,以产生最终的风格化图像。

首先,我们来看看这个风格迁移模型的具体效果:

一种风格下的风格迁移


两种风格下的风格迁移


演示网站

上图是小编在作者开发的演示网站里测试的结果,感兴趣的读者可以前去一试。可以发现,虽然谈不上特别令人惊艳,但迁移的整体效果还是非常不错的,更可贵的是,它支持任意图像、任意风格的迁移,允许手动上传图片。

如果硬要说有什么不足,那就是网站的延迟有点高(选取图像/风格后无法及时跳转,也许是水管不行)。此外,在对构图空旷的图像(如加州金门大桥)进行风格迁移时,我们发现粗粝线条风格(如bricks)容易弱化主体线条,使迁移后的图像几乎没有内容。

技术来源

为了实现这个项目,作者参考的是2017 BMVC的一篇Oral Paper:Exploring the structure of a real-time, arbitrary neural artistic stylization network(arXiv:1705.06830)。

这篇论文结合灵活的风格迁移技术和快速网络传输,提出了一种允许使用任何内容/风格图像对进行实时风格化的网络。在包含约80,000幅画作的语料库上经过训练后,论文模型不仅在训练过的风格上表现出色,还能够推广到从未见过的风格和照片。也就是说,这是一个能以完全无监督的方式学习平滑的、结构丰富的嵌入空间,以及与风格绘画相关联的语义信息的模型。

一般来说,风格迁移模型的输入有两个,一是包含图像内容的照片c,二是包含图像风格的绘画s。这类算法假定图像的内容和风格可以定义如下:

  • 如果模型从两幅图像中提取到的高级特征欧氏距离接近,则两个图像的内容相似。

  • 如果模型从两幅图像中提取到的低级特征有相同的空间统计,则两个图像的内容相似。

根据这两个定义,风格迁移的优化目标可以表示为:

其中Lc(x, c)和Ls(x, s)分别是内容和风格的损失函数,λs是风格损失函数经拉格朗日乘数加权后表示的相对权重。

论文作者改进了这一做法。他们在风格迁移网络前添加了一个预测网络P(·),它以任意风格的图像作为输入,并预测归一化常数的嵌入向量→S,这样做的优势是模型能把学到的迁移方法推广到其他图像上。

论文模型架构

从本质上来说,这个模型直接学习的是从风格图像到风格参数的映射。在Kaggle Painter By Numbers(内容)和Describable Textures Dataset(风格)两个数据集上进行了训练后,模型输出的风格迁移效果如下图(左)所示:

网络是联合训练的,但它只用少量训练图像就模拟了多种风格,这意味着我们没有必要为每种风格单独设定拉格朗日乘数λs。 也就是说,同一个损失加权就足以在所有绘画风格和纹理上产生合理的结果。上图(右)则证明,该模型能够预测以前从未见到的风格和纹理样式,它们在质量上与训练集样本的风格和纹理几乎一致。

开源答疑

在GitHub上,开源项目的Reiichiro Nakano向开发者重点提了一些注意事项。

问:我的数据安全吗?你会看到我提交的图片吗?

当你在演示网站里测试风格迁移时,你的数据和图片只会在你自己的计算机上留下痕迹。事实上,这也是在浏览器中运行神经网络的主要优势之一。我只是把模型和代码发给你,由你在自己的浏览器上运行模型。

问:如果我想下载,模型一共多大?

风格神经网络的大小是9.6MB,迁移网络大概有7.9MB。它们在任何风格上都有效,所以你只用下一次就可以了。

问:你的模型和论文模型一模一样吗?

不完全一样,论文的风格网络用的是Inception-v3(大约96.2MB),太大了。所以在把模型移植到浏览器上之前,我用MobileNet-v2从预训练的Inception-v3网络中提取了知识,把大小缩小到了论文的1/10。

问:风格组合的具体方法是什么?

由于风格网络可以把每种风格映射成100维的风格向量,所以我们只需对内容和风格图像的风格向量进行加权平均,把计算结果作为迁移网络的输入,即可获得新风格向量。

参考阅读

  • 实时、任意图像风格迁移论文:arxiv.org/abs/1705.06830

  • 关于任意图像风格迁移的Magenta repo:github.com/tensorflow/magenta/tree/master/magenta/models/arbitraryimagestylization

  • MobileNetV2论文:arxiv.org/abs/1801.04381

  • 神经网络知识“蒸馏”:arxiv.org/abs/1503.02531

  • TensorFlow.js:js.tensorflow.org/

  • Google Colaboratory:colab.research.google.com/notebooks/welcome.ipynb#recent=true

登录查看更多
4

相关内容

【CMU】深度学习模型中集成优化、约束和控制,33页ppt
专知会员服务
45+阅读 · 2020年5月23日
【芝加哥大学】可变形的风格转移,Deformable Style Transfer
专知会员服务
30+阅读 · 2020年3月26日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
29+阅读 · 2020年3月5日
必读的10篇 CVPR 2019【生成对抗网络】相关论文和代码
专知会员服务
32+阅读 · 2020年1月10日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
 图像内容自动描述技术综述
专知会员服务
86+阅读 · 2019年11月17日
深度神经网络模型压缩与加速综述
专知会员服务
128+阅读 · 2019年10月12日
学习一个宫崎骏画风的图像风格转换GAN
AI科技评论
18+阅读 · 2020年3月13日
已删除
将门创投
7+阅读 · 2018年8月28日
基于二进制哈希编码快速学习的快速图像检索
炼数成金订阅号
8+阅读 · 2018年5月17日
CNN图像风格迁移的原理及TensorFlow实现
数据挖掘入门与实战
5+阅读 · 2018年4月18日
风格迁移原理及tensorflow实现-附代码
机器学习研究会
19+阅读 · 2018年3月25日
深度图像先验:无需学习即可生成新图像
论智
45+阅读 · 2017年12月4日
Arxiv
3+阅读 · 2018年4月18日
Arxiv
6+阅读 · 2018年4月4日
Arxiv
3+阅读 · 2018年3月21日
Arxiv
10+阅读 · 2017年11月22日
VIP会员
相关VIP内容
相关资讯
学习一个宫崎骏画风的图像风格转换GAN
AI科技评论
18+阅读 · 2020年3月13日
已删除
将门创投
7+阅读 · 2018年8月28日
基于二进制哈希编码快速学习的快速图像检索
炼数成金订阅号
8+阅读 · 2018年5月17日
CNN图像风格迁移的原理及TensorFlow实现
数据挖掘入门与实战
5+阅读 · 2018年4月18日
风格迁移原理及tensorflow实现-附代码
机器学习研究会
19+阅读 · 2018年3月25日
深度图像先验:无需学习即可生成新图像
论智
45+阅读 · 2017年12月4日
Top
微信扫码咨询专知VIP会员