移动应用AI化成新战场?详解苹果最新Core ML模型构建基于机器学习的智能应用

Google刚刚息鼓,苹果又燃战火!这一战,来自移动应用的AI化之争。

近日,苹果发布专为移动端优化的Core ML后,移动开发者对此的需求到底有多强烈?去年大获成功的AI应用Prisma又能告诉我们什么?苹果的新武器Core ML具体该怎么用?野心勃勃的苹果在移动端机器学习上的布局到底有着怎样的心机?苹果真能撼动Google、Facebook的优势地位吗?未来AI的走向会不会就此改变?此中答案,本文将娓娓道来。

作者 | 胡永波

本届WWDC,Core ML是苹果送给移动开发者的一份大礼。使用它,开发者可以把训练好的机器学习模型导入iOS应用,同时在系统层面加速应用内的人工智能计算。Core ML API支持的具体任务包括图像识别、文本处理、人脸检测与追踪,等等。

苹果这一举措,正应了Gartner去年10月份预测的移动应用AI化趋势:科技行业的主战场很快会变成能够主动学习和适应、可自主做出反馈的智能系统之间的竞争。到2018年,全球最大的200家公司中,绝大部分都会推出智能应用,同时会使用完整的大数据分析工具来重新定义并提升用户的体验。

而Gartner的说法,则又来自业已拥有机器学习能力的那些移动应用的市场表现。归根结底是SnapChat在青少年人群中的流行,是Prisma在去年的异常火爆,是在国内一直被人刷屏的各类美颜照片应用……只要找对场景,有AI加持的移动应用总能脱颖而出。

以Prisma为代表的移动应用AI化

重新回顾一下Prisma的故事,我们总是能找出一些蛛丝马迹。

作为战斗民族的90后,技术发烧友Alexey Moiseenkov在2016年初偶然读到两篇关于图像的机器学习论文:《艺术风格的神经算法(A Neural Algorithm of Artistic Style)》和《利用神经卷积网络进行纹理合成(Texture Synthesis Using Convolutional Neural Networks)》。

艺术风格的神经算法:提取画作的艺术风格

论文的作者Gatys等人基于论文中的研究成果,在2015年做出一个收费网站 DeepArt,自动y以大师的绘画风格来为用户作画,其步骤如下:

  1. 识别用户上传的照片;
  2. 学习照片中的艺术风格信息;
  3. 输出一幅重新绘制出来的作品。

利用神经卷积网络进行纹理合成:对照片纹理进行重绘和渲染

这与人类学习作画过程类似:

  1. 看到一幅作品,对绘画有个初步的概念;
  2. 学习作品中的绘画风格与笔法;
  3. 临摹上述风格和笔法,重新绘画。

提取不同名画的风格,就能渲染出不同效果的照片

但只出现在网页端的DeepArt服务耗时过长,渲染出一张新照片至少需要20分钟,并且收费不菲。Gatys等人没能看到移动市场的机会,这让年轻的Alexey一下子抓住了灵感,让他坚信移动端的“AI+图像处理”必定大有可为。

Alexey清楚,在移动端成功的关键,是能够显著降低图像处理过程的耗时,也就是大幅度提升神经网络的运行效率。为此,他对Gatys等人的算法研究了两个月,在不影响移动端图像效果的前提下,尽可能简化神经网络所需要处理的细节。此处的优化,使得Prisma的耗时仅需几秒钟,处理速度相比DeepArt提升了1000倍。

随后的开发过程,仅用了一个半月。6月11日,Prisma在苹果应用商店上线。两周时间,下载量就超过160万次;三个月后,全球下载量突破7000万;到年底,Prisma一举拿下Google和苹果两大平台的“年度最佳应用”。

Prisma的迭代升级一直是围绕“提速”来进行的,关键就是不断改进图像处理的算法。

最初,Prisma的3个神经网络都部署在云端。用户选取照片效果后,手机上的Prisma应用便将照片上传至服务器,云端的卷积神经网络在解读照片后,会根据用户选择的效果重新渲染出一张新照片,并下载到用户的手机上。

随着Prisma开始海外扩张,海外用户与Prisma位于莫斯科的服务器通讯问题,成为Prisma加载缓慢的主因。为此,Alexey不得不考虑解决办法,也就要设法在手机上完成照片渲染的过程。2016年8月,直接使用iPhone处理器,Prisma成为第一个能够离线运行风格转换神经网络的手机应用。一张1080×1080分辨率的照片,半秒就能转换成全新的风格。

可以看出,在手机上部署机器学习算法的需求是极强的。

毕竟,采用AI来编辑或制作照片的不止Prisma一家。2016年3月,SnapChat的动态相机效果Lenses一经发布便大受欢迎,这项技术是SnapChat从它2015年9月收购的那家乌克兰公司Looksery身上买来的。Facebook紧随其后,于8月份开始,先后在Instagram、Messenger、WhatsApp上推出能跟SnapChat竞争的滤镜效果。Facebook的技术则来自它在2016年3月份买下的白俄罗斯公司Masquerad。

于是,从今年开始,Facebook和Google相继把它们的机器学习框架转向移动端,在手机应用上直接运行AI算法的趋势几乎不可逆转。紧接着,便有了我们今天的主角Core ML横空出世。

用于移动端的Core ML模型

与Google TensorFlow、Facebook Caffe2不同,苹果的Core ML它专门为iOS移动端的机器学习进行过优化,最大限度减少内存的占用和功耗。而且,即便是网络连接丢失,它还能保证应用的正常工作与响应。

Core ML为iOS Vision API提供图像处理支持,为iOS Foundation API提供自然语言处理上的支持,并支持对iOS GameplayKit的学习决策树 (learned decision tree) 进行分析。苹果为开发者准备好的是四个用于图像识别的模型:Places205-GoogLeNet、ResNet50、Inception v3和VGG16,模型格式为Core ML的 .mlmodel 扩展名。

如何制作Core ML模型

借助于Core ML,开发者还能把训练好的机器学习模型,导入至自己的应用内直接使用。它所支持的机器学习模型包括神经网络 (Neural Network)、组合树 (Tree Ensemble)、支持向量机 (Support Vector Machine) 与广义线性模型 (Generalized Linear Model)。

苹果提供的Core ML Tools Python工具包,可以把第三方机器学习工具所创建的已训练模型转换成Core ML模型格式。Core ML所支持机器学习框架包括Keras、Caffe、scikit-learn、XGBoost与LIBSVM。

以Caffe模型 (.caffemodel) 为例,通过调用转换器,你可以将其传递给 coremltools.converters.caffe.convert 方法:

import coremltools coreml_model = coremltools.converters.caffe.convert('my_caffe_model.caffemodel')

然后,将结果保存为Core ML模型格式:

coreml_model.save('my_model.mlmodel')

对于Core ML所不支持的格式,比如TensorFlow模型,你只能自己来创建转换工具,将模型的输入、输出和架构表示转换为Core ML格式。这需要仔细参考Core ML Tools所提供的转换工具,它们具体演示了如何通过每一层模型架构、层与层之间的连接关系进行定义,来把各种第三方模型转换成Core ML格式。

如何在应用中添加并使用Core ML模型?

以用来预测火星殖民地价格的已训练模型 MarsHabitatPricer.mlmodel 为例:

首先需要把模型添加到 Xcode 项目中:

也就是将模型拖进项目导航器 (project navigator)

对于 MarsHabitatPricer.mlmodel 而言,Xcode 会生成相应的接口,来分别表示模型本身(MarsHabitatPricer)、模型输入 (MarsHabitatPricerInput) 以及模型输出 (MarsHabitatPricerOutput)。

使用所生成的 MarsHabitatPricer 类的构造器,便可以创建这个模型:

let model = MarsHabitatPricer()

获取输入值并传递给模型:

示例应用使用了 UIPickerView,以便从用户那里获取模型的输入值。

func selectedRow(for feature: Feature) -> Int { return pickerView.selectedRow(inComponent: feature.rawValue) } let solarPanels = pickerDataSource.value(for: selectedRow(for: .solarPanels), feature: .solarPanels) let greenhouses = pickerDataSource.value(for: selectedRow(for: .greenhouses), feature: .greenhouses) let size = pickerDataSource.value(for: selectedRow(for: .size), feature: .size)

使用模型来进行预测:

guard let marsHabitatPricerOutput = try? model.prediction(solarPanels: solarPanels, greenhouses: greenhouses, size: size) else { fatalError("Unexpected runtime error.") }

通过读取 marsHabitatPricerOutput 的 price 属性,就可以获取所预测的价格,然后在应用的 UI 内就可以对该结果进行展示。

let price = marsHabitatPricerOutput.pricepriceLabel.text = priceFormatter.string(for: price)

注:此处所生成的 prediction(solarPanels:greenhouses:size:) 方法会返回错误提示,因为示例应用所预期的输入类型为 Double。

使用Core ML所遇到的常见错误,是传递给方法的输入数据类型与模型预期的输入类型不同匹配:比如用错误格式表示的图片类型。

构建并运行 Core ML 应用

Xcode 会将 Core ML 模型编译到资源中,以进行优化并在设备上运行。优化过的模型表征会包含在您的应用程序包内,当应用在设备上运行时,便可用以进行预测。

苹果表示,iPhone上经过优化的图像识别,速度能比Google Pixel快6倍。

Core ML可能会有什么样的影响

WWDC还没开完,Keynote引起大家关注后,大会日程中还要讲的Core ML有5项:

  • Introducing Core ML
  • Vision Framework: Building on Core ML
  • Core ML in depth
  • Core ML and Natural Language Processing Lab
  • Core ML & Natural Language Processing Lab

重点是偏向应用的视觉框架和自然语言处理,苹果的经验和支持肯定会让很多开发者跃跃欲试:只要找对场景,新的像Prisma这样的现象级AI应用就还会出现。

而随着iOS应用内机器学习使用门槛的降低,关注AI具体应用的各类工程师也越来越多;随着iOS开发者的涌入,机器学习领域将不再只是算法工程师的天下。

那么,移动开发的另一头,Google为Android端准备的TensorFlow Lite在今年正式发布时会如何发力,就更值得关注了。

毕竟,Google不做移动芯片,如何在硬件层面为手机上的AI应用做优化,就成了它绕不过去的问题:是跟高通的Neural Processing Engine合作?还是把自家的TPU小型化?

至于Caffe2,Facebook将如何在系统层面为AI应用做优化,则是一个非常有趣的问题。

诚如Gartner所言,当AI变成科技行业的主战场时,这里的事情就有意思多了。

参考内容:

https://developer.apple.com/documentation/coreml https://developer.apple.com/wwdc/schedule/ http://www.gartner.com/smarterwithgartner/gartners-top-10-technology-trends-2017/ https://backchannel.com/an-exclusive-look-at-how-ai-and-machine-learning-work-at-apple-8dbfb131932b#.cg37ae5f0 https://zhuanlan.zhihu.com/p/26746283 https://developer.apple.com/videos/play/wwdc2017/703/

原文发布于微信公众号 - AI科技大本营(rgznai100)

原文发表时间:2017-06-08

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI2ML人工智能to机器学习

机器学习平台的优化器 (优化篇)

在 " 机器学习平台的优化器 (平台篇)"里面, 我们简介了平台们,和什么是优化器。 这里我们开始介绍不同平台的优化。 我们把相同编程语言的优化器放在一起,...

24720
来自专栏ATYUN订阅号

IBM提出深度学习模型水印方法,可防止侵权

如果机器学习模型可以在照片,电影,音乐和手稿添加水印以表明所有权,防止知识产权窃取,并防止攻击者损害其完整性,该会如何呢?IBM正在申请新的专利,他们可以做到这...

28020
来自专栏PPV课数据科学社区

不可不知 | 有关文本挖掘的14个概念

版权声明 作者:杜尔森·德伦(Dursun Delen) 来源:《大数据掘金 挖掘商业世界中的数据价值》,中国人民大学出版社出版 本文由数据之王(ID:shuj...

37080
来自专栏marsggbo

[转载] 机器学习数据集统计系列一

作者:宋天龙 链接:https://www.zhihu.com/question/63383992/answer/222718972 来源:知乎

18220
来自专栏AI科技评论

前沿 | IBM发明世界首个人造神经元,离人脑模拟更近一步

受人类大脑运行方式的启发,IBM苏黎世研究中心制成了世界上第一个人造纳米级的随机相变神经元。并在其基础上构建了由500个该神经元组成的阵列,让该阵列模拟人类大脑...

30980
来自专栏深度学习自然语言处理

谈谈我在自然语言处理进阶上的一些个人拙见

自然语言处理这个方向我感觉已经泛滥了,很多方向的人都开始转向该专业,当然也包括转向计算机视觉的。之前我写过一篇文章

14230
来自专栏企鹅号快讯

2017年度30大最惊艳的开源机器学习项目

在过去的一年里,Mybridge AI 比较了近 8,800个开源机器学习项目,选择了前30名(概率只有0.3%)。 这是一个竞争激烈的名单,精挑细选了2017...

30480
来自专栏人工智能LeadAI

我与Python | 从Hacker到探索Deep Learning

为什么是Python 人生苦短,我用Python... ? 'Life is short, you need Python!' 进入大学之后,我们逐渐“被教授”...

55970
来自专栏媒矿工厂

【视频编码】 Content Aware ABR技术(三)

本系列的前面贴子中,我们梳理了Netflix和YouTube在ABR方面的一些进展,本文将简要介绍一下编码优化领域的一位新贵—Beamr的技术动态。 ? Bea...

44850
来自专栏AI研习社

用验证机制加强神经网络的能力:研究者提出机器学习防御措施 | 2分钟读论文

来源 / Two Minute Papers 翻译 / 洪振亚 校对 / 囧囧 整理 / 雷锋字幕组 本期论文 Reluplex: An Efficient S...

38450

扫码关注云+社区

领取腾讯云代金券