一个模型搞定所有风格转换,直接在浏览器实现(demo+代码)

简介:

用一个模型就能实现所有类型的风格转换!一个名为Arbitrary Image Stylization in the Browser的项目最近火起来。

作者是日本小哥Reiichiro Nakano,他用TensorFlow.js在浏览器中构建了一个使用任意图像进行风格化的demo。

不像以前的快速风格转换算法那样需要每种风格都有一个单独的网络,在这个demo中,所有风格图像只使用一个单一的模型。并且,你可以自由混合不同的风格。

使用也非常简单,你只需要选择一张内容图像(content image)和一张风格图像(style image),然后点击“Stylize”,静候片刻,一张风格化的图像就处理好了。

d547d18d3f0a040542895539e4381b5c09a74070

如图所示,我们在“内容图像”选择一张芝加哥城市风景图,“风格图像”选择一张港口的版画风格图像,风格化后得到一张版画风格的芝加哥风景图。

其中,内容图像和风格图像都可以自定义,也就是说,你可以上传任意图像。风格化的强度也可以调整。

作者还提供了混合两种风格的效果。

e514d1af71175a0b56815641c830a26b845f581c

总结而言,这个风格网络被训练并用于为任意绘画风格生成一个100-D的风格向量(style vector)。然后,将该向量与内容图像一起馈送到一个的转换网络,进行实际的风格转换。

这个100D的向量基本上是一个“style”的潜在空间。我们可以利用这个“潜在空间”做一些有趣的事情。

我们可以通过对风格图像和内容图像的风格向量进行加权平均,来控制风格化的强度。作者发现,这对于风格特别鲜明的内容图像很有用。

我们还可以通过在它们的风格向量之间插值,来组合不同的风格,并让网络猜测这两幅图像之间的风格是什么样子的。

将模型移植到浏览器上的最大问题是模型大小。风格网络基于Inception-v3,它的权重> 97MB。作者使用distillation,能够用9.6MB的MobileNet-v2替换它,尺寸缩小了10倍。所以作者认为distillation这种技术被低估了,它可以为浏览器带来一些很酷的ML功能,因为很多模型由于太大而无法在资源有限的环境中进行部署。

这个demo建立在谷歌大脑和蒙特利尔大学合作的论文Exploring the structure of a real-time, arbitrary neural artistic stylization network之上,这是图像风格化的经典论文之一。作者开源了代码。

下面我们简要介绍一下论文的主要思想。

模型和方法

这篇论文的核心是通过构建一个风格学习网络来实现快速的风格迁移。

论文提出了一种将艺术风格神经算法的灵活性和快速风格迁移网络的速度相结合的方法,允许使用任何内容/风格图像进行实时的风格化。

这个模型成功地用大约80000幅画作的数据库进行了训练,并能够推广到以前未见过的画作。

论文的主要贡献包括:

1、介绍了一种新的算法,用于快速、任意的艺术风格迁移;在80000幅画作上训练,并能对未观察过的画作实时运行。

2、在紧凑的嵌入空间中呈现左右绘画风格,捕捉绘画的语义特征。

3、证明用大量画作进行训练之后,模型能够预测以前从未观察过的风格。

4、嵌入空间允许对艺术家的艺术范围进行新的探索。

f51dd2282d036e823b759bad0df342a0e219fab6

如图2所示,整个网络架构由风格学习网络P和风格转换网络T组成,学习的目的是style loss和content loss。风格学习网络P预测来自输入风格图像的嵌入向量S,为风格转换网络提供一组归一化常数。风格转换网络将照片转换为风格化的表示。Content loss和style loss来源于VGG图像分类网络的表征空间距离。风格学习网络主要遵循Inception-v3架构。


原文发布时间为:2018-11-21

本文作者:Reiichiro Nakano

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”。

原文链接:一个模型搞定所有风格转换,直接在浏览器实现(demo+代码)

相关文章
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
1069 14
|
10月前
|
人工智能 自然语言处理 API
Cline:29.7K Star!一文详解VSCode最强开源AI编程搭子:一键生成代码+自动跑终端+操控浏览器...
Cline 是一款集成于 VSCode 的 AI 编程助手,支持多语言模型,实时检查语法错误,帮助开发者提高编程效率。通过智能化手段,Cline 可以生成代码、执行终端命令、调试 Web 应用,并扩展更多功能。
3676 73
|
8月前
|
编解码 JavaScript 前端开发
【Java进阶】详解JavaScript的BOM(浏览器对象模型)
总的来说,BOM提供了一种方式来与浏览器进行交互。通过BOM,你可以操作窗口、获取URL、操作历史、访问HTML文档、获取浏览器信息和屏幕信息等。虽然BOM并没有正式的标准,但大多数现代浏览器都实现了相似的功能,因此,你可以放心地在你的JavaScript代码中使用BOM。
259 23
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
XML 编解码 JavaScript
DOM(文档对象模型)和 BOM(浏览器对象模型)
【10月更文挑战第19天】在前端开发中,理解 DOM(文档对象模型)和 BOM(浏览器对象模型)是至关重要的。它们是 Web 开发的基础,为我们提供了与网页文档和浏览器进行交互的能力。
1415 62
|
Web App开发 JavaScript 前端开发
JavaScript Window - 浏览器对象模型
JavaScript Window - 浏览器对象模型
172 2
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
824 1
|
JavaScript 前端开发
JavaScript BOM 的概念(浏览器对象模型)
JavaScript BOM 的概念(浏览器对象模型)
127 1
|
存储 缓存 JavaScript
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
329 0