iOS 11: CORE ML—浅析

本文介绍了苹果在iOS 11中发布的Core ML框架,它是机器学习的基石,简化了开发者在App中集成智能功能的过程。Core ML支持多种机器学习模型,包括神经网络,并与Vision框架结合,实现图像识别等功能。文章还探讨了Core ML的相关技术,如Metal和神经网络,并分享了利用Core ML进行图像识别的实践案例。此外,文中提出了一些关于模型更新、线程安全等问题的思考。
摘要由CSDN通过智能技术生成

本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/OWD5UEiVu5JpYArcd2H9ig

作者:liujizhou

导语:在刚刚过去的WWDC上,苹果发布了Core ML这个机器学习框架。现在,开发者可以轻松的使用Core ML把机器学习功能集成到自己的应用里,让应用变得更加智能,给用户更牛逼的体验。

苹果在 iOS 5 里引入了 NSLinguisticTagger 来分析自然语言。iOS 8 出了 Metal,提供了对设备 GPU 的底层访问。去年,苹果在 Accelerate 框架添加了 Basic Neural Network Subroutines (BNNS),使开发者可以构建用于推理(不是训练)的神经网络。

今年,苹果给了我们 Core ML 和 Vision,让iOS开发者在人工智能上面更上一步台阶。

  • Core ML 让我们更容易在 App 中使用训练过的模型。
  • Vision 让我们轻松访问苹果的模型,用于面部检测、面部特征点、文字、矩形、条形码和物体。

你还可以在 Vision 模型中包装任意的图像分析 Core ML 模型。由于这两个框架是基于 Metal 构建的,它们能在设备上高效运行,所以不需要把用户的数据发送到服务器。

一、CORE ML是什么?

相信很多人都听说过机器学习,除了专业人士,应该很少有人去研究机器学习里面的具体实现,CORE ML的出现,大大降低了iOS开发人员进入这一领域的门槛,能以最低成本开发出更加智能的产品。

机器学习的一个重要环节就是利用海量的数据去训练特定的模型,然后在遇到新数据的时候能够准确预测出结果。比如,事先通过大量的物体特征训练一个模型,当把一个新物体输入该模型,模型能够准确预测出物体所属的物种和类别;学习大量围棋对局后,面对一个陌生的棋局,知道在哪下棋赢的概率更高。

在对机器进行训练的时候,训练完成后,会生成一个关于这个特定问题的数据模型,对模型输入关于这个特定问题的新数据,模型会返回一个预测结果。Core ML实际做的事情是使用事先训练好的模型(trained model),在Native利用MLNeuralNetworkEngine等相关模块进行预测,最终返回结果,这种在本地进行预测的方式可以不依赖网络,也可以降低处理时间。

应用和Core ML的交互流程大体如图所示:

从图上可以看出,真正智能的部分其实是这个事先训练好的模型(trained model),这个模型决定了最终判断的结果。苹果提供了一些转化好的Core ML格式的模型,也可以通过苹果提供的工具把自己在别的常用机器学习工具生成的模型转化为Core ML格式的模型,这个工具当前页只是支持一些常用的格式模型的转换,如果需要转换比较特定的格式模型,需要参考这个工具的代码,把你特定的模型数据转换为苹果规定的模型数据。

苹果的 Core ML 框架现在已经支持前馈神经网、卷积神经网、递归神经网、诸如随机森林和提升树的决策树集成、支持向量机、线性回归和 logistic 回归、特征工程和流水线模型。

二、CORE ML涉及到的相关技术

Core ML是机器学习的一个基础框架,Vision、GameplayKit都有利用Core ML做相应的处理。为了提升计算性能,苹果充分利用了硬件的特性,最大限度优化了Core ML的性能,减少内存占用和功耗。

1、Metal

Metal 是针对 iPhone 和 iPad 中 GPU 编程的高度优化的框架,Metal 与 OpenGL ES 相比最大的好处是显著降低了消耗。 OpenGL 在创建缓冲区和纹理的过程中都会复制一份以避免 GPU 在使用数据的时候发生异常,而这些复制操作是非常耗时的。 为了提升效率和性能Metal在安全和效率方面选择了后者,Metal 并不复制资源,使用Metal编程需要开发者自己来保证数据安全,开发者需要负责在 CPU 和 GPU 之间同步访问。使用 Metal 时仍然有些这方面的问题需要注意。

Metal 的另外一个好处是其预估 GPU 状态来避免多余的验证和编译。在 OpenGL 中,你需要依次设置 GPU 的状态,在每个绘制指令 (draw call) 之前需要验证新的状态。最坏的情况是 OpenGL 需要再次重新编译着色器 (shader) 以反映新的状态。 Metal 选择了另一种方法,在渲染引擎初始化过程中,一组状态被烘焙 (bake) 至预估渲染的路径 (pass) 中。多个不同资源可以共同使用该渲染路径对象,但其它的状态是恒定的。Metal 中一个渲染路径无需更进一步的验证,使 API 的消耗降到最低,从而大大增加每帧的绘制指令的数量。

2、神经网络

深度学习(Deep Learning,简称DL)当前是相当火热,任何一个方向和应用,都希望能够运用到深度学习,戴上智能的皇冠,不只是互联网、人工智能,生活中的各大领域都能反映出深度学习引领的巨大变革。要学习深度学习,首先需要先弄清楚人工神经网络(Artificial Neural Networks,简称ANN),人工神经网络的设计灵感完全来源于生物学上的神经元的信息传递机制,神经网络已经发展成为一类多学科交叉的学科领域,它也随着深度学习取得的进展受到重视和推崇。

卷积神经网络(Convolutional Neural Networks,简称 CNNs 或者 ConvNets)是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。优点在网络的输入是多维图像时表现的更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。CNNs是深层神经网络领域的主力。它们已经学会对图像进行分类,对图像的识别准确率已经超过了人类。

3、Metal Performance Shaders

Metal Performance Shader是apple推出的一套通过Metal来在iOS上实现深度学习的工具,它主要封装了MPSImage来存储数据管理内存,实现了Convolution、Pooling、Fullconnetcion、ReLU等常用的卷积神经网络中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值