贾扬清:Caffe2go是Facebook机器学习产品的核心 将开源

标签: caffe2go facebook 机器学习 | 发表时间:2016-11-10 02:42 | 作者:
出处:http://news.cnblogs.com/

Caffe 作者,Facebook 研究科学家贾扬清 11 月 8 日在 Facebook 官方网站上发文,介绍了他在 Facebook 最新的机器学习研究成果——Caffe2go。这一款规模更小但训练速度更快、对计算性能要求较低的机器学习框架使得在手机上运行并训练神经网络模型成为可能。Caffe2go 已经成为 Facebook 机器学习的核心技术。贾扬清在文章中写道:我们将会在接下来的几个月内,部分开源这一 AI 框架。

贾扬清:Caffe 作者,现任 Facebook 研究科学家,曾在 Google Brain 工作。在 AI 领域有数年的研究经历。在 UC Berkeley 获得计算机科学博士学位,在清华大学获得硕士和本科学位。对两款流行的深度学习框架做过贡献:Caffe 的作者,TensorFlow 的作者之一。

工作经历:2016 年 2 月从 Google 离职,加入 Facebook,致力于前沿 AI 研究和平台开发。2013 年 12 月到 2016 年 2 月在 Google Brain 担任研究科学家,致力于前沿的深度学习研究和工程,参与了 ImgeNet2014 比赛、移动端深度学习、Google 下一代 AI 平台 TensorFlow 开发、基于深度学习的产品开发和产品咨询等。

文,贾扬清/Peter Vajda

随着视频成为越来越流行的社交方式,我们希望为每个人提供最先进的创作工具来表现自己。我们最近开始在 Facebook 应用程序上测试一个新的创意效果相机,可以帮助人们即时把视频转换成艺术作品风格。这种技术被称为“风格转移”(style transfer)。它能从一种绘画风格中提取艺术性特质,例如梵高画的风格,并将其应用到其他图像和视频中。这种诡计在技术上难以实现的原因在于,它通常需要把内容发送到数据中心,然后在大型计算机服务器上进行处理。但现在,我们在移动设备上开发了一个新的深度学习平台,首次实现了实时的捕获、分析,和像素处理——这一最先进的技术只在手上就能实现。这个成熟的深度学习系统叫 Caffe2Go,它的框架现在已经嵌入我们的手机 app 中。通过把用于处理图像和视频的 AI 模型压缩 100 倍,我们能够在 iOS 和 Android 设备上高效运行各种深度神经网络。最终,我们能够为一些移动设备提供的 AI 推断所需时间不及1/20 秒,也就是 50 毫秒——人眨一下眼睛需要1/3 秒,也就是 300 毫秒。

这个相机中的风格转移工具是两种技术的结合:Caffe2go 运行库和风格转移模型。由于我们的 AI 团队同时研究算法和大规模系统,他们开发的新模型完美实现了这两种追求,使风格转移既质量高又快速。这两种技术的结合能让你在举起手机拍摄视频时,感觉拿着梵高的画笔。

这项工作开始于三个月前,当时还没有人做这样的研究:将基于 AI 的风格转移技术视作一个创造性工具,让它在人们的移动设备上实时运行。跨产品、技术和研究团队的一群人参与进这个项目。Facebook AI 研究团队的 Justin Johnson 是有关该技术的一篇基础研究论文的作者,为这个项目做了一些前期研究。我们的应用机器学习团队一直致力于开发一个可以在移动设备上运行的 AI 平台。相机产品团队对用户的需求非常了解。还有另外许多人也为此作出了贡献,这些团队为在移动设备上运行高度优化的神经网络制作了一流的解决方案。

Caffe2Go:更轻便,更快

人工智能已经对计算机科学产生了深远的影响,但它大部分局限于大型数据中心,这些数据中心往往远离实际使用以 AI 为动力的服务的人。因此,任何标榜能“实时”用 AI 处理某物的技术仍然受到延迟的影响,因为数据必须发送到数据中心,以在 GPU 上运行。我们也认为让人们随身带着超级计算机是不切实际的,因此我们试图找到一种方法,让 AI 能在最无处不在的设备——智能手机上的 CPU 上工作。

手机能够实时地看、说、理解,而无需连接到远程服务器,但它们也有局限性。虽然近年来手机的计算能力有了显著的提升,每秒能够执行数十亿次数学运算,但它们仍受到诸如功率、存储器、计算能力等的各种资源限制,需要更聪明的软件设计。因此,对机器学习系统来说,手机既是机会也是挑战。

我们应对这个挑战的方案是设计一个非常轻量级,而且模块化的框架。为此,我们在开源 Caffe2 项目之上利用 Unix 原理。这确保了连接组件的核心框架非常轻量,而且能够附加多个模块——包括专门为移动设备进行的优化。我们使用一个精益算法框架,允许工程师将抽象运算描述为一个有向无环图(DAG),同时确保图中可以执行的这些节点的输入和输出没有被强加限制。这让我们的工程团队能够在不同平台上实现并优化模块,同时能轻松地把这些模块连接起来。当 DAG 实际运行时,它能利用各种硬件功能最快地实现具现化。

由于速度是计算密集型移动应用程序的核心,尤其是图像和视频应用,框架设计的轻量能让我们为已定义的运算符执行平台特定的优化。一个著名的例子是 Caffe2 集成在我们的移动运行库中的名为 NNPack 的库。利用移动 CPU 的 NEON 功能,我们能显著提高移动计算的速度。在 iOS 设备上,我们还开始集成加速功能,例如 Metal 语言。所有这些都是通过模块化设计完成的,无需改变常规模型定义。因此,算法端和运行库端能够安全地彼此依赖,不需要担心任何潜在的不兼容性。

友好的开发环境

Caffe2 也是我们的第一个具有产业实力的深度学习平台,可以在四个平台上用同样的代码集全速运行:服务器 CPU,GPU,iOS 和 Android。由于模块化设计,框架可以使用相同的语言,但要分别在各个平台上优化。这是一个对开发者隐藏的实现细节,例如,框架可以在手机(iOS 和 Android)的 NNPack 和服务器 GPU 的 CUDNN 之间选择。因此,开发者可以专业于算法的工作,而不用研究怎样运行卷积。

开发者还能从最新的设计部署中获益。从开发者的角度看,缩减手机的运行时间是一个难题,因为手机的工具链并不像台式机和服务器那样强大。我们通过压缩神经网络以匹配硬件来解决这一问题。Caffe2go 中一个序列化的网络在手机和服务器上都能实现相同的输出。最终,我们能把主要的工作转移到服务器环境中,模型训练、性能观察、用户体验研究等。如果一切进展顺利,我们仅需要设置一个按钮,就能再转移到手机环境中。

风格转换模型训练

风格转换的概念并不新鲜,最早提出是在 2015 年 8 月的一篇会议论文 A Neural Algorithm for Artistic Style。但是,当时的技术处理速度极慢并且要求强大的服务器。论文发表后的几个月,圈内的研究员提升了这一技术并且把速度提升了好几个维度,但是,对计算能力依然有很高的要求。

Caffe2go 把这一 AI 处理过程变得更快,并且在手持设备上就能完成。但是,风格转化模型依然要进行优化,来保证体验可以实时进行,同时保持好质量、高分辨率的图像。

有效模型尺寸优化

传统的风格转化研究模型(即使是前馈变量)都是很大的(指的是参数的数量),并且很慢。我们的目标是创建一个风格转换应用,能运行新的、更小的同时更有效的模型,来生成高质量的视频,视频能达到 20FPS,能在 iphone6 或以上的设备中运行,并且避免掉帧。

我们采用了三个主要的方法,来缩减模型的尺寸,我们对卷积层数量进行了优化(这是处理过程最消耗时间的部分),也对每一层的宽度进行了优化,在处理过程中,我们还调整了空间分辨率。通过调整需要处理的图像特征数量,或者调整单独的处理行为所需要的时间,卷积网络层的数量和它们的宽度能在独立的层级使用,进而调整处理所需要的时间。

对于空间分辨率,我们能调整实际的尺寸,也就是在中间层中被处理的那些。通过使用早期池化(缩减被处理的图像的尺寸)以及后来的去卷积(在处理后放大图像),我们能加速处理时间,因为系统需要处理的信息变少了。我们还发现,有了这些技术,我们能极大地缩减训练网络的宽度和深度,同时又能确保图像质量维持在合理的水平。

手机上进行神经网络训练

图像的质量是非常主观的,并且非常难以衡量,特别是在风格迁移之类的任务上。所以,我们开发了可视化工具,其中包括A/B测试,训练了不同的模型,来保证我们能得到最佳的图像质量结果。我们使用的由 FBLearner Flow 支持的大型 GPU 集群,让我们可以实现这一目标,因为我们可以快速地扫过大范围的超参数,比如模型架构、内容/风格权重和缩减采样,进而发现一个经过良好训练的回馈风格,能够满足我们的性能目标,同时又切实保持并提升了图片的质量。

还有很多提升质量的方法,比如,采用即时的标准化而不是常用的分批标准化,能够在许多风格上产生有益影响。比如,卷积层中避免零填充(zero padding)进而减少棋盘效应(人工痕迹),或者,在风格或者内容图片上采用不同的预训练和后处理过滤层。

风格转化技术中实现的速度和质量优化结果在 Caffe 2 框架上运行,能够打造一个手机上的实时图像处理系统。

Caffe2go 是 Facebook 机器学习产品的核心,将开源

Caffe2go ,加上研究工具链比如 Torch 组成了 Facebook 机器学习产品的核心。因为其大小、速度和灵活性上的优势,我们正在 Facebook 的 stack 中全面推广 Caffe2go。

我们也非常乐意与整个研究社区分享我们的软件和设计,这样我们就能更好地学习如何利用不同硬件平台和算法设计的独有特性,这对于跨平台机器学习系统来说尤为重要。我们将会在接下来的几个月内,部分开源这一 AI 框架。

随着我们不断进步,你可以想象,可以在(移动)设备上运行的实时 AI 技术将能帮助这个世界变得更加开放,让人与人之间的联系得以加强,特别是在无障碍和教育等领域。可以拿在手上的智能设备将会持续地改变我们对智能的定义。拥有像 Caffe2go 这样敏捷、轻便的学习系统,我们一定会带来更多美妙的 AI 和 AR 体验,比如,在拍下一个视频后,你可以立即把它转换成梵高的风格。

原文: code.facebook.com

本文链接

相关 [caffe2go facebook 机器学习] 推荐:

贾扬清:Caffe2go是Facebook机器学习产品的核心 将开源

- - 博客园_新闻
Caffe 作者,Facebook 研究科学家贾扬清 11 月 8 日在 Facebook 官方网站上发文,介绍了他在 Facebook 最新的机器学习研究成果——Caffe2go. 这一款规模更小但训练速度更快、对计算性能要求较低的机器学习框架使得在手机上运行并训练神经网络模型成为可能. Caffe2go 已经成为 Facebook 机器学习的核心技术.

机器学习五步走

- - 我爱机器学习
经常会有人问“我该如何在机器学习方面更进一步,我不知道我接下来要学什么了. 一般我都会给出继续钻研教科书的答案. 每当这时候我都会收到一种大惑不解的表情. 但是进步确实就是持续的练习,保持较强的求知欲,并尽你可能的完成具有挑战性的工作. 因为他是为数不多的几种可以让你真真让你获取坚实知识的媒介. 是的,你可以选择选一门课,注册MOOC,参加一些讨论班.

机器学习之路

- - 我爱机器学习
自从答应简二毛博士将自己的机器学习历程和心得分享给大家至今,转眼间半年已经过去了,感谢简博士分享和开源精神的鼓舞,这也正是本系列关于机器学习介绍博客的动力来源. 之前有些网友,师弟们问我,学习机器学习怎么入手,从看什么书开始. 如果你只愿意看一本书,那么推荐Bishop的PRML,全名Pattern Recognition and Machine Learning. 这本书是机器学习的圣经之作,尤其对于贝叶斯方法,介绍非常完善.

Mahout实现的机器学习算法

- - ITeye博客
使用命令:mahout -h.   在Mahout实现的机器学习算法见下表:. EM聚类(期望最大化聚类). 并行FP Growth算法. 并行化了Watchmaker框架. 非Map-Reduce算法. 扩展了java的Collections类. Mahout最大的优点就是基于hadoop实现,把很多以前运行于单机上的算法,转化为了MapReduce模式,这样大大提升了算法可处理的数据量和处理性能.

国内的机器学习几个人

- - 丕子
转: http://blog.csdn.net/playoffs/article/details/7588597. 推荐几个机器学习和数据挖掘领域相关的中国大牛:. 李航:http://research.microsoft.com/en-us/people/hangli/,是MSRA Web Search and Mining Group高级研究员和主管,主要研究领域是信息检索,自然语言处理和统计学习.

Apache Mahout 0.8 发布,机器学习库

- - 开源中国社区最新新闻
Apache Mahout 0.8 发布了,Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费使用. 该项目已经发展到了它的最二个年头,目前只有一个公共发行版.

Ruby的机器学习项目

- - 阳志平的网志-技术类
作者是辉瑞公司的小牛,可惜烂尾了. 我在改啊改啊,可惜现在是商业项目,暂时不能放出改掉的部分. 对了,顺便做个小广告,去年组织翻译的一本小书:社会网络分析:方法与实践. 已经上市了,感兴趣的可以翻翻:. 社会网络分析:探索关系背后的科学与技术. treat:自然语言处理. 类似于igraph,也是桥接处理nlp.

机器学习该如何入门

- - CSDN博客综合推荐文章
  对于这个问题的解释,说实话我很有压力,因为在分享篇文章之前就有朋友告诉我,这个百度上一搜一大片,还需要你讲吗. 正如同一千个读者眼里有一千个林黛玉一样,我解释的当然是我个人自从读研到工作这么多年对机器学习的学习到应用过程的独特见解.   首先我们看下图了解一下机器学习在AI(Artificial Intelligence 人工智能)领域的地位.

[译] 理解机器学习技术

- - IT瘾-dev
第1讲 理解机器学习技术. 学完本模块的内容,读者将能够:. 讨论机器学习的技术和商业应用. 学完本讲的内容,读者将能够:. 解释各类机器学习方法和算法. “机器学习领域的突破,其价值10倍于微软. 你是否曾经为计算机能够下象棋或者机器人能够完成复杂任务而感到惊奇. 一旦你理解了机器如何学习和适应各种问题、提供合适的解决方案时,这些看上去很复杂的问题实际上相当简单.

Facebook’s architecture(转)

- Adam - 淘宝JAVA中间件团队博客
Facebook’s HipHop [1] then converts it to C++ and compiles it using g++, thus providing a high performance templating and Web logic execution layer. Some of these services are implemented in PHP, C++ or Java depending on service requirements (some other languages are probably used…).