专栏首页新智元【重磅】Facebook贾扬清发文,Caffe2go将开源,手机就能训练神经网络

【重磅】Facebook贾扬清发文,Caffe2go将开源,手机就能训练神经网络

【新智元导读】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体验,比如,在拍下一个视频后,你可以立即把它转换成梵高的风格。

本文分享自微信公众号 - 新智元(AI_era)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-11-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 7位数年薪抢人,DeepMind与Facebook人才大战又开火

    在加拿大蒙特利尔的一座共享办公大楼里,一间角落办公室里遍布着满是代码的黑色大屏幕。显示器并排堆放着,一个挨着一个,对于Facebook AI实验室(FAIR)加...

    新智元
  • Facebook AI 翻译主管黄非加盟阿里达摩院

    新智元
  • 谷歌和Facebook在LeCun老家抢生意,谁能赢得法兰西AI之战?

    编辑:Cecilia 马文 【新智元导读】一夜之间,法国成了各大科技巨头的兵家必争之地。昨天,谷歌宣布在法国开设新的AI中心,Facebook也宣布在未来5年对...

    新智元
  • 彻底弄懂字符串常量池等相关问题

      在平时我们使用字符串一般就是拿来直接搞起,很少有深入的去想过这方面的知识,导致别人在考我们的时候,会问 String str = new String("1...

    小勇DW3
  • 第三阶段-Java常见对象:【第三章 String类】

    简单总结:String类的构造方法可以将 字节、字符数组、字符串常量(全部或者部分)转换为字符串类型

    BWH_Steven
  • 使用SAP open connector调用第三方系统的API

    我们把hubspot这个SaaS CRM作为第三方系统,首先登录hubspot,创建一个新的API key:

    Jerry Wang
  • String字符串—详细总结

    不可变的,每一次修改实际上生成新的字符串,并且该字符串的值是修改后的值。new String都是在堆上创建字符串对象

    用户5325874
  • Webservice服务中如何保持Session

    对于Web Service,每个方法的调用都会启动一个Session,可以用下面的方法来使多个调用在同一个Session里

    跟着阿笨一起玩NET
  • Nessus pro 版crack介绍

    Nessus是全球使用人数最多的系统漏洞扫描与分析软件,这是一个免费、威力强大、更新频繁并简易使用的远端系统安全扫描程序,功能十分强大。

    释然
  • 一文看懂深度文本分类之 DPCNN 原理与代码

    ACL2017 年中,腾讯 AI-lab 提出了Deep Pyramid Convolutional Neural Networks for Text Cate...

    用户1737318

扫码关注云+社区

领取腾讯云代金券