fecebook移动端AI实践方案

随着视频成为人们沟通的越来越受欢迎的方式,我们希望为大家提供最先进的创意工具来帮助用户表达自己。我们最近开始在Facebook应用程序中测试新的创意效果相机,帮助人们将视频转化为艺术品。这种技术被称为“风格转换”。它采用一种形象风格的艺术品质,就像梵高绘画的样式,并将其应用于其他图像和视频。直到现在,通常需要将内容发送到数据中心进行大型计算机服务器处理,这是一项技术难点。我们开发了一个新的移动深度学习平台,可以首次实时捕获,分析和处理像素,将最先进的技术置于手中。这是一个完整的深入学习系统Caffe2Go,该框架现在嵌入到我们的移动应用程序中。通过将用于处理图像和视频的AI模型的大小缩小100倍,我们可以在iOS和Android上高效运行各种深层神经网络。最终,我们能够以不到1/20秒的时间(基本上为50毫秒)在一些手机上提供AI推断,一秒钟或三百分之一秒的人眼眨眼。

相机中的风格转换工具是两种技术结合的结果:Caffe2go运行时和样式传输模式。 我们的AI团队处理算法和大规模系统运算,他们非常适合开发新的模型使得风格转的换体验变得更加高品质和快速。 它采用了两种技术,使用户可以感觉到当拿起手机拍摄视频时,用户的手中仿佛有梵高的画笔。

我们三个月前开始工作,开始做别的事情:将基于AI的风格转换作为一种创造性工具,并且可以实时地在人们的设备上运行。 跨越产品,技术和研究团体的各种人群纷纷涌入项目。 Facebook AI研究小组的贾斯汀·约翰逊(Justin Johnson)是撰写该技术的基础研究论文之一,构建了该领域以前的研究成果。 我们的应用机器学习小组一直致力于构建一个可以在移动设备上运行的AI引擎。 相机团队清楚地了解了用户的需求。 随着许多其他人的贡献,这些团队制作了一流的解决方案,可以在移动设备上运行高度优化的神经网络。 我们将从Caffe2go开始,解释我们如何思考和开发适用的技术。

Caffe2Go

更轻更快

人工智能对计算机科学产生了重大影响,但主要限于使用人工智能服务的人们可能在距离数据中心数百英里远的地方。 因此,任何处理“实时”内容的AI仍然受到不得不前往数据中心,从而在GPU上带来的延迟影响。 由于我们认为要求人们用超级计算机来实时使用AI是不切实际的,所以我们想要找出一种让AI在最普及的设备(智能手机)上工作的方法。

fecebook移动端AI实践方案_第1张图片

手机可以实时查看,通话,而无需连接到远程服务器,但也有限制。 虽然近年来它们的计算能力有了显着的提高,每秒能够进行数十亿次的算术计算,但它们也具有需要智能软件设计的各种资源约束,如能量,存储器和计算能力。 因此,移动设备为机器学习系统提供了机会和挑战。

我们解决这个挑战的方法是设计一个特别轻便和模块化的框架。为此,我们把Unix的理念建立在开源Caffe2项目之上。这显然确保了声明和连接组件的核心框架非常轻巧,能够连接多个模块,包括移动专用优化。我们保留了一个精简算法框架,允许工程师将抽象计算描述为有向非循环图(DAG),但确保不会对图中可能执行的这些节点的输入和输出施加约束。这使得我们的工程团队能够在不同的平台上实现和优化模块,同时能够轻松连接这些模块。当图表实际运行时,它会使用各种硬件功能实例化自己以实现最大速度。

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

对开发者友好

Caffe2也是我们的第一个工业强大的深度学习平台,可以在四个平台上全速运送,具有相同的代码:服务器CPU,GPU,iOS和Android。由于模块化设计,框架可以说相同的语言,并且针对每一个平台进行优化。这是开发人员隐藏的实现细节;例如,框架选择NNPack for Mobile(iOS和Android)或CUDNN(用于服务器GPU)。因此,算法开发人员可以专注于算法的工作,而不是如何运行卷积。

开发人员也受益于快速部署设计。从开发人员的角度来看,调试移动runtime可能是一个挑战,因为移动工具链不像桌面和服务那样先进。我们通过从硬件中提取神经网络数学来解决这个问题 - Caffe2go中的序列化网络可以在具有相同数字输出的手机和服务器上进行。因此,我们可以将大部分工作转移到服务器环境 ,包括模型训练,性能检查,用户体验研究 ,并且在事情看起来不错之后,可以对移动环境进行单按钮部署。

训练风格转换模型

风格转换的想法不是新的。 研究人员最初在一篇精采的论文“艺术风格的神经算法”中引入了这一技术,该技术于2015年8月发布。然而,这种技术很慢,需要强大的服务器。 在接下来的几个月中,研究团队提出了这些技术,并将速度提高了几个数量级,但仍然在服务器上使用大量的计算能力。

Caffe2go使得AI处理速度变快,可以放在手机端运行。 但是,风格转换模型也需要优化,确保体验是实时的,同时保持高质量,高分辨率的图像。

优化模型大小

传统风格转换工作(甚至前馈变体)的模型都很大(在参数数量方面)较慢。创建风格转换应用程序的目标是运行新的,更小,更高效的模型,以便在iPhone6或更高版本上提供20 FPS的高质量视频,从而避免丢帧。

我们应用了三种减小模型尺寸的方法。我们优化了卷积层数(处理中最耗时的部分)和每层的宽度,我们调整了处理过程中的空间分辨率。卷积层数及其宽度可以用作单独的杠杆,用于调整处理时间,通过调整图像的多少得到处理,或调整单独的处理动作发生的次数。对于空间分辨率,我们可以调整中间层正在处理的实际大小。通过使用早期池(缩小正在处理的图像的大小)和晚的去卷积(在处理之后放大图像),我们可以加快处理时间,因为系统没有处理尽可能多的信息。我们还发现,通过这些技术,我们可以在保持合理质量的同时,大力减少网络的宽度和深度。

fecebook移动端AI实践方案_第2张图片

提高质量

图像质量是主观的,很难测量 - 特别是像风格转换的东西。因此,我们构建了可视化工具,包括A / B测试和训练不同的模型,以确保我们获得最佳质量的图像结果。我们的大型GPU集群由FBLearner Flow提供支持,使我们能够快速扫描大范围的超参数,例如模型架构,内容/样式权重和下采样,以便在保持和提高质量的同时,找到训练有素的前馈样式,达到我们的绩效目标。

还有许多其他技巧提高了质量。例如,应用实例规范化而不是常用的批处理标准化有助于许多样式,避免卷积层中的零填充减少了工件并将不同的前处理和后处理过滤器应用于风格或内容图片。但是在我们的测试中,我们发现这些方法不但对于某些风格而言更有效,在其他风格上也是如此。

通过风格转换技术的速度和质量优化,并且运行在Caffe 2框架上,实时图像处理系统是可以实现的移动体验。

接下来的计划

Caffe2go是Facebook的机器学习产品的核心,以及火炬等研究的工具链。由于其大小,速度和灵活性,我们将把Caffe2go应用在Facebook的技术栈中。

我们还致力于与社区共享我们的软件和设计,以便我们学会更好地利用多个硬件平台和算法设计的特点,这在跨平台机器学习系统中尤其重要。我们将在未来几个月内寻求开放这个AI框架的源代码部分。

当我们向前迈进时,你可以想象如何在设备上实时运行的AI可以帮助世界对无障碍,教育或其他领域的人们开放和连接。我们手中的智能设备将继续扰乱我们对智能的思考。凭借像Caffe2go这样快速,轻便的机器学习系统,我们致力于为您带来更加出色的AI和AR体验,例如在拍摄视频时访问梵高的画笔。

你可能感兴趣的:(android)