百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

FB扩展移动端从移动设备上实时风格迁移到速文本分类器

toyiye 2024-06-06 22:12 10 浏览 0 评论

机器之心报道


Facebook新机器学习系统Caffe2Go:可在移动设备上实现实时风格迁移

随着视频通话逐渐成为人们交流的主要方式,Facebook 希望创造最新的视频创意工具来帮助人们表达自我。最近,他们在手机 app 中测试了新的相机应用,实时在视频中添加艺术元素。这项技术被称为「风格转换」。它可以将一张图片中的艺术风格,例如梵高的画作,加入普通的图片或视频中去。这是以往技术上难以实现的事,通常这需要将参考图和要处理的数据发送到数据中心,通过大型服务器进行处理。Facebook 最新开发的移动端深度学习平台第一次摆脱了信号塔的束缚,可以实时捕捉、分析和处理图像,将最新技术放进人们的手中。这一新程序被称为 Caffe2Go,是一个完整的深度学习系统,它的架构已经嵌入手机 app 中。通过将处理图片和视频的人工智能模型压缩至百分之一大小,Facebook 现在已经可以在 iOS 和安卓系统中高效运行深度学习网络。最终,Facebook 公司的应用可以在部分手机中以不到 50 毫秒的速度完成人工智能任务的处理,而人眨眼需要的时间大约需要 300 毫秒。

相机风格转换工具是两种技术的结合:Caffe2Go 运行环境与风格转换模型。Facebook 的人工智能团队一直在处理算法与大规模系统,他们一直在致力于开发新模型,让风格转换更加快速稳定。于是,现在你拿起手机,开始摄像,梵高的绘画风格变得无处不在了。

Caffe2Go 项目在三个月前开始,目前没有其他公司的产品能够做到这样的效果:让人工智能风格转换变成创作工具。不仅如此,Facebook 做到了更多,他们让这种应用可以在手机中实时处理图像。该项目的研究者跨越产品、技术和研究者。FAIR 团队的 Justin Johnson 是一篇描述该项目技术基础论文(Perceptual Losses for Real-Time Style Transfer and Super-Resolution )的作者,他们在前人的努力基础之上开发了新的技术;应用机器学习团队则通过努力将 AI 引擎塞进手机设备中;相机团队负责满足用户需求;正是因为所有人的努力,这些团队构建了运行在移动设备上的高效神经网络。我们将解释如何思考和开发这一应用技术的,从 Caffe2Go 开始。

Caffe2Go

轻量快速

人工智能对计算机科学产生了深远的影响,但它的应用一直被局限在大型数据中心里,距离普通用户存在很长一段距离。大多数时候,人工智能「实时处理」应用将数据发送到远端数据中心,通过那里的 GPU 来处理,物理距离造成了不可避免的延迟。我们认为使用超级计算机进行实时处理是不实际的,于是我们转换思路,努力让人工智能在移动设备的 CPU 中运行。

没人想拖着一台超级计算机出门

手机可以拍照,通话,也可以实时理解用户所需,不需要连接远端服务器,但它们的性能有限。尽管近年来硬件设备的发展让移动设备的计算能力有了很大改进,手机 CPU 现在已经可以在一秒钟内进行数十亿次运算,但智能软件在设计中还要面对诸如功率,存储器和计算能力的各种资源限制。因此,移动设备环境对机器学习系统提出了机遇和挑战。

面对这些挑战,我们的解决方案是设计超轻量级模块化框架。为此,我们以开源的 Caffe2 项目为基础,遵循 Unix 理念开发了 Caffe2Go。我们确保了用于声明和连接组件的核心架构的轻量化,允许多种组件与其连接——包括对于移动设备的专用优化。我们保留了一个精巧的算法框架,允许工程人员将抽象概念描述成有向无环图(DAG),同时确保没有约束被强加在图中执行节点的输入和输出上。这允许我们的工程团队能够在不同平台上实现和优化模块,同时可以轻松地连接各种模块。当图像实时输入时,通过硬件功能进行自我实例化可以达到最大处理速度。

速度是计算密集型移动应用的关键,特别是对于图像和视频处理而言,框架的轻量级设计允许我们为特定的运算符执行平台进行特定的优化。NNPack 库是其中一个例子,Caffe2 集成在移动运行环境中时,通过使用移动 CPU 中被称为 NEON 的功能,可以显著提高运算速度。在 iOS 设备上,我们也正在着手集成加速功能如 Metal 语言。所有这些都是通过模块化设计完成的,无需改变一般模型定义。因此,算法端和运行环境可以互相依靠,不必担心兼容性的问题。

面向开发者

Caffe2 是我们的第一个产业级深度学习平台,它可以在服务器 CPU、GPU、iOS 和安卓四种平台上运行,使用同一种代码。因为我们的模块化设计,这种架构在不同平台上都使用同一种语言,但对每个平台都有优化。这是一个开发人员不必担心的细节;例如,可以在移动端 NNPack(iOS 和安卓)和服务器 GPU 的 CUDNN 中进行选择。在 Caffe2 中,算法开发者可以专注于算法,无需考虑如何运行卷积。

快速的部署设计也能使开发者受益。从开发者的角度看,调试移动设备的运行时间可能是一项挑战,因为移动端工具链(toolchain)并不如桌面的和服务器的工具链那么先进。我们通过从硬件上抽象神经网络的数学而解决了这个问题——一个 Caffe2go 中的串行化网络(serialized network)在被应用于移动手机和服务器时可以得到相同的数值输出。其结果是,我们可以将大部分工作(模型训练、性能评估、用户体验研究)移动到服务器环境中进行;当结果看起来不错了之后,就可以实现在移动环境中的一键式部署了。

训练风格迁移模型

风格迁移(style transfer)并不是什么新概念。它最早是由研究人员在发表于 2015 年 8 月的一篇题为《A Neural Algorithm for Artistic Style》的论文中引入的。但是,当时这项技术的速度还很慢,而且需要强大的服务器。后面的几个月,研究社区改进了这项技术,将其速度提升了几个数量级,但也还是需要依赖服务器上的大量计算能力。

Caffe2go 成功使人工智能实现了高速处理,并且可以集成到你手上的移动设备中。但该风格迁移模型仍然还需要优化,这样才能在确保实时体验的同时还能保证得到高质量、高分辨率的图像。

优化成有效的模型大小

传统的风格迁移研究得到的模型(甚至只是前馈变量)是很大(在参数的数量方面)很慢的。我们的目标是创造能够运行新的、更小的、更高效的模型的风格迁移应用——能够在 iPhone 6s 或以上的手机上不掉帧地提供 20 FPS 的高质量视频。

为了减小该模型的尺寸,我们应用了 3 种主要的方法:优化了卷积层的数量(这是处理中最耗时间的部分)、优化了每一层的宽度、以及调整了处理过程中的空间分辨率(spatial resolution)。卷积层的数量和宽度是可用于调整处理时间的单独指标——即调整图像有哪些方面需要处理,或调整一个单独的处理过程需要多少时间。对于空间分辨率,我们可以调整中间层中图像实际被处理的大小。通过较早地使用池化(pooling,缩小正被处理的图像的大小),我们可以加速处理时间,因为系统不再需要处理那么多的数据了。我们还发现,使用这些技术,我们可以极大地减少该网络的宽度和深度,同时还能保持合理的质量。

提升质量

图像质量是主观的,非常难以测量——尤其是对于风格迁移这样的东西。因此我们打造了一些可视化工具,其中包括 A/B tests;并训练了不同的模型以确保我们可以得到最高质量的图像结果。我们的大型 GPU 集群由 FBLearner Flow 驱动,让我们可以快速扫描大范围的超参数(比如模型架构、内容/风格权重、和下采样),从而找到满足我们的性能目标同时能保持和提升质量的训练良好的前向风格(feedforward style)。

在提升质量方面还有很多其它的技巧——比如,应用实例规范化(instance normalizatio)而不是常用的批规范化(batch normalization)能有助于多种风格,同样避免卷积层中的零填充(zero padding)可以减少伪像,也可以将不同的预处理或后处理过滤器应用到风格或内容图像上。但在我们的测试中,我们发现这些方法往往在一些风格上效果良好,在另一些风格上则效果不佳。

凭借在这项风格迁移技术上的速度和质量优化,使用 Caffe 2 框架,我们就可以将一种实时图像处理系统应用到移动设备上。


Facebook发布新版fastText:拓展至移动端,加入教程

Facebook 人工智能研究院(FAIR)进一步拓展了 fastText 的应用范围,他们发布了支持 294 种语言的预训练矢量文件包,并配有两个快速入门教程,为学生、软件开发者和机器学习研究人员提供了更多支持。同时,随着 fastText 模型内存使用量的减少,它现在已经可以装进手机和树莓派这样的小型计算设备中了。

在小内存设备上的 fastText

为了让更多人和应用在移动端享受到 fastText 带来的便利,Facebook 本次推出的新版本降低了 fastText 模型的内存需求。基于早期版本 fastText 构建的模型通常需要几 G 的内存,而新版本只需要数百 Kb。

FAIR 团队的研究者们通过最近发布的 FAISS(一种用于高维度向量相似性搜索和聚类的开源库)压缩了 fastText 模型和内存使用量。对此,研究团队发表了一篇论文《FastText.zip: Compressing Text Classification Models》描述了两个研究项目的整合研究。

论文链接:https://arxiv.org/pdf/1612.03651.pdf

简单且最棒的文本分类器

fastText 旨在让开发者、研究者和学生们能够快速上手。它的速度特性可以让你快速迭代产品,并在没有专门硬件的情况下优化你的模型。fastText 模型可以在任何多核 CPU 上用不到几分钟的时间训练超过十亿单词,或在不到一分钟时间里将五十万个句子分类成几百到数千个类。

fastText 分类器在与更复杂、通过 GPU 加速的神经网络架构相比有很大优势。两者之间的比较在 Facebook 研究团队发表的另一篇论文《Bag of Tricks for Efficient Text Classification》中已有体现。相比神经网络模型,fastText 的精度损失很小。

论文链接:https://arxiv.org/pdf/1607.01759.pdf

fastText 与卷积神经网路在情绪分析任务中的对比。

FAIR 设计 fastText 的过程

在机器学习的发展历程中,软件的研究进度往往超过硬件,研究者们经常需要优化已有程序的性能——提高准确性,同时减少计算能力的消耗量。Facebook 的研究团队在这样的过程中已经积累了不少经验,然而在 fastText 的改进中,研究人员还是遇到了挑战:其中一个约束是需要将机器学习拓展到拥有多核 CPU 和 C++编译器的计算机中——这意味着把 fastText 送到几乎所有开发者的手中。

Facebook 构建出了一个简单而强大的库来解决在通用型/弱性能机器中处理重要文本分类的问题。fastText 作为学习文本分类的库,和为应用增加精确文本分类特性的工具都表现良好。fastText 同时允许开发者增加文本分类特性,如标签和评论情绪等级分析——而无需对此进行通常需要的机器学习训练。

使用低维度向量来提高性能。大向量可以提高准确性,因为这类词向量中通常含有很多特征,但是它们非常耗费训练时间和计算资源。如果使用低维度向量,通过表示正确的特征,模型可以扩容为巨大的语料库,同时达到目前最好的表现。在编码期间,通过常规优化方法可以缩减向量尺寸,获得低维度向量。

训练时间则是通过基于 softmax 的 Huffman 编码树(二叉树的变体)来减少的。在运行中,最可能类的搜索时间也被减少了,因为表示字向量的树的每个叶具有相关联的概率。下分支的叶具有相对更低的概率。概率计算在路径中随着低概率分支的丢弃而变得更加快速。

fastText 使用词袋模型来获取特征,通过线性分类器训练模型。因为词袋模型无法识别句子的语序,所以生成的高频词广义语境特征不与低频词共享,从而导致低频词的准确率很低。使用可以识别单词顺序并向低频率词向量共享信息的 n-gram 模型代替词袋模型可以解决这个问题,但增加了复杂性、训练时间和计算需求。在 fastText 中,训练时可以使用部分 n-gram 信息,我们可以通过选择句子中目标词上下文的单词数来平衡训练时间和准确性。

fastText 比目前流行的 word2vec 工具或其他最先进的形态词表示方法有更好的表现,同时包含了更多语言。在本次发布后,FAIR 的研究团队会持续对 fastText 进行改进,在未来这个工具将变得更容易使用。

在精度相同的情况下,fastText 的速度比其他方法更快。在与目前最好的神经网络模型的性能对比中,fastText 要快 1000 到 10000 倍。这就是简化和低阶线性模型与标准特征(如二元)应用带来的优势。

下表展示了 fastText 的性能:

fastText 教程

新的 fastText 版本附带了有监督文本分类教程。通过本教程,开发者可以学会在自定义数据集上构建简单的文本分类器。该教程还展示了如何将模型调整到最佳性能的方法。

fastText 非常快,同时也保有面向开发人员快速迭代影响准确性的不同设置。例如,n-gram 提高了应用的准确性(如在词序十分重要的情绪分析中);层级 softmax 增加了应用在预测大范围标签时的速度。

在第二个教程中,fastText 被用来学习维基百科页面中的单词表示形式。该教程会教你用简单的方法测试模型质量。查询返回一个单词的临近词或返回一堆关联例子,类比产生与查询词最密切相关的单词。例如,模型可以预测巴黎与法国相关,同时柏林与德国相关。即使模型还未经训练,它也可以被测试!fastText 会查找字符组成的单词以生成其表示,以找到可能拼写错误的单词以及诸如「shiftgear」之类的组合词。

对机器学习感兴趣的学生和开发者可以立即在 Github 上开始这些教程。这一教程非常简单,无需机器学习的专业知识。该教程还提供了一些资深开发人员对于 fastText 库其他一些功能的见解。

其中的用例包括实验、原型和生产环境示例。fastText 可以使用命令行、链接到 C ++应用程序,或用作库。Python 和 Lua API 也是可用的

相关推荐

Python3.7.4图文安装教程(python3.7详细安装教程)

Python更新的很快,一转眼Python2已经过时了,本文为大家详细说明Python最新版本3.7.4的安装过程,跟着步骤一步一步操作,轻松搞定安装。没有软件可以关注我头条私信我1、下载好后是一个压...

非程序员的其他从业者,三天可入门Python编程,附教程与相应工具

这是一种应用十分广泛的编程语言Python,它打破了只有程序员才能编程的“戒律”,尤其是近年来国家予以Python编程的支持,让这门语言几乎应用到各种工作中。那么对于并不是职业程序员的人,该如何才能快...

008 - 匿名函数lambda-python3-cookbook中文教程

有名函数通过def来定义有一个有名字的函数。defmyfun():return1,2,3...

花了3万多买的python教程全套,现在分享给大家(python全栈)

花了3万多买的Python教程全套,现在分享给大家(Python全栈)文末惊喜记得看完哦。...

花来3万多买的python教程全套,现在分享给大家(python全栈)

花了3万多买的Python教程全套,现在分享给大家(Python全栈)文末惊喜记得看完哦。...

Python3最新版安装教程(Windows)(python3.7.0安装教程win10)

接下来给大家讲解一下python最新安装包的安装教程。·首先大家可以去这里搜索一下我的笔记,大概讲了一下,然后找到它的官网,下载的是windows,可以看一下最新的版本。·选择64位,点击下载就即可了...

笨办法学python3》再笨的人都能学会python,附PDF,拿走不谢

《笨办法学python3》这本书的最终目标是让你起步python编程,虽然说是用“笨办法”学习写程序,但是其实并不是这样的。所谓的“笨办法”就是指这本书的教学方式,也就是“指令式”的教学,在这个过程中...

python3 (1)(python312)

Python3Introduction:LearnthebasicsofPython3programming,withitskeyfeatures,andprovideyo...

Python3 教程-- 3、解释器(python3菜鸟教程官网)

Python3解释器Python解释器Linux/Unix的系统上,Python解释器通常被安装在/usr/local/bin/python3.4这样的有效路径(目录)里。我们可以将路径/us...

《笨办法学python3》再笨的人都能学会python,附PDF,拿走不谢

《笨办法学python3》这本书的最终目标是让你起步python编程,虽然说是用“笨办法”学习写程序,但是其实并不是这样的。所谓的“笨办法”就是指这本书的教学方式,也就是“指令式”的教学,在这个过程中...

入门经典!《Python 3程序开发指南》python学习教程赠送!

《Python3程序开发指南》(????)??嗨!你们的小可爱又来辣,小编自学python时用到的视频学习教程分享给大家~都是非常系统性、非常详细的教程哦,希望能帮助到你!转发文章+私信小编“资料”...

Python3.7最新安装教程,一看就会

一、博主自言随着人工智能的快速发展,python语言越来越受大家的欢迎,博主前段时间先自学了一次,这次再次巩固,顺便分享给大家我遇到的坑。帮助大家学习的时候少走弯路。希望会对大家有所帮助,欢迎留言...

# Python 3 # Python 3 教程(#python3.10教程)

Python3教程Python的3.0版本,常被称为Python3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python3....

Python教父推荐:《Python基础教程》(第3版)

《Python基础教程第3版》包括Python程序设计的方方面面:首先,从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句;然后循序渐进地...

今日精选5篇教程:用Python3带你从小白入门机器学习实战教程手册

正文1:教程标题:英伟达SuperSloMoGithub项目开放作者:英伟达教程摘要:今年6月份,英伟达发布了一份生成高质量慢动作视频的论文——《SuperSloMo:HighQual...

取消回复欢迎 发表评论:

请填写验证码