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

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

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

迁移效果

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

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

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

一种风格下的风格迁移

两种风格下的风格迁移

演示网站

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

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

技术来源

为了实现这个项目,作者参考的是2017BMVC的一篇OralPaper:Exploringthestructureofareal-time,arbitraryneuralartisticstylizationnetwork(arXiv:1705.06830)。

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

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

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

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

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

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

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

论文模型架构

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

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

开源答疑

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

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

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

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

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

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

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

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

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

图像迁移风格保存模型_用TensorFlow.js在浏览器中部署可进行任意图像风格迁移的模型...相关推荐

  1. 使用 Colab 在 tf.keras 中训练模型,并使用 TensorFlow.js 在浏览器中运行

    文 / Zaid Alyafeai 我们将创建一个简单的工具来识别图纸并输出当前图纸的名称. 此应用程序将直接在浏览器上运行,无需任何安装.我们会使用 Google Colab 来训练模型,并使用 T ...

  2. 狗和披萨:使用TensorFlow.js在浏览器中实现计算机视觉

    目录 起点 托管说明 MobileNet v1 运行物体识别 终点线 下一步是什么?绒毛动物? 下载TensorFlowJS示例-6.1 MB TensorFlow + JavaScript.现在,最 ...

  3. 使用TensorFlow.js在浏览器中进行深度学习入门

    目录 设置TensorFlow.js 创建训练数据 检查点 定义神经网络模型 训练AI 测试结果 终点线 内存使用注意事项 下一步是什么?狗和披萨? 下载TensorFlowJS示例-6.1 MB T ...

  4. 使用face-api和Tensorflow.js在浏览器中进行AI年龄估计

    目录 性别和年龄检测 下一步是什么? 下载源-10.6 MB 在上一篇文章中,我们学习了如何使用face-api.js和Tensorflow.js在浏览器中对人的情绪进行分类. 如果您尚未阅读该文章, ...

  5. 用TensorFlow.js在浏览器中进行实时语义分割 | MixLab算法系列

    语义分割是监测和描绘图像中每个感兴趣对象的问题 当前,有几种方法可以解决此问题并输出结果 如下图示: 语义分割示例 这种分割是对图像中的每个像素进行预测,也称为密集预测. 十分重要且要注意的是,同一类 ...

  6. 使用迁移学习和TensorFlow.js在浏览器中进行AI情感检测

    目录 KNN分类器 迁移学习 我们的技术栈 配置 使用KNN分类器 将代码放在一起 测试结果 下一步是什么? 下载源-10.6 MB 在上一篇文章中,我们已经看到了加载预训练模型有多么容易.在本文中, ...

  7. 用 TensorFlow.js 在浏览器中训练一个计算机视觉模型(手写数字分类器)

    文章目录 Building a CNN in JavaScript Using Callbacks for Visualization Training with the MNIST Dataset ...

  8. 有了TensorFlow.js,浏览器中也可以实时人体姿势估计

    翻译文章,内容有删减.原文地址:https://medium.com/tensorflow/real-time-human-pose-estimation-in-the-browser-with-te ...

  9. js 只准输入数字_基于TensorFlow.js的JavaScript机器学习

    Credits: aijs.rocks 虽然python或r编程语言有一个相对容易的学习曲线,但是Web开发人员更喜欢在他们舒适的javascript区域内做事情.目前来看,node.js已经开始向每 ...

最新文章

  1. 前端每日实战:93# 视频演示如何用纯 CSS 创作一根闪电连接线
  2. 1/r单中心双电子积分Li+
  3. [Spring5]IOC容器_Bean管理注解方式_创建对象
  4. c语言中把一个数缩小十倍_小学数学易错点:一个数缩小10倍?缩小到它的十分之一?哪个正确?...
  5. Android之选项卡
  6. Laravel最佳实践--API请求频率限制(Throttle中间件)
  7. python中format函数用法简书_Python format 格式化函数
  8. struts2与spring集成时,关于class属性及成员bean自动注入的问题
  9. Spark内核解析之六:Spark 内存管理
  10. kindle底层系统详细说明
  11. c 语言车牌识别系统课题设计,基于图像的车牌识别系统的设计和实现
  12. 全行业产业链图示(摘自企查查)
  13. 项目管理模式:项目型、职能型、矩阵型
  14. 琵琶行·并序--白居易
  15. 【普及组_在线赛】班级聚会(reuntion)
  16. php获取农历日期节日
  17. Java集成PayPal支付
  18. 前端面试题整理 (ES6篇)
  19. 重邮计算机专业取得奖项,重邮邹宇航:保研北大,囊括国内外40余个重量级奖项的科创达人...
  20. C++三目运算符(简述)

热门文章

  1. 代码 操作 excel 打印且适应纸张大小
  2. “呆神”王英键的黑客江湖
  3. [附源码]计算机毕业设计JAVA鞋店销售管理
  4. 智慧城市-智慧城管系列-2-人流统计-PaddleDetection
  5. 马云被评为“十年十大思想者”,演讲说出“扎心”金句:蠢比癌症更可怕
  6. Windows To Go屏蔽本机硬盘教程
  7. Windows系统删除多余管理员账户
  8. 转载 GIS的下个十年(Peter Batty, president, Spatial Networking)
  9. CFD POST流线图设置
  10. 网络打印机驱动正常、设置正常的情况下能打印测试页、pdf、txt等文件但唯独office和wps软件无法使用打印机的问题解决办法